#ifndef __TLNMGR_HXX__ #define __TLNMGR_HXX__ /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Copyright (c) 1989 Microsoft Corporation Module Name: tlnmgr.hxx Abstract: unnamed struct information management. Notes: Author: Aug-27-1992 VibhasC Created ----------------------------------------------------------------------------*/ #if 0 Notes ----- Two data structures take part in the unnamed structure management. One is a general top-level names pool and a top-level names management dictionary that get associated with each structure/union node. The basic data structure is a top-level names info block called tlnblock. This has a pointer to the symbol table which the name is defined in and a pointer to the actual name of the member. The general top level names data pool is a simple dictionary accessed by an index key and keeps pointer to tlninfo blocks so that the memory can be freed at the end of the front end pass. The back end does not need this. This pool is called the tlnpool. Associated with each struct/union is a tlndict, which is a dictionary of pointers to tlnblocks. In this dictionary, are entered names which are the top level names associated with a structure. #endif // 0 #include "dict.hxx" #include "symtable.hxx" // // the tlnblock class. This class encapsulates info for the top level names // and their scope. // class TLNBLOCK { private: char * pSymName; // pointer to the symbol name. class SymTable * pSymTbl; // pointer to the symbol table. void SetSymTable( class SymTable * pS ) { pSymTbl = pS; } void SetSymName( char * pN ) { pSymName = pN; } public: TLNBLOCK( class SymTable * pS, char * pN ) { SetSymName( pN ); SetSymTable( pS ); } class SymTable * GetSymTable() { return pSymTbl; } char * GetSymName() { return pSymName; } }; // // the tlndict class which is associated with each struct/union. // extern int CompareTLNames( void *, void * ); class TLNDICT : public Dictionary { public: TLNDICT() : Dictionary( CompareTLNames, 0 ) { } ~TLNDICT(); TLNBLOCK * SearchForTopLevelName( char * ); STATUS_T InsertTLNBlock( TLNBLOCK * ); class SymTable * GetSymTableForTopLevelName( char * ); }; #endif // __TLNMGR_HXX__