59 virtual TYPE
fromString(
const TYPE& ref_value,
const std::string& s ) = 0;
65 throw std::invalid_argument(
"cannot parse '" + s +
"' to " +
System::typeinfoName(
typeid( TYPE ) ) );
83 template <
typename TYPE>
85 TYPE
fromString(
const TYPE& ref_value,
const std::string& s )
final override {
86 TYPE buffer = ref_value;
93 requires( std::is_default_constructible_v<TYPE> )
95 TYPE
fromString(
const TYPE& ,
const std::string& s )
final override {
103 template <
typename TYPE>
107 template <
class TYPE>
110 template <
class TYPE>
116 throw std::out_of_range(
"value " + toString( value ) +
" outside range" );
181 throw std::logic_error(
"setReadHandler not implemented for this class" );
186 throw std::logic_error(
"setUpdateHandler not implemented for this class" );
204 }
catch (
const std::exception& x ) {
205 throw std::invalid_argument(
"failure in update handler of '" + p.
name() +
"': " + x.what() );
The declaration of major parsing functions used e.g for (re)implementation of new extended properties...
StatusCode parse(DataObjID &dest, std::string_view src)
implementation of various functions for streaming.
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
const std::string name() const
property name
Gaudi::tagged_bool< class ImmediatelyInvokeHandler_tag > ImmediatelyInvokeHandler
ParsingErrorPolicy setParsingErrorPolicy(ParsingErrorPolicy p)
ParsingErrorPolicy parsingErrorPolicy()
std::string toString(const TYPE &obj)
the generic implementation of the type conversion to the string
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
const TYPE & lower() const
Return the lower bound value.
bool hasUpper() const
Return if it has a lower bound.
bool hasLower() const
Return if it has a lower bound.
void setUpper(const TYPE &value)
Set upper bound value.
void setLower(const TYPE &value)
Set lower bound value.
void setBounds(const TYPE &lower, const TYPE &upper)
Set both bounds (lower and upper) at the same time.
const TYPE & upper() const
Return the upper bound value.
void operator()(const TYPE &value) const
void clearLower()
Clear lower bound value.
void clearBounds()
Clear both bounds (lower and upper) at the same time.
bool m_hasLowerBound
Data members.
void clearUpper()
Clear upper bound value.
TYPE fromString(const TYPE &, const std::string &s) final override
TYPE fromString(const TYPE &ref_value, const std::string &s) final override
virtual ~DefaultStringConverterImpl()=default
virtual TYPE fromString(const TYPE &ref_value, const std::string &s)=0
void fromStringImpl(TYPE &buffer, const std::string &s)
std::string toString(const TYPE &v)
void useUpdateHandler(const PropertyBase &) const
std::function< void(PropertyBase &)> getReadHandler() const
void setUpdateHandler(std::function< void(PropertyBase &)>)
void setReadHandler(std::function< void(PropertyBase &)>)
std::function< void(PropertyBase &)> getUpdateHandler() const
void useReadHandler(const PropertyBase &) const
void operator()(const TYPE &) const
std::function< void(PropertyBase &)> getReadHandler() const
void useReadHandler(const PropertyBase &p) const
std::function< void(PropertyBase &)> m_readCallBack
void setReadHandler(std::function< void(PropertyBase &)> fun)
helper to disable a while triggering it, to avoid infinite recursion
SwapCall(callback_t &input)
std::function< void(PropertyBase &)> callback_t
void operator()(PropertyBase &p) const
void setUpdateHandler(std::function< void(PropertyBase &)> fun)
void useUpdateHandler(PropertyBase &p)
std::function< void(PropertyBase &)> getUpdateHandler() const
std::function< void(PropertyBase &)> m_updateCallBack