Module RuCodeGen::ValueIncapsulator::Generation
In: lib/rucodegen/value_incapsulator.rb

Methods

Classes and Modules

Class RuCodeGen::ValueIncapsulator::Generation::DeclGenerator
Class RuCodeGen::ValueIncapsulator::Generation::ImplGenerator

Public Class methods

Сгенерировать декларации всех атрибутов.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 183
        def Generation.attr_decl( a_vi )
                a_vi.get_attributes.inject( "" ) do |decl, a|
                        decl += "\t\t#{a.type} #{attribute_name(a_vi,a)};\n"
                end
        end

Сгенерировать список инициализаторов всех атрибутов в конструкторе.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 210
        def Generation.attr_initializers( a_vi )
                return "" if a_vi.get_attributes.empty?

                r = a_vi.get_attributes.inject( [ "", "\t:\t" ] ) do |v, a|
                        initializer = a.has_default? ? a.default : nil 
                        initializer_representation = initializer ?
                                        make_initializer_representation( initializer ) : ""

                        v[ 0 ] += v[ 1 ] + "#{attribute_name(a_vi, a)}" +
                                "(#{initializer_representation})\n"
                        v[ 1 ] = "\t,\t"
                        v
                end

                r[ 0 ]
        end

Получить имя атрибута класса как имя атрибута (с учетом префиксов и суффиксов).

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 168
        def Generation.attribute_name( a_vi, a_attr )
                "#{a_vi.get_attr_prefix}#{a_attr.name}#{a_vi.get_attr_suffix}"
        end

Сгенерировать декларацию класса, описанного в ValueIncapsulator.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 241
        def Generation.generate_decl( a_vi )
                %Q{
class #{a_vi.class_name}
        {
        private :
#{attr_decl(a_vi)}
        public :
                #{a_vi.class_name}();

#{getter_setter_decl(a_vi)}
        };
                }
        end

Сгенерировать реализацию класса, описанного в ValueIncapsulator.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 256
        def Generation.generate_impl( a_vi )
                %Q{
#{a_vi.class_name}::#{a_vi.class_name}()
#{attr_initializers(a_vi)}
        {}

#{getter_setter_impl(a_vi)}
                }
        end

Получить имя getter-а для атрибута с учетом префикса.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 173
        def Generation.getter_name( a_vi, a_attr )
                "#{a_vi.get_getter_prefix}#{a_attr.name}"
        end

Сгенерировать декларации всех getter-ов/setter-ов.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 190
        def Generation.getter_setter_decl( a_vi )
                a_vi.get_attributes.inject( "" ) do |decl, a|
                        decl += "\t\t#{a.getter_return_type}\n" +
                                        "\t\t#{getter_name(a_vi, a)}() const;\n" +
                                        "\t\tvoid\n" +
                                        "\t\t#{setter_name(a_vi, a)}( #{a.getter_return_type} v__ );\n"
                end
        end

Сгенерировать реализации методов getter-ов/setter-ов.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 228
        def Generation.getter_setter_impl( a_vi )
                a_vi.get_attributes.inject( "" ) do |v, a|
                        v += "#{a.getter_return_type}\n" +
                                        "#{a_vi.class_name}::#{getter_name(a_vi, a)}() const\n" +
                                        "\t{ return #{attribute_name(a_vi, a)}; }\n" +
                                        "void\n" +
                                        "#{a_vi.class_name}::#{setter_name(a_vi, a)}" +
                                                        "( #{a.getter_return_type} v__ )\n" +
                                        "\t{ #{attribute_name(a_vi, a)} = v__; }\n"
                end
        end

Создать строковое представление инициализатора атрибута.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 200
        def Generation.make_initializer_representation( a_initializer )
                if a_initializer.kind_of?( Integer ) or
                                a_initializer.kind_of?( Symbol )
                        return "#{a_initializer}"
                elsif a_initializer.kind_of? String
                        return "\"#{a_initializer}\""
                end
        end

Получить имя setter-а для атрибута с учетом префикса.

[Source]

# File lib/rucodegen/value_incapsulator.rb, line 178
        def Generation.setter_name( a_vi, a_attr )
                "#{a_vi.get_setter_prefix}#{a_attr.name}"
        end

[Validate]

Hosted by uCoz