22 #ifndef ULTIMA8_USECODE_UCMACHINE_H 23 #define ULTIMA8_USECODE_UCMACHINE_H 25 #include "ultima/ultima8/misc/common_types.h" 26 #include "ultima/ultima8/misc/set.h" 27 #include "ultima/shared/std/string.h" 28 #include "ultima/shared/std/containers.h" 29 #include "ultima/ultima8/usecode/intrinsics.h" 45 UCMachine(
const Intrinsic *iset,
unsigned int icount);
59 void freeString(uint16 s);
60 void freeStringList(uint16 l);
61 void freeList(uint16 l);
63 uint16 duplicateString(uint16 str);
65 void usecodeStats()
const;
67 static uint32 listToPtr(uint16 l);
68 static uint32 stringToPtr(uint16 s);
69 static uint32 stackToPtr(uint16 pid, uint16 offset);
70 static uint32 globalToPtr(uint16 offset);
71 static uint32 objectToPtr(uint16 objID);
73 static uint16 ptrToObject(uint32 ptr);
75 bool assignPointer(uint32 ptr,
const uint8 *data, uint32 size);
76 bool dereferencePointer(uint32 ptr, uint8 *data, uint32 size);
88 INTRINSIC(I_dummyProcess);
91 INTRINSIC(I_rndRange);
92 INTRINSIC(I_numToStr);
95 void loadIntrinsics(
const Intrinsic *i,
unsigned int icount);
99 const Intrinsic *_intrinsics;
100 unsigned int _intrinsicCount;
108 uint16 assignString(
const char *str);
109 uint16 assignList(
UCList *l);
117 bool _tracingEnabled;
123 inline bool trace_show(ProcId pid, ObjId objid, uint16 ucclass) {
124 if (!_tracingEnabled)
return false;
125 if (_traceAll)
return true;
126 if (_traceObjIDs.
find(objid) != _traceObjIDs.end())
return true;
127 if (_tracePIDs.
find(pid) != _tracePIDs.end())
return true;
128 if (_traceClasses.
find(ucclass) != _traceClasses.end())
return true;
Definition: uc_process.h:34
Definition: convert_usecode.h:28
iterator find(const T item)
Definition: set.h:84
Definition: detection.h:27
Definition: uc_machine.h:42
Definition: global_storage.h:32
Definition: debugger.h:37