From: <bi...@us...> - 2008-02-12 00:59:58
|
Revision: 2355 http://oorexx.svn.sourceforge.net/oorexx/?rev=2355&view=rev Author: bigrixx Date: 2008-02-11 16:59:58 -0800 (Mon, 11 Feb 2008) Log Message: ----------- incremental checkin Modified Paths: -------------- sandbox/rick/opt/kernel/api/CallContextStubs.cpp sandbox/rick/opt/kernel/api/ContextApi.hpp sandbox/rick/opt/kernel/api/InterpreterInstanceStubs.cpp sandbox/rick/opt/kernel/api/MethodContextStubs.cpp sandbox/rick/opt/kernel/api/ThreadContextStubs.cpp sandbox/rick/opt/kernel/classes/IntegerClass.cpp sandbox/rick/opt/kernel/classes/IntegerClass.hpp sandbox/rick/opt/kernel/classes/MethodClass.cpp sandbox/rick/opt/kernel/classes/MethodClass.hpp sandbox/rick/opt/kernel/classes/NumberStringClass.cpp sandbox/rick/opt/kernel/classes/NumberStringClass.hpp sandbox/rick/opt/kernel/classes/ObjectClass.hpp sandbox/rick/opt/kernel/classes/RoutineClass.cpp sandbox/rick/opt/kernel/classes/StringClass.cpp sandbox/rick/opt/kernel/classes/StringClass.hpp sandbox/rick/opt/kernel/expression/CommonExternalFunctions.cpp sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.cpp sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.hpp sandbox/rick/opt/kernel/expression/ExpressionStem.cpp sandbox/rick/opt/kernel/expression/ExpressionStem.hpp sandbox/rick/opt/kernel/expression/ExpressionVariable.cpp sandbox/rick/opt/kernel/expression/ExpressionVariable.hpp sandbox/rick/opt/kernel/runtime/ActivityManager.cpp sandbox/rick/opt/kernel/runtime/ActivityManager.hpp sandbox/rick/opt/kernel/runtime/CPPCode.cpp sandbox/rick/opt/kernel/runtime/CreateRoutineDispatcher.cpp sandbox/rick/opt/kernel/runtime/Numerics.cpp sandbox/rick/opt/kernel/runtime/PackageManager.hpp sandbox/rick/opt/kernel/runtime/RexxActivation.cpp sandbox/rick/opt/kernel/runtime/RexxActivation.hpp sandbox/rick/opt/kernel/runtime/RexxActivity.hpp sandbox/rick/opt/kernel/runtime/RexxCode.cpp sandbox/rick/opt/kernel/runtime/RexxCode.hpp sandbox/rick/opt/kernel/runtime/RexxNativeActivation.cpp sandbox/rick/opt/kernel/runtime/RexxNativeActivation.hpp sandbox/rick/opt/kernel/runtime/RexxNativeCode.cpp sandbox/rick/opt/kernel/runtime/RexxNativeCode.hpp Modified: sandbox/rick/opt/kernel/api/CallContextStubs.cpp =================================================================== --- sandbox/rick/opt/kernel/api/CallContextStubs.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/api/CallContextStubs.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -63,7 +63,7 @@ return NULLOBJECT; } -RexxObjectPtr RexxEntry GetCallArgument(RexxCallContext *c, RexxUnsignedNumber i) +RexxObjectPtr RexxEntry GetCallArgument(RexxCallContext *c, stringsize_t i) { ApiContext context(c); try @@ -76,24 +76,24 @@ return NULLOBJECT; } -void RexxEntry SetContextVariable(RexxCallContext *c, RexxStringPointer n, RexxObjectPtr v) +void RexxEntry SetContextVariable(RexxCallContext *c, CSTRING n, RexxObjectPtr v) { ApiContext context(c); try { - context.context->setContextVariable((stringchar_t *)n, (RexxObject *)v); + context.context->setContextVariable((const char *)n, (RexxObject *)v); } catch (ActivityException) { } } -RexxObjectPtr RexxEntry GetContextVariable(RexxCallContext *c, RexxStringPointer n) +RexxObjectPtr RexxEntry GetContextVariable(RexxCallContext *c, CSTRING n) { ApiContext context(c); try { - return context.context->getContextVariable((stringchar_t *)n); + return context.context->getContextVariable((const char *)n); } catch (ActivityException) { @@ -101,12 +101,12 @@ return NULLOBJECT; } -void RexxEntry DropContextVariable(RexxCallContext *c, RexxStringPointer n) +void RexxEntry DropContextVariable(RexxCallContext *c, CSTRING n) { ApiContext context(c); try { - context.context->dropContextVariable((stringchar_t *)n); + context.context->dropContextVariable((const char *)n); } catch (ActivityException) { @@ -155,24 +155,24 @@ } } -void RexxEntry SetExitContextVariable(RexxExitContext *c, RexxStringPointer n, RexxObjectPtr v) +void RexxEntry SetExitContextVariable(RexxExitContext *c, CSTRING n, RexxObjectPtr v) { ApiContext context(c); try { - context.context->setContextVariable((stringchar_t *)n, (RexxObject *)v); + context.context->setContextVariable((const char *)n, (RexxObject *)v); } catch (ActivityException) { } } -RexxObjectPtr RexxEntry GetExitContextVariable(RexxExitContext *c, RexxStringPointer n) +RexxObjectPtr RexxEntry GetExitContextVariable(RexxExitContext *c, CSTRING n) { ApiContext context(c); try { - return context.context->getContextVariable((stringchar_t *)n); + return context.context->getContextVariable((const char *)n); } catch (ActivityException) { @@ -180,12 +180,12 @@ return NULLOBJECT; } -void RexxEntry DropExitContextVariable(RexxExitContext *c, RexxStringPointer n) +void RexxEntry DropExitContextVariable(RexxExitContext *c, CSTRING n) { ApiContext context(c); try { - context.context->dropContextVariable((stringchar_t *)n); + context.context->dropContextVariable((const char *)n); } catch (ActivityException) { @@ -230,7 +230,7 @@ return 0; } -RexxBoolean RexxEntry GetContextForm(RexxCallContext *c) +logical_t RexxEntry GetContextForm(RexxCallContext *c) { ApiContext context(c); try Modified: sandbox/rick/opt/kernel/api/ContextApi.hpp =================================================================== --- sandbox/rick/opt/kernel/api/ContextApi.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/api/ContextApi.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -115,7 +115,7 @@ inline RexxObjectPtr ret(RexxObject *o) { - activity->createLocalReference(o); + context->createLocalReference(o); return (RexxObjectPtr)o; } Modified: sandbox/rick/opt/kernel/api/InterpreterInstanceStubs.cpp =================================================================== --- sandbox/rick/opt/kernel/api/InterpreterInstanceStubs.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/api/InterpreterInstanceStubs.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -54,7 +54,7 @@ context.instance->terminate(); } -RexxBoolean RexxEntry AttachThread(RexxInstance *c, RexxThreadContext **tc) +logical_t RexxEntry AttachThread(RexxInstance *c, RexxThreadContext **tc) { InstanceApiContext context(c); return context.instance->attachThread(tc); @@ -66,16 +66,16 @@ context.instance->halt(); } -void RexxEntry SetTrace(RexxInstance *c, RexxBoolean setting) +void RexxEntry SetTrace(RexxInstance *c, logical_t setting) { InstanceApiContext context(c); context.instance->setTrace(setting != 0); } -RexxBoolean RexxEntry CreateScriptContext(RexxInstance *c, RexxScriptContext **sc, RexxOption *o) +logical_t RexxEntry CreateScriptContext(RexxInstance *c, RexxScriptContext **sc, RexxOption *o) { - return (RexxBoolean)false; + return (logical_t)false; } END_EXTERN_C() Modified: sandbox/rick/opt/kernel/api/MethodContextStubs.cpp =================================================================== --- sandbox/rick/opt/kernel/api/MethodContextStubs.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/api/MethodContextStubs.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -60,7 +60,7 @@ return NULLOBJECT; } -RexxObjectPtr RexxEntry GetMethodArgument(RexxMethodContext *c, RexxUnsignedNumber i) +RexxObjectPtr RexxEntry GetMethodArgument(RexxMethodContext *c, stringsize_t i) { ApiContext context(c); try @@ -86,12 +86,12 @@ return NULL; } -RexxStringPointer RexxEntry GetMessageName(RexxMethodContext *c) +CSTRING RexxEntry GetMessageName(RexxMethodContext *c) { ApiContext context(c); try { - return (RexxStringPointer)context.context->getMessageName(); + return (CSTRING)context.context->getMessageName(); } catch (ActivityException) { @@ -125,7 +125,7 @@ return NULLOBJECT; } -void RexxEntry SetObjectVariable(RexxMethodContext *c, RexxStringPointer n, RexxObjectPtr v) +void RexxEntry SetObjectVariable(RexxMethodContext *c, CSTRING n, RexxObjectPtr v) { ApiContext context(c); try @@ -137,7 +137,7 @@ } } -RexxObjectPtr RexxEntry GetObjectVariable(RexxMethodContext *c, RexxStringPointer n) +RexxObjectPtr RexxEntry GetObjectVariable(RexxMethodContext *c, CSTRING n) { ApiContext context(c); try @@ -150,7 +150,7 @@ return NULLOBJECT; } -void RexxEntry DropObjectVariable(RexxMethodContext *c, RexxStringPointer n) +void RexxEntry DropObjectVariable(RexxMethodContext *c, CSTRING n) { ApiContext context(c); try @@ -162,7 +162,7 @@ } } -RexxObjectPtr RexxEntry SendSuperMessage(RexxMethodContext *c, RexxStringPointer n, RexxArrayObject a) +RexxObjectPtr RexxEntry SendSuperMessage(RexxMethodContext *c, CSTRING n, RexxArrayObject a) { ApiContext context(c); try @@ -181,7 +181,7 @@ return NULLOBJECT; } -RexxObjectPtr RexxEntry SendOverrideMessage(RexxMethodContext *c, RexxStringPointer n, RexxClassObject clazz, RexxArrayObject a) +RexxObjectPtr RexxEntry SendOverrideMessage(RexxMethodContext *c, CSTRING n, RexxClassObject clazz, RexxArrayObject a) { ApiContext context(c); try @@ -224,7 +224,7 @@ } } -RexxClassObject RexxEntry FindContextClass(RexxMethodContext *c, RexxStringPointer n) +RexxClassObject RexxEntry FindContextClass(RexxMethodContext *c, CSTRING n) { ApiContext context(c); try Modified: sandbox/rick/opt/kernel/api/ThreadContextStubs.cpp =================================================================== --- sandbox/rick/opt/kernel/api/ThreadContextStubs.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/api/ThreadContextStubs.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -88,7 +88,7 @@ } -void RexxEntry SetThreadTrace(RexxThreadContext *c, RexxBoolean setting) +void RexxEntry SetThreadTrace(RexxThreadContext *c, logical_t setting) { ApiContext context(c); try @@ -143,7 +143,7 @@ //NB: The name "SendMessage" has a conflict with a Windows API, so this name differs from // the call vector version. -RexxObjectPtr RexxEntry SendMessageArray(RexxThreadContext *c, RexxObjectPtr o, RexxStringPointer m, RexxArrayObject a) +RexxObjectPtr RexxEntry SendMessageArray(RexxThreadContext *c, RexxObjectPtr o, CSTRING m, RexxArrayObject a) { ApiContext context(c); try @@ -157,7 +157,7 @@ } -RexxObjectPtr RexxEntry SendMessage0(RexxThreadContext *c, RexxObjectPtr o, RexxStringPointer m) +RexxObjectPtr RexxEntry SendMessage0(RexxThreadContext *c, RexxObjectPtr o, CSTRING m) { ApiContext context(c); try @@ -171,7 +171,7 @@ } -RexxObjectPtr RexxEntry SendMessage1(RexxThreadContext *c, RexxObjectPtr o, RexxStringPointer m, RexxObjectPtr a1) +RexxObjectPtr RexxEntry SendMessage1(RexxThreadContext *c, RexxObjectPtr o, CSTRING m, RexxObjectPtr a1) { ApiContext context(c); try @@ -184,7 +184,7 @@ return NULLOBJECT; } -RexxObjectPtr RexxEntry SendMessage2(RexxThreadContext *c, RexxObjectPtr o, RexxStringPointer m, RexxObjectPtr a1, RexxObjectPtr a2) +RexxObjectPtr RexxEntry SendMessage2(RexxThreadContext *c, RexxObjectPtr o, CSTRING m, RexxObjectPtr a1, RexxObjectPtr a2) { ApiContext context(c); try @@ -225,7 +225,7 @@ } -RexxBoolean RexxEntry IsSameType(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2) +logical_t RexxEntry IsSameType(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2) { ApiContext context(c); try @@ -239,7 +239,7 @@ } -RexxBoolean RexxEntry IsInstanceOf(RexxThreadContext *c, RexxObjectPtr o, RexxClassObject cl) +logical_t RexxEntry IsInstanceOf(RexxThreadContext *c, RexxObjectPtr o, RexxClassObject cl) { ApiContext context(c); try @@ -253,7 +253,7 @@ } -RexxClassObject RexxEntry FindClass(RexxThreadContext *c, RexxStringPointer n) +RexxClassObject RexxEntry FindClass(RexxThreadContext *c, CSTRING n) { ApiContext context(c); try @@ -270,7 +270,7 @@ } -RexxClassObject RexxEntry FindClassFromMethod(RexxThreadContext *c, RexxMethodObject m, RexxStringPointer n) +RexxClassObject RexxEntry FindClassFromMethod(RexxThreadContext *c, RexxMethodObject m, CSTRING n) { ApiContext context(c); try @@ -287,7 +287,7 @@ } -RexxBoolean RexxEntry HasMethod(RexxThreadContext *c, RexxObjectPtr o, RexxStringPointer n) +logical_t RexxEntry HasMethod(RexxThreadContext *c, RexxObjectPtr o, CSTRING n) { ApiContext context(c); try @@ -303,7 +303,7 @@ } -RexxMethodObject RexxEntry NewMethod(RexxThreadContext *c, RexxStringPointer source, RexxUnsignedNumber length) +RexxMethodObject RexxEntry NewMethod(RexxThreadContext *c, CSTRING source, stringsize_t length) { ApiContext context(c); try @@ -386,7 +386,7 @@ return NULLOBJECT; } -RexxMethodObject RexxEntry LoadMethod(RexxThreadContext *c, RexxStringPointer d, size_t l) +RexxMethodObject RexxEntry LoadMethod(RexxThreadContext *c, CSTRING d, size_t l) { ApiContext context(c); try @@ -455,7 +455,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry ObjectToValue(RexxThreadContext *c, RexxObjectPtr o, ValueDescriptor *d) +logical_t RexxEntry ObjectToValue(RexxThreadContext *c, RexxObjectPtr o, ValueDescriptor *d) { ApiContext context(c); try @@ -471,7 +471,7 @@ return FALSE; } -RexxObjectPtr RexxEntry UnsignedNumberToObject(RexxThreadContext *c, RexxUnsignedNumber n) +RexxObjectPtr RexxEntry UnsignedNumberToObject(RexxThreadContext *c, stringsize_t n) { ApiContext context(c); try @@ -485,7 +485,7 @@ } -RexxBoolean RexxEntry ObjectToNumber(RexxThreadContext *c, RexxObjectPtr o, wholenumber_t *n) +logical_t RexxEntry ObjectToNumber(RexxThreadContext *c, RexxObjectPtr o, wholenumber_t *n) { ApiContext context(c); try @@ -506,7 +506,7 @@ } -RexxBoolean RexxEntry ObjectToUnsignedNumber(RexxThreadContext * c, RexxObjectPtr o, RexxUnsignedNumber * n) +logical_t RexxEntry ObjectToUnsignedNumber(RexxThreadContext * c, RexxObjectPtr o, stringsize_t * n) { ApiContext context(c); try @@ -515,7 +515,7 @@ // this uses the entire value range if (Numerics::objectToStringSize((RexxObject *)o, temp, SIZE_MAX)) { - *n = (RexxUnsignedNumber)temp; + *n = (stringsize_t)temp; return true; } return false; @@ -552,7 +552,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry ObjectToInt64(RexxThreadContext *c, RexxObjectPtr o, int64_t * n) +logical_t RexxEntry ObjectToInt64(RexxThreadContext *c, RexxObjectPtr o, int64_t * n) { ApiContext context(c); try @@ -566,7 +566,7 @@ return 0; } -RexxBoolean RexxEntry ObjectToUnsignedInt64(RexxThreadContext *c, RexxObjectPtr o, uint64_t *n) +logical_t RexxEntry ObjectToUnsignedInt64(RexxThreadContext *c, RexxObjectPtr o, uint64_t *n) { ApiContext context(c); try @@ -580,7 +580,7 @@ return 0; } -RexxBoolean RexxEntry ObjectToUintptr(RexxThreadContext * c, RexxObjectPtr o, uintptr_t * n) +logical_t RexxEntry ObjectToUintptr(RexxThreadContext * c, RexxObjectPtr o, uintptr_t * n) { ApiContext context(c); try @@ -620,7 +620,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry ObjectToDouble(RexxThreadContext *c, RexxObjectPtr o, double *n) +logical_t RexxEntry ObjectToDouble(RexxThreadContext *c, RexxObjectPtr o, double *n) { ApiContext context(c); try @@ -646,14 +646,14 @@ return NULLOBJECT; } -RexxStringPointer RexxEntry ObjectToStringValue(RexxThreadContext *c, RexxObjectPtr o) +CSTRING RexxEntry ObjectToStringValue(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try { RexxString *temp = REQUEST_STRING(o); context.ret(temp); - return (RexxStringPointer)temp->getStringData(); + return (CSTRING)temp->getStringData(); } catch (ActivityException) { @@ -661,7 +661,7 @@ return NULL; } -size_t RexxEntry StringGet(RexxThreadContext *c, RexxStringObject s, size_t o, RexxStringPointer r, size_t l) +size_t RexxEntry StringGet(RexxThreadContext *c, RexxStringObject s, size_t o, CSTRING r, size_t l) { ApiContext context(c); try @@ -689,13 +689,13 @@ return 0; } -RexxStringPointer RexxEntry StringData(RexxThreadContext *c, RexxStringObject s) +CSTRING RexxEntry StringData(RexxThreadContext *c, RexxStringObject s) { ApiContext context(c); try { RexxString *temp = (RexxString *)s; - return (RexxStringPointer)temp->getStringData(); + return (CSTRING)temp->getStringData(); } catch (ActivityException) { @@ -703,7 +703,7 @@ return NULL; } -RexxStringObject RexxEntry NewString(RexxThreadContext *c, RexxStringPointer s, size_t l) +RexxStringObject RexxEntry NewString(RexxThreadContext *c, CSTRING s, size_t l) { ApiContext context(c); try @@ -716,7 +716,7 @@ return NULLOBJECT; } -RexxStringObject RexxEntry NewStringFromAsciiz(RexxThreadContext *c, RexxStringPointer s) +RexxStringObject RexxEntry NewStringFromAsciiz(RexxThreadContext *c, CSTRING s) { ApiContext context(c); try @@ -757,7 +757,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry IsString(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsString(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -797,13 +797,13 @@ return 0; } -RexxStringPointer RexxEntry BufferStringData(RexxThreadContext *c, RexxBufferStringObject s) +CSTRING RexxEntry BufferStringData(RexxThreadContext *c, RexxBufferStringObject s) { ApiContext context(c); try { RexxString *temp = (RexxString *)s; - return (RexxStringPointer)temp->getStringData(); + return (CSTRING)temp->getStringData(); } catch (ActivityException) { @@ -877,7 +877,7 @@ return OREF_NULL; } -RexxBoolean RexxEntry IsTable(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsTable(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -890,7 +890,7 @@ return FALSE; } -void RexxEntry DirectoryPut(RexxThreadContext *c, RexxDirectoryObject t, RexxObjectPtr o, RexxStringPointer i) +void RexxEntry DirectoryPut(RexxThreadContext *c, RexxDirectoryObject t, RexxObjectPtr o, CSTRING i) { ApiContext context(c); try @@ -902,7 +902,7 @@ } } -RexxObjectPtr RexxEntry DirectoryAt(RexxThreadContext *c, RexxDirectoryObject t, RexxStringPointer i) +RexxObjectPtr RexxEntry DirectoryAt(RexxThreadContext *c, RexxDirectoryObject t, CSTRING i) { ApiContext context(c); try @@ -915,7 +915,7 @@ return OREF_NULL; } -RexxObjectPtr RexxEntry DirectoryRemove(RexxThreadContext *c, RexxDirectoryObject t, RexxStringPointer i) +RexxObjectPtr RexxEntry DirectoryRemove(RexxThreadContext *c, RexxDirectoryObject t, CSTRING i) { ApiContext context(c); try @@ -941,7 +941,7 @@ return OREF_NULL; } -RexxBoolean RexxEntry IsDirectory(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsDirectory(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -954,7 +954,7 @@ return FALSE; } -RexxObjectPtr RexxEntry ArrayAt(RexxThreadContext *c, RexxArrayObject a, RexxUnsignedNumber i) +RexxObjectPtr RexxEntry ArrayAt(RexxThreadContext *c, RexxArrayObject a, stringsize_t i) { ApiContext context(c); try @@ -967,7 +967,7 @@ return OREF_NULL; } -RexxBoolean RexxEntry ArrayHasIndex(RexxThreadContext *c, RexxArrayObject a, RexxUnsignedNumber i) +logical_t RexxEntry ArrayHasIndex(RexxThreadContext *c, RexxArrayObject a, stringsize_t i) { ApiContext context(c); try @@ -980,7 +980,7 @@ return FALSE; } -void RexxEntry ArrayPut(RexxThreadContext *c, RexxArrayObject a, RexxObjectPtr o, RexxUnsignedNumber i) +void RexxEntry ArrayPut(RexxThreadContext *c, RexxArrayObject a, RexxObjectPtr o, stringsize_t i) { ApiContext context(c); try @@ -992,7 +992,7 @@ } } -RexxUnsignedNumber RexxEntry ArraySize(RexxThreadContext *c, RexxArrayObject a) +stringsize_t RexxEntry ArraySize(RexxThreadContext *c, RexxArrayObject a) { ApiContext context(c); try @@ -1018,7 +1018,7 @@ return 0; } -RexxArrayObject RexxEntry NewArray(RexxThreadContext *c, RexxUnsignedNumber s) +RexxArrayObject RexxEntry NewArray(RexxThreadContext *c, stringsize_t s) { ApiContext context(c); try @@ -1058,7 +1058,7 @@ } -RexxBoolean RexxEntry IsArray(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsArray(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -1071,12 +1071,12 @@ return FALSE; } -RexxStringPointer RexxEntry BufferData(RexxThreadContext *c, RexxBufferObject b) +CSTRING RexxEntry BufferData(RexxThreadContext *c, RexxBufferObject b) { ApiContext context(c); try { - return (RexxStringPointer)((RexxBuffer *)b)->address(); + return (CSTRING)((RexxBuffer *)b)->address(); } catch (ActivityException) { @@ -1097,7 +1097,7 @@ return 0; } -RexxBufferObject RexxEntry NewBuffer(RexxThreadContext *c, RexxUnsignedNumber l) +RexxBufferObject RexxEntry NewBuffer(RexxThreadContext *c, stringsize_t l) { ApiContext context(c); try @@ -1110,7 +1110,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry IsBuffer(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsBuffer(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -1149,7 +1149,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry IsInteger(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsInteger(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -1188,7 +1188,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry IsPointer(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsPointer(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -1227,7 +1227,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry SupplierAvailable(RexxThreadContext *c, RexxSupplierObject o) +logical_t RexxEntry SupplierAvailable(RexxThreadContext *c, RexxSupplierObject o) { ApiContext context(c); try @@ -1265,7 +1265,7 @@ return NULLOBJECT; } -void RexxEntry SetStemElement(RexxThreadContext *c, RexxStemObject s, RexxStringPointer n, RexxObjectPtr v) +void RexxEntry SetStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n, RexxObjectPtr v) { ApiContext context(c); try @@ -1277,7 +1277,7 @@ } } -RexxObjectPtr RexxEntry GetStemElement(RexxThreadContext *c, RexxStemObject s, RexxStringPointer n) +RexxObjectPtr RexxEntry GetStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n) { ApiContext context(c); try @@ -1290,7 +1290,7 @@ return NULLOBJECT; } -void RexxEntry DropStemElement(RexxThreadContext *c, RexxStemObject s, RexxStringPointer n) +void RexxEntry DropStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n) { ApiContext context(c); try @@ -1302,7 +1302,7 @@ } } -void RexxEntry SetStemArrayElement(RexxThreadContext *c, RexxStemObject s, RexxUnsignedNumber i, RexxObjectPtr v) +void RexxEntry SetStemArrayElement(RexxThreadContext *c, RexxStemObject s, stringsize_t i, RexxObjectPtr v) { ApiContext context(c); try @@ -1314,7 +1314,7 @@ } } -RexxObjectPtr RexxEntry GetStemArrayElement(RexxThreadContext *c, RexxStemObject s, RexxUnsignedNumber i) +RexxObjectPtr RexxEntry GetStemArrayElement(RexxThreadContext *c, RexxStemObject s, stringsize_t i) { ApiContext context(c); try @@ -1327,7 +1327,7 @@ return NULLOBJECT; } -void RexxEntry DropStemArrayElement(RexxThreadContext *c, RexxStemObject s, RexxUnsignedNumber i) +void RexxEntry DropStemArrayElement(RexxThreadContext *c, RexxStemObject s, stringsize_t i) { ApiContext context(c); try @@ -1365,7 +1365,7 @@ return NULLOBJECT; } -RexxBoolean RexxEntry IsStem(RexxThreadContext *c, RexxObjectPtr o) +logical_t RexxEntry IsStem(RexxThreadContext *c, RexxObjectPtr o) { ApiContext context(c); try @@ -1378,7 +1378,7 @@ return FALSE; } -void RexxEntry RaiseException0(RexxThreadContext *c, RexxUnsignedNumber n) +void RexxEntry RaiseException0(RexxThreadContext *c, stringsize_t n) { ApiContext context(c); try @@ -1390,7 +1390,7 @@ } } -void RexxEntry RaiseException1(RexxThreadContext *c, RexxUnsignedNumber n, RexxObjectPtr o1) +void RexxEntry RaiseException1(RexxThreadContext *c, stringsize_t n, RexxObjectPtr o1) { ApiContext context(c); try @@ -1402,7 +1402,7 @@ } } -void RexxEntry RaiseException2(RexxThreadContext *c, RexxUnsignedNumber n, RexxObjectPtr o1, RexxObjectPtr o2) +void RexxEntry RaiseException2(RexxThreadContext *c, stringsize_t n, RexxObjectPtr o1, RexxObjectPtr o2) { ApiContext context(c); try @@ -1414,7 +1414,7 @@ } } -void RexxEntry RaiseExceptionArray(RexxThreadContext *c, RexxUnsignedNumber n, RexxArrayObject a) +void RexxEntry RaiseExceptionArray(RexxThreadContext *c, stringsize_t n, RexxArrayObject a) { ApiContext context(c); try @@ -1426,7 +1426,7 @@ } } -void RexxEntry RaiseCondition(RexxThreadContext *c, RexxStringPointer name, RexxStringPointer desc, RexxArrayObject add, RexxObjectPtr result) +void RexxEntry RaiseCondition(RexxThreadContext *c, CSTRING name, CSTRING desc, RexxArrayObject add, RexxObjectPtr result) { ApiContext context(c); try @@ -1439,7 +1439,7 @@ } } -RexxBoolean RexxEntry CheckCondition(RexxThreadContext *c) +logical_t RexxEntry CheckCondition(RexxThreadContext *c) { ApiContext context(c); try Modified: sandbox/rick/opt/kernel/classes/IntegerClass.cpp =================================================================== --- sandbox/rick/opt/kernel/classes/IntegerClass.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/IntegerClass.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -1024,6 +1024,26 @@ return (RexxObject *)this; /* just return this value */ } + +RexxObject *RexxInteger::getRealValue( + RexxActivation *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + +RexxObject *RexxInteger::getRealValue( + RexxVariableDictionary *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + /* **************************************** */ /* Integer class methods begin here ..... */ /* **************************************** */ Modified: sandbox/rick/opt/kernel/classes/IntegerClass.hpp =================================================================== --- sandbox/rick/opt/kernel/classes/IntegerClass.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/IntegerClass.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -133,6 +133,8 @@ RexxObject *evaluate(RexxActivation *, RexxExpressionStack *); RexxObject *getValue(RexxActivation *); RexxObject *getValue(RexxVariableDictionary *); + RexxObject *getRealValue(RexxActivation *); + RexxObject *getRealValue(RexxVariableDictionary *); RexxString *concat(RexxString *); RexxString *concatBlank(RexxString *); void setString(RexxString *string); Modified: sandbox/rick/opt/kernel/classes/MethodClass.cpp =================================================================== --- sandbox/rick/opt/kernel/classes/MethodClass.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/MethodClass.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -559,11 +559,11 @@ * etc.) * @param result The returned result. */ -void BaseCode::call(RexxActivity *activity, RexxString *msgname, RexxObject **arguments, size_t argcount, RexxString *ct, RexxString *env, int context, ProtectedObject &result) +void BaseCode::call(RexxActivity *activity, RoutineClass *routine, RexxString *msgname, RexxObject **arguments, size_t argcount, RexxString *ct, RexxString *env, int context, ProtectedObject &result) { // the default for this is the simplified call. This is used by Rexx code to make calls to // both Rexx programs and native routines, so the polymorphism simplifies the processing. - call(activity, msgname, arguments, argcount, result); + call(activity, routine, msgname, arguments, argcount, result); } @@ -576,7 +576,7 @@ * @param argcount The count of arguments. * @param result The returned result. */ -void BaseCode::call(RexxActivity *activity, RexxString *msgname, RexxObject **arguments, size_t argcount, ProtectedObject &result) +void BaseCode::call(RexxActivity *activity, RoutineClass *routine, RexxString *msgname, RexxObject **arguments, size_t argcount, ProtectedObject &result) { // The subcasses decide which of run and call are allowed reportException(Error_Interpretation); Modified: sandbox/rick/opt/kernel/classes/MethodClass.hpp =================================================================== --- sandbox/rick/opt/kernel/classes/MethodClass.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/MethodClass.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -61,8 +61,8 @@ { public: virtual void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, size_t, RexxObject **, ProtectedObject &); - virtual void call(RexxActivity *, RexxString *, RexxObject **, size_t, RexxString *, RexxString *, int, ProtectedObject &); - virtual void call(RexxActivity *, RexxString *, RexxObject **, size_t, ProtectedObject &); + virtual void call(RexxActivity *, RoutineClass *, RexxString *, RexxObject **, size_t, RexxString *, RexxString *, int, ProtectedObject &); + virtual void call(RexxActivity *, RoutineClass *, RexxString *, RexxObject **, size_t, ProtectedObject &); virtual RexxArray *getSource(); virtual RexxObject *setSecurityManager(RexxObject *manager); virtual RexxSource *getSourceObject(); Modified: sandbox/rick/opt/kernel/classes/NumberStringClass.cpp =================================================================== --- sandbox/rick/opt/kernel/classes/NumberStringClass.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/NumberStringClass.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -2720,6 +2720,46 @@ return Retval; /* return proper result */ } + +RexxObject *RexxNumberString::getValue( + RexxActivation *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + +RexxObject *RexxNumberString::getValue( + RexxVariableDictionary *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + +RexxObject *RexxNumberString::getRealValue( + RexxActivation *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + +RexxObject *RexxNumberString::getRealValue( + RexxVariableDictionary *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + void *RexxNumberString::operator new(size_t size, size_t length) /******************************************************************************/ /* Function: Create a new NumberString object */ Modified: sandbox/rick/opt/kernel/classes/NumberStringClass.hpp =================================================================== --- sandbox/rick/opt/kernel/classes/NumberStringClass.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/NumberStringClass.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -148,8 +148,10 @@ RexxString *formatInternal(size_t, size_t, size_t, size_t, RexxNumberString *, size_t, bool); RexxObject *operatorNot(RexxObject *); RexxObject *evaluate(RexxActivation *, RexxExpressionStack *); - RexxObject *getValue(RexxActivation *context){return this;} - RexxObject *getValue(RexxVariableDictionary *dictionary){return this;} + RexxObject *getValue(RexxActivation *context); + RexxObject *getValue(RexxVariableDictionary *dictionary); + RexxObject *getRealValue(RexxActivation *); + RexxObject *getRealValue(RexxVariableDictionary *); RexxObject *trunc(RexxObject *); RexxObject *truncInternal(size_t); RexxObject *unknown(RexxString *, RexxArray *); Modified: sandbox/rick/opt/kernel/classes/ObjectClass.hpp =================================================================== --- sandbox/rick/opt/kernel/classes/ObjectClass.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/ObjectClass.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -260,6 +260,8 @@ virtual RexxObject *evaluate(RexxActivation *, RexxExpressionStack *) { return OREF_NULL; } virtual RexxObject *getValue(RexxActivation *) { return OREF_NULL; } virtual RexxObject *getValue(RexxVariableDictionary *) { return OREF_NULL; } + virtual RexxObject *getRealValue(RexxActivation *) { return OREF_NULL; } + virtual RexxObject *getRealValue(RexxVariableDictionary *) { return OREF_NULL; } virtual void uninit() {;} virtual HashCode hash() { return getHashValue(); } virtual HashCode getHashValue() { return identityHash(); } Modified: sandbox/rick/opt/kernel/classes/RoutineClass.cpp =================================================================== --- sandbox/rick/opt/kernel/classes/RoutineClass.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/RoutineClass.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -118,7 +118,7 @@ { ProtectedObject p(this); // belt-and-braces to make sure this is protected // just forward this to the code object - code->call(activity, msgname, argPtr, argcount, calltype, environment, context, result); + code->call(activity, this, msgname, argPtr, argcount, calltype, environment, context, result); } @@ -134,7 +134,7 @@ /****************************************************************************/ { ProtectedObject p(this); // belt-and-braces to make sure this is protected - code->call(activity, OREF_NONE, arguments, argCount, calltype, environment, PROGRAMCALL, result); + code->call(activity, this, OREF_NONE, arguments, argCount, calltype, environment, PROGRAMCALL, result); } Modified: sandbox/rick/opt/kernel/classes/StringClass.cpp =================================================================== --- sandbox/rick/opt/kernel/classes/StringClass.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/StringClass.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -1630,6 +1630,46 @@ } +RexxObject *RexxString::getValue( + RexxActivation *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + +RexxObject *RexxString::getValue( + RexxVariableDictionary *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + +RexxObject *RexxString::getRealValue( + RexxActivation *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + +RexxObject *RexxString::getRealValue( + RexxVariableDictionary *context) /* current activation context */ +/******************************************************************************/ +/* Function: Polymorphic get_value function used with expression terms */ +/******************************************************************************/ +{ + return (RexxObject *)this; /* just return this value */ +} + + RexxString *RexxString::newString(const char *string, size_t length) /******************************************************************************/ /* Function: Allocate (and initialize) a string object */ Modified: sandbox/rick/opt/kernel/classes/StringClass.hpp =================================================================== --- sandbox/rick/opt/kernel/classes/StringClass.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/classes/StringClass.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -177,8 +177,10 @@ RexxObject *logicalOperation(RexxObject *, RexxObject *, unsigned int); RexxString *extract(size_t offset, size_t sublength) { return newString(this->getStringData() + offset, sublength); } RexxObject *evaluate(RexxActivation *, RexxExpressionStack *); - RexxObject *getValue(RexxActivation *context) {return this;} - RexxObject *getValue(RexxVariableDictionary *context) {return this;} + RexxObject *getValue(RexxActivation *); + RexxObject *getValue(RexxVariableDictionary *); + RexxObject *getRealValue(RexxActivation *); + RexxObject *getRealValue(RexxVariableDictionary *); /* the following methods are in */ /* OKBSUBS */ RexxString *center(RexxInteger *, RexxString *); Modified: sandbox/rick/opt/kernel/expression/CommonExternalFunctions.cpp =================================================================== --- sandbox/rick/opt/kernel/expression/CommonExternalFunctions.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/expression/CommonExternalFunctions.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -43,7 +43,7 @@ /******************************************************************************/ /* activation_rxfuncadd - Method to support RXFUNCADD function */ /******************************************************************************/ -RexxRoutine3(RexxBoolean, sysRxfuncadd, CSTRING,name, CSTRING,module, OPTIONAL_CSTRING, proc) +RexxRoutine3(logical_t, sysRxfuncadd, CSTRING,name, CSTRING,module, OPTIONAL_CSTRING, proc) { if (proc == NO_CSTRING) /* no procedure given? */ { @@ -57,7 +57,7 @@ /******************************************************************************/ /* activation_rxfuncdrop - Method to support RXFUNCDROP function */ /******************************************************************************/ -RexxRoutine1(RexxBoolean, sysRxfuncdrop, CSTRING, name) +RexxRoutine1(logical_t, sysRxfuncdrop, CSTRING, name) { /* try to drop the function */ return RexxDeregisterFunction(name) != 0; @@ -67,7 +67,7 @@ /******************************************************************************/ /* activation_rxfuncquery - Method to support RXFUNCQUERY function */ /******************************************************************************/ -RexxRoutine1(RexxBoolean, sysRxfuncquery, CSTRING,name) +RexxRoutine1(logical_t, sysRxfuncquery, CSTRING,name) { // see if the function is there return RexxQueryFunction(name) != 0; Modified: sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.cpp =================================================================== --- sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -227,7 +227,39 @@ return context->getLocalCompoundVariableValue(stemName, index, &tails[0], tailCount); } +/** + * Retrieve an object variable value, returning OREF_NULL if + * the variable does not have a value. + * + * @param dictionary The source variable dictionary. + * + * @return The variable value, or OREF_NULL if the variable is not + * assigned. + */ +RexxObject *RexxCompoundVariable::getRealValue(RexxVariableDictionary *dictionary) +{ + /* resolve the tail element */ + return dictionary->getCompoundVariableRealValue(stem, &tails[0], tailCount); +} + +/** + * Get the value of a variable without applying a default value + * to it. Used in the apis so the caller can more easily + * detect an uninitialized variable. + * + * @param context The current context. + * + * @return The value of the variable. Returns OREF_NULL if the variable + * has not been assigned a value. + */ +RexxObject *RexxCompoundVariable::getRealValue(RexxActivation *context) +{ + /* resolve the tail element */ + return context->getLocalCompoundVariableRealValue(stem, index, &tails[0], tailCount); +} + + void RexxCompoundVariable::set( RexxActivation *context, /* current activation context */ RexxObject *value ) /* new value to assign */ Modified: sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.hpp =================================================================== --- sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/expression/ExpressionCompoundVariable.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -66,6 +66,8 @@ RexxObject *evaluate(RexxActivation *, RexxExpressionStack *); RexxObject *getValue(RexxActivation *context); RexxObject *getValue(RexxVariableDictionary *context); + RexxObject *getRealValue(RexxVariableDictionary *); + RexxObject *getRealValue(RexxActivation *); bool exists(RexxActivation *); void set(RexxActivation *, RexxObject *) ; void set(RexxVariableDictionary *, RexxObject *); Modified: sandbox/rick/opt/kernel/expression/ExpressionStem.cpp =================================================================== --- sandbox/rick/opt/kernel/expression/ExpressionStem.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/expression/ExpressionStem.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -137,6 +137,34 @@ return context->getLocalStem(stem, index); } +/** + * Retrieve the real value of a stem variable. Stem variables + * will always be created on first reference, so there is no + * difference between getValue() and getRealValue(). + * + * @param dictionary The source variable dictionary. + * + * @return The stem object representing this variable. + */ +RexxObject *RexxStemVariable::getRealValue(RexxVariableDictionary *dictionary) +{ + return dictionary->getStem(this->stem); +} + +/** + * Retrieve the real value of a stem variable. Stem variables + * will always be created on first reference, so there is no + * difference between getValue() and getRealValue(). + * + * @param context The current execution context. + * + * @return The stem object representing this variable. + */ +RexxObject *RexxStemVariable::getRealValue(RexxActivation *context) +{ + return context->getLocalStem(stem, index); +} + void RexxStemVariable::set( RexxActivation *context, /* current activation context */ RexxObject *value ) /* new value to be assigned */ Modified: sandbox/rick/opt/kernel/expression/ExpressionStem.hpp =================================================================== --- sandbox/rick/opt/kernel/expression/ExpressionStem.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/expression/ExpressionStem.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -61,6 +61,8 @@ RexxObject *evaluate(RexxActivation *, RexxExpressionStack *); RexxObject *getValue(RexxVariableDictionary *); RexxObject *getValue(RexxActivation *); + RexxObject *getRealValue(RexxVariableDictionary *); + RexxObject *getRealValue(RexxActivation *); bool exists(RexxActivation *); void set(RexxActivation *, RexxObject *) ; void set(RexxVariableDictionary *, RexxObject *) ; Modified: sandbox/rick/opt/kernel/expression/ExpressionVariable.cpp =================================================================== --- sandbox/rick/opt/kernel/expression/ExpressionVariable.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/expression/ExpressionVariable.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -151,6 +151,39 @@ return value; /* return the located variable */ } +/** + * Retrieve an object variable value, returning OREF_NULL if + * the variable does not have a value. + * + * @param dictionary The source variable dictionary. + * + * @return The variable value, or OREF_NULL if the variable is not + * assigned. + */ +RexxObject *RexxParseVariable::getRealValue(RexxVariableDictionary *dictionary) +{ + /* look up the name */ + RexxVariable *variable = dictionary->getVariable(variableName); + return variable->getVariableValue();/* get the value */ +} + + +/** + * Get the value of a variable without applying a default value + * to it. Used in the apis so the caller can more easily + * detect an uninitialized variable. + * + * @param context The current context. + * + * @return The value of the variable. Returns OREF_NULL if the variable + * has not been assigned a value. + */ +RexxObject *RexxParseVariable::getRealValue(RexxActivation *context) +{ + RexxVariable *variable = context->getLocalVariable(variableName, index); + return variable->getVariableValue();/* get the value */ +} + void RexxParseVariable::set( RexxVariableDictionary *dictionary, /* current activation dictionary */ RexxObject *value ) Modified: sandbox/rick/opt/kernel/expression/ExpressionVariable.hpp =================================================================== --- sandbox/rick/opt/kernel/expression/ExpressionVariable.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/expression/ExpressionVariable.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -61,6 +61,8 @@ RexxObject *evaluate(RexxActivation *, RexxExpressionStack *); RexxObject *getValue(RexxVariableDictionary *); RexxObject *getValue(RexxActivation *); + RexxObject *getRealValue(RexxVariableDictionary *); + RexxObject *getRealValue(RexxActivation *); bool exists(RexxActivation *); void set(RexxActivation *, RexxObject *) ; void set(RexxVariableDictionary *, RexxObject *) ; Modified: sandbox/rick/opt/kernel/runtime/ActivityManager.cpp =================================================================== --- sandbox/rick/opt/kernel/runtime/ActivityManager.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/runtime/ActivityManager.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -266,10 +266,11 @@ /** - * Create a new activation for CALLing a method (vs. a method + * Create a new activation for CALLing a routine (vs. a method * invocation). * * @param activity The activity we're running on. + * @param routine The routine object we're calling. * @param code The code object associated with the method. * @param parent The parent activation. OREF_NULL is used if this is a top-level * call. @@ -280,7 +281,7 @@ * * @return The newly created activation. */ -RexxActivation *ActivityManager::newActivation(RexxActivity *activity, RexxCode *code, RexxActivation *parent, RexxString *calltype, RexxString *environment, int context) +RexxActivation *ActivityManager::newActivation(RexxActivity *activity, RoutineClass *routine, RexxCode *code, RexxActivation *parent, RexxString *calltype, RexxString *environment, int context) { if (activationCacheSize != 0) /* have a cached entry? */ @@ -290,7 +291,7 @@ RexxActivation *resultActivation = (RexxActivation *)activations->stackTop(); /* reactivate this */ resultActivation->setHasReferences(); - resultActivation = new (resultActivation) RexxActivation(activity, code, parent, calltype, environment, context); + resultActivation = new (resultActivation) RexxActivation(activity, routine, code, parent, calltype, environment, context); activations->pop(); /* Remove reused activation from stac*/ return resultActivation; @@ -298,7 +299,7 @@ else /* need to create a new one */ { /* Create new Activation. */ - return new RexxActivation(activity, code, parent, calltype, environment, context); + return new RexxActivation(activity, routine, code, parent, calltype, environment, context); } } @@ -888,6 +889,6 @@ */ RexxObject *NativeContextBlock::protect(RexxObject *o) { - self->saveObject(o); + self->createLocalReference(o); return o; } Modified: sandbox/rick/opt/kernel/runtime/ActivityManager.hpp =================================================================== --- sandbox/rick/opt/kernel/runtime/ActivityManager.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/runtime/ActivityManager.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -71,7 +71,7 @@ static void createLocks(); static void closeLocks(); static void init(); - static RexxActivation *newActivation(RexxActivity *activity, RexxCode *code, RexxActivation *parent, RexxString *calltype, RexxString *environment, int context); + static RexxActivation *newActivation(RexxActivity *activity, RoutineClass *routine, RexxCode *code, RexxActivation *parent, RexxString *calltype, RexxString *environment, int context); static RexxActivation *newActivation(RexxActivity *activity, RexxMethod *method, RexxCode *code); static void cacheActivation(RexxActivation *activation); static RexxActivity *newActivity(int priority); Modified: sandbox/rick/opt/kernel/runtime/CPPCode.cpp =================================================================== --- sandbox/rick/opt/kernel/runtime/CPPCode.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/runtime/CPPCode.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -401,6 +401,7 @@ #include "QueueClass.hpp" #include "SupplierClass.hpp" #include "MethodClass.hpp" +#include "RoutineClass.hpp" #include "RexxEnvelope.hpp" #include "MessageClass.hpp" #include "StemClass.hpp" @@ -603,7 +604,7 @@ CPPM(RexxMethod::setUnGuardedRexx), /* Method methods */ CPPM(RexxMethod::setGuardedRexx), -CPPM(RexxMethod::source), +CPPM(BaseExecutable::source), CPPM(RexxMethod::setPrivateRexx), CPPM(RexxMethod::setProtectedRexx), CPPM(RexxMethod::setSecurityManager), @@ -611,9 +612,12 @@ CPPM(RexxMethod::isPrivateRexx), CPPM(RexxMethod::isProtectedRexx), -CPPM(RexxMethodClass::newFileRexx), -CPPM(RexxMethodClass::newRexx), +CPPM(RexxMethod::newFileRexx), +CPPM(RexxMethod::newRexx), +CPPM(RoutineClass::newFileRexx), +CPPM(RoutineClass::newRexx), + CPPM(RexxNumberString::formatRexx), /* NumberString methods */ CPPM(RexxNumberString::trunc), CPPM(RexxNumberString::equal), Modified: sandbox/rick/opt/kernel/runtime/CreateRoutineDispatcher.cpp =================================================================== --- sandbox/rick/opt/kernel/runtime/CreateRoutineDispatcher.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/runtime/CreateRoutineDispatcher.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -119,7 +119,7 @@ activity->run(callback); new_arglist = callback.argumentList; - activation->saveObject(new_arglist); + activation->createLocalReference(new_arglist); } // use dummy argument array else Modified: sandbox/rick/opt/kernel/runtime/Numerics.cpp =================================================================== --- sandbox/rick/opt/kernel/runtime/Numerics.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/runtime/Numerics.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -305,7 +305,7 @@ // is this an integer value (very common) if (isInteger(source)) { - result = ((RexxInteger *)source)->stringsize(); + result = ((RexxInteger *)source)->stringSize(); return true; } else @@ -319,7 +319,7 @@ } // if not a valid whole number, reject this too - return nString->uint64Value(&result, DIGITS64); + return nString->unsignedInt64Value(&result, DIGITS64); } } Modified: sandbox/rick/opt/kernel/runtime/PackageManager.hpp =================================================================== --- sandbox/rick/opt/kernel/runtime/PackageManager.hpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/runtime/PackageManager.hpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -71,9 +71,9 @@ static RoutineClass *resolveRoutine(RexxString *function); static RoutineClass *createRegisteredRoutine(RexxString *function); static RoutineClass *getLoadedRoutine(RexxString *function); - PNATIVEMETHOD resolveMethodEntry(RexxString *package, RexxString *name); - PNATIVEROUTINE resolveRoutineEntry(RexxString *package, RexxString *name); - PREGISTEREDROUTINE resolveRegisteredRoutineEntry(RexxString *package, RexxString *name); + static PNATIVEMETHOD resolveMethodEntry(RexxString *package, RexxString *name); + static PNATIVEROUTINE resolveRoutineEntry(RexxString *package, RexxString *name); + static PREGISTEREDROUTINE resolveRegisteredRoutineEntry(RexxString *package, RexxString *name); static void addPackageRoutine(RexxString *name, RoutineClass *func); static void loadInternalPackage(RexxString *name, RexxPackageEntry *p); static RexxObject *addRegisteredRoutine(RexxString *name, RexxString *module, RexxString *proc); Modified: sandbox/rick/opt/kernel/runtime/RexxActivation.cpp =================================================================== --- sandbox/rick/opt/kernel/runtime/RexxActivation.cpp 2008-02-11 00:48:50 UTC (rev 2354) +++ sandbox/rick/opt/kernel/runtime/RexxActivation.cpp 2008-02-12 00:59:58 UTC (rev 2355) @@ -125,6 +125,7 @@ setGuarded(); } this->code = _code; /* get the REXX method object */ + this->method = _method; // save the method link also this->settings.intermediate_trace = false; this->activation_context = METHODCALL; // the context is a method call /* save the sender activation */ @@ -161,12 +162,13 @@ } -RexxActivation::RexxActivation(RexxActivity *_activity, RexxCode *_code, RexxActivation *_parent, +RexxActivation::RexxActivation(RexxActivity *_activity, RoutineClass *_routine, RexxCode *_code, RexxActivation *_parent, RexxString *calltype, RexxString *env, int context) { this->clearObject(); /* start with a fresh object */ this->activity = _activity; /* save the activity pointer */ this->code = _code; /* get the REXX method object */ + this->routine = _routine; // need to save the target routine also if (context == DEBUGPAUSE) /* actually a debug pause? */ { this->debug_pause = true; /* set up for debugging intercepts */ @@ -750,6 +752,8 @@ memory_mark(this->receiver); memory_mark(this->scope); memory_mark(this->code); + memory_mark(this->method); + memory_mark(this->routine); memory_mark(this->settings.securityManager); memory_mark(this->receiver); memory_mark(this->activity); @@ -799,6 +803,8 @@ { memory_mark_general(this->receiver); memory_mark_general(this->code); + memory_mark_general(this->method); + memory_mark_general(this->routine); memory_mark_general(this->settings.securityManager); memory_mark_general(this->receiver); memory_mark_general(this->activity); @@ -1987,7 +1993,7 @@ /* translate the code */ RexxCode * newCode = this->code->interpret(codestring, this->current->getLineNumber()); /* create a new activation */ - RexxActivation *newActivation = ActivityManager::newActivation(this->activity, newCode, this, OREF_NULL, OREF_NULL, INTERPRET); + RexxActivation *newActivation = ActivityManager::newActivation(this->activity, OREF_NULL, newCode, this, OREF_NULL, OREF_NULL, INTERPRET); this->activity->pushStackFrame(newActivation); /* push on the activity stack */ ProtectedObject r; /* run the internal routine on the */ @@ -2008,7 +2014,7 @@ /* translate the code */ RexxCode *newCode = this->code->interpret(codestring, this->current->getLineNumber()); /* create a new activation */ - RexxActivation *newActivation = ActivityManager::newActivation(this->activity, newCode, this, OREF_NULL, OREF_NULL, DEBUGPAUSE); + RexxActivation *newActivation = ActivityManager::newActivation(this->activity, OREF_NULL, newCode, this, OREF_NULL, OREF_NULL, DEBUGPAUSE); this->activity->pushStackFrame(newActivation); /* push on the activity stack */ ProtectedObject r; /* run the internal routine on the */ @@ -2341,7 +2347,7 @@ /* initialize the SIGL variable */ this->setLocalVariable(OREF_SIGL, VARIABLE_SIGL, new_integer(lineNum)); /* create a new activation */ - newActivation = ActivityManager::newActivation(this->activity, + newActivation = ActivityManager::newActivation(this->activity, OREF_NULL, this->settings.parent_code, this, OREF_NULL, OREF_NULL, INTERNALCALL); this->activity->pushStackFrame(newActivation); /* push on the activity stack */ @@ -2... [truncated message content] |