From 01d98593fe9db1ae0c5e0ae3f7ccb6b1621c8c4c Mon Sep 17 00:00:00 2001
From: PeiYong Zhang <peiyongz@apache.org>
Date: Thu, 14 Feb 2002 15:17:31 +0000
Subject: [PATCH] getEnumString()

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@173498 13f79535-47bb-0310-9956-ffa450edef68
---
 samples/SEnumVal/SEnumVal.cpp                   | 16 ++++++++++++++++
 .../datatype/AbstractNumericFacetValidator.cpp  | 17 ++++++++++++++---
 .../datatype/AbstractNumericFacetValidator.hpp  |  9 +++++++--
 .../datatype/AbstractStringValidator.cpp        | 12 ++++++++++--
 .../datatype/AbstractStringValidator.hpp        |  9 +++++++--
 .../datatype/AnySimpleTypeDatatypeValidator.cpp | 13 +++++++++++--
 .../datatype/AnySimpleTypeDatatypeValidator.hpp |  2 ++
 .../datatype/BooleanDatatypeValidator.cpp       | 12 ++++++++++--
 .../datatype/BooleanDatatypeValidator.hpp       |  2 ++
 .../validators/datatype/DatatypeValidator.hpp   |  6 ++++++
 .../datatype/UnionDatatypeValidator.cpp         | 11 +++++++++--
 .../datatype/UnionDatatypeValidator.hpp         |  9 +++++++--
 12 files changed, 101 insertions(+), 17 deletions(-)

diff --git a/samples/SEnumVal/SEnumVal.cpp b/samples/SEnumVal/SEnumVal.cpp
index 3e982bf3b..773dfe10d 100644
--- a/samples/SEnumVal/SEnumVal.cpp
+++ b/samples/SEnumVal/SEnumVal.cpp
@@ -57,6 +57,9 @@
 /*
  * $Id$
  * $Log$
+ * Revision 1.7  2002/02/14 15:14:58  peiyongz
+ * getEnumString()
+ *
  * Revision 1.6  2002/02/01 22:41:28  peiyongz
  * sane_include
  *
@@ -485,6 +488,19 @@ void processDatatypeValidator( const DatatypeValidator* dtValidator, bool margin
         }
     }
 
+	// Enumerations
+	const RefVectorOf<XMLCh>*  enums = dtValidator->getEnumString();
+	if (enums)
+	{
+		cout << "Enumeration:\t\t\n";
+
+        int enumLength = enums->size();
+        for ( int i = 0; i < enumLength; i++)
+        {
+            cout << "\t" << StrX( enums->elementAt(i)) << "\n";
+        }
+
+	}
 }
 
 void processContentSpecNode( const ContentSpecNode* cSpecNode, bool margin )
diff --git a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
index 8c892e955..fcfc7d1c1 100644
--- a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
+++ b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
@@ -57,8 +57,11 @@
 /*
  * $Id$
  * $Log$
- * Revision 1.1  2002/02/01 22:22:39  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:39  peiyongz
+ * sane_include
  *
  * Revision 1.6  2001/12/13 16:48:29  peiyongz
  * Avoid dangling pointer
@@ -140,6 +143,9 @@ AbstractNumericFacetValidator::~AbstractNumericFacetValidator()
     //~RefVectorOf will delete all adopted elements
     if (!fEnumerationInherited &&  fEnumeration)
         delete fEnumeration;
+
+    if (!fEnumerationInherited &&  fStrEnumeration)
+        delete fStrEnumeration;
 }
 
 AbstractNumericFacetValidator::AbstractNumericFacetValidator(
@@ -170,7 +176,7 @@ void AbstractNumericFacetValidator::init(RefVectorOf<XMLCh>* const enums)
 {
 
     fStrEnumeration = enums; // save the literal value
-    Janitor<RefVectorOf<XMLCh> >    janStrEnum(fStrEnumeration);
+	                         // which is needed for getEnumString()
 
     if (enums)
     {
@@ -781,6 +787,11 @@ void AbstractNumericFacetValidator::inheritFacet()
 
 }
 
+const RefVectorOf<XMLCh>* AbstractNumericFacetValidator::getEnumString() const
+{
+	return (fEnumerationInherited? getBaseValidator()->getEnumString() : fStrEnumeration );
+}
+
 /**
   * End of file AbstractNumericFacetValidator::cpp
   */
diff --git a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
index 41187cf1e..de8d7e6ba 100644
--- a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
@@ -57,8 +57,11 @@
 /*
  * $Id$
  * $Log$
- * Revision 1.1  2002/02/01 22:22:39  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:39  peiyongz
+ * sane_include
  *
  * Revision 1.3  2001/11/22 20:23:20  peiyongz
  * _declspec(dllimport) and inline warning C4273
@@ -92,6 +95,8 @@ public:
 
 	//@}
 
+	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+
 protected:
 
     AbstractNumericFacetValidator(DatatypeValidator*            const baseValidator
diff --git a/src/xercesc/validators/datatype/AbstractStringValidator.cpp b/src/xercesc/validators/datatype/AbstractStringValidator.cpp
index 775bf954b..f4802f27d 100644
--- a/src/xercesc/validators/datatype/AbstractStringValidator.cpp
+++ b/src/xercesc/validators/datatype/AbstractStringValidator.cpp
@@ -56,8 +56,11 @@
 
 /*
  * $Log$
- * Revision 1.1  2002/02/01 22:22:39  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:39  peiyongz
+ * sane_include
  *
  * Revision 1.7  2001/12/13 16:48:29  peiyongz
  * Avoid dangling pointer
@@ -653,6 +656,11 @@ void AbstractStringValidator::checkContent( const XMLCh* const content, bool asB
 
 }
 
+const RefVectorOf<XMLCh>* AbstractStringValidator::getEnumString() const
+{
+	return getEnumeration();
+}
+
 /**
   * End of file AbstractStringValidator.cpp
   */
diff --git a/src/xercesc/validators/datatype/AbstractStringValidator.hpp b/src/xercesc/validators/datatype/AbstractStringValidator.hpp
index fc7ee2a6b..a5497b4b7 100644
--- a/src/xercesc/validators/datatype/AbstractStringValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractStringValidator.hpp
@@ -57,8 +57,11 @@
 /*
  * $Id$
  * $Log$
- * Revision 1.1  2002/02/01 22:22:40  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:40  peiyongz
+ * sane_include
  *
  * Revision 1.9  2001/12/13 16:48:29  peiyongz
  * Avoid dangling pointer
@@ -117,6 +120,8 @@ public:
 
 	//@}
 
+	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+
     // -----------------------------------------------------------------------
     // Validation methods
     // -----------------------------------------------------------------------
diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
index 78f801d2a..747183ca0 100644
--- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
@@ -56,8 +56,11 @@
 
 /*
  * $Log$
- * Revision 1.1  2002/02/01 22:22:40  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:40  peiyongz
+ * sane_include
  *
  * Revision 1.1  2001/08/24 17:12:01  knoaman
  * Add support for anySimpleType.
@@ -105,6 +108,12 @@ AnySimpleTypeDatatypeValidator::newInstance(RefHashTableOf<KVStringPair>* const
     // to satisfy some compilers
     return 0;
 }
+
+const RefVectorOf<XMLCh>* AnySimpleTypeDatatypeValidator::getEnumString() const
+{
+	return 0;
+}
+
 /**
   * End of file AnySimpleTypeDatatypeValidator.cpp
   */
diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
index 0d83a017b..1b188ae39 100644
--- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
@@ -87,6 +87,8 @@ public:
 
 	//@}
 
+	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+
     // -----------------------------------------------------------------------
     // Getter methods
     // -----------------------------------------------------------------------
diff --git a/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp b/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
index 3b39b4174..a63bc3da4 100644
--- a/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
@@ -56,8 +56,11 @@
 
 /*
  * $Log$
- * Revision 1.1  2002/02/01 22:22:40  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:40  peiyongz
+ * sane_include
  *
  * Revision 1.7  2001/10/02 18:59:29  peiyongz
  * Invalid_Facet_Tag to display the tag name
@@ -222,6 +225,11 @@ int BooleanDatatypeValidator::compare(const XMLCh* const lValue
     return 1;
 }
 
+const RefVectorOf<XMLCh>* BooleanDatatypeValidator::getEnumString() const
+{
+	return 0;
+}
+
 /**
   * End of file BooleanDatatypeValidator.cpp
   */
diff --git a/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp b/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
index e30b2fd62..d7353ba6d 100644
--- a/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
@@ -84,6 +84,8 @@ public:
 
 	//@}
 
+	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+
     // -----------------------------------------------------------------------
     // Getter methods
     // -----------------------------------------------------------------------
diff --git a/src/xercesc/validators/datatype/DatatypeValidator.hpp b/src/xercesc/validators/datatype/DatatypeValidator.hpp
index 94131f731..c625e1d3e 100644
--- a/src/xercesc/validators/datatype/DatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DatatypeValidator.hpp
@@ -193,6 +193,12 @@ public:
       */
     virtual bool isAtomic() const;
 
+    /**
+      * Returns the datatype enumeration if any is set.
+	  * Derived class shall provide their own copy.
+      */
+	virtual const RefVectorOf<XMLCh>* getEnumString() const = 0;
+
     //@}
 
     // -----------------------------------------------------------------------
diff --git a/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp b/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
index 5948528ea..13cbab4b8 100644
--- a/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
@@ -57,8 +57,11 @@
 /*
  * $Id$
  * $Log$
- * Revision 1.1  2002/02/01 22:22:42  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:42  peiyongz
+ * sane_include
  *
  * Revision 1.5  2001/10/02 18:59:29  peiyongz
  * Invalid_Facet_Tag to display the tag name
@@ -385,6 +388,10 @@ int UnionDatatypeValidator::compare(const XMLCh* const lValue
     return -1;        
 }
 
+const RefVectorOf<XMLCh>* UnionDatatypeValidator::getEnumString() const
+{
+	return getEnumeration();
+}
 /**
   * End of file UnionDatatypeValidator.cpp
   */
diff --git a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
index b9eb4481a..8d91b50d2 100644
--- a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
@@ -57,8 +57,11 @@
 /*
  * $Id$
  * $Log$
- * Revision 1.1  2002/02/01 22:22:43  peiyongz
- * Initial revision
+ * Revision 1.2  2002/02/14 15:17:31  peiyongz
+ * getEnumString()
+ *
+ * Revision 1.1.1.1  2002/02/01 22:22:43  peiyongz
+ * sane_include
  *
  * Revision 1.9  2001/12/13 16:48:29  peiyongz
  * Avoid dangling pointer
@@ -132,6 +135,8 @@ public:
 
 	//@}
 
+	virtual const RefVectorOf<XMLCh>* getEnumString() const;
+
     // -----------------------------------------------------------------------
     // Getter methods
     // -----------------------------------------------------------------------
-- 
GitLab