diff options
Diffstat (limited to 'private/ole32/stg/h/tlsets.hxx')
-rw-r--r-- | private/ole32/stg/h/tlsets.hxx | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/private/ole32/stg/h/tlsets.hxx b/private/ole32/stg/h/tlsets.hxx new file mode 100644 index 000000000..114e1448e --- /dev/null +++ b/private/ole32/stg/h/tlsets.hxx @@ -0,0 +1,145 @@ +#ifndef REF +//+-------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1992. +// +// File: tlsets.hxx +// +// Contents: Transaction level set manager header file +// +// History: 20-Jan-1992 PhilipL Created +// +//--------------------------------------------------------------- + +#ifndef __TLSETS_HXX__ +#define __TLSETS_HXX__ + +#include <dfmsp.hxx> +#include <tset.hxx> + +//+-------------------------------------------------------------- +// +// Class: CTSSet (tss) +// +// Purpose: Maintains a list of transaction set elements +// +// Interface: See below +// +// History: 08-Apr-92 DrewB Created +// +// Notes: +// All elements are kept grouped by level, with level increasing +// from head to tail +// +// If an element of the list is removed, it can not be passed as +// a value to GetNext. If an element is to be deleted, get next +// should be called before the RemoveMember call. +// +//--------------------------------------------------------------- + +#define CHILDLEVEL 1 + +class CTSSet +{ +public: + inline CTSSet(void); + ~CTSSet(void); + + inline PTSetMember *GetHead(void); + PTSetMember *FindName(CDfName const *pdfn, DFLUID dlTree); + inline void RenameMember(CDfName const *pdfnOld, + DFLUID dlTree, + CDfName const *pdfnNew); + + void AddMember(PTSetMember *ptsm); + void RemoveMember(PTSetMember *ptsm); + +private: + CBasedTSetMemberPtr _ptsmHead; +}; + +//+-------------------------------------------------------------- +// +// Member: CTSSet::CTSSet, public +// +// Synopsis: Ctor +// +// History: 26-May-92 DrewB Created +// +//--------------------------------------------------------------- + +inline CTSSet::CTSSet(void) +{ + _ptsmHead = NULL; +} + +//+-------------------------------------------------------------- +// +// Member: CTSSet::GetHead, public +// +// Synopsis: Returns _ptsmHead +// +// History: 26-May-92 DrewB Created +// +//--------------------------------------------------------------- + +inline PTSetMember *CTSSet::GetHead(void) +{ + return BP_TO_P(PTSetMember *, _ptsmHead); +} + +//+-------------------------------------------------------------- +// +// Member: CTSSet::RenameMember, public +// +// Synopsis: Rename old name to new name +// +// Arguments: [pdfnOld] - old name +// [dlTree] - tree for uniqueness +// [pdnfNew] - new name +// +// Returns: Matching element or NULL +// +// History: 22-Jan-1992 Philipl Created +// 08-Apr-1992 DrewB Rewritten +// 28-Oct-1992 AlexT Convert to name +// +//--------------------------------------------------------------- + +#ifdef CODESEGMENTS +#pragma code_seg(SEG_CTSSet_RenameMember) +#endif + +inline void CTSSet::RenameMember( + CDfName const *pdfnOld, + DFLUID dlTree, + CDfName const *pdfnNew) +{ + PTSetMember *ptsm; + + olDebugOut((DEB_ITRACE, "In CTSSet::RenameMember(%p, %p)\n", + pdfnOld, pdfnNew)); + olAssert(pdfnOld != NULL && pdfnNew != NULL && + aMsg("Rename names can't be NULL")); + + for (ptsm = BP_TO_P(PTSetMember *, _ptsmHead); + ptsm; + ptsm = ptsm->GetNext()) + { + if (ptsm->GetDfName()->IsEqual(pdfnOld) && dlTree == ptsm->GetTree()) + { + ptsm->GetDfName()->Set(pdfnNew->GetLength(), + pdfnNew->GetBuffer()); + break; + } + } + olDebugOut((DEB_ITRACE, "Out CTSSet::RenameMember\n")); +} + +#ifdef CODESEGMENTS +#pragma code_seg() +#endif + +#endif // #ifndef __TLSETS_HXX__ +#endif //!REF |