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.
|
|
/**********************************************************************/ /** Microsoft LAN Manager **/ /** Copyright(c) Microsoft Corp., 1987-1999 **/ /**********************************************************************/
/*
lextable.hxx MIDL Compiler Lexeme Table Definition
This class centralizes access to allocated strings throughout the compiler.
*/
/*
FILE HISTORY :
DonnaLi 08-23-1990 Created.
*/
#ifndef __LEXTABLE_HXX__
#define __LEXTABLE_HXX__
#include "common.hxx"
#include "dict.hxx"
/**********************************************************************\
NAME: LexKey
SYNOPSIS: Defines the key to the lexeme table.
INTERFACE:
CAVEATS:
NOTES:
HISTORY: Donnali 08-23-1990 Initial creation Donnali 12-04-1990 Port to Dov's generic dictionary
\**********************************************************************/
class LexKey { char *sz; // lexeme that serves as key to the LexTable
public: LexKey() { sz = 0; } LexKey(char * psz) { sz = psz; } ~LexKey() { } char *GetString() { return sz; } void SetString(char * psz) { sz = psz; } void Print(void) { printf("%s", sz); } void * operator new ( size_t size ) { return AllocateOnceNew( size ); } void operator delete( void * ptr ) { AllocateOnceDelete( ptr ); }
friend void PrintLexeme(void *); friend int CompareLexeme(void *, void *); };
/**********************************************************************\
NAME: LexTable
SYNOPSIS: Defines the lexeme table.
INTERFACE: LexTable () Constructor. LexInsert () Inserts a lexeme into the lexeme table. LexSearch () Searches the lexeme table for a lexeme.
CAVEATS: This implementation does not support deletion of strings from the lexeme table.
NOTES:
HISTORY: Donnali 08-23-1990 Initial creation
\**********************************************************************/
class LexTable #ifdef unique_lextable
: public Dictionary #endif // unique_lextable
{ size_t BufferSize; // size of the current buffer
size_t BufferNext; // next position for new lexeme
char * pBuffer; // pointer to current buffer
#ifdef unique_lextable
LexKey SearchKey; // used to hold a search string
#endif
public:
LexTable( size_t Size, int (* pfnCompare)(void *, void *) = CompareLexeme, void (* pfnPrint)(void *) = PrintLexeme ); char * LexInsert(char * psz); char * LexSearch(char * psz);
};
#endif // __LEXTABLE_HXX__
|