Give the class a list of ivars

Which is redundant with the type’s names, so let’s see
This commit is contained in:
Torsten Ruger 2016-12-18 20:04:40 +02:00
parent af9987659f
commit e77298f4b1
2 changed files with 8 additions and 2 deletions

View File

@ -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 } ,

View File

@ -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