3 StringList::StringList()
9 StringList::~StringList()
14 void StringList::Reset()
25 unsigned int StringList::AddString(const char *Str)
27 return(AddString(Str,NULL));
31 unsigned int StringList::AddString(const char *Str,const wchar *StrW)
33 int PrevSize=StringData.Size();
34 StringData.Add(strlen(Str)+1);
35 strcpy(&StringData[PrevSize],Str);
36 if (StrW!=NULL && *StrW!=0)
38 int PrevPos=PosDataW.Size();
40 PosDataW[PrevPos]=PrevSize;
42 int PrevSizeW=StringDataW.Size();
43 StringDataW.Add(strlenw(StrW)+1);
44 strcpyw(&StringDataW[PrevSizeW],StrW);
51 bool StringList::GetString(char *Str,int MaxLength)
53 return(GetString(Str,NULL,MaxLength));
57 bool StringList::GetString(char *Str,wchar *StrW,int MaxLength)
61 if (Str==NULL || !GetString(&StrPtr,&StrPtrW))
63 strncpy(Str,StrPtr,MaxLength);
65 strncpyw(StrW,NullToEmpty(StrPtrW),MaxLength);
71 bool StringList::GetString(char *Str,wchar *StrW,int MaxLength,int StringNum)
76 while (StringNum-- >=0)
77 if (!GetString(Str,StrW,MaxLength))
88 char* StringList::GetString()
97 bool StringList::GetString(char **Str,wchar **StrW)
99 if ((int)CurPos>=StringData.Size())
104 *Str=&StringData[CurPos];
105 if ((int)PosDataItem<PosDataW.Size() && PosDataW[PosDataItem]==(int)CurPos)
109 *StrW=&StringDataW[CurPosW];
110 CurPosW+=strlenw(&StringDataW[CurPosW])+1;
115 CurPos+=strlen(*Str)+1;
120 char* StringList::GetString(unsigned int StringPos)
122 if ((int)StringPos>=StringData.Size())
124 return(&StringData[StringPos]);
128 void StringList::Rewind()
136 int StringList::GetBufferSize()
138 return(StringData.Size()+StringDataW.Size());
143 bool StringList::Search(char *Str,wchar *StrW,bool CaseSensitive)
150 while (GetString(&CurStr,&CurStrW))
152 if ((CaseSensitive ? strcmp(Str,CurStr):stricomp(Str,CurStr))!=0)
154 if (StrW!=NULL && CurStrW!=NULL)
155 if ((CaseSensitive ? strcmpw(StrW,CurStrW):stricmpw(StrW,CurStrW))!=0)
167 void StringList::SavePosition()
169 if (SavePosNumber<sizeof(SaveCurPos)/sizeof(SaveCurPos[0]))
171 SaveCurPos[SavePosNumber]=CurPos;
172 SaveCurPosW[SavePosNumber]=CurPosW;
173 SavePosDataItem[SavePosNumber]=PosDataItem;
181 void StringList::RestorePosition()
186 CurPos=SaveCurPos[SavePosNumber];
187 CurPosW=SaveCurPosW[SavePosNumber];
188 PosDataItem=SavePosDataItem[SavePosNumber];