60 lines
1.6 KiB
Ruby
60 lines
1.6 KiB
Ruby
module Main
|
|
class RegistersController < Volt::ModelController
|
|
|
|
def initialize *args
|
|
super(*args)
|
|
self.model = []
|
|
init_registers
|
|
end
|
|
|
|
|
|
def init_registers
|
|
@volt_app.interpreter.registers.each do |reg , val|
|
|
r = RegisterModel.new( :name => reg , :value => val)
|
|
self.model << r
|
|
@volt_app.interpreter.register_event(:register_changed, r)
|
|
@volt_app.interpreter.register_event(:object_changed, r)
|
|
r.register_changed( reg , nil , @volt_app.interpreter.registers[reg])
|
|
end
|
|
end
|
|
|
|
def marker var
|
|
return "Wo" if var.is_a? String
|
|
var.class.name.split("::").last[0,2]
|
|
end
|
|
|
|
def variables val
|
|
name = val.class.name.split("::").last
|
|
ClassesController.variables(name)
|
|
end
|
|
|
|
def content(id)
|
|
object = Virtual.machine.objects[id]
|
|
fields = []
|
|
if object and ! object.is_a?(String)
|
|
clazz = object.class.name.split("::").last
|
|
fields << ["#{clazz}:#{object.internal_object_length}" , 0]
|
|
fields << ["--------------------" , 0 ]
|
|
object.get_instance_variables.each do |variable|
|
|
f = object.get_instance_variable(variable)
|
|
fields << ["#{variable} : #{marker(f)} : #{f.object_id}" , f.object_id]
|
|
end
|
|
end
|
|
fields
|
|
end
|
|
|
|
def variables(attribute)
|
|
model_name = attribute.class.name.split("::").last
|
|
vars = []
|
|
cl = Virtual.machine.space.get_class_by_name(model_name)
|
|
return vars unless cl
|
|
layout = cl.object_layout
|
|
layout.object_instance_names.each do |name|
|
|
vars.push name
|
|
end
|
|
vars
|
|
end
|
|
|
|
end
|
|
end
|