32 lines
1.3 KiB
Ruby
32 lines
1.3 KiB
Ruby
|
# An Object is really a hash like structure. It is dynamic and
|
||
|
# you want to store values by name.
|
||
|
# One could (like mri), store the names in each object, but that is wasteful
|
||
|
# Instead we store only the values, and access them by index.
|
||
|
# The Layout allows the mapping of names to index.
|
||
|
|
||
|
# The Layout of an object describes the memory layout of the object
|
||
|
# The Layout is a simple list of the names of instance variables.
|
||
|
#
|
||
|
# As every object has a Layout to describe it, the name "layout" is the
|
||
|
# first name in the list for every Layout.
|
||
|
# But as we want every Object to have a class, this is the second
|
||
|
# entry in the list. The name for the entry is "object_class"
|
||
|
|
||
|
# In other words, the Layout is a list of names that describe
|
||
|
# the values stored in an actual object.
|
||
|
# The object is an array of values of length n and
|
||
|
# the Layout is an array of names of length n
|
||
|
# Together they turn the object into a hash like structure
|
||
|
|
||
|
class Layout < Object
|
||
|
|
||
|
# given a name as symbol, return the integer index of that entry
|
||
|
# we use 0 as "not found" as we don't want negatives, and can't raise
|
||
|
# luckily 0 is always the type-word in an object and so by returning
|
||
|
# one-offsets we can use the return value straight without adding 1
|
||
|
def index_of( name )
|
||
|
#internal implementation....
|
||
|
end
|
||
|
|
||
|
end
|