summaryrefslogtreecommitdiff
path: root/includes/compiler/CPrep.h
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2022-11-07 03:06:21 +0000
committerAsh Wolf <ninji@wuffs.org>2022-11-07 03:06:21 +0000
commit9a46dd0e2e80790d9848c0bbd718932a27c23269 (patch)
treee7a8e976c7138d50a69ff4778c4e8572efd94452 /includes/compiler/CPrep.h
parentd0b9848c54e6f85ab713f059dcd1ddef7e57caa6 (diff)
downloadMWCC-9a46dd0e2e80790d9848c0bbd718932a27c23269.tar.gz
MWCC-9a46dd0e2e80790d9848c0bbd718932a27c23269.zip
honk
Diffstat (limited to '')
-rw-r--r--includes/compiler/CPrep.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/includes/compiler/CPrep.h b/includes/compiler/CPrep.h
new file mode 100644
index 0000000..a681ec5
--- /dev/null
+++ b/includes/compiler/CPrep.h
@@ -0,0 +1,122 @@
+#ifndef COMPILER_CPREP_H
+#define COMPILER_CPREP_H
+
+#include "compiler/common.h"
+#include "compiler/tokens.h"
+
+#ifdef __MWERKS__
+#pragma options align=mac68k
+#endif
+
+typedef struct Macro {
+ struct Macro *next;
+ HashNameNode *name;
+ void *c;
+ unsigned short xC;
+ Boolean is_special;
+ Boolean xF;
+ void *e;
+} Macro;
+typedef struct TokenStack {
+ char *pos;
+ char *macrostart;
+ Macro *macro;
+ Boolean macrocheck;
+} TokenStack;
+
+extern CParams *cparamblkptr;
+extern short tk;
+extern CInt64 tkintconst;
+extern Float tkfloatconst;
+extern char *tkstring;
+extern HashNameNode *tkidentifier;
+extern SInt32 tksize;
+extern short ispascalstring;
+extern short nlflag;
+extern SInt32 lines;
+extern Boolean spaceskip;
+extern struct Macro **macrohashtable;
+extern Boolean cprep_nomem_exit;
+extern Boolean cprep_nostring;
+extern Boolean cprep_eoltokens;
+extern TokenStack tokenstack[128];
+extern short tokenstacklevel;
+extern CPrepFileInfo *cprep_cursymfile;
+extern char *pos;
+extern char *macropos;
+extern char *nextcharpos;
+extern unsigned char CPrep_SkipNewCommentChar;
+extern Boolean preprocessing_only;
+extern Handle stringmem;
+extern SInt32 maxstringsize;
+extern char cprep_idarray[256];
+extern Boolean was_escchar;
+extern Boolean macrocheck;
+extern Boolean widestring;
+extern Boolean at_linestart;
+extern char *prep_file_start;
+extern char *prep_file_end;
+extern char *macrostart;
+extern Boolean cprep_strconcat;
+extern CPrepFileInfo *prep_file;
+extern short filesp;
+extern SInt32 linenumber;
+extern struct GList pplist;
+extern TStreamElement *ts_current;
+extern SInt32 ts_preread_elements;
+
+extern void CPrep_InsertSpecialMacro(Macro *macro, char *name);
+extern void CPrep_InsertSpecialMacros(void);
+extern void CPrep_RemoveSpecialMacros(void);
+extern Boolean setupprep(void);
+extern void cleanupprep(void);
+extern void CPrep_TSBufferGrow(int amount);
+extern void CPrep_TokenStreamGetState(SInt32 *state);
+extern void CPrep_TokenStreamSetState(SInt32 *state);
+extern void CPrep_UnLex(void);
+extern void CPrep_TokenStreamSetCurState(SInt32 *state);
+typedef void (*CPrepStreamFuncPtr)(TStreamElement *);
+extern void CPrep_StreamGetBlock(TStream *stream, CPrepStreamFuncPtr func, int arg);
+extern void CPrep_StreamGetSemicolon(TStream *stream, CPrepStreamFuncPtr func);
+extern void CPrep_StreamGetTemplate(TStream *stream, CPrepStreamFuncPtr func);
+extern void CPrep_StreamInsert(TStream *stream, SInt32 *state);
+extern void CPrep_StreamRemove(TStream *stream, SInt32 *state);
+extern void CPrep_RemoveTokens(SInt32 amount);
+extern void CPrep_TokenStreamFlush(void);
+extern TStreamElement *CPrep_CurStreamElement(void);
+extern void CPrep_GetTokenContext(TStreamElement *token, CPrepFileInfo **tokenfile, SInt32 *selectionoffset, short *tokensize, SInt32 *linenumber, char *buf1, short *tokenoffset, short *tokenlength, char *buf2, short *lastarg);
+extern void CPrep_Error(short code);
+extern void CPrep_ErrorName(short code, const char *name);
+extern void CPrep_Warning(short code);
+extern void CPrep_WarningName(short code, const char *name);
+extern void CPrep_ErrorMessage(int errTable, char *str, Boolean flag1, Boolean flag2);
+extern void CPrep_ErrorMessageVA(int code, const char *format, va_list list, Boolean flag1, Boolean flag2);
+extern void popfile(void);
+extern void CPrep_SetSourceFile(FileOffsetInfo *foi);
+extern HashNameNode *CPrep_GetSourceFilePath(CPrepFileInfo *fileinfo);
+extern void CPrep_NewFileOffsetInfo(FileOffsetInfo *foi, TStreamElement *ts);
+extern SInt32 CPrep_GetFileOffsetInfo(FileOffsetInfo *foi);
+extern void CPrep_GetFileOffsetInfo2(FileOffsetInfo *foi, SInt32 *pLine, HashNameNode **pName);
+extern void CPrep_ResetFileInfo(FileOffsetInfo *foi);
+extern void CPrep_GetPrepPos(CPrepFileInfo **file, SInt32 *ppos);
+extern UInt8 C_Compiler(CParams *param);
+extern void poptokenseq(void);
+extern void foundnl(void);
+extern void newline(void);
+extern short notendofline(void);
+extern char *CPrep_GetFileName(char *buffer, Boolean flag1, Boolean flag2);
+extern Boolean macrotest(void);
+extern short CPrep_PragmaLex(Boolean no_err);
+extern void CPrep_PushOption(SInt32 id, char value);
+extern void CPrep_PopOption(SInt32 id);
+extern void preprocessor(void);
+extern SInt32 CPrep_BrowserTokenOffset(FileOffsetInfo *foi);
+extern SInt32 CPrep_BrowserFileOffset(void);
+extern void CPrep_BrowserFilePosition(CPrepFileInfo **fileinfo, SInt32 *offset);
+extern CPrepFileInfo *CPrep_BrowserCurrentFile(void);
+
+#ifdef __MWERKS__
+#pragma options align=reset
+#endif
+
+#endif