25 #include <pni/core/types.hpp>
30 #include "../exceptions.hpp"
45 template<nximp_code IMPID>
class nxlink
74 const pni::core::string &
name):
101 return _parent.filename();
110 pni::core::string
name() const noexcept
199 "Cannot resolve link!");
201 return _parent.at(_name);
223 template<nximp_code>
class GTYPE,
226 void get_links(
const GTYPE<IMPID> &parent,CTYPE &container)
228 using value_type =
typename CTYPE::value_type;
230 static_assert( std::is_same<link_type,value_type>::value,
231 "Container must store nxobject or nxlink objects!");
233 for(
size_t i=0;i<parent.size();++i)
253 template<nximp_code>
class GTYPE,
281 template<nximp_code>
class GTYPE,
286 for(
size_t index=0;index<parent.size();++index)
289 container.push_back(l);
293 auto object = parent[l.
name()];
314 template<nximp_code>
class GTYPE,
nxlink_status status() const
return link status
Definition: link.hpp:151
void get_links_recursive(const GTYPE< IMPID > &parent, CTYPE &container)
get links recursively
Definition: link.hpp:284
nxlink_type type() const
return link type
Definition: link.hpp:162
pni::core::string name() const noexcept
return the links name
Definition: link.hpp:110
nexus object traits
Definition: nxobject_traits.hpp:44
auto link_type(const GTYPE< IMPID > &parent, const pni::core::string &name) -> nxlink_type
return link type
Definition: nxlink.hpp:233
auto link_status(const GTYPE< IMPID > parent, const pni::core::string &lname) -> nxlink_status
Definition: nxlink.hpp:410
nxlink()
default constructor
Definition: link.hpp:61
pni::core::string filename() const noexcept
get filename
Definition: link.hpp:99
nxlink_type
Nexus link type.
Definition: nxlink_type.hpp:51
auto link_target(const GTYPE< IMPID > &parent, const pni::core::string &lname) -> nxpath
get link target
Definition: nxlink.hpp:293
parent_type _parent
parent object
Definition: link.hpp:56
bool is_valid() const
checks if a link is valid
Definition: link.hpp:176
Definition: cbf_reader.hpp:41
nxlink_status
Nexus link status.
Definition: nxlink_type.hpp:76
nxpath target_path() const
path to the link target
Definition: link.hpp:137
auto link_name(const GTYPE< IMPID > &parent, size_t index) -> pni::core::string
get link name
Definition: nxlink.hpp:264
link error
Definition: exceptions.hpp:68
void get_links(const GTYPE< IMPID > &parent, CTYPE &container)
get list of links
Definition: link.hpp:226
object_type resolve() const
resolve the link
Definition: link.hpp:195
nximp_code
implementation codes
Definition: nximp_code.hpp:40
nxlink(const parent_type &parent, size_t index)
constructor
Definition: link.hpp:86
nxlink(const parent_type &parent, const pni::core::string &name)
constructor
Definition: link.hpp:73
object_type parent() const noexcept
return parent object
Definition: link.hpp:124
typename nxobject_trait< IMPID >::group_type parent_type
parent type
Definition: link.hpp:49
Nexus path class.
Definition: nxpath/nxpath.hpp:60
representation of a NeXus link
Definition: link.hpp:45
GTYPE as_group(const nxobject< GTYPE, FTYPE, ATYPE, LTYPE > &o)
as group wrapper
Definition: as_group.hpp:167
pni::core::string _name
name of the link below the parent
Definition: link.hpp:58
typename nxobject_trait< IMPID >::object_type object_type
object type
Definition: link.hpp:51
bool is_group(const nxobject< GTYPE, FTYPE, ATYPE, LTYPE > &o) noexcept
test for group
Definition: is_group.hpp:136