DragonNest/Server/ServiceMonitorEx/Source/StringSet.cpp

1875 lines
105 KiB
C++
Raw Permalink Normal View History

2024-12-19 09:48:26 +08:00
<EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////////////
// INCLUDE
///////////////////////////////////////////////////////////////////
#include "STDAFX.H"
#include "STRINGSET.H"
#include <ALGORITHM>
#include <SET>
///////////////////////////////////////////////////////////////////
// IMPLEMENTATION
///////////////////////////////////////////////////////////////////
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::CStringSet
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet::CStringSet()
{
m_lpszStringBuffer = NULL;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::CStringSet
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet::CStringSet(LPCTSTR pString)
{
m_lpszStringBuffer = NULL;
operator=(pString);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::CStringSet
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet::CStringSet(const CStringSet& pString)
{
m_lpszStringBuffer = NULL;
operator=(pString.Get());
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::CStringSet
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet::CStringSet(const CStringSet* pString)
{
m_lpszStringBuffer = NULL;
operator=(pString->Get());
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::~CStringSet
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet::~CStringSet()
{
Empty();
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::IsEmpty
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD>4<EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>
// PARM : N/A
// RETV : TRUE - 1<EFBFBD><EFBFBD><EFBFBD> / FALSE - <EFBFBD><EFBFBD>(<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
BOOL CStringSet::IsEmpty() const
{
return (BOOL)(!m_lpszStringBuffer || _T('\0') == m_lpszStringBuffer[0]);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::IsNull
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>X<EFBFBD> NULL <EFBFBD>ŀ<EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>
// PARM : N/A
// RETV : TRUE - 1<EFBFBD><EFBFBD><EFBFBD> / FALSE - <EFBFBD><EFBFBD>(<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
BOOL CStringSet::IsNull() const
{
return(!m_lpszStringBuffer);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Empty
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD>|<EFBFBD> <EFBFBD>p<EFBFBD>, <EFBFBD>0<EFBFBD>T<EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::Empty()
{
if (m_lpszStringBuffer) {
::free((LPVOID)((LPBYTE)(m_lpszStringBuffer) - sizeof(STRINGHEADER)));
m_lpszStringBuffer = NULL;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::ReAlloc
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD>|<EFBFBD> <EFBFBD>p<EFBFBD>, <EFBFBD>0<EFBFBD>T<EFBFBD>
// PARM : 1 . iNewSize - <EFBFBD><EFBFBD>\<EFBFBD> `<EFBFBD><EFBFBD><EFBFBD>`<EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD>l<EFBFBD>0<EFBFBD>
// 2 . bForceTo - <EFBFBD><EFBFBD>|<EFBFBD>l<EFBFBD>0<EFBFBD>|<EFBFBD> ^<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>%<EFBFBD><EFBFBD>@<EFBFBD> <EFBFBD><<EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD>\<EFBFBD> ޹<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ŀ<EFBFBD>
// RETV : <EFBFBD><EFBFBD>\<EFBFBD> `<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>X<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
LPTSTR CStringSet::ReAlloc(INT iNewSize, BOOL bForceTo)
{
if (iNewSize <= 0) {
return NULL;
}
LPBYTE lpbtTempBuffer;
LPSTRINGHEADER lpstStringHeader;
if (m_lpszStringBuffer) {
lpbtTempBuffer = (LPBYTE)(m_lpszStringBuffer) - sizeof(STRINGHEADER);
if (bForceTo) {
lpbtTempBuffer = (LPBYTE)::realloc(lpbtTempBuffer, iNewSize*sizeof(TCHAR)+sizeof(STRINGHEADER));
lpstStringHeader = (LPSTRINGHEADER)(lpbtTempBuffer);
lpstStringHeader->m_iSize = iNewSize;
if (lpstStringHeader->m_iLinePtr > iNewSize-1) {
lpstStringHeader->m_iLinePtr = iNewSize-1;
}
}
else {
lpstStringHeader = (LPSTRINGHEADER)(lpbtTempBuffer);
if (lpstStringHeader->m_iSize < iNewSize) {
lpbtTempBuffer = (LPBYTE)::realloc(lpbtTempBuffer, iNewSize*sizeof(TCHAR)+sizeof(STRINGHEADER));
lpstStringHeader = (LPSTRINGHEADER)(lpbtTempBuffer);
lpstStringHeader->m_iSize = iNewSize;
}
}
}
else {
lpbtTempBuffer = (LPBYTE)::calloc(iNewSize*sizeof(TCHAR)+sizeof(STRINGHEADER), sizeof(BYTE));
if (lpbtTempBuffer) {
lpstStringHeader = (LPSTRINGHEADER)(lpbtTempBuffer);
lpstStringHeader->m_iLinePtr = 0;
lpstStringHeader->m_iSize = iNewSize;
}
}
if (lpbtTempBuffer) {
m_lpszStringBuffer = (LPTSTR)(lpbtTempBuffer+sizeof(STRINGHEADER));
lpstStringHeader = (LPSTRINGHEADER)(lpbtTempBuffer);
m_lpszStringBuffer[lpstStringHeader->m_iSize-1] = _T('\0');
return m_lpszStringBuffer;
}
return NULL;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Get
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : N/A
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>X<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
LPCTSTR CStringSet::Get() const
{
return m_lpszStringBuffer;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetA
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (ASCII <EFBFBD><EFBFBD><EFBFBD>)
// PARM : N/A
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>X<EFBFBD> (ASCII <EFBFBD><EFBFBD><EFBFBD>, HEAP T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
// P.S.>
// - <EFBFBD>X<EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0є<EFBFBD> NULLt<EFBFBD> D<EFBFBD>в <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܴ<EFBFBD><EFBFBD> ::free() \<EFBFBD> t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> h<EFBFBD>
//*---------------------------------------------------------------
LPCSTR CStringSet::GetA() const
{
return ::strdup(CT2A(m_lpszStringBuffer));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetW
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (UNICODE <EFBFBD><EFBFBD><EFBFBD>)
// PARM : N/A
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>X<EFBFBD> (UNICODE <EFBFBD><EFBFBD><EFBFBD>, HEAP T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
// P.S.>
// - <EFBFBD>X<EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0є<EFBFBD> NULLt<EFBFBD> D<EFBFBD>в <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܴ<EFBFBD><EFBFBD> ::free() \<EFBFBD> t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> h<EFBFBD>
//*---------------------------------------------------------------
LPCWSTR CStringSet::GetW() const
{
return ::wcsdup(CT2W(m_lpszStringBuffer));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Get
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (UNICODE <EFBFBD><EFBFBD><EFBFBD>)
// PARM : 1 . nStart - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD>‘<EFBFBD><EFBFBD>
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>X<EFBFBD> (UNICODE <EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
LPCTSTR CStringSet::Get(INT nStart) const
{
if (!m_lpszStringBuffer) {
return NULL;
}
INT nSize = GetSize();
if (nSize <= 0 || nStart < 0 || nSize-1 < nStart) {
return NULL;
}
return m_lpszStringBuffer + nStart;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetA
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (ASCII <EFBFBD><EFBFBD><EFBFBD>)
// PARM : 1 . nStart - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD>‘<EFBFBD><EFBFBD>
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>X<EFBFBD> (ASCII <EFBFBD><EFBFBD><EFBFBD>, HEAP T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
// P.S.>
// - <EFBFBD>X<EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0є<EFBFBD> NULLt<EFBFBD> D<EFBFBD>в <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܴ<EFBFBD><EFBFBD> ::free() \<EFBFBD> t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> h<EFBFBD>
//*---------------------------------------------------------------
LPCSTR CStringSet::GetA(INT nStart) const
{
if (!m_lpszStringBuffer) {
return NULL;
}
INT nSize = GetSize();
if (nSize <= 0 || nStart < 0 || nSize-1 < nStart) {
return NULL;
}
return ::strdup(CT2A(m_lpszStringBuffer + nStart));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetW
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (UNICODE <EFBFBD><EFBFBD><EFBFBD>)
// PARM : 1 . nStart - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD>‘<EFBFBD><EFBFBD>
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>X<EFBFBD> (UNICODE <EFBFBD><EFBFBD><EFBFBD>, HEAP T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
// P.S.>
// - <EFBFBD>X<EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0є<EFBFBD> NULLt<EFBFBD> D<EFBFBD>в <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܴ<EFBFBD><EFBFBD> ::free() \<EFBFBD> t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> h<EFBFBD>
//*---------------------------------------------------------------
LPCWSTR CStringSet::GetW(INT nStart) const
{
if (!m_lpszStringBuffer) {
return NULL;
}
INT nSize = GetSize();
if (nSize <= 0 || nStart < 0 || nSize-1 < nStart) {
return NULL;
}
return ::wcsdup(CT2W(m_lpszStringBuffer + nStart));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetLine
//*---------------------------------------------------------------
// DESC : ȴ<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> \<EFBFBD> <EFBFBD>D<EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : N/A
// PARM : 1 . nStart - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD>‘<EFBFBD><EFBFBD>
// RETV : ȴ<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> \<EFBFBD> <EFBFBD>D<EFBFBD> <EFBFBD>X<EFBFBD>\<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet CStringSet::GetLine()
{
CStringSet aString;
if (!IsEmpty()) {
INT iStartPtr = GetLinePtr();
aString = Tokenize(DF_DEFAULT_NEWLINE_TOKEN_STRING, iStartPtr);
SetLinePtr(iStartPtr);
}
return aString;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetLength
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>t<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (TCHAR 0<EFBFBD><EFBFBD>)
// PARM : N/A
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>t<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::GetLength() const
{
if (m_lpszStringBuffer) {
return (INT)_tcslen(m_lpszStringBuffer);
}
else {
return 0;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetHeader
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : N/A
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
LPSTRINGHEADER CStringSet::GetHeader() const
{
if (m_lpszStringBuffer) {
return (LPSTRINGHEADER)((LPBYTE)(m_lpszStringBuffer) - sizeof(STRINGHEADER));
}
else {
return NULL;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetSize
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD>X<EFBFBD> 8<EFBFBD>t<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (TCHAR 0<EFBFBD><EFBFBD>)
// PARM : N/A
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>|<EFBFBD>X<EFBFBD> 8<EFBFBD>t<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::GetSize() const
{
if (m_lpszStringBuffer) {
return GetHeader()->m_iSize;
}
else {
return 0;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetLinePtr
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> \<EFBFBD> <EFBFBD>D<EFBFBD> l<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : N/A
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>l<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::GetLinePtr() const
{
if (m_lpszStringBuffer) {
return GetHeader()->m_iLinePtr;
}
else {
return 0;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::SetLinePtr
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> \<EFBFBD> <EFBFBD>D<EFBFBD> l<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
// PARM : 1 . iLinePtr - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> \<EFBFBD> <EFBFBD>D<EFBFBD> l<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> <EFBFBD>
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::SetLinePtr(INT iLinePtr)
{
if (m_lpszStringBuffer) {
GetHeader()->m_iLinePtr = iLinePtr;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Reset
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD>T<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>K<EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::Reset()
{
if (m_lpszStringBuffer) {
m_lpszStringBuffer[0] = _T('\0');
GetHeader()->m_iLinePtr = 0;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::ResetLinePtr
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> \<EFBFBD> <EFBFBD>D<EFBFBD> l<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>0<EFBFBD>T<EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::ResetLinePtr()
{
if (m_lpszStringBuffer) {
GetHeader()->m_iLinePtr = 0;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::GetAt
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ǔ<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD> (TCHAR 0<EFBFBD><EFBFBD>)
// PARM : 1 . nIndex - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ǔ<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
#pragma warning (disable:4310)
TCHAR CStringSet::GetAt(INT nIndex) const
{
INT nLength = GetLength();
if (nIndex >= 0 && nIndex < nLength) {
return m_lpszStringBuffer[nIndex];
}
return (TCHAR)(0xFFFF);
}
#pragma warning (default:4310)
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::SetAt
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> (TCHAR 0<EFBFBD><EFBFBD>)
// PARM : 1 . nIndex - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::SetAt(INT nIndex, TCHAR cChar)
{
INT nLength = GetLength();
if (nIndex >= 0 && nIndex < nLength) {
m_lpszStringBuffer[nIndex] = cChar;
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator[]
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ǔ<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD>, GetAt() <EFBFBD><EFBFBD> <EFBFBD>L<EFBFBD> (TCHAR 0<EFBFBD><EFBFBD>)
// PARM : 1 . nIndex - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// RETV : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ǔ<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
TCHAR CStringSet::operator[](INT nIndex) const
{
INT nLength = GetLength();
if (nIndex >= 0 && nIndex < nLength-1) {
return m_lpszStringBuffer[nIndex];
}
return _T('\0');
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator LPCTSTR
//*---------------------------------------------------------------
// DESC : CStringSet <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> LPCTSTR <EFBFBD> <EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD>
// PARM : N/A
// RETV : LPCTSTR <EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet::operator LPCTSTR() const
{
if (m_lpszStringBuffer) {
return const_cast<LPCTSTR>(m_lpszStringBuffer);
}
return NULL;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X<EFBFBD>X<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::operator=(LPCTSTR pString)
{
if (pString) {
LPTSTR aStringBuffer = m_lpszStringBuffer;
INT iSize = (INT)_tcslen(pString)+1;
if (iSize > 0 && GetSize() < iSize) {
aStringBuffer = ReAlloc(iSize);
}
if (aStringBuffer) {
_tcsncpy(aStringBuffer, pString, GetSize()-1);
}
}
else {
Reset();
}
ResetLinePtr();
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X<EFBFBD>X<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::operator=(CStringSet& pString)
{
if (!pString.IsEmpty()) {
LPTSTR aStringBuffer = m_lpszStringBuffer;
INT iSize = pString.GetSize();
if (iSize > 0 && GetSize() < iSize) {
aStringBuffer = ReAlloc(iSize);
}
if (aStringBuffer) {
_tcsncpy(aStringBuffer, pString.Get(), GetSize()-1);
}
}
else {
Reset();
}
ResetLinePtr();
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X<EFBFBD>X<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::operator=(CStringSet* pString)
{
if (pString && !pString->IsEmpty()) {
LPTSTR aStringBuffer = m_lpszStringBuffer;
INT iSize = pString->GetSize();
if (iSize > 0 && GetSize() < iSize) {
aStringBuffer = ReAlloc(iSize);
}
if (aStringBuffer) {
_tcsncpy(aStringBuffer, pString->Get(), GetSize()-1);
}
}
else {
Reset();
}
ResetLinePtr();
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator+=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::operator+=(LPCTSTR pString)
{
if (pString) {
LPTSTR aStringBuffer = m_lpszStringBuffer;
INT iSize1 = (INT)_tcslen(pString)+1;
INT iSize2 = GetSize();
INT nLength = GetLength();
if (iSize1 > iSize2 - nLength - 1) {
aStringBuffer = ReAlloc(iSize1 + iSize2);
}
if (aStringBuffer) {
_tcsncat(aStringBuffer, pString, GetSize()-1);
}
}
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator+=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::operator+=(CStringSet& pString)
{
if (!pString.IsEmpty()) {
LPTSTR aStringBuffer = m_lpszStringBuffer;
INT iSize1 = pString.GetSize();
INT iSize2 = GetSize();
INT nLength = GetLength();
if (iSize1 > iSize2 - nLength - 1) {
aStringBuffer = ReAlloc(iSize1 + iSize2);
}
if (aStringBuffer) {
_tcsncat(aStringBuffer, pString.Get(), GetSize()-1);
}
}
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator+=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::operator+=(CStringSet* pString)
{
if (pString && !pString->IsEmpty()) {
LPTSTR aStringBuffer = m_lpszStringBuffer;
INT iSize1 = pString->GetSize();
INT iSize2 = GetSize();
INT nLength = GetLength();
if (iSize1 > iSize2 - nLength - 1) {
aStringBuffer = ReAlloc(iSize1 + iSize2);
}
if (aStringBuffer) {
_tcsncat(aStringBuffer, pString->Get(), GetSize()-1);
}
}
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator==
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> == D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator==(LPCTSTR pString) const
{
return (Compare(pString) == 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator==
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> == D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator==(const CStringSet& pString) const
{
return (Compare(pString.Get()) == 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator==
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> == D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator==(const CStringSet* pString) const
{
return (Compare(pString->Get()) == 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator!=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> != D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator!=(LPCTSTR pString) const
{
return (Compare(pString) != 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator!=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> == D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator!=(const CStringSet& pString) const
{
return (Compare(pString.Get()) != 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator!=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> != D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator!=(const CStringSet* pString) const
{
return (Compare(pString->Get()) != 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator<
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> < D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator<(LPCTSTR pString) const
{
return (Compare(pString) < 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator<
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> < D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator<(const CStringSet& pString) const
{
return (Compare(pString.Get()) < 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator<
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> < D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator<(const CStringSet* pString) const
{
return (Compare(pString->Get()) < 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator>
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> > D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator>(LPCTSTR pString) const
{
return (Compare(pString) > 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator>
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> > D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator>(const CStringSet& pString) const
{
return (Compare(pString.Get()) > 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator>
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> > D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator>(const CStringSet* pString) const
{
return (Compare(pString->Get()) > 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator<=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <= D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator<=(LPCTSTR pString) const
{
return (Compare(pString) <= 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator<=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <= D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator<=(const CStringSet& pString) const
{
return (Compare(pString.Get()) <= 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator<=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <= D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator<=(const CStringSet* pString) const
{
return (Compare(pString->Get()) <= 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator>=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> >= D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator>=(LPCTSTR pString) const
{
return (Compare(pString) >= 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator>=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> >= D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator>=(const CStringSet& pString) const
{
return (Compare(pString.Get()) >= 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::operator>=
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> >= D<EFBFBD>P<EFBFBD><EFBFBD>Ű<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : true - 1<EFBFBD><EFBFBD><EFBFBD> / false - <EFBFBD><EFBFBD>(<EFBFBD> (stl <EFBFBD><EFBFBD>L<EFBFBD>t<EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>0<EFBFBD> <EFBFBD>t<EFBFBD> BOOL <EFBFBD><EFBFBD><EFBFBD> bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
bool CStringSet::operator>=(const CStringSet* pString) const
{
return (Compare(pString->Get()) >= 0);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Set
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X<EFBFBD>X<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::Set(LPCTSTR pString)
{
return(operator=(pString));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Set
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X<EFBFBD>X<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::Set(CStringSet& pString)
{
return(operator=(pString));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Set
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X<EFBFBD>X<EFBFBD>`<EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::Set(CStringSet* pString)
{
return(operator=(pString));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Append
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::Append(LPCTSTR pString)
{
return(operator+=(pString));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Append
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::Append(CStringSet& pString)
{
return(operator+=(pString));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Append
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD>
// PARM : 1 . pString - CStringSet <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>0<EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>)
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::Append(CStringSet* pString)
{
return(operator+=(pString));
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Tokenize
//*---------------------------------------------------------------
// DESC : l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD>Ĭ\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><<EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
// PARM : 1 . lpszTokens - l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>, \0<<EFBFBD>\<EFBFBD> ]<EFBFBD><EFBFBD><EFBFBD>)
// 2 . iStartPtr - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// RETV :
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet CStringSet::Tokenize(LPCTSTR lpszTokens, INT& iStartPtr)
{
CStringSet aString;
INT nLength = GetLength();
if (IsEmpty() || iStartPtr < 0 || iStartPtr >= nLength) {
return aString;
}
std::set<TCHAR> setTokens;
INT iIndex;
if (!lpszTokens || lpszTokens[0] == _T('\0')) {
setTokens.insert(DF_DEFAULT_NEWLINE_TOKEN_CHAR);
}
else {
for (iIndex = 0 ; lpszTokens[iIndex] != _T('\0') ; ++iIndex) {
setTokens.insert(lpszTokens[iIndex]);
}
}
for (iIndex = iStartPtr ; iIndex < nLength ; ++iIndex) {
if (setTokens.find(m_lpszStringBuffer[iIndex]) != setTokens.end()) {
break;
}
}
if (iStartPtr < iIndex) {
LPTSTR aStringBuffer = aString.ReAlloc(iStartPtr+iIndex+1);
if (aStringBuffer) {
::memcpy(aStringBuffer, m_lpszStringBuffer+iStartPtr, (iIndex - iStartPtr)*sizeof(TCHAR));
aStringBuffer[iIndex - iStartPtr] = _T('\0');
}
}
iStartPtr = ++iIndex;
return(aString);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Format
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD><<EFBFBD>\<EFBFBD> X<EFBFBD>X<EFBFBD>
// PARM : 1 . lpszFormat - <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::Format(LPCTSTR lpszFormat, ...)
{
if (!lpszFormat) {
return;
}
TCHAR szFormat[DF_MAX_FORMAT_TEMPBUFFER_SIZE] = {0,};
va_list lpArgPtr;
INT iChrWritten;
va_start(lpArgPtr, lpszFormat);
iChrWritten = VSNPRINTF(szFormat, COUNT_OF(szFormat), lpszFormat, lpArgPtr);
BASE_ASSERT(0 < iChrWritten, "Invalid!");
va_end(lpArgPtr);
INT iLength = (INT)_tcslen(szFormat);
if (iLength > 0) {
LPTSTR aStringBuffer = ReAlloc(iLength+1);
if (aStringBuffer) {
_tcsncpy(aStringBuffer, szFormat, GetSize());
}
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::TrimLeft
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> |ƽ<EFBFBD> <EFBFBD><EFBFBD>1<EFBFBD>D<EFBFBD> <EFBFBD>p<EFBFBD>
// PARM : N/A
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::TrimLeft()
{
INT nLength = GetLength();
if (nLength > 0) {
INT iStartPtr = 0;
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
if (m_lpszStringBuffer[iIndex] == _T(' ')) {
iStartPtr = iIndex + 1;
}
else {
break;
}
}
if (iStartPtr > 1) {
::memmove(m_lpszStringBuffer, m_lpszStringBuffer+iStartPtr, (nLength-iStartPtr)*sizeof(TCHAR));
m_lpszStringBuffer[nLength-iStartPtr] = _T('\0');
}
}
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::TrimRight
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> $<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>1<EFBFBD>D<EFBFBD> <EFBFBD>p<EFBFBD>
// PARM : N/A
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::TrimRight()
{
INT nLength = GetLength();
if (nLength > 0) {
for (INT iIndex = nLength - 1 ; iIndex >= 0 ; --iIndex) {
if (m_lpszStringBuffer[iIndex] == _T(' ')) {
m_lpszStringBuffer[iIndex] = _T('\0');
}
else {
break;
}
}
}
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Trim
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD>Ž<EFBFBD> <EFBFBD><EFBFBD>1<EFBFBD>D<EFBFBD> <EFBFBD>p<EFBFBD>
// PARM : N/A
// RETV : CStringSet <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD>p<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet& CStringSet::Trim()
{
TrimLeft();
TrimRight();
return(*this);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Mid
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>p<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD>L<EFBFBD>
// PARM : 1 . nFirst - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD>‘<EFBFBD><EFBFBD>X<EFBFBD>
// 2 . nCount - <EFBFBD>Ŵ<EFBFBD>,<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD>
// RETV : <EFBFBD><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet CStringSet::Mid(INT nFirst, INT nCount) const
{
CStringSet aString;
INT nLength = GetLength();
if (nFirst >= 0 &&
nCount > 0 &&
!IsEmpty() &&
nLength > nFirst
)
{
if (nFirst + nCount > nLength) {
nCount = nLength - nFirst;
}
LPTSTR aStringBuffer1 = aString.ReAlloc(nCount+1);
LPTSTR aStringBuffer2 = m_lpszStringBuffer;
::memcpy(aStringBuffer1, aStringBuffer2+nFirst, nCount*sizeof(TCHAR));
aStringBuffer1[nCount] = _T('\0');
}
return(aString);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Mid
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>p<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X΀<EFBFBD>0<EFBFBD> ]<EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD>L<EFBFBD>
// PARM : 1 . nFirst - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD>‘<EFBFBD><EFBFBD>X<EFBFBD>
// RETV : <EFBFBD><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet CStringSet::Mid(INT nFirst) const
{
CStringSet aString;
INT nLength = GetLength();
INT nCount = 0;
if (nFirst >= 0 &&
!IsEmpty() &&
nLength > nFirst
)
{
nCount = nLength - nFirst;
LPTSTR aStringBuffer1 = aString.ReAlloc(nCount+1);
LPTSTR aStringBuffer2 = m_lpszStringBuffer;
::memcpy(aStringBuffer1, aStringBuffer2+nFirst, nCount*sizeof(TCHAR));
aStringBuffer1[nCount] = _T('\0');
}
return(aString);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Left
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> |ƽʀ<EFBFBD>0<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>̹|<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD>L<EFBFBD>
// PARM : 1 . nCount - <EFBFBD>Ŵ<EFBFBD>,<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD>
// RETV : <EFBFBD><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet CStringSet::Left(INT nCount) const
{
CStringSet aString;
INT nLength = GetLength();
if (!IsEmpty() &&
nCount > 0
)
{
if (nCount > nLength) {
nCount = nLength;
}
LPTSTR aStringBuffer1 = aString.ReAlloc(nCount+1);
LPTSTR aStringBuffer2 = m_lpszStringBuffer;
::memcpy(aStringBuffer1, aStringBuffer2, nCount*sizeof(TCHAR));
aStringBuffer1[nCount] = _T('\0');
}
return(aString);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Right
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> $<EFBFBD>x<EFBFBD><EFBFBD>ʀ<EFBFBD>0<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>̹|<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> <EFBFBD><EFBFBD>L<EFBFBD>
// PARM : 1 . nCount - <EFBFBD>Ŵ<EFBFBD>,<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD>
// RETV : <EFBFBD><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
CStringSet CStringSet::Right(INT nCount) const
{
CStringSet aString;
INT nLength = GetLength();
if (!IsEmpty() &&
nCount > 0
)
{
if (nCount > nLength) {
nCount = nLength;
}
LPTSTR aStringBuffer1 = aString.ReAlloc(nCount+1);
LPTSTR aStringBuffer2 = m_lpszStringBuffer;
::memcpy(aStringBuffer1, aStringBuffer2+nLength-nCount, nCount*sizeof(TCHAR));
aStringBuffer1[nCount] = _T('\0');
}
return(aString);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::IsAlpha
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD> <EFBFBD>8<EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>
// PARM : N/A
// RETV : TRUE - 1<EFBFBD><EFBFBD><EFBFBD> / FALSE - <EFBFBD><EFBFBD>(<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
BOOL CStringSet::IsAlpha() const
{
if (!m_lpszStringBuffer) {
return FALSE;
}
INT nLength = GetLength();
if (nLength <= 0) {
return FALSE;
}
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
if (!_istalpha(m_lpszStringBuffer[iIndex])) {
return FALSE;
}
}
return TRUE;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::IsNumeric
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD> +<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>
// PARM : N/A
// RETV : TRUE - 1<EFBFBD><EFBFBD><EFBFBD> / FALSE - <EFBFBD><EFBFBD>(<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
BOOL CStringSet::IsNumeric() const
{
if (!m_lpszStringBuffer) {
return FALSE;
}
BOOL bHasNumeric = FALSE;
INT nLength = GetLength();
if (nLength <= 0) {
return FALSE;
}
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
if (iIndex == 0 && m_lpszStringBuffer[iIndex] == _T('-')) {
continue;
}
if (!_istdigit(m_lpszStringBuffer[iIndex])) {
return FALSE;
}
bHasNumeric = TRUE;
}
return bHasNumeric;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::IsNumeric
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD> +<EFBFBD> (<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>h<EFBFBD>) x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>
// PARM : 1 . bIsRealNumber - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ŀ<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD>L<EFBFBD>
// RETV : TRUE - 1<EFBFBD><EFBFBD><EFBFBD> / FALSE - <EFBFBD><EFBFBD>(<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
BOOL CStringSet::IsNumeric(BOOL &bIsRealNumber) const
{
if (!m_lpszStringBuffer) {
return FALSE;
}
INT nLength = GetLength();
if (nLength <= 0) {
return FALSE;
}
BOOL bHasNumeric = FALSE;
INT nDotCount = 0; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ('.') X<EFBFBD> <EFBFBD><EFBFBD>
bIsRealNumber = FALSE;
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
if (iIndex == 0 && m_lpszStringBuffer[iIndex] == _T('-')) {
continue;
}
if (iIndex > 0 && m_lpszStringBuffer[iIndex] == _T('.')) {
++nDotCount;
continue;
}
if (!_istdigit(m_lpszStringBuffer[iIndex])) {
return FALSE;
}
bHasNumeric = TRUE;
}
if (nDotCount > 1) {
return FALSE;
}
if (nDotCount == 1) {
bIsRealNumber = TRUE;
}
return bHasNumeric;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::IsAlNum
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD> <EFBFBD>8<EFBFBD><EFBFBD><EFBFBD> 9<EFBFBD>@<EFBFBD> +<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>
// PARM : N/A
// RETV : TRUE - 1<EFBFBD><EFBFBD><EFBFBD> / FALSE - <EFBFBD><EFBFBD>(<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
BOOL CStringSet::IsAlNum() const
{
if (!m_lpszStringBuffer) {
return FALSE;
}
INT nLength = GetLength();
if (nLength <= 0) {
return FALSE;
}
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
if (!_istalnum(m_lpszStringBuffer[iIndex])) {
return FALSE;
}
}
return TRUE;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::IsAlNum
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD> <EFBFBD>8<EFBFBD><EFBFBD><EFBFBD> 9<EFBFBD>@<EFBFBD> +<EFBFBD> (<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>h<EFBFBD>) x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>
// PARM : 1 . bIsRealNumber - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ŀ<EFBFBD>|<EFBFBD> <EFBFBD>X<EFBFBD><EFBFBD>L<EFBFBD>
// RETV : TRUE - 1<EFBFBD><EFBFBD><EFBFBD> / FALSE - <EFBFBD><EFBFBD>(<EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
BOOL CStringSet::IsAlNum(BOOL &bIsRealNumber) const
{
if (!m_lpszStringBuffer) {
return FALSE;
}
INT nLength = GetLength();
if (nLength <= 0) {
return FALSE;
}
INT nDotCount = 0; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ('.') X<EFBFBD> <EFBFBD><EFBFBD>
bIsRealNumber = FALSE;
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
if (_istalnum(m_lpszStringBuffer[iIndex])) {
continue;
}
if (m_lpszStringBuffer[iIndex] == _T('.')) {
continue;
}
return FALSE;
}
if (nDotCount > 1) {
return FALSE;
}
if (nDotCount == 1) {
bIsRealNumber = TRUE;
}
return TRUE;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Compare
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> ٳ<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ|<EFBFBD> D<EFBFBD>P<EFBFBD>
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : 0:<EFBFBD>L<EFBFBD>/L<EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>L<EFBFBD>/<EFBFBD><EFBFBD><EFBFBD>:|<EFBFBD>/_NLSCMPERROR:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::Compare(LPCTSTR pString) const
{
return _tcscmp(m_lpszStringBuffer, pString);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::CompareNoCase
//*---------------------------------------------------------------
// DESC : <EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>@<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> ٳ<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ|<EFBFBD> D<EFBFBD>P<EFBFBD> (<EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>)
// PARM : 1 . pString - D<EFBFBD>P<EFBFBD>`<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : 0:<EFBFBD>L<EFBFBD>/L<EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>L<EFBFBD>/<EFBFBD><EFBFBD><EFBFBD>:|<EFBFBD>/_NLSCMPERROR:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::CompareNoCase(LPCTSTR pString) const
{
return _tcsnicmp(m_lpszStringBuffer, pString, GetLength());
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::MakeUpper
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD>8<EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD>X<EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::MakeUpper()
{
if (!m_lpszStringBuffer) {
return;
}
INT nLength = GetLength();
if (nLength <= 0) {
return;
}
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
m_lpszStringBuffer[iIndex] = (TCHAR)_totupper(m_lpszStringBuffer[iIndex]);
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::MakeLower
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>8<EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD>X<EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::MakeLower()
{
if (!m_lpszStringBuffer) {
return;
}
INT nLength = GetLength();
if (nLength <= 0) {
return;
}
for (INT iIndex = 0 ; iIndex < nLength ; ++iIndex) {
m_lpszStringBuffer[iIndex] = (TCHAR)_totlower(m_lpszStringBuffer[iIndex]);
}
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::MakeReverse
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD>X<EFBFBD> <EFBFBD>Ȱ<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>
// PARM : N/A
// RETV : N/A
// PRGM : B4nFter
//*---------------------------------------------------------------
VOID CStringSet::MakeReverse()
{
if (!m_lpszStringBuffer) {
return;
}
INT nLength = GetLength();
if (nLength <= 0) {
return;
}
std::reverse(&m_lpszStringBuffer[0], &m_lpszStringBuffer[nLength]);
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Find
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD>|<EFBFBD> ><EFBFBD>D<EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : 1 . cChar - ><EFBFBD>D<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>
// RETV : ><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><<EFBFBD>t<EFBFBD> -1 <EFBFBD>X<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::Find(TCHAR cChar) const
{
if (!m_lpszStringBuffer) {
return -1;
}
INT nLength = GetLength();
if (nLength <= 0) {
return -1;
}
TCHAR *lpcChar = _tcschr(m_lpszStringBuffer, cChar);
if (lpcChar) {
return (INT)(lpcChar - m_lpszStringBuffer);
}
return -1;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::ReverseFind
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD> ><EFBFBD>D<EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : 1 . cChar -
// RETV : ><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><<EFBFBD>t<EFBFBD> -1 <EFBFBD>X<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::ReverseFind(TCHAR cChar) const
{
if (!m_lpszStringBuffer) {
return -1;
}
INT nLength = GetLength();
if (nLength <= 0) {
return -1;
}
TCHAR *lpcChar = _tcsrchr(m_lpszStringBuffer, cChar);
if (lpcChar) {
return (INT)(lpcChar - m_lpszStringBuffer);
}
return -1;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Find
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X΀<EFBFBD>0<EFBFBD> <EFBFBD>‘<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> ><EFBFBD>D<EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : 1 . cChar - ><EFBFBD>D<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>
// 2 . nStart - 8<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> ><EFBFBD>0<EFBFBD> <EFBFBD>‘<EFBFBD>`<EFBFBD> <EFBFBD>X<EFBFBD>
// RETV : ><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><<EFBFBD>t<EFBFBD> -1 <EFBFBD>X<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::Find(TCHAR cChar, INT nStart) const
{
if (!m_lpszStringBuffer) {
return -1;
}
INT nLength = GetLength();
if (nLength <= 0 || nStart < 0 || nLength-1 < nStart) {
return -1;
}
TCHAR *lpcChar = _tcschr(m_lpszStringBuffer+nStart, cChar);
if (lpcChar) {
return (INT)(lpcChar - m_lpszStringBuffer);
}
return -1;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::FindOneOf
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD>|<EFBFBD> ><EFBFBD>D<EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : 1 . lpszCharSet - ><EFBFBD>D<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>
// RETV : ><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><<EFBFBD>t<EFBFBD> -1 <EFBFBD>X<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::FindOneOf(LPCTSTR lpszCharSet) const
{
if (!m_lpszStringBuffer || !lpszCharSet) {
return -1;
}
INT nLength1 = GetLength();
if (nLength1 <= 0) {
return -1;
}
INT nLength2 = (INT)_tcslen(lpszCharSet);
if (nLength2 <= 0) {
return -1;
}
std::set<TCHAR> setTokens;
for (INT iIndex = 0 ; iIndex < nLength2 ; ++iIndex) {
setTokens.insert(lpszCharSet[iIndex]);
}
for (INT iIndex = 0 ; iIndex < nLength1 ; ++iIndex) {
if (setTokens.find(m_lpszStringBuffer[iIndex]) != setTokens.end()) {
return iIndex;
}
}
return -1;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::FindOneOf
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD>|<EFBFBD> ><EFBFBD>D<EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X΀<EFBFBD>0<EFBFBD> <EFBFBD>‘<EFBFBD>)
// PARM : 1 . lpszCharSet - ><EFBFBD>D<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>
// 2 . nStart - ><EFBFBD>0<EFBFBD> <EFBFBD>‘<EFBFBD>`<EFBFBD> <EFBFBD>X<EFBFBD>
// RETV : ><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><<EFBFBD>t<EFBFBD> -1 <EFBFBD>X<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::FindOneOf(LPCTSTR lpszCharSet, INT nStart) const
{
if (!m_lpszStringBuffer || !lpszCharSet) {
return -1;
}
INT nLength1 = GetLength();
if (nLength1 <= 0 || nStart < 0 || nLength1-1 < nStart) {
return -1;
}
INT nLength2 = (INT)_tcslen(lpszCharSet);
if (nLength2 <= 0) {
return -1;
}
std::set<TCHAR> setTokens;
for (INT iIndex = 0 ; iIndex < nLength2 ; ++iIndex) {
setTokens.insert(lpszCharSet[iIndex]);
}
for (INT iIndex = nStart ; iIndex < nLength1 ; ++iIndex) {
if (setTokens.find(m_lpszStringBuffer[iIndex]) != setTokens.end()) {
return iIndex;
}
}
return -1;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Find
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD>|<EFBFBD> ><EFBFBD>D<EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : 1 . lpszSub - ><EFBFBD>D<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RETV : ><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><<EFBFBD>t<EFBFBD> -1 <EFBFBD>X<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::Find(LPCTSTR lpszSub) const
{
if (!m_lpszStringBuffer || !lpszSub) {
return -1;
}
INT nLength1 = GetLength();
if (nLength1 <= 0) {
return -1;
}
INT nLength2 = (INT)_tcslen(lpszSub);
if (nLength2 <= 0) {
return -1;
}
LPTSTR lpszStr = _tcsstr(m_lpszStringBuffer, lpszSub);
if (lpszStr) {
return (INT)(lpszStr - m_lpszStringBuffer);
}
return -1;
}
//*---------------------------------------------------------------
// TYPE : FUNCTION
// NAME : CStringSet::Find
//*---------------------------------------------------------------
// DESC : 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>t<EFBFBD>0<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>X΀<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>‘<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> ><EFBFBD>D<EFBFBD><EFBFBD> <EFBFBD>X<EFBFBD>
// PARM : 1 . lpszSub - ><EFBFBD>D<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 2 . nStart - 8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD> ><EFBFBD>0<EFBFBD> <EFBFBD>‘<EFBFBD>`<EFBFBD> <EFBFBD>X<EFBFBD>
// RETV : ><EFBFBD>@<EFBFBD> 8<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD> <EFBFBD>X<EFBFBD> (<EFBFBD><EFBFBD><<EFBFBD>t<EFBFBD> -1 <EFBFBD>X<EFBFBD>)
// PRGM : B4nFter
//*---------------------------------------------------------------
INT CStringSet::Find(LPCTSTR lpszSub, INT nStart) const
{
if (!m_lpszStringBuffer || !lpszSub) {
return -1;
}
INT nLength1 = GetLength();
if (nLength1 <= 0 || nStart < 0 || nLength1-1 < nStart) {
return -1;
}
INT nLength2 = (INT)_tcslen(lpszSub);
if (nLength2 <= 0) {
return -1;
}
LPTSTR lpszStr = _tcsstr(m_lpszStringBuffer+nStart, lpszSub);
if (lpszStr) {
return (INT)(lpszStr - m_lpszStringBuffer);
}
return -1;
}