RoutineClass Class Reference

#include <RoutineClass.hpp>

Inheritance diagram for RoutineClass:
[legend]

Public Member Functions

void * operator new (size_t)
 
void * operator new (size_t size, void *ptr)
 
 RoutineClass (RexxString *n, BaseCode *_code)
 
 RoutineClass (RexxString *name)
 
 RoutineClass (RexxString *name, RexxBuffer *source)
 
 RoutineClass (RexxString *name, const char *data, size_t length)
 
 RoutineClass (RexxString *name, RexxArray *source, size_t startLine=0, RexxString *programName=OREF_NULL)
 
 RoutineClass (RESTORETYPE restoreType)
 
void execute (RexxObject *, RexxObject *)
 
void live (size_t)
 
void liveGeneral (int reason)
 
void flatten (RexxEnvelope *)
 
void call (RexxActivity *, RexxString *, RexxObject **, size_t, size_t, RexxString *, RexxString *, int, ProtectedObject &)
 
void call (RexxActivity *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
 
void runProgram (RexxActivity *activity, RexxString *calltype, RexxString *environment, RexxObject **arguments, size_t argCount, size_t named_argCount, ProtectedObject &result)
 
void runProgram (RexxActivity *activity, RexxObject **arguments, size_t argCount, size_t named_argCount, ProtectedObject &result)
 
RexxObjectcallRexx (RexxObject **, size_t, size_t)
 
RexxObjectcallWithRexx (RexxArray *, RexxObject **, size_t)
 
RexxBuffersave ()
 
void save (PRXSTRING outBuffer)
 
void save (const char *filename)
 
RexxObjectsetSecurityManager (RexxObject *)
 
RoutineClassnewRexx (RexxObject **, size_t, size_t)
 
RoutineClassnewFileRexx (RexxString *)
 
RoutineClassloadExternalRoutine (RexxString *name, RexxString *descriptor)
 
- Public Member Functions inherited from BaseExecutable
RexxSourcegetSourceObject ()
 
BaseCodegetCode ()
 
RexxArraygetSource ()
 
PackageClassgetPackage ()
 
RexxArraysource ()
 
RexxClassfindClass (RexxString *className)
 
BaseExecutablesetSourceObject (RexxSource *s)
 
RexxStringgetName ()
 
void setName (RexxString *name)
 
- 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 RexxStringdefaultName ()
 
virtual RexxObjectunknown (RexxString *msg, RexxArray *args, RexxDirectory *named_args)
 
virtual RexxIntegerhasMethod (RexxString *msg)
 
bool hasUninitMethod ()
 
RexxObjectinit ()
 
void uninit ()
 
void live (size_t)
 
void liveGeneral (int reason)
 
void flatten (RexxEnvelope *)
 
RexxObjectcopy ()
 
HashCode hash ()
 
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 ()
 
RexxTextmakeText ()
 
void copyIntoTail (RexxCompoundTail *buffer)
 
RexxArraymakeArray ()
 
RexxStringstringValue ()
 
RexxTexttextValue ()
 
RexxStringrequestString ()
 
RexxStringrequestStringNoNOSTRING ()
 
RexxTextrequestText ()
 
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 isEqual (RexxObject *)
 
bool isInstanceOf (RexxClass *)
 
RexxObjectisInstanceOfRexx (RexxClass *)
 
RexxObjectisNilRexx ()
 
RexxMethodinstanceMethod (RexxString *)
 
RexxSupplierinstanceMethods (RexxClass *)
 
RexxMethodinstanceMethodRexx (RexxString *)
 
RexxSupplierinstanceMethodsRexx (RexxClass *)
 
RexxObjectdynamicTargetRexx (RexxObject **arguments, size_t argCount, size_t named_argCount)
 
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 dynamicTarget=true)
 
bool messageSend (RexxString *, RexxObject **, size_t, size_t, RexxObject *, ProtectedObject &, bool processUnknown=true, bool dynamicTarget=true)
 
RexxMethodcheckPrivate (RexxMethod *, RexxErrorCodes &)
 
RexxMethodcheckPackage (RexxMethod *, RexxErrorCodes &)
 
void processUnknown (RexxErrorCodes, 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 ()
 
void setInRexxPackage ()
 
bool isInRexxPackage ()
 
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 RexxObjectevaluate (RexxActivation *, RexxExpressionStack *)
 
virtual RexxObjectgetValue (RexxActivation *)
 
virtual RexxObjectgetValue (RexxVariableDictionary *)
 
virtual RexxObjectgetRealValue (RexxActivation *)
 
virtual RexxObjectgetRealValue (RexxVariableDictionary *)
 
virtual HashCode getHashValue ()
 
HashCode identityHash ()
 
virtual RexxStringprimitiveMakeString ()
 
virtual RexxTextprimitiveMakeText ()
 
virtual RexxObjectdynamicTarget (RexxObject **arguments, size_t count, size_t named_count)
 
void hasUninit ()
 
void removedUninit ()
 
void printObject ()
 
RexxObjectclone ()
 
- Public Member Functions inherited from RexxVirtualBase
virtual RexxObjectunflatten (RexxEnvelope *)
 

Static Public Member Functions

static RoutineClassrestore (RexxBuffer *, char *, size_t length)
 
static RoutineClassrestore (const char *data, size_t length)
 
static RoutineClassrestore (RexxString *fileName, RexxBuffer *buffer)
 
static RoutineClassrestoreFromMacroSpace (RexxString *name)
 
static RoutineClassrestore (RexxBuffer *buffer)
 
static RoutineClassrestore (RXSTRING *inData, RexxString *name)
 
static RoutineClassfromFile (RexxString *filename)
 
static RoutineClassnewRoutineObject (RexxString *, RexxObject *, RexxObject *, RexxSource *s, bool isBlock)
 
static RoutineClassnewRoutineObject (RexxString *, RexxArray *, RexxObject *)
 
static RoutineClassprocessInstore (PRXSTRING instore, RexxString *name)
 
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
 

Additional Inherited Members

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

Detailed Description

Definition at line 49 of file RoutineClass.hpp.

Constructor & Destructor Documentation

◆ RoutineClass() [1/6]

RoutineClass::RoutineClass ( RexxString name,
BaseCode codeObj 
)

Initialize a Routine object from a generated code object. Generally used for routines generated from ::ROUTINE directives.

Parameters
nameThe routine name.
codeObjThe associated code object.

Definition at line 90 of file RoutineClass.cpp.

References BaseExecutable::code, BaseExecutable::executableName, and OrefSet.

Referenced by fromFile(), newFileRexx(), newRoutineObject(), and processInstore().

◆ RoutineClass() [2/6]

RoutineClass::RoutineClass ( RexxString name)

Initialize a RoutineClass object from a file source.

Parameters
nameThe routine name (and the resolved name of the file).

Definition at line 102 of file RoutineClass.cpp.

References BaseExecutable::code, BaseExecutable::executableName, RexxSource::generateCode(), and OrefSet.

◆ RoutineClass() [3/6]

RoutineClass::RoutineClass ( RexxString name,
RexxBuffer s 
)

Initialize a Routine object using a buffered source.

Parameters
nameThe name of the routine.
sourcethe source buffer.

Definition at line 124 of file RoutineClass.cpp.

References BaseExecutable::code, BaseExecutable::executableName, RexxSource::generateCode(), and OrefSet.

◆ RoutineClass() [4/6]

RoutineClass::RoutineClass ( RexxString name,
const char *  data,
size_t  length 
)

Initialize a Routine object using directly provided source.

Parameters
nameThe name of the routine.
dataThe source data buffer pointer.
lengththe length of the source buffer.

Definition at line 147 of file RoutineClass.cpp.

References BaseExecutable::code, BaseExecutable::executableName, RexxSource::generateCode(), and OrefSet.

◆ RoutineClass() [5/6]

RoutineClass::RoutineClass ( RexxString name,
RexxArray s,
size_t  startLine = 0,
RexxString programName = OREF_NULL 
)

Initialize a Routine object using an array source.

Parameters
nameThe name of the routine.
sourcethe source buffer.

Definition at line 169 of file RoutineClass.cpp.

References RexxSource::adjustLine(), BaseExecutable::code, BaseExecutable::executableName, RexxSource::generateCode(), OrefSet, and RexxArray::size().

◆ RoutineClass() [6/6]

RoutineClass::RoutineClass ( RESTORETYPE  restoreType)
inline

Definition at line 59 of file RoutineClass.hpp.

Member Function Documentation

◆ call() [1/2]

void RoutineClass::call ( RexxActivity activity,
RexxString msgname,
RexxObject **  argPtr,
size_t  argcount,
size_t  named_argcount,
ProtectedObject result 
)

Definition at line 221 of file RoutineClass.cpp.

References BaseCode::call(), and BaseExecutable::code.

◆ call() [2/2]

◆ callRexx()

RexxObject * RoutineClass::callRexx ( RexxObject **  args,
size_t  count,
size_t  named_count 
)

Call a routine object from Rexx-level code.

Parameters
argsThe call arguments.
countThe count of arguments.
Returns
The call result (if any).

Definition at line 266 of file RoutineClass.cpp.

References BaseCode::call(), BaseExecutable::code, ActivityManager::currentActivity, and BaseExecutable::executableName.

Referenced by RexxMemory::createImage().

◆ callWithRexx()

RexxObject * RoutineClass::callWithRexx ( RexxArray args,
RexxObject **  named_arglist,
size_t  named_argcount 
)

◆ createInstance()

void RoutineClass::createInstance ( )
static

Create initial class object at bootstrap time.

Definition at line 77 of file RoutineClass.cpp.

References CLASS_CREATE.

Referenced by RexxMemory::createImage().

◆ execute()

void RoutineClass::execute ( RexxObject ,
RexxObject  
)

◆ flatten()

void RoutineClass::flatten ( RexxEnvelope envelope)
virtual

Reimplemented from RexxVirtualBase.

Definition at line 206 of file RoutineClass.cpp.

References cleanUpFlatten, flatten_reference, and setUpFlatten.

◆ fromFile()

RoutineClass * RoutineClass::fromFile ( RexxString filename)
static

Retrieve a routine object from a file. This will first attempt to restore a previously translated image, then will try to translate the source if that fails.

Parameters
filenameThe target file name.
Returns
A resulting Routine object, if possible.

Definition at line 923 of file RoutineClass.cpp.

References Error_Program_unreadable_name, RexxString::getStringData(), OREF_NULL, SystemInterpreter::readProgram(), reportException(), restore(), and RoutineClass().

Referenced by RexxActivation::callExternalRexx(), PackageManager::getRequiresFile(), RexxStartDispatcher::run(), and CallProgramDispatcher::run().

◆ live()

void RoutineClass::live ( size_t  liveMark)
virtual

Reimplemented from RexxVirtualBase.

Definition at line 186 of file RoutineClass.cpp.

References BaseExecutable::code, BaseExecutable::executableName, and memory_mark.

◆ liveGeneral()

void RoutineClass::liveGeneral ( int  reason)
virtual

Reimplemented from RexxVirtualBase.

Definition at line 196 of file RoutineClass.cpp.

References BaseExecutable::code, BaseExecutable::executableName, and memory_mark_general.

◆ loadExternalRoutine()

RoutineClass * RoutineClass::loadExternalRoutine ( RexxString name,
RexxString descriptor 
)

Create a routine from an external library source.

Parameters
nameThe routine name.
Returns
The resolved routine object, or OREF_NULL if unable to load the routine.

Definition at line 953 of file RoutineClass.cpp.

References Error_Translation_bad_external, RexxArray::get(), RexxString::getLength(), RexxString::getStringData(), PackageManager::loadRoutine(), OREF_NULL, reportException(), RexxArray::size(), stringArgument(), TheNilObject, and StringUtil::words().

Referenced by RexxMemory::createImage().

◆ newFileRexx()

◆ newRexx()

◆ newRoutineObject() [1/2]

RoutineClass * RoutineClass::newRoutineObject ( RexxString pgmname,
RexxArray source,
RexxObject position 
)
static

Construct a Routine using different forms of in-memory source file.

Parameters
pgmnameThe name of the program.
sourceThe program source. This can be a string or an array of strings.
positionThe argument position used for error reporting.
parentSourceA parent source context used to provide additional class and routine definitions.
Returns
A constructed Routine object.

Definition at line 556 of file RoutineClass.cpp.

References Error_Incorrect_method_no_method, Error_Incorrect_method_noarray, Error_Incorrect_method_nostring_inarray, RexxArray::get(), RexxArray::getDimension(), IntegerTwo, RexxObject::makeString(), RexxArray::put(), reportException(), RexxObject::requestArray(), RoutineClass(), RexxArray::size(), BaseExecutable::source(), and TheNilObject.

◆ newRoutineObject() [2/2]

RoutineClass * RoutineClass::newRoutineObject ( RexxString pgmname,
RexxObject source,
RexxObject position,
RexxSource parentSource,
bool  isBlock 
)
static

Construct a Routine using different forms of in-memory source file.

Parameters
pgmnameThe name of the program.
sourceThe program source. This can be a string or an array of strings.
positionThe argument position used for error reporting.
parentSourceA parent source context used to provide additional class and routine definitions.
Returns
A constructed Routine object.

Definition at line 459 of file RoutineClass.cpp.

References ActivityManager::currentActivity, Error_Incorrect_method_no_method, Error_Incorrect_method_noarray, Error_Incorrect_method_nostring_inarray, RexxArray::get(), RexxActivity::getCurrentRexxFrame(), RexxArray::getDimension(), RexxSource::getProgramName(), BaseExecutable::getSourceObject(), RexxActivation::getSourceObject(), RexxSource::inheritSourceContext(), IntegerTwo, RexxObject::makeString(), RexxArray::makeString(), new_array(), OREF_NULL, RexxArray::put(), reportException(), RexxObject::requestArray(), RoutineClass(), RexxSource::setIsBlock(), RexxArray::size(), BaseExecutable::source(), and TheNilObject.

Referenced by newRexx().

◆ operator new() [1/2]

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

Definition at line 53 of file RoutineClass.hpp.

◆ operator new() [2/2]

void * RoutineClass::operator new ( size_t  size)

Definition at line 436 of file RoutineClass.cpp.

References new_object(), and T_Routine.

◆ processInstore()

◆ restore() [1/5]

RoutineClass * RoutineClass::restore ( const char *  data,
size_t  length 
)
static

Restore a saved routine directly from character data.

Parameters
dataThe data pointer.
lengththe data length.
Returns
The unflattened routine object.

Definition at line 791 of file RoutineClass.cpp.

References RexxBuffer::getData(), new_buffer(), and restore().

◆ restore() [2/5]

RoutineClass * RoutineClass::restore ( RexxBuffer buffer,
char *  startPointer,
size_t  length 
)
static

◆ restore() [3/5]

static RoutineClass* RoutineClass::restore ( RexxBuffer buffer)
static

◆ restore() [4/5]

RoutineClass * RoutineClass::restore ( RexxString fileName,
RexxBuffer buffer 
)
static

◆ restore() [5/5]

RoutineClass * RoutineClass::restore ( RXSTRING inData,
RexxString name 
)
static

Restore a routine object from a previously saved instore buffer.

Parameters
inDataThe input data (in RXSTRING form).
Returns
The unflattened object.

Definition at line 871 of file RoutineClass.cpp.

References Error_Program_unreadable_version, ProgramMetaData::extractBufferData(), RexxBuffer::getData(), ProgramMetaData::getImageSize(), BaseExecutable::getSourceObject(), OREF_NULL, reportException(), restore(), RexxSource::setProgramName(), _RXSTRING::strlength, Utilities::strnchr(), _RXSTRING::strptr, and ProgramMetaData::validate().

◆ restoreFromMacroSpace()

RoutineClass * RoutineClass::restoreFromMacroSpace ( RexxString name)
static

Create a routine from a macrospace source.

Parameters
nameThe name of the macrospace item.
Returns
The inflatted macrospace routine.

Definition at line 716 of file RoutineClass.cpp.

References RexxString::getStringData(), MAKERXSTRING, SystemInterpreter::releaseResultMemory(), restore(), RexxResolveMacroFunction(), and _RXSTRING::strptr.

Referenced by processInstore().

◆ runProgram() [1/2]

void RoutineClass::runProgram ( RexxActivity activity,
RexxObject **  arguments,
size_t  argCount,
size_t  named_argCount,
ProtectedObject result 
)

◆ runProgram() [2/2]

void RoutineClass::runProgram ( RexxActivity activity,
RexxString calltype,
RexxString environment,
RexxObject **  arguments,
size_t  argCount,
size_t  named_argCount,
ProtectedObject result 
)

◆ save() [1/3]

RexxBuffer * RoutineClass::save ( )

Definition at line 374 of file RoutineClass.cpp.

References RexxEnvelope::pack().

Referenced by processInstore(), TranslateDispatcher::run(), and save().

◆ save() [2/3]

void RoutineClass::save ( const char *  filename)

Save a routine to a target file.

Parameters
filenameThe name of the file (fully resolved already).

Definition at line 410 of file RoutineClass.cpp.

References Error_Program_unreadable_output_error, RexxBufferBase::getDataLength(), reportException(), save(), and ProgramMetaData::write().

◆ save() [3/3]

void RoutineClass::save ( PRXSTRING  outBuffer)

Save a routine into an externalized buffer form in an RXSTRING.

Parameters
outBufferThe target output RXSTRING.

Definition at line 393 of file RoutineClass.cpp.

References ProgramMetaData::getDataSize(), save(), _RXSTRING::strlength, and _RXSTRING::strptr.

◆ setSecurityManager()

RexxObject * RoutineClass::setSecurityManager ( RexxObject manager)

Member Data Documentation

◆ classInstance

RexxClass * RoutineClass::classInstance = OREF_NULL
static

Definition at line 97 of file RoutineClass.hpp.


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