RexxClass Class Reference

#include <ClassClass.hpp>

Inheritance diagram for RexxClass:
[legend]

Public Member Functions

void * operator new (size_t, size_t, const char *, RexxBehaviour *, RexxBehaviour *)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *)
 
void operator delete (void *, void *)
 
void operator delete (void *, size_t, const char *, RexxBehaviour *, RexxBehaviour *)
 
 RexxClass ()
 
 RexxClass (RESTORETYPE restoreType)
 
void live (size_t)
 
void liveGeneral (int reason)
 
void flatten (RexxEnvelope *)
 
RexxObjectunflatten (RexxEnvelope *)
 
RexxObjectmakeProxy (RexxEnvelope *)
 
bool isEqual (RexxObject *)
 
HashCode hash ()
 
HashCode getHashValue ()
 
RexxObjectequal (RexxObject *)
 
RexxObjectstrictEqual (RexxObject *)
 
RexxObjectnotEqual (RexxObject *)
 
RexxObjectsetRexxDefined ()
 
RexxIntegerqueryMixinClass ()
 
RexxStringgetId ()
 
RexxClassgetBaseClass ()
 
RexxClassgetMetaClass ()
 
RexxClassgetSuperClass ()
 
RexxArraygetSuperClasses ()
 
RexxArraygetClassSuperClasses ()
 
RexxArraygetSubClasses ()
 
void defmeths (RexxTable *)
 
void setInstanceBehaviour (RexxBehaviour *)
 
RexxTablegetInstanceBehaviourDictionary ()
 
RexxTablegetBehaviourDictionary ()
 
RexxStringdefaultName ()
 
void subClassable (bool)
 
void subClassable (RexxClass *superClass, bool restricted)
 
void mergeSuperClassScopes (RexxBehaviour *target_instance_behaviour)
 
RexxObjectdefineMethod (RexxString *, RexxMethod *)
 
RexxObjectdefineMethods (RexxTable *)
 
RexxObjectdeleteMethod (RexxString *)
 
RexxObjectdefineClassMethod (RexxString *method_name, RexxMethod *newMethod)
 
void removeClassMethod (RexxString *method_name)
 
RexxMethodmethod (RexxString *)
 
RexxSuppliermethods (RexxClass *)
 
void updateSubClasses ()
 
void updateInstanceSubClasses ()
 
void createClassBehaviour (RexxBehaviour *)
 
void createInstanceBehaviour (RexxBehaviour *)
 
void methodDictionaryMerge (RexxTable *, RexxTable *)
 
RexxTablemethodDictionaryCreate (RexxTable *, RexxClass *)
 
RexxObjectinherit (RexxClass *, RexxClass *)
 
RexxObjectuninherit (RexxClass *)
 
RexxObjectenhanced (RexxObject **, size_t, size_t)
 
RexxClassmixinclass (RexxString *, RexxClass *, RexxTable *)
 
RexxClasssubclass (RexxString *, RexxClass *, RexxTable *)
 
RexxClassnewRexx (RexxObject **args, size_t argCount, size_t named_argCount)
 
void setMetaClass (RexxClass *)
 
bool isCompatibleWith (RexxClass *other)
 
RexxObjectisSubclassOf (RexxClass *other)
 
RexxStringdefaultNameRexx ()
 
bool isRexxDefined ()
 
bool isMixinClass ()
 
bool isMetaClass ()
 
bool hasUninitDefined ()
 
void setHasUninitDefined ()
 
void clearHasUninitDefined ()
 
void setInitialFlagState ()
 
bool parentHasUninitDefined ()
 
void setParentHasUninitDefined ()
 
bool isPrimitiveClass ()
 
void setMixinClass ()
 
void setNonPrimitive ()
 
RexxBehaviourgetInstanceBehaviour ()
 
void setMetaClass ()
 
void addSubClass (RexxClass *)
 
void removeSubclass (RexxClass *c)
 
- Public Member Functions inherited from RexxObject
void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, size_t, size_t)
 
void * operator new (size_t size, void *objectPtr)
 
void operator delete (void *, void *)
 
void operator delete (void *)
 
void operator delete (void *, RexxClass *)
 
void operator delete (void *, RexxClass *, RexxObject **, size_t)
 
RexxObjectnewRexx (RexxObject **arguments, size_t argCount, size_t named_argCount)
 
RexxObjectnewObject ()
 
 operator RexxInternalObject * ()
 
 RexxObject ()
 
 RexxObject (RESTORETYPE restoreType)
 
void initializeNewObject (size_t size, size_t mark, void *vft, RexxBehaviour *b)
 
void initializeNewObject (size_t mark, void *vft, RexxBehaviour *b)
 
virtual ~RexxObject ()
 
virtual RexxObjectdefMethod (RexxString *, RexxMethod *, RexxString *a=OREF_NULL)
 
virtual RexxObjectunknown (RexxString *msg, RexxArray *args, RexxDirectory *named_args)
 
virtual RexxIntegerhasMethod (RexxString *msg)
 
bool hasUninitMethod ()
 
RexxObjectinit ()
 
void uninit ()
 
RexxObjectcopy ()
 
bool truthValue (int)
 
virtual bool logicalValue (logical_t &)
 
virtual bool numberValue (wholenumber_t &result, size_t precision)
 
virtual bool numberValue (wholenumber_t &result)
 
virtual bool unsignedNumberValue (stringsize_t &result, size_t precision)
 
virtual bool unsignedNumberValue (stringsize_t &result)
 
virtual bool doubleValue (double &result)
 
RexxNumberStringnumberString ()
 
RexxIntegerintegerValue (size_t)
 
RexxStringmakeString ()
 
RexxStringprimitiveMakeString ()
 
void copyIntoTail (RexxCompoundTail *buffer)
 
RexxArraymakeArray ()
 
RexxStringstringValue ()
 
RexxStringrequestString ()
 
RexxStringrequestStringNoNOSTRING ()
 
RexxIntegerrequestInteger (size_t)
 
bool requestNumber (wholenumber_t &, size_t)
 
bool requestUnsignedNumber (stringsize_t &, size_t)
 
RexxArrayrequestArray ()
 
RexxDirectoryrequestDirectory ()
 
RexxStringrequiredString (RexxString *kind, size_t)
 
RexxStringrequiredString (RexxString *kind, const char *)
 
RexxStringrequiredString ()
 
RexxIntegerrequiredInteger (RexxString *kind, size_t, size_t)
 
wholenumber_t requiredNumber (RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
 
stringsize_t requiredPositive (RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
 
stringsize_t requiredNonNegative (RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
 
bool isInstanceOf (RexxClass *)
 
RexxObjectisInstanceOfRexx (RexxClass *)
 
RexxMethodinstanceMethod (RexxString *)
 
RexxSupplierinstanceMethods (RexxClass *)
 
RexxMethodinstanceMethodRexx (RexxString *)
 
RexxSupplierinstanceMethodsRexx (RexxClass *)
 
RexxStringobjectName ()
 
RexxObjectobjectNameEquals (RexxObject *)
 
RexxClassclassObject ()
 
RexxObjectsetMethod (RexxString *, RexxMethod *, RexxString *a=OREF_NULL)
 
RexxObjectunsetMethod (RexxString *)
 
RexxObjectrequestRexx (RexxString *)
 
RexxMessagestart (RexxObject **, size_t, size_t)
 
RexxMessagestartWith (RexxObject *, RexxArray *, RexxObject **, size_t)
 
RexxObjectsend (RexxObject **, size_t, size_t)
 
RexxObjectsendWith (RexxObject *, RexxArray *, RexxObject **, size_t)
 
RexxMessagestartCommon (RexxObject *message, RexxObject **arguments, size_t argCount, size_t named_argCount)
 
RexxStringoref ()
 
RexxObjectpmdict ()
 
RexxObjectrun (RexxObject **, size_t, size_t)
 
bool messageSend (RexxString *, RexxObject **, size_t, size_t, ProtectedObject &, bool processUnknown=true)
 
bool messageSend (RexxString *, RexxObject **, size_t, size_t, RexxObject *, ProtectedObject &, bool processUnknown=true)
 
RexxMethodcheckPrivate (RexxMethod *)
 
void processUnknown (RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
 
void processProtectedMethod (RexxString *, RexxMethod *, RexxObject **, size_t, size_t, ProtectedObject &)
 
void sendMessage (RexxString *, RexxArray *, RexxDirectory *, ProtectedObject &)
 
void sendMessage (RexxString *message, RexxObject **args, size_t argCount, size_t named_argCount, ProtectedObject &result)
 
void sendMessage (RexxString *message, ProtectedObject &result)
 
void sendMessage (RexxString *message, RexxObject *argument1, ProtectedObject &result)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, ProtectedObject &)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, ProtectedObject &)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, ProtectedObject &)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, ProtectedObject &)
 
RexxObjectsendMessage (RexxString *, RexxArray *, RexxDirectory *=OREF_NULL)
 
RexxObjectsendMessage (RexxString *message, RexxObject **args, size_t argCount, size_t named_argCount)
 
RexxObjectsendMessage (RexxString *message)
 
RexxObjectsendMessage (RexxString *message, RexxObject *argument1)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *)
 
RexxObjectdefMethods (RexxDirectory *)
 
void setObjectVariable (RexxString *, RexxObject *, RexxObject *)
 
RexxObjectgetObjectVariable (RexxString *)
 
RexxObjectgetObjectVariable (RexxString *, RexxObject *)
 
void addObjectVariables (RexxVariableDictionary *)
 
void copyObjectVariables (RexxObject *newObject)
 
RexxObjectsuperScope (RexxObject *)
 
RexxMethodsuperMethod (RexxString *, RexxObject *)
 
RexxObjectmdict ()
 
RexxObjectsetMdict (RexxObject *)
 
RexxBehaviourbehaviourObject ()
 
const char * idString ()
 
RexxStringid ()
 
RexxMethodmethodLookup (RexxString *name)
 
RexxVariableDictionarygetObjectVariables (RexxObject *)
 
void guardOn (RexxActivity *activity, RexxObject *scope)
 
void guardOff (RexxActivity *activity, RexxObject *scope)
 
RexxObjectequal (RexxObject *)
 
RexxObjectnotEqual (RexxObject *other)
 
RexxObjectstrictEqual (RexxObject *)
 
RexxObjectstrictNotEqual (RexxObject *other)
 
RexxIntegeridentityHashRexx ()
 
RexxObjecthashCode ()
 
RexxStringstringRexx ()
 
RexxStringconcatRexx (RexxObject *)
 
RexxStringconcatBlank (RexxObject *)
 
RexxObjectmakeStringRexx ()
 
RexxObjectmakeArrayRexx ()
 
RexxStringdefaultNameRexx ()
 
RexxObjectcopyRexx ()
 
RexxObjectunknownRexx (RexxString *, RexxArray *, RexxObject **, size_t)
 
RexxObjecthasMethodRexx (RexxString *)
 
void * getCSelf ()
 
void * getCSelf (RexxObject *scope)
 
bool equalValue (RexxObject *other)
 
virtual wholenumber_t compareTo (RexxObject *)
 
 koper (operator_plus) koper(operator_minus) koper(operator_multiply) koper(operator_divide) koper(operator_integerDivide) koper(operator_remainder) koper(operator_power) koper(operator_abuttal) koper(operator_concat) koper(operator_concatBlank) koper(operator_equal) koper(operator_notEqual) koper(operator_isGreaterThan) koper(operator_isBackslashGreaterThan) koper(operator_isLessThan) koper(operator_isBackslashLessThan) koper(operator_isGreaterOrEqual) koper(operator_isLessOrEqual) koper(operator_strictEqual) koper(operator_strictNotEqual) koper(operator_strictGreaterThan) koper(operator_strictBackslashGreaterThan) koper(operator_strictLessThan) koper(operator_strictBackslashLessThan) koper(operator_strictGreaterOrEqual) koper(operator_strictLessOrEqual) koper(operator_lessThanGreaterThan) koper(operator_greaterThanLessThan) koper(operator_and) koper(operator_or) koper(operator_xor) koper(operator_not) RexxVariableDictionary *objectVariables
 
- Public Member Functions inherited from RexxInternalObject
void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, size_t, size_t)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *)
 
void operator delete (void *p, void *ptr)
 
 RexxInternalObject ()
 
 RexxInternalObject (RESTORETYPE restoreType)
 
virtual ~RexxInternalObject ()
 
 operator RexxObject * ()
 
size_t getObjectSize ()
 
void setObjectSize (size_t s)
 
size_t getObjectDataSize ()
 
void * getObjectDataSpace ()
 
void clearObject ()
 
void clearObject (size_t l)
 
void setVirtualFunctions (void *t)
 
void setInitHeader (size_t s, size_t markword)
 
void setInitHeader (size_t markword)
 
void setObjectLive (size_t markword)
 
void setHasReferences ()
 
void setHasNoReferences ()
 
bool hasReferences ()
 
bool hasNoReferences ()
 
void setPrimitive ()
 
void setNonPrimitive ()
 
bool isPrimitive ()
 
bool isNonPrimitive ()
 
bool isObjectMarked (size_t markword)
 
void setObjectMark (size_t markword)
 
void clearObjectMark ()
 
bool isObjectLive (size_t mark)
 
bool isObjectDead (size_t mark)
 
bool isOldSpace ()
 
bool isNewSpace ()
 
void setNewSpace ()
 
void setOldSpace ()
 
void makeProxiedObject ()
 
bool isProxyObject ()
 
bool isSubClassOrEnhanced ()
 
bool isBaseClass ()
 
size_t getObjectTypeNumber ()
 
RexxBehaviourgetObjectType ()
 
bool isObjectType (RexxBehaviour *b)
 
bool isObjectType (size_t t)
 
bool isSameType (RexxInternalObject *o)
 
void setBehaviour (RexxBehaviour *b)
 
virtual RexxObjectevaluate (RexxActivation *, RexxExpressionStack *)
 
virtual RexxObjectgetValue (RexxActivation *)
 
virtual RexxObjectgetValue (RexxVariableDictionary *)
 
virtual RexxObjectgetRealValue (RexxActivation *)
 
virtual RexxObjectgetRealValue (RexxVariableDictionary *)
 
HashCode identityHash ()
 
void hasUninit ()
 
void removedUninit ()
 
void printObject ()
 
RexxObjectclone ()
 

Static Public Member Functions

static void processNewArgs (RexxObject **, size_t, RexxObject ***, size_t *, size_t, RexxObject **, RexxObject **)
 
static void createInstance ()
 
- Static Public Member Functions inherited from RexxObject
static void decodeMessageName (RexxObject *target, RexxObject *message, RexxString *&messageName, RexxObject *&startScope)
 
static void createInstance ()
 
- Static Public Member Functions inherited from RexxInternalObject
static size_t getObjectHeaderSize ()
 

Static Public Attributes

static RexxClassclassInstance = OREF_NULL
 
- Static Public Attributes inherited from RexxObject
static PCPPM operatorMethods []
 
static RexxClassclassInstance = OREF_NULL
 

Protected Types

enum  {
  REXX_DEFINED = 0x00000001 , MIXIN = 0x00000004 , HAS_UNINIT = 0x00000008 , META_CLASS = 0x00000010 ,
  PRIMITIVE_CLASS = 0x00000020 , PARENT_HAS_UNINIT = 0x00000040
}
 

Protected Attributes

RexxStringid
 
RexxTableclassMethodDictionary
 
RexxBehaviourinstanceBehaviour
 
RexxTableinstanceMethodDictionary
 
RexxClassbaseClass
 
RexxArraymetaClass
 
RexxArraymetaClassMethodDictionary
 
RexxIdentityTablemetaClassScopes
 
RexxArrayclassSuperClasses
 
RexxArrayinstanceSuperClasses
 
uint32_t classFlags
 
RexxListsubClasses
 

Additional Inherited Members

- Public Attributes inherited from RexxInternalObject
ObjectHeader header
 
RexxBehaviourbehaviour
 
- Protected Member Functions inherited from RexxVirtualBase
virtual ~RexxVirtualBase ()
 
virtual void baseVirtual ()
 

Detailed Description

Definition at line 49 of file ClassClass.hpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
REXX_DEFINED 
MIXIN 
HAS_UNINIT 
META_CLASS 
PRIMITIVE_CLASS 
PARENT_HAS_UNINIT 

Definition at line 139 of file ClassClass.hpp.

Constructor & Destructor Documentation

◆ RexxClass() [1/2]

RexxClass::RexxClass ( )
inline

Definition at line 57 of file ClassClass.hpp.

◆ RexxClass() [2/2]

RexxClass::RexxClass ( RESTORETYPE  restoreType)
inline

Definition at line 58 of file ClassClass.hpp.

Member Function Documentation

◆ addSubClass()

void RexxClass::addSubClass ( RexxClass subClass)

Definition at line 337 of file ClassClass.cpp.

References RexxList::addFirst(), and subClasses.

Referenced by inherit(), subclass(), and subClassable().

◆ clearHasUninitDefined()

void RexxClass::clearHasUninitDefined ( )
inline

Definition at line 119 of file ClassClass.hpp.

References classFlags, and HAS_UNINIT.

◆ createClassBehaviour()

◆ createInstance()

void RexxClass::createInstance ( )
static

◆ createInstanceBehaviour()

◆ defaultName()

RexxString * RexxClass::defaultName ( )
virtual

Reimplemented from RexxObject.

Definition at line 373 of file ClassClass.cpp.

References RexxString::concatToCstring(), RexxString::concatWithCstring(), and id.

Referenced by defaultNameRexx().

◆ defaultNameRexx()

RexxString * RexxClass::defaultNameRexx ( )

Definition at line 1569 of file ClassClass.cpp.

References defaultName().

Referenced by RexxMemory::createImage().

◆ defineClassMethod()

RexxObject * RexxClass::defineClassMethod ( RexxString method_name,
RexxMethod newMethod 
)

special method to allow a class method to be added to a primitive class during image build. New JLF : also used for ::EXTENSION

Parameters
method_nameThe name of the new method.
newMethodThe method object to add
Returns
always returns OREF_NULL

Definition at line 742 of file ClassClass.cpp.

References ARG_ONE, ARG_TWO, RexxInternalObject::behaviour, classMethodDictionary, RexxArray::get(), RexxBehaviour::getMethodDictionary(), getSubClasses(), RexxMethod::newScope(), OREF_NULL, requiredArgument(), RexxArray::size(), RexxTable::stringAdd(), stringArgument(), RexxTable::stringPut(), and RexxString::upper().

Referenced by RexxMemory::createImage(), and ExtensionDirective::install().

◆ defineMethod()

◆ defineMethods()

◆ defmeths()

◆ deleteMethod()

◆ enhanced()

◆ equal()

◆ flatten()

void RexxClass::flatten ( RexxEnvelope envelope)
virtual

Reimplemented from RexxObject.

Definition at line 104 of file ClassClass.cpp.

◆ getBaseClass()

RexxClass * RexxClass::getBaseClass ( )

Definition at line 271 of file ClassClass.cpp.

References baseClass.

Referenced by RexxMemory::createImage(), and inherit().

◆ getBehaviourDictionary()

RexxTable * RexxClass::getBehaviourDictionary ( )

◆ getClassSuperClasses()

RexxArray* RexxClass::getClassSuperClasses ( )
inline

Definition at line 79 of file ClassClass.hpp.

References classSuperClasses.

◆ getHashValue()

HashCode RexxClass::getHashValue ( )
virtual

Get the primitive hash value of this String object.

Returns
The calculated string hash for the string.

Reimplemented from RexxInternalObject.

Definition at line 155 of file ClassClass.cpp.

Referenced by hash().

◆ getId()

◆ getInstanceBehaviour()

RexxBehaviour* RexxClass::getInstanceBehaviour ( )
inline

Definition at line 127 of file ClassClass.hpp.

References instanceBehaviour.

Referenced by RexxSupplierClass::newRexx().

◆ getInstanceBehaviourDictionary()

RexxTable * RexxClass::getInstanceBehaviourDictionary ( )

◆ getMetaClass()

RexxClass * RexxClass::getMetaClass ( )

Definition at line 279 of file ClassClass.cpp.

References RexxArray::get(), isPrimitiveClass(), metaClass, and TheClassClass.

Referenced by RexxMemory::createImage(), and subclass().

◆ getSubClasses()

◆ getSuperClass()

RexxClass * RexxClass::getSuperClass ( )

Definition at line 303 of file ClassClass.cpp.

References RexxArray::get(), instanceSuperClasses, TheNilObject, and TheObjectClass.

Referenced by RexxMemory::createImage().

◆ getSuperClasses()

RexxArray * RexxClass::getSuperClasses ( )

Definition at line 318 of file ClassClass.cpp.

References RexxArray::copy(), and instanceSuperClasses.

Referenced by RexxMemory::createImage().

◆ hash()

HashCode RexxClass::hash ( )
virtual

Hash a class object. Because behaviors don't always get set up properly with this, we'll always use the primitive one for class objects.

Returns
A "hashed hash" that can be used by the map collections.

Reimplemented from RexxObject.

Definition at line 141 of file ClassClass.cpp.

References getHashValue().

◆ hasUninitDefined()

bool RexxClass::hasUninitDefined ( )
inline

Definition at line 117 of file ClassClass.hpp.

References classFlags, and HAS_UNINIT.

Referenced by inherit(), mixinclass(), RexxSupplierClass::newRexx(), newRexx(), and subclass().

◆ inherit()

◆ isCompatibleWith()

bool RexxClass::isCompatibleWith ( RexxClass other)

Test if the target class is a "compatible" with the argument class. To be compatible, the target class must either A) be the same class, B) be a direct subclass of the argument class, or C) inherit the argument class as a mixin. This rule gets applied recursively down the hierarchy.

Parameters
otherThe comparison class.
Returns
True if the two classes are compatible, false otherwise.

Definition at line 1531 of file ClassClass.cpp.

References RexxArray::get(), instanceSuperClasses, OREF_NULL, and RexxArray::size().

Referenced by RexxObject::isInstanceOf(), and isSubclassOf().

◆ isEqual()

◆ isMetaClass()

bool RexxClass::isMetaClass ( )
inline

Definition at line 116 of file ClassClass.hpp.

References classFlags, and META_CLASS.

Referenced by createClassBehaviour(), and subclass().

◆ isMixinClass()

bool RexxClass::isMixinClass ( )
inline

Definition at line 115 of file ClassClass.hpp.

References classFlags, and MIXIN.

Referenced by inherit(), and queryMixinClass().

◆ isPrimitiveClass()

bool RexxClass::isPrimitiveClass ( )
inline

Definition at line 124 of file ClassClass.hpp.

References classFlags, and PRIMITIVE_CLASS.

Referenced by getMetaClass(), and newRexx().

◆ isRexxDefined()

bool RexxClass::isRexxDefined ( )
inline

Definition at line 114 of file ClassClass.hpp.

References classFlags, and REXX_DEFINED.

Referenced by defineMethod(), deleteMethod(), inherit(), and uninherit().

◆ isSubclassOf()

RexxObject * RexxClass::isSubclassOf ( RexxClass other)

A stub to test compatibility of two classes.

Parameters
otherThe class for the superclass test.
Returns
True if the class is a subclass of the argument class (or IS the argument class).

Definition at line 1563 of file ClassClass.cpp.

References ARG_ONE, isCompatibleWith(), requiredArgument(), TheFalseObject, and TheTrueObject.

Referenced by RexxMemory::createImage().

◆ live()

void RexxClass::live ( size_t  liveMark)
virtual

◆ liveGeneral()

◆ makeProxy()

RexxObject * RexxClass::makeProxy ( RexxEnvelope envelope)
virtual

Reimplemented from RexxInternalObject.

Definition at line 120 of file ClassClass.cpp.

References RexxString::getStringData(), id, and new_proxy().

◆ mergeSuperClassScopes()

void RexxClass::mergeSuperClassScopes ( RexxBehaviour target_instance_behaviour)

Merge the scopes from the superclasses into a target primitive class.

Parameters
target_instance_behaviourThe target behavior to update.

Definition at line 1044 of file ClassClass.cpp.

References RexxBehaviour::addScope(), RexxBehaviour::checkScope(), RexxArray::get(), instanceBehaviour, instanceSuperClasses, RexxBehaviour::merge(), mergeSuperClassScopes(), RexxArray::size(), and TheNilObject.

Referenced by mergeSuperClassScopes(), and subClassable().

◆ method()

◆ methodDictionaryCreate()

◆ methodDictionaryMerge()

◆ methods()

◆ mixinclass()

RexxClass * RexxClass::mixinclass ( RexxString mixin_id,
RexxClass meta_class,
RexxTable enhancing_class_methods 
)

◆ newRexx()

◆ notEqual()

RexxObject * RexxClass::notEqual ( RexxObject other)

◆ operator delete() [1/3]

void RexxClass::operator delete ( void *  )
inline

Definition at line 53 of file ClassClass.hpp.

◆ operator delete() [2/3]

void RexxClass::operator delete ( void *  ,
size_t  ,
const char *  ,
RexxBehaviour ,
RexxBehaviour  
)
inline

Definition at line 55 of file ClassClass.hpp.

◆ operator delete() [3/3]

void RexxClass::operator delete ( void *  ,
void *   
)
inline

Definition at line 54 of file ClassClass.hpp.

◆ operator new() [1/2]

void* RexxClass::operator new ( size_t  size,
void *  ptr 
)
inline

Definition at line 52 of file ClassClass.hpp.

◆ operator new() [2/2]

void * RexxClass::operator new ( size_t  size,
size_t  size1,
const char *  className,
RexxBehaviour class_behaviour,
RexxBehaviour instanceBehaviour 
)

◆ parentHasUninitDefined()

bool RexxClass::parentHasUninitDefined ( )
inline

Definition at line 122 of file ClassClass.hpp.

References classFlags, and PARENT_HAS_UNINIT.

Referenced by inherit(), mixinclass(), and subclass().

◆ processNewArgs()

void RexxClass::processNewArgs ( RexxObject **  arg_array,
size_t  argCount,
RexxObject ***  init_args,
size_t *  remainderSize,
size_t  required,
RexxObject **  argument1,
RexxObject **  argument2 
)
static

◆ queryMixinClass()

RexxInteger * RexxClass::queryMixinClass ( )

Definition at line 245 of file ClassClass.cpp.

References isMixinClass(), TheFalseObject, and TheTrueObject.

Referenced by RexxMemory::createImage().

◆ removeClassMethod()

void RexxClass::removeClassMethod ( RexxString method_name)

Remove a class method from a class and all of its class methods.

Parameters
method_nameThe target method name.

Definition at line 769 of file ClassClass.cpp.

References RexxInternalObject::behaviour, RexxBehaviour::deleteMethod(), RexxArray::get(), getSubClasses(), and RexxArray::size().

◆ removeSubclass()

void RexxClass::removeSubclass ( RexxClass c)

Remove a subclass from the uninherit list after an uninherit operation.

Parameters
cThe class to remove.

Definition at line 1305 of file ClassClass.cpp.

References RexxList::firstIndex(), WeakReference::get(), RexxList::getValue(), LIST_END, RexxList::nextIndex(), RexxList::removeIndex(), and subClasses.

Referenced by uninherit().

◆ setHasUninitDefined()

void RexxClass::setHasUninitDefined ( )
inline

Definition at line 118 of file ClassClass.hpp.

References classFlags, and HAS_UNINIT.

Referenced by defineMethod(), defineMethods(), methodDictionaryMerge(), newRexx(), and subclass().

◆ setInitialFlagState()

void RexxClass::setInitialFlagState ( )
inline

Definition at line 121 of file ClassClass.hpp.

References classFlags, and HAS_UNINIT.

Referenced by newRexx().

◆ setInstanceBehaviour()

void RexxClass::setInstanceBehaviour ( RexxBehaviour b)

Definition at line 294 of file ClassClass.cpp.

References instanceBehaviour, and OrefSet.

Referenced by RexxBehaviour::restoreClass().

◆ setMetaClass() [1/2]

void RexxClass::setMetaClass ( )
inline

Definition at line 128 of file ClassClass.hpp.

References classFlags, and META_CLASS.

Referenced by subClassable().

◆ setMetaClass() [2/2]

◆ setMixinClass()

void RexxClass::setMixinClass ( )
inline

Definition at line 125 of file ClassClass.hpp.

References classFlags, and MIXIN.

Referenced by mixinclass().

◆ setNonPrimitive()

void RexxClass::setNonPrimitive ( )
inline

Definition at line 126 of file ClassClass.hpp.

References classFlags, and PRIMITIVE_CLASS.

◆ setParentHasUninitDefined()

void RexxClass::setParentHasUninitDefined ( )
inline

Definition at line 123 of file ClassClass.hpp.

References classFlags, and PARENT_HAS_UNINIT.

Referenced by inherit(), mixinclass(), and subclass().

◆ setRexxDefined()

RexxObject * RexxClass::setRexxDefined ( void  )

Definition at line 262 of file ClassClass.cpp.

References classFlags, OREF_NULL, and REXX_DEFINED.

Referenced by RexxMemory::createImage().

◆ strictEqual()

RexxObject * RexxClass::strictEqual ( RexxObject other)

Definition at line 164 of file ClassClass.cpp.

References equal().

Referenced by RexxMemory::createImage().

◆ subclass()

◆ subClassable() [1/2]

void RexxClass::subClassable ( bool  restricted)

Initialize a base Rexx class.

Parameters
restrictedWhether we should turn the RexxRestricted flag on at this time. Some classes get additional customization after initial creation, so we delay setting this attribute until the class is fully constructed.

Definition at line 432 of file ClassClass.cpp.

References RexxArray::addLast(), RexxBehaviour::addScope(), baseClass, RexxInternalObject::behaviour, classFlags, classMethodDictionary, classSuperClasses, getBehaviourDictionary(), getInstanceBehaviourDictionary(), instanceBehaviour, instanceMethodDictionary, instanceSuperClasses, RexxBehaviour::merge(), metaClass, metaClassMethodDictionary, metaClassScopes, new_array(), new_list(), OrefSet, PRIMITIVE_CLASS, setMetaClass(), RexxBehaviour::setOwningClass(), subClasses, TheClassBehaviour, TheClassClass, TheIntegerClass, TheNumberStringClass, TheObjectBehaviour, and TheObjectClass.

◆ subClassable() [2/2]

void RexxClass::subClassable ( RexxClass superClass,
bool  restricted 
)

Initialize a base Rexx class that inherits from a primitive class other than Object.

Parameters
superClassThe immediate superclass of the created class.
restrictedWhether we should turn the RexxRestricted flag on at this time. Some classes get additional customization after initial creation, so we delay setting this attribute until the class is fully constructed.

Definition at line 564 of file ClassClass.cpp.

References RexxBehaviour::addScope(), addSubClass(), baseClass, RexxInternalObject::behaviour, classFlags, classMethodDictionary, classSuperClasses, getBehaviourDictionary(), getInstanceBehaviourDictionary(), instanceBehaviour, instanceMethodDictionary, instanceSuperClasses, RexxBehaviour::merge(), mergeSuperClassScopes(), metaClass, metaClassMethodDictionary, metaClassScopes, new_array(), new_list(), OrefSet, PRIMITIVE_CLASS, RexxBehaviour::setOwningClass(), subClasses, TheClassBehaviour, TheClassClass, and TheObjectClass.

◆ unflatten()

RexxObject * RexxClass::unflatten ( RexxEnvelope envelope)
virtual

Reimplemented from RexxVirtualBase.

Definition at line 112 of file ClassClass.cpp.

◆ uninherit()

◆ updateInstanceSubClasses()

◆ updateSubClasses()

Member Data Documentation

◆ baseClass

RexxClass* RexxClass::baseClass
protected

Definition at line 158 of file ClassClass.hpp.

Referenced by getBaseClass(), live(), liveGeneral(), mixinclass(), newRexx(), and subClassable().

◆ classFlags

◆ classInstance

RexxClass * RexxClass::classInstance = OREF_NULL
static

Definition at line 136 of file ClassClass.hpp.

◆ classMethodDictionary

RexxTable* RexxClass::classMethodDictionary
protected

◆ classSuperClasses

RexxArray* RexxClass::classSuperClasses
protected

◆ id

RexxString* RexxClass::id ( void  )
protected

Definition at line 150 of file ClassClass.hpp.

Referenced by defaultName(), getId(), makeProxy(), newRexx(), and operator new().

◆ instanceBehaviour

◆ instanceMethodDictionary

RexxTable* RexxClass::instanceMethodDictionary
protected

◆ instanceSuperClasses

◆ metaClass

RexxArray* RexxClass::metaClass
protected

◆ metaClassMethodDictionary

RexxArray* RexxClass::metaClassMethodDictionary
protected

Definition at line 161 of file ClassClass.hpp.

Referenced by live(), liveGeneral(), newRexx(), setMetaClass(), subclass(), and subClassable().

◆ metaClassScopes

RexxIdentityTable* RexxClass::metaClassScopes
protected

Definition at line 162 of file ClassClass.hpp.

Referenced by live(), liveGeneral(), newRexx(), setMetaClass(), subclass(), and subClassable().

◆ subClasses

RexxList* RexxClass::subClasses
protected

The documentation for this class was generated from the following files: