ENH: remove deps to vtkString by using KWSys (a handful of functions have been moved to KWSys)
This commit is contained in:
parent
3ff6722934
commit
07bdc60045
|
@ -795,6 +795,33 @@ kwsys_stl::string SystemTools::Capitalized(const kwsys_stl::string& s)
|
|||
return n;
|
||||
}
|
||||
|
||||
// Return capitalized words
|
||||
kwsys_stl::string SystemTools::CapitalizedWords(const kwsys_stl::string& s)
|
||||
{
|
||||
kwsys_stl::string n(s);
|
||||
for (size_t i = 0; i < s.size(); i++)
|
||||
{
|
||||
if (isalpha(s[i]) && (i == 0 || isspace(s[i - 1])))
|
||||
{
|
||||
n[i] = static_cast<kwsys_stl::string::value_type>(toupper(s[i]));
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
// Return uncapitalized words
|
||||
kwsys_stl::string SystemTools::UnCapitalizedWords(const kwsys_stl::string& s)
|
||||
{
|
||||
kwsys_stl::string n(s);
|
||||
for (size_t i = 0; i < s.size(); i++)
|
||||
{
|
||||
if (isalpha(s[i]) && (i == 0 || isspace(s[i - 1])))
|
||||
{
|
||||
n[i] = static_cast<kwsys_stl::string::value_type>(tolower(s[i]));
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
// Return a lower case string
|
||||
kwsys_stl::string SystemTools::LowerCase(const kwsys_stl::string& s)
|
||||
|
@ -820,9 +847,133 @@ kwsys_stl::string SystemTools::UpperCase(const kwsys_stl::string& s)
|
|||
return n;
|
||||
}
|
||||
|
||||
// Count char in string
|
||||
size_t SystemTools::CountChar(const char* str, char c)
|
||||
{
|
||||
size_t count = 0;
|
||||
|
||||
if (str)
|
||||
{
|
||||
while (*str)
|
||||
{
|
||||
if (*str == c)
|
||||
{
|
||||
++count;
|
||||
}
|
||||
++str;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
// Remove chars in string
|
||||
char* SystemTools::RemoveChars(const char* str, const char *toremove)
|
||||
{
|
||||
if (!str)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
char *clean_str = new char [strlen(str) + 1];
|
||||
char *ptr = clean_str;
|
||||
while (*str)
|
||||
{
|
||||
const char *str2 = toremove;
|
||||
while (*str2 && *str != *str2)
|
||||
{
|
||||
++str2;
|
||||
}
|
||||
if (!*str2)
|
||||
{
|
||||
*ptr++ = *str;
|
||||
}
|
||||
++str;
|
||||
}
|
||||
*ptr = '\0';
|
||||
return clean_str;
|
||||
}
|
||||
|
||||
// Remove chars in string
|
||||
char* SystemTools::RemoveCharsButUpperHex(const char* str)
|
||||
{
|
||||
if (!str)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
char *clean_str = new char [strlen(str) + 1];
|
||||
char *ptr = clean_str;
|
||||
while (*str)
|
||||
{
|
||||
if ((*str >= '0' && *str <= '9') || (*str >= 'A' && *str <= 'H'))
|
||||
{
|
||||
*ptr++ = *str;
|
||||
}
|
||||
++str;
|
||||
}
|
||||
*ptr = '\0';
|
||||
return clean_str;
|
||||
}
|
||||
|
||||
// Replace chars in string
|
||||
char* SystemTools::ReplaceChars(char* str, const char *toreplace, char replacement)
|
||||
{
|
||||
if (str)
|
||||
{
|
||||
char *ptr = str;
|
||||
while (*ptr)
|
||||
{
|
||||
const char *ptr2 = toreplace;
|
||||
while (*ptr2)
|
||||
{
|
||||
if (*ptr == *ptr2)
|
||||
{
|
||||
*ptr = replacement;
|
||||
}
|
||||
++ptr2;
|
||||
}
|
||||
++ptr;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
// Returns a pointer to the last occurence of str2 in str1
|
||||
const char* SystemTools::FindLastString(const char* str1, const char* str2)
|
||||
{
|
||||
if (!str1 || !str2)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t len1 = strlen(str1), len2 = strlen(str2);
|
||||
if (len1 >= len2)
|
||||
{
|
||||
const char *ptr = str1 + len1 - len2;
|
||||
do
|
||||
{
|
||||
if (!strncmp(ptr, str2, len2))
|
||||
{
|
||||
return ptr;
|
||||
}
|
||||
} while (ptr-- != str1);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Duplicate string
|
||||
char* SystemTools::DuplicateString(const char* str)
|
||||
{
|
||||
if (str)
|
||||
{
|
||||
char *newstr = new char [strlen(str) + 1];
|
||||
return strcpy(newstr, str);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Return a cropped string
|
||||
kwsys_stl::string SystemTools::Crop(const kwsys_stl::string& s,
|
||||
size_t max_len)
|
||||
kwsys_stl::string SystemTools::CropString(const kwsys_stl::string& s,
|
||||
size_t max_len)
|
||||
{
|
||||
if (!s.size() || max_len == 0 || max_len >= s.size())
|
||||
{
|
||||
|
@ -1278,6 +1429,108 @@ long int SystemTools::CreationTime(const char* filename)
|
|||
}
|
||||
}
|
||||
|
||||
bool SystemTools::ConvertDateMacroString(const char *str, time_t *tmt)
|
||||
{
|
||||
if (!str || !tmt || strlen(str) < 12)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
struct tm tmt2;
|
||||
|
||||
// __DATE__
|
||||
// The compilation date of the current source file. The date is a string
|
||||
// literal of the form Mmm dd yyyy. The month name Mmm is the same as for
|
||||
// dates generated by the library function asctime declared in TIME.H.
|
||||
|
||||
// index: 012345678901
|
||||
// format: Mmm dd yyyy
|
||||
// example: Dec 19 2003
|
||||
|
||||
static char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
||||
|
||||
char buffer[12];
|
||||
strcpy(buffer, str);
|
||||
|
||||
buffer[3] = 0;
|
||||
char *ptr = strstr(month_names, buffer);
|
||||
if (!ptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int month = (ptr - month_names) / 3;
|
||||
int day = atoi(buffer + 4);
|
||||
int year = atoi(buffer + 7);
|
||||
|
||||
tmt2.tm_isdst = -1;
|
||||
tmt2.tm_hour = 0;
|
||||
tmt2.tm_min = 0;
|
||||
tmt2.tm_sec = 0;
|
||||
tmt2.tm_wday = 0;
|
||||
tmt2.tm_yday = 0;
|
||||
tmt2.tm_mday = day;
|
||||
tmt2.tm_mon = month;
|
||||
tmt2.tm_year = year - 1900;
|
||||
|
||||
*tmt = mktime(&tmt2);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SystemTools::ConvertTimeStampMacroString(const char *str, time_t *tmt)
|
||||
{
|
||||
if (!str || !tmt || strlen(str) < 27)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
struct tm tmt2;
|
||||
|
||||
// __TIMESTAMP__
|
||||
// The date and time of the last modification of the current source file,
|
||||
// expressed as a string literal in the form Ddd Mmm Date hh:mm:ss yyyy,
|
||||
/// where Ddd is the abbreviated day of the week and Date is an integer
|
||||
// from 1 to 31.
|
||||
|
||||
// index: 0123456789
|
||||
// 0123456789
|
||||
// 0123456789
|
||||
// format: Ddd Mmm Date hh:mm:ss yyyy
|
||||
// example: Fri Dec 19 14:34:58 2003
|
||||
|
||||
static char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
||||
|
||||
char buffer[27];
|
||||
strcpy(buffer, str);
|
||||
|
||||
buffer[7] = 0;
|
||||
char *ptr = strstr(month_names, buffer + 4);
|
||||
if (!ptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int month = (ptr - month_names) / 3;
|
||||
int day = atoi(buffer + 8);
|
||||
int hour = atoi(buffer + 11);
|
||||
int min = atoi(buffer + 14);
|
||||
int sec = atoi(buffer + 17);
|
||||
int year = atoi(buffer + 20);
|
||||
|
||||
tmt2.tm_isdst = -1;
|
||||
tmt2.tm_hour = hour;
|
||||
tmt2.tm_min = min;
|
||||
tmt2.tm_sec = sec;
|
||||
tmt2.tm_wday = 0;
|
||||
tmt2.tm_yday = 0;
|
||||
tmt2.tm_mday = day;
|
||||
tmt2.tm_mon = month;
|
||||
tmt2.tm_year = year - 1900;
|
||||
|
||||
*tmt = mktime(&tmt2);
|
||||
return true;
|
||||
}
|
||||
|
||||
kwsys_stl::string SystemTools::GetLastSystemError()
|
||||
{
|
||||
int e = errno;
|
||||
|
|
|
@ -109,6 +109,18 @@ public:
|
|||
*/
|
||||
static kwsys_stl::string Capitalized(const kwsys_stl::string&);
|
||||
|
||||
/**
|
||||
* Return capitalized words (i.e the first letter of each word is
|
||||
* uppercased all other are left untouched though).
|
||||
*/
|
||||
static kwsys_stl::string CapitalizedWords(const kwsys_stl::string&);
|
||||
|
||||
/**
|
||||
* Return uncapitalized words (i.e the first letter of each word is
|
||||
* lowercased all other are left untouched though).
|
||||
*/
|
||||
static kwsys_stl::string UnCapitalizedWords(const kwsys_stl::string&);
|
||||
|
||||
/**
|
||||
* Return a lower case string
|
||||
*/
|
||||
|
@ -119,11 +131,46 @@ public:
|
|||
*/
|
||||
static kwsys_stl::string UpperCase(const kwsys_stl::string&);
|
||||
|
||||
/**
|
||||
* Count char in string
|
||||
*/
|
||||
static size_t CountChar(const char* str, char c);
|
||||
|
||||
/**
|
||||
* Remove some characters from a string.
|
||||
* Return a pointer to the new resulting string (allocated with 'new')
|
||||
*/
|
||||
static char* RemoveChars(const char* str, const char *toremove);
|
||||
|
||||
/**
|
||||
* Remove remove all but 0->9, A->F from a string.
|
||||
* Return a pointer to the new resulting string (allocated with 'new')
|
||||
*/
|
||||
static char* RemoveCharsButUpperHex(const char* str);
|
||||
|
||||
/**
|
||||
* Replace some characters by another character in a string (in-place)
|
||||
* Return a pointer to string
|
||||
*/
|
||||
static char* ReplaceChars(char* str, const char *toreplace,char replacement);
|
||||
|
||||
/**
|
||||
* Returns a pointer to the last occurence of str2 in str1
|
||||
*/
|
||||
static const char* FindLastString(const char* str1, const char* str2);
|
||||
|
||||
/**
|
||||
* Make a duplicate of the string similar to the strdup C function
|
||||
* but use new to create the 'new' string, so one can use
|
||||
* 'delete' to remove it. Returns 0 if the input is empty.
|
||||
*/
|
||||
static char* DuplicateString(const char* str);
|
||||
|
||||
/**
|
||||
* Return the string cropped to a given length by removing chars in the
|
||||
* center of the string and replacing them with an ellipsis (...)
|
||||
*/
|
||||
static kwsys_stl::string Crop(const kwsys_stl::string&, size_t max_len);
|
||||
static kwsys_stl::string CropString(const kwsys_stl::string&, size_t max_len);
|
||||
|
||||
/**
|
||||
* do a case-independent string comparison
|
||||
|
@ -339,6 +386,13 @@ public:
|
|||
/** Return file's creation time (Win32: works only for NTFS, not FAT). */
|
||||
static long int CreationTime(const char* filename);
|
||||
|
||||
/**
|
||||
* Convert a string in __DATE__ or __TIMESTAMP__ format into a time_t.
|
||||
* Return false on error, true on success
|
||||
*/
|
||||
static bool ConvertDateMacroString(const char *str, time_t *tmt);
|
||||
static bool ConvertTimeStampMacroString(const char *str, time_t *tmt);
|
||||
|
||||
///! for windows return the short path for the given path, unix just a pass through
|
||||
static bool GetShortPath(const char* path, kwsys_stl::string& result);
|
||||
|
||||
|
|
Loading…
Reference in New Issue