//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TWCStringList.cpp // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 类的定义 // = Maintainers: // //-----------------------------------------------------------------------------+ #include "StdAfx.h" #include "TWCStringList.h" static wchar_t * WStrNew(const wchar_t *src) { if (src == NULL) { return NULL; } int len = wcslen(src)+1; wchar_t *res = new wchar_t[len]; memcpy(res, src, len*sizeof(wchar_t)); return res; } TWCStringList::TWCStringList() { } TWCStringList::TWCStringList(TWCStringList &szSrc) { *this = szSrc; } TWCStringList::TWCStringList(const wchar_t **pBeg, int nCount) { m_nDelFlag = 1; const wchar_t **p = pBeg; for ( int i = 0; i < nCount; i++) { Append(WStrNew(*p)); p++; } } TWCStringList::~TWCStringList() { } // 返回符号表的序号: -1表示符号不在列表里 // 不分大小写 int TWCStringList::Index(const wchar_t *pBeg, int nCaseSense) { if (!pBeg) { return -1; } int nLen = Length(); if (!nCaseSense) { for (int i = 0; i < nLen; i++) { if (_wcsicmp((*this)[i], pBeg) == 0) { return i; } } } else { for (int i = 0; i < nLen; i++) { if (wcscmp((*this)[i], pBeg) == 0) { return i; } } } return -1; } TWCStringList & TWCStringList::operator =(TWCStringList &szSrc) { Reset(); int nLen = szSrc.Length(); for (int i = 0; i < nLen; i++) { Append(WStrNew(szSrc[i])); } return *this; } typedef int (* WStrCompFun)(const wchar_t *, const wchar_t *); wchar_t * TWCStringList::MaxValue(int nCaseSence) { WStrCompFun cmp = nCaseSence ? wcscmp : _wcsicmp; int nLen = Length(); wchar_t *pszRes = NULL; for (int i = 0; i < nLen; i++) { if (!pszRes) { pszRes = (*this)[i]; } else { pszRes = cmp(pszRes,(*this)[i]) >= 0 ? pszRes : (*this)[i]; } } return pszRes; } wchar_t * TWCStringList::MinValue(int nCaseSence) { WStrCompFun cmp = nCaseSence ? wcscmp : _wcsicmp; int nLen = Length(); wchar_t *pszRes = NULL; for (int i = 0; i < nLen; i++) { if (!pszRes) { pszRes = (*this)[i]; } else { pszRes= cmp(pszRes,(*this)[i]) <= 0 ? pszRes : (*this)[i]; } } return pszRes; }