|
|
/*
* EXTRACT.H * * Common definitions for the EXTRACT program to process source code * comment blocks and remove tagged documentation. * */
/*
* General type definitions, since I've been programming windows * too long. */ #define NEAR near
#define FAR far
//#define NULL 0
#define True 1
#define TRUE 1
#define False 0
#define FALSE 0
typedef char NEAR *PSTR; typedef char FAR *LPSTR; typedef unsigned long DWORD; typedef long LONG; typedef unsigned short WORD; typedef int BOOL;
/*
* Set version of stuff here */ #define VERSIONNAME "Source Code Documentation Extraction Tool"
/*
* GENERAL GLOBAL STATUS VARIABLES */ extern BOOL fNoOutput; extern PSTR szOutputFile; extern FILE *fpOutput;
/*
* Source code type definitions - used by input parser in FileEntry struct. */ #define SRC_UNKNOWN 0
#define SRC_C 1
#define SRC_MASM 2
/*
* File name parser stuff */ typedef struct _FileEntry { struct _FileEntry *next; int type; char *filename; } FileEntry; /* list of files to process, built by parser */ extern FileEntry *FilesToProcess; /* Command line argument processor */ void ParseArgs(int argc, char **argv); void Usage(PSTR progName);
/*
* SOURCE FILE STRUCTURE - struct used during parsing of source file */ typedef struct _SourceFile { /* Direct file stuff */ FileEntry *fileEntry; // fileentry struct pointer
FILE *fp; // file pointer
BOOL fExitAfter; // exit after processing file
int wLineNo; // file line number currently at
/* Buffer holders */ PSTR lpbuf; // global copy buffer
PSTR pt; // buffer `point'
PSTR mark; // buffer `mark'
int wLineBuf; // line number start of buffer is
/* Stuff for reading in comment block */ BOOL fTag; // tag on this line, and status
BOOL fHasTags; // tags appear in this buffer.
/* Stuff used while processing block tags */ PSTR pDocLevel; // @doc output for this block
PSTR pXref; // @xref line for this block
WORD wFlags; // flags indicating state?
} SourceFile; typedef SourceFile NEAR *NPSourceFile;
/* Proc to process a filled buffer to the output file */ void TagProcessBuffer(NPSourceFile sf);
/*
* General Comment buffer parsing routines - bfuncs.c */ void OutputTag(NPSourceFile sf, WORD wBlock, WORD wTag); void OutputTagText(NPSourceFile sf, PSTR szTag); void OutputRegion(NPSourceFile sf, char chPost); void OutputText(NPSourceFile sf, PSTR szText); void OutputFileHeader(FILE *fpOut); void CopyRegion(NPSourceFile sf, PSTR buf, WORD wLen); BOOL FindNextTag(NPSourceFile sf); WORD GetFirstBlock(NPSourceFile sf); WORD GetNextBlock(NPSourceFile sf); WORD FixLineCounts(NPSourceFile sf, PSTR pt); void PrintError(NPSourceFile sf, PSTR szMessage, BOOL fExit); WORD ProcessWordList(NPSourceFile sf, PSTR *bufPt, BOOL fCap);
/* Flags for return from GetFirstBlock && GetNextBlock */ #define RET_EMPTYBLOCK 1
#define RET_ENDCOMMENT 2
#define RET_ENDBLOCK 3
#define RET_ENDTAG 4
/*
* INNERLEVEL TAG PROCESSING ROUTINES - innertag.c */ BOOL DoDocTag(NPSourceFile sf); BOOL DoFlagTag(NPSourceFile sf, WORD wBlock, WORD wNameFlag, WORD wDescFlag); BOOL ProcessFlagList(NPSourceFile sf, WORD wBlock, WORD wNameFlag, WORD wDescFlag); BOOL DoParameterTag(NPSourceFile sf, WORD wBlock); BOOL DoParameterizedReturnTag(NPSourceFile sf, WORD wBlock); BOOL DoRegisterizedReturnTag(NPSourceFile sf, WORD wBlock); BOOL DoCommentTag(NPSourceFile sf, WORD wBlock); BOOL DoUsesTag(NPSourceFile sf, WORD wBlock); BOOL DoPrintedCommentTag(NPSourceFile sf); void ProcessXrefTag(NPSourceFile sf); BOOL DoRegisterTag(NPSourceFile sf, WORD wBlock, BOOL fReturn); BOOL DoRegisterDeclaration(NPSourceFile sf, WORD wBlock); void DoBlockBegin(NPSourceFile sf); void DoBlockEnd(NPSourceFile sf, WORD wBlock, BOOL fFlushXref); BOOL DoFieldTag(NPSourceFile sf, WORD wBlock); BOOL DoOthertypeTag(NPSourceFile sf, WORD wBlock); BOOL DoStructTag(NPSourceFile sf, WORD wBlock, BOOL fStructure); BOOL DoTagnameTag(NPSourceFile sf, WORD wBlock);
/* Flags indicating status of comment block tag parsing */ #define SFLAG_SMASK 0xF800
#define SFLAG_RDESC 0x8000
#define SFLAG_COMM 0x4000
#define SFLAG_PARMS 0x2000
#define SFLAG_REGS 0x1000
#define SFLAG_USES 0x0800
/*
* Memory manager stuff - misc.c */ extern WORD wNearMemoryUsed; /* counts of how much memory used */ extern DWORD dwFarMemoryUsed;
PSTR NearMalloc(WORD size, BOOL fZero); PSTR NearRealloc(PSTR pblock, WORD newsize); void NearFree(PSTR pblock); WORD NearSize(PSTR pblock); PSTR StringAlloc(PSTR string); void NearHeapCheck();
#if 0
LPSTR FarMalloc(int size, BOOL fZero); void FarFree(LPSTR lpblock); extern int far lmemzero(LPSTR lpBase, WORD wLength); #endif
/*
* Debugging support */ #ifdef DEBUG
BOOL fDebug; void cdecl COMprintf(PSTR format, ...); #define dprintf if (fDebug) COMprintf
#else
#define dprintf if (0) ((int (*)(char *, ...)) 0)
#endif
|