Module: HDLRuby::High::HScope_missing
- Includes:
- Hmissing
- Included in:
- HBlock, Scope, Std::DecoderT, Std::FsmT, Std::PipelineT
- Defined in:
- lib/HDLRuby/hruby_high.rb
Constant Summary
Constants included from Hmissing
HDLRuby::High::Hmissing::High, HDLRuby::High::Hmissing::NAMES
Instance Method Summary collapse
- #h_missing ⇒ Object
-
#method_missing(m, *args, &ruby_block) ⇒ Object
Missing methods are looked for in the private namespace.
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 in the private namespace.
NOTE: it is ok to use the private namespace because the scope can only be accessed if it is available from its systemT.
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/HDLRuby/hruby_high.rb', line 202 def method_missing(m, *args, &ruby_block) # puts "looking for #{m} in #{self}" # Is the scope currently opened? # if High.space_top.user_deep?(self) then if High.space_index(self.namespace) then # Yes, use the stack of namespaces. h_missing(m,*args,&ruby_block) else # No, look into the current namespace and return a reference # to the result if it is a referable hardware object. res = self.namespace.send(m,*args,&ruby_block) if res.respond_to?(:to_ref) then # This is a referable object, build the reference from # the namespace. return RefObject.new(self.to_ref,res) end end end |
Instance Method Details
#h_missing ⇒ Object
196 |
# File 'lib/HDLRuby/hruby_high.rb', line 196 alias_method :h_missing, :method_missing |