1 #ifndef _Belle2_NSMData_hh
2 #define _Belle2_NSMData_hh
4 #include <daq/slc/base/AbstractDBObject.h>
8 #if NSM_PACKAGE_VERSION >= 1914
9 #include <nsm2/nsmparse.h>
22 class NSMCommunicator;
26 typedef std::vector<NSMData> NSMDataList;
27 typedef std::map<std::string, NSMDataList> NSMDataListMap;
36 typedef std::vector<NameValue> NameValueList;
39 NSMData(
const std::string& dataname,
40 const std::string& format,
int revision);
47 NSMData(
void* pdata,
const std::string& dataname,
48 const std::string& format,
int revision);
51 int getRevision()
const {
return m_revision; }
52 const std::string& getFormat()
const {
return m_format; }
53 int getSize()
const {
return m_size; }
54 void setRevision(
int revision) { m_revision = revision; }
55 void setFormat(
const std::string& format) { m_format = format; }
56 void setSize(
int size) { m_size = size; }
57 bool isAvailable() {
return (m_pdata != NULL); }
58 void* open(NSMCommunicator& comm);
59 void* allocate(NSMCommunicator& comm,
int interval = 2);
61 void* get() {
return m_pdata; }
62 const void* get()
const {
return m_pdata; }
63 void* parse(
const char* inc_dir = NULL,
bool allocated =
false);
65 int getNObjects(
const std::string& name)
const;
66 const NSMDataList& getObjects(
const std::string& name)
const;
67 NSMDataList& getObjects(
const std::string& name);
68 const NSMData& getObject(
const std::string& name,
int index = 0)
const;
69 NSMData& getObject(
const std::string& name,
int index = 0);
71 void print(
const std::string& name_in =
"")
const;
72 void printPV(
const std::string& name_in =
"")
const;
73 const void* find(
const std::string& name_in, DBField::Type& type,
int& length)
const;
74 void search(NameValueList& map,
const std::string& name =
"")
const;
77 virtual void* getValue(
const std::string& name);
78 virtual const void* getValue(
const std::string& name)
const;
79 virtual void setValue(
const std::string& name,
const void* value,
int size);
80 virtual void addValue(
const std::string& name,
const void* value,
81 DBField::Type type,
int length = 0);
82 virtual const std::string& getText(
const std::string&)
const {
return m_empty; }
83 virtual void addText(
const std::string&,
const std::string&) {}
86 virtual void readObject(Reader& reader);
87 virtual void writeObject(Writer& writer)
const;
93 void set(
void* pdata) { m_pdata = pdata; }
95 #if NSM_PACKAGE_VERSION >= 1914
97 std::string& name_in);
105 std::string m_format;
107 NSMDataListMap m_data_v_m;
109 NSMCommunicator* m_com;
114 typedef std::vector<NSMData> NSMDataList;
115 typedef std::map<std::string, NSMDataList> NSMDataListMap;