#pragma once /// \file toggle_value.h /// \author Folling #include /// \addtogroup entity_value Entity Values /// @{ IKARUS_BEGIN_HEADER /// \brief A true/false boolean-like value. For example "IsDead". struct IkarusToggleValue; /// \brief Creates a toggle value from a boolean. /// \param value The toggle value. /// \return The entity value. /// \remark Must be freed with #ikarus_free. IKA_API IkarusToggleValue * ikarus_toggle_value_create(bool value); /// \brief Creates an indeterminate toggle value. /// \return The entity value. /// \remark Must be freed with #ikarus_free. IKA_API IkarusToggleValue * ikarus_toggle_value_create_indeterminate(); /// \brief Fetches the underlying value of a toggle value. /// \param value The toggle value. /// \return The underlying value. /// \warning Undefined if the value is indeterminate. IKA_API bool ikarus_toggle_value_get(IkarusToggleValue const * value); /// \brief Sets the value of a toggle value. /// \param value The toggle value. /// \pre \li Must not be null. /// \param new_value The new value. IKA_API void ikarus_toggle_value_set(IkarusToggleValue * value, bool new_value); /// \brief Converts a toggle value to an entity value. /// \param toggle_value The toggle value to convert. /// \return The converted entity value. IKA_API struct IkarusValue * ikarus_toggle_value_to_value(IkarusToggleValue * toggle_value); IKARUS_END_HEADER