Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MaximInterface
xternal/rapidjson/error/error.h@17:5926077e5345, 2019-10-04 (annotated)
- Committer:
- IanBenzMaxim
- Date:
- Fri Oct 04 12:10:11 2019 -0500
- Revision:
- 17:5926077e5345
- Parent:
- 16:a004191a79ab
Set pin maps through the mbed configuration system. Added support for MAX32625MBED target. Updated mbed-os to version 5.7.7 for MAX32625 I2C fixes. Consolidated simplelink hook definitions.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
IanBenzMaxim | 0:33d4e66780c0 | 1 | // Tencent is pleased to support the open source community by making RapidJSON available. |
IanBenzMaxim | 0:33d4e66780c0 | 2 | // |
IanBenzMaxim | 0:33d4e66780c0 | 3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. |
IanBenzMaxim | 0:33d4e66780c0 | 4 | // |
IanBenzMaxim | 0:33d4e66780c0 | 5 | // Licensed under the MIT License (the "License"); you may not use this file except |
IanBenzMaxim | 0:33d4e66780c0 | 6 | // in compliance with the License. You may obtain a copy of the License at |
IanBenzMaxim | 0:33d4e66780c0 | 7 | // |
IanBenzMaxim | 0:33d4e66780c0 | 8 | // http://opensource.org/licenses/MIT |
IanBenzMaxim | 0:33d4e66780c0 | 9 | // |
IanBenzMaxim | 0:33d4e66780c0 | 10 | // Unless required by applicable law or agreed to in writing, software distributed |
IanBenzMaxim | 0:33d4e66780c0 | 11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR |
IanBenzMaxim | 0:33d4e66780c0 | 12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the |
IanBenzMaxim | 0:33d4e66780c0 | 13 | // specific language governing permissions and limitations under the License. |
IanBenzMaxim | 0:33d4e66780c0 | 14 | |
IanBenzMaxim | 0:33d4e66780c0 | 15 | #ifndef RAPIDJSON_ERROR_ERROR_H_ |
IanBenzMaxim | 0:33d4e66780c0 | 16 | #define RAPIDJSON_ERROR_ERROR_H_ |
IanBenzMaxim | 0:33d4e66780c0 | 17 | |
IanBenzMaxim | 0:33d4e66780c0 | 18 | #include "../rapidjson.h" |
IanBenzMaxim | 0:33d4e66780c0 | 19 | |
IanBenzMaxim | 0:33d4e66780c0 | 20 | #ifdef __clang__ |
IanBenzMaxim | 0:33d4e66780c0 | 21 | RAPIDJSON_DIAG_PUSH |
IanBenzMaxim | 0:33d4e66780c0 | 22 | RAPIDJSON_DIAG_OFF(padded) |
IanBenzMaxim | 0:33d4e66780c0 | 23 | #endif |
IanBenzMaxim | 0:33d4e66780c0 | 24 | |
IanBenzMaxim | 0:33d4e66780c0 | 25 | /*! \file error.h */ |
IanBenzMaxim | 0:33d4e66780c0 | 26 | |
IanBenzMaxim | 0:33d4e66780c0 | 27 | /*! \defgroup RAPIDJSON_ERRORS RapidJSON error handling */ |
IanBenzMaxim | 0:33d4e66780c0 | 28 | |
IanBenzMaxim | 0:33d4e66780c0 | 29 | /////////////////////////////////////////////////////////////////////////////// |
IanBenzMaxim | 0:33d4e66780c0 | 30 | // RAPIDJSON_ERROR_CHARTYPE |
IanBenzMaxim | 0:33d4e66780c0 | 31 | |
IanBenzMaxim | 0:33d4e66780c0 | 32 | //! Character type of error messages. |
IanBenzMaxim | 0:33d4e66780c0 | 33 | /*! \ingroup RAPIDJSON_ERRORS |
IanBenzMaxim | 0:33d4e66780c0 | 34 | The default character type is \c char. |
IanBenzMaxim | 0:33d4e66780c0 | 35 | On Windows, user can define this macro as \c TCHAR for supporting both |
IanBenzMaxim | 0:33d4e66780c0 | 36 | unicode/non-unicode settings. |
IanBenzMaxim | 0:33d4e66780c0 | 37 | */ |
IanBenzMaxim | 0:33d4e66780c0 | 38 | #ifndef RAPIDJSON_ERROR_CHARTYPE |
IanBenzMaxim | 0:33d4e66780c0 | 39 | #define RAPIDJSON_ERROR_CHARTYPE char |
IanBenzMaxim | 0:33d4e66780c0 | 40 | #endif |
IanBenzMaxim | 0:33d4e66780c0 | 41 | |
IanBenzMaxim | 0:33d4e66780c0 | 42 | /////////////////////////////////////////////////////////////////////////////// |
IanBenzMaxim | 0:33d4e66780c0 | 43 | // RAPIDJSON_ERROR_STRING |
IanBenzMaxim | 0:33d4e66780c0 | 44 | |
IanBenzMaxim | 0:33d4e66780c0 | 45 | //! Macro for converting string literial to \ref RAPIDJSON_ERROR_CHARTYPE[]. |
IanBenzMaxim | 0:33d4e66780c0 | 46 | /*! \ingroup RAPIDJSON_ERRORS |
IanBenzMaxim | 0:33d4e66780c0 | 47 | By default this conversion macro does nothing. |
IanBenzMaxim | 0:33d4e66780c0 | 48 | On Windows, user can define this macro as \c _T(x) for supporting both |
IanBenzMaxim | 0:33d4e66780c0 | 49 | unicode/non-unicode settings. |
IanBenzMaxim | 0:33d4e66780c0 | 50 | */ |
IanBenzMaxim | 0:33d4e66780c0 | 51 | #ifndef RAPIDJSON_ERROR_STRING |
IanBenzMaxim | 0:33d4e66780c0 | 52 | #define RAPIDJSON_ERROR_STRING(x) x |
IanBenzMaxim | 0:33d4e66780c0 | 53 | #endif |
IanBenzMaxim | 0:33d4e66780c0 | 54 | |
IanBenzMaxim | 0:33d4e66780c0 | 55 | RAPIDJSON_NAMESPACE_BEGIN |
IanBenzMaxim | 0:33d4e66780c0 | 56 | |
IanBenzMaxim | 0:33d4e66780c0 | 57 | /////////////////////////////////////////////////////////////////////////////// |
IanBenzMaxim | 0:33d4e66780c0 | 58 | // ParseErrorCode |
IanBenzMaxim | 0:33d4e66780c0 | 59 | |
IanBenzMaxim | 0:33d4e66780c0 | 60 | //! Error code of parsing. |
IanBenzMaxim | 0:33d4e66780c0 | 61 | /*! \ingroup RAPIDJSON_ERRORS |
IanBenzMaxim | 0:33d4e66780c0 | 62 | \see GenericReader::Parse, GenericReader::GetParseErrorCode |
IanBenzMaxim | 0:33d4e66780c0 | 63 | */ |
IanBenzMaxim | 0:33d4e66780c0 | 64 | enum ParseErrorCode { |
IanBenzMaxim | 0:33d4e66780c0 | 65 | kParseErrorNone = 0, //!< No error. |
IanBenzMaxim | 0:33d4e66780c0 | 66 | |
IanBenzMaxim | 0:33d4e66780c0 | 67 | kParseErrorDocumentEmpty, //!< The document is empty. |
IanBenzMaxim | 0:33d4e66780c0 | 68 | kParseErrorDocumentRootNotSingular, //!< The document root must not follow by other values. |
IanBenzMaxim | 0:33d4e66780c0 | 69 | |
IanBenzMaxim | 0:33d4e66780c0 | 70 | kParseErrorValueInvalid, //!< Invalid value. |
IanBenzMaxim | 0:33d4e66780c0 | 71 | |
IanBenzMaxim | 0:33d4e66780c0 | 72 | kParseErrorObjectMissName, //!< Missing a name for object member. |
IanBenzMaxim | 0:33d4e66780c0 | 73 | kParseErrorObjectMissColon, //!< Missing a colon after a name of object member. |
IanBenzMaxim | 0:33d4e66780c0 | 74 | kParseErrorObjectMissCommaOrCurlyBracket, //!< Missing a comma or '}' after an object member. |
IanBenzMaxim | 0:33d4e66780c0 | 75 | |
IanBenzMaxim | 0:33d4e66780c0 | 76 | kParseErrorArrayMissCommaOrSquareBracket, //!< Missing a comma or ']' after an array element. |
IanBenzMaxim | 0:33d4e66780c0 | 77 | |
IanBenzMaxim | 0:33d4e66780c0 | 78 | kParseErrorStringUnicodeEscapeInvalidHex, //!< Incorrect hex digit after \\u escape in string. |
IanBenzMaxim | 0:33d4e66780c0 | 79 | kParseErrorStringUnicodeSurrogateInvalid, //!< The surrogate pair in string is invalid. |
IanBenzMaxim | 0:33d4e66780c0 | 80 | kParseErrorStringEscapeInvalid, //!< Invalid escape character in string. |
IanBenzMaxim | 0:33d4e66780c0 | 81 | kParseErrorStringMissQuotationMark, //!< Missing a closing quotation mark in string. |
IanBenzMaxim | 0:33d4e66780c0 | 82 | kParseErrorStringInvalidEncoding, //!< Invalid encoding in string. |
IanBenzMaxim | 0:33d4e66780c0 | 83 | |
IanBenzMaxim | 0:33d4e66780c0 | 84 | kParseErrorNumberTooBig, //!< Number too big to be stored in double. |
IanBenzMaxim | 0:33d4e66780c0 | 85 | kParseErrorNumberMissFraction, //!< Miss fraction part in number. |
IanBenzMaxim | 0:33d4e66780c0 | 86 | kParseErrorNumberMissExponent, //!< Miss exponent in number. |
IanBenzMaxim | 0:33d4e66780c0 | 87 | |
IanBenzMaxim | 0:33d4e66780c0 | 88 | kParseErrorTermination, //!< Parsing was terminated. |
IanBenzMaxim | 0:33d4e66780c0 | 89 | kParseErrorUnspecificSyntaxError //!< Unspecific syntax error. |
IanBenzMaxim | 0:33d4e66780c0 | 90 | }; |
IanBenzMaxim | 0:33d4e66780c0 | 91 | |
IanBenzMaxim | 0:33d4e66780c0 | 92 | //! Result of parsing (wraps ParseErrorCode) |
IanBenzMaxim | 0:33d4e66780c0 | 93 | /*! |
IanBenzMaxim | 0:33d4e66780c0 | 94 | \ingroup RAPIDJSON_ERRORS |
IanBenzMaxim | 0:33d4e66780c0 | 95 | \code |
IanBenzMaxim | 0:33d4e66780c0 | 96 | Document doc; |
IanBenzMaxim | 0:33d4e66780c0 | 97 | ParseResult ok = doc.Parse("[42]"); |
IanBenzMaxim | 0:33d4e66780c0 | 98 | if (!ok) { |
IanBenzMaxim | 0:33d4e66780c0 | 99 | fprintf(stderr, "JSON parse error: %s (%u)", |
IanBenzMaxim | 0:33d4e66780c0 | 100 | GetParseError_En(ok.Code()), ok.Offset()); |
IanBenzMaxim | 0:33d4e66780c0 | 101 | exit(EXIT_FAILURE); |
IanBenzMaxim | 0:33d4e66780c0 | 102 | } |
IanBenzMaxim | 0:33d4e66780c0 | 103 | \endcode |
IanBenzMaxim | 0:33d4e66780c0 | 104 | \see GenericReader::Parse, GenericDocument::Parse |
IanBenzMaxim | 0:33d4e66780c0 | 105 | */ |
IanBenzMaxim | 0:33d4e66780c0 | 106 | struct ParseResult { |
IanBenzMaxim | 0:33d4e66780c0 | 107 | public: |
IanBenzMaxim | 0:33d4e66780c0 | 108 | //! Default constructor, no error. |
IanBenzMaxim | 0:33d4e66780c0 | 109 | ParseResult() : code_(kParseErrorNone), offset_(0) {} |
IanBenzMaxim | 0:33d4e66780c0 | 110 | //! Constructor to set an error. |
IanBenzMaxim | 0:33d4e66780c0 | 111 | ParseResult(ParseErrorCode code, size_t offset) : code_(code), offset_(offset) {} |
IanBenzMaxim | 0:33d4e66780c0 | 112 | |
IanBenzMaxim | 0:33d4e66780c0 | 113 | //! Get the error code. |
IanBenzMaxim | 0:33d4e66780c0 | 114 | ParseErrorCode Code() const { return code_; } |
IanBenzMaxim | 0:33d4e66780c0 | 115 | //! Get the error offset, if \ref IsError(), 0 otherwise. |
IanBenzMaxim | 0:33d4e66780c0 | 116 | size_t Offset() const { return offset_; } |
IanBenzMaxim | 0:33d4e66780c0 | 117 | |
IanBenzMaxim | 0:33d4e66780c0 | 118 | //! Conversion to \c bool, returns \c true, iff !\ref IsError(). |
IanBenzMaxim | 0:33d4e66780c0 | 119 | operator bool() const { return !IsError(); } |
IanBenzMaxim | 0:33d4e66780c0 | 120 | //! Whether the result is an error. |
IanBenzMaxim | 0:33d4e66780c0 | 121 | bool IsError() const { return code_ != kParseErrorNone; } |
IanBenzMaxim | 0:33d4e66780c0 | 122 | |
IanBenzMaxim | 0:33d4e66780c0 | 123 | bool operator==(const ParseResult& that) const { return code_ == that.code_; } |
IanBenzMaxim | 0:33d4e66780c0 | 124 | bool operator==(ParseErrorCode code) const { return code_ == code; } |
IanBenzMaxim | 0:33d4e66780c0 | 125 | friend bool operator==(ParseErrorCode code, const ParseResult & err) { return code == err.code_; } |
IanBenzMaxim | 0:33d4e66780c0 | 126 | |
IanBenzMaxim | 0:33d4e66780c0 | 127 | //! Reset error code. |
IanBenzMaxim | 0:33d4e66780c0 | 128 | void Clear() { Set(kParseErrorNone); } |
IanBenzMaxim | 0:33d4e66780c0 | 129 | //! Update error code and offset. |
IanBenzMaxim | 0:33d4e66780c0 | 130 | void Set(ParseErrorCode code, size_t offset = 0) { code_ = code; offset_ = offset; } |
IanBenzMaxim | 0:33d4e66780c0 | 131 | |
IanBenzMaxim | 0:33d4e66780c0 | 132 | private: |
IanBenzMaxim | 0:33d4e66780c0 | 133 | ParseErrorCode code_; |
IanBenzMaxim | 0:33d4e66780c0 | 134 | size_t offset_; |
IanBenzMaxim | 0:33d4e66780c0 | 135 | }; |
IanBenzMaxim | 0:33d4e66780c0 | 136 | |
IanBenzMaxim | 0:33d4e66780c0 | 137 | //! Function pointer type of GetParseError(). |
IanBenzMaxim | 0:33d4e66780c0 | 138 | /*! \ingroup RAPIDJSON_ERRORS |
IanBenzMaxim | 0:33d4e66780c0 | 139 | |
IanBenzMaxim | 0:33d4e66780c0 | 140 | This is the prototype for \c GetParseError_X(), where \c X is a locale. |
IanBenzMaxim | 0:33d4e66780c0 | 141 | User can dynamically change locale in runtime, e.g.: |
IanBenzMaxim | 0:33d4e66780c0 | 142 | \code |
IanBenzMaxim | 0:33d4e66780c0 | 143 | GetParseErrorFunc GetParseError = GetParseError_En; // or whatever |
IanBenzMaxim | 0:33d4e66780c0 | 144 | const RAPIDJSON_ERROR_CHARTYPE* s = GetParseError(document.GetParseErrorCode()); |
IanBenzMaxim | 0:33d4e66780c0 | 145 | \endcode |
IanBenzMaxim | 0:33d4e66780c0 | 146 | */ |
IanBenzMaxim | 0:33d4e66780c0 | 147 | typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetParseErrorFunc)(ParseErrorCode); |
IanBenzMaxim | 0:33d4e66780c0 | 148 | |
IanBenzMaxim | 0:33d4e66780c0 | 149 | RAPIDJSON_NAMESPACE_END |
IanBenzMaxim | 0:33d4e66780c0 | 150 | |
IanBenzMaxim | 0:33d4e66780c0 | 151 | #ifdef __clang__ |
IanBenzMaxim | 0:33d4e66780c0 | 152 | RAPIDJSON_DIAG_POP |
IanBenzMaxim | 0:33d4e66780c0 | 153 | #endif |
IanBenzMaxim | 0:33d4e66780c0 | 154 | |
IanBenzMaxim | 0:33d4e66780c0 | 155 | #endif // RAPIDJSON_ERROR_ERROR_H_ |