| 1 | #include "simdjson/dom/serialization.h" | 
| 2 | #include "simdjson/error.h" | 
| 3 |  | 
| 4 | namespace simdjson { | 
| 5 | /** | 
| 6 |  * Create a string-view instance out of a document instance. The string-view instance | 
| 7 |  * contains JSON text that is suitable to be parsed as JSON again. It does not | 
| 8 |  * validate the content. | 
| 9 |  */ | 
| 10 | inline simdjson_result<std::string_view> to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::document& x) noexcept; | 
| 11 | /** | 
| 12 |  * Create a string-view instance out of a value instance. The string-view instance | 
| 13 |  * contains JSON text that is suitable to be parsed as JSON again. The value must | 
| 14 |  * not have been accessed previously. It does not | 
| 15 |  * validate the content. | 
| 16 |  */ | 
| 17 | inline simdjson_result<std::string_view> to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::value& x) noexcept; | 
| 18 | /** | 
| 19 |  * Create a string-view instance out of an object instance. The string-view instance | 
| 20 |  * contains JSON text that is suitable to be parsed as JSON again. It does not | 
| 21 |  * validate the content. | 
| 22 |  */ | 
| 23 | inline simdjson_result<std::string_view> to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::object& x) noexcept; | 
| 24 | /** | 
| 25 |  * Create a string-view instance out of an array instance. The string-view instance | 
| 26 |  * contains JSON text that is suitable to be parsed as JSON again. It does not | 
| 27 |  * validate the content. | 
| 28 |  */ | 
| 29 | inline simdjson_result<std::string_view> to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::array& x) noexcept; | 
| 30 | inline simdjson_result<std::string_view> to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::document> x); | 
| 31 | inline simdjson_result<std::string_view> to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value> x); | 
| 32 | inline simdjson_result<std::string_view> to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::object> x); | 
| 33 | inline simdjson_result<std::string_view> to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array> x); | 
| 34 | } // namespace simdjson | 
| 35 |  | 
| 36 | /** | 
| 37 |  * We want to support argument-dependent lookup (ADL). | 
| 38 |  * Hence we should define operator<< in the namespace | 
| 39 |  * where the argument (here value, object, etc.) resides. | 
| 40 |  * Credit: @madhur4127 | 
| 41 |  * See https://github.com/simdjson/simdjson/issues/1768 | 
| 42 |  */ | 
| 43 | namespace simdjson { namespace SIMDJSON_IMPLEMENTATION { namespace ondemand { | 
| 44 |  | 
| 45 | /** | 
| 46 |  * Print JSON to an output stream.  It does not | 
| 47 |  * validate the content. | 
| 48 |  * | 
| 49 |  * @param out The output stream. | 
| 50 |  * @param value The element. | 
| 51 |  * @throw if there is an error with the underlying output stream. simdjson itself will not throw. | 
| 52 |  */ | 
| 53 | inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value x); | 
| 54 | #if SIMDJSON_EXCEPTIONS | 
| 55 | inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result<simdjson::SIMDJSON_IMPLEMENTATION::ondemand::value> x); | 
| 56 | #endif | 
| 57 | /** | 
| 58 |  * Print JSON to an output stream. It does not | 
| 59 |  * validate the content. | 
| 60 |  * | 
| 61 |  * @param out The output stream. | 
| 62 |  * @param value The array. | 
| 63 |  * @throw if there is an error with the underlying output stream. simdjson itself will not throw. | 
| 64 |  */ | 
| 65 | inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array value); | 
| 66 | #if SIMDJSON_EXCEPTIONS | 
| 67 | inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result<simdjson::SIMDJSON_IMPLEMENTATION::ondemand::array> x); | 
| 68 | #endif | 
| 69 | /** | 
| 70 |  * Print JSON to an output stream. It does not | 
| 71 |  * validate the content. | 
| 72 |  * | 
| 73 |  * @param out The output stream. | 
| 74 |  * @param value The array. | 
| 75 |  * @throw if there is an error with the underlying output stream. simdjson itself will not throw. | 
| 76 |  */ | 
| 77 | inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document& value); | 
| 78 | #if SIMDJSON_EXCEPTIONS | 
| 79 | inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result<simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document>&& x); | 
| 80 | #endif | 
| 81 | inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference& value); | 
| 82 | #if SIMDJSON_EXCEPTIONS | 
| 83 | inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result<simdjson::SIMDJSON_IMPLEMENTATION::ondemand::document_reference>&& x); | 
| 84 | #endif | 
| 85 | /** | 
| 86 |  * Print JSON to an output stream. It does not | 
| 87 |  * validate the content. | 
| 88 |  * | 
| 89 |  * @param out The output stream. | 
| 90 |  * @param value The object. | 
| 91 |  * @throw if there is an error with the underlying output stream. simdjson itself will not throw. | 
| 92 |  */ | 
| 93 | inline std::ostream& operator<<(std::ostream& out, simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object value); | 
| 94 | #if SIMDJSON_EXCEPTIONS | 
| 95 | inline std::ostream& operator<<(std::ostream& out, simdjson::simdjson_result<simdjson::SIMDJSON_IMPLEMENTATION::ondemand::object> x); | 
| 96 | #endif | 
| 97 | }}} // namespace simdjson::SIMDJSON_IMPLEMENTATION::ondemand |