Class RuCodeGen::ClassAttribute
In: lib/rucodegen/value_incapsulator.rb
Parent: Object

Класс, который описывает один атрибут класса (например, для шаблона ValueIncapsulator).

Methods

Constants

PRIMITIVE_TYPES = Set.new [ "bool", "char", "signed char", "unsigned char", "wchar_t", "short", "short int", "unsigned short", "unsigned short int", "int", "unsigned int", "unsigned", "long", "long int", "unsigned long", "unsigned long int", "long long", "float", "double" ];   Список типов, которые будут считаться примитивными.

Attributes

default  [W]  Начальное значение атрибута. Может быть nil, если начальное значение не задано.
name  [R]  Имя атрибута.
type  [R]  Имя типа атрибута.

Public Class methods

Проверка того, является ли тип атрибута примитивным типом. Примитивный тип возвращается getter-ом и передается setter-у по значению. Для примитивного типа инициализитором по умолчанию является 0.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 84
        def ClassAttribute.is_primitive_type( a_type )
                return PRIMITIVE_TYPES.include?( a_type )
        end

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 31
        def initialize( a_name, a_type )
                @name = a_name
                @type = a_type
                @default = nil
                @getter_returns_value = false
        end

Public Instance methods

Получить значение по умолчанию для атрибута.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 74
        def default
                return @default if nil != @default
                return 0 if ClassAttribute.is_primitive_type( type )

                fail "Attribute #{name} has no default value"
        end

Получение имени типа, которое нужно использовать в качестве возвращаемого значения getter-а и в качестве типа аргумента setter-а.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 51
        def getter_return_type
                # Если getter возвращает значение, а не ссылку, то все просто.
                return type if @getter_returns_value

                # В противном случае придется определять, является ли тип
                # элементарным типом.
                return type if ClassAttribute::is_primitive_type( type )

                # Нужно возвращать константную ссылку.
                return "const #{type} &"
        end

Установить признак того, что getter должен возвращать значение атрибута, а не ссылку на него.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 40
        def getter_returns_value
                @getter_returns_value = true
        end

Определить, есть ли для атрибута инициализатор по-умолчанию. Инициализатор по умолчанию есть, если:

  • задано значение для атрибута default;
  • значение атрибута default не задано, но тип принадлежит к числу примитивных типов.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 68
        def has_default?
                return true if nil != @default
                return ClassAttribute.is_primitive_type( type )
        end

[Validate]

Hosted by uCoz