#include <algorithm>
-#ifdef __GLIBCPP__
-#include <ctype.h>
-#else
#include <cctype>
-#endif
#include <cstdlib>
-#ifdef HAVE_SSTREAM
-#include <sstream>
-#else
-#include <strstream>
-#endif
-using std::ostringstream;
-
#include "LString.h"
#include "lstrings.h"
#include "LRegex.h"
using std::count;
using std::transform;
+#ifndef __GLIBCPP__
+// The new glibstdc++-v3 has not worked out all the quirks regarding cctype
+// yet. So currently it failes if the to using lines below are stated.
using std::tolower;
using std::toupper;
-
+#endif
+
int compare_no_case(string const & s, string const & s2)
{
// ANSI C
string lowercase(string const & a)
{
string tmp(a);
-#ifdef __GLIBCPP__
+//#ifdef __GLIBCPP__
string::iterator result = tmp.begin();
for (string::iterator first = tmp.begin();
first != tmp.end(); ++first, ++result) {
*result = tolower(*first);
}
-#else
- transform(tmp.begin(), tmp.end(), tmp.begin(), tolower);
-#endif
+//#else
+// transform(tmp.begin(), tmp.end(), tmp.begin(), tolower);
+//#endif
return tmp;
}
string uppercase(string const & a)
{
string tmp(a);
-#ifdef __GLIBCPP__
+//#ifdef __GLIBCPP__
string::iterator result = tmp.begin();
for (string::iterator first = tmp.begin();
first != tmp.end(); ++first, ++result) {
*result = toupper(*first);
}
-#else
- transform(tmp.begin(), tmp.end(), tmp.begin(), toupper);
-#endif
+//#else
+// transform(tmp.begin(), tmp.end(), tmp.begin(), toupper);
+//#endif
return tmp;
}
-string tostr(long i)
-{
-#ifndef HAVE_SSTREAM
- // "Hey!", you say. "Why do we need the char str[30]?".
- // Since strstream does not handle memory for us we have to do
- // that ourselves, if we don't pass str in we have to capture
- // oss.str() in a tmp variable and delete that manually.
- // Thus we then require more temporary variables and the code
- // gets more obfuscated.
- char str[30];
- ostrstream oss(str, 30);
- oss << i << '\0';
- return oss.str();
-#else
- ostringstream oss;
- oss << i;
- return oss.str().c_str();
-#endif
-}
-
-
-string tostr(unsigned long i)
-{
-#ifndef HAVE_SSTREAM
- char str[30];
- ostrstream oss(str, 30);
- oss << i << '\0';
- return oss.str();
-#else
- ostringstream oss;
- oss << i;
- return oss.str().c_str();
-#endif
-}
-
-
-string tostr(void * v)
-{
- return tostr(long(v));
-}
-
-
-string tostr(int i)
-{
- return tostr(long(i));
-}
-
-
-string tostr(unsigned int ui)
-{
- return tostr(long(ui));
-}
-
-
-string tostr(char c)
-{
- return string(1, c);
-}
-
-
-string tostr(bool b)
-{
- return b ? "true" : "false";
-}
-
-
-string tostr(double d)
-{
-#ifndef HAVE_SSTREAM
- char tmp[40];
- ostrstream oss(tmp, 40);
- oss << d << '\0';
- return oss.str();
-#else
- ostringstream oss;
- oss << d;
- return oss.str().c_str();
-#endif
-}
-
-
bool prefixIs(string const & a, char const * pre)
{
unsigned int l = strlen(pre);
if (i != string::npos)
tmp.erase(i + 1, string::npos);
else
- tmp.clear(); // only c in the whole string
+ tmp.erase(); // only c in the whole string
return tmp;
}
piece = a.substr(0, i);
tmp = a.substr(i + 1);
} else if (i == 0) {
- piece.clear();
+ piece.erase();
tmp = a.substr(i + 1);
} else {
piece = a;
piece = a.substr(0, i);
tmp = a.substr(i + 1);
} else { // delimter was not found
- piece.clear();
+ piece.erase();
}
return tmp;
}