123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- //===========================================================================//
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- //===========================================================================//
- //***************************************************************************
- //
- // ENVIRON.H
- //
- //***************************************************************************
- #ifndef ABLENV_H
- #define ABLENV_H
- #include <stdio.h>
- #ifndef DABLENV_H
- #include "dablenv.h"
- #endif
- #ifndef ABLGEN_H
- #include "ablgen.h"
- #endif
- #ifndef ABLSYMT_H
- #include "ablsymt.h"
- #endif
- #ifndef ABLEXEC_H
- #include "ablexec.h"
- #endif
- #ifndef DABLDBUG_H
- #include "dabldbug.h"
- #endif
- #ifndef ABLSCAN_H
- #include "ablscan.h"
- #endif
- //***************************************************************************
- typedef struct _SourceFile {
- char fileName[MAXLEN_FILENAME];
- unsigned char fileNumber;
- ABLFile* filePtr;
- long lineNumber;
- } SourceFile;
- //---------------------------------------------------------------------------
- #define MAX_USER_FILES 6
- #define MAX_USER_FILE_LINES 50
- #define MAX_USER_FILE_LINELEN 200
- class UserFile {
- public:
- long handle;
- bool inUse;
- char fileName[MAXLEN_FILENAME];
- ABLFile* filePtr;
- long numLines;
- long totalLines;
- char lines[MAX_USER_FILE_LINES][MAX_USER_FILE_LINELEN];
- static UserFilePtr files[MAX_USER_FILES];
- public:
- void* operator new (size_t mySize);
- void operator delete (void* us);
-
- void init (void) {
- handle = -1;
- inUse = false;
- fileName[0] = NULL;
- filePtr = NULL;
- numLines = 0;
- totalLines = 0;
- for (long i = 0; i < MAX_USER_FILE_LINES; i++)
- lines[i][0] = NULL;
- }
- UserFile (void) {
- init();
- }
- void destroy (void);
- ~UserFile (void) {
- destroy();
- }
- void dump (void);
- void close (void);
- long open (char* fileName);
- void write (char* s);
- static void setup (void);
- static void cleanup (void);
- static UserFilePtr getNewFile (void);
- };
- //---------------------------------------------------------------------------
- #define MAX_ABLMODULE_NAME 5
- #define MAX_SOURCE_FILES 256 // per module
- #define MAX_LIBRARIES_USED 25 // per module
- #define MAX_STATE_HANDLES_PER_MODULE 10
- typedef struct {
- char name[128];
- long size;
- } VariableInfo;
- typedef struct {
- char name[128];
- long codeSegmentSize;
- } RoutineInfo;
- typedef struct {
- char name[128];
- char fileName[128];
- long numStaticVars;
- long totalSizeStaticVars;
- VariableInfo largestStaticVar;
- long totalCodeSegmentSize;
- long numRoutines;
- RoutineInfo routineInfo[128];
- } ModuleInfo;
- typedef struct {
- char* fileName;
- SymTableNodePtr moduleIdPtr;
- long numSourceFiles;
- char** sourceFiles;
- long numLibrariesUsed;
- ABLModulePtr* librariesUsed;
- long numStaticVars;
- long numOrderCalls;
- long numStateHandles;
- StateHandleInfoPtr stateHandles;
- long* sizeStaticVars;
- long totalSizeStaticVars;
- long numInstances;
- } ModuleEntry;
- typedef ModuleEntry* ModuleEntryPtr;
- class ABLModule {
- private:
- long id;
- char name[MAX_ABLMODULE_NAME];
- long handle;
- StackItemPtr staticData;
- unsigned long* orderCallFlags;
- StackItem returnVal;
- bool initCalled;
- SymTableNodePtr prevState;
- SymTableNodePtr state;
- WatchManagerPtr watchManager;
- BreakPointManagerPtr breakPointManager;
- bool trace;
- bool step;
- bool traceEntry;
- bool traceExit;
- //static long numModules;
- public:
- void* operator new (size_t mySize);
- void operator delete (void* us);
-
- void init (void) {
- id = -1;
- name[0] = NULL;
- handle = -1;
- staticData = NULL;
- returnVal.integer = 0;
- initCalled = false;
- prevState = NULL;
- state = NULL;
- watchManager = NULL;
- breakPointManager = NULL;
- trace = false;
- step = false;
- traceEntry = false;
- traceExit = false;
- }
- ABLModule (void) {
- init();
- }
- long init (long moduleHandle);
-
- void write (ABLFile* moduleFile);
-
- void read (ABLFile* moduleFile);
- long getId (void) {
- return(id);
- }
- long getRealId (void);
- long getHandle (void) {
- return(handle);
- }
- StackItemPtr getStaticData (void) {
- return(staticData);
- }
- void setInitCalled (bool called) {
- initCalled = called;
- }
- bool getInitCalled (void) {
- return(initCalled);
- }
- char* getFileName (void);
- char* getName (void) {
- return(name);
- }
- void setName (char* _name);
- unsigned long* getOrderCallFlags (void) {
- return(orderCallFlags);
- }
- void setPrevState (SymTableNodePtr stateSym) {
- prevState = stateSym;
- }
- SymTableNodePtr getPrevState (void) {
- return(prevState);
- }
- long getPrevStateHandle (void);
- void setState (SymTableNodePtr stateSym) {
- state = stateSym;
- }
- SymTableNodePtr getState (void) {
- return(state);
- }
- long getStateHandle (void);
- bool isLibrary (void);
- void resetOrderCallFlags (void);
- void setOrderCallFlag (unsigned char dword, unsigned char bit);
- void clearOrderCallFlag (unsigned char orderDWord, unsigned char orderBitMask);
- bool getOrderCallFlag (unsigned char dword, unsigned char bit) {
- return((orderCallFlags[dword] & (1 << bit)) != 0);
- }
- WatchManagerPtr getWatchManager (void) {
- return(watchManager);
- }
- BreakPointManagerPtr getBreakPointManager (void) {
- return(breakPointManager);
- }
- void setTrace (bool _trace) {
- trace = _trace;
- traceEntry = _trace;
- traceExit = _trace;
- }
- bool getTrace (void) {
- return(trace);
- }
- void setStep (bool _step) {
- step = _step;
- }
- bool getStep (void) {
- return(step);
- }
- long execute (ABLParamPtr paramList = NULL);
- long execute (ABLParamPtr moduleParamList, SymTableNodePtr functionIdPtr);
- SymTableNodePtr findSymbol (char* symbolName, SymTableNodePtr curFunction = NULL, bool searchLibraries = false);
- SymTableNodePtr findFunction (char* functionName, bool searchLibraries = false);
- SymTableNodePtr findState (char* stateName);
- long findStateHandle (char* stateName);
- char* getSourceFile (long fileNumber);
- char* getSourceDirectory (long fileNumber, char* directory);
- void getInfo (ModuleInfo* moduleInfo);
- float getReal (void) {
- return(returnVal.real);
- }
-
- long getInteger (void) {
- return(returnVal.integer);
- }
- long setStaticInteger (char* name, long value);
- long getStaticInteger (char* name);
- long setStaticReal (char* name, float value);
-
- float getStaticReal (char* name);
- long setStaticIntegerArray (char* name, long size, long* values);
- long getStaticIntegerArray (char* name, long size, long* values);
-
- long setStaticRealArray (char* name, long size, float* values);
- long getStaticRealArray (char* name, long size, float* values);
- void destroy (void);
- ~ABLModule (void) {
- destroy();
- }
- };
- //*************************************************************************
- void initModuleRegistry (long maxModules);
- void destroyModuleRegistry (void);
- void initLibraryRegistry (long maxLibraries);
- void destroyLibraryRegistry (void);
- //***************************************************************************
- #endif
|