24 #include <pni/core/types.hpp>
25 #include <pni/core/error.hpp>
26 #include "../nxobject.hpp"
27 #include "../nxobject_traits.hpp"
50 template<
typename FTYPE> pni::core::string
get_unit(
const FTYPE &field)
55 static_assert(std::is_same<FTYPE,field_type>::value,
56 "UNIT CAN ONLY BE RETRIEFVED FROM A FIELD TYPE!");
58 pni::core::string buffer;
60 if(field.attributes.exists(
"units"))
61 field.attributes[
"units"].read(buffer);
112 throw type_error(EXCEPTION_RECORD,
113 "Cannot retreive a unit from a group!");
154 throw type_error(EXCEPTION_RECORD,
155 "Cannot retrieve a unit from an attribute type!");
171 throw type_error(EXCEPTION_RECORD,
172 "Cannot retrieve a unit from a link type!");
211 return boost::apply_visitor(visitor_type(),o);
pni::core::string result_type
result type
Definition: get_unit.hpp:88
ATYPE attribute_type
Nexus attribute type.
Definition: get_unit.hpp:94
LTYPE link_type
Nexus link type.
Definition: get_unit.hpp:96
pni::core::string get_unit(const FTYPE &field)
get the unit of a field
Definition: get_unit.hpp:50
GTYPE group_type
Nexus group type.
Definition: get_unit.hpp:90
nexus object traits
Definition: nxobject_traits.hpp:44
Definition: cbf_reader.hpp:41
FTYPE field_type
Nexus field type.
Definition: get_unit.hpp:92
result_type operator()(const link_type &) const
process links
Definition: get_unit.hpp:168
result_type operator()(const group_type &) const
process groups
Definition: get_unit.hpp:109
result_type operator()(const attribute_type &) const
process attributes
Definition: get_unit.hpp:151
implementation code type map
Definition: nximp_code_map.hpp:37
get unit visitor
Definition: get_unit.hpp:84
boost::variant< GTYPE, FTYPE, ATYPE, LTYPE > nxobject
Definition: nxobject.hpp:44
result_type operator()(const field_type &f) const
process fields
Definition: get_unit.hpp:135