Give the class a list of ivars
Which is redundant with the type’s names, so let’s see
This commit is contained in:
parent
af9987659f
commit
e77298f4b1
@ -76,6 +76,7 @@ module Register
|
|||||||
@types[name].object_class = cl
|
@types[name].object_class = cl
|
||||||
@types[name].instance_methods = object_with_type Parfait::List
|
@types[name].instance_methods = object_with_type Parfait::List
|
||||||
cl.instance_methods = object_with_type Parfait::List
|
cl.instance_methods = object_with_type Parfait::List
|
||||||
|
cl.instance_names = object_with_type Parfait::List
|
||||||
#puts "instance_methods is #{cl.instance_methods.class}"
|
#puts "instance_methods is #{cl.instance_methods.class}"
|
||||||
cl.name = name
|
cl.name = name
|
||||||
classes[name] = cl
|
classes[name] = cl
|
||||||
@ -127,7 +128,7 @@ module Register
|
|||||||
:Frame => {:next_frame => :Frame, :indexed_length => :Integer},
|
:Frame => {:next_frame => :Frame, :indexed_length => :Integer},
|
||||||
:Type => {:object_class => :Class, :instance_methods => :List , :indexed_length => :Integer} ,
|
:Type => {:object_class => :Class, :instance_methods => :List , :indexed_length => :Integer} ,
|
||||||
:Class => {:instance_methods => :List, :instance_type => :Type, :name => :Word,
|
:Class => {:instance_methods => :List, :instance_type => :Type, :name => :Word,
|
||||||
:super_class_name => :Word},
|
:super_class_name => :Word , :instance_names => :List },
|
||||||
:Dictionary => {:keys => :List , :values => :List } ,
|
:Dictionary => {:keys => :List , :values => :List } ,
|
||||||
:TypedMethod => {:name => :Word, :source => :Object, :instructions => :Object, :binary => :Object,
|
:TypedMethod => {:name => :Word, :source => :Object, :instructions => :Object, :binary => :Object,
|
||||||
:arguments => :Type , :for_type => :Type, :locals => :Type } ,
|
:arguments => :Type , :for_type => :Type, :locals => :Type } ,
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
module Parfait
|
module Parfait
|
||||||
class Class < Object
|
class Class < Object
|
||||||
include Behaviour
|
include Behaviour
|
||||||
attributes [:instance_type , :name , :super_class_name]
|
attributes [:instance_type , :name , :super_class_name , :instance_names]
|
||||||
|
|
||||||
def initialize name , superclass
|
def initialize name , superclass
|
||||||
super()
|
super()
|
||||||
@ -26,13 +26,18 @@ module Parfait
|
|||||||
# as an instance. The relation is from an object through the Type to it's class
|
# as an instance. The relation is from an object through the Type to it's class
|
||||||
# TODO the object type should copy the stuff from superclass
|
# TODO the object type should copy the stuff from superclass
|
||||||
self.instance_type = Type.new(self)
|
self.instance_type = Type.new(self)
|
||||||
|
self.instance_names = List.new()
|
||||||
end
|
end
|
||||||
|
|
||||||
def allocate_object
|
def allocate_object
|
||||||
#space, and ruby allocate
|
#space, and ruby allocate
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_instance_names( names )
|
||||||
|
self.instance_names = names
|
||||||
|
end
|
||||||
def add_instance_name name
|
def add_instance_name name
|
||||||
|
self.instance_names << name
|
||||||
self.instance_type.push name
|
self.instance_type.push name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user