99 lines
2 KiB
C
99 lines
2 KiB
C
|
#pragma once
|
||
|
|
||
|
#define CRT_ALLOC 0
|
||
|
#define COM_ALLOC 1
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Minimal string class
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CString
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
enum AllocFlags
|
||
|
{
|
||
|
COM_Allocator = 0,
|
||
|
CRT_Allocator
|
||
|
};
|
||
|
|
||
|
enum HashFlags
|
||
|
{
|
||
|
CaseInsensitive = 0,
|
||
|
CaseSensitive
|
||
|
};
|
||
|
|
||
|
|
||
|
DWORD _dwSig;
|
||
|
HRESULT _hr;
|
||
|
LPWSTR _pwz; // Str ptr.
|
||
|
DWORD _cc; // String length
|
||
|
DWORD _ccBuf; // Buffer length
|
||
|
AllocFlags _eAlloc; // Allocator
|
||
|
|
||
|
// ctor
|
||
|
CString();
|
||
|
|
||
|
// ctor w/ allocator
|
||
|
CString(AllocFlags eAlloc);
|
||
|
|
||
|
// dtor
|
||
|
~CString();
|
||
|
|
||
|
// Allocations
|
||
|
HRESULT ResizeBuffer(DWORD ccNew);
|
||
|
|
||
|
|
||
|
// Deallocations
|
||
|
VOID FreeBuffer();
|
||
|
|
||
|
// Assume control for a buffer.
|
||
|
HRESULT TakeOwnership(WCHAR* pwz, DWORD cc);
|
||
|
HRESULT TakeOwnership(LPWSTR pwz);
|
||
|
|
||
|
// Release control.
|
||
|
HRESULT ReleaseOwnership();
|
||
|
|
||
|
// Direct copy assign from string.
|
||
|
HRESULT Assign(LPWSTR pwzSource);
|
||
|
|
||
|
// Direct copy assign from CString
|
||
|
HRESULT Assign(CString& sSource);
|
||
|
|
||
|
// Append given wchar string.
|
||
|
HRESULT Append(LPWSTR pwzSource);
|
||
|
|
||
|
// Append given CString
|
||
|
HRESULT Append(CString& sSource);
|
||
|
|
||
|
// Return ith element.
|
||
|
WCHAR& operator [] (DWORD i);
|
||
|
|
||
|
HRESULT LastElement(CString &sSource);
|
||
|
|
||
|
HRESULT RemoveLastElement();
|
||
|
|
||
|
HRESULT Combine(LPWSTR pwzSource, BOOL fUrl);
|
||
|
|
||
|
HRESULT PathCombine(LPWSTR pwzSource);
|
||
|
|
||
|
HRESULT PathCombine(CString &sSource);
|
||
|
|
||
|
HRESULT UrlCombine(LPWSTR pwzSource);
|
||
|
|
||
|
HRESULT UrlCombine(CString &sSource);
|
||
|
|
||
|
HRESULT PathFindFileName(LPWSTR *ppwz);
|
||
|
|
||
|
HRESULT PathFindFileName(CString &sPath);
|
||
|
|
||
|
HRESULT PathPrefixMatch(LPWSTR pwzPrefix);
|
||
|
|
||
|
// / -> \ in string
|
||
|
VOID PathNormalize();\
|
||
|
VOID Get65599Hash(LPDWORD pdwHash, DWORD dwFlags);
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|