44 #ifndef Included_RexxActivity
45 #define Included_RexxActivity
56 #include "SysActivity.hpp"
100 #define VALUE_MARKER " => "
102 #define ASSIGNMENT_MARKER " <= "
105 #define MAX_TRACEBACK_LIST 80
106 #define MAX_TRACEBACK_INDENT 20
117 #define LAST_EXIT (RXNOOFEXITS - 1)
132 void *
operator new(size_t);
133 inline void *
operator new(
size_t size,
void *ptr) {
return ptr;};
134 inline void operator delete(
void *) { ; }
135 inline void operator delete(
void *,
void *) { ; }
233 bool callExit(
RexxActivation * activation,
const char *exitName,
int function,
int subfunction,
void *exitbuffer);
RexxActivity * contextToActivity(RexxThreadContext *c)
@ TRACE_PREFIX_NAMED_ARGUMENT
@ TRACE_PREFIX_INVOCATION
@ TRACE_PREFIX_DOTVARIABLE
@ TRACE_PREFIX_ASSIGNMENT
RexxNativeActivation * contextToActivation(RexxThreadContext *c)
void resolve(const char *name)
void setEntryPoint(REXXPFN e)
RexxObject ** allocateFrame(size_t entries)
void releaseFrame(RexxObject **frame)
void addRunningRequires(RexxString *program)
size_t getActivationLevel()
bool callTraceTestExit(RexxActivation *, bool)
RexxActivity * nestedActivity
CommandHandler * resolveCommandHandler(RexxString *)
void queue(RexxActivation *, RexxString *, int)
void pushStackFrame(RexxActivationBase *new_activation)
void releaseStackFrame(RexxObject **frame)
void setupAttachedActivity(InterpreterInstance *interpreter)
static void initializeThreadContext()
void restoreActivationLevel(size_t l)
bool callScriptingExit(RexxActivation *, RexxString *, RexxObject *, ProtectedObject &, RexxObject **, size_t)
RexxDirectory * getThreadLocal()
void reportAnException(wholenumber_t, const char *)
RexxNativeActivation * getApiContext()
static MethodContextInterface methodContextFunctions
void callTerminationExit(RexxActivation *)
RexxActivation * currentRexxFrame
void kill(RexxDirectory *)
static wholenumber_t requestAccessCounter()
thread_id_t threadIdMethod()
RexxActivity * oldActivity
void enterCurrentThread()
void setExitHandler(RXSYSEXIT &e)
bool callHaltTestExit(RexxActivation *)
bool callQueueNameExit(RexxActivation *, RexxString *&)
void setExitHandler(int exitNum, REXXPFN e)
RexxActivationStack frameStack
void generateProgramInformation(RexxDirectory *exObj)
ExitHandler sysexits[LAST_EXIT]
SecurityManager * getEffectiveSecurityManager()
RexxObject * displayDebug(RexxDirectory *)
RexxString * pullInput(RexxActivation *)
bool callObjectFunctionExit(RexxActivation *, RexxString *, RexxObject *, ProtectedObject &, RexxObject **, size_t, size_t)
bool isThread(thread_id_t id)
void inheritSettings(RexxActivity *parent)
bool callNovalueExit(RexxActivation *, RexxString *, RexxObject *&)
void traceOutput(RexxActivation *, RexxString *)
void setInterpreterRoot()
void callInitializationExit(RexxActivation *)
static ExitContextInterface exitContextFunctions
RexxObject * getLocalEnvironment(RexxString *name)
void createMethodContext(MethodContext &context, RexxNativeActivation *owner)
bool callFunctionExit(RexxActivation *, RexxString *, RexxObject *, ProtectedObject &, RexxObject **, size_t)
RexxString * messageSubstitution(RexxString *, RexxArray *)
void raiseException(wholenumber_t, RexxString *, RexxArray *, RexxObject *)
void terminatePoolActivity()
RexxString * getLastMessageName()
size_t activationStackSize
void setExitHandler(int exitNum, const char *e)
RexxInternalStack * activations
ActivationFrame * activationFrames
NumericSettings * getNumericSettings()
RexxActivationBase * topStackFrame
void disableExit(int exitNum)
RexxActivity(RESTORETYPE restoreType)
void setNestedActivity(RexxActivity *a)
void allocateLocalVariableFrame(RexxLocalVariables *locals)
void popStackFrame(bool reply)
SysActivity currentThread
void cleanupActivityResources()
RexxActivity * spawnReply()
void liveGeneral(int reason)
RexxDirectory * threadLocalEnvironment
bool callTraceExit(RexxActivation *, RexxString *)
void unwindToDepth(size_t depth)
void removeRunningRequires(RexxObject *program)
InterpreterInstance * instance
RexxString * buildMessage(wholenumber_t, RexxArray *)
RexxActivity * getNestedActivity()
void allocateStackFrame(RexxExpressionStack *stack, size_t entries)
NumericSettings * numericSettings
void addToInstance(InterpreterInstance *interpreter)
void reraiseException(RexxDirectory *)
bool isExitEnabled(int exitNum)
bool checkRequires(RexxString *n)
wholenumber_t displayCondition(RexxDirectory *conditionObject)
size_t getActivationDepth()
RexxString * lineIn(RexxActivation *)
void updateFrameMarkers()
void unwindToFrame(RexxActivation *frame)
RexxDirectory * conditionobj
void createNewActivationStack()
bool callPullExit(RexxActivation *, RexxString *&)
void setRandomSeed(uint64_t seed)
void createCallContext(CallContext &context, RexxNativeActivation *owner)
void resetRunningRequires()
void createExitContext(ExitContext &context, RexxNativeActivation *owner)
InterpreterInstance * getInstance()
SecurityManager * getInstanceSecurityManager()
wholenumber_t errorNumber(RexxDirectory *conditionObject)
RexxMessage * dispatchMessage
void checkActivationStack()
void clearCurrentCondition()
void raisePropagate(RexxDirectory *)
bool callPushExit(RexxActivation *, RexxString *, int)
RexxDirectory * createConditionObject(RexxString *, RexxObject *, RexxString *, RexxObject *, RexxObject *)
RexxMethod * getLastMethod()
static CallContextInterface callContextFunctions
bool callHaltClearExit(RexxActivation *)
static RexxThreadInterface threadContextFunctions
RexxTable * requiresTable
bool callExit(RexxActivation *activation, const char *exitName, int function, int subfunction, void *exitbuffer)
RexxString * resolveProgramName(RexxString *, RexxString *, RexxString *)
void generateRandomNumberSeed()
RexxActivationBase * getTopStackFrame()
void sayOutput(RexxActivation *, RexxString *)
RexxObject ** allocateFrame(size_t entries)
bool callQueueSizeExit(RexxActivation *, RexxInteger *&)
bool callCommandExit(RexxActivation *, RexxString *, RexxString *, ProtectedObject &result, ProtectedObject &condition)
RexxDirectory * getLocal()
ActivityContext threadContext
RexxArray * generateStackFrames(bool skipFirst)
bool callValueExit(RexxActivation *, RexxString *, RexxString *, RexxObject *, RexxObject *&)
RexxObject * display(RexxDirectory *)
void flatten(RexxEnvelope *)
void checkDeadLock(RexxActivity *)
RexxDirectory * createExceptionObject(wholenumber_t, RexxString *, RexxArray *, RexxObject *)
void setSuspended(bool s)
RexxObject * waitingObject
ProtectedObject * protectedObjects
ExitHandler & getExitHandler(int exitNum)
bool callSayExit(RexxActivation *, RexxString *)
RexxObject * runningRequires(RexxString *program)
RexxObject * lineOut(RexxString *)
RexxThreadContext * getThreadContext()
RexxDirectory * getCurrentCondition()
void cleanupStackFrame(RexxActivationBase *poppedStackFrame)
bool callTerminalInputExit(RexxActivation *, RexxString *&)
void waitReserve(RexxObject *)
bool raiseCondition(RexxString *, RexxObject *, RexxString *, RexxObject *, RexxObject *)
bool callDebugInputExit(RexxActivation *, RexxString *&)
RexxActivation * getCurrentRexxFrame()
RexxString * traceInput(RexxActivation *)
void setFrame(RexxObject **frames, size_t items)
virtual RexxObject * remove(RexxObject *key)
void setFrame(RexxObject **frame)
RexxObject * stringAdd(RexxObject *, RexxString *)
RexxObject * stringGet(RexxString *key)
bool equals(thread_id_t t)
void wait(const char *ds, int di)
CONSTANT_STRING sysexit_name
RexxThreadContext threadContext
unsigned __int64 uint64_t