{
};
-
template<typename E, class ETraits = CElementTraits<E>>
class CAtlList
{
template<typename E, class ETraits>
CAtlList< E, ETraits >::CAtlList(_In_ UINT nBlockSize) :
- m_NumElements(0),
+ m_Blocks(NULL),
+ m_BlockSize(nBlockSize),
m_HeadNode(NULL),
m_TailNode(NULL),
m_FreeNode(NULL),
- m_Blocks(NULL),
-
- m_BlockSize(nBlockSize)
+ m_NumElements(0)
{
ATLASSERT(nBlockSize > 0);
}
#pragma once
#include "atlcore.h"
-// HACK HACK! This must be placed in another global ATL header!!
-// Placement new operator
-void *operator new (size_t, void *buf)
-{
- return buf;
-}
namespace ATL
{
wchar_t achNil[2];
};
-template< typename BaseType = char >
-class ChTraitsBase
-{
-public:
- typedef char XCHAR;
- typedef LPSTR PXSTR;
- typedef LPCSTR PCXSTR;
- typedef wchar_t YCHAR;
- typedef LPWSTR PYSTR;
- typedef LPCWSTR PCYSTR;
-};
-template<>
-class ChTraitsBase< wchar_t >
+template< typename BaseType = wchar_t >
+class ChTraitsBase
{
public:
typedef wchar_t XCHAR;
typedef LPCSTR PCYSTR;
};
-
-
template< typename BaseType, bool t_bMFCDLL = false>
class CSimpleStringT
{
Attach(pNewData);
}
- CSimpleStringT(_In_ const CSimpleStringT<BaseType, !t_bMFCDLL>& strSrc)
- {
- CStringData* pSrcData = strSrc.GetData();
- CStringData* pNewData = CloneData(pSrcData);
- Attach(pNewData);
- }
CSimpleStringT& operator=(_In_opt_z_ PCXSTR pszSrc)
{
};
-template <typename _BaseType = char, class StringIterator = ChTraitsOS<_BaseType>>
+template< typename _CharType = wchar_t >
+class ChTraitsOS :
+ public ChTraitsBase < _CharType >
+{
+
+};
+
+
+template <typename _BaseType = wchar_t, class StringIterator = ChTraitsOS<_BaseType>>
class StrTraitATL :
public StringIterator
{