| 1 | /*
|
|---|
| 2 | * kFileDef - Definition files.
|
|---|
| 3 | *
|
|---|
| 4 | * Copyright (c) 1999 knut st. osmundsen
|
|---|
| 5 | *
|
|---|
| 6 | */
|
|---|
| 7 | #ifndef _kFileDef_h_
|
|---|
| 8 | #define _kFileDef_h_
|
|---|
| 9 |
|
|---|
| 10 | /*******************************************************************************
|
|---|
| 11 | * Defined Constants *
|
|---|
| 12 | *******************************************************************************/
|
|---|
| 13 | #define ORD_START_INTERNAL_FUNCTIONS 1200
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 | /*******************************************************************************
|
|---|
| 17 | * Structures and Typedefs *
|
|---|
| 18 | *******************************************************************************/
|
|---|
| 19 |
|
|---|
| 20 | /**
|
|---|
| 21 | * Segment list entry.
|
|---|
| 22 | */
|
|---|
| 23 | typedef struct _DefSegment
|
|---|
| 24 | {
|
|---|
| 25 | char *psz;
|
|---|
| 26 | struct _DefSegment *pNext;
|
|---|
| 27 | } DEFSEGMENT, *PDEFSEGMENT;
|
|---|
| 28 |
|
|---|
| 29 |
|
|---|
| 30 |
|
|---|
| 31 | /**
|
|---|
| 32 | * Import list entry.
|
|---|
| 33 | */
|
|---|
| 34 | typedef struct _DefImport
|
|---|
| 35 | {
|
|---|
| 36 | unsigned long ulOrdinal;
|
|---|
| 37 | char *pszName;
|
|---|
| 38 | char *pszDll;
|
|---|
| 39 | char *pszIntName;
|
|---|
| 40 | struct _DefImport *pNext;
|
|---|
| 41 | } DEFIMPORT, *PDEFIMPORT;
|
|---|
| 42 |
|
|---|
| 43 |
|
|---|
| 44 | /**
|
|---|
| 45 | * Export list entry.
|
|---|
| 46 | */
|
|---|
| 47 | typedef struct _DefExport
|
|---|
| 48 | {
|
|---|
| 49 | unsigned long ulOrdinal;
|
|---|
| 50 | char *pszName;
|
|---|
| 51 | char *pszIntName;
|
|---|
| 52 | BOOL fResident;
|
|---|
| 53 | ULONG cParam;
|
|---|
| 54 | struct _DefExport *pNext;
|
|---|
| 55 | } DEFEXPORT, *PDEFEXPORT;
|
|---|
| 56 |
|
|---|
| 57 |
|
|---|
| 58 | /**
|
|---|
| 59 | * Definition files.
|
|---|
| 60 | * TODO: error handling.
|
|---|
| 61 | * @author knut st. osmundsen
|
|---|
| 62 | */
|
|---|
| 63 | class kFileDef : public kFileFormatBase
|
|---|
| 64 | {
|
|---|
| 65 | private:
|
|---|
| 66 | /**@cat pointers to different sections */
|
|---|
| 67 | char *pszType;
|
|---|
| 68 | char *pszBase;
|
|---|
| 69 | char *pszCode;
|
|---|
| 70 | char *pszData;
|
|---|
| 71 | char *pszDescription;
|
|---|
| 72 | char *pszExeType;
|
|---|
| 73 | char *pszHeapSize;
|
|---|
| 74 | char *pszOld;
|
|---|
| 75 | char *pszProtmode;
|
|---|
| 76 | char *pszStackSize;
|
|---|
| 77 | char *pszStub;
|
|---|
| 78 |
|
|---|
| 79 | /**@cat Lists to multistatement sections */
|
|---|
| 80 | PDEFSEGMENT pSegments;
|
|---|
| 81 | PDEFIMPORT pImports;
|
|---|
| 82 | PDEFEXPORT pExports;
|
|---|
| 83 |
|
|---|
| 84 | /**@cat internal functions */
|
|---|
| 85 | void read(FILE *phFile) throw (int);
|
|---|
| 86 | char *readln(FILE *phFile, char *pszBuffer, int cbBuffer) throw (int);
|
|---|
| 87 | BOOL isKeyword(const char *psz);
|
|---|
| 88 |
|
|---|
| 89 | public:
|
|---|
| 90 | /**@cat Constructor/Destructor */
|
|---|
| 91 | kFileDef(FILE *phFile) throw(int);
|
|---|
| 92 | virtual ~kFileDef();
|
|---|
| 93 |
|
|---|
| 94 | /**@cat queries... */
|
|---|
| 95 | BOOL queryModuleName(char *pszBuffer);
|
|---|
| 96 | BOOL findFirstExport(PEXPORTENTRY pExport);
|
|---|
| 97 | BOOL findNextExport(PEXPORTENTRY pExport);
|
|---|
| 98 | BOOL isDef() const { return TRUE;}
|
|---|
| 99 | char const *queryType(void) const { return pszType; }
|
|---|
| 100 | char const *queryBase(void) const { return pszBase; }
|
|---|
| 101 | char const *queryCode(void) const { return pszCode; }
|
|---|
| 102 | char const *queryData(void) const { return pszData; }
|
|---|
| 103 | char const *queryDescription(void) const { return pszDescription; }
|
|---|
| 104 | char const *queryExeType(void) const { return pszExeType; }
|
|---|
| 105 | char const *queryHeapSize(void) const { return pszHeapSize; }
|
|---|
| 106 | char const *queryOld(void) const { return pszOld; }
|
|---|
| 107 | char const *queryProtmode(void) const { return pszProtmode; }
|
|---|
| 108 | char const *queryStackSize(void) const { return pszStackSize; }
|
|---|
| 109 | char const *queryStub(void) const { return pszStub; }
|
|---|
| 110 | };
|
|---|
| 111 |
|
|---|
| 112 |
|
|---|
| 113 | #endif
|
|---|