Source code of Windows XP (NT5)
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: ilreg.hxx
Abstract:
Type registry for structure/union reuse.
Notes:
This file defines reuse registry for types which may be reused later.
History:
Oct-25-1993 GregJen Created.
----------------------------------------------------------------------------*/
/****************************************************************************
* include files ***************************************************************************/ #ifndef __ILREG_HXX__
#define __ILREG_HXX__
#include "nulldefs.h"
extern "C" { #include <stdio.h>
} #include "dict.hxx"
#include "listhndl.hxx"
#include "ilxlat.hxx"
/****************************************************************************
* externs ***************************************************************************/
extern SSIZE_T CompareReUseKey( void *, void *); extern void PrintReUseKey( void * );
/****************************************************************************
* class definitions ***************************************************************************/
class REUSE_INFO { public: node_skl * pType; CG_CLASS * pSavedCG; XLAT_SIZE_INFO SizeInfo;
REUSE_INFO( node_skl * pT ) { pType = pT; pSavedCG = NULL; } void SaveInfo( XLAT_CTXT * pCtxt, CG_CLASS * pCG ) { SizeInfo.ReturnSize( *pCtxt ); pSavedCG = pCG; }
void FetchInfo( XLAT_CTXT * pCtxt, CG_CLASS * & pCG ) { pCtxt->ReturnSize( SizeInfo ); pCG = pSavedCG; }
void * operator new ( size_t size ) { return AllocateOnceNew( size ); } void operator delete( void * ptr ) { AllocateOnceDelete( ptr ); }
};
class REUSE_DICT : public Dictionary { public: // The constructor and destructors.
REUSE_DICT();
~REUSE_DICT() { }
//
// Register a type.
//
REUSE_INFO * Register( REUSE_INFO * pNode );
// Search for a type.
REUSE_INFO * IsRegistered( REUSE_INFO * pNode );
// Given a type, add it to the dictionary or return existing entry
// true signifies "found"
BOOL GetReUseEntry( REUSE_INFO * & pRI, node_skl * pNode );
void MakeIterator( ITERATOR& Iter );
SSIZE_T Compare( pUserType pL, pUserType pR );
void Print( pUserType ) { }
}; #endif // __ILREG_HXX__
|