From: <ri...@us...> - 2003-07-10 22:41:11
|
Update of /cvsroot/gnucula/Gnucula/platform/opengcc In directory sc8-pr-cvs1:/tmp/cvs-serv320/platform/opengcc Modified Files: strings.cpp strings.h Log Message: Syntax fixes, string enhancements, DNA code reintegrated. Index: strings.cpp =================================================================== RCS file: /cvsroot/gnucula/Gnucula/platform/opengcc/strings.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** strings.cpp 10 Jul 2003 08:31:41 -0000 1.6 --- strings.cpp 10 Jul 2003 22:41:07 -0000 1.7 *************** *** 243,247 **** int Strings::ReverseFind(char FindMe) { - bool Mismatch = false; for (int i = StringLength - 1; *(TextPointer + i) != '\0'; i--) if (*(TextPointer + i) == FindMe) --- 243,246 ---- *************** *** 288,291 **** --- 287,291 ---- } ret = ReturnText; + ret.StringLength = i; return ret; } *************** *** 336,341 **** ! void Strings::Replace(char *ReplaceMe, char *NewText) { int ReplacePos = 0, NewTextLen = 0, OldTextLen = 0, Occurrences = 0, i; #ifdef DDEBUG --- 336,342 ---- ! void Strings::Replace(char *ReplaceMe, char *NewText, int pos) { + bool SingleDone = false, SingleReplace = false; int ReplacePos = 0, NewTextLen = 0, OldTextLen = 0, Occurrences = 0, i; #ifdef DDEBUG *************** *** 357,375 **** debug_io.kwik_out(OldTextLen); #endif ! // count occurrences ! i = 0; ! while (i >= 0) { ! Occurrences++; ! i = Find(ReplaceMe, i + 1); ! #ifdef DDEBUG ! debug_io.multiline_output("Occurrences:", " "); ! debug_io.kwik_out(Occurrences); ! debug_io.multiline_output("i:", " "); ! debug_io.kwik_out(i); ! #endif } - Occurrences--; #ifdef DDEBUG debug_io.multiline_output("Occurrences:", " "); --- 358,385 ---- debug_io.kwik_out(OldTextLen); #endif ! ! if (pos != 0) { ! SingleReplace = true; ! if (pos <= -1) ! pos = 0; ! if (Find(ReplaceMe, pos) >= pos) ! Occurrences = 1; ! } ! else ! { ! // count occurrences ! i = 0; ! while (i >= 0) ! { ! Occurrences++; ! i = Find(ReplaceMe, i + 1); ! } ! Occurrences--; } + if (Occurrences == 0) + return; + #ifdef DDEBUG debug_io.multiline_output("Occurrences:", " "); *************** *** 377,383 **** #endif - if (Occurrences == 0) - return; - int OrigLen = StringLength; StringLength = StringLength + ((NewTextLen - OldTextLen) * Occurrences) + 1; --- 387,390 ---- *************** *** 394,397 **** --- 401,415 ---- while (ReplacePos >= 0) { + if (SingleReplace) + { + if (!SingleDone) + { + ReplacePos = Find(ReplaceMe, pos); + SingleDone = true; + } + else + ReplacePos = -1; + } + ReplacePos = Find(ReplaceMe, lastread + 1); #ifdef DDEBUG *************** *** 429,435 **** ! void Strings::Remove(char *RemoveMe) { ! Replace(RemoveMe, ""); } --- 447,509 ---- ! void Strings::Remove(char *RemoveMe, int pos) { ! Replace(RemoveMe, "", pos); ! } ! ! ! void Strings::TrimLeft(char *TrimMe) ! { ! int i, Len; ! for (i = 0; *(TrimMe + i) != '\0'; i++) { ! ; } ! Len = i; ! ! for (i = 0; ; i = 0) ! if (*(TextPointer + i) == *TrimMe) ! { ! if (Len > 1) ! { ! for (int j = 0; *(TrimMe + j) != '\0'; j++) ! if (*(TextPointer + i + j) != *(TrimMe + j)) ! return; ! } ! ! char *NewText = new char[StringLength - Len]; ! for (i = 0; (Len + i) <= StringLength; i++) ! { ! *(NewText + i) = *(TextPointer + Len + i); ! if (*(TextPointer + Len + i) == '\0') ! break; ! } ! StringLength -= Len; ! } ! else ! return; ! } ! ! ! void Strings::TrimRight(char *TrimMe) ! { ! int i, Len; ! for (i = 0; *(TrimMe + i) != '\0'; i++) { ! ; } ! Len = i; ! ! for (i = StringLength - Len; ; i = StringLength - Len) ! if (*(TextPointer + i) == *TrimMe) ! { ! if (Len > 1) ! { ! for (int j = 0; *(TrimMe + j) != '\0'; j++) ! if (*(TextPointer + i + j) != *(TrimMe + j)) ! return; ! } ! ! *(TextPointer + i) = '\0'; ! StringLength -= Len; ! } ! else ! return; } Index: strings.h =================================================================== RCS file: /cvsroot/gnucula/Gnucula/platform/opengcc/strings.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** strings.h 10 Jul 2003 08:31:41 -0000 1.9 --- strings.h 10 Jul 2003 22:41:07 -0000 1.10 *************** *** 67,73 **** Strings Right(int); void Insert(int, char *); ! void Replace(char *, char *); ! void Remove(char *); // Strings Format(char *, int, int); // operator overloads --- 67,76 ---- Strings Right(int); void Insert(int, char *); ! void Replace(char *, char *, int = -1); // -, once near start. 0, all. +, once near int ! void Remove(char *, int = -1); // Strings Format(char *, int, int); + void TrimLeft(char * = "\n"); // proper default is?? + void TrimRight(char * = "\n"); + // operator overloads |