/*************************************************/ /* Common Library Component private include file */ /*************************************************/ BOOL InfIsOpen(VOID); #define PreCondInfOpen(r) PreCondition(InfIsOpen(),r) /* INF internal limits */ #define cSectionsMax 0x1000 #define cKeysMax 0x1000 #define cchpFieldMax 0x2000 #define cchpBig ((CCHP)cbAllocMax) #define cchpSmall ((CCHP)4*1024) extern BOOL APIENTRY FFindFirstInfSection(VOID); extern BOOL APIENTRY FFindNextInfSection(VOID); extern BOOL APIENTRY FValidSectionLabel(VOID); extern BOOL APIENTRY FListValue(SZ); #define SzSkipField(ch, f) SzSkipFieldFromLine(ch,fFalse,f) #define SzGetField(ch) SzSkipFieldFromLine(ch,fTrue,fFalse) /* ** Symbol Table Entry structure ** ** Fields: ** psteNext: next STE in linked list. ** szSymbol: zero terminated symbol string - non-NULL and non-empty. ** szValue: zero terminated value string - non-NULL. */ typedef struct _ste { struct _ste * psteNext; SZ szSymbol; SZ szValue; } STE; /* Symbol Table Entry datatypes */ typedef STE * PSTE; typedef PSTE * PPSTE; /* Number of STE structs in each STEB */ #define cStePerSteb 0x07FF /* ** Symbol Table Entry Block structure ** ** Fields: ** pstebNext: next STEB in linked list. ** rgste[]: array of allocated STE structs. */ typedef struct _steb { struct _steb * pstebNext; STE rgste[cStePerSteb]; } STEB; /* Symbol Table Entry Block datatypes */ typedef STEB * PSTEB; /* Number of hash buckets in symbol hash table (must be a power of 2) */ #define cHashBuckets 255 /* Number of bytes used in hash function for finding a symbol */ #define cbBytesToSumForHash ((CB)25) // effectively all chars are used // // Symbol table // typedef struct _SYMTAB *PSYMTAB; typedef struct _SYMTAB { PSTE HashBucket[cHashBuckets]; // Hash Buckets #ifdef SYMTAB_STATS UINT BucketCount[cHashBuckets]; // Bucket count in hash table #endif } SYMTAB; extern PSTE psteUnused; extern PSTEB pstebAllocatedBlocks; extern PSTE APIENTRY PsteAlloc(VOID); extern BOOL APIENTRY FFreePste(PSTE); extern USHORT APIENTRY UsHashFunction(PB); extern PPSTE APIENTRY PpsteFindSymbol(PSYMTAB, SZ); extern BOOL APIENTRY FAddSymbolFromInfLineToSymTab(INT Line); extern PSYMTAB APIENTRY SymTabAlloc(VOID); extern BOOL APIENTRY FFreeSymTab(PSYMTAB); extern BOOL APIENTRY FCheckSymTab(PSYMTAB); extern BOOL APIENTRY FValidFATPathChar(CHP); #define PreCondFlowInit(r) PreCondition(psptFlow!=(PSPT)NULL,r) /* ** Evaluation Return Code datatype */ typedef unsigned ERC; // 1632 was USHORT #define ercError 0 #define ercTrue 1 #define ercFalse 2 /* ** Evaluate Compare Mode datatype */ typedef USHORT ECM; #define ecmError 0 #define ecmIfStr 1 #define ecmIfStrI 2 #define ecmIfInt 3 #define ecmIfContains 4 #define ecmIfContainsI 5 extern BOOL APIENTRY FSkipToElse(INT *Line,HWND hwndParent); extern BOOL APIENTRY FSkipToEnd(INT *Line,HWND hwndParent); extern ERC APIENTRY ErcEvaluateCompare(HWND, ECM, SZ, SZ, SZ); /* Stack Element For Loop */ typedef struct _sefl { struct _sefl * pseflNext; UINT iStartLine; RGSZ rgszList; UINT iItemCur; SZ szDollarSav; SZ szPoundSav; } SEFL; typedef SEFL * PSEFL; typedef PSEFL * PPSEFL; extern PSEFL pseflHead; extern PSEFL APIENTRY PseflAlloc(VOID); extern BOOL APIENTRY FFreePsefl(PSEFL); extern BOOL APIENTRY FSkipToEndOfLoop(INT *Line,HWND hwndParent); extern BOOL APIENTRY FInitForLoop(INT *Line,HWND hwndParent,SZ List); extern BOOL APIENTRY FContinueForLoop(INT *Line,HWND hwndParent); extern SZ APIENTRY SzProcessSz(HWND, SZ); extern BOOL fSilentSystem;