Class: IDL::AST::Member
Overview
Exception
Direct Known Subclasses
Constant Summary collapse
- NAMETYPE =
:member
Instance Attribute Summary collapse
-
#idltype ⇒ Object
readonly
Returns the value of attribute idltype.
Attributes inherited from Leaf
#annotations, #enclosure, #intern, #lm_name, #name, #prefix, #scopes
Instance Method Summary collapse
-
#initialize(_name, _enclosure, params) ⇒ Member
constructor
A new instance of Member.
- #instantiate(_context, _enclosure, _params = {}) ⇒ Object
- #is_local?(recurstk) ⇒ Boolean
- #marshal_dump ⇒ Object
- #marshal_load(vars) ⇒ Object
Methods inherited from Leaf
#_set_prefix, #has_annotations?, #is_template?, #lm_name_for_scope, #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) ⇒ Member
Returns a new instance of Member.
2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 |
# File 'lib/ridl/node.rb', line 2518 def initialize(_name, _enclosure, params) super(_name, _enclosure) @idltype = params[:type] unless @idltype.is_a?(IDL::Type::ScopedName) && @idltype.is_node?(IDL::AST::TemplateParam) raise RuntimeError, "Anonymous type definitions are not allowed!" if @idltype.is_anonymous? ## check for use of incomplete types if !@idltype.is_complete? ## verify type is used in sequence if @idltype.resolved_type.is_a? IDL::Type::Sequence ## find the (non-sequence) elementtype seq_ = @idltype.resolved_type mtype = seq_.basetype while mtype.resolved_type.is_a? IDL::Type::Sequence seq_ = mtype.resolved_type mtype = seq_.basetype end ## is it an incomplete struct, union or valuetype? if mtype.is_a? IDL::Type::ScopedName case mtype.resolved_type when IDL::Type::Struct, IDL::Type::Union, IDL::Type::Valuetype if !mtype.node.is_defined? ## check if incomplete struct/union is contained within definition of self enc = _enclosure while enc.is_a?(IDL::AST::Struct) || enc.is_a?(IDL::AST::Union) || enc.is_a?(IDL::AST::Valuetype) if enc.scoped_name == mtype.node.scoped_name ## mark enclosure as recursive enc.recursive = true ## mark sequence as recursive type !!! DEPRECATED !!!; leave till R2CORBA updated seq_.recursive = true return end enc = enc.enclosure end end return # incomplete types in sequences allowed end end end raise RuntimeError, "Incomplete type #{@idltype.typename} not allowed here!" end end end |
Instance Attribute Details
#idltype ⇒ Object (readonly)
Returns the value of attribute idltype.
2516 2517 2518 |
# File 'lib/ridl/node.rb', line 2516 def idltype @idltype end |
Instance Method Details
#instantiate(_context, _enclosure, _params = {}) ⇒ Object
2574 2575 2576 2577 2578 2579 |
# File 'lib/ridl/node.rb', line 2574 def instantiate(_context, _enclosure, _params = {}) _params.merge!({ :type => @idltype.instantiate(_context), }) super(_context, _enclosure, _params) end |
#is_local?(recurstk) ⇒ Boolean
2561 2562 2563 |
# File 'lib/ridl/node.rb', line 2561 def is_local?(recurstk) idltype.is_local?(recurstk) end |
#marshal_dump ⇒ Object
2565 2566 2567 |
# File 'lib/ridl/node.rb', line 2565 def marshal_dump super() << @idltype end |
#marshal_load(vars) ⇒ Object
2569 2570 2571 2572 |
# File 'lib/ridl/node.rb', line 2569 def marshal_load(vars) @idltype = vars.pop super(vars) end |