class Typelib::CompoundType
Public Class Methods
code_copy(typekit, result, indent, dest, src, method, error_handling) { |field_name, field_type| ... }
click to toggle source
# File lib/orogen/gen/typekit.rb, line 224 def self.code_copy(typekit, result, indent, dest, src, method, error_handling) each_field do |field_name, field_type| if string = yield(field_name, field_type) if !string.respond_to?(:to_str) result << "#{indent}#{dest}.#{field_name} = #{src}.#{field_name};\n" else result << string end else s_src = "#{src}.#{field_name}" s_dest = "#{dest}.#{field_name}" if field_type < ArrayType if src == "value" s_src = "reinterpret_cast< #{field_type.deference.cxx_name} const*>(#{s_src}), #{field_type.length}" else s_dest = "reinterpret_cast< #{field_type.deference.cxx_name}*>(#{s_dest}), #{field_type.length}" end end if error_handling result << "#{indent}if (!#{method}(#{s_dest}, #{s_src})) return false;\n"; else result << "#{indent}#{method}(#{s_dest}, #{s_src});\n" end end end result end
from_intermediate(typekit, result, indent)
click to toggle source
# File lib/orogen/gen/typekit.rb, line 260 def self.from_intermediate(typekit, result, indent) code_copy(typekit, result, indent, "value", "intermediate", "fromIntermediate", false) do |field_name, field_type| if !field_type.contains_opaques? field_type.code_assign([], indent + " ", "value.#{field_name}", "intermediate.#{field_name}").join end end end
to_intermediate(typekit, result, indent)
click to toggle source
# File lib/orogen/gen/typekit.rb, line 253 def self.to_intermediate(typekit, result, indent) code_copy(typekit, result, indent, "intermediate", "value", "toIntermediate", false) do |field_name, field_type| if !field_type.contains_opaques? field_type.code_assign([], indent + " ", "intermediate.#{field_name}", "value.#{field_name}").join end end end
to_m_type(target_basename, typekit)
click to toggle source
# File lib/orogen/gen/typekit.rb, line 205 def self.to_m_type(target_basename, typekit) result = <<-EOCODE struct #{target_basename} { EOCODE each_field do |field_name, field_type| field_cxxname = if field_type.contains_opaques? typekit.intermediate_cxxname_for(field_type.name) elsif field_type <= ArrayType [field_type.deference.cxx_name, "[#{field_type.length}]"] else [field_type.cxx_name] end result << " #{field_cxxname[0]} #{field_name} #{field_cxxname[1]};\n" end result << "};" end
to_stream(typekit, result, indent)
click to toggle source
# File lib/orogen/marshallers/iostream.rb, line 50 def self.to_stream(typekit, result, indent) result << indent << "io << \"{ \";\n" first_field = true each_field do |field_name, field_type| unless first_field result << "#{indent} io << \", \";\n"; end first_field = false result << "#{indent} io << basename << \".#{field_name} = \";\n"; if field_type.inlines_code? result << "#{indent} io << value.#{field_name};\n" elsif field_type < ArrayType result << "#{indent} toStream(basename + \".#{field_name}\", reinterpret_cast<#{field_type.deference.cxx_name} const*>(value.#{field_name}), #{field_type.length}, io);\n" else result << "#{indent} toStream(basename + \".#{field_name}\", value.#{field_name}, io);\n" end end result << indent << "io << \" }\";\n" end