class Typelib::ArrayType

Public Class Methods

arg_type() click to toggle source
# File lib/orogen/gen/typekit.rb, line 270
def self.arg_type; "#{deference.cxx_name} const*" end
code_assign(result, indent, dest, src) click to toggle source
# File lib/orogen/gen/typekit.rb, line 278
        def self.code_assign(result, indent, dest, src)
            element_type = deference
            allocate_index do |i|
                result << <<-EOT
#{indent}for(int #{i} = 0; #{i} < #{length}; ++#{i})
#{indent}{
                EOT
                deference.code_assign(result, "#{indent}  ", "#{dest}[#{i}]", "#{src}[#{i}]")
                result << "#{indent}}"
            end
        end
code_copy(typekit, result, indent, dest, src, method) { |element_type, indent, "#{dest}[#{i}]", "#{src}[#{i}]"| ... } click to toggle source
# File lib/orogen/gen/typekit.rb, line 290
        def self.code_copy(typekit, result, indent, dest, src, method)
            element_type = registry.build(deference.name)

            allocate_index do |i|
                result << <<-EOT
#{indent}for(int #{i} = 0; #{i} < length; ++#{i})
#{indent}{
                EOT

                if string = yield(element_type, indent, "#{dest}[#{i}]", "#{src}[#{i}]")
                    if !string.respond_to?(:to_str)
                        result << "#{indent}  #{dest}[#{i}] = #{src}[#{i}];\n"
                    else
                        result << string
                    end
                else
                    s_src  = "#{src}[#{i}]"
                    s_dest = "#{dest}[#{i}]"
                    if element_type < ArrayType
                        if src == "value"
                            s_src = "reinterpret_cast< #{element_type.deference.cxx_name} const*>(#{s_src}), #{element_type.length}"
                        else
                            s_dest = "reinterpret_cast< #{element_type.deference.cxx_name}*>(#{s_dest}), #{element_type.length}"
                        end
                    end

                    result << "#{indent}    #{method}(#{s_dest}, #{s_src});\n";
                end

                result << "#{indent}}\n";
            end
            result
        end
from_intermediate(typekit, result, indent) click to toggle source
# File lib/orogen/gen/typekit.rb, line 332
def self.from_intermediate(typekit, result, indent)
    code_copy(typekit, result, indent, "value", "intermediate", "fromIntermediate") do |type, indent, dest, src|
        if !type.contains_opaques?
            type.code_assign([], indent, dest, src).join
        end
    end
end
ref_type() click to toggle source
# File lib/orogen/gen/typekit.rb, line 271
def self.ref_type; "#{deference.cxx_name}*" end
to_intermediate(typekit, result, indent) click to toggle source
# File lib/orogen/gen/typekit.rb, line 324
def self.to_intermediate(typekit, result, indent)
    code_copy(typekit, result, indent, "intermediate", "value", "toIntermediate") do |type, indent, dest, src|
        if !type.contains_opaques?
            type.code_assign([], indent, dest, src).join
        end
    end
end
to_m_type(target_basename, typekit) click to toggle source
# File lib/orogen/gen/typekit.rb, line 273
def self.to_m_type(target_basename, typekit)
    deference_name = typekit.intermediate_cxxname_for(deference)
    "typedef #{deference_name[0]} orogen_typekits_mtype_#{target_basename}#{deference_name[1]};"
end
to_stream(typekit, result, indent) click to toggle source
# File lib/orogen/marshallers/iostream.rb, line 73
        def self.to_stream(typekit, result, indent)
            element_type = registry.build(deference.name)

            result << indent << "io << \"[ \";\n"

            first_field = true
            allocate_index do |i|
                result << <<-EOT
#{indent}bool first_field = true;
#{indent}for(int #{i} = 0; #{i} < length; ++#{i})
#{indent}{
#{indent}    if (!first_field)
#{indent}         io << ", ";
#{indent}    first_field = false;
                EOT

                if element_type.inlines_code?
                    result << "#{indent}    io << value[#{i}];\n"
                elsif element_type < ArrayType
                    result << "#{indent}    toStream(\"\", reinterpret_cast<#{element_type.deference.cxx_name} const*>(value[#{i}]), #{element_type.length}, io);\n"
                else
                    result << "#{indent}    toStream(\"\", value[#{i}], io);\n"
                end
                result << "#{indent}}\n"
            end
            result << indent << "io << \" ]\";\n"
        end