Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

140 lines
4.5 KiB

/******************************************************************************
Source File: Parser.C
This is an NT Build hack. It includes all of the "C" files used for the
GPD parser, because Build can't handle directories beyond ..
This file also contains some of the code used to access parts of the parser.
It is put here so that there will be no need to grovel around to find the
appropriate include files needed to call the parser.
Copyright (c) 1997 by Microsoft Corporation. All Rights Reserved
A Pretty Penny Enterprises Production
Change History:
06-20-1997 [email protected] Did the dirty deed
07-18-1998 [email protected] Added first parser access routines
******************************************************************************/
#define UNICODE
#define _UNICODE
#undef WINVER // Undo the MFC weirdness
#define WINVER 0x0500
#define _DEBUG_H_
#include "lib.h"
extern void _cdecl DebugPrint(PCSTR, ...);
#define ERR(x) DebugPrint x
#define WARNING(x) DebugPrint x
#define VERBOSE(x)
#define ASSERT(x)
#define RIP(x)
// Parser files
#if defined(WIN32)
#include "..\..\..\parsers\gpd\preproc1.c"
#include "..\..\..\parsers\gpd\command.c"
#include "..\..\..\parsers\gpd\constrnt.c"
#include "..\..\..\parsers\gpd\helper1.c"
#include "..\..\..\parsers\gpd\installb.c"
#include "..\..\..\parsers\gpd\macros1.c"
#include "..\..\..\parsers\gpd\postproc.c"
#include "..\..\..\parsers\gpd\semanchk.c"
#include "..\..\..\parsers\gpd\shortcut.c"
#include "..\..\..\parsers\gpd\snapshot.c"
#include "..\..\..\parsers\gpd\snaptbl.c"
#include "..\..\..\parsers\gpd\state1.c"
#include "..\..\..\parsers\gpd\state2.c"
#include "..\..\..\parsers\gpd\token1.c"
#include "..\..\..\parsers\gpd\value1.c"
#include "..\..\..\parsers\gpd\treewalk.c"
#include "..\..\..\parsers\gpd\framwrk1.c"
#else
#include "..\..\parsers\gpd\preproc1.c"
#include "..\..\parsers\gpd\command.c"
#include "..\..\parsers\gpd\constrnt.c"
#include "..\..\parsers\gpd\helper1.c"
#include "..\..\parsers\gpd\installb.c"
#include "..\..\parsers\gpd\macros1.c"
#include "..\..\parsers\gpd\postproc.c"
#include "..\..\parsers\gpd\semanchk.c"
#include "..\..\parsers\gpd\shortcut.c"
#include "..\..\parsers\gpd\snapshot.c"
#include "..\..\parsers\gpd\snaptbl.c"
#include "..\..\parsers\gpd\state1.c"
#include "..\..\parsers\gpd\state2.c"
#include "..\..\parsers\gpd\token1.c"
#include "..\..\parsers\gpd\value1.c"
#include "..\..\parsers\gpd\treewalk.c"
#include "..\..\parsers\gpd\framwrk1.c"
#endif
BOOL bKeywordInitDone = FALSE ; // TRUE iff the keyword table has been initialized
int nKeywordTableSize = -1 ; // The number of valid entries in the keyword table
/******************************************************************************
InitGPDKeywordTable()
Call the part of the GPD parser that is needed to initialize the GPD keyword
table. This must be done before GPD keyword string pointers can be returned
by GetGPDKeywordStr().
If all goes well, a flag is set, the size of the table is saved, and the size
of the table is returned. If something fails, return -1.
******************************************************************************/
int InitGPDKeywordTable(PGLOBL pglobl)
{
PRANGE prng ; // Used to reference the table section ranges
// Initialize the GPD parser
VinitGlobals(0, pglobl) ;
if (!BpreAllocateObjects(pglobl) || !BinitPreAllocatedObjects(pglobl))
return -1 ;
bKeywordInitDone = TRUE ;
// Save the size of the table
prng = (PRANGE)(gMasterTable[MTI_RNGDICTIONARY].pubStruct) ;
nKeywordTableSize = (int) (prng[END_ATTR - 1].dwEnd) ;
// Return the size of the table
return nKeywordTableSize ;
}
/******************************************************************************
GetGPDKeywordStr()
Return a pointer to the specified (numbered) GPD keyword string. The pointer
might be NULL. Always return a NULL pointer if the GPD keyword table has not
been initialized or a request for a string passed the end of the table is
requested.
******************************************************************************/
PSTR GetGPDKeywordStr(int nkeyidx, PGLOBL pglobl)
{
// Nothing can be done if the GPD parser could not be initialized or the
// key index is too big.
if (!bKeywordInitDone || nkeyidx > nKeywordTableSize)
return NULL ;
// Return the requested keyword string pointer.
return (mMainKeywordTable[nkeyidx].pstrKeyword) ;
}