|
@@ -7,7 +7,7 @@
|
|
|
// obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
/* ---------------------------------------------------------------------------
|
|
|
// XMLSerialization.h
|
|
|
- // Author: Christian Schüller on 19/11/13.
|
|
|
+ // Author: Christian Schüller <schuellchr@gmail.com>
|
|
|
------------------------------------------------------------------------------
|
|
|
Inherit from this class to have the easiest way to serialize your user defined class.
|
|
|
|
|
@@ -16,8 +16,8 @@
|
|
|
xmlSerializer->Add(var1,"name1");
|
|
|
xmlSerializer->Add(var2,"name2");
|
|
|
|
|
|
- Workaround for Visual Studio run time debugger inspection problem.
|
|
|
- Copy and implement all the functions, splitting into a source and header file.
|
|
|
+ Workaround for Visual Studio run time debugger inspection problem:
|
|
|
+ Copy and implement all the functions, splitting them into a source and header file.
|
|
|
Restrictions on Native C++ Expressions (Anonymous Namespaces):
|
|
|
http://msdn.microsoft.com/en-us/library/0888kc6a%28VS.80%29.aspx
|
|
|
----------------------------------------------------------------------------*/
|
|
@@ -36,14 +36,14 @@ namespace igl
|
|
|
{
|
|
|
public:
|
|
|
XMLSerializer* xmlSerializer;
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Default implementation of XMLSerializable interface
|
|
|
*/
|
|
|
virtual void Init();
|
|
|
- virtual bool Serialize(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* element);
|
|
|
- virtual bool Deserialize(tinyxml2::XMLDocument* doc, const tinyxml2::XMLElement* element);
|
|
|
-
|
|
|
+ virtual bool Serialize(tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element);
|
|
|
+ virtual bool Deserialize(tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element);
|
|
|
+
|
|
|
/**
|
|
|
* Default constructor, destructor, assignment and copy constructor
|
|
|
*/
|
|
@@ -51,7 +51,7 @@ namespace igl
|
|
|
~XMLSerialization();
|
|
|
XMLSerialization(const XMLSerialization& obj);
|
|
|
XMLSerialization& operator=(const XMLSerialization& obj);
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Function which must be overriden in the subclass if you dont use
|
|
|
* heap allocations (new) to create new instances.
|
|
@@ -83,14 +83,14 @@ namespace igl
|
|
|
void XMLSerialization::Init()
|
|
|
{
|
|
|
}
|
|
|
-
|
|
|
- bool XMLSerialization::Serialize(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* element)
|
|
|
+
|
|
|
+ bool XMLSerialization::Serialize(tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element)
|
|
|
{
|
|
|
bool serialized = false;
|
|
|
-
|
|
|
+
|
|
|
if(this->BeforeSerialization())
|
|
|
{
|
|
|
- if(xmlSerializer == NULL)
|
|
|
+ if(xmlSerializer==NULL)
|
|
|
{
|
|
|
xmlSerializer = new XMLSerializer(Name);
|
|
|
this->InitSerialization();
|
|
@@ -98,17 +98,17 @@ namespace igl
|
|
|
serialized = xmlSerializer->SaveGroupToXMLElement(doc,element,Name);
|
|
|
this->AfterSerialization();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return serialized;
|
|
|
}
|
|
|
-
|
|
|
- bool XMLSerialization::Deserialize(tinyxml2::XMLDocument* doc, const tinyxml2::XMLElement* element)
|
|
|
+
|
|
|
+ bool XMLSerialization::Deserialize(tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element)
|
|
|
{
|
|
|
bool serialized = false;
|
|
|
-
|
|
|
+
|
|
|
if(this->BeforeDeserialization())
|
|
|
{
|
|
|
- if(xmlSerializer == NULL)
|
|
|
+ if(xmlSerializer==NULL)
|
|
|
{
|
|
|
xmlSerializer = new XMLSerializer(Name);
|
|
|
this->InitSerialization();
|
|
@@ -116,16 +116,16 @@ namespace igl
|
|
|
serialized = xmlSerializer->LoadGroupFromXMLElement(Name,doc,element);
|
|
|
this->AfterDeserialization();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return serialized;
|
|
|
}
|
|
|
|
|
|
void XMLSerialization::InitSerialization()
|
|
|
{
|
|
|
- std::cout << "You have to override InitSerialization()" << "\n";
|
|
|
+ std::cout<<"You have to override InitSerialization()"<<"\n";
|
|
|
//assert(false);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
XMLSerialization::XMLSerialization(const std::string& name)
|
|
|
{
|
|
|
Name = name;
|
|
@@ -134,7 +134,7 @@ namespace igl
|
|
|
|
|
|
XMLSerialization::~XMLSerialization()
|
|
|
{
|
|
|
- if(xmlSerializer != NULL)
|
|
|
+ if(xmlSerializer!=NULL)
|
|
|
delete xmlSerializer;
|
|
|
xmlSerializer = NULL;
|
|
|
}
|
|
@@ -147,10 +147,10 @@ namespace igl
|
|
|
|
|
|
XMLSerialization& XMLSerialization::operator=(const XMLSerialization& obj)
|
|
|
{
|
|
|
- if(this != &obj)
|
|
|
+ if(this!=&obj)
|
|
|
{
|
|
|
Name = obj.Name;
|
|
|
- if(xmlSerializer != NULL)
|
|
|
+ if(xmlSerializer!=NULL)
|
|
|
{
|
|
|
delete xmlSerializer;
|
|
|
xmlSerializer = NULL;
|
|
@@ -158,26 +158,25 @@ namespace igl
|
|
|
}
|
|
|
return *this;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
bool XMLSerialization::BeforeSerialization()
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
void XMLSerialization::AfterSerialization()
|
|
|
{
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
bool XMLSerialization::BeforeDeserialization()
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
void XMLSerialization::AfterDeserialization()
|
|
|
{
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
#endif
|