7 #ifndef __FWDATA_GENERICFIELD_HPP__ 8 #define __FWDATA_GENERICFIELD_HPP__ 10 #include "fwData/config.hpp" 11 #include "fwData/factory/new.hpp" 12 #include "fwData/GenericFieldBase.hpp" 14 #include <fwCore/base.hpp> 16 #include <boost/lexical_cast.hpp> 30 template<
typename T >
64 operator T() noexcept {
return m_value; }
70 const ::fwData::GenericField<T>& gField =
dynamic_cast< const ::fwData::GenericField<T>&
>(lf);
71 SLM_ASSERT(
"GenericField must have same ValueType.", &gField );
72 return ( this->m_value == gField.value() );
79 const ::fwData::GenericField<T>& gField =
dynamic_cast< const ::fwData::GenericField<T>&
>(lf);
80 SLM_ASSERT(
"GenericField must have same ValueType.", &gField);
81 return ( this->m_value != gField.value() );
88 const ::fwData::GenericField<T>& gField =
dynamic_cast< const ::fwData::GenericField<T>&
>(lf);
89 SLM_ASSERT(
"GenericField must have same ValueType.", &gField);
90 return ( this->m_value < gField.value() );
97 const ::fwData::GenericField<T>& gField =
dynamic_cast< const ::fwData::GenericField<T>&
>(lf);
98 SLM_ASSERT(
"GenericField must have same ValueType.", &gField);
99 return ( this->m_value > gField.value() );
106 const ::fwData::GenericField<T>& gField =
dynamic_cast< const ::fwData::GenericField<T>&
>(lf);
107 SLM_ASSERT(
"GenericField must have same ValueType.", &gField);
108 return ( this->m_value <= gField.value() );
115 const ::fwData::GenericField<T>& gField =
dynamic_cast< const ::fwData::GenericField<T>&
>(lf);
116 SLM_ASSERT(
"GenericField must have same ValueType.", &gField);
117 return ( this->m_value >= gField.value() );
122 virtual ::std::string toString()
const override 124 return ::boost::lexical_cast< ::std::string >(this->m_value);
129 virtual void fromString(const ::std::string& _value)
override 131 this->m_value = ::boost::lexical_cast< T >(_value);
136 template<
typename GT >
137 static typename GT::sptr GenericFieldFactory(
const typename GT::ValueType value);
139 static sptr GenericFieldFactory(
const T value);
159 virtual std::ostream& toOStream( std::ostream& _os )
const override 161 return _os << this->value();
170 template<
typename T >
171 template<
typename GT >
174 typename GT::sptr field;
175 field = ::fwData::factory::New< GT >();
176 field->
value() = value;
182 template<
typename T >
185 typename GenericField<T>::sptr field;
186 field = GenericFieldFactory< GenericField<T> >(value);
187 field->
value() = value;
193 #endif // __FWDATA_GENERICFIELD_HPP__ #define fwCoreNonInstanciableClassDefinitionsMacro(_classinfo_)
Generate common code for Non Instanciable classes (Interfaces, Abstract classes, ...)
T m_value
The stored value.
GenericField(const T value=T()) noexcept
Constructor.
T getValue() const noexcept
get the value
Generic "field" object template.
const T & value() const noexcept
Get the value (constant version).
T & value() noexcept
Get the value (mutable version).
GenericFieldBase define common operation on simple data.
#define SLM_ASSERT(message, cond)
work like 'assert' from 'cassert', with in addition a message logged by spylog (with FATAL loglevel) ...
Base class for each data object.
virtual ~GenericField() noexcept
Destructor.
void setValue(const T &newValue) noexcept
set the value
Contains the representation of the data objects used in the framework.