Class: Lignite::Variables
- Inherits:
-
Object
- Object
- Lignite::Variables
- Defined in:
- lib/lignite/variables.rb
Overview
Allocate local or global variables FIXME: the user can make bad alignment, resulting in VMError at runtime bad: data8 :speed; data32 :tacho; output_read(…) good data32 :tacho; data8 :speed; output_read(…)
Instance Method Summary collapse
-
#add(id, size, unpacker) ⇒ Object
declare.
-
#bytesize ⇒ Object
compile.
-
#initialize ⇒ Variables
constructor
A new instance of Variables.
-
#key?(sym) ⇒ Boolean
use.
-
#offset(sym) ⇒ Object
use.
-
#unpack(buf) ⇒ Object
decode reply.
Constructor Details
#initialize ⇒ Variables
Returns a new instance of Variables.
7 8 9 10 11 12 |
# File 'lib/lignite/variables.rb', line 7 def initialize @offset = 0 # for proper decoding of direct replies according to declared types @unpacker = "" @vars = {} end |
Instance Method Details
#add(id, size, unpacker) ⇒ Object
declare
15 16 17 18 19 20 |
# File 'lib/lignite/variables.rb', line 15 def add(id, size, unpacker) raise "Duplicate variable #{id}" if @vars.key?(id) @vars[id] = {offset: @offset, size: size} @offset += size @unpacker += unpacker end |
#bytesize ⇒ Object
compile
33 34 35 |
# File 'lib/lignite/variables.rb', line 33 def bytesize @offset end |
#key?(sym) ⇒ Boolean
use
23 24 25 |
# File 'lib/lignite/variables.rb', line 23 def key?(sym) @vars.key?(sym) end |
#offset(sym) ⇒ Object
use
28 29 30 |
# File 'lib/lignite/variables.rb', line 28 def offset(sym) @vars[sym][:offset] end |
#unpack(buf) ⇒ Object
decode reply
38 39 40 41 |
# File 'lib/lignite/variables.rb', line 38 def unpack(buf) values = buf.unpack(@unpacker) values.size == 1 ? values.first : values end |