Class: IDL::AST::Port
Overview
Porttype
Constant Summary collapse
- NAMETYPE =
:member
- PORTTYPES =
[:facet, :receptacle, :emitter, :publisher, :consumer, :port, :mirrorport]
- PORT_MIRRORS =
{:facet => :receptacle, :receptacle => :facet}
- EXTPORTDEF_ANNOTATION =
'ExtendedPortDef'
Instance Attribute Summary collapse
-
#idltype ⇒ Object
readonly
Returns the value of attribute idltype.
-
#porttype ⇒ Object
readonly
Returns the value of attribute porttype.
Attributes inherited from Leaf
#annotations, #enclosure, #intern, #lm_name, #name, #prefix, #scopes
Instance Method Summary collapse
- #attributes ⇒ Object
- #expanded_copy(name_pfx, enc) ⇒ Object
- #expanded_mirror_copy(name_pfx, enc) ⇒ Object
-
#initialize(_name, _enclosure, params) ⇒ Port
constructor
A new instance of Port.
- #instantiate(_context, _enclosure) ⇒ Object
- #multiple? ⇒ Boolean
- #ports ⇒ Object
Methods inherited from Leaf
#_set_prefix, #has_annotations?, #is_local?, #is_template?, #lm_name_for_scope, #marshal_dump, #marshal_load, #parsed_name_scope, #replace_prefix, #repo_scopes, #repository_id, #resolve, #scoped_lm_name, #scoped_name, #set_repo_id, #set_repo_version, #typename
Constructor Details
#initialize(_name, _enclosure, params) ⇒ Port
Returns a new instance of Port.
1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 |
# File 'lib/ridl/node.rb', line 1554 def initialize(_name, _enclosure, params) super(_name, _enclosure) @idltype = params[:type] @porttype = params[:porttype] raise RuntimeError, "unknown porttype for #{typename} #{scoped_lm_name}: #{@porttype}" unless PORTTYPES.include?(@porttype) case @porttype when :facet, :receptacle unless @idltype.is_a?(IDL::Type::Object) || (@idltype.is_a?(IDL::Type::ScopedName) && (@idltype.is_node?(IDL::AST::Interface) || @idltype.is_node?(IDL::AST::TemplateParam))) raise RuntimeError, "invalid type for #{typename} #{scoped_lm_name}: #{@idltype.typename}" end when :port, :mirrorport unless @idltype.is_a?(IDL::Type::ScopedName) && (@idltype.is_node?(IDL::AST::Porttype) || @idltype.is_node?(IDL::AST::TemplateParam)) raise RuntimeError, "invalid type for #{typename} #{scoped_lm_name}: #{@idltype.typename}" end else unless @idltype.is_a?(IDL::Type::ScopedName) && (@idltype.is_node?(IDL::AST::Eventtype) || @idltype.is_node?(IDL::AST::TemplateParam)) raise RuntimeError, "invalid type for #{typename} #{scoped_lm_name}: #{@idltype.typename}" end end @multiple = params[:multiple] ? true : false end |
Instance Attribute Details
#idltype ⇒ Object (readonly)
Returns the value of attribute idltype.
1552 1553 1554 |
# File 'lib/ridl/node.rb', line 1552 def idltype @idltype end |
#porttype ⇒ Object (readonly)
Returns the value of attribute porttype.
1553 1554 1555 |
# File 'lib/ridl/node.rb', line 1553 def porttype @porttype end |
Instance Method Details
#attributes ⇒ Object
1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 |
# File 'lib/ridl/node.rb', line 1613 def attributes case @porttype when :port, :mirrorport @idltype.resolved_type.node.attributes.collect {|att| exp_a = att.(self.name, self.enclosure) exp_a.annotations << Annotation.new(EXTPORTDEF_ANNOTATION, { :extended_port_name => self.name, :base_name => att.name, :mirror => (@porttype == :mirrorport) }) exp_a # return expanded copy } else [] end end |
#expanded_copy(name_pfx, enc) ⇒ Object
1590 1591 1592 1593 1594 |
# File 'lib/ridl/node.rb', line 1590 def (name_pfx, enc) p = IDL::AST::Port.new("#{name_pfx}_#{self.name}", enc, {:type => @idltype, :porttype => @porttype}) p.annotations << Annotation.new(EXTPORTDEF_ANNOTATION, { :extended_port_name => name_pfx, :base_name => self.name, :mirror => false }) p # return expanded copy end |
#expanded_mirror_copy(name_pfx, enc) ⇒ Object
1596 1597 1598 1599 1600 |
# File 'lib/ridl/node.rb', line 1596 def (name_pfx, enc) p = IDL::AST::Port.new("#{name_pfx}_#{self.name}", enc, {:type => @idltype, :porttype => PORT_MIRRORS[@porttype]}) p.annotations << Annotation.new(EXTPORTDEF_ANNOTATION, { :extended_port_name => name_pfx, :base_name => self.name, :mirror => true }) p # return expanded copy end |
#instantiate(_context, _enclosure) ⇒ Object
1577 1578 1579 1580 1581 1582 1583 1584 |
# File 'lib/ridl/node.rb', line 1577 def instantiate(_context, _enclosure) _params = { :type => @idltype.instantiate(_context), :porttype => @porttype, :multiple => @multiple } super(_context, _enclosure, _params) end |
#multiple? ⇒ Boolean
1586 1587 1588 |
# File 'lib/ridl/node.rb', line 1586 def multiple? @multiple end |
#ports ⇒ Object
1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 |
# File 'lib/ridl/node.rb', line 1602 def ports case @porttype when :port @idltype.resolved_type.node.ports.collect {|p| p.(self.name, self.enclosure) } when :mirrorport @idltype.resolved_type.node.ports.collect {|p| p.(self.name, self.enclosure) } else [self] end end |