1 #ifndef _DATA_SERIALIZE_H_
2 #define _DATA_SERIALIZE_H_
42 return file.
Read(ptr, num_bytes);
72 return file.
Write(ptr, num_bytes);
106 template<
typename StreamClass,
typename StreamOperator>
class BaseStream
126 StreamClass&
Open(
const char *file_name)
128 result_ = file_.
Open(file_name, StreamOperator::FileAccess());
129 return (StreamClass&) (*this);
138 StreamClass&
Open(
const char *file_name,
const char *access)
140 result_ = file_.
Open(file_name, access);
141 return (StreamClass&) (*this);
152 return (StreamClass&) (*this);
165 result_ = (result_ && StreamOperator::SerializeBytes(file_, ptr, num_bytes));
166 return (StreamClass&) (*this);
175 return ((StreamClass&) (*
this)).
Serialize(var);
189 operator bool()
const
221 return var.SerializeWith(stream);
226 return var.SerializeWith(stream);
332 char *buf =
new char[num];
345 int num = var.size();
369 for (
int i = 0; i < num; i++)
388 for (
int i = 0; i < num; i++)
415 for (
int i = 0; i < num; i++)
418 var.insert(pair<string, int> (key, value));
434 for (multimap<string, int>::const_iterator i = var.begin(); i != var.end(); i++)
bool Write(T *value, int num_bytes=sizeof(T)) const
Writes a value to the file.
Definition: file.h:376
BaseStream()
Initializes the status to false.
Definition: serialize.h:116
This template class allows to define a "serializer".
Definition: serialize.h:217
File file_
File used for the serialization.
Definition: serialize.h:109
static bool SerializeBytes(File &file, void *ptr, int num_bytes)
Performs an output (write) serialization of bytes for a file.
Definition: serialize.h:70
static OutputStream & Save(OutputStream &stream, T &var)
Definition: serialize.h:224
static OutputStream & Save(OutputStream &stream, int &var)
Definition: serialize.h:290
StreamClass & Open(const char *file_name, const char *access)
Opens a file for serialization.
Definition: serialize.h:138
static InputStream & Load(InputStream &stream, multimap< string, int > &var)
Definition: serialize.h:406
static InputStream & Load(InputStream &stream, string &var)
Definition: serialize.h:321
static const char * FileAccess()
Returns the required file access for this operator.
Definition: serialize.h:58
StreamClass & Close()
Closes the file of the serialization and finish the serialization.
Definition: serialize.h:148
static OutputStream & Save(OutputStream &stream, uint64_t &var)
Definition: serialize.h:308
static InputStream & Load(InputStream &stream, int &var)
Definition: serialize.h:285
OutputStream & Serialize(T &var)
Definition: serialize.h:254
This template is used as the base for the input/output stream classes.
Definition: serialize.h:106
static InputStream & Load(InputStream &stream, vector< T > &var)
Definition: serialize.h:360
static OutputStream & Save(OutputStream &stream, string &var)
Definition: serialize.h:343
bool result_
Internal current status of the serialization.
Definition: serialize.h:110
static OutputStream & Save(OutputStream &stream, multimap< string, int > &var)
Definition: serialize.h:425
bool Read(T *value, int num_bytes=sizeof(T)) const
Reads a value from the file.
Definition: file.h:335
StreamClass & operator&(T &var)
This operator overloading is the key of the serialization mechanism.
Definition: serialize.h:173
static InputStream & Load(InputStream &stream, uint64_t &var)
Definition: serialize.h:303
StreamClass & SerializeBytes(void *ptr, int num_bytes)
Serializes a number of bytes.
Definition: serialize.h:163
This struct identifies a basic output operator to be applied to a File object.
Definition: serialize.h:53
bool result() const
Returns the internal serialization status.
Definition: serialize.h:181
static OutputStream & Save(OutputStream &stream, vector< T > &var)
Definition: serialize.h:379
static OutputStream & Save(OutputStream &stream, bool &var)
Definition: serialize.h:272
static InputStream & Load(InputStream &stream, T &var)
Definition: serialize.h:219
Specialization of the BaseStream for output serializations.
Definition: serialize.h:251
static InputStream & Load(InputStream &stream, bool &var)
Definition: serialize.h:267
StreamClass & Open(const char *file_name)
Opens a file for serialization.
Definition: serialize.h:126
virtual ~BaseStream()
The destructor automatically closes the file-.
Definition: serialize.h:197