diff options
Diffstat (limited to 'src/Platform/Serializable.h')
-rw-r--r-- | src/Platform/Serializable.h | 154 |
1 files changed, 77 insertions, 77 deletions
diff --git a/src/Platform/Serializable.h b/src/Platform/Serializable.h index 1248c630..ef1fbdbe 100644 --- a/src/Platform/Serializable.h +++ b/src/Platform/Serializable.h @@ -3,84 +3,84 @@ Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed by the TrueCrypt License 3.0. - Modifications and additions to the original source code (contained in this file) + Modifications and additions to the original source code (contained in this file) and all other portions of this file are Copyright (c) 2013-2016 IDRIX and are governed by the Apache License 2.0 the full text of which is contained in the file License.txt included in VeraCrypt binary and source code distribution packages. -*/
-
-#ifndef TC_HEADER_Platform_Serializable
-#define TC_HEADER_Platform_Serializable
-
-#include <stdexcept>
-#include "PlatformBase.h"
-#include "ForEach.h"
-#include "Serializer.h"
-#include "SerializerFactory.h"
-
-namespace VeraCrypt
-{
- class Serializable
- {
- public:
- virtual ~Serializable () { }
-
- virtual void Deserialize (shared_ptr <Stream> stream) = 0;
- static string DeserializeHeader (shared_ptr <Stream> stream);
- static Serializable *DeserializeNew (shared_ptr <Stream> stream);
-
- template <class T>
- static shared_ptr <T> DeserializeNew (shared_ptr <Stream> stream)
- {
- shared_ptr <T> p (dynamic_cast <T *> (DeserializeNew (stream)));
- if (!p)
- throw std::runtime_error (SRC_POS);
- return p;
- }
-
- template <class T>
- static void DeserializeList (shared_ptr <Stream> stream, list < shared_ptr <T> > &dataList)
- {
- if (DeserializeHeader (stream) != string ("list<") + SerializerFactory::GetName (typeid (T)) + ">")
- throw std::runtime_error (SRC_POS);
-
- Serializer sr (stream);
- uint64 listSize;
- sr.Deserialize ("ListSize", listSize);
-
- for (size_t i = 0; i < listSize; i++)
- {
- shared_ptr <T> p (dynamic_cast <T *> (DeserializeNew (stream)));
- if (!p)
- throw std::runtime_error (SRC_POS);
- dataList.push_back (p);
- }
- }
-
- virtual void Serialize (shared_ptr <Stream> stream) const;
-
- template <class T>
- static void SerializeList (shared_ptr <Stream> stream, const list < shared_ptr <T> > &dataList)
- {
- Serializer sr (stream);
- SerializeHeader (sr, string ("list<") + SerializerFactory::GetName (typeid (T)) + ">");
-
- sr.Serialize ("ListSize", (uint64) dataList.size());
- foreach_ref (const T &item, dataList)
- item.Serialize (stream);
- }
-
- static void SerializeHeader (Serializer &serializer, const string &name);
-
- protected:
- Serializable () { }
- };
-}
-
-#define TC_SERIALIZABLE(TYPE) \
- static Serializable *GetNewSerializable () { return new TYPE(); } \
- virtual void Deserialize (shared_ptr <Stream> stream); \
- virtual void Serialize (shared_ptr <Stream> stream) const
-
-#endif // TC_HEADER_Platform_Serializable
+*/ + +#ifndef TC_HEADER_Platform_Serializable +#define TC_HEADER_Platform_Serializable + +#include <stdexcept> +#include "PlatformBase.h" +#include "ForEach.h" +#include "Serializer.h" +#include "SerializerFactory.h" + +namespace VeraCrypt +{ + class Serializable + { + public: + virtual ~Serializable () { } + + virtual void Deserialize (shared_ptr <Stream> stream) = 0; + static string DeserializeHeader (shared_ptr <Stream> stream); + static Serializable *DeserializeNew (shared_ptr <Stream> stream); + + template <class T> + static shared_ptr <T> DeserializeNew (shared_ptr <Stream> stream) + { + shared_ptr <T> p (dynamic_cast <T *> (DeserializeNew (stream))); + if (!p) + throw std::runtime_error (SRC_POS); + return p; + } + + template <class T> + static void DeserializeList (shared_ptr <Stream> stream, list < shared_ptr <T> > &dataList) + { + if (DeserializeHeader (stream) != string ("list<") + SerializerFactory::GetName (typeid (T)) + ">") + throw std::runtime_error (SRC_POS); + + Serializer sr (stream); + uint64 listSize; + sr.Deserialize ("ListSize", listSize); + + for (size_t i = 0; i < listSize; i++) + { + shared_ptr <T> p (dynamic_cast <T *> (DeserializeNew (stream))); + if (!p) + throw std::runtime_error (SRC_POS); + dataList.push_back (p); + } + } + + virtual void Serialize (shared_ptr <Stream> stream) const; + + template <class T> + static void SerializeList (shared_ptr <Stream> stream, const list < shared_ptr <T> > &dataList) + { + Serializer sr (stream); + SerializeHeader (sr, string ("list<") + SerializerFactory::GetName (typeid (T)) + ">"); + + sr.Serialize ("ListSize", (uint64) dataList.size()); + foreach_ref (const T &item, dataList) + item.Serialize (stream); + } + + static void SerializeHeader (Serializer &serializer, const string &name); + + protected: + Serializable () { } + }; +} + +#define TC_SERIALIZABLE(TYPE) \ + static Serializable *GetNewSerializable () { return new TYPE(); } \ + virtual void Deserialize (shared_ptr <Stream> stream); \ + virtual void Serialize (shared_ptr <Stream> stream) const + +#endif // TC_HEADER_Platform_Serializable |