Class: SystemRDL::Evaluator::InstanceRef
- Inherits:
-
Object
- Object
- SystemRDL::Evaluator::InstanceRef
- Includes:
- Common
- Defined in:
- lib/systemrdl/evaluator/reference.rb
Instance Attribute Summary collapse
-
#elements ⇒ Object
readonly
Returns the value of attribute elements.
Attributes included from Common
#component, #parent, #token_range
Instance Method Summary collapse
- #array_select? ⇒ Boolean
- #evaluate(instance, **_optargs) ⇒ Object
- #find(instance, allow_array_ref: false) ⇒ Object
-
#initialize(elements, token_range) ⇒ InstanceRef
constructor
A new instance of InstanceRef.
Methods included from Common
Constructor Details
#initialize(elements, token_range) ⇒ InstanceRef
Returns a new instance of InstanceRef.
65 66 67 68 |
# File 'lib/systemrdl/evaluator/reference.rb', line 65 def initialize(elements, token_range) super(token_range) @elements = elements end |
Instance Attribute Details
#elements ⇒ Object (readonly)
Returns the value of attribute elements.
70 71 72 |
# File 'lib/systemrdl/evaluator/reference.rb', line 70 def elements @elements end |
Instance Method Details
#array_select? ⇒ Boolean
87 88 89 |
# File 'lib/systemrdl/evaluator/reference.rb', line 87 def array_select? elements.any?(&:array_select?) end |
#evaluate(instance, **_optargs) ⇒ Object
72 73 74 |
# File 'lib/systemrdl/evaluator/reference.rb', line 72 def evaluate(instance, **_optargs) find(instance, allow_array_ref: false)[0].to_value(token_range) end |
#find(instance, allow_array_ref: false) ⇒ Object
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/systemrdl/evaluator/reference.rb', line 76 def find(instance, allow_array_ref: false) result = @elements.inject([instance]) do |instances, element| process_instance_ref_element(instances, element) end return result if allow_array_ref || result.size <= 1 = 'reference to array instance not allowed' raise_evaluation_error , token_range end |