Files
Slnkdwf/ATL90/source/SProxy/SproxyColl.h
Jos Groot Lipman 0e37d774d2 Merge SLNKDWF64 branch
svn path=/Slnkdwf/trunk/; revision=23911
2015-01-21 12:09:31 +00:00

92 lines
1.4 KiB
C++

//
// SproxyColl.h
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
#pragma once
#include "stdafx.h"
template <typename E, class ETraits = CElementTraits<E> >
class CAtlPtrList : public CAtlList<E, ETraits>
{
private:
typedef CAtlList<E, ETraits> Base;
BOOL m_bAttached;
public:
CAtlPtrList()
:m_bAttached(TRUE)
{
}
void Detach()
{
m_bAttached = FALSE;
}
void RemoveAll()
{
if (m_bAttached)
{
POSITION pos = GetHeadPosition();
while (pos != NULL)
{
delete (GetAt(pos));
GetAt(pos) = NULL;
GetNext(pos);
}
}
Base::RemoveAll();
}
~CAtlPtrList()
{
RemoveAll();
}
}; // class CAtlPtrList
template <typename K, typename V, class KTraits = CElementTraits<K>, class VTraits = CElementTraits<V> >
class CAtlPtrMap : public CAtlMap<K, V, KTraits, VTraits>
{
private:
typedef CAtlMap<K, V, KTraits, VTraits> Base;
BOOL m_bAttached;
public:
CAtlPtrMap()
:m_bAttached(TRUE)
{
}
void Detach()
{
m_bAttached = FALSE;
}
void RemoveAll()
{
Base::DisableAutoRehash();
if (m_bAttached)
{
POSITION pos = GetStartPosition();
while (pos != NULL)
{
delete (GetValueAt(pos));
GetValueAt(pos) = NULL;
GetNext(pos);
}
}
Base::RemoveAll();
Base::EnableAutoRehash();
}
~CAtlPtrMap()
{
RemoveAll();
}
}; // class CAtlPtrMap