secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSerializable.hpp
changeset 3 127731b7107d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/XSerializable.hpp	Fri Jan 22 09:56:12 2010 +0200
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * $Id: XSerializable.hpp 568078 2007-08-21 11:43:25Z amassari $
+ */
+
+#if !defined(XSERIALIZABLE_HPP)
+#define XSERIALIZABLE_HPP
+
+#include <xercesc/internal/XSerializeEngine.hpp>
+#include <xercesc/internal/XProtoType.hpp>
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+class XMLUTIL_EXPORT XSerializable
+{
+public :
+
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    virtual ~XSerializable() {} ;
+
+    // -----------------------------------------------------------------------
+    //  Serialization Interface
+    // -----------------------------------------------------------------------   
+    virtual bool        isSerializable()               const = 0;
+
+    virtual void        serialize(XSerializeEngine& )        = 0;
+
+    virtual XProtoType* getProtoType()                 const = 0;
+
+protected:
+    XSerializable() {}
+    XSerializable(const XSerializable& ) {}             
+
+private:
+    // -----------------------------------------------------------------------
+    //  Unimplemented assignment operator
+    // -----------------------------------------------------------------------
+	XSerializable& operator=(const XSerializable&);
+
+};
+
+inline void XSerializable::serialize(XSerializeEngine& )
+{
+}
+
+/***
+ * Macro to be included in XSerializable derivatives'
+ * declaration's public section
+ ***/
+#define DECL_XSERIALIZABLE(class_name) \
+public: \
+\
+DECL_XPROTOTYPE(class_name) \
+\
+virtual bool                    isSerializable()                  const ;  \
+virtual XProtoType*             getProtoType()                    const;   \
+virtual void                    serialize(XSerializeEngine&); \
+\
+inline friend XSerializeEngine& operator>>(XSerializeEngine& serEng  \
+                                         , class_name*&      objPtr) \
+{objPtr = (class_name*) serEng.read(XPROTOTYPE_CLASS(class_name));   \
+ return serEng; \
+};
+	
+/***
+ * Macro to be included in the implementation file
+ * of XSerializable derivatives' which is instantiable
+ ***/
+#define IMPL_XSERIALIZABLE_TOCREATE(class_name) \
+IMPL_XPROTOTYPE_TOCREATE(class_name) \
+IMPL_XSERIAL(class_name)
+
+/***
+ * Macro to be included in the implementation file
+ * of XSerializable derivatives' which is UN-instantiable
+ ***/
+#define IMPL_XSERIALIZABLE_NOCREATE(class_name) \
+IMPL_XPROTOTYPE_NOCREATE(class_name) \
+IMPL_XSERIAL(class_name)
+
+/***
+ * Helper Macro 
+ ***/
+#define IMPL_XSERIAL(class_name) \
+bool        class_name::isSerializable() const \
+{return true; } \
+XProtoType* class_name::getProtoType()   const \
+{return XPROTOTYPE_CLASS(class_name); } 
+
+#define IS_EQUIVALENT(lptr, rptr) \
+    if (lptr == rptr)             \
+        return true;              \
+    if (( lptr && !rptr) || (!lptr &&  rptr))  \
+        return false;
+
+XERCES_CPP_NAMESPACE_END
+
+#endif
+