DragonNest/Server/ServiceMonitorEx/Source/StringSet.h

176 lines
10 KiB
C
Raw Normal View History

2024-12-20 16:56:44 +08:00
<EFBFBD><EFBFBD>/*//===============================================================
<< STRING >>
PRGM : B4nFter
FILE : STRINGSET.H, STRINGSET.CPP
DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> (ٳ<EFBFBD>)
INIT BUILT DATE : 2006. 10. 17
LAST BUILT DATE : 2007. 11. 29
P.S.>
- GetA / GetW <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> `<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD>X<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> NULL t<EFBFBD> D<EFBFBD>в <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܴ<EFBFBD><EFBFBD> ::free() \<EFBFBD> <EFBFBD>p<EFBFBD>t<EFBFBD>|<EFBFBD> h<EFBFBD>
Copyright<EFBFBD>$ 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved.
*///===============================================================
#pragma once
///////////////////////////////////////////////////////////////////
// INCLUDE
///////////////////////////////////////////////////////////////////
#include "SYSBASEBASE.H"
///////////////////////////////////////////////////////////////////
// DEFINE
///////////////////////////////////////////////////////////////////
#define DF_DEFAULT_NEWLINE_TOKEN_CHAR _T('\n')
#define DF_DEFAULT_NEWLINE_TOKEN_STRING _T("\n")
#define DF_MAX_FORMAT_TEMPBUFFER_SIZE (2048)
///////////////////////////////////////////////////////////////////
// DECLARATION
///////////////////////////////////////////////////////////////////
//*---------------------------------------------------------------
// TYPE : STRUCT
// NAME : STRINGHEADER
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD>T<EFBFBD><EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
typedef struct
{
INT m_iSize; // <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> D<EFBFBD>̲ TCHAR <EFBFBD><EFBFBD><EFBFBD>
INT m_iLinePtr; // <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> D<EFBFBD>̲ TCHAR <EFBFBD><EFBFBD><EFBFBD>
} STRINGHEADER, *LPSTRINGHEADER;
//*---------------------------------------------------------------
// TYPE : CLASS
// NAME : CStringSet
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> (ٳ<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
class CStringSet
{
private:
LPTSTR m_lpszStringBuffer;
public:
CStringSet();
CStringSet(LPCTSTR pString);
CStringSet(const CStringSet& pString);
CStringSet(const CStringSet* pString);
~CStringSet();
BOOL IsNull() const;
BOOL IsEmpty() const;
VOID Empty();
LPSTRINGHEADER GetHeader() const;
INT GetLength() const;
INT GetSize() const;
INT GetLinePtr() const;
VOID SetLinePtr(INT iLinePtr);
LPCTSTR Get() const;
LPCSTR GetA() const;
LPCWSTR GetW() const;
LPCTSTR Get(INT nStart) const;
LPCSTR GetA(INT nStart) const;
LPCWSTR GetW(INT nStart) const;
CStringSet GetLine();
VOID Reset();
VOID ResetLinePtr();
TCHAR GetAt(INT nIndex) const;
VOID SetAt(INT nIndex, TCHAR cChar);
TCHAR operator[](INT nIndex) const;
CStringSet& Set(LPCTSTR pString);
CStringSet& Set(CStringSet& pString);
CStringSet& Set(CStringSet* pString);
CStringSet& Append(LPCTSTR pString);
CStringSet& Append(CStringSet& pString);
CStringSet& Append(CStringSet* pString);
operator LPCTSTR() const;
// <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD>
CStringSet& operator=(LPCTSTR pString);
CStringSet& operator=(CStringSet& pString);
CStringSet& operator=(CStringSet* pString);
CStringSet& operator+=(LPCTSTR pString);
CStringSet& operator+=(CStringSet& pString);
CStringSet& operator+=(CStringSet* pString);
// D<EFBFBD>P<EFBFBD> <EFBFBD>Ű<EFBFBD> (<EFBFBD> X<EFBFBD>t<EFBFBD>ij|<EFBFBD> <EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> std::rel_ops <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> J<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>P<EFBFBD> l<EFBFBD><EFBFBD>)
bool operator==(LPCTSTR pString) const;
bool operator==(const CStringSet& pString) const;
bool operator==(const CStringSet* pString) const;
bool operator!=(LPCTSTR pString) const;
bool operator!=(const CStringSet& pString) const;
bool operator!=(const CStringSet* pString) const;
bool operator<(LPCTSTR pString) const;
bool operator<(const CStringSet& pString) const;
bool operator<(const CStringSet* pString) const;
bool operator>(LPCTSTR pString) const;
bool operator>(const CStringSet& pString) const;
bool operator>(const CStringSet* pString) const;
bool operator<=(LPCTSTR pString) const;
bool operator<=(const CStringSet& pString) const;
bool operator<=(const CStringSet* pString) const;
bool operator>=(LPCTSTR pString) const;
bool operator>=(const CStringSet& pString) const;
bool operator>=(const CStringSet* pString) const;
CStringSet Tokenize(LPCTSTR lpszTokens, INT& iStartPtr);
VOID Format(LPCTSTR lpszFormat, ...);
CStringSet& TrimLeft();
CStringSet& TrimRight();
CStringSet& Trim();
CStringSet Mid(INT nFirst, INT nCount) const;
CStringSet Mid(INT nFirst) const;
CStringSet Left(INT nCount) const;
CStringSet Right(INT nCount) const;
BOOL IsAlpha() const;
BOOL IsNumeric() const;
BOOL IsNumeric(BOOL &bIsRealNumber) const;
BOOL IsAlNum() const;
BOOL IsAlNum(BOOL &bIsRealNumber) const;
INT Compare(LPCTSTR pString) const;
INT CompareNoCase(LPCTSTR pString) const;
VOID MakeUpper();
VOID MakeLower();
VOID MakeReverse();
INT Find(TCHAR cChar) const;
INT Find(TCHAR cChar, INT nStart) const;
INT Find(LPCTSTR lpszSub) const;
INT Find(LPCTSTR lpszSub, INT nStart) const;
INT FindOneOf(LPCTSTR lpszCharSet) const;
INT FindOneOf(LPCTSTR lpszCharSet, INT nStart) const;
INT ReverseFind(TCHAR cChar) const;
//private:
LPTSTR ReAlloc(INT iNewSize, BOOL bForceTo = FALSE);
};