123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- //-----------------------------------------------------------------------------
- /**
- \brief Serialization general interface. Serializer API works with:
- - primitive types: int, float, string, bool, vector
- - dynamic containers: array, set, map
- - static arrays
- - complex types: classes
- \note Serializer provides deep serialization (it serialize class memebers and their members etc). To avoid serialization of certain class variable, use NonSerialized attribute.
- \par usage:
- @code
- class MyData
- {
- int m_id;
- autoptr map<string, float> m_values;
-
- [NonSerialized()]
- string m_dbg; // I don't want to serialize this variable
- }
- void Serialize(Serializer s)
- {
- int statArray[4] = {6,9,2,3};
- array<int> dynArray = {8,5,6,4};
- autoptr MyData data = new MyData();
-
- data.m_id = 965;
- data.m_values = map<string, float>;
- data.m_values.Insert("value1", 5.98);
- data.m_values.Insert("value2", 4.36);
-
- s.Write(10);
- s.Write("Hello");
- s.Write(statArray);
- s.Write(dynArray);
- s.Write(data);
- }
- void Deserialize(Serializer s)
- {
- int statArray[4];
- array<int> dynArray;
- MyData data;
- int someInt;
- string someString;
-
- s.Read(someInt);
- s.Read(someString);
- s.Read(statArray);
- s.Read(dynArray);
- s.Read(data);
- }
-
- @endcode
- */
- class Serializer: Managed
- {
- proto bool Write(void value_out);
- proto bool Read(void value_in);
- proto native bool CanWrite();
- proto native bool CanRead();
-
- protected void Serializer() {}
- protected void ~Serializer() {}
- };
- /**
- \brief Serializer API implementation for File IO. See Serializer for more info.
- \n usage:
- @code
- void TestSave()
- {
- FileSerializer file = new FileSerializer();
- string names[3] = {"alpha", "beta", "gama"};
-
- if (file.Open("test.save", FileMode.WRITE))
- {
- file.Write(10);
- file.Write("lalala");
- file.Write(name);
- file.Close();
- }
- }
-
- void TestLoad()
- {
- FileSerializer file = new FileSerializer();
- int intVal;
- string stringVal;
- string names[3];
-
- if (file.Open("test.save", FileMode.READ))
- {
- file.Read(intVal);
- file.Read(stringVal);
- file.Read(names);
- file.Close();
- }
- }
-
- @endcode
- */
- class FileSerializer: Serializer
- {
- void FileSerializer() {}
- void ~FileSerializer() {}
-
- proto native bool Open(string path, FileMode mode = FileMode.READ);
- proto native bool IsOpen();
- proto native void Close();
- }
-
|