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.
|
|
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Copyright (c) 1993-1999 Microsoft Corporation
Module Name: frmtreg.hxx
Abstract:
Registry for format string reuse.
Notes:
This file defines reuse registry for format string fragments which may be reused later.
History:
Mar-14-1993 GregJen Created.
----------------------------------------------------------------------------*/
/****************************************************************************
* include files ***************************************************************************/ #ifndef __FRMTREG_HXX__
#define __FRMTREG_HXX__
#include "nulldefs.h"
extern "C" { #include <stdio.h>
} #include "dict.hxx"
#include "listhndl.hxx"
#include "nodeskl.hxx"
#include "frmtstr.hxx"
/****************************************************************************
* externs ***************************************************************************/
/****************************************************************************
* class definitions ***************************************************************************/
class FRMTREG_DICT;
class FRMTREG_ENTRY { private: long StartOffset; long EndOffset; long UseCount; // The class is friend as the Compare method accesses the format string buffers.
friend class FRMTREG_DICT;
public: FRMTREG_ENTRY( long StOff, long EndOff ) { StartOffset = StOff; EndOffset = EndOff; UseCount = 1; }
long GetStartOffset() { return StartOffset; }
long GetEndOffset() { return StartOffset; }
void * operator new ( size_t size ) { return AllocateOnceNew( size ); } void operator delete( void * ptr ) { AllocateOnceDelete( ptr ); }
};
class FRMTREG_DICT : public Dictionary { public: FORMAT_STRING * pOurFormatString;
// The constructor and destructors.
FRMTREG_DICT( FORMAT_STRING * );
~FRMTREG_DICT() { }
//
// Register a type.
//
FRMTREG_ENTRY * Register( FRMTREG_ENTRY * pNode );
// Search for a type.
FRMTREG_ENTRY * IsRegistered( FRMTREG_ENTRY * pNode );
// Given a fragment, add it to the dictionary or return existing entry
// true signifies "found"
BOOL GetReUseEntry( FRMTREG_ENTRY * & pOut, FRMTREG_ENTRY * pIn );
SSIZE_T Compare( pUserType pL, pUserType pR );
void Print( pUserType ) { }
};
#endif // __FRMTREG_HXX__
|