home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / CGAZV5N3.ZIP / OX.H < prev    next >
C/C++ Source or Header  |  1991-02-25  |  4KB  |  120 lines

  1. /*******  Listing 4  ******************************  OX.H  ***********
  2. *   ox.h  --  Prototypes and data types for OBJECT EXPLORER
  3. *         by Thomas E. Siering, 1991. See Listing 1 for copyright
  4. **********************************************************************/
  5.  
  6. /* A few code-readability enhancers */
  7. typedef int RC;              /* Function Return Codes */
  8. typedef unsigned char bool;  /* TRUE, FALSE */
  9.  
  10. #define OK          0        /* Successful function completion */
  11. #define PRIVATE     static   /* Private ... */
  12. #define PUBLIC               /* ... and public function types */
  13. #define FALSE       0        /* Boolean values */
  14. #define TRUE        !FALSE
  15. #define FOREVER for ( ; ; )
  16.  
  17.  
  18. #define OMFNAMELENGTH 8
  19.  
  20. /* The following provides Linked List services: */
  21. struct node {
  22.     void *InfoP;
  23.     struct node *NextP;
  24. };
  25. typedef struct node LNODE;
  26.  
  27. /* The following are specific OMF data structures: */
  28. typedef struct {
  29.     char ID;
  30.     char Type;
  31.     char Method;
  32.     LNODE *DefList;
  33.     int  ListIndex;
  34. } FIXUPTHREAD;
  35.  
  36. typedef enum {
  37.     Message,
  38.     Warning,
  39.     Error
  40. } MESSAGETYPE;
  41.  
  42. /* These are the services available from svc.c: */
  43. PUBLIC void InstList(LNODE *header);
  44. PUBLIC LNODE AddListNode(LNODE header, void  *obj);
  45. PUBLIC LNODE *GetListNode(LNODE header, unsigned int node_num);
  46. PUBLIC void *MakeASCIIZ(char *data);
  47. PUBLIC void Output(MESSAGETYPE MsgType, FILE *Stream, char *OutputFormat, ...);
  48.  
  49. /* The Object Module Format types */
  50.  
  51. /* The following object record types represent the INTEL subset commonly
  52. ** used by language translators: */
  53.  
  54. /* 1. OMF comment records: */
  55. #define THEADR      0x80
  56. #define COMENT      0x88
  57. #define MODEND      0x8A
  58.  
  59. /* 2. Symbol lists: */
  60. #define LNAMES      0x96
  61. #define EXTDEF      0x8C
  62. #define PUBDEF      0x90
  63.  
  64. /* 3. Memory layout info: */
  65. #define SEGDEF      0x98
  66. #define GRPDEF      0x9A
  67. #define COMDEF      0xB0
  68. #define TYPDEF      0x8E
  69.  
  70. /* 4. Code and data */
  71. #define LEDATA      0xA0
  72. #define LIDATA      0xA2
  73.  
  74. /* 5. Address binding/relocation: */
  75. #define FIXUPP      0x9C
  76.  
  77. /* 6. Debugging info: */
  78. #define LINNUM      0x94
  79.  
  80. /* 7. Obsolete record types */
  81. #define BLKDEF      0x7A
  82. #define BLKEND      0x7C
  83. #define LHEADR      0x82
  84.  
  85. /* 8. Microsoft Extensions: local symbol record types, QC back patch */
  86. #define BAKPAT      0xB2
  87. #define LEXTDEF     0xB4
  88. #define LPUBDEF     0xB6
  89. #define LCOMDEF     0xB8
  90.  
  91.  
  92. /* The high-level Object Explorer API: */
  93. PUBLIC void InstObjExp(char objfn[], char **ws, long *objsiz);
  94. PUBLIC RC GetObjRecordName(unsigned char orecnum, char typbufr[]);
  95. PUBLIC unsigned int GetRecordRelPos(char *CurrentPosition);
  96.  
  97.  
  98. /* The low-level functions associated with the OMF types */
  99. PUBLIC void DoTHEADR(unsigned char *rec);
  100. PUBLIC void DoCOMENT(unsigned char *rec, int RecordLength);
  101. PUBLIC void DoMODEND(unsigned char *rec);
  102. PUBLIC void DoLNAMES(unsigned char *rec, int RecordLength);
  103. PUBLIC void DoEXTDEF(unsigned char *rec, int RecordLength);
  104. PUBLIC void DoPUBDEF(unsigned char *rec, int  RecordLength);
  105. PUBLIC void DoSEGDEF(unsigned char *rec);
  106. PUBLIC void DoGRPDEF(unsigned char *rec, int  RecordLength);
  107. PUBLIC void DoCOMDEF(unsigned char *rec, int RecordLength);
  108. PUBLIC void DoTYPDEF(void);
  109. PUBLIC void DoLEDATA(unsigned char *rec, int  RecordLength);
  110. PUBLIC void DoLIDATA(unsigned char *rec, int RecordLength);
  111. PUBLIC void DoFIXUPP(unsigned char *rec, int RecordLength);
  112. PUBLIC void DoLINNUM(unsigned char *rec, int  RecordLength);
  113. PUBLIC void DoBAKPAT(unsigned char *rec, int  RecordLength);
  114. PUBLIC void DoBLKDEF(void);
  115. PUBLIC void DoBLKEND(void);
  116. PUBLIC void DoLHEADR(unsigned char *rec);
  117.  
  118. /* A print formatting function */
  119. PUBLIC void PrintObjDumpLine(char *Src, FILE *Dest, int LocCtr,
  120.         int RecordLength);