change clang-format

Signed-off-by: Folling <mail@folling.io>
This commit is contained in:
folling 2023-12-28 16:52:05 +01:00 committed by Folling
parent 497f96a574
commit f925d90d6b
Signed by: folling
SSH key fingerprint: SHA256:S9qEx5WCFFLK49tE/LKnKuJYM5sw+++Dn6qJbbyxnCY
33 changed files with 217 additions and 254 deletions

View file

@ -31,7 +31,9 @@ void ikarus_blueprint_delete(IkarusBlueprint * blueprint) {
}
void ikarus_blueprint_get_properties(
IkarusBlueprint const * blueprint, struct IkarusProperty ** properties_out, size_t properties_out_size
IkarusBlueprint const * blueprint,
struct IkarusProperty ** properties_out,
size_t properties_out_size
) {
ikarus::util::fetch_multiple_buffered<IkarusId>(
blueprint,
@ -43,18 +45,15 @@ void ikarus_blueprint_get_properties(
},
properties_out,
properties_out_size,
[&](IkarusProject * project, IkarusFunctionContext * ctx, IkarusId id
) -> cppbase::Result<IkarusProperty *, sqlitecpp::QueryError> {
VTRY(
auto const type, IkarusProperty::get_property_type(blueprint->project, id).on_error([ctx, id](auto const& err) {
ctx->set_error(
fmt::format("failed to fetch property {}'s type: {}", id, err),
true,
IkarusErrorInfo_Source_SubSystem,
IkarusErrorInfo_Type_SubSystem_Database
);
})
);
[&](IkarusProject * project, IkarusFunctionContext * ctx, IkarusId id) -> cppbase::Result<IkarusProperty *, sqlitecpp::QueryError> {
VTRY(auto const type, IkarusProperty::get_property_type(blueprint->project, id).on_error([ctx, id](auto const & err) {
ctx->set_error(
fmt::format("failed to fetch property {}'s type: {}", id, err),
true,
IkarusErrorInfo_Source_SubSystem,
IkarusErrorInfo_Type_SubSystem_Database
);
}));
return cppbase::ok(project->get_property(id, type));
}
@ -75,7 +74,9 @@ size_t ikarus_blueprint_get_property_count(IkarusBlueprint const * blueprint) {
}
void ikarus_blueprint_get_linked_entities(
IkarusBlueprint const * blueprint, struct IkarusEntity ** entities_out, size_t entities_out_size
IkarusBlueprint const * blueprint,
struct IkarusEntity ** entities_out,
size_t entities_out_size
) {
ikarus::util::fetch_multiple_buffered<IkarusId>(
blueprint,

View file

@ -5,11 +5,11 @@
struct IkarusBlueprint : IkarusObject {
IkarusBlueprint(struct IkarusProject * project, IkarusId id);
IkarusBlueprint(IkarusBlueprint const&) = default;
IkarusBlueprint(IkarusBlueprint&&) = default;
IkarusBlueprint(IkarusBlueprint const &) = default;
IkarusBlueprint(IkarusBlueprint &&) = default;
IkarusBlueprint& operator=(IkarusBlueprint const&) = default;
IkarusBlueprint& operator=(IkarusBlueprint&&) = default;
IkarusBlueprint & operator=(IkarusBlueprint const &) = default;
IkarusBlueprint & operator=(IkarusBlueprint &&) = default;
~IkarusBlueprint() override = default;
};

View file

@ -6,11 +6,11 @@ struct IkarusEntity : IkarusObject {
inline IkarusEntity(struct IkarusProject * project, IkarusId id):
IkarusObject{project, id} {}
IkarusEntity(IkarusEntity const&) = default;
IkarusEntity(IkarusEntity&&) = default;
IkarusEntity(IkarusEntity const &) = default;
IkarusEntity(IkarusEntity &&) = default;
IkarusEntity& operator=(IkarusEntity const&) = default;
IkarusEntity& operator=(IkarusEntity&&) = default;
IkarusEntity & operator=(IkarusEntity const &) = default;
IkarusEntity & operator=(IkarusEntity &&) = default;
~IkarusEntity() override = default;
};

View file

@ -10,11 +10,11 @@ struct IkarusObject {
public:
IkarusObject(struct IkarusProject * project, IkarusId id);
IkarusObject(IkarusObject const&) = default;
IkarusObject(IkarusObject&&) = default;
IkarusObject(IkarusObject const &) = default;
IkarusObject(IkarusObject &&) = default;
IkarusObject& operator=(IkarusObject const&) = default;
IkarusObject& operator=(IkarusObject&&) = default;
IkarusObject & operator=(IkarusObject const &) = default;
IkarusObject & operator=(IkarusObject &&) = default;
virtual ~IkarusObject() = default;

View file

@ -14,17 +14,15 @@ IkarusProperty::IkarusProperty(IkarusProject * project, IkarusId id, Data data):
IkarusObject{project, id},
_data{data} {}
IkarusProperty::Data& IkarusProperty::get_data() {
IkarusProperty::Data & IkarusProperty::get_data() {
return _data;
}
IkarusProperty::Data const& IkarusProperty::get_data() const {
IkarusProperty::Data const & IkarusProperty::get_data() const {
return _data;
}
cppbase::Result<IkarusPropertyType, sqlitecpp::SingleQueryError> IkarusProperty::get_property_type(
IkarusProject * project, IkarusId id
) {
cppbase::Result<IkarusPropertyType, sqlitecpp::SingleQueryError> IkarusProperty::get_property_type(IkarusProject * project, IkarusId id) {
LOG_DEBUG("fetching unboxed property type");
LOG_VERBOSE("project={};property={}", project->get_path().c_str(), id);
@ -33,16 +31,14 @@ cppbase::Result<IkarusPropertyType, sqlitecpp::SingleQueryError> IkarusProperty:
VTRY(
auto const type,
project->get_db()
->query_one<int>("SELECT `type` FROM `properties` WHERE `id` = ?", id)
.on_error([ctx](auto const& err) {
ctx->set_error(
fmt::format("failed to fetch unboxed property type: {}", err),
true,
IkarusErrorInfo_Source_SubSystem,
IkarusErrorInfo_Type_SubSystem_Database
);
})
project->get_db()->query_one<int>("SELECT `type` FROM `properties` WHERE `id` = ?", id).on_error([ctx](auto const & err) {
ctx->set_error(
fmt::format("failed to fetch unboxed property type: {}", err),
true,
IkarusErrorInfo_Source_SubSystem,
IkarusErrorInfo_Type_SubSystem_Database
);
})
);
return cppbase::ok(static_cast<IkarusPropertyType>(type));
@ -55,20 +51,14 @@ IKA_API void ikarus_property_delete(IkarusProperty * property) {
auto * ctx = property->project->get_function_context();
TRYRV(
,
property->project
->get_db()
->execute("DELETE FROM `objects` WHERE `id` = ?", property->id)
.on_error([ctx](auto const& err) {
ctx->set_error(
fmt::format("failed to delete property from objects table: {}", err),
true,
IkarusErrorInfo_Source_SubSystem,
IkarusErrorInfo_Type_SubSystem_Database
);
})
);
TRYRV(, property->project->get_db()->execute("DELETE FROM `objects` WHERE `id` = ?", property->id).on_error([ctx](auto const & err) {
ctx->set_error(
fmt::format("failed to delete property from objects table: {}", err),
true,
IkarusErrorInfo_Source_SubSystem,
IkarusErrorInfo_Type_SubSystem_Database
);
}));
LOG_VERBOSE("property was successfully deleted from database, freeing");
@ -80,8 +70,7 @@ IKA_API void ikarus_property_delete(IkarusProperty * property) {
IkarusPropertyType ikarus_property_get_type(IkarusProperty const * property) {
LOG_VERBOSE("fetching property type");
return IkarusProperty::get_property_type(property->project, property->id)
.unwrap_value_or(IkarusPropertyType_Toggle);
return IkarusProperty::get_property_type(property->project, property->id).unwrap_value_or(IkarusPropertyType_Toggle);
}
IkarusPropertySource const * ikarus_property_get_source(IkarusProperty const * property) {
@ -94,10 +83,9 @@ IkarusPropertySource const * ikarus_property_get_source(IkarusProperty const * p
VTRYRV(
auto const source,
nullptr,
property->project
->get_db()
property->project->get_db()
->query_one<int>("SELECT `source` FROM `properties` WHERE `id` = ?", property->id)
.on_error([ctx](auto const& err) {
.on_error([ctx](auto const & err) {
ctx->set_error(
fmt::format("failed to fetch property's source: {}", err),
true,
@ -133,10 +121,9 @@ IkarusValue * ikarus_property_get_default_value(IkarusProperty const * property)
VTRYRV(
auto const value,
nullptr,
property->project
->get_db()
property->project->get_db()
->query_one<int>("SELECT `default_value` FROM `properties` WHERE `id` = ?", property->id)
.on_error([ctx](auto const& err) {
.on_error([ctx](auto const & err) {
ctx->set_error(
fmt::format("failed to fetch property's default value: {}", err),
true,

View file

@ -16,24 +16,23 @@ public:
public:
/// \brief Helper to fetch a type for a property that isn't yet wrapped in an object
[[nodiscard]] static cppbase::Result<IkarusPropertyType, sqlitecpp::SingleQueryError> get_property_type(
struct IkarusProject * project, IkarusId id
);
[[nodiscard]] static cppbase::Result<IkarusPropertyType, sqlitecpp::SingleQueryError>
get_property_type(struct IkarusProject * project, IkarusId id);
public:
IkarusProperty(struct IkarusProject * project, IkarusId id, Data data);
IkarusProperty(IkarusProperty const&) = default;
IkarusProperty(IkarusProperty&&) = default;
IkarusProperty(IkarusProperty const &) = default;
IkarusProperty(IkarusProperty &&) = default;
IkarusProperty& operator=(IkarusProperty const&) = default;
IkarusProperty& operator=(IkarusProperty&&) = default;
IkarusProperty & operator=(IkarusProperty const &) = default;
IkarusProperty & operator=(IkarusProperty &&) = default;
~IkarusProperty() override = default;
public:
[[nodiscard]] Data& get_data();
[[nodiscard]] Data const& get_data() const;
[[nodiscard]] Data & get_data();
[[nodiscard]] Data const & get_data() const;
private:
Data _data;

View file

@ -11,11 +11,11 @@ public:
public:
explicit IkarusPropertySource(Data data);
IkarusPropertySource(IkarusPropertySource const&) = default;
IkarusPropertySource(IkarusPropertySource&&) = default;
IkarusPropertySource(IkarusPropertySource const &) = default;
IkarusPropertySource(IkarusPropertySource &&) = default;
IkarusPropertySource& operator=(IkarusPropertySource const&) = default;
IkarusPropertySource& operator=(IkarusPropertySource&&) = default;
IkarusPropertySource & operator=(IkarusPropertySource const &) = default;
IkarusPropertySource & operator=(IkarusPropertySource &&) = default;
virtual ~IkarusPropertySource() = default;

View file

@ -3,8 +3,5 @@
IkarusToggleProperty::IkarusToggleProperty(IkarusProject * project, IkarusId id):
IkarusProperty{project, id, this} {}
IkarusToggleProperty * ikarus_toggle_property_create(
struct IkarusProject * project, char const * name, struct IkarusPropertySource * property_source
) {
}
IkarusToggleProperty *
ikarus_toggle_property_create(struct IkarusProject * project, char const * name, struct IkarusPropertySource * property_source) {}

View file

@ -55,7 +55,7 @@ template<typename InsertFunction, typename ObjectFactory>
return cppbase::ok(id);
})
.on_error([&](auto const& err) {
.on_error([&](auto const & err) {
ctx->set_error(
fmt::format("unable to insert {} into database: {}", object_type_str, err),
true,
@ -81,7 +81,7 @@ void delete_object(IkarusProject * project, Object * object) {
auto * ctx = object->project->get_function_context();
TRYRV(, project->get_db()->execute("DELETE FROM `objects` WHERE `id` = ?", object->id).on_error([&](auto const& err) {
TRYRV(, project->get_db()->execute("DELETE FROM `objects` WHERE `id` = ?", object->id).on_error([&](auto const & err) {
ctx->set_error(
fmt::format("failed to delete {} from objects table: {}", object_type_str, err),
true,
@ -104,7 +104,7 @@ struct SingleQueryData {
template<typename T, typename Object>
requires std::derived_from<Object, IkarusObject>
cppbase::Result<T, sqlitecpp::SingleQueryError> fetch_single_field(Object const * object, SingleQueryData const& query_data) {
cppbase::Result<T, sqlitecpp::SingleQueryError> fetch_single_field(Object const * object, SingleQueryData const & query_data) {
auto object_type_str = ikarus_object_type_to_string(ikarus_id_get_object_type(object->id));
LOG_VERBOSE("fetching property default value");
@ -120,7 +120,7 @@ cppbase::Result<T, sqlitecpp::SingleQueryError> fetch_single_field(Object const
fmt::format("SELECT `{}` FROM `{}` WHERE `id` = ?", query_data.select_field_name, query_data.table_name),
object->id
)
.on_error([&](auto const& err) {
.on_error([&](auto const & err) {
ctx->set_error(
fmt::format("failed to fetch {} {} from database: {}", object_type_str, query_data.select_field_name, err),
true,
@ -143,10 +143,13 @@ struct MultipleBufferQueryData {
template<typename Selected, typename Mapped, typename Object, typename F>
requires std::derived_from<Object, IkarusObject>
void fetch_multiple_buffered(
Object const * object, MultipleBufferQueryData const& query_data, Mapped * mapped_buffer, size_t buffer_size, F transformer
Object const * object,
MultipleBufferQueryData const & query_data,
Mapped * mapped_buffer,
size_t buffer_size,
F transformer
)
requires cppbase::
is_result_with_value_type_v<Mapped, std::invoke_result_t<F, IkarusProject *, IkarusFunctionContext *, Selected>>
requires cppbase::is_result_with_value_type_v<Mapped, std::invoke_result_t<F, IkarusProject *, IkarusFunctionContext *, Selected>>
{
auto * ctx = object->project->get_function_context();
@ -172,7 +175,7 @@ void fetch_multiple_buffered(
buffer_size,
object->id
)
.on_error([&](auto const& err) {
.on_error([&](auto const & err) {
ctx->set_error(
fmt::format("failed to fetch {} {} from database: {}", object_type_str, query_data.relation_desc, err),
true,
@ -182,9 +185,7 @@ void fetch_multiple_buffered(
})
);
LOG_DEBUG(
"{} {}: [{}]", object_type_str, query_data.relation_desc, fmt::join(select_buffer, select_buffer + buffer_size, ", ")
);
LOG_DEBUG("{} {}: [{}]", object_type_str, query_data.relation_desc, fmt::join(select_buffer, select_buffer + buffer_size, ", "));
for (size_t i = 0; i < buffer_size; ++i) {
VTRYRV(mapped_buffer[i], , transformer(object->project, ctx, select_buffer[i]));
@ -200,7 +201,7 @@ struct CountQueryData {
template<typename Object>
requires std::derived_from<Object, IkarusObject>
cppbase::Result<cppbase::usize, sqlitecpp::QueryError> fetch_count(Object const * object, CountQueryData const& query_data) {
cppbase::Result<cppbase::usize, sqlitecpp::QueryError> fetch_count(Object const * object, CountQueryData const & query_data) {
auto * object_type_str = ikarus_object_type_to_string(ikarus_id_get_object_type(object->id));
LOG_VERBOSE("fetching {} {} count", object_type_str, query_data.relation_desc);
@ -221,7 +222,7 @@ cppbase::Result<cppbase::usize, sqlitecpp::QueryError> fetch_count(Object const
),
object->id
)
.on_error([&](auto const& err) {
.on_error([&](auto const & err) {
ctx->set_error(
fmt::format("failed to fetch {} {} count: {}", object_type_str, query_data.relation_desc, err),
true,
@ -238,4 +239,4 @@ cppbase::Result<cppbase::usize, sqlitecpp::QueryError> fetch_count(Object const
return cppbase::ok(static_cast<size_t>(count));
}
}
} // namespace ikarus::util

View file

@ -16,11 +16,11 @@ struct IkarusFunctionContext {
public:
explicit IkarusFunctionContext(struct IkarusProject * project);
IkarusFunctionContext(IkarusFunctionContext const&) noexcept = default;
IkarusFunctionContext(IkarusFunctionContext&&) noexcept = default;
IkarusFunctionContext(IkarusFunctionContext const &) noexcept = default;
IkarusFunctionContext(IkarusFunctionContext &&) noexcept = default;
auto operator=(IkarusFunctionContext const&) noexcept -> IkarusFunctionContext& = default;
auto operator=(IkarusFunctionContext&&) noexcept -> IkarusFunctionContext& = default;
auto operator=(IkarusFunctionContext const &) noexcept -> IkarusFunctionContext & = default;
auto operator=(IkarusFunctionContext &&) noexcept -> IkarusFunctionContext & = default;
~IkarusFunctionContext();
@ -40,11 +40,7 @@ public:
_project->error_infos = {infos...};
if (log_error) {
LOG_ERROR(
"Error({}): {}",
fmt::join(_project->error_infos | std::views::transform(get_error_info_name), ", "),
error_message
);
LOG_ERROR("Error({}): {}", fmt::join(_project->error_infos | std::views::transform(get_error_info_name), ", "), error_message);
}
}

View file

@ -14,7 +14,7 @@ auto IkarusProject::get_name() const -> std::string_view {
return _name;
}
auto IkarusProject::get_path() const -> std::filesystem::path const& {
auto IkarusProject::get_path() const -> std::filesystem::path const & {
return _path;
}
@ -55,8 +55,7 @@ auto IkarusProject::get_property(IkarusId id, IkarusPropertyType type) -> Ikarus
return _properties.emplace(id, std::make_unique<IkarusToggleProperty>(this, id)).first->second.get();
case IkarusPropertyType_Number:
return _properties.emplace(id, std::make_unique<IkarusNumberProperty>(this, id)).first->second.get();
case IkarusPropertyType_Text:
return _properties.emplace(id, std::make_unique<IkarusTextProperty>(this, id)).first->second.get();
case IkarusPropertyType_Text: return _properties.emplace(id, std::make_unique<IkarusTextProperty>(this, id)).first->second.get();
}
}

View file

@ -18,7 +18,7 @@ struct IkarusProject {
public:
[[nodiscard]] auto get_name() const -> std::string_view;
[[nodiscard]] auto get_path() const -> std::filesystem::path const&;
[[nodiscard]] auto get_path() const -> std::filesystem::path const &;
[[nodiscard]] auto get_db() -> sqlitecpp::Connection *;
[[nodiscard]] auto get_db() const -> sqlitecpp::Connection const *;
@ -38,7 +38,7 @@ public:
private:
template<typename T>
[[nodiscard]] T * get_cached_object(IkarusId id, auto& cache) {
[[nodiscard]] T * get_cached_object(IkarusId id, auto & cache) {
auto const iter = cache.find(id);
if (iter == cache.cend()) {
@ -49,7 +49,7 @@ private:
}
template<typename T>
void remove_cached_object(T * object, std::unordered_map<IkarusId, std::unique_ptr<T>>& cache) {
void remove_cached_object(T * object, std::unordered_map<IkarusId, std::unique_ptr<T>> & cache) {
cache.erase(object->id);
}

View file

@ -45,7 +45,7 @@ void ikarus_number_value_set_undefined(IkarusNumberValue * value, bool undefined
}
char const * ikarus_number_value_to_string(IkarusNumberValue const * value) {
return ikarus_value_base_to_string(value, [](auto const& value) { return value; });
return ikarus_value_base_to_string(value, [](auto const & value) { return value; });
}
bool ikarus_number_value_is_equal(IkarusNumberValue const * lhs, IkarusNumberValue const * rhs) {

View file

@ -12,15 +12,14 @@ public:
public:
explicit IkarusNumberValue();
IkarusNumberValue(IkarusNumberValue const&) = default;
IkarusNumberValue(IkarusNumberValue&&) = default;
IkarusNumberValue(IkarusNumberValue const &) = default;
IkarusNumberValue(IkarusNumberValue &&) = default;
IkarusNumberValue& operator=(IkarusNumberValue const&) = default;
IkarusNumberValue& operator=(IkarusNumberValue&&) = default;
IkarusNumberValue & operator=(IkarusNumberValue const &) = default;
IkarusNumberValue & operator=(IkarusNumberValue &&) = default;
~IkarusNumberValue() override = default;
public:
boost::variant2::variant<boost::variant2::monostate, boost::container::small_vector<DataType, SMALL_VEC_VALUE_SIZE>> data{
};
boost::variant2::variant<boost::variant2::monostate, boost::container::small_vector<DataType, SMALL_VEC_VALUE_SIZE>> data{};
};

View file

@ -46,7 +46,7 @@ void ikarus_text_value_set_undefined(IkarusTextValue * value, bool undefined) {
}
char const * ikarus_text_value_to_string(IkarusTextValue const * value) {
return ikarus_value_base_to_string(value, [](auto const& value) { return value; });
return ikarus_value_base_to_string(value, [](auto const & value) { return value; });
}
bool ikarus_text_value_is_equal(IkarusTextValue const * lhs, IkarusTextValue const * rhs) {

View file

@ -11,15 +11,14 @@ public:
public:
explicit IkarusTextValue();
IkarusTextValue(IkarusTextValue const&) = default;
IkarusTextValue(IkarusTextValue&&) = default;
IkarusTextValue(IkarusTextValue const &) = default;
IkarusTextValue(IkarusTextValue &&) = default;
IkarusTextValue& operator=(IkarusTextValue const&) = default;
IkarusTextValue& operator=(IkarusTextValue&&) = default;
IkarusTextValue & operator=(IkarusTextValue const &) = default;
IkarusTextValue & operator=(IkarusTextValue &&) = default;
~IkarusTextValue() override = default;
public:
boost::variant2::variant<boost::variant2::monostate, boost::container::small_vector<DataType, SMALL_VEC_VALUE_SIZE>> data{
};
boost::variant2::variant<boost::variant2::monostate, boost::container::small_vector<DataType, SMALL_VEC_VALUE_SIZE>> data{};
};

View file

@ -46,7 +46,7 @@ void ikarus_toggle_value_set_undefined(IkarusToggleValue * value, bool undefined
}
char const * ikarus_toggle_value_to_string(IkarusToggleValue const * value) {
return ikarus_value_base_to_string(value, [](auto const& value) { return value ? "" : ""; });
return ikarus_value_base_to_string(value, [](auto const & value) { return value ? "" : ""; });
}
bool ikarus_toggle_value_is_equal(IkarusToggleValue const * lhs, IkarusToggleValue const * rhs) {

View file

@ -11,15 +11,14 @@ public:
public:
explicit IkarusToggleValue();
IkarusToggleValue(IkarusToggleValue const&) = default;
IkarusToggleValue(IkarusToggleValue&&) = default;
IkarusToggleValue(IkarusToggleValue const &) = default;
IkarusToggleValue(IkarusToggleValue &&) = default;
IkarusToggleValue& operator=(IkarusToggleValue const&) = default;
IkarusToggleValue& operator=(IkarusToggleValue&&) = default;
IkarusToggleValue & operator=(IkarusToggleValue const &) = default;
IkarusToggleValue & operator=(IkarusToggleValue &&) = default;
~IkarusToggleValue() override = default;
public:
boost::variant2::variant<boost::variant2::monostate, boost::container::small_vector<DataType, SMALL_VEC_VALUE_SIZE>> data{
};
boost::variant2::variant<boost::variant2::monostate, boost::container::small_vector<DataType, SMALL_VEC_VALUE_SIZE>> data{};
};

View file

@ -19,7 +19,7 @@
IkarusValue::IkarusValue(Data data):
data(data) {}
cppbase::Result<IkarusValue *, IkarusValue::FromJsonError> IkarusValue::from_json(boost::json::value const& json) {
cppbase::Result<IkarusValue *, IkarusValue::FromJsonError> IkarusValue::from_json(boost::json::value const & json) {
if (auto const * obj = json.if_object(); obj == nullptr) {
return cppbase::err(FromJsonError{});
} else {
@ -43,8 +43,9 @@ cppbase::Result<IkarusValue *, IkarusValue::FromJsonError> IkarusValue::from_jso
ret = new T{};
ret->data = boost::variant2::monostate{};
} else {
auto res = boost::json::try_value_to<
boost::container::small_vector<typename T::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(*data);
auto res =
boost::json::try_value_to<boost::container::small_vector<typename T::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(*data
);
if (res.has_error()) {
return cppbase::err(FromJsonError{});
@ -88,8 +89,8 @@ boost::json::value IkarusValue::to_json() const {
[]<typename T>(T const * value) -> boost::json::value {
return boost::variant2::visit(
cppbase::overloaded{
[]([[maybe_unused]] boost::variant2::monostate const& data) -> boost::json::value { return nullptr; },
[](auto const& data) -> boost::json::value { return boost::json::value_from(data); }
[]([[maybe_unused]] boost::variant2::monostate const & data) -> boost::json::value { return nullptr; },
[](auto const & data) -> boost::json::value { return boost::json::value_from(data); }
},
value->data
);

View file

@ -13,18 +13,18 @@ public:
public:
explicit IkarusValue(Data data);
IkarusValue(IkarusValue const&) = default;
IkarusValue(IkarusValue&&) noexcept = default;
IkarusValue(IkarusValue const &) = default;
IkarusValue(IkarusValue &&) noexcept = default;
IkarusValue& operator=(IkarusValue const&) = default;
IkarusValue& operator=(IkarusValue&&) noexcept = default;
IkarusValue & operator=(IkarusValue const &) = default;
IkarusValue & operator=(IkarusValue &&) noexcept = default;
virtual ~IkarusValue() = default;
public:
struct FromJsonError {};
[[nodiscard]] static cppbase::Result<IkarusValue *, FromJsonError> from_json(boost::json::value const& json);
[[nodiscard]] static cppbase::Result<IkarusValue *, FromJsonError> from_json(boost::json::value const & json);
[[nodiscard]] boost::json::value to_json() const;
public:

View file

@ -2,16 +2,14 @@
#include <ranges>
#include <cppbase/templates.hpp>
#include <boost/container/small_vector.hpp>
#include <cppbase/templates.hpp>
template<typename V>
typename V::DataType const * ikarus_value_base_get(V * value, size_t idx) {
if (auto * data =
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(
&value->data
);
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(&value->data);
data != nullptr) {
return &(*data)[idx];
}
@ -22,9 +20,7 @@ typename V::DataType const * ikarus_value_base_get(V * value, size_t idx) {
template<typename V>
size_t ikarus_value_base_get_size(V const * value) {
if (auto * data =
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(
&value->data
);
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(&value->data);
data != nullptr) {
return data->size();
}
@ -35,9 +31,7 @@ size_t ikarus_value_base_get_size(V const * value) {
template<typename V>
void ikarus_value_base_set(V * value, size_t idx, typename V::DataType new_data) {
if (auto * data =
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(
&value->data
);
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(&value->data);
data != nullptr) {
(*data)[idx] = new_data;
}
@ -46,9 +40,7 @@ void ikarus_value_base_set(V * value, size_t idx, typename V::DataType new_data)
template<typename V>
void ikarus_value_base_remove(V * value, size_t idx) {
if (auto * data =
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(
&value->data
);
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(&value->data);
data != nullptr) {
data->erase(data->begin() + idx);
}
@ -57,9 +49,7 @@ void ikarus_value_base_remove(V * value, size_t idx) {
template<typename V>
void ikarus_value_base_insert(V * value, size_t idx, typename V::DataType new_data) {
if (auto * data =
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(
&value->data
);
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(&value->data);
data != nullptr) {
data->insert(data->begin() + idx, new_data);
}
@ -68,9 +58,7 @@ void ikarus_value_base_insert(V * value, size_t idx, typename V::DataType new_da
template<typename V>
void ikarus_value_base_clear(V * value) {
if (auto * data =
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(
&value->data
);
boost::variant2::get_if<boost::container::small_vector<typename V::DataType, IkarusValue::SMALL_VEC_VALUE_SIZE>>(&value->data);
data != nullptr) {
data->clear();
}
@ -93,10 +81,9 @@ void ikarus_value_base_set_undefined(V * value, bool undefined) {
template<typename V, std::invocable<typename V::DataType> F>
char const * ikarus_value_base_to_string(V const * value, F transformer) {
return boost::variant2::visit(
cppbase::overloaded {
[](boost::variant2::monostate const&) -> char const * { return nullptr; },
[&transformer](auto const& data
) -> char const * {
cppbase::overloaded{
[](boost::variant2::monostate const &) -> char const * { return nullptr; },
[&transformer](auto const & data) -> char const * {
auto buffer = fmt::memory_buffer{};
fmt::format_to(