Lines Matching +full:- +full:c

3 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
25 RAPIDJSON_DIAG_OFF(switch-enum)
45 can access multiple-level depth of DOM tree with single API call.
49 it can be used to resolve a specific value in multiple documents, or sub-tree
56 involves parsing and dynamic memory allocation. A special constructor with user-
102 \param source A null-terminated, string or URI fragment representation of JSON pointer.
103 …User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
113 …User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
125 …User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
132 //! Constructor with user-supplied tokens.
143 #define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }
144 #define INDEX(i) { #i, sizeof(#i) - 1, i }
168 …if (nameBuffer_) // If user-supplied tokens constructor is used, nameBuffer_ is nullptr and tok… in ~GenericPointer()
210 //! free-standing swap function helper
212 … Helper function to enable support for common swap implementation pattern based on \c std::swap:
291 SizeType length = static_cast<SizeType>(end - buffer);
449 \param alreadyExist If non-null, it stores whether the resolved value is already exist.
457 if (v->IsArray() && t->name[0] == '-' && t->length == 1) {
458 v->PushBack(ValueType().Move(), allocator);
459 v = &((*v)[v->Size() - 1]);
463 if (t->index == kPointerInvalidIndex) { // must be object name
464 if (!v->IsObject())
465 v->SetObject(); // Change to Object
468 if (!v->IsArray() && !v->IsObject())
469 v->SetArray(); // Change to Array
472 if (v->IsArray()) {
473 if (t->index >= v->Size()) {
474 v->Reserve(t->index + 1, allocator);
475 while (t->index >= v->Size())
476 v->PushBack(ValueType().Move(), allocator);
479 v = &((*v)[t->index]);
482 …typename ValueType::MemberIterator m = v->FindMember(GenericValue<EncodingType>(GenericStringRef<C…
483 if (m == v->MemberEnd()) {
484 … v->AddMember(ValueType(t->name, t->length, allocator).Move(), ValueType().Move(), allocator);
485 m = v->MemberEnd();
486 v = &(--m)->value; // Assumes AddMember() appends at the end
490 v = &m->value;
504 \param alreadyExist If non-null, it stores whether the resolved value is already exist.
517 //! Compute the in-scope URI for a subtree.
520 …\param root Root value of a DOM sub-tree to be resolved. It can be any value other than document r…
541 switch (v->GetType()) {
545 typename ValueType::MemberIterator m = v->FindMember(kIdValue);
546 if (m != v->MemberEnd() && (m->value).IsString()) {
547 UriType here = UriType(m->value, allocator).Resolve(base, allocator);
550 … m = v->FindMember(GenericValue<EncodingType>(GenericStringRef<Ch>(t->name, t->length)));
551 if (m == v->MemberEnd())
553 v = &m->value;
557 if (t->index == kPointerInvalidIndex || t->index >= v->Size())
559 v = &((*v)[t->index]);
567 *unresolvedTokenIndex = static_cast<size_t>(t - tokens_);
583 …\param root Root value of a DOM sub-tree to be resolved. It can be any value other than document r…
599 switch (v->GetType()) {
602 …typename ValueType::MemberIterator m = v->FindMember(GenericValue<EncodingType>(GenericStringRef<C…
603 if (m == v->MemberEnd())
605 v = &m->value;
609 if (t->index == kPointerInvalidIndex || t->index >= v->Size())
611 v = &((*v)[t->index]);
619 *unresolvedTokenIndex = static_cast<size_t>(t - tokens_);
627 …\param root Root value of a DOM sub-tree to be resolved. It can be any value other than document r…
644 …\param root Root value of a DOM sub-tree to be resolved. It can be any value other than document r…
655 //! Query a value in a subtree with default null-terminated string.
673 \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
687 //! Query a value in a document with default null-terminated string.
703 \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
721 …\param root Root value of a DOM sub-tree to be resolved. It can be any value other than document r…
735 //! Set a null-terminated string in a subtree.
749 \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
769 //! Set a null-terminated string in a document.
785 \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
803 …\param root Root value of a DOM sub-tree to be resolved. It can be any value other than document r…
822 …\param root Root value of a DOM sub-tree to be resolved. It can be any value other than document r…
825 … \note Erasing with an empty pointer \c Pointer(""), i.e. the root, always fail and return false.
833 const Token* last = tokens_ + (tokenCount_ - 1); in Erase()
835 switch (v->GetType()) { in Erase()
838 …typename ValueType::MemberIterator m = v->FindMember(GenericValue<EncodingType>(GenericStringRef<C… in Erase()
839 if (m == v->MemberEnd()) in Erase()
841 v = &m->value; in Erase()
845 if (t->index == kPointerInvalidIndex || t->index >= v->Size()) in Erase()
847 v = &((*v)[t->index]); in Erase()
854 switch (v->GetType()) { in Erase()
856 return v->EraseMember(GenericStringRef<Ch>(last->name, last->length)); in Erase()
858 if (last->index == kPointerInvalidIndex || last->index >= v->Size()) in Erase()
860 v->Erase(v->Begin() + last->index); in Erase()
873 \return Start of non-occupied name buffer, for storing extra names.
881 nameBufferSize += t->length;
884 …tokens_ = static_cast<Token *>(allocator_->Malloc(tokenCount_ * sizeof(Token) + (nameBufferSize + …
894 std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_;
896 t->name += diff;
901 //! Check whether a character should be percent-encoded.
904 \param c The character (code unit) to be tested.
906 bool NeedPercentEncode(Ch c) const { in NeedPercentEncode() argument
907 …return !((c >= '0' && c <= '9') || (c >= 'A' && c <='Z') || (c >= 'a' && c <= 'z') || c == '-' || in NeedPercentEncode()
911 #ifndef __clang__ // -Wdocumentation
933 …Token* token = tokens_ = static_cast<Token *>(allocator_->Malloc(tokenCount_ * sizeof(Token) + len… in Parse()
953 token->name = name; in Parse()
957 Ch c = source[i]; in Parse() local
959 // Decoding percent-encoding for URI fragment in Parse()
960 if (c == '%') { in Parse()
969 i += is.Tell() - 1; in Parse()
971 c = *name; in Parse()
979 else if (NeedPercentEncode(c)) { in Parse()
987 // Escaping "~0" -> '~', "~1" -> '/' in Parse()
988 if (c == '~') { in Parse()
990 c = source[i]; in Parse()
991 if (c == '0') c = '~'; in Parse()
992 else if (c == '1') c = '/'; in Parse()
1006 if (c < '0' || c > '9') in Parse()
1009 *name++ = c; in Parse()
1011 token->length = static_cast<SizeType>(name - token->name); in Parse()
1012 if (token->length == 0) in Parse()
1017 if (isNumber && token->length > 1 && token->name[0] == '0') in Parse()
1023 for (size_t j = 0; j < token->length; j++) { in Parse()
1024 SizeType m = n * 10 + static_cast<SizeType>(token->name[j] - '0'); in Parse()
1033 token->index = isNumber ? n : kPointerInvalidIndex; in Parse()
1065 for (size_t j = 0; j < t->length; j++) { in Stringify()
1066 Ch c = t->name[j]; in Stringify() local
1067 if (c == '~') { in Stringify()
1071 else if (c == '/') { in Stringify()
1075 else if (uriFragment && NeedPercentEncode(c)) { in Stringify()
1077 GenericStringStream<typename ValueType::EncodingType> source(&t->name[j]); in Stringify()
1081 j += source.Tell() - 1; in Stringify()
1084 os.Put(c); in Stringify()
1090 //! A helper stream for decoding a percent-encoded sequence into code unit.
1092 This stream decodes %XY triplet into code unit (0-255).
1103 \param end Past-the-end of the stream.
1113 Ch c = 0; in Take() local
1115 c = static_cast<Ch>(c << 4); in Take()
1117 if (h >= '0' && h <= '9') c = static_cast<Ch>(c + h - '0'); in Take()
1118 else if (h >= 'A' && h <= 'F') c = static_cast<Ch>(c + h - 'A' + 10); in Take()
1119 else if (h >= 'a' && h <= 'f') c = static_cast<Ch>(c + h - 'a' + 10); in Take()
1126 return c; in Take()
1129 size_t Tell() const { return static_cast<size_t>(src_ - head_); } in Tell()
1135 const Ch* end_; //!< Past-the-end position.
1139 //! A helper stream to encode character (UTF-8 code unit) into percent-encoded sequence.
1144 void Put(char c) { // UTF-8 must be byte in Put() argument
1145 unsigned char u = static_cast<unsigned char>(c); in Put()
1146 …hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; in Put()
1155 …Allocator* allocator_; //!< The current allocator. It is either user-supplied or …
1164 //! GenericPointer for Value (UTF-8, default allocator).
1179 return GenericPointer<typename T::ValueType>(source, N - 1).Create(root, a); in CreateValueByPointer()
1191 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Create(document); in CreateValueByPointer()
1208 return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex);
1213 return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex);
1243 … return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); in GetValueByPointerWithDefault()
1248 … return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); in GetValueByPointerWithDefault()
1254 … return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); in GetValueByPointerWithDefault()
1261 … return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a); in GetValueByPointerWithDefault()
1291 …return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, de… in GetValueByPointerWithDefault()
1296 …return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, de… in GetValueByPointerWithDefault()
1302 …return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, de… in GetValueByPointerWithDefault()
1309 …return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, de… in GetValueByPointerWithDefault()
1344 return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); in SetValueByPointer()
1349 return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); in SetValueByPointer()
1354 return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); in SetValueByPointer()
1360 return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); in SetValueByPointer()
1367 return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a); in SetValueByPointer()
1402 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); in SetValueByPointer()
1407 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); in SetValueByPointer()
1412 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); in SetValueByPointer()
1418 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); in SetValueByPointer()
1425 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value); in SetValueByPointer()
1437 return GenericPointer<typename T::ValueType>(source, N - 1).Swap(root, value, a); in SwapValueByPointer()
1447 return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Swap(document, value); in SwapValueByPointer()
1459 return GenericPointer<typename T::ValueType>(source, N - 1).Erase(root); in EraseValueByPointer()