#include "ikarus/values/toggle_value.h" #include #include #include #include IkarusToggleValue::IkarusToggleValue(): IkarusValue{this} {} IkarusToggleValue * ikarus_toggle_value_create() { return new IkarusToggleValue{}; } bool const * ikarus_toggle_value_get(IkarusToggleValue * value, size_t idx) { return ikarus_value_base_get(value, idx); } size_t ikarus_toggle_value_get_size(IkarusToggleValue const * value) { return ikarus_value_base_get_size(value); } void ikarus_toggle_value_set(IkarusToggleValue * value, size_t idx, bool new_data) { return ikarus_value_base_set(value, idx, new_data); } void ikarus_toggle_value_remove(IkarusToggleValue * value, size_t idx) { return ikarus_value_base_remove(value, idx); } void ikarus_toggle_value_insert(IkarusToggleValue * value, size_t idx, bool new_data) { return ikarus_value_base_insert(value, idx, new_data); } void ikarus_toggle_value_clear(IkarusToggleValue * value) { return ikarus_value_base_clear(value); } bool ikarus_toggle_value_is_undefined(IkarusToggleValue const * value) { return ikarus_value_base_is_undefined(value); } void ikarus_toggle_value_set_undefined(IkarusToggleValue * value, bool undefined) { return ikarus_value_base_set_undefined(value, undefined); } char const * ikarus_toggle_value_to_string(IkarusToggleValue const * value) { return boost::variant2::visit( boost::make_overloaded_function( [](boost::variant2::monostate const&) { return nullptr; }, [](auto const& data) { return fmt::join( data | boost::adaptors::transformed([](auto const& bool_value) { return bool_value ? "✓" : "✗"; }), ", " ); } ), value->data ); } bool ikarus_toggle_value_is_equal(IkarusToggleValue const * lhs, IkarusToggleValue const * rhs) { return ikarus_value_base_is_equal(lhs, rhs); } IkarusToggleValue * ikarus_toggle_value_copy(IkarusToggleValue const * value) { return ikarus_value_base_copy(value); } struct IkarusValue * ikarus_toggle_value_to_value(IkarusToggleValue * value) { return ikarus_value_base_to_value(value); } struct IkarusValue const * ikarus_toggle_value_to_value_const(IkarusToggleValue const * value) { return ikarus_value_base_to_value_const(value); }