diff options
| author | jhurst <jhurst@cinecert.com> | 2013-02-08 19:11:58 +0000 |
|---|---|---|
| committer | jhurst <> | 2013-02-08 19:11:58 +0000 |
| commit | 9998b893b47f111f41c4f0fcf1067efe5b7a62f3 (patch) | |
| tree | ef455067287c17ebb9f82ecf3d27d134823c1edb /src/KM_util.cpp | |
| parent | b3fa00a9f37ecc7c2bef6276aae0ea67d1ddbeb3 (diff) | |
big change rollup
Diffstat (limited to 'src/KM_util.cpp')
| -rwxr-xr-x | src/KM_util.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/KM_util.cpp b/src/KM_util.cpp index 803b0ed..333b00a 100755 --- a/src/KM_util.cpp +++ b/src/KM_util.cpp @@ -1129,6 +1129,64 @@ Kumu::ByteString::Append(const byte_t* buf, ui32_t buf_len) return result; } +//------------------------------------------------------------------------------------------ + +// +const char* +Kumu::km_strnstr(const char *s, const char *find, size_t slen) +{ + char c, sc; + size_t len; + + if ( ( c = *find++ ) != '\0' ) + { + len = strlen(find); + do + { + do + { + if ( slen-- < 1 || ( sc = *s++ ) == '\0' ) + return 0; + } + while ( sc != c ); + + if ( len > slen ) + return 0; + } + while ( strncmp(s, find, len) != 0 ); + --s; + } + + return s; +} + +// +std::list<std::string> +Kumu::km_token_split(const std::string& str, const std::string& separator) +{ + std::list<std::string> components; + const char* pstr = str.c_str(); + const char* r = strstr(pstr, separator.c_str()); + + while ( r != 0 ) + { + assert(r >= pstr); + if ( r > pstr ) + { + std::string tmp_str; + tmp_str.assign(pstr, r - pstr); + components.push_back(tmp_str); + } + + pstr = r + separator.size(); + r = strstr(pstr, separator.c_str()); + } + + if( strlen(pstr) > 0 ) + components.push_back(std::string(pstr)); + + return components; +} // // end KM_util.cpp |
