24 #include <pni/core/types.hpp>
25 #include "../nximp_code.hpp"
26 #include "../nxobject.hpp"
27 #include "../nxobject_traits.hpp"
58 template<nximp_code>
class OTYPE,
67 static_assert(std::is_same<field_type,OTYPE<IMPID>>::value ||
68 std::is_same<attr_type,OTYPE<IMPID>>::value ||
69 std::is_same<group_type,OTYPE<IMPID>>::value,
70 "Argument must be a group, field, or "
71 "attribute instance!");
173 throw type_error(EXCEPTION_RECORD,
174 "Links do not have a size!");
216 return boost::apply_visitor(visitor_type(),o);
get size visitor
Definition: get_size.hpp:97
nexus object traits
Definition: nxobject_traits.hpp:44
result_type operator()(const field_type &f) const
process field instances
Definition: get_size.hpp:140
FTYPE field_type
Nexus field type.
Definition: get_size.hpp:105
size_t get_size(const OTYPE< IMPID > &o)
get number of elements
Definition: get_size.hpp:61
result_type operator()(const group_type &g) const
process group instances
Definition: get_size.hpp:123
Definition: cbf_reader.hpp:41
result_type operator()(const link_type &) const
process nxlink instances
Definition: get_size.hpp:170
size_t result_type
result type
Definition: get_size.hpp:101
nximp_code
implementation codes
Definition: nximp_code.hpp:40
GTYPE group_type
Nexus group type.
Definition: get_size.hpp:103
ATYPE attribute_type
Nexus attribute type.
Definition: get_size.hpp:107
LTYPE link_type
NeXus link type.
Definition: get_size.hpp:109
boost::variant< GTYPE, FTYPE, ATYPE, LTYPE > nxobject
Definition: nxobject.hpp:44
result_type operator()(const attribute_type &a) const
process attribute instances
Definition: get_size.hpp:157