Torsten Rüger
f87526f86f
Class, Method and Lambda (was block) are expressions. Just making things clearer, especially for the blocks (ahem, lambdas) is matters. wip
55 lines
1.5 KiB
Ruby
55 lines
1.5 KiB
Ruby
#
|
|
#
|
|
# In rubyx everything truely is an object. (most smalltalk/ruby systems use a union
|
|
# for integers/pointers that are called objects, but are really very different)
|
|
#
|
|
# Objects have type as their first member. No exception.
|
|
#
|
|
# So where is the data? In DataObjects. DataObjects are opague carriers of data.
|
|
# Opague to rubyx that is. There is no way to get at it or pass the data around.
|
|
#
|
|
# To use Data, Risc instructions have to be used. Luckily there is not soo much one
|
|
# actually wants to do with data, moving it between DataObject , comparing and
|
|
# logical and math operation that are bundled into the OperatorInstruction.
|
|
#
|
|
# For safe access the access code needs to know the length of the data, which is
|
|
# encoded in the class/type name. Ie An Integer derives from Data4, which is 4 long
|
|
# ( one for the type, one for the next, one word for the integer and currently still a marker)
|
|
#
|
|
# DataObjects still have a type, and so can have objects before the data starts
|
|
#
|
|
# A marker class
|
|
class DataObject < Object
|
|
|
|
def self.type_length
|
|
raise "called " + self.to_s
|
|
end
|
|
def padded_length
|
|
self.class.memory_size * 4
|
|
end
|
|
def data_length
|
|
self.class.memory_size
|
|
end
|
|
end
|
|
|
|
class Data4 < DataObject
|
|
def self.memory_size
|
|
4
|
|
end
|
|
end
|
|
class Data8 < DataObject
|
|
def self.memory_size
|
|
8
|
|
end
|
|
end
|
|
class Data16 < DataObject
|
|
def self.memory_size
|
|
16
|
|
end
|
|
end
|
|
class Data32 < DataObject
|
|
def self.memory_size
|
|
32
|
|
end
|
|
end
|