simdjson  3.1.6
Ridiculously Fast JSON
implementation_simdjson_result_base.h
1 namespace simdjson {
2 namespace SIMDJSON_IMPLEMENTATION {
3 
4 // This is a near copy of include/error.h's implementation_simdjson_result_base, except it doesn't use std::pair
5 // so we can avoid inlining errors
6 // TODO reconcile these!
27 template<typename T>
29 
33  simdjson_inline implementation_simdjson_result_base() noexcept = default;
34 
38  simdjson_inline implementation_simdjson_result_base(error_code error) noexcept;
39 
43  simdjson_inline implementation_simdjson_result_base(T &&value) noexcept;
44 
48  simdjson_inline implementation_simdjson_result_base(T &&value, error_code error) noexcept;
49 
56  simdjson_inline void tie(T &value, error_code &error) && noexcept;
57 
63  simdjson_inline error_code get(T &value) && noexcept;
64 
68  simdjson_inline error_code error() const noexcept;
69 
70 #if SIMDJSON_EXCEPTIONS
71 
77  simdjson_inline T& value() & noexcept(false);
78 
84  simdjson_inline T&& value() && noexcept(false);
85 
91  simdjson_inline T&& take_value() && noexcept(false);
92 
98  simdjson_inline operator T&&() && noexcept(false);
99 
100 
101 #endif // SIMDJSON_EXCEPTIONS
102 
107  simdjson_inline const T& value_unsafe() const& noexcept;
112  simdjson_inline T& value_unsafe() & noexcept;
117  simdjson_inline T&& value_unsafe() && noexcept;
118 protected:
120  T first{};
122 }; // struct implementation_simdjson_result_base
123 
124 } // namespace SIMDJSON_IMPLEMENTATION
125 } // namespace simdjson
We want to support argument-dependent lookup (ADL).
error_code
All possible errors returned by simdjson.
Definition: error.h:17
@ UNINITIALIZED
unknown error, or uninitialized document
Definition: error.h:29
simdjson_inline implementation_simdjson_result_base() noexcept=default
Create a new empty result with error = UNINITIALIZED.
simdjson_inline T & value() &noexcept(false)
Get the result value.
simdjson_inline const T & value_unsafe() const &noexcept
Get the result value.
simdjson_inline T && value() &&noexcept(false)
Take the result value (move it).
simdjson_inline error_code get(T &value) &&noexcept
Move the value to the provided variable.
simdjson_inline void tie(T &value, error_code &error) &&noexcept
Move the value and the error to the provided variables.
simdjson_inline T && take_value() &&noexcept(false)
Take the result value (move it).