class IDL::AST::Connector
def add_interfaces(intfs)
def add_interfaces(intfs) raise RuntimeError, "interface support not allowed for #{typename} #{scoped_lm_name}" if intfs && !intfs.empty? end
def attributes(include_bases=false,traversed=nil)
def attributes(include_bases=false,traversed=nil) atts = @children.inject([]) do |lst, c| if IDL::AST::Port === c lst.concat(c.attributes) else lst << c end lst end atts.concat(base_attributes(traversed || [])) if include_bases atts end
def base_ports(traversed)
def base_ports(traversed) traversed.push self ports = [] if (base = @resolved_base) base = base.idltype.resolved_type.node if base.is_a?(IDL::AST::Typedef) ports = base.ports(true, traversed) unless traversed.include?(base) end ports end
def initialize(_name, _enclosure, params)
def initialize(_name, _enclosure, params) @idltype = IDL::Type::Component.new(self) super(_name, _enclosure, params) end
def instantiate(_context, _enclosure)
def instantiate(_context, _enclosure) # instantiate concrete connector def and validate super(_context, _enclosure, {}) end
def is_defined?; true; end
def is_defined?; true; end
def is_forward?; false; end
def is_forward?; false; end
def marshal_dump
def marshal_dump super() end
def marshal_load(vars)
def marshal_load(vars) super(vars) end
def ports(include_bases=false,traversed=nil)
def ports(include_bases=false,traversed=nil) ports = @children.inject([]) do |lst, c| lst.concat(c.ports) if IDL::AST::Port === c lst end ports.concat(base_ports(traversed || [])) if include_bases ports end
def set_base(parent)
def set_base(parent) unless parent.is_a?(IDL::Type::ScopedName) && parent.is_node?(IDL::AST::TemplateParam) if not (parent.is_a?(IDL::Type::ScopedName) && parent.is_node?(self.class)) raise RuntimeError, "invalid inheritance identifier for #{typename} #{scoped_lm_name}: #{parent.typename}" end @resolved_base = parent.resolved_type.node if @resolved_base.has_base?(self) raise RuntimeError, "circular inheritance detected for #{typename} #{scoped_lm_name}: #{parent.node.scoped_lm_name} is descendant" end end @base = parent.node end