📄 utdatabaseup.h
字号:
#define utSymArrayGetDestructorCallback() (utSymArrayDestructorCallback)#define utSymArrayNextFree(_SymArray) (((utSymArray *)(void *)(utSymArrays.SymIndex))[utSymArray2ValidIndex(_SymArray)])#define utSymArraySetNextFree(SymArray, value) ( \ (void)utRecordField(utModuleID, 16, utSymArray2ValidIndex(SymArray), true), \ ((utSymArray *)(void *)(utSymArrays.SymIndex)) \ [utSymArray2ValidIndex(SymArray)] = (value), \ (void)utRecordField(utModuleID, 16, utSymArray2ValidIndex(SymArray), false))#define utSymArrayAllocRaw() ( \ utRootData.firstFreeSymArray != utSymArrayNull? \ (utTemp_.SymArray = utRootData.firstFreeSymArray, \ utSetFirstFreeSymArray(utSymArrayNextFree(utTemp_.SymArray)), true) \ : (utRootData.usedSymArray == utRootData.allocatedSymArray && (utSymArrayAllocMore(), true), \ utTemp_.SymArray = utIndex2SymArray(utRootData.usedSymArray), \ utSetUsedSymArray(utUsedSymArray() + 1)), \ utTemp_.SymArray)#define utSymArrayAlloc() ( \ utRootData.firstFreeSymArray != utSymArrayNull? \ (utTemp_.SymArray = utRootData.firstFreeSymArray, \ utSetFirstFreeSymArray(utSymArrayNextFree(utTemp_.SymArray)), true) \ : (utRootData.usedSymArray == utRootData.allocatedSymArray && (utSymArrayAllocMore(), true), \ utTemp_.SymArray = utIndex2SymArray(utRootData.usedSymArray), \ utSetUsedSymArray(utUsedSymArray() + 1)), \ utSymArraySetSymIndex(utTemp_.SymArray, 0), \ utSymArraySetNumSym(utTemp_.SymArray, 0), \ utSymArraySetNumSym(utTemp_.SymArray, 0), \ utSymArraySetUsedSym(utTemp_.SymArray, 0), \ utSymArrayConstructorCallback != NULL && (utSymArrayConstructorCallback(utTemp_.SymArray), true), \ utTemp_.SymArray)#define utSymArrayFree(SymArray) (utSymArrayFreeSyms(SymArray), \ utSymArraySetNextFree(SymArray, utRootData.firstFreeSymArray), \ utSetFirstFreeSymArray(SymArray))void utSymArrayDestroy(utSymArray SymArray);void utSymArrayAllocMore(void);void utSymArrayAllocSyms(utSymArray SymArray, uint32 numSyms);void utSymArrayResizeSyms(utSymArray SymArray, uint32 numSyms);void utSymArrayFreeSyms(utSymArray SymArray);void utCompactSymArraySyms(void);void utSymArrayInsertSym(utSymArray SymArray, uint32 x, utSym _Sym);void utSymArrayAppendSym(utSymArray SymArray, utSym _Sym);void utSymArrayRemoveSym(utSymArray SymArray, utSym _Sym);/*---------------------------------------------------------------------------------------- Temp Union structure - Macro temp variables, use only one----------------------------------------------------------------------------------------*/union utTempType_ { utSymtab Symtab; utSym Sym; utDynarray Dynarray; utSymArray SymArray;};extern union utTempType_ utTemp_;/*---------------------------------------------------------------------------------------- Constructor/Destructor hooks.----------------------------------------------------------------------------------------*/extern void(*utSymtabConstructorCallback)(utSymtab);extern void(*utSymConstructorCallback)(utSym);extern void(*utDynarrayConstructorCallback)(utDynarray);extern void(*utDynarrayDestructorCallback)(utDynarray);extern void(*utSymArrayConstructorCallback)(utSymArray);extern void(*utSymArrayDestructorCallback)(utSymArray);/*---------------------------------------------------------------------------------------- Root structure----------------------------------------------------------------------------------------*/struct utRootType_ { uint32 hash; /* This depends only on the structure of the database */ uint32 usedSymtab, allocatedSymtab; uint32 usedSymtabTable, allocatedSymtabTable, freeSymtabTable; uint32 usedSym, allocatedSym; uint32 usedSymName, allocatedSymName, freeSymName; utDynarray firstFreeDynarray; uint32 usedDynarray, allocatedDynarray; uint32 usedDynarrayValue, allocatedDynarrayValue, freeDynarrayValue; utSymArray firstFreeSymArray; uint32 usedSymArray, allocatedSymArray; uint32 usedSymArraySym, allocatedSymArraySym, freeSymArraySym;};extern struct utRootType_ utRootData;#define utHash() (utRootData.hash)#define utUsedSymtab() utRootData.usedSymtab#define utAllocatedSymtab() utRootData.allocatedSymtab#define utSetUsedSymtab(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedSymtab, true), \ utRootData.usedSymtab = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedSymtab, false))#define utSetAllocatedSymtab(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedSymtab, true), \ utRootData.allocatedSymtab = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedSymtab, false))#define utUsedSymtabTable() utRootData.usedSymtabTable#define utAllocatedSymtabTable() utRootData.allocatedSymtabTable#define utFreeSymtabTable() utRootData.freeSymtabTable#define utSetUsedSymtabTable(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedSymtabTable, true), \ utRootData.usedSymtabTable = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedSymtabTable, false))#define utSetAllocatedSymtabTable(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedSymtabTable, true), \ utRootData.allocatedSymtabTable = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedSymtabTable, false))#define utSetFreeSymtabTable(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeSymtabTable, true), \ utRootData.freeSymtabTable = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeSymtabTable, false))#define utUsedSym() utRootData.usedSym#define utAllocatedSym() utRootData.allocatedSym#define utSetUsedSym(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedSym, true), \ utRootData.usedSym = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedSym, false))#define utSetAllocatedSym(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedSym, true), \ utRootData.allocatedSym = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedSym, false))#define utUsedSymName() utRootData.usedSymName#define utAllocatedSymName() utRootData.allocatedSymName#define utFreeSymName() utRootData.freeSymName#define utSetUsedSymName(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedSymName, true), \ utRootData.usedSymName = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedSymName, false))#define utSetAllocatedSymName(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedSymName, true), \ utRootData.allocatedSymName = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedSymName, false))#define utSetFreeSymName(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeSymName, true), \ utRootData.freeSymName = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeSymName, false))#define utFirstFreeDynarray() utRootData.firstFreeDynarray#define utSetFirstFreeDynarray(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.firstFreeDynarray, true), \ utRootData.firstFreeDynarray = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.firstFreeDynarray, false))#define utUsedDynarray() utRootData.usedDynarray#define utAllocatedDynarray() utRootData.allocatedDynarray#define utSetUsedDynarray(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedDynarray, true), \ utRootData.usedDynarray = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedDynarray, false))#define utSetAllocatedDynarray(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedDynarray, true), \ utRootData.allocatedDynarray = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedDynarray, false))#define utUsedDynarrayValue() utRootData.usedDynarrayValue#define utAllocatedDynarrayValue() utRootData.allocatedDynarrayValue#define utFreeDynarrayValue() utRootData.freeDynarrayValue#define utSetUsedDynarrayValue(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedDynarrayValue, true), \ utRootData.usedDynarrayValue = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedDynarrayValue, false))#define utSetAllocatedDynarrayValue(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedDynarrayValue, true), \ utRootData.allocatedDynarrayValue = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedDynarrayValue, false))#define utSetFreeDynarrayValue(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeDynarrayValue, true), \ utRootData.freeDynarrayValue = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeDynarrayValue, false))#define utFirstFreeSymArray() utRootData.firstFreeSymArray#define utSetFirstFreeSymArray(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.firstFreeSymArray, true), \ utRootData.firstFreeSymArray = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.firstFreeSymArray, false))#define utUsedSymArray() utRootData.usedSymArray#define utAllocatedSymArray() utRootData.allocatedSymArray#define utSetUsedSymArray(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedSymArray, true), \ utRootData.usedSymArray = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.usedSymArray, false))#define utSetAllocatedSymArray(value) ( \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedSymArray, true), \ utRootData.allocatedSymArray = (value), \ (void)utRecordGlobal(utModuleID, 4, &utRootData.allocatedSymArray, false))#define utUsedSymArraySym() utRootData.usedSymArraySym#define utAllocatedSymArraySym() utRootData.allocatedSymArraySym#define utFreeSymArraySym() utRootData.freeSymArraySym#define utSetUsedSymArraySym(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedSymArraySym, true), \ utRootData.usedSymArraySym = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.usedSymArraySym, false))#define utSetAllocatedSymArraySym(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedSymArraySym, true), \ utRootData.allocatedSymArraySym = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.allocatedSymArraySym, false))#define utSetFreeSymArraySym(value) ( \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeSymArraySym, true), \ utRootData.freeSymArraySym = (value), \ (void)utRecordGlobal(utModuleID, sizeof(uint32), &utRootData.freeSymArraySym, false))extern uint8 utModuleID;void utDatabaseStart(void);void utDatabaseStop(void);#if defined __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -