class Syskit::Models::Composition::DynamicServiceInstantiationContext
@api private
Context object under which the dynamic data service blocks are evaluated
The composition's version adds the ability to access the children and require dynamic services on them
Public Class Methods
new(component_model, name, dynamic_service, **options)
click to toggle source
Calls superclass method
# File lib/syskit/models/composition.rb, line 570 def initialize(component_model, name, dynamic_service, **options) @specialized = Set.new super end
Public Instance Methods
add(*args, **options, &block)
click to toggle source
# File lib/syskit/models/composition.rb, line 588 def add(*args, **options, &block) child = component_model.add(*args, **options, &block) Child.new(self, child) end
export(port, **options)
click to toggle source
# File lib/syskit/models/composition.rb, line 584 def export(port, **options) component_model.export(port, **options) end
method_missing(m, *args, &block)
click to toggle source
Calls superclass method
# File lib/syskit/models/composition.rb, line 605 def method_missing(m, *args, &block) if m =~ /_child$/ Child.new(self, component_model.public_send(m, *args, &block)) else super end end
overload(*args, **options, &block)
click to toggle source
# File lib/syskit/models/composition.rb, line 593 def overload(*args, **options, &block) child = component_model.overload(*args, **options, &block) Child.new(self, child) end
respond_to_missing?(m, include_private)
click to toggle source
Calls superclass method
# File lib/syskit/models/composition.rb, line 598 def respond_to_missing?(m, include_private) if m =~ /_child$/ component_model.respond_to?(m) else super end end
specialized_child(child)
click to toggle source
# File lib/syskit/models/composition.rb, line 575 def specialized_child(child) child_name = child.child_name if !@specialized.include?(child_name) @specialized << child_name component_model.overload child_name, child.specialize end component_model.find_child(child_name) end