Class: HDLRuby::High::RefObject
- Inherits:
-
Low::Ref
- Object
- Base::Expression
- Low::Expression
- Low::Ref
- HDLRuby::High::RefObject
- Includes:
- HRef
- Defined in:
- lib/HDLRuby/hruby_high.rb
Overview
Describes a high-level object reference: no low-level equivalent!
Constant Summary
Constants included from Low::Low2Symbol
Low::Low2Symbol::Low2SymbolPrefix, Low::Low2Symbol::Low2SymbolTable, Low::Low2Symbol::Symbol2LowTable
Instance Attribute Summary collapse
-
#base ⇒ Object
readonly
The base of the reference.
-
#object ⇒ Object
readonly
The refered object.
Attributes inherited from Low::Expression
Attributes included from Low::Hparent
Instance Method Summary collapse
-
#constant? ⇒ Boolean
Tell if the expression is constant.
-
#initialize(base, object) ⇒ RefObject
constructor
Creates a new reference from a +base+ reference and named +object+.
-
#method_missing(m, *args, &ruby_block) ⇒ Object
Missing methods are looked for into the refered object.
-
#to_low ⇒ Object
Converts the name reference to a HDLRuby::Low::RefName.
-
#to_ref ⇒ Object
Converts to a new reference.
Methods included from HRef
Methods inherited from Low::Ref
#each_node, #each_node_deep, #eql?, #explicit_types, #hash, #map_nodes!, #path_each, #to_c, #to_high, #to_vhdl
Methods inherited from Low::Expression
#boolean?, #break_types!, #clone, #each_node, #each_node_deep, #each_ref_deep, #eql?, #explicit_types, #extract_selects_to!, #hash, #leftvalue?, #map_nodes!, #replace_expressions!, #replace_names!, #rightvalue?, #set_type!, #statement, #to_c, #to_high, #to_vhdl
Methods included from Low::Low2Symbol
Methods included from Low::Hparent
Constructor Details
#initialize(base, object) ⇒ RefObject
Creates a new reference from a +base+ reference and named +object+.
2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 |
# File 'lib/HDLRuby/hruby_high.rb', line 2764 def initialize(base,object) if object.respond_to?(:type) then # Typed object, so typed reference. super(object.type) else # Untyped object, so untyped reference. super(void) end # Check and set the base (it must be convertible to a reference). unless base.respond_to?(:to_ref) raise AnyError, "Invalid base for a RefObject: #{base}" end @base = base # Set the object @object = object end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &ruby_block) ⇒ Object
Missing methods are looked for into the refered object.
2799 2800 2801 |
# File 'lib/HDLRuby/hruby_high.rb', line 2799 def method_missing(m, *args, &ruby_block) @object.send(m,*args,&ruby_block) end |
Instance Attribute Details
#base ⇒ Object (readonly)
The base of the reference
2758 2759 2760 |
# File 'lib/HDLRuby/hruby_high.rb', line 2758 def base @base end |
#object ⇒ Object (readonly)
The refered object.
2761 2762 2763 |
# File 'lib/HDLRuby/hruby_high.rb', line 2761 def object @object end |
Instance Method Details
#constant? ⇒ Boolean
Tell if the expression is constant.
2782 2783 2784 |
# File 'lib/HDLRuby/hruby_high.rb', line 2782 def constant? return self.base.constant? end |
#to_low ⇒ Object
Converts the name reference to a HDLRuby::Low::RefName.
2792 2793 2794 2795 2796 |
# File 'lib/HDLRuby/hruby_high.rb', line 2792 def to_low # return HDLRuby::Low::RefName.new(@base.to_ref.to_low,@object.name) return HDLRuby::Low::RefName.new(self.type.to_low, @base.to_ref.to_low,@object.name) end |