Class: Base

Inherits:
Object
  • Object
show all
Defined in:
lib/base.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Base

Returns a new instance of Base.



314
315
316
317
318
319
320
321
# File 'lib/base.rb', line 314

def initialize(params)
  @frame_optimized = true # default
  @name = "#{self.class}_#{SecureRandom.uuid.to_s.gsub('-','')}"
  param_keys.each do |k|
    self.send("#{k.to_sym}=", params[k])
  end
  buildit
end

Instance Attribute Details

#frame_optimizedObject

Returns the value of attribute frame_optimized.



312
313
314
# File 'lib/base.rb', line 312

def frame_optimized
  @frame_optimized
end

#nameObject

Returns the value of attribute name.



311
312
313
# File 'lib/base.rb', line 311

def name
  @name
end

Instance Method Details

#add_arduino_code(ir) ⇒ Object



377
378
379
380
381
382
# File 'lib/base.rb', line 377

def add_arduino_code(ir)
  ir[@name] = arduino_code
  param_keys.each do |k|
    self.send("#{k}").add_arduino_code(ir)
  end
end

#add_cycle_level_scope(ir) ⇒ Object



384
385
386
387
388
389
# File 'lib/base.rb', line 384

def add_cycle_level_scope(ir)
  ir[@name] = cycle_level_arduino_code
  param_keys.each do |k|
    self.send("#{k}").add_cycle_level_scope(ir)
  end
end

#add_top_level_scope(ir) ⇒ Object



391
392
393
394
395
396
# File 'lib/base.rb', line 391

def add_top_level_scope(ir)
  ir[@name] = top_level_scope_code
  param_keys.each do |k|
    self.send("#{k}").add_top_level_scope(ir)
  end
end

#append_tsortable(tsortable) ⇒ Object



370
371
372
373
374
375
# File 'lib/base.rb', line 370

def append_tsortable(tsortable)
  tsortable[@name] = depends_on
  param_keys.each do |k|
    self.send("#{k}").append_tsortable(tsortable)
  end
end

#arduino_codeObject



340
341
342
# File 'lib/base.rb', line 340

def arduino_code
  []
end

#builditObject



323
324
325
326
327
328
329
# File 'lib/base.rb', line 323

def buildit
  param_keys.each do |k|
    # puts "resolving #{k}"
    self.send("#{k.to_sym}=", builder(self.send("#{k.to_s}")))
    # puts "#{k} resolved"
  end
end

#cycle_level_arduino_codeObject

only executed once per cycle



360
361
362
# File 'lib/base.rb', line 360

def cycle_level_arduino_code
  []
end

#depends_onObject



335
336
337
338
# File 'lib/base.rb', line 335

def depends_on
  return [] if param_keys == []
  param_keys.map { |k| self.send("#{k}").name }
end

#param_keysObject



331
332
333
# File 'lib/base.rb', line 331

def param_keys
  []
end

#resolve_frame_optimizedObject



344
345
346
347
348
349
350
351
352
353
354
355
356
357
# File 'lib/base.rb', line 344

def resolve_frame_optimized
  # first resolve the children
  param_keys.each do |k|
    self.send("#{k}").resolve_frame_optimized
  end
  
  # check to see if any of the children can not be optimized
  param_keys.each do |k|
    # if so... mark self as false
    if self.send("#{k}").frame_optimized == false
      @frame_optimized = false
    end
  end
end

#top_level_scope_arduino_codeObject

code to be executed in the top level scope. used for constant declaration



366
367
368
# File 'lib/base.rb', line 366

def top_level_scope_arduino_code
  []
end