class LogTools::TypeConverter
Constants
- SubConverter
Attributes
name[R]
new_registry[R]
time_to[R]
Public Class Methods
new(name,time_to,new_registry=Orocos.registry,&block)
click to toggle source
#time_to is the time after which the conversion is no longer needed
# File lib/log_tools/converter.rb, line 45 def initialize(name,time_to,new_registry=Orocos.registry,&block) return time_to if time_to.is_a? TypeConverter #check parameter raise 'Parameter time_to must be of type Time' unless time_to.is_a? Time raise 'Parameter new_registry must be of type Typelib::Registry' unless new_registry.is_a? Typelib::Registry @name_hash = Hash.new @name = name @time_to = time_to @new_registry = new_registry instance_eval(&block) end
Public Instance Methods
conversion(old_type_name,new_type_name=nil,&block)
click to toggle source
# File lib/log_tools/converter.rb, line 98 def conversion(old_type_name,new_type_name=nil,&block) new_type_name = if new_type_name new_type_name else old_type_name end if !new_registry.include?(new_type_name) && new_registry == Orocos.registry Converter.info "load typekit for #{new_type_name}" Orocos.load_typekit_for new_type_name end old_type_name = normalize_name(old_type_name) new_type_name = normalize_name(new_type_name) raise 'Parameter old_type_name must be of type String' unless old_type_name.is_a? String raise 'Parameter new_type_name must be of type String' unless new_type_name.is_a? String @name_hash[old_type_name] = SubConverter.new(old_type_name,new_type_name,block) end
convert(dest,src,src_type_name,caller_obj)
click to toggle source
# File lib/log_tools/converter.rb, line 91 def convert(dest,src,src_type_name,caller_obj) src_type_name = src.class.name unless src_type_name c = @name_hash[src_type_name] raise "Cannot convert #{src_type_name}!!!" unless c caller_obj.instance_exec(dest,src,&c.block) end
convert?(type_name)
click to toggle source
# File lib/log_tools/converter.rb, line 86 def convert? type_name type_name = type_name.class.name unless type_name.is_a? String return @name_hash.has_key? type_name end
convert_field_from?(sample)
click to toggle source
# File lib/log_tools/converter.rb, line 75 def convert_field_from?(sample) @name_hash.each_key do |key| begin sample2 = sample.class.registry.get(key) return true if sample.class.contains?(sample2) rescue Typelib::NotFound => e end end false end
new_name_for(type_name)
click to toggle source
# File lib/log_tools/converter.rb, line 60 def new_name_for type_name type_name = type_name.class.name unless type_name.is_a? String c = @name_hash[type_name] c.new_type_name if c end
new_sample_for(type_name)
click to toggle source
# File lib/log_tools/converter.rb, line 66 def new_sample_for type_name name = new_name_for type_name @new_registry.get(name).new end
normalize_name(name)
click to toggle source
# File lib/log_tools/converter.rb, line 117 def normalize_name(name) if(Orocos.default_loader.resolve_type(name) && name_m = Orocos.default_loader.intermediate_type_for(name)) Converter.info "#{name} is an intermedia type called #{name_m}" name_m.name else name end rescue Typelib::NotFound name end
old_type_names()
click to toggle source
# File lib/log_tools/converter.rb, line 71 def old_type_names @name_hash.keys end