ooRexx  4.2.0-source
About: ooRexx (Open Object Rexx) is a free implementation of Object Rexx. Object Rexx is an enhancement of the classic Rexx interpreter; a full-featured programming language with a human-oriented syntax.
  Fossies Dox: ooRexx-4.2.0-source.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

RexxInternalObject Class Reference

#include <ObjectClass.hpp>

Inheritance diagram for RexxInternalObject:
[legend]
Collaboration diagram for RexxInternalObject:
[legend]

Public Member Functions

void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, 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 206 of file ObjectClass.hpp.

Constructor & Destructor Documentation

◆ RexxInternalObject() [1/2]

RexxInternalObject::RexxInternalObject ( )
inline

Definition at line 214 of file ObjectClass.hpp.

Referenced by getObjectHeaderSize().

◆ RexxInternalObject() [2/2]

RexxInternalObject::RexxInternalObject ( RESTORETYPE  restoreType)
inline

Definition at line 219 of file ObjectClass.hpp.

◆ ~RexxInternalObject()

virtual RexxInternalObject::~RexxInternalObject ( )
inlinevirtual

Definition at line 220 of file ObjectClass.hpp.

Member Function Documentation

◆ clearObject() [1/2]

◆ clearObject() [2/2]

void RexxInternalObject::clearObject ( size_t  l)
inline

Definition at line 232 of file ObjectClass.hpp.

References getObjectDataSpace(), and getObjectHeaderSize().

◆ clearObjectMark()

void RexxInternalObject::clearObjectMark ( )
inline

Definition at line 249 of file ObjectClass.hpp.

References ObjectHeader::clearObjectMark(), and header.

Referenced by RexxMemory::saveImageMark().

◆ clone()

◆ copy()

◆ copyIntoTail()

void RexxInternalObject::copyIntoTail ( RexxCompoundTail buffer)
virtual

Reimplemented in RexxObject, RexxString, and RexxInteger.

Definition at line 1054 of file ObjectClass.cpp.

◆ doubleValue()

bool RexxInternalObject::doubleValue ( double &  result)
virtual

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

Definition at line 938 of file ObjectClass.cpp.

◆ evaluate()

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

◆ getHashValue()

virtual HashCode RexxInternalObject::getHashValue ( )
inlinevirtual

◆ getObjectDataSize()

size_t RexxInternalObject::getObjectDataSize ( )
inline

Definition at line 228 of file ObjectClass.hpp.

References getObjectHeaderSize(), and getObjectSize().

Referenced by clearObject().

◆ getObjectDataSpace()

void* RexxInternalObject::getObjectDataSpace ( )
inline

Definition at line 229 of file ObjectClass.hpp.

References getObjectHeaderSize().

Referenced by clearObject().

◆ getObjectHeaderSize()

static size_t RexxInternalObject::getObjectHeaderSize ( )
inlinestatic

Definition at line 227 of file ObjectClass.hpp.

References RexxInternalObject().

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

◆ getObjectSize()

◆ getObjectType()

RexxBehaviour* RexxInternalObject::getObjectType ( )
inline

Definition at line 261 of file ObjectClass.hpp.

References behaviour.

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

◆ getObjectTypeNumber()

size_t RexxInternalObject::getObjectTypeNumber ( )

Definition at line 2058 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 RexxObject, RexxString, and RexxClass.

Definition at line 275 of file ObjectClass.hpp.

References getHashValue().

◆ hasNoReferences()

bool RexxInternalObject::hasNoReferences ( )
inline

Definition at line 242 of file ObjectClass.hpp.

References ObjectHeader::hasNoReferences(), and header.

Referenced by RexxMemory::mark().

◆ hasReferences()

bool RexxInternalObject::hasReferences ( )
inline

◆ hasUninit()

◆ identityHash()

HashCode RexxInternalObject::identityHash ( )
inline

Definition at line 278 of file ObjectClass.hpp.

References HASHOREF().

Referenced by getHashValue(), RexxObject::identityHashRexx(), and RexxNilObject::RexxNilObject().

◆ 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 RexxObject, RexxNumberString, and RexxInteger.

Definition at line 255 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 RexxObject, RexxNumberString, and RexxInteger.

Definition at line 295 of file ObjectClass.cpp.

References OREF_NULL.

◆ integerValue()

RexxInteger * RexxInternalObject::integerValue ( size_t  precision)
virtual

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

Definition at line 946 of file ObjectClass.cpp.

References TheNilObject.

◆ isBaseClass()

◆ isEqual()

bool RexxInternalObject::isEqual ( RexxObject other)
virtual

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

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 RexxObject, RexxNumberString, and RexxInteger.

Definition at line 212 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 251 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 247 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 262 of file ObjectClass.hpp.

References behaviour.

◆ isObjectType() [2/2]

bool RexxInternalObject::isObjectType ( size_t  t)
inline

Definition at line 263 of file ObjectClass.hpp.

References getObjectTypeNumber().

◆ isOldSpace()

◆ isPrimitive()

bool RexxInternalObject::isPrimitive ( )
inline

Definition at line 245 of file ObjectClass.hpp.

References header, and ObjectHeader::isPrimitive().

Referenced by RexxMessage::newRexx().

◆ isProxyObject()

bool RexxInternalObject::isProxyObject ( )
inline

Definition at line 257 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 264 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 158 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 RexxObject, RexxString, RexxNumberString, and RexxInteger.

Definition at line 437 of file ObjectClass.cpp.

◆ makeArray()

RexxArray * RexxInternalObject::makeArray ( void  )
virtual

◆ makeProxiedObject()

void RexxInternalObject::makeProxiedObject ( )
inline

Definition at line 256 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 RexxMemory, RexxClass, and RexxHashTableCollection.

Definition at line 106 of file ObjectClass.cpp.

References new_proxy(), and TheNilObject.

Referenced by RexxEnvelope::flattenReference().

◆ makeString()

RexxString * RexxInternalObject::makeString ( )
virtual

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

Definition at line 1045 of file ObjectClass.cpp.

References TheNilObject.

◆ numberString()

RexxNumberString * RexxInternalObject::numberString ( )
virtual

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

Definition at line 955 of file ObjectClass.cpp.

References OREF_NULL.

◆ numberValue() [1/2]

bool RexxInternalObject::numberValue ( wholenumber_t result)
virtual

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

Definition at line 930 of file ObjectClass.cpp.

◆ numberValue() [2/2]

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

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

Definition at line 922 of file ObjectClass.cpp.

◆ operator delete() [1/2]

void RexxInternalObject::operator delete ( void *  )
inline

Definition at line 212 of file ObjectClass.hpp.

◆ operator delete() [2/2]

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

Definition at line 213 of file ObjectClass.hpp.

◆ operator new() [1/3]

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

Definition at line 211 of file ObjectClass.hpp.

◆ operator new() [2/3]

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

Definition at line 490 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 
)

Definition at line 503 of file ObjectClass.cpp.

References new_object(), and setBehaviour().

◆ operator RexxObject *()

RexxInternalObject::operator RexxObject * ( )
inline

Definition at line 222 of file ObjectClass.hpp.

◆ primitiveMakeString()

RexxString * RexxInternalObject::primitiveMakeString ( )
virtual

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

Definition at line 1062 of file ObjectClass.cpp.

References TheNilObject.

◆ printObject()

void RexxInternalObject::printObject ( )

Definition at line 2522 of file ObjectClass.cpp.

References getObjectTypeNumber().

◆ removedUninit()

void RexxInternalObject::removedUninit ( )

Definition at line 2066 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 236 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 235 of file ObjectClass.hpp.

References header, and ObjectHeader::initHeader().

◆ setNewSpace()

void RexxInternalObject::setNewSpace ( )
inline

Definition at line 254 of file ObjectClass.hpp.

References header, and ObjectHeader::setNewSpace().

Referenced by RexxEnvelope::copyBuffer().

◆ setNonPrimitive()

void RexxInternalObject::setNonPrimitive ( )
inline

Definition at line 244 of file ObjectClass.hpp.

References header, and ObjectHeader::setNonPrimitive().

Referenced by RexxMemory::saveImageMark().

◆ setObjectLive()

void RexxInternalObject::setObjectLive ( size_t  markword)
inline

◆ setObjectMark()

void RexxInternalObject::setObjectMark ( size_t  markword)
inline

Definition at line 248 of file ObjectClass.hpp.

References header, and ObjectHeader::setObjectMark().

◆ setObjectSize()

◆ setOldSpace()

void RexxInternalObject::setOldSpace ( )
inline

Definition at line 255 of file ObjectClass.hpp.

References header, and ObjectHeader::setOldSpace().

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

◆ setPrimitive()

void RexxInternalObject::setPrimitive ( )
inline

Definition at line 243 of file ObjectClass.hpp.

References header, and ObjectHeader::setPrimitive().

Referenced by RexxMemory::saveImageMark().

◆ setVirtualFunctions()

void RexxInternalObject::setVirtualFunctions ( void *  t)
inline

◆ stringValue()

RexxString * RexxInternalObject::stringValue ( )
virtual

◆ truthValue()

bool RexxInternalObject::truthValue ( int  errorCode)
virtual

Reimplemented in RexxObject, RexxString, RexxNumberString, and RexxInteger.

Definition at line 457 of file ObjectClass.cpp.

References reportException().

◆ uninit()

virtual void RexxInternalObject::uninit ( void  )
inlinevirtual

Reimplemented in RexxObject.

Definition at line 274 of file ObjectClass.hpp.

◆ unsignedNumberValue() [1/2]

bool RexxInternalObject::unsignedNumberValue ( stringsize_t result)
virtual

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

Definition at line 914 of file ObjectClass.cpp.

◆ unsignedNumberValue() [2/2]

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

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

Definition at line 906 of file ObjectClass.cpp.

Member Data Documentation

◆ behaviour

RexxBehaviour* RexxInternalObject::behaviour

Definition at line 306 of file ObjectClass.hpp.

Referenced by RexxObject::behaviourObject(), callOperatorMethod(), RexxObject::classObject(), RexxVariableDictionary::copy(), RexxObject::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(), MemorySegment::markAllObjects(), RexxMemory::markObjectsMain(), RexxObject::messageSend(), RexxObject::methodLookup(), RexxClass::methods(), RexxClass::newRexx(), RexxClass::operator new(), RexxMemory::orphanCheckMark(), RexxObject::processUnknown(), RexxEnvelope::puff(), RexxClass::removeClassMethod(), RexxObject::requestRexx(), RexxMemory::restoreImage(), RexxBehaviour::RexxBehaviour(), RexxMemory::saveImage(), RexxMemory::saveImageMark(), RexxQueue::sectionSubclass(), RexxList::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: