63 qtty_quantity_t src{};
65 check_status(
static_cast<QttyStatus
>(status),
"Creating source quantity for to_json_value");
69 check_status(
static_cast<QttyStatus
>(status),
"Serializing value to JSON");
82 qtty_quantity_t out_qty{};
85 check_status(
static_cast<QttyStatus
>(status),
"Deserializing value from JSON");
98 qtty_quantity_t src{};
100 check_status(
static_cast<QttyStatus
>(status),
"Creating source quantity for to_json");
104 check_status(
static_cast<QttyStatus
>(status),
"Serializing quantity to JSON");
110 return static_cast<UnitId
>(raw);
124 qtty_quantity_t out_qty{};
126 check_status(
static_cast<QttyStatus
>(status),
"Deserializing quantity from JSON");
130 qtty_quantity_t conv{};
133 "Converting deserialized quantity to target unit");
155 static_assert(
is_compound_v<Tag>,
"derived_serialization::to_json requires a compound quantity");
156 qtty_derived_quantity_t src{};
159 check_status(
static_cast<QttyStatus
>(status),
"Creating derived quantity for serialization");
163 check_status(
static_cast<QttyStatus
>(status),
"Serializing derived quantity to JSON");
175 static_assert(
is_compound_v<Tag>,
"derived_serialization::from_json requires a compound type");
176 qtty_derived_quantity_t out_qty{};
178 check_status(
static_cast<QttyStatus
>(status),
"Deserializing derived quantity from JSON");
183 qtty_derived_quantity_t conv{};
186 check_status(
static_cast<QttyStatus
>(status),
"Converting deserialized derived quantity");
constexpr double value() const
Core quantity template and error translation utilities.
Quantity< typename ExtractTag< T >::type > from_json(std::string_view json)
Deserialize a JSON string into a compound quantity.
std::string to_json(const Quantity< Tag > &q)
Serialize a compound quantity as JSON.
Quantity< typename ExtractTag< T >::type > from_json_value(std::string_view json)
Deserialize a JSON numeric value into a typed quantity.
std::string to_json(const Quantity< UnitTag > &q)
Serialize a typed quantity as JSON object with value and unit id.
std::string to_json_value(const Quantity< UnitTag > &q)
Serialize only the numeric value as JSON for a typed quantity.
UnitId unit_id_from_u32(uint32_t raw)
Quantity< typename ExtractTag< T >::type > from_json(std::string_view json)
Deserialize a JSON quantity object into a requested target type.
std::string from_owned_c(char *ptr)
Convert an owned C string from FFI into std::string and free it.
constexpr bool is_compound_v
void check_status(QttyStatus status, const char *operation)
Convert qtty FFI status codes into typed C++ exceptions.
int32_t qtty_quantity_from_json_value(UnitId unit, const char *json, qtty_quantity_t *out)
void qtty_string_free(char *s)
int32_t qtty_derived_from_json(const char *json, qtty_derived_quantity_t *out)
int32_t qtty_quantity_from_json(const char *json, qtty_quantity_t *out)
int32_t qtty_quantity_to_json_value(qtty_quantity_t src, char **out_json)
int32_t qtty_derived_to_json(qtty_derived_quantity_t src, char **out)
int32_t qtty_quantity_to_json(qtty_quantity_t src, char **out_json)