| 7a956470 |
sago007 |
2016-02-14 17:09 |
1 |
#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
2 |
#define RAPIDJSON_INTERNAL_STRFUNC_H_
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
3 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
4 |
namespace rapidjson {
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
5 |
namespace internal {
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
6 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
7 |
//! Custom strlen() which works on different character types.
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
8 |
/*! \tparam Ch Character type (e.g. char, wchar_t, short)
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
9 |
\param s Null-terminated input string.
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
10 |
\return Number of characters in the string.
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
11 |
\note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
12 |
*/
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
13 |
template <typename Ch>
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
14 |
inline SizeType StrLen(const Ch* s) {
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
15 |
const Ch* p = s;
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
16 |
while (*p != '\0')
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
17 |
++p;
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
18 |
return SizeType(p - s);
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
19 |
}
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
20 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
21 |
} // namespace internal
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
22 |
} // namespace rapidjson
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
23 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
24 |
#endif // RAPIDJSON_INTERNAL_STRFUNC_H_
|
|
|
1970-01-01 00:00 |
25 |
|