## ## the Class object should be a variable-pointer object because ## it needs to accomodate class instance variables. ## class(#pointer) Class(Apex) { dcl spec selfspec superclass subclasses name instvars classvars classinstvars pooldics instmthdic classmthdic. method(#class) basicNew { ## you must not instantiate a new class this way. self cannotInstantiate. } method(#class) initialize { ^self. } (* most of the following methods can actually become class methods of Apex. * if the instance varibles can be made accessible from the Apex class. *) method name { ^self.name } method superclass { ^self.superclass } method specNumInstVars { ## shift right by 7 bits. ## see stix-prv.h for details. ^self.spec bitShift: -7 } (*method inheritsFrom: aSuperclass { | c | c := self superclass. [c notNil] whileTrue: [ [ c == aSuperclass ] ifTrue: [^true]. c := c superclass. ]. ^false }*) }