def _create_inherited_flag_field(property_): """ Create the field used for an inheritance fast path from an independent CSS property, and return the Field object. """ name_for_methods = NameStyleConverter( property_['name_for_methods']).to_function_name( suffix=['is', 'inherited']) name_source = NameStyleConverter(name_for_methods) return Field( 'inherited_flag', name_for_methods, property_name=property_['name'].original, type_name='bool', wrapper_pointer_name=None, field_template='primitive', size=1, default_value='true', custom_copy=False, custom_compare=False, mutable=False, getter_method_name=name_source.to_function_name(), setter_method_name=name_source.to_function_name(prefix='set'), initial_method_name=name_source.to_function_name(prefix='initial'), computed_style_custom_functions=property_[ "computed_style_custom_functions"], )
def __init__(self, field_role, name_for_methods, property_name, type_name, wrapper_pointer_name, field_template, size, default_value, custom_copy, custom_compare, mutable, getter_method_name, setter_method_name, initial_method_name, computed_style_custom_functions, **kwargs): name_source = NameStyleConverter(name_for_methods) self.name = name_source.to_class_data_member() self.property_name = property_name self.type_name = type_name self.wrapper_pointer_name = wrapper_pointer_name self.alignment_type = self.wrapper_pointer_name or self.type_name self.field_template = field_template self.size = size self.default_value = default_value self.custom_copy = custom_copy self.custom_compare = custom_compare self.mutable = mutable self.group = None # Method names self.getter_method_name = getter_method_name self.setter_method_name = setter_method_name self.internal_getter_method_name = name_source.to_function_name( suffix='internal') self.internal_mutable_method_name = name_source.to_function_name( prefix='mutable', suffix='internal') self.internal_setter_method_name = NameStyleConverter( setter_method_name).to_function_name(suffix='internal') self.initial_method_name = initial_method_name self.resetter_method_name = name_source.to_function_name( prefix='reset') self.computed_style_custom_functions = computed_style_custom_functions # Only bitfields have sizes. self.is_bit_field = self.size is not None # Field role: one of these must be true self.is_property = field_role == 'property' self.is_inherited_flag = field_role == 'inherited_flag' assert (self.is_property, self.is_inherited_flag).count(True) == 1, \ 'Field role has to be exactly one of: property, inherited_flag' if not self.is_inherited_flag: self.is_inherited = kwargs.pop('inherited') self.is_independent = kwargs.pop('independent') self.is_semi_independent_variable = kwargs.pop( 'semi_independent_variable') assert self.is_inherited or not self.is_independent, \ 'Only inherited fields can be independent' self.is_inherited_method_name = name_source.to_function_name( suffix=['is', 'inherited']) assert len(kwargs) == 0, \ 'Unexpected arguments provided to Field: ' + str(kwargs)