diff options
Diffstat (limited to 'src/Platform/SerializerFactory.h')
-rw-r--r-- | src/Platform/SerializerFactory.h | 176 |
1 files changed, 88 insertions, 88 deletions
diff --git a/src/Platform/SerializerFactory.h b/src/Platform/SerializerFactory.h index c63dbcf8..29a1f655 100644 --- a/src/Platform/SerializerFactory.h +++ b/src/Platform/SerializerFactory.h @@ -3,95 +3,95 @@ 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_SerializerFactory
-#define TC_HEADER_Platform_SerializerFactory
-
-#include <typeinfo>
-#include "PlatformBase.h"
-#include "StringConverter.h"
-
-namespace VeraCrypt
-{
- class Serializable;
-
- class SerializerFactory
- {
- public:
- ~SerializerFactory ();
-
- static void Deinitialize ();
- static string GetName (const type_info &typeInfo);
- static Serializable *GetNewSerializable (const string &typeName);
- static void Initialize ();
-
- struct MapEntry
- {
- MapEntry () { }
- MapEntry (const string &typeName, Serializable* (*getNewPtr) ())
- : TypeName (typeName), GetNewPtr (getNewPtr) { }
-
- MapEntry &operator= (const MapEntry &right)
- {
- TypeName = right.TypeName;
- GetNewPtr = right.GetNewPtr;
- return *this;
- }
-
- string TypeName;
- Serializable* (*GetNewPtr) ();
- };
-
- static map <string, MapEntry> *NameToTypeMap;
- static map <string, string> *TypeToNameMap;
-
- protected:
- SerializerFactory ();
-
- static int UseCount;
- };
-
-}
-
-#define TC_SERIALIZER_FACTORY_ADD_EXCEPTION_SET(TYPE) \
- struct TYPE##SerializerFactoryInitializer \
- { \
- TYPE##SerializerFactoryInitializer () \
- { \
- SerializerFactory::Initialize(); \
- TC_EXCEPTION_SET; \
- } \
- ~TYPE##SerializerFactoryInitializer () \
- { \
- SerializerFactory::Deinitialize(); \
- } \
- }; \
- static TYPE##SerializerFactoryInitializer TYPE##SerializerFactoryInitializer
-
-#define TC_SERIALIZER_FACTORY_ADD_CLASS(TYPE) \
- struct TYPE##SerializerFactoryInitializer \
- { \
- TYPE##SerializerFactoryInitializer () \
- { \
- SerializerFactory::Initialize(); \
- TC_SERIALIZER_FACTORY_ADD (TYPE); \
- } \
- ~TYPE##SerializerFactoryInitializer () \
- { \
- SerializerFactory::Deinitialize(); \
- } \
- }; \
- static TYPE##SerializerFactoryInitializer TYPE##SerializerFactoryInitializerInst
-
-#define TC_SERIALIZER_FACTORY_ADD(TYPE) \
- (*SerializerFactory::NameToTypeMap)[#TYPE] = SerializerFactory::MapEntry (StringConverter::GetTypeName (typeid (TYPE)), &TYPE::GetNewSerializable); \
- (*SerializerFactory::TypeToNameMap)[StringConverter::GetTypeName (typeid (TYPE))] = #TYPE
-
-
-#endif // TC_HEADER_Platform_SerializerFactory
+*/ + +#ifndef TC_HEADER_Platform_SerializerFactory +#define TC_HEADER_Platform_SerializerFactory + +#include <typeinfo> +#include "PlatformBase.h" +#include "StringConverter.h" + +namespace VeraCrypt +{ + class Serializable; + + class SerializerFactory + { + public: + ~SerializerFactory (); + + static void Deinitialize (); + static string GetName (const type_info &typeInfo); + static Serializable *GetNewSerializable (const string &typeName); + static void Initialize (); + + struct MapEntry + { + MapEntry () { } + MapEntry (const string &typeName, Serializable* (*getNewPtr) ()) + : TypeName (typeName), GetNewPtr (getNewPtr) { } + + MapEntry &operator= (const MapEntry &right) + { + TypeName = right.TypeName; + GetNewPtr = right.GetNewPtr; + return *this; + } + + string TypeName; + Serializable* (*GetNewPtr) (); + }; + + static map <string, MapEntry> *NameToTypeMap; + static map <string, string> *TypeToNameMap; + + protected: + SerializerFactory (); + + static int UseCount; + }; + +} + +#define TC_SERIALIZER_FACTORY_ADD_EXCEPTION_SET(TYPE) \ + struct TYPE##SerializerFactoryInitializer \ + { \ + TYPE##SerializerFactoryInitializer () \ + { \ + SerializerFactory::Initialize(); \ + TC_EXCEPTION_SET; \ + } \ + ~TYPE##SerializerFactoryInitializer () \ + { \ + SerializerFactory::Deinitialize(); \ + } \ + }; \ + static TYPE##SerializerFactoryInitializer TYPE##SerializerFactoryInitializer + +#define TC_SERIALIZER_FACTORY_ADD_CLASS(TYPE) \ + struct TYPE##SerializerFactoryInitializer \ + { \ + TYPE##SerializerFactoryInitializer () \ + { \ + SerializerFactory::Initialize(); \ + TC_SERIALIZER_FACTORY_ADD (TYPE); \ + } \ + ~TYPE##SerializerFactoryInitializer () \ + { \ + SerializerFactory::Deinitialize(); \ + } \ + }; \ + static TYPE##SerializerFactoryInitializer TYPE##SerializerFactoryInitializerInst + +#define TC_SERIALIZER_FACTORY_ADD(TYPE) \ + (*SerializerFactory::NameToTypeMap)[#TYPE] = SerializerFactory::MapEntry (StringConverter::GetTypeName (typeid (TYPE)), &TYPE::GetNewSerializable); \ + (*SerializerFactory::TypeToNameMap)[StringConverter::GetTypeName (typeid (TYPE))] = #TYPE + + +#endif // TC_HEADER_Platform_SerializerFactory |