Class: Orocos::DefaultLoader
- Inherits:
-
OroGen::Loaders::Aggregate
- Object
- OroGen::Loaders::Aggregate
- Orocos::DefaultLoader
- Defined in:
- lib/orocos/default_loader.rb
Instance Attribute Summary collapse
-
#type_export_namespace ⇒ Module
readonly
The namespace in which the types should be exported if #export_types? returns true.
Instance Method Summary collapse
- #clear ⇒ Object
- #export_types=(flag) ⇒ Object
-
#export_types? ⇒ Boolean
Whether the types that get registered on registry should be exported as Ruby constants.
-
#initialize ⇒ DefaultLoader
constructor
A new instance of DefaultLoader.
- #register_project_model(project) ⇒ Object
- #task_model_from_name(name) ⇒ Object
Constructor Details
#initialize ⇒ DefaultLoader
Returns a new instance of DefaultLoader
13 14 15 16 17 18 19 |
# File 'lib/orocos/default_loader.rb', line 13 def initialize @type_export_namespace = ::Types # We need recursive access lock @load_access_lock = Monitor.new super self.export_types = true end |
Instance Attribute Details
#type_export_namespace ⇒ Module (readonly)
The namespace in which the types should be exported if #export_types? returns true. It defaults to Types
11 12 13 |
# File 'lib/orocos/default_loader.rb', line 11 def type_export_namespace @type_export_namespace end |
Instance Method Details
#clear ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/orocos/default_loader.rb', line 39 def clear super OroGen::Loaders::RTT.setup_loader(self) if export_types? && registry type_export_namespace.reset_registry_export(registry) end end |
#export_types=(flag) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/orocos/default_loader.rb', line 21 def export_types=(flag) if !export_types? && flag registry.export_to_ruby(type_export_namespace) do |type, exported_type| if type.name =~ /orogen_typekits/ # just ignore those elsif type <= Typelib::NumericType # using numeric is transparent in Typelib/Ruby elsif type.contains_opaques? # register the intermediate instead intermediate_type_for(type) elsif m_type?(type) # just ignore, they are registered as the opaque else exported_type end end @export_types = true elsif export_types? && !flag type_export_namespace.disable_registry_export @export_types = false end end |
#export_types? ⇒ Boolean
Returns whether the types that get registered on Orocos.registry should be exported as Ruby constants
5 |
# File 'lib/orocos/default_loader.rb', line 5 attr_predicate :export_types? |
#register_project_model(project) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/orocos/default_loader.rb', line 48 def register_project_model(project) super project.self_tasks.each_value do |task| task.each_extension do |ext| Orocos.load_extension_runtime_library(ext.name) end end end |
#task_model_from_name(name) ⇒ Object
57 58 59 60 61 |
# File 'lib/orocos/default_loader.rb', line 57 def task_model_from_name(name) @load_access_lock.synchronize do super end end |