mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
107 lines
1.6 KiB
C++
107 lines
1.6 KiB
C++
#include <Core/Core.h>
|
|
|
|
NAMESPACE_UPP
|
|
|
|
int wstrlen(const wchar *s)
|
|
{
|
|
const wchar *q = s;
|
|
while(*q) q++;
|
|
return (int)(q - s);
|
|
}
|
|
|
|
unsigned ctoi(int c)
|
|
{
|
|
if(c >= '0' && c <= '9')
|
|
return c - '0';
|
|
if(c >= 'A' && c <= 'Z')
|
|
return c - 'A' + 10;
|
|
if(c >= 'a' && c <= 'z')
|
|
return c - 'a' + 10;
|
|
return (unsigned)-1;
|
|
}
|
|
|
|
int CharFilterAscii(int c)
|
|
{
|
|
return c >= 32 && c < 256 ? c : 0;
|
|
}
|
|
|
|
int CharFilterAscii128(int c)
|
|
{
|
|
return c >= 32 && c < 128 ? c : 0;
|
|
}
|
|
|
|
int CharFilterUnicode(int c)
|
|
{
|
|
return c >= 32 && c < 65536 ? c : 0;
|
|
}
|
|
|
|
int CharFilterDigit(int c)
|
|
{
|
|
return IsDigit(c) ? c : 0;
|
|
}
|
|
|
|
int CharFilterInt(int c)
|
|
{
|
|
if(c == '+' || c == '-') return c;
|
|
return CharFilterDigit(c);
|
|
}
|
|
|
|
int CharFilterDouble(int c)
|
|
{
|
|
if(c == ',' || c == '.') return '.';
|
|
if(c == 'e' || c == 'E') return 'E';
|
|
return CharFilterInt(c);
|
|
}
|
|
|
|
int CharFilterWhitespace(int c)
|
|
{
|
|
return IsSpace(c) ? c : 0;
|
|
}
|
|
|
|
int CharFilterAlpha(int c)
|
|
{
|
|
return IsAlpha(c) ? c : 0;
|
|
}
|
|
|
|
int CharFilterAlphaToUpper(int c)
|
|
{
|
|
return IsAlpha(c) ? IsUpper(c) ? c : ToUpper(c) : 0;
|
|
}
|
|
|
|
int CharFilterAlphaToLower(int c)
|
|
{
|
|
return IsAlpha(c) ? IsLower(c) ? c : ToLower(c) : 0;
|
|
}
|
|
|
|
int CharFilterDefaultToUpperAscii(int c)
|
|
{
|
|
return ToUpper(ToAscii(c, CHARSET_DEFAULT));
|
|
}
|
|
|
|
int CharFilterCrLf(int c)
|
|
{
|
|
return c == '\r' || c == '\n' ? c : 0;
|
|
}
|
|
|
|
String Filter(const char *s, int (*filter)(int))
|
|
{
|
|
String result;
|
|
while(*s) {
|
|
int c = (*filter)((byte)*s++);
|
|
if(c) result.Cat(c);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
String FilterWhile(const char *s, int (*filter)(int))
|
|
{
|
|
String result;
|
|
while(*s) {
|
|
int c = (*filter)((byte)*s++);
|
|
if(!c) break;
|
|
result.Cat(c);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
END_UPP_NAMESPACE
|