mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
Added some missing StringView functions.
This commit is contained in:
@@ -224,12 +224,21 @@ namespace bx
|
||||
/// Find end of line. Retuns pointer to new line terminator.
|
||||
const char* streol(const char* _str);
|
||||
|
||||
/// Find end of line. Retuns pointer to new line terminator.
|
||||
const StringView strFindEol(const StringView& _str)
|
||||
|
||||
/// Skip whitespace.
|
||||
const char* strws(const char* _str);
|
||||
|
||||
/// Skip whitespace.
|
||||
const StringView strSkipSpace(const StringView& _str);
|
||||
|
||||
/// Skip non-whitespace.
|
||||
const char* strnws(const char* _str);
|
||||
|
||||
/// Skip non-whitespace.
|
||||
const StringView strSkipNonSpace(const StringView& _str);
|
||||
|
||||
/// Returns pointer to first character after word.
|
||||
const char* strSkipWord(const char* _str, int32_t _max = INT32_MAX);
|
||||
|
||||
|
||||
@@ -534,18 +534,68 @@ namespace bx
|
||||
return _str;
|
||||
}
|
||||
|
||||
const StringView strFindEol(const StringView& _str)
|
||||
{
|
||||
StringView str(_str);
|
||||
|
||||
for (; str.getPtr() != _str.getTerm()
|
||||
; str = StringView(str.getPtr()+1024, min(str.getPtr()+1024, _str.getTerm() ) )
|
||||
)
|
||||
{
|
||||
const char* eol = strFind(str, "\r\n");
|
||||
if (NULL != eol)
|
||||
{
|
||||
return StringView(eol, _str.getTerm() );
|
||||
}
|
||||
|
||||
eol = strFind(str, "\n");
|
||||
if (NULL != eol)
|
||||
{
|
||||
return StringView(eol, _str.getTerm() );
|
||||
}
|
||||
}
|
||||
|
||||
return StringView(_str.getTerm(), _str.getTerm() );
|
||||
}
|
||||
|
||||
const char* strws(const char* _str)
|
||||
{
|
||||
for (; isSpace(*_str); ++_str) {};
|
||||
return _str;
|
||||
}
|
||||
|
||||
const StringView strSkipSpace(const StringView& _str)
|
||||
{
|
||||
for (const char* ptr = _str.getPtr(), *term = _str.getTerm(); ptr != term; ++ptr)
|
||||
{
|
||||
if (!isSpace(*ptr) )
|
||||
{
|
||||
return StringView(ptr, term);
|
||||
}
|
||||
}
|
||||
|
||||
return StringView(_str.getTerm(), _str.getTerm() );
|
||||
}
|
||||
|
||||
const char* strnws(const char* _str)
|
||||
{
|
||||
for (; !isSpace(*_str); ++_str) {};
|
||||
return _str;
|
||||
}
|
||||
|
||||
const StringView strSkipNonSpace(const StringView& _str)
|
||||
{
|
||||
for (const char* ptr = _str.getPtr(), *term = _str.getTerm(); ptr != term; ++ptr)
|
||||
{
|
||||
if (isSpace(*ptr) )
|
||||
{
|
||||
return StringView(ptr, term);
|
||||
}
|
||||
}
|
||||
|
||||
return StringView(_str.getTerm(), _str.getTerm() );
|
||||
}
|
||||
|
||||
const char* strSkipWord(const char* _str, int32_t _max)
|
||||
{
|
||||
for (char ch = *_str++; 0 < _max && (isAlphaNum(ch) || '_' == ch); ch = *_str++, --_max) {};
|
||||
|
||||
Reference in New Issue
Block a user