class OroGen::Gen::RTT_CPP::ImportedTypekit
Instances of this class represent a typekit that has been imported using {Project#using_typekit}
Attributes
interface_typelist[R]
main_project[R]
name[R]
opaque_registry[R]
opaques[R]
pkg[R]
registry[R]
typelist[R]
Public Class Methods
from_raw_data(main, name, pkg, registry_xml, typelist_txt)
click to toggle source
# File lib/orogen/gen/imports.rb, line 40 def self.from_raw_data(main, name, pkg, registry_xml, typelist_txt) typekit_registry = Typelib::Registry.new typekit_registry.merge_xml(registry_xml) typekit_typelist, typekit_interface_typelist = parse_typelist(typelist_txt) typekit = self.new(main, name, pkg, typekit_registry, typekit_typelist, typekit_interface_typelist) # Now initialize the opaque definitions doc = REXML::Document.new(registry_xml) doc.each_element('//opaque') do |opaque_entry| base_type_name = opaque_entry.attributes['name'] inter_type_name = opaque_entry.attributes['marshal_as'] includes = opaque_entry.attributes['includes'] needs_copy = opaque_entry.attributes['needs_copy'] spec = OpaqueDefinition.new( typekit_registry.get(base_type_name), inter_type_name, { :include => includes.split(':'), :needs_copy => (needs_copy == '1') }, nil) typekit.opaque_registry.merge(typekit_registry.minimal(base_type_name)) typekit.opaques << spec end typekit end
new(main_project, name, pkg, registry, typelist, interface_typelist)
click to toggle source
# File lib/orogen/gen/imports.rb, line 81 def initialize(main_project, name, pkg, registry, typelist, interface_typelist) @main_project, @name, @pkg, @registry = main_project, name, pkg, registry @typelist = typelist.to_set @interface_typelist = interface_typelist.to_set @opaques = Array.new @opaque_registry = Typelib::Registry.new end
parse_typelist(typelist_txt)
click to toggle source
# File lib/orogen/gen/imports.rb, line 17 def self.parse_typelist(typelist_txt) raw_typelist = typelist_txt.split("\n").map(&:strip) typekit_typelist, typekit_interface_typelist = [], [] raw_typelist.each do |decl| # using non greedy kleene star to match first expression: .*? # to handle following patterns: # /string # /unsigned char[8] # /unsigned char[8] 0 if decl =~ /^(.*) (\d)$/ type, is_interface = $1, ($2 == '1') else type, is_interface = decl, true end typekit_typelist << type if is_interface typekit_interface_typelist << type end end return typekit_typelist, typekit_interface_typelist end
Public Instance Methods
defines_array_of?(type)
click to toggle source
# File lib/orogen/gen/imports.rb, line 134 def defines_array_of?(type) typename = if type.respond_to?(:name) then type.name else type.to_str end typelist.any? { |str| str =~ /#{Regexp.quote(typename)}(\[\d+\])+/ } end
export_types(*args)
click to toggle source
# File lib/orogen/gen/imports.rb, line 70 def export_types(*args); end
find_type(type)
click to toggle source
# File lib/orogen/gen/imports.rb, line 145 def find_type(type) if type.respond_to?(:name) registry.get(type.name) else registry.get(type) end end
has_opaques?()
click to toggle source
# File lib/orogen/gen/imports.rb, line 72 def has_opaques? registry.any? { |t| includes?(t) && t.contains_opaques? } end
include_dirs()
click to toggle source
# File lib/orogen/gen/imports.rb, line 109 def include_dirs pkg.include_dirs.to_set end
includes?(type)
click to toggle source
# File lib/orogen/gen/imports.rb, line 153 def includes?(type) typename = if type.respond_to?(:name) then type.name else type.to_str end typelist.include?(typename) end
interface_type?(typename)
click to toggle source
# File lib/orogen/gen/imports.rb, line 76 def interface_type?(typename) typename = typename.name if typename.respond_to?(:name) interface_typelist.include?(typename) end
intermediate_type?(*args)
click to toggle source
# File lib/orogen/gen/imports.rb, line 126 def intermediate_type?(*args) main_project.intermediate_type?(*args) end
intermediate_type_for(*args)
click to toggle source
# File lib/orogen/gen/imports.rb, line 122 def intermediate_type_for(*args) main_project.intermediate_type_for(*args) end
m_type?(*args)
click to toggle source
# File lib/orogen/gen/imports.rb, line 130 def m_type?(*args) main_project.m_type?(*args) end
opaque_type(*args)
click to toggle source
Simply ignore, we load the whole typekit anyway
# File lib/orogen/gen/imports.rb, line 97 def opaque_type(*args); end
perform_pending_loads()
click to toggle source
# File lib/orogen/gen/imports.rb, line 102 def perform_pending_loads; end
pkg_corba_name()
click to toggle source
# File lib/orogen/gen/imports.rb, line 106 def pkg_corba_name pkg_transport_name('corba') end
pkg_name()
click to toggle source
# File lib/orogen/gen/imports.rb, line 99 def pkg_name pkg.name end
pkg_transport_name(transport_name)
click to toggle source
# File lib/orogen/gen/imports.rb, line 103 def pkg_transport_name(transport_name) Utilrb::PkgConfig.new(pkg.name.gsub('typekit', "transport-#{transport_name}")).name end
self_types()
click to toggle source
# File lib/orogen/gen/imports.rb, line 118 def self_types typelist.map { |name| registry.get(name) } end
types_dir()
click to toggle source
Returns the full path to the types/ subdir in the include directory
# File lib/orogen/gen/imports.rb, line 114 def types_dir File.join(pkg.includedir, name, 'types') end
using_library(*args)
click to toggle source
# File lib/orogen/gen/imports.rb, line 142 def using_library(*args); end
using_typekit(*args)
click to toggle source
# File lib/orogen/gen/imports.rb, line 143 def using_typekit(*args); end
virtual?()
click to toggle source
# File lib/orogen/gen/imports.rb, line 159 def virtual?; false end