From: <bi...@us...> - 2014-09-28 18:01:32
|
Revision: 10574 http://sourceforge.net/p/oorexx/code-0/10574 Author: bigrixx Date: 2014-09-28 18:01:22 +0000 (Sun, 28 Sep 2014) Log Message: ----------- [feature-requests:#618] Add a class that contains methods for retrieving interpreter information. Modified Paths: -------------- main/trunk/CMakeLists.txt main/trunk/interpreter/RexxClasses/CoreClasses.orx main/trunk/interpreter/behaviour/ClassTypeCodes.h main/trunk/interpreter/behaviour/PrimitiveBehaviourNames.h main/trunk/interpreter/behaviour/PrimitiveBehaviours.cpp main/trunk/interpreter/behaviour/PrimitiveClasses.xml main/trunk/interpreter/behaviour/VirtualFunctionTable.cpp main/trunk/interpreter/classes/RexxInfoClass.cpp main/trunk/interpreter/classes/RexxInfoClass.hpp main/trunk/interpreter/execution/CPPCode.cpp main/trunk/interpreter/memory/Setup.cpp main/trunk/interpreter/platform/unix/PlatformObjects.orx main/trunk/interpreter/platform/windows/PlatformObjects.orx main/trunk/interpreter/runtime/RexxCore.h Modified: main/trunk/CMakeLists.txt =================================================================== --- main/trunk/CMakeLists.txt 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/CMakeLists.txt 2014-09-28 18:01:22 UTC (rev 10574) @@ -522,6 +522,7 @@ ${build_classes_dir}/PointerClass.cpp ${build_classes_dir}/QueueClass.cpp ${build_classes_dir}/RelationClass.cpp + ${build_classes_dir}/RexxInfoClass.cpp ${build_classes_dir}/RoutineClass.cpp ${build_classes_dir}/RexxQueueMethods.cpp ${build_classes_dir}/SetClass.cpp Modified: main/trunk/interpreter/RexxClasses/CoreClasses.orx =================================================================== --- main/trunk/interpreter/RexxClasses/CoreClasses.orx 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/RexxClasses/CoreClasses.orx 2014-09-28 18:01:22 UTC (rev 10574) @@ -49,6 +49,7 @@ .environment~objectname = "The Environment Directory" rexxPackage~objectname = "The REXX Package" + -- add all of the public classes to .environment and to the -- REXX package publicClasses = .context~package~publicClasses Modified: main/trunk/interpreter/behaviour/ClassTypeCodes.h =================================================================== --- main/trunk/interpreter/behaviour/ClassTypeCodes.h 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/behaviour/ClassTypeCodes.h 2014-09-28 18:01:22 UTC (rev 10574) @@ -108,137 +108,139 @@ T_SetClass = 51, T_Bag = 52, T_BagClass = 53, + T_RexxInfo = 54, + T_RexxInfoClass = 55, - T_Last_Exported_Class = 53, + T_Last_Exported_Class = 55, - T_First_Internal_Class = 54, + T_First_Internal_Class = 56, - T_NilObject = 54, - T_Behaviour = 55, - T_MethodDictionary = 56, - T_LibraryPackage = 57, - T_RexxCode = 58, - T_NativeMethod = 59, - T_NativeRoutine = 60, - T_RegisteredRoutine = 61, - T_CPPCode = 62, - T_AttributeGetterCode = 63, - T_AttributeSetterCode = 64, - T_ConstantGetterCode = 65, - T_AbstractCode = 66, - T_SmartBuffer = 67, - T_IdentityHashContents = 68, - T_EqualityHashContents = 69, - T_MultiValueContents = 70, - T_StringHashContents = 71, - T_ListContents = 72, - T_Variable = 73, - T_VariableDictionary = 74, - T_VariableTerm = 75, - T_CompoundVariableTerm = 76, - T_StemVariableTerm = 77, - T_DotVariableTerm = 78, - T_IndirectVariableTerm = 79, - T_FunctionCallTerm = 80, - T_MessageSendTerm = 81, - T_UnaryOperatorTerm = 82, - T_BinaryOperatorTerm = 83, - T_LogicalTerm = 84, - T_ListTerm = 85, - T_Instruction = 86, - T_AddressInstruction = 87, - T_AssignmentInstruction = 88, - T_CallInstruction = 89, - T_DynamicCallInstruction = 90, - T_CallOnInstruction = 91, - T_CommandInstruction = 92, - T_SimpleDoInstruction = 93, - T_DoForeverInstruction = 94, - T_DoOverInstruction = 95, - T_DoOverUntilInstruction = 96, - T_DoOverWhileInstruction = 97, - T_DoOverForInstruction = 98, - T_DoOverForUntilInstruction = 99, - T_DoOverForWhileInstruction = 100, - T_ControlledDoInstruction = 101, - T_ControlledDoUntilInstruction = 102, - T_ControlledDoWhileInstruction = 103, - T_DoWhileInstruction = 104, - T_DoUntilInstruction = 105, - T_DoCountInstruction = 106, - T_DoCountUntilInstruction = 107, - T_DoCountWhileInstruction = 108, - T_DropInstruction = 109, - T_ElseInstruction = 110, - T_EndInstruction = 111, - T_EndIfInstruction = 112, - T_ExitInstruction = 113, - T_ExposeInstruction = 114, - T_ForwardInstruction = 115, - T_GuardInstruction = 116, - T_IfInstruction = 117, - T_CaseWhenInstruction = 118, - T_InterpretInstruction = 119, - T_LabelInstruction = 120, - T_LeaveInstruction = 121, - T_MessageInstruction = 122, - T_NopInstruction = 123, - T_NumericInstruction = 124, - T_OptionsInstruction = 125, - T_OtherwiseInstruction = 126, - T_ParseInstruction = 127, - T_ProcedureInstruction = 128, - T_QueueInstruction = 129, - T_RaiseInstruction = 130, - T_ReplyInstruction = 131, - T_ReturnInstruction = 132, - T_SayInstruction = 133, - T_SelectInstruction = 134, - T_SelectCaseInstruction = 135, - T_SignalInstruction = 136, - T_DynamicSignalInstruction = 137, - T_SignalOnInstruction = 138, - T_ThenInstruction = 139, - T_TraceInstruction = 140, - T_UseInstruction = 141, - T_ClassDirective = 142, - T_LibraryDirective = 143, - T_RequiresDirective = 144, - T_CompoundElement = 145, - T_ParseTrigger = 146, - T_ProgramSource = 147, - T_ArrayProgramSource = 148, - T_BufferProgramSource = 149, - T_FileProgramSource = 150, - T_NumberArray = 151, + T_NilObject = 56, + T_Behaviour = 57, + T_MethodDictionary = 58, + T_LibraryPackage = 59, + T_RexxCode = 60, + T_NativeMethod = 61, + T_NativeRoutine = 62, + T_RegisteredRoutine = 63, + T_CPPCode = 64, + T_AttributeGetterCode = 65, + T_AttributeSetterCode = 66, + T_ConstantGetterCode = 67, + T_AbstractCode = 68, + T_SmartBuffer = 69, + T_IdentityHashContents = 70, + T_EqualityHashContents = 71, + T_MultiValueContents = 72, + T_StringHashContents = 73, + T_ListContents = 74, + T_Variable = 75, + T_VariableDictionary = 76, + T_VariableTerm = 77, + T_CompoundVariableTerm = 78, + T_StemVariableTerm = 79, + T_DotVariableTerm = 80, + T_IndirectVariableTerm = 81, + T_FunctionCallTerm = 82, + T_MessageSendTerm = 83, + T_UnaryOperatorTerm = 84, + T_BinaryOperatorTerm = 85, + T_LogicalTerm = 86, + T_ListTerm = 87, + T_Instruction = 88, + T_AddressInstruction = 89, + T_AssignmentInstruction = 90, + T_CallInstruction = 91, + T_DynamicCallInstruction = 92, + T_CallOnInstruction = 93, + T_CommandInstruction = 94, + T_SimpleDoInstruction = 95, + T_DoForeverInstruction = 96, + T_DoOverInstruction = 97, + T_DoOverUntilInstruction = 98, + T_DoOverWhileInstruction = 99, + T_DoOverForInstruction = 100, + T_DoOverForUntilInstruction = 101, + T_DoOverForWhileInstruction = 102, + T_ControlledDoInstruction = 103, + T_ControlledDoUntilInstruction = 104, + T_ControlledDoWhileInstruction = 105, + T_DoWhileInstruction = 106, + T_DoUntilInstruction = 107, + T_DoCountInstruction = 108, + T_DoCountUntilInstruction = 109, + T_DoCountWhileInstruction = 110, + T_DropInstruction = 111, + T_ElseInstruction = 112, + T_EndInstruction = 113, + T_EndIfInstruction = 114, + T_ExitInstruction = 115, + T_ExposeInstruction = 116, + T_ForwardInstruction = 117, + T_GuardInstruction = 118, + T_IfInstruction = 119, + T_CaseWhenInstruction = 120, + T_InterpretInstruction = 121, + T_LabelInstruction = 122, + T_LeaveInstruction = 123, + T_MessageInstruction = 124, + T_NopInstruction = 125, + T_NumericInstruction = 126, + T_OptionsInstruction = 127, + T_OtherwiseInstruction = 128, + T_ParseInstruction = 129, + T_ProcedureInstruction = 130, + T_QueueInstruction = 131, + T_RaiseInstruction = 132, + T_ReplyInstruction = 133, + T_ReturnInstruction = 134, + T_SayInstruction = 135, + T_SelectInstruction = 136, + T_SelectCaseInstruction = 137, + T_SignalInstruction = 138, + T_DynamicSignalInstruction = 139, + T_SignalOnInstruction = 140, + T_ThenInstruction = 141, + T_TraceInstruction = 142, + T_UseInstruction = 143, + T_ClassDirective = 144, + T_LibraryDirective = 145, + T_RequiresDirective = 146, + T_CompoundElement = 147, + T_ParseTrigger = 148, + T_ProgramSource = 149, + T_ArrayProgramSource = 150, + T_BufferProgramSource = 151, + T_FileProgramSource = 152, + T_NumberArray = 153, - T_Last_Internal_Class = 151, + T_Last_Internal_Class = 153, - T_First_Transient_Class = 152, + T_First_Transient_Class = 154, - T_Memory = 152, - T_InternalStack = 153, - T_LiveStack = 154, - T_PushThroughStack = 155, - T_Activity = 156, - T_Activation = 157, - T_NativeActivation = 158, - T_ActivationFrameBuffer = 159, - T_Envelope = 160, - T_LanguageParser = 161, - T_Clause = 162, - T_Token = 163, - T_DoBlock = 164, - T_InterpreterInstance = 165, - T_SecurityManager = 166, - T_CommandHandler = 167, - T_MapBucket = 168, - T_MapTable = 169, - T_TrapHandler = 170, + T_Memory = 154, + T_InternalStack = 155, + T_LiveStack = 156, + T_PushThroughStack = 157, + T_Activity = 158, + T_Activation = 159, + T_NativeActivation = 160, + T_ActivationFrameBuffer = 161, + T_Envelope = 162, + T_LanguageParser = 163, + T_Clause = 164, + T_Token = 165, + T_DoBlock = 166, + T_InterpreterInstance = 167, + T_SecurityManager = 168, + T_CommandHandler = 169, + T_MapBucket = 170, + T_MapTable = 171, + T_TrapHandler = 172, - T_Last_Transient_Class = 170, - T_Last_Primitive_Class = 170, - T_Last_Class_Type = 170, + T_Last_Transient_Class = 172, + T_Last_Primitive_Class = 172, + T_Last_Class_Type = 172, } ClassTypeCode; Modified: main/trunk/interpreter/behaviour/PrimitiveBehaviourNames.h =================================================================== --- main/trunk/interpreter/behaviour/PrimitiveBehaviourNames.h 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/behaviour/PrimitiveBehaviourNames.h 2014-09-28 18:01:22 UTC (rev 10574) @@ -103,6 +103,8 @@ #define TheSetClassBehaviour (&RexxBehaviour::primitiveBehaviours[T_SetClass]) #define TheBagBehaviour (&RexxBehaviour::primitiveBehaviours[T_Bag]) #define TheBagClassBehaviour (&RexxBehaviour::primitiveBehaviours[T_BagClass]) +#define TheRexxInfoBehaviour (&RexxBehaviour::primitiveBehaviours[T_RexxInfo]) +#define TheRexxInfoClassBehaviour (&RexxBehaviour::primitiveBehaviours[T_RexxInfoClass]) #define TheNilObjectBehaviour (&RexxBehaviour::primitiveBehaviours[T_NilObject]) #define TheBehaviourBehaviour (&RexxBehaviour::primitiveBehaviours[T_Behaviour]) #define TheMethodDictionaryBehaviour (&RexxBehaviour::primitiveBehaviours[T_MethodDictionary]) Modified: main/trunk/interpreter/behaviour/PrimitiveBehaviours.cpp =================================================================== --- main/trunk/interpreter/behaviour/PrimitiveBehaviours.cpp 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/behaviour/PrimitiveBehaviours.cpp 2014-09-28 18:01:22 UTC (rev 10574) @@ -113,6 +113,8 @@ RexxBehaviour(T_SetClass, (PCPPM *)RexxObject::operatorMethods), RexxBehaviour(T_Bag, (PCPPM *)RexxObject::operatorMethods), RexxBehaviour(T_BagClass, (PCPPM *)RexxObject::operatorMethods), + RexxBehaviour(T_RexxInfo, (PCPPM *)RexxObject::operatorMethods), + RexxBehaviour(T_RexxInfoClass, (PCPPM *)RexxObject::operatorMethods), RexxBehaviour(T_NilObject, (PCPPM *)RexxObject::operatorMethods), RexxBehaviour(T_Behaviour, (PCPPM *)RexxObject::operatorMethods), RexxBehaviour(T_MethodDictionary, (PCPPM *)RexxObject::operatorMethods), Modified: main/trunk/interpreter/behaviour/PrimitiveClasses.xml =================================================================== --- main/trunk/interpreter/behaviour/PrimitiveClasses.xml 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/behaviour/PrimitiveClasses.xml 2014-09-28 18:01:22 UTC (rev 10574) @@ -98,6 +98,7 @@ <Class id="StackFrame" class="StackFrameClass" include="StackFrameClass.hpp"/> <Class id="Set" class="SetClass" include="SetClass.hpp"/> <Class id="Bag" class="BagClass" include="BagClass.hpp"/> +<Class id="RexxInfo" class="RexxInfo" include="RexxInfoClass.hpp"/> </Exported> <Internal> <Class id="NilObject" class="RexxNilObject" include="ObjectClass.hpp"/> Modified: main/trunk/interpreter/behaviour/VirtualFunctionTable.cpp =================================================================== --- main/trunk/interpreter/behaviour/VirtualFunctionTable.cpp 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/behaviour/VirtualFunctionTable.cpp 2014-09-28 18:01:22 UTC (rev 10574) @@ -81,6 +81,7 @@ #include "StackFrameClass.hpp" #include "SetClass.hpp" #include "BagClass.hpp" +#include "RexxInfoClass.hpp" #include "RexxBehaviour.hpp" #include "MethodDictionary.hpp" #include "LibraryPackage.hpp" @@ -353,6 +354,12 @@ objectPtr = ::new (objectLoc) RexxClass(RESTOREIMAGE); virtualFunctionTable[T_BagClass] = getVftPointer(objectLoc); + objectPtr = ::new (objectLoc) RexxInfo(RESTOREIMAGE); + virtualFunctionTable[T_RexxInfo] = getVftPointer(objectLoc); + + objectPtr = ::new (objectLoc) RexxClass(RESTOREIMAGE); + virtualFunctionTable[T_RexxInfoClass] = getVftPointer(objectLoc); + objectPtr = ::new (objectLoc) RexxNilObject(RESTOREIMAGE); virtualFunctionTable[T_NilObject] = getVftPointer(objectLoc); Modified: main/trunk/interpreter/classes/RexxInfoClass.cpp =================================================================== --- main/trunk/interpreter/classes/RexxInfoClass.cpp 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/classes/RexxInfoClass.cpp 2014-09-28 18:01:22 UTC (rev 10574) @@ -47,6 +47,7 @@ #include "SysFileSystem.hpp" #include "MethodArguments.hpp" #include "Interpreter.hpp" +#include "SystemInterpreter.hpp" RexxClass *RexxInfo::classInstance = OREF_NULL; // singleton class instance @@ -316,7 +317,7 @@ */ RexxString *RexxInfo::getInterpreterDate() { - return interpreterDate(); + return interpreterDate; } Modified: main/trunk/interpreter/classes/RexxInfoClass.hpp =================================================================== --- main/trunk/interpreter/classes/RexxInfoClass.hpp 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/classes/RexxInfoClass.hpp 2014-09-28 18:01:22 UTC (rev 10574) @@ -62,6 +62,10 @@ RexxInfo() { } inline RexxInfo(RESTORETYPE restoreType) { ; }; + virtual void live(size_t); + virtual void liveGeneral(MarkReason reason); + virtual void flatten(Envelope *); + void initialize(); PackageClass *getPackage(); @@ -69,14 +73,14 @@ RexxObject *getFuzz(); RexxObject *getForm(); RexxObject *getInternalDigits(); - RexxObject *getLanguageLevel(); - RexxObject *getInterpreterVersion(); - RexxObject *getInterpreterDate(); - RexxObject *getPlatform(); + RexxString *getLanguageLevel(); + RexxString *getInterpreterVersion(); + RexxString *getInterpreterDate(); + RexxString *getPlatform(); RexxObject *getArchitecture(); - RexxObject *getFileEndOfLine(); - RexxObject *getPathSeparator(); - RexxObject *getDirectorySeparator(); + RexxString *getFileEndOfLine(); + RexxString *getPathSeparator(); + RexxString *getDirectorySeparator(); RexxObject *getCaseSensitiveFiles(); RexxObject *getMajorVersion(); RexxObject *getRelease(); Modified: main/trunk/interpreter/execution/CPPCode.cpp =================================================================== --- main/trunk/interpreter/execution/CPPCode.cpp 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/execution/CPPCode.cpp 2014-09-28 18:01:22 UTC (rev 10574) @@ -482,6 +482,7 @@ #include "ActivityManager.hpp" #include "SetClass.hpp" #include "BagClass.hpp" +#include "RexxInfoClass.hpp" // start of the exported methods table. Any method used in Setup.cpp must also // be included in this table here so that methods can recover the pointer @@ -1037,6 +1038,25 @@ CPPM(StackFrameClass::getTarget), CPPM(StackFrameClass::getArguments), CPPM(StackFrameClass::newRexx), + +CPPM(RexxInfo::newRexx), +CPPM(RexxInfo::copyRexx), +CPPM(RexxInfo::getPackage), +CPPM(RexxInfo::getDigits), +CPPM(RexxInfo::getInternalDigits), +CPPM(RexxInfo::getForm), +CPPM(RexxInfo::getFuzz), +CPPM(RexxInfo::getLanguageLevel), +CPPM(RexxInfo::getInterpreterVersion), +CPPM(RexxInfo::getInterpreterDate), +CPPM(RexxInfo::getPlatform), +CPPM(RexxInfo::getArchitecture), +CPPM(RexxInfo::getFileEndOfLine), +CPPM(RexxInfo::getPathSeparator), +CPPM(RexxInfo::getCaseSensitiveFiles), +CPPM(RexxInfo::getMajorVersion), +CPPM(RexxInfo::getRelease), +CPPM(RexxInfo::getRevision), // This NULL terminator is important to mark the end of the table. NULL }; Modified: main/trunk/interpreter/memory/Setup.cpp =================================================================== --- main/trunk/interpreter/memory/Setup.cpp 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/memory/Setup.cpp 2014-09-28 18:01:22 UTC (rev 10574) @@ -84,6 +84,7 @@ #include "PackageClass.hpp" #include "ContextClass.hpp" #include "StackFrameClass.hpp" +#include "RexxInfoClass.hpp" #include "LanguageParser.hpp" #include "SetClass.hpp" #include "BagClass.hpp" @@ -292,6 +293,7 @@ WeakReference::createInstance(); StackFrameClass::createInstance(); + RexxInfo::createInstance(); // build the common retrievers table. This is needed before we can parse an // Rexx code. @@ -1128,6 +1130,41 @@ /***************************************************************************/ + /* RexxInfo */ + /***************************************************************************/ + +StartClassDefinition(RexxInfo) + + AddClassMethod("New", RexxInfo::newRexx, A_COUNT); + + CompleteClassMethodDefinitions(); + + AddMethod("Copy", RexxInfo::copyRexx, 0); + AddMethod("Package", RexxInfo::getPackage, 0); + AddMethod("Digits", RexxInfo::getDigits, 0); + AddMethod("InternalDigits", RexxInfo::getInternalDigits, 0); + AddMethod("Form", RexxInfo::getForm, 0); + AddMethod("Fuzz", RexxInfo::getFuzz, 0); + AddMethod("LanguageLevel", RexxInfo::getLanguageLevel, 0); + AddMethod("Version", RexxInfo::getInterpreterVersion, 0); + AddMethod("Date", RexxInfo::getInterpreterDate, 0); + AddMethod("Platform", RexxInfo::getPlatform, 0); + AddMethod("Architecture", RexxInfo::getArchitecture, 0); + AddMethod("EndOfLine", RexxInfo::getFileEndOfLine, 0); + AddMethod("PathSeparator", RexxInfo::getPathSeparator, 0); + AddMethod("CaseSensitiveFiles", RexxInfo::getCaseSensitiveFiles, 0); + AddMethod("MajorVersion", RexxInfo::getMajorVersion, 0); + AddMethod("Release", RexxInfo::getRelease, 0); + AddMethod("Revision", RexxInfo::getRevision, 0); + + CompleteMethodDefinitions(); + + CompleteClassDefinition(RexxInfo); + +EndSpecialClassDefinition(RexxInfo); + + + /***************************************************************************/ /* STEM */ /***************************************************************************/ @@ -1485,6 +1522,15 @@ addToEnvironment("FALSE", TheFalseObject); addToEnvironment("TRUE", TheTrueObject); + // create and add a RexxInfo object to the environment + RexxInfo *info = new RexxInfo; + addToEnvironment("REXXINFO", info); + // now create the cached objects in the info object. + info->initialize(); + // and add the ENDOFLINE entry using the RexxInfo value + addToEnvironment("ENDOFLINE", info->getFileEndOfLine()); + + // set up the kernel directory addToSystem("INTEGER", TheIntegerClass); addToSystem("NUMBERSTRING", TheNumberStringClass); Modified: main/trunk/interpreter/platform/unix/PlatformObjects.orx =================================================================== --- main/trunk/interpreter/platform/unix/PlatformObjects.orx 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/platform/unix/PlatformObjects.orx 2014-09-28 18:01:22 UTC (rev 10574) @@ -1,2 +1 @@ --- set the endOfLine environment variable - .environment~setentry('ENDOFLINE', '0a'x) +-- Nothing to do currently Modified: main/trunk/interpreter/platform/windows/PlatformObjects.orx =================================================================== --- main/trunk/interpreter/platform/windows/PlatformObjects.orx 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/platform/windows/PlatformObjects.orx 2014-09-28 18:01:22 UTC (rev 10574) @@ -1,6 +1,2 @@ --- set the endOfLine environment variable - -.environment~setentry('ENDOFLINE', '0d0a'x) - -- load the OLE support under windows call 'orexxole.cls' Modified: main/trunk/interpreter/runtime/RexxCore.h =================================================================== --- main/trunk/interpreter/runtime/RexxCore.h 2014-09-28 14:49:28 UTC (rev 10573) +++ main/trunk/interpreter/runtime/RexxCore.h 2014-09-28 18:01:22 UTC (rev 10574) @@ -141,6 +141,7 @@ #define TheBufferClass BufferClass::classInstance #define TheWeakReferenceClass WeakReference::classInstance #define TheStackFrameClass StackFrameClass::classInstance +#define TheRexxInfoClass RexxInfo::classInstance // shorthand access to some important objects. #define TheEnvironment memoryObject.environment |