42 [[nodiscard]] virtual std::
string to_string() const = 0;
52using IUnitValueShared = std::shared_ptr<
IUnitValue>;
74 [[nodiscard]] virtual std::
string to_string() const = 0;
Polymorphic interface implemented by every MeasureValue<M,T>.
Definition interface.hpp:59
virtual MeasureDescriptor descriptor() const noexcept=0
Measure descriptor — read fields like descriptor().name from here.
Polymorphic interface implemented by every UnitValue<U,T>.
Definition interface.hpp:27
virtual std::string to_string() const =0
Render <value> <symbol> (or whatever the descriptor's formatter dictates).
virtual UnitDescriptor descriptor() const noexcept=0
Full descriptor — read individual fields (descriptor().id, ...) from here.
virtual double numeric_as_double() const noexcept=0
Numeric value as a double (lossy for >double types).
virtual std::unique_ptr< IUnitValue > clone() const =0
Deep copy as the interface type — the moral equivalent of a virtual copy ctor.
virtual std::string to_formatted_string() const =0
Render with the descriptor's default precision applied.
Runtime metadata structs for units and measures.
std::unique_ptr< IMeasureValue > IMeasureValueUnique
Owning handles to a polymorphic IMeasureValue.
Definition interface.hpp:80
std::vector< IMeasureValueShared > IMeasureValues
Convenience aliases for collections of polymorphic values.
Definition interface.hpp:84
std::vector< IUnitValueShared > IUnitValues
Convenience aliases for collections of polymorphic values.
Definition interface.hpp:55
std::unique_ptr< IUnitValue > IUnitValueUnique
Owning handles to a polymorphic IUnitValue.
Definition interface.hpp:51
Runtime metadata for a measure (a semantic specialization of a unit).
Definition descriptor.hpp:54
Runtime metadata for a unit.
Definition descriptor.hpp:29