5#include <utilities-def.h>
19 template<
typename T >
20 class SStringElementTraits
23 typedef typename T::pctstr INARGTYPE;
24 typedef T& OUTARGTYPE;
26 static void __cdecl CopyElements(T* pDest,
const T* pSrc,
size_t nElements)
28 for (
size_t iElement = 0; iElement < nElements; iElement++)
30 pDest[iElement] = pSrc[iElement];
34 static void __cdecl RelocateElements(T* pDest, T* pSrc,
size_t nElements)
36 memmove_s(pDest, nElements *
sizeof(T), pSrc, nElements *
sizeof(T));
39 static ULONG __cdecl Hash(INARGTYPE str)
43 const typename T::_tchar * pch = str;
46 nHash = (nHash << 5) + nHash + (*pch);
53 static bool __cdecl CompareElements(INARGTYPE str1, INARGTYPE str2)
55 return (T::_tchar_traits::Compare(str1,str2) == 0);
58 static int __cdecl CompareElementsOrdered(INARGTYPE str1, INARGTYPE str2)
60 return (T::_tchar_traits::Compare(str1,str2));
64 template<
typename T >
69 public SStringElementTraits< SStringA >
75 public SStringElementTraits< SStringW >
A class representing an ASCII string.
A class representing an ASCII string.