summaryrefslogblamecommitdiffstats
path: root/private/rpc/ndrdbg/pointer.hxx
blob: 2a34e5021778def6cd002e8d1c260ddc2ffe649a (plain) (tree)





















































































                                                                           
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Copyright (c) 1993 Microsoft Corporation

Module Name:

    pointer.hxx

Abstract:

    Pointer dictionary and other pointer stuff. 

Author:

    Ryszard K. Kott (ryszardk)  created Aug 17, 1994.

Revision History:

-------------------------------------------------------------------*/

#include "pdict.hxx"

#ifndef __POINTER_HXX__
#define __POINTER_HXX__

class   POINTER;
class   NDR;

typedef struct _PointerDictElem
{
    long            Offset;         // the dictionary key
    POINTER *       pMember;
} POINTER_DESC;


class PTR_DICT : public Dictionary
{
private:
    unsigned short              EntryCount;

public:

                                PTR_DICT() : Dictionary()
                                    {
                                    EntryCount = 0;
                                    }
                        
                               ~PTR_DICT()
                                    {
                                    // Cannot delete members here because
                                    // they may be in the parent dict, too.
                                    //  DeleteDictMembers();
                                    }

    BOOL                        IsInDictionary( long    Key );

    // Register an entry.

    void                        Register( long          Offset,
                                          POINTER *     pMember );

    unsigned short              GetCount()
                                    {
                                    return EntryCount;
                                    }

    POINTER_DESC *              GetFirst();
    POINTER_DESC *              GetNext();
    POINTER_DESC *              GetPrev();

    POINTER *                   GetPointerMember( long BufferOffset );
                                                
    int                         Compare( pUserType pL, pUserType pR );

    void                        AddDictEntries( PTR_DICT * pDict );

    void                        DeleteDictMembers();

    void                        OutputPointees( NDR * pObject );
};



#endif // __POINTER__HXX__