Node:PObjectType, Next:Pointer, Previous:Pi, Up:Reference
type InternalSignedSizeType = Integer attribute (Size = BitSizeOf (SizeType)); PObjectType = ^const record Size: SizeType; NegSize: InternalSignedSizeType; Parent: PObjectType; Name: ^const String end;
(Note: ^record
is not valid syntax. It is just used here in
the explanation because the record type has no name by itself.
Because of the added method pointers (see below), there is no useful
usage of the record type.)
PObjectType
is the type returned by TypeOf
and
required by SetType
. In fact, the record pointed to (the
VMT, "virtual method table") also contains pointers to the
virtual methods. However, these are not declared in
PObjectType
because they vary from object type to object
type. The fields declared here are those that are shared by every
object type and can be accessed via TypeOf
.
Size
contains the size of the object type, NegSize
contains the size negated (for runtime checks). Parent
contains a pointer to the parent type's VMT (or nil if the type has
no parent). Name
points to a string containing the type's
name.
PObjectType
is a GNU Pascal extension.