Imports the current Win32 source for the pod-racing game 'Red Planet', built on the MUNGA engine and its L4 (Win32/DirectX) platform layer: - MUNGA / MUNGA_L4: cross-platform engine core and Win32 backend - RP / RP_L4: Red Planet game logic and Win32 application - DivLoader, Setup1: asset loader and installer project - lib, MUNGA_L4/openal, MUNGA_L4/sos: third-party audio dependencies Removed stale Subversion metadata and added .gitignore/.gitattributes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
123 lines
3.9 KiB
C++
123 lines
3.9 KiB
C++
/*
|
|
* PROJECT:
|
|
* SUBSYSTEM:
|
|
* MODULE:
|
|
*
|
|
* FILE: $RCSfile: parser.h,v $
|
|
* REVISION: $Revision: 1.8 $
|
|
* Date: $Date: 1995/05/18 09:41:31 $
|
|
* Author: $Author: jeff $
|
|
* RCS Ident: $Id: parser.h,v 1.8 1995/05/18 09:41:31 jeff beta $
|
|
*
|
|
* FUNCTION:
|
|
*
|
|
* Copyright (c) 1994 Division Ltd.
|
|
*
|
|
* All Rights Reserved.
|
|
*
|
|
* This Document may not, in whole or in part, be copied,
|
|
* photocopied, reproduced, translated, or reduced to any
|
|
* electronic medium or machine readable form without prior
|
|
* written consent from Division Ltd.
|
|
*/
|
|
#ifndef _PARSER_H
|
|
#define _PARSER_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#define PARSER_MAX_TOKEN_SIZE 2048
|
|
#define PARSER_MATCH_CASE 0
|
|
#define PARSER_ANY_CASE 1
|
|
|
|
/*
|
|
* macros for testing char classes
|
|
*/
|
|
#define PARSER_LEX_START 1
|
|
#define PARSER_LEX_CONTINUE 2
|
|
#define parserStartChar(f,x) ((f)->LexClass[(x)] & PARSER_LEX_START )
|
|
#define parserContinueChar(f,x) ((f)->LexClass[(x)] & PARSER_LEX_CONTINUE )
|
|
|
|
/*
|
|
* tokens returned by parser functions
|
|
*/
|
|
#define PARSER_OK 0
|
|
#define PARSER_ERR -1
|
|
#define PARSER_EOF -2
|
|
#define PARSER_STRING -3
|
|
#define PARSER_INT -4
|
|
#define PARSER_FLOAT -5
|
|
#define PARSER_PUSH -6
|
|
#define PARSER_POP -7
|
|
#define PARSER_QUOTED_STRING -8
|
|
|
|
/*
|
|
* used to hold pre-processing state info.
|
|
* Contents are not made public.
|
|
*/
|
|
typedef struct pprocState pprocState;
|
|
|
|
typedef struct dParseKeyTab
|
|
{
|
|
int tok;
|
|
char *name;
|
|
int matchCase;
|
|
} dParseKeyTab;
|
|
|
|
|
|
typedef struct dParseFile
|
|
{
|
|
int errorFlag;
|
|
int seeIncludes;
|
|
int pushedBackToken;
|
|
float fpNumber;
|
|
long iNumber;
|
|
char *buffer;
|
|
int bufSize;
|
|
int bufPos;
|
|
dParseKeyTab *keyTab;
|
|
int charNo;
|
|
pprocState *ppstate;
|
|
char LexClass[128];
|
|
} dParseFile, *dParseFilePtr;
|
|
|
|
extern void parserVersion(FILE *openfp);
|
|
extern dParseFilePtr parserCreate(char *name,
|
|
FILE *openfp,
|
|
dParseKeyTab *keyTable,
|
|
int bufferSize,
|
|
FILE *(*fileFinder)(const char *),
|
|
const char *startChars,
|
|
const char *continueChars,
|
|
int seeIncludes);
|
|
extern void parserDestroy(dParseFilePtr fptr);
|
|
|
|
extern dParseFilePtr parserOpenFile(char *name,
|
|
FILE *fp,
|
|
dParseKeyTab *keyTable,
|
|
int bufferSize,
|
|
FILE *(*fileFinder)(const char *),
|
|
const char *startChars,
|
|
const char *continueChars,
|
|
int seeIncludes);
|
|
extern void parserCloseFile(dParseFilePtr fPtr);
|
|
|
|
extern int parserGetc(dParseFilePtr fptr);
|
|
extern int parserUngetc(dParseFilePtr fptr, char c);
|
|
|
|
extern char *parserTokenToString(dParseFilePtr fptr, const int token);
|
|
extern int parserPushToken(dParseFilePtr fptr, const int token);
|
|
extern int parserNextToken(dParseFilePtr fptr);
|
|
|
|
extern char *parserMatchString(dParseFilePtr fptr);
|
|
extern int parserMatchInt(dParseFilePtr fptr, int *num);
|
|
extern int parserMatchFloat(dParseFilePtr fptr, float *num);
|
|
extern int parserMatchCharacter(dParseFilePtr fptr, char c);
|
|
|
|
extern const char *parserCurrentFile(dParseFilePtr fptr);
|
|
extern int parserCurrentLine(dParseFilePtr fptr);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|