7#include <Common/assertion.h>
8#include <Common/primitive_type.h>
19template<
typename Owner,
typename IntType =
integer,
typename SdlValueType = TSdlValue<IntType, Owner>>
22 static_assert(std::is_base_of_v<TSdlAbstractValue<IntType, Owner>, SdlValueType>,
23 "SdlValueType should be a subclass of TSdlAbstractValue.");
26 template<
typename ValueType>
27 inline TSdlInteger(std::string valueName, ValueType Owner::* const valuePtr) :
28 SdlValueType(
"integer",
std::move(valueName), valuePtr)
33 return std::to_string(value);
38 IntType*
const intPtr = this->
getValue(owner);
39 if constexpr(std::is_base_of_v<TSdlOptionalValue<IntType, Owner>, SdlValueType>)
52 optInt = std::nullopt;
66 data.isNullClearable =
true;
103template<
typename Owner,
typename IntType =
integer>
106template<
typename Owner>
109template<
typename Owner>
112template<
typename Owner>
115template<
typename Owner>
118template<
typename Owner>
121template<
typename Owner>
124template<
typename Owner>
127template<
typename Owner>
130template<
typename Owner>
133template<
typename Owner>
136template<
typename Owner>
139template<
typename Owner>
142template<
typename Owner>
145template<
typename Owner>
148template<
typename Owner>
151template<
typename Owner>
154template<
typename Owner>
157template<
typename Owner>
Data that SDL input process can rely on.
Definition SdlInputContext.h:19
Definition SdlNativeData.h:88
static auto permissiveElementSetter(SdlSetterVariant input, ElementType *out_elementPtr) -> bool
Given a valid target element, set its value in a permissive way (with auto conversions).
Definition SdlNativeData.ipp:349
std::size_t numElements
Hint for number of elements in this block of native data. For example, numElements would be 12 for an...
Definition SdlNativeData.h:99
static auto permissiveElementGetter(ElementType *elementPtr) -> SdlGetterVariant
Given a valid target element, get its value in a permissive way (with auto conversions).
Definition SdlNativeData.ipp:312
static SdlNativeData fromSingleElement(ElementType *elementPtr, ESdlDataFormat elementContainer, ESdlDataType elementType, bool canSet=false, bool canDirectAccess=false)
Creates native data for a single element pointer.
Definition SdlNativeData.ipp:86
Carries SDL representation of various data during the output process. Helps to write output data such...
Definition SdlOutputClause.h:14
std::string value
Stores stringified data of a clause. As the output clause generator knows best how its data look like...
Definition SdlOutputClause.h:29
bool isEmpty
If the clause carries no data and does not need to be written.
Definition SdlOutputClause.h:41
Data that SDL output process can rely on.
Definition SdlOutputContext.h:19
Definition SdlNativeData.h:24
A field class that binds a integral member variable.
Definition TSdlInteger.h:21
TSdlInteger(std::string valueName, ValueType Owner::*const valuePtr)
Definition TSdlInteger.h:27
SdlNativeData ownedNativeData(Owner &owner) const override
Direct access to the field memory of an owner. Short-lived owner objects such as function parameter s...
Definition TSdlInteger.h:36
void saveToSdl(const Owner &owner, SdlOutputClause &out_clause, const SdlOutputContext &ctx) const override
Convert actual value back to SDL value. Saving a loaded value as SDL value should rarely fail–as load...
Definition TSdlInteger.h:85
std::string valueAsString(const IntType &value) const override
Definition TSdlInteger.h:31
void loadFromSdl(Owner &owner, const SdlInputClause &clause, const SdlInputContext &ctx) const override
Load SDL value to actual value and store it in the owner's field. Implementations are highly encourag...
Definition TSdlInteger.h:77
void setValue(Owner &owner, T value) const override
Store a value.
Definition TSdlValue.ipp:38
const T * getConstValue(const Owner &owner) const override
Get a pointer to the stored value.
Definition TSdlValue.ipp:50
T * getValue(Owner &owner) const override
Get a pointer to the stored value.
Definition TSdlValue.ipp:44
T & valueRef(Owner &owner) const
Definition TSdlValue.ipp:132
IntType load_int(std::string_view sdlIntStr)
Returns a integer number by processing its SDL representation. Supports ph::integer and all signed an...
Definition sdl_helpers.ipp:37
void save_int(IntType value, std::string &out_str)
Converts a integer number to its SDL representation. Supports ph::real, float, double,...
Definition sdl_helpers.ipp:248
constexpr ESdlDataType int_type_of()
Definition sdl_helpers.ipp:422
The root for all renderer implementations.
Definition EEngineProject.h:6
TAnyPtr< false > AnyNonConstPtr
A type-safe, lightweight wrapper for any non-const raw pointer type.
Definition TAnyPtr.h:47
Low-level helpers for SDL. Helpers are in an additional sdl namespace.