Class: IDL::AST::Struct
- Inherits:
-
Node
show all
- Defined in:
- lib/ridl/node.rb,
lib/ridl/node.rb
Overview
Constant Summary
collapse
- DEFINABLE =
[IDL::AST::Member, IDL::AST::Struct, IDL::AST::Union, IDL::AST::Enum, IDL::AST::Enumerator]
Instance Attribute Summary collapse
Attributes inherited from Leaf
#annotations, #enclosure, #intern, #name, #prefix, #scopes
Instance Method Summary
collapse
Methods inherited from Node
#define, #introduce, #is_definable?, #match_members, #redefine, #replace_prefix, #resolve, #select_members, #undo_introduction
Methods inherited from Leaf
#has_annotations?, #is_template?, #lm_name, #lm_scopes, #replace_prefix, #repository_id, #resolve, #scoped_lm_name, #scoped_name, #set_repo_id, #set_repo_version, #typename, #unescaped_name
Constructor Details
#initialize(_name, _enclosure, params) ⇒ Struct
Returns a new instance of Struct.
2519
2520
2521
2522
2523
2524
2525
2526
|
# File 'lib/ridl/node.rb', line 2519
def initialize(_name, _enclosure, params)
@defined = false
@recursive = false
@forward = params[:forward] ? true : false
super(_name, _enclosure)
@idltype = IDL::Type::Struct.new(self)
@base = set_base(params[:inherits])
end
|
Instance Attribute Details
#idltype ⇒ Object
Returns the value of attribute idltype.
2517
2518
2519
|
# File 'lib/ridl/node.rb', line 2517
def idltype
@idltype
end
|
Instance Method Details
#base ⇒ Object
2541
2542
2543
|
# File 'lib/ridl/node.rb', line 2541
def base
@base
end
|
#defined=(f) ⇒ Object
2549
2550
2551
|
# File 'lib/ridl/node.rb', line 2549
def defined=(f)
@defined = f
end
|
#instantiate(instantiation_context, _enclosure) ⇒ Object
2600
2601
2602
2603
2604
2605
2606
2607
|
# File 'lib/ridl/node.rb', line 2600
def instantiate(instantiation_context, _enclosure)
_params = {
forward: @forward
}
_s = super(instantiation_context, _enclosure, _params)
_s.defined = self.is_defined?
_s
end
|
#is_defined? ⇒ Boolean
2545
2546
2547
|
# File 'lib/ridl/node.rb', line 2545
def is_defined?
@defined
end
|
#is_forward? ⇒ Boolean
2553
2554
2555
|
# File 'lib/ridl/node.rb', line 2553
def is_forward?
@forward
end
|
#is_local?(recurstk = []) ⇒ Boolean
2577
2578
2579
2580
2581
2582
2583
2584
2585
|
# File 'lib/ridl/node.rb', line 2577
def is_local?(recurstk = [])
return false if is_forward? || recurstk.include?(self)
recurstk.push self ret = members.any? { |m| m.is_local?(recurstk) }
recurstk.pop
ret
end
|
#is_recursive? ⇒ Boolean
2557
2558
2559
|
# File 'lib/ridl/node.rb', line 2557
def is_recursive?
@recursive
end
|
#marshal_dump ⇒ Object
2587
2588
2589
|
# File 'lib/ridl/node.rb', line 2587
def marshal_dump
super() << @idltype << @defined << @recursive << @forward << @base
end
|
#marshal_load(vars) ⇒ Object
2591
2592
2593
2594
2595
2596
2597
2598
|
# File 'lib/ridl/node.rb', line 2591
def marshal_load(vars)
@base = vars.pop
@forward = vars.pop
@recursive = vars.pop
@defined = vars.pop
@idltype = vars.pop
super(vars)
end
|
#members ⇒ Object
2569
2570
2571
|
# File 'lib/ridl/node.rb', line 2569
def members
@children.find_all { |c| c.is_a? IDL::AST::Member }
end
|
#recursive=(f) ⇒ Object
2561
2562
2563
|
# File 'lib/ridl/node.rb', line 2561
def recursive=(f)
@recursive = f
end
|
#set_base(inherits) ⇒ Object
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
|
# File 'lib/ridl/node.rb', line 2528
def set_base(inherits)
unless inherits.nil?
rtc = inherits.resolved_type
unless rtc.node.is_defined?
raise "#{typename} #{scoped_lm_name} cannot inherit from forward declared #{rtc.node.typename} #{rtc.node.scoped_lm_name}"
end
unless rtc.node.is_a?(IDL::AST::Struct)
raise "#{typename} #{scoped_lm_name} cannot inherit from non structure #{rtc.node.typename} #{rtc.node.scoped_lm_name}"
end
inherits.node
end
end
|
#types ⇒ Object
2573
2574
2575
|
# File 'lib/ridl/node.rb', line 2573
def types
@children.reject { |c| c.is_a? IDL::AST::Member }
end
|
#walk_members ⇒ Object
2565
2566
2567
|
# File 'lib/ridl/node.rb', line 2565
def walk_members
@children.each { |m| yield(m) unless m.is_a? IDL::AST::Member }
end
|