1// Tencent is pleased to support the open source community by making RapidJSON available. 2// 3// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. 4// 5// Licensed under the MIT License (the "License"); you may not use this file except 6// in compliance with the License. You may obtain a copy of the License at 7// 8// http://opensource.org/licenses/MIT 9// 10// Unless required by applicable law or agreed to in writing, software distributed 11// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 12// CONDITIONS OF ANY KIND, either express or implied. See the License for the 13// specific language governing permissions and limitations under the License. 14 15#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_ 16#define RAPIDJSON_INTERNAL_STRFUNC_H_ 17 18#include "../rapidjson.h" 19 20RAPIDJSON_NAMESPACE_BEGIN 21namespace internal { 22 23//! Custom strlen() which works on different character types. 24/*! \tparam Ch Character type (e.g. char, wchar_t, short) 25 \param s Null-terminated input string. 26 \return Number of characters in the string. 27 \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints. 28*/ 29template <typename Ch> 30inline SizeType StrLen(const Ch* s) { 31 const Ch* p = s; 32 while (*p) ++p; 33 return SizeType(p - s); 34} 35 36} // namespace internal 37RAPIDJSON_NAMESPACE_END 38 39#endif // RAPIDJSON_INTERNAL_STRFUNC_H_ 40