RexxInternalObject Class Reference

#include <ObjectClass.hpp>

Inheritance diagram for RexxInternalObject:
[legend]

Public Member Functions

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 RexxObjectmakeProxy (RexxEnvelope *)
 
virtual RexxObjectcopy ()
 
virtual RexxObjectevaluate (RexxActivation *, RexxExpressionStack *)
 
virtual RexxObjectgetValue (RexxActivation *)
 
virtual RexxObjectgetValue (RexxVariableDictionary *)
 
virtual RexxObjectgetRealValue (RexxActivation *)
 
virtual RexxObjectgetRealValue (RexxVariableDictionary *)
 
virtual void uninit ()
 
virtual HashCode hash ()
 
virtual HashCode getHashValue ()
 
HashCode identityHash ()
 
virtual bool truthValue (int)
 
virtual bool logicalValue (logical_t &)
 
virtual RexxStringmakeString ()
 
virtual void copyIntoTail (RexxCompoundTail *buffer)
 
virtual RexxStringprimitiveMakeString ()
 
virtual RexxArraymakeArray ()
 
virtual RexxStringstringValue ()
 
virtual RexxIntegerintegerValue (size_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)
 
virtual RexxNumberStringnumberString ()
 
virtual bool isEqual (RexxObject *)
 
virtual bool isInstanceOf (RexxClass *)
 
virtual RexxMethodinstanceMethod (RexxString *)
 
virtual RexxSupplierinstanceMethods (RexxClass *)
 
void hasUninit ()
 
void removedUninit ()
 
void printObject ()
 
RexxObjectclone ()
 
- Public Member Functions inherited from RexxVirtualBase
virtual void live (size_t)
 
virtual void liveGeneral (int reason)
 
virtual void flatten (RexxEnvelope *)
 
virtual RexxObjectunflatten (RexxEnvelope *)
 

Static Public Member Functions

static size_t getObjectHeaderSize ()
 

Public Attributes

ObjectHeader header
 
RexxBehaviourbehaviour
 

Additional Inherited Members

- Protected Member Functions inherited from RexxVirtualBase
virtual ~RexxVirtualBase ()
 
virtual void baseVirtual ()
 

Detailed Description

Definition at line 218 of file ObjectClass.hpp.

Constructor & Destructor Documentation

◆ RexxInternalObject() [1/2]

RexxInternalObject::RexxInternalObject ( )
inline

Definition at line 226 of file ObjectClass.hpp.

Referenced by getObjectHeaderSize().

◆ RexxInternalObject() [2/2]

RexxInternalObject::RexxInternalObject ( RESTORETYPE  restoreType)
inline

Definition at line 231 of file ObjectClass.hpp.

◆ ~RexxInternalObject()

virtual RexxInternalObject::~RexxInternalObject ( )
inlinevirtual

Definition at line 232 of file ObjectClass.hpp.

Member Function Documentation

◆ clearObject() [1/2]

◆ clearObject() [2/2]

void RexxInternalObject::clearObject ( size_t  l)
inline

Definition at line 244 of file ObjectClass.hpp.

References getObjectDataSpace(), and getObjectHeaderSize().

◆ clearObjectMark()

void RexxInternalObject::clearObjectMark ( )
inline

Definition at line 261 of file ObjectClass.hpp.

References ObjectHeader::clearObjectMark(), and header.

◆ clone()

◆ copy()

◆ copyIntoTail()

void RexxInternalObject::copyIntoTail ( RexxCompoundTail buffer)
virtual

Reimplemented in RexxInteger, RexxObject, and RexxString.

Definition at line 1101 of file ObjectClass.cpp.

◆ doubleValue()

bool RexxInternalObject::doubleValue ( double &  result)
virtual

Reimplemented in RexxInteger, RexxNumberString, RexxObject, RexxStem, and RexxString.

Definition at line 985 of file ObjectClass.cpp.

◆ evaluate()

virtual RexxObject* RexxInternalObject::evaluate ( RexxActivation ,
RexxExpressionStack  
)
inlinevirtual

Reimplemented in RexxSourceLiteral, RexxInteger, RexxNumberString, RexxString, RexxCompoundVariable, RexxDotVariable, RexxExpressionFunction, RexxExpressionList, RexxExpressionLogical, RexxExpressionMessage, RexxBinaryOperator, RexxUnaryOperator, RexxStemVariable, and RexxParseVariable.

Definition at line 281 of file ObjectClass.hpp.

References OREF_NULL.

Referenced by RexxExpressionMessage::assign(), RexxInstructionDo::controlSetup(), RexxExpressionFunction::evaluate(), RexxExpressionList::evaluate(), RexxExpressionLogical::evaluate(), RexxExpressionMessage::evaluate(), RexxBinaryOperator::evaluate(), RexxUnaryOperator::evaluate(), RexxInstructionAddress::execute(), RexxInstructionAssignment::execute(), RexxInstructionCall::execute(), RexxInstructionCommand::execute(), RexxInstructionDo::execute(), RexxInstructionExit::execute(), RexxInstructionForward::execute(), RexxInstructionGuard::execute(), RexxInstructionIf::execute(), RexxInstructionInterpret::execute(), RexxInstructionMessage::execute(), RexxInstructionNumeric::execute(), RexxInstructionOptions::execute(), RexxInstructionParse::execute(), RexxInstructionQueue::execute(), RexxInstructionRaise::execute(), RexxInstructionReply::execute(), RexxInstructionReturn::execute(), RexxInstructionSay::execute(), RexxInstructionSignal::execute(), RexxInstructionTrace::execute(), RexxInstructionUseStrict::executeNamedArguments(), RexxInstructionUseStrict::executePositionalArguments(), RexxVariableReference::list(), RexxTrigger::parse(), RexxInstructionDo::untilCondition(), and RexxInstructionDo::whileCondition().

◆ getHashValue()

virtual HashCode RexxInternalObject::getHashValue ( )
inlinevirtual

◆ getObjectDataSize()

size_t RexxInternalObject::getObjectDataSize ( )
inline

Definition at line 240 of file ObjectClass.hpp.

References getObjectHeaderSize(), and getObjectSize().

Referenced by clearObject().

◆ getObjectDataSpace()

void* RexxInternalObject::getObjectDataSpace ( )
inline

Definition at line 241 of file ObjectClass.hpp.

References getObjectHeaderSize().

Referenced by clearObject().

◆ getObjectHeaderSize()

static size_t RexxInternalObject::getObjectHeaderSize ( )
inlinestatic

Definition at line 239 of file ObjectClass.hpp.

References RexxInternalObject().

Referenced by clearObject(), getObjectDataSize(), and getObjectDataSpace().

◆ getObjectSize()

◆ getObjectType()

RexxBehaviour* RexxInternalObject::getObjectType ( )
inline

Definition at line 273 of file ObjectClass.hpp.

References behaviour.

Referenced by isSameType(), and RexxMemory::objectReferenceOK().

◆ getObjectTypeNumber()

size_t RexxInternalObject::getObjectTypeNumber ( )

Definition at line 2287 of file ObjectClass.cpp.

References behaviour, and RexxBehaviour::getClassType().

Referenced by isObjectType(), MemoryStats::logObject(), and printObject().

◆ getRealValue() [1/2]

virtual RexxObject* RexxInternalObject::getRealValue ( RexxActivation )
inlinevirtual

◆ getRealValue() [2/2]

virtual RexxObject* RexxInternalObject::getRealValue ( RexxVariableDictionary )
inlinevirtual

◆ getValue() [1/2]

◆ getValue() [2/2]

virtual RexxObject* RexxInternalObject::getValue ( RexxVariableDictionary )
inlinevirtual

◆ hash()

virtual HashCode RexxInternalObject::hash ( )
inlinevirtual

Reimplemented in RexxClass, RexxObject, and RexxString.

Definition at line 287 of file ObjectClass.hpp.

References getHashValue().

◆ hasNoReferences()

bool RexxInternalObject::hasNoReferences ( )
inline

Definition at line 254 of file ObjectClass.hpp.

References ObjectHeader::hasNoReferences(), and header.

Referenced by RexxMemory::mark().

◆ hasReferences()

bool RexxInternalObject::hasReferences ( )
inline

Definition at line 253 of file ObjectClass.hpp.

References ObjectHeader::hasReferences(), and header.

Referenced by RexxMemory::killOrphans(), and RexxMemory::restoreImage().

◆ hasUninit()

◆ identityHash()

HashCode RexxInternalObject::identityHash ( )
inline

◆ instanceMethod()

RexxMethod * RexxInternalObject::instanceMethod ( RexxString method_name)
virtual

Retrieve the method instance for an object's defined method.

Parameters
method_nameThe method name.
Returns
The method object that implements the object method.

Reimplemented in RexxInteger, RexxNumberString, and RexxObject.

Definition at line 259 of file ObjectClass.cpp.

References TheNilObject.

◆ instanceMethods()

RexxSupplier * RexxInternalObject::instanceMethods ( RexxClass class_object)
virtual

Return a supplier containing the methods implemented by an object. Depending on the argument, this is either A) all of the methods, B) just the explicitly set instance methods, or C) the methods provided by a given class.

Parameters
class_objectThe target class object (optional).
Returns
A supplier with the appropriate method set.

Reimplemented in RexxInteger, RexxNumberString, and RexxObject.

Definition at line 300 of file ObjectClass.cpp.

References OREF_NULL.

◆ integerValue()

RexxInteger * RexxInternalObject::integerValue ( size_t  precision)
virtual

Reimplemented in RexxString, RexxInteger, RexxNumberString, RexxObject, and RexxStem.

Definition at line 993 of file ObjectClass.cpp.

References TheNilObject.

◆ isBaseClass()

◆ isEqual()

bool RexxInternalObject::isEqual ( RexxObject other)
virtual

Reimplemented in RexxClass, RexxInteger, RexxNumberString, RexxObject, and RexxString.

Definition at line 121 of file ObjectClass.cpp.

◆ isInstanceOf()

bool RexxInternalObject::isInstanceOf ( RexxClass other)
virtual

Test if an internal object is an instance of another class.

Parameters
otherThe test class.
Returns
Always returns false.

Reimplemented in RexxInteger, RexxNumberString, and RexxObject.

Definition at line 216 of file ObjectClass.cpp.

◆ isNewSpace()

bool RexxInternalObject::isNewSpace ( )
inline

◆ isNonPrimitive()

bool RexxInternalObject::isNonPrimitive ( )
inline

◆ isObjectDead()

bool RexxInternalObject::isObjectDead ( size_t  mark)
inline

Definition at line 263 of file ObjectClass.hpp.

References header, and ObjectHeader::isObjectDead().

Referenced by RexxMemory::checkUninit().

◆ isObjectLive()

bool RexxInternalObject::isObjectLive ( size_t  mark)
inline

◆ isObjectMarked()

bool RexxInternalObject::isObjectMarked ( size_t  markword)
inline

Definition at line 259 of file ObjectClass.hpp.

References header, and ObjectHeader::isObjectMarked().

Referenced by RexxSaveStack::live().

◆ isObjectType() [1/2]

bool RexxInternalObject::isObjectType ( RexxBehaviour b)
inline

Definition at line 274 of file ObjectClass.hpp.

References behaviour.

◆ isObjectType() [2/2]

bool RexxInternalObject::isObjectType ( size_t  t)
inline

Definition at line 275 of file ObjectClass.hpp.

References getObjectTypeNumber().

◆ isOldSpace()

◆ isPrimitive()

bool RexxInternalObject::isPrimitive ( )
inline

Definition at line 257 of file ObjectClass.hpp.

References header, and ObjectHeader::isPrimitive().

Referenced by RexxMessage::newRexx().

◆ isProxyObject()

bool RexxInternalObject::isProxyObject ( )
inline

Definition at line 269 of file ObjectClass.hpp.

References header, and ObjectHeader::isProxyObject().

Referenced by RexxEnvelope::flattenReference(), and RexxString::unflatten().

◆ isSameType()

bool RexxInternalObject::isSameType ( RexxInternalObject o)
inline

Definition at line 276 of file ObjectClass.hpp.

References behaviour, and getObjectType().

Referenced by RexxInteger::comp().

◆ isSubClassOrEnhanced()

bool RexxInternalObject::isSubClassOrEnhanced ( )

Test if an object instance is an enhanced version of a primitive class or a subclass of the primitive class.

Returns
true if the object is a subclass instance or an enhanced one-off.

Definition at line 162 of file ObjectClass.cpp.

References behaviour, and RexxBehaviour::isNonPrimitive().

Referenced by RexxInteger::isEqual(), and RexxNumberString::isEqual().

◆ logicalValue()

bool RexxInternalObject::logicalValue ( logical_t result)
virtual

Convert an object to a logical value without raising an error.

Parameters
resultThe converted value.
Returns
true if this converted ok, false for an invalid logical.

Reimplemented in RexxInteger, RexxNumberString, RexxObject, and RexxString.

Definition at line 442 of file ObjectClass.cpp.

◆ makeArray()

RexxArray * RexxInternalObject::makeArray ( void  )
virtual

◆ makeProxiedObject()

void RexxInternalObject::makeProxiedObject ( )
inline

Definition at line 268 of file ObjectClass.hpp.

References header, and ObjectHeader::makeProxiedObject().

Referenced by RexxString::newProxy(), and RexxClass::operator new().

◆ makeProxy()

RexxObject * RexxInternalObject::makeProxy ( RexxEnvelope envelope)
virtual

Reimplemented in RexxClass, RexxHashTableCollection, and RexxMemory.

Definition at line 106 of file ObjectClass.cpp.

References new_proxy(), and TheNilObject.

Referenced by RexxEnvelope::flattenReference().

◆ makeString()

RexxString * RexxInternalObject::makeString ( )
virtual

Reimplemented in RexxInteger, RexxMutableBuffer, RexxNumberString, RexxObject, StackFrameClass, and RexxString.

Definition at line 1092 of file ObjectClass.cpp.

References TheNilObject.

◆ numberString()

RexxNumberString * RexxInternalObject::numberString ( )
virtual

Reimplemented in RexxInteger, RexxNumberString, RexxObject, RexxStem, and RexxString.

Definition at line 1002 of file ObjectClass.cpp.

References OREF_NULL.

◆ numberValue() [1/2]

bool RexxInternalObject::numberValue ( wholenumber_t result)
virtual

Reimplemented in RexxInteger, RexxNumberString, RexxObject, RexxStem, and RexxString.

Definition at line 977 of file ObjectClass.cpp.

◆ numberValue() [2/2]

bool RexxInternalObject::numberValue ( wholenumber_t result,
size_t  precision 
)
virtual

Reimplemented in RexxInteger, RexxNumberString, RexxObject, RexxStem, and RexxString.

Definition at line 969 of file ObjectClass.cpp.

◆ operator delete() [1/2]

void RexxInternalObject::operator delete ( void *  )
inline

Definition at line 224 of file ObjectClass.hpp.

◆ operator delete() [2/2]

void RexxInternalObject::operator delete ( void *  p,
void *  ptr 
)
inline

Definition at line 225 of file ObjectClass.hpp.

◆ operator new() [1/3]

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

Definition at line 223 of file ObjectClass.hpp.

◆ operator new() [2/3]

void * RexxInternalObject::operator new ( size_t  size,
RexxClass classObject 
)

Definition at line 495 of file ObjectClass.cpp.

References new_object(), and setBehaviour().

◆ operator new() [3/3]

void * RexxInternalObject::operator new ( size_t  size,
RexxClass classObject,
RexxObject **  arguments,
size_t  argCount,
size_t  named_argCount 
)

Definition at line 508 of file ObjectClass.cpp.

References new_object(), and setBehaviour().

◆ operator RexxObject *()

RexxInternalObject::operator RexxObject * ( )
inline

Definition at line 234 of file ObjectClass.hpp.

◆ primitiveMakeString()

RexxString * RexxInternalObject::primitiveMakeString ( )
virtual

Reimplemented in RexxInteger, RexxMutableBuffer, RexxNumberString, RexxObject, and RexxString.

Definition at line 1109 of file ObjectClass.cpp.

References TheNilObject.

◆ printObject()

void RexxInternalObject::printObject ( )

Definition at line 2770 of file ObjectClass.cpp.

References getObjectTypeNumber().

◆ removedUninit()

void RexxInternalObject::removedUninit ( )

Definition at line 2295 of file ObjectClass.cpp.

References memoryObject, and RexxMemory::removeUninitObject().

◆ setBehaviour()

◆ setHasNoReferences()

◆ setHasReferences()

◆ setInitHeader() [1/2]

void RexxInternalObject::setInitHeader ( size_t  markword)
inline

Definition at line 248 of file ObjectClass.hpp.

References header, and ObjectHeader::initHeader().

◆ setInitHeader() [2/2]

void RexxInternalObject::setInitHeader ( size_t  s,
size_t  markword 
)
inline

Definition at line 247 of file ObjectClass.hpp.

References header, and ObjectHeader::initHeader().

◆ setNewSpace()

void RexxInternalObject::setNewSpace ( )
inline

Definition at line 266 of file ObjectClass.hpp.

References header, and ObjectHeader::setNewSpace().

Referenced by RexxEnvelope::copyBuffer().

◆ setNonPrimitive()

void RexxInternalObject::setNonPrimitive ( )
inline

Definition at line 256 of file ObjectClass.hpp.

References header, and ObjectHeader::setNonPrimitive().

◆ setObjectLive()

void RexxInternalObject::setObjectLive ( size_t  markword)
inline

◆ setObjectMark()

void RexxInternalObject::setObjectMark ( size_t  markword)
inline

Definition at line 260 of file ObjectClass.hpp.

References header, and ObjectHeader::setObjectMark().

◆ setObjectSize()

◆ setOldSpace()

void RexxInternalObject::setOldSpace ( )
inline

Definition at line 267 of file ObjectClass.hpp.

References header, and ObjectHeader::setOldSpace().

Referenced by RexxMemory::restore(), and RexxBehaviour::restore().

◆ setPrimitive()

void RexxInternalObject::setPrimitive ( )
inline

Definition at line 255 of file ObjectClass.hpp.

References header, and ObjectHeader::setPrimitive().

◆ setVirtualFunctions()

void RexxInternalObject::setVirtualFunctions ( void *  t)
inline

◆ stringValue()

RexxString * RexxInternalObject::stringValue ( )
virtual

◆ truthValue()

bool RexxInternalObject::truthValue ( int  errorCode)
virtual

Reimplemented in RexxInteger, RexxNumberString, RexxObject, and RexxString.

Definition at line 462 of file ObjectClass.cpp.

References reportException().

◆ uninit()

virtual void RexxInternalObject::uninit ( void  )
inlinevirtual

Reimplemented in RexxObject.

Definition at line 286 of file ObjectClass.hpp.

◆ unsignedNumberValue() [1/2]

bool RexxInternalObject::unsignedNumberValue ( stringsize_t result)
virtual

Reimplemented in RexxInteger, RexxObject, RexxStem, RexxNumberString, and RexxString.

Definition at line 961 of file ObjectClass.cpp.

◆ unsignedNumberValue() [2/2]

bool RexxInternalObject::unsignedNumberValue ( stringsize_t result,
size_t  precision 
)
virtual

Reimplemented in RexxInteger, RexxObject, RexxStem, RexxNumberString, and RexxString.

Definition at line 953 of file ObjectClass.cpp.

Member Data Documentation

◆ behaviour

RexxBehaviour* RexxInternalObject::behaviour

Definition at line 318 of file ObjectClass.hpp.

Referenced by RexxObject::behaviourObject(), callOperatorMethod(), RexxObject::classObject(), RexxObject::copy(), RexxVariableDictionary::copy(), RexxEnvelope::copyBuffer(), RexxClass::createClassBehaviour(), RexxObject::defaultName(), RexxClass::defineClassMethod(), RexxMemory::defineKernelMethod(), RexxMemory::definePrivateKernelMethod(), RexxMemory::defineProtectedKernelMethod(), RexxObject::defMethod(), RexxObject::defMethods(), RexxClass::defmeths(), RexxClass::enhanced(), RexxClass::getBehaviourDictionary(), getObjectType(), getObjectTypeNumber(), RexxMemory::gutCheck(), RexxObject::hasMethod(), RexxClass::inherit(), RexxObject::instanceMethod(), RexxObject::instanceMethods(), isBaseClass(), RexxClass::isEqual(), isObjectType(), isSameType(), isSubClassOrEnhanced(), RexxMemory::killOrphans(), RexxMemory::mark(), RexxMemory::markObjectsMain(), RexxObject::messageSend(), RexxObject::methodLookup(), RexxClass::methods(), RexxClass::newRexx(), RexxClass::operator new(), RexxMemory::orphanCheckMark(), RexxObject::processUnknown(), RexxEnvelope::puff(), RexxClass::removeClassMethod(), RexxMemory::restoreImage(), RexxBehaviour::RexxBehaviour(), RexxBlock::RexxBlock(), RexxMemory::saveImage(), RexxMemory::saveImageMark(), RexxList::sectionSubclass(), RexxQueue::sectionSubclass(), RexxArray::sectionSubclass(), RexxMessage::send(), setBehaviour(), RexxMemory::setOref(), RexxClass::subclass(), RexxClass::subClassable(), RexxObject::superMethod(), RexxObject::superScope(), RexxObject::unsetMethod(), and RexxClass::updateSubClasses().

◆ header


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