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) 1989-1999 Microsoft Corporation
Module Name: treg.cxx
Abstract:
This file implements the type registry for header file generation.
Notes:
History:
Oc-23-1993 VibhasC Created. ----------------------------------------------------------------------------*/
#pragma warning ( disable : 4514 )
/****************************************************************************
* include files ***************************************************************************/
#include "becls.hxx"
#pragma hdrstop
node_skl * TREGISTRY::IsRegistered( node_skl * pType ) /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine Description:
Register a type with the type registry.
Arguments:
pType - A pointer to the type being registered. Return Value:
The node that gets registered. Notes:
----------------------------------------------------------------------------*/ { Dict_Status Status = Dict_Find( pType );
switch( Status ) { case EMPTY_DICTIONARY: case ITEM_NOT_FOUND: return (node_skl *)0; default: return (node_skl *)Dict_Curr_Item(); } }
node_skl * TREGISTRY::Register( node_skl * pType ) /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine Description:
Register a type with the dictionary.
Arguments: pType - A pointer to the type node.
Return Value:
The final inserted type. Notes:
----------------------------------------------------------------------------*/ { if( !IsRegistered( pType ) ) { Dict_Insert( (pUserType) pType ); return pType; } return (node_skl *)pType; }
short TREGISTRY::GetListOfTypes( ITERATOR& ListIter ) /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine Description:
Get the list of types in this registry.
Arguments:
ListIter - A pre- constructed iterator where the list of types is returned. Return Value:
The count of the number of items. Notes:
----------------------------------------------------------------------------*/ { node_skl * pN; Dict_Status Status; short Count = 0;
// Get to the top of the dictionary.
Status = Dict_Next( (pUserType)0 );
// make sure we start with a clean iterator
ITERATOR_DISCARD( ListIter );
// Iterate till the entire dictionary is looked at.
while( SUCCESS == Status ) { pN = (node_skl *)Dict_Curr_Item(); ITERATOR_INSERT( ListIter, pN ); Count++; Status = Dict_Next( (pUserType)pN ); }
return Count; }
|