HOPS
HOPS class reference
MHO_SerializableObjectFactory.hh
Go to the documentation of this file.
1 #ifndef MHO_SerializableObjectFactory_HH__
2 #define MHO_SerializableObjectFactory_HH__
3 
4 #include "MHO_Message.hh"
5 #include "MHO_Serializable.hh"
6 
7 namespace hops
8 {
9 
18 //base class does nothing
23 {
24  public:
27 
34  virtual MHO_Serializable* Build() { return nullptr; }
35 
44 
55  const std::string& shortname = "")
56  {
57  return false;
58  };
59 
60  private:
61 };
62 
66 template< typename XClassType > //XClassType must inherit from MHO_Serializable
68 {
69  public:
72 
80  {
81  XClassType* obj = new XClassType();
82  return obj;
83  }
84 
93  {
94  XClassType* obj = nullptr;
95  MHO_FileKey read_key;
96  if(inter.IsOpenForRead())
97  {
98  obj = new XClassType();
99  bool ok = inter.Read(*obj, read_key);
100  if(ok)
101  {
102  return obj;
103  }
104  else
105  {
106  msg_debug("file", "failed to build object from file." << eom);
107  delete obj;
108  obj = nullptr;
109  }
110  }
111  else
112  {
113  msg_debug("file", "failed to build object from file, interface not open." << eom);
114  }
115  return obj;
116  }
117 
128  const std::string& shortname = "")
129  {
130 
131  const XClassType* obj = dynamic_cast< const XClassType* >(object);
132  bool ok = false;
133  if(obj != nullptr)
134  {
135  if(inter.IsOpenForWrite())
136  {
137  ok = inter.Write(*obj, shortname);
138  }
139  }
140  if(!ok)
141  {
142  msg_debug("file", "failed to write object to file." << eom);
143  }
144  return ok;
145  }
146 
147  private:
148 };
149 
150 } // namespace hops
151 
152 #endif
#define msg_debug(xKEY, xCONTENT)
Definition: MHO_Message.hh:297
Class MHO_BinaryFileInterface.
Definition: MHO_BinaryFileInterface.hh:27
bool Read(XReadType &obj, MHO_FileKey &obj_key)
Reads the object (XReadType) specified by the object file key from the file.
Definition: MHO_BinaryFileInterface.hh:401
bool Write(const XWriteType &obj, const std::string &shortname="")
Writes an object (must inherit from MHO_Serializable) to a file (with optional shortname string)....
Definition: MHO_BinaryFileInterface.hh:346
bool IsOpenForWrite()
Checks if both object and key streamers are open for writing when fCollectKeys is true,...
Definition: MHO_BinaryFileInterface.hh:38
bool IsOpenForRead()
Checks if the object streamer is open for reading.
Definition: MHO_BinaryFileInterface.hh:55
Class MHO_FileKey the version-0 size of the file key is (512 bits / 64 bytes), and all of the version...
Definition: MHO_FileKey.hh:57
Class MHO_SerializableObjectFactorySpecific.
Definition: MHO_SerializableObjectFactory.hh:68
virtual MHO_Serializable * BuildFromFileInterface(MHO_BinaryFileInterface &inter)
Builds an MHO_Serializable object from a file interface, which points to the underlying XClassType ob...
Definition: MHO_SerializableObjectFactory.hh:92
virtual ~MHO_SerializableObjectFactorySpecific()
Definition: MHO_SerializableObjectFactory.hh:71
virtual bool WriteToFileInterface(MHO_BinaryFileInterface &inter, const MHO_Serializable *object, const std::string &shortname="")
Writes an object to a binary file interface using its short name, with full knowledge of the underlyi...
Definition: MHO_SerializableObjectFactory.hh:127
virtual MHO_Serializable * Build()
Virtual function to build and return an instance of an MHO_Serializable which points to the underlyin...
Definition: MHO_SerializableObjectFactory.hh:79
MHO_SerializableObjectFactorySpecific()
Definition: MHO_SerializableObjectFactory.hh:70
Class MHO_SerializableObjectFactory.
Definition: MHO_SerializableObjectFactory.hh:23
virtual MHO_Serializable * BuildFromFileInterface(MHO_BinaryFileInterface &)
Builds an MHO_Serializable object from a given MHO_BinaryFileInterface.
Definition: MHO_SerializableObjectFactory.hh:43
MHO_SerializableObjectFactory()
Definition: MHO_SerializableObjectFactory.hh:25
virtual MHO_Serializable * Build()
Virtual function to build and return an instance of a MHO_Serializable object.
Definition: MHO_SerializableObjectFactory.hh:34
virtual ~MHO_SerializableObjectFactory()
Definition: MHO_SerializableObjectFactory.hh:26
virtual bool WriteToFileInterface(MHO_BinaryFileInterface &, const MHO_Serializable *, const std::string &shortname="")
Writes an object to a binary file interface using a short name.
Definition: MHO_SerializableObjectFactory.hh:54
Class MHO_Serializable.
Definition: MHO_Serializable.hh:26
Definition: MHO_ChannelLabeler.hh:17