48 min_ = std::strtol(range, &next, 10);
50 max_ = std::strtol(next, &end, 10);
51 if (next == end) max_ =
min_;
52 if (min_ > max_) std::swap(min_, max_);
57 if (val < min_ || val > max_)
return false;
67 virtual bool report(
size_t done,
size_t total,
const char* msg) = 0;
75 bool report(
size_t done,
size_t total)
const {
76 return operator()(done, total);
78 bool operator()(
size_t done,
size_t total,
const char* msg = NULL)
const {
79 if (f_)
return f_->report(done, total, msg);
129 const unsigned char* s =
reinterpret_cast<const unsigned char*
>(str);
131 uint32_t tmp =
static_cast<unsigned char>(tolower(*s));
132 uint32_t result = tmp << 24;
133 if (*s ==
'\0')
return result;
134 tmp =
static_cast<unsigned char>(tolower(*++s));
136 if (*s ==
'\0')
return result;
137 tmp =
static_cast<unsigned char>(tolower(*++s));
139 if (*s ==
'\0')
return result;
140 result +=
static_cast<unsigned char>(tolower(*++s));
147 const char * excludeChars);
148 char *
strAppend (
char * target,
const char * extra);
149 uint strPad (
char * target,
const char * orig,
int length,
char pad);
150 const char *
strFirstChar (
const char * target,
char matchChar);
151 const char *
strLastChar (
const char * target,
char matchChar);
152 void strStrip (
char * str,
char ch);
154 const char *
strTrimLeft (
const char * target,
const char * trimChars);
169 return (x == 1 ?
"" :
"s");
187 return std::strtol(str, NULL, 10);
197 return static_cast<uint32_t
>(std::strtoul(str, NULL, 10));
201 ASSERT(str1 != NULL && str2 != NULL);
202 const unsigned char* s1 =
reinterpret_cast<const unsigned char*
>(str1);
203 const unsigned char* s2 =
reinterpret_cast<const unsigned char*
>(str2);
216 ASSERT(str1 != NULL && str2 != NULL);
221 return (a < b) ? -1 : 1;
224 inline bool strEqual(
const char* str1,
const char* str2) {
225 ASSERT(str1 != NULL && str2 != NULL);
226 return (std::strcmp(str1, str2) == 0);
266 if (*str == ch) {
return true; }
282 ASSERT (s1 != NULL && s2 != NULL);
285 return ((
int) *s1) - ((int) *s2);
298 strCopy (
char * target,
const char * original)
300 ASSERT (target != NULL && original != NULL);
301 while (*original != 0) {
316 ASSERT (s1 != NULL && s2 != NULL);
334 if (*longStr == 0) {
return false; }
335 if (*prefix != *longStr) {
return false; }
349 typedef unsigned char U;
351 if (*longStr == 0) {
return false; }
352 if (tolower(U(*prefix)) != tolower(U(*longStr))) {
return false; }
368 typedef unsigned char U;
370 while (*prefix ==
' ') { prefix++; }
371 while (*longStr ==
' ') { longStr++; }
372 if (*longStr == 0) {
return false; }
373 if (tolower(U(*prefix)) != tolower(U(*longStr))) {
return false; }
388 if (
strIsPrefix (keyStr, longStr)) {
return true; }
415 while (*str != 0) { len++; str++; }
427 inline void strTrimRight(
char* target,
const char* trimChars,
size_t nTrimCh) {
428 const char* endTrim = trimChars + nTrimCh;
429 size_t iCh = strlen(target);
430 for (; iCh > 0; --iCh) {
431 if (
std::find(trimChars, endTrim, target[iCh - 1]) == endTrim)
440 #endif // #ifdef SCID_MISC_H bool operator()(size_t done, size_t total, const char *msg=NULL) const
uint strLength(const char *str)
int strExactMatch(const char *keyStr, const char **strTable)
uint32_t strStartHash(const char *str)
bool strEqual(const char *str1, const char *str2)
bool strIsPrefix(const char *prefix, const char *longStr)
flagT strGetFlag(const char *str)
uint strPad(char *target, const char *orig, int length, char pad)
int strUniqueExactMatch(const char *keyStr, const char **strTable, bool exact)
int strUniqueMatch(const char *keyStr, const char **strTable)
class StrRange - parse a string interpreting its content as 1 or 2 integers separated by whitespace...
char * strAppend(char *target, const char *extra)
ecoT eco_FromString(const char *ecoStr)
StrRange(const char *range)
uint strPrefix(const char *s1, const char *s2)
int strCompareRound(const char *str1, const char *str2)
const char * strFileSuffix(const char *target)
const char * strFirstChar(const char *target, char matchChar)
void strGetIntegers(const char *str, int *results, uint nResults)
const char * strNextWord(const char *str)
int find(const char *filename)
find() - search for a database.
void strGetUnsigneds(const char *str, uint *results, uint nResults)
ecoT eco_Reduce(ecoT eco)
ecoReduce() - maps eco to a smaller set
const char * strLastChar(const char *target, char matchChar)
filterOpT strGetFilterOp(const char *str)
uint strTrimFileSuffix(char *target)
void strTrimRight(char *target, const char *trimChars, size_t nTrimCh)
bool strIsCasePrefix(const char *prefix, const char *longStr)
const char * strFirstWord(const char *str)
void strStrip(char *str, char ch)
bool strAlphaContains(const char *longStr, const char *keyStr)
ecoT eco_LastSubCode(ecoT ecoCode)
void strTrimMarkup(char *str)
int strGetInteger(const char *str)
bool strContainsChar(const char *str, char ch)
bool strGetBoolean(const char *str)
bool strIsUnknownName(const char *str)
char * strDuplicate(const char *str)
int strCaseCompare(const char *str1, const char *str2)
void strCopyExclude(char *target, const char *original, const char *excludeChars)
void eco_ToExtendedString(ecoT ecoCode, char *ecoStr)
uint32_t strGetUnsigned(const char *str)
bool report(size_t done, size_t total) const
void strTrimDate(char *str)
bool strContains(const char *longStr, const char *keyStr)
void strCopy(char *target, const char *original)
resultT strGetResult(const char *str)
bool inRange(long val) const
const char * strPlural(uint x)
squareT strGetSquare(const char *str)
void strTrimMarkCodes(char *str)
uint strTrimSuffix(char *target, char suffixChar)
void eco_ToBasicString(ecoT ecoCode, char *ecoStr)
int strCompare(const char *s1, const char *s2)
ecoT eco_BasicCode(ecoT ecoCode)
const char * strTrimLeft(const char *target, const char *trimChars)
bool strIsAlphaPrefix(const char *prefix, const char *longStr)
bool strIsSurnameOnly(const char *name)
void eco_ToString(ecoT ecoCode, char *ecoStr, bool extensions=true)