From c6604407196e698660f5c3a03254bf5bc313803d Mon Sep 17 00:00:00 2001
From: PeiYong Zhang <peiyongz@apache.org>
Date: Fri, 12 Dec 2003 18:34:43 +0000
Subject: [PATCH] loadElement/storeElement

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@175548 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/framework/XMLElementDecl.cpp | 44 ++++++++++++++++++++++++
 src/xercesc/framework/XMLElementDecl.hpp | 17 +++++++++
 2 files changed, 61 insertions(+)

diff --git a/src/xercesc/framework/XMLElementDecl.cpp b/src/xercesc/framework/XMLElementDecl.cpp
index cd2190f65..9eb1b3dc3 100644
--- a/src/xercesc/framework/XMLElementDecl.cpp
+++ b/src/xercesc/framework/XMLElementDecl.cpp
@@ -66,6 +66,9 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/XMLUni.hpp>
 
+#include <xercesc/validators/schema/SchemaElementDecl.hpp>
+#include <xercesc/validators/DTD/DTDElementDecl.hpp>
+
 XERCES_CPP_NAMESPACE_BEGIN
 
 // ---------------------------------------------------------------------------
@@ -165,5 +168,46 @@ void XMLElementDecl::serialize(XSerializeEngine& serEng)
 
 }
 
+void 
+XMLElementDecl::storeElementDecl(XSerializeEngine&        serEng
+                               , XMLElementDecl*    const element)
+{
+    if (element)
+    {
+        serEng<<(int) element->getObjectType();
+        serEng<<element;
+    }
+    else
+    {
+        serEng<<(int) UnKnown;
+    }
+}
+
+XMLElementDecl* 
+XMLElementDecl::loadElementDecl(XSerializeEngine& serEng)
+{
+    int type;
+    serEng>>type;
+
+    switch((XMLElementDecl::objectType)type)
+    {
+    case Schema:
+        SchemaElementDecl* schemaElementDecl;
+        serEng>>schemaElementDecl;
+        return schemaElementDecl;
+        break;
+    case DTD:
+        DTDElementDecl* dtdElementDecl;
+        serEng>>dtdElementDecl;
+        return dtdElementDecl;
+        break;
+    case UnKnown:
+         //fall through
+    default:
+        return 0;
+        break;
+    }
+}
+
 XERCES_CPP_NAMESPACE_END
 
diff --git a/src/xercesc/framework/XMLElementDecl.hpp b/src/xercesc/framework/XMLElementDecl.hpp
index 2b8b38036..dfa26cd93 100644
--- a/src/xercesc/framework/XMLElementDecl.hpp
+++ b/src/xercesc/framework/XMLElementDecl.hpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.11  2003/12/12 18:34:43  peiyongz
+ * loadElement/storeElement
+ *
  * Revision 1.10  2003/11/27 06:08:18  neilg
  * mark DOMTypeInfo-related methods on XMLElementDecl deprecated since they are not thread-safe
  *
@@ -610,6 +613,20 @@ class XMLPARSER_EXPORT XMLElementDecl : public XSerializable, public XMemory
      ***/
     DECL_XSERIALIZABLE(XMLElementDecl)
 
+    enum objectType
+    {
+        Schema
+      , DTD
+      , UnKnown
+    };
+
+    virtual XMLElementDecl::objectType  getObjectType() const = 0;
+
+    static void            storeElementDecl(XSerializeEngine&        serEng
+                                          , XMLElementDecl*    const element);
+
+    static XMLElementDecl* loadElementDecl(XSerializeEngine& serEng);
+
 protected :
     // -----------------------------------------------------------------------
     //  Hidden constructors
-- 
GitLab