1 #ifndef NEXUS_STREAM_HPP 2 #define NEXUS_STREAM_HPP 60 virtual void readFromFile(
File& nf)
const = 0;
61 virtual void writeToFile(
File& nf)
const = 0;
78 void setName(
const std::string& name);
88 template<
typename NumT>
95 AttrHolder(
const std::string& name,
const NumT* cv, NumT* v) :
HolderBase(name), m_c_value(cv), m_value(v) { }
98 AttrHolder(
const std::string& name, NumT& value);
99 AttrHolder(
const std::string& name,
const NumT& value);
103 virtual void readFromFile(
File& nf)
const;
104 virtual void writeToFile(
File& nf)
const;
120 template <
typename NumT>
122 template <
typename NumT>
124 template <
typename NumT>
126 template <
typename NumT>
135 virtual ~Attr() {
delete m_holder; m_holder = NULL; }
146 void processAttr(
const std::string& attr1_name,
const Attr& attr1_value,
const std::string& attr2_name,
const Attr& attr2_value)
148 if (attr1_name.size() > 0)
150 m_attr.push_back(
Attr(attr1_name, attr1_value));
152 if (attr2_name.size() > 0)
154 m_attr.push_back(
Attr(attr2_name, attr2_value));
162 processAttr(attr1_name, attr1_value, attr2_name, attr2_value);
167 for(std::list<Attr>::const_iterator it = m_attr.begin(); it != m_attr.end(); it++)
169 it->readFromFile(nf);
175 for(std::list<Attr>::const_iterator it = m_attr.begin(); it != m_attr.end(); it++)
195 Group(
const std::string& name,
const std::string& nxclass,
const std::string& attr1_name =
"",
const Attr& attr1_value =
Attr(),
196 const std::string& attr2_name=
"",
const Attr& attr2_value =
Attr()) :
197 ObjectWithAttr(attr1_name, attr1_value, attr2_name, attr2_value), m_name(name), m_class(nxclass)
219 template<
typename NumT>
226 DataHolder(
const std::string& name,
const std::vector<NumT>* cv, std::vector<NumT>* v) :
HolderBase(name), m_c_value(cv), m_value(v) { }
230 DataHolder(
const std::string& name, std::vector<NumT>& value);
231 DataHolder(
const std::string& name,
const std::vector<NumT>& value);
235 virtual void readFromFile(
File& nf)
const;
236 virtual void writeToFile(
File& nf)
const;
255 template <
typename NumT>
256 Data(
const std::string& name, std::vector<NumT>& data,
const std::string& attr1_name=
"",
const Attr& attr1_value=
Attr(),
257 const std::string& attr2_name=
"",
const Attr& attr2_value =
Attr()) :
262 template <
typename NumT>
263 Data(
const std::string& name,
const std::vector<NumT>& data,
const std::string& attr1_name=
"",
const Attr& attr1_value=
Attr(),
264 const std::string& attr2_name=
"",
const Attr& attr2_value =
Attr()) :
271 virtual void readFromFile(
File& nf)
const;
272 virtual void writeToFile(
File& nf)
const;
273 virtual ~Data() {
delete m_holder; }
virtual ~ObjectWithAttr()
Attr(const std::string &name, Attr &d)
virtual void readFromFile(File &nf) const =0
Data & operator=(const Data &d)
virtual void readFromFile(File &nf) const
Data(const std::string &name, const std::vector< NumT > &data, const std::string &attr1_name="", const Attr &attr1_value=Attr(), const std::string &attr2_name="", const Attr &attr2_value=Attr())
ObjectWithAttr(const std::string &attr1_name="", const Attr &attr1_value=Attr(), const std::string &attr2_name="", const Attr &attr2_value=Attr())
File & operator<<(File &nf, const ISerialisable &obj)
Serialisable NeXus group object.
Definition of the NeXus C++ API.
void makeGroup(const std::string &name, const std::string &class_name, bool open_group=false)
Create a new group.
void processAttr(const std::string &attr1_name, const Attr &attr1_value, const std::string &attr2_name, const Attr &attr2_value)
virtual void writeToFile(File &nf) const
NXnumtype
The primitive types published by this API.
AttrHolder(const std::string &name, const NumT *cv, NumT *v)
virtual void readFromFile(File &nf) const
Group(const std::string &name, const std::string &nxclass, const std::string &attr1_name="", const Attr &attr1_value=Attr(), const std::string &attr2_name="", const Attr &attr2_value=Attr())
NXnumtype getType(NumT number)
This function returns the NXnumtype given a concrete number.
Base class for serialisable named and typed parameter.
File & operator>>(File &nf, const ISerialisable &obj)
Attr(const std::string &name, const Attr &d)
virtual void readFromFile(File &nf) const
Serialisable NeXus attribute.
Attr(const std::string &name, NumT &d)
DataHolder(const std::string &name, const std::vector< NumT > *cv, std::vector< NumT > *v)
virtual HolderBase * clone()=0
void setName(const std::string &name)
Data(const std::string &name)
const std::vector< NumT > * m_c_value
Serialisable data object that contains attributes.
std::vector< NumT > * m_value
The Object that allows access to the information in the file.
virtual void writeToFile(File &nf) const =0
virtual void writeToFile(File &nf) const
Data(const std::string &name, std::vector< NumT > &data, const std::string &attr1_name="", const Attr &attr1_value=Attr(), const std::string &attr2_name="", const Attr &attr2_value=Attr())
virtual void writeToFile(File &nf) const
Attr & operator=(const Attr &a)
interface implemented by all serialisable NeXus components
Attr(const std::string &name, const NumT &d)
Serialisable NeXus class with associated attributes.
void openGroup(const std::string &name, const std::string &class_name)
Open an existing group.
void setName(const std::string &name)