1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /*
19  * $Id: BooleanDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $
20  */
21 
22 #if !defined(XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP)
23 #define XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP
24 
25 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
26 
27 XERCES_CPP_NAMESPACE_BEGIN
28 
29 class VALIDATORS_EXPORT BooleanDatatypeValidator : public DatatypeValidator
30 {
31 public:
32 
33     // -----------------------------------------------------------------------
34     //  Public ctor/dtor
35     // -----------------------------------------------------------------------
36 	/** @name Constructor. */
37     //@{
38 
39     BooleanDatatypeValidator
40     (
41         MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
42     );
43     BooleanDatatypeValidator
44     (
45         DatatypeValidator* const baseValidator
46         , RefHashTableOf<KVStringPair>* const facets
47         , RefArrayVectorOf<XMLCh>* const enums
48         , const int finalSet
49         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
50     );
51 
52     virtual ~BooleanDatatypeValidator();
53 
54 	//@}
55 
56 	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;
57 
58     // -----------------------------------------------------------------------
59     // Getter methods
60     // -----------------------------------------------------------------------
61     /** @name Getter Functions */
62     //@{
63 
64     virtual const XMLCh* getCanonicalRepresentation
65                         (
66                           const XMLCh*         const rawData
67                         ,       MemoryManager* const memMgr = 0
68                         ,       bool                 toValidate = false
69                         ) const;
70     //@}
71 
72     // -----------------------------------------------------------------------
73     // Validation methods
74     // -----------------------------------------------------------------------
75     /** @name Validation Function */
76     //@{
77 
78     /**
79      * validate that a string matches the boolean datatype
80      * @param content A string containing the content to be validated
81      *
82      * @exception throws InvalidDatatypeException if the content is
83      * is not valid.
84      */
85 
86 	virtual void validate
87                  (
88                   const XMLCh*             const content
89                 ,       ValidationContext* const context = 0
90                 ,       MemoryManager*     const manager = XMLPlatformUtils::fgMemoryManager
91                   );
92 
93     //@}
94 
95     // -----------------------------------------------------------------------
96     // Compare methods
97     // -----------------------------------------------------------------------
98     /** @name Compare Function */
99     //@{
100 
101     /**
102      * Compare two boolean data types
103      *
104      * @param content1
105      * @param content2
106      * @return
107      */
108     int compare(const XMLCh* const, const XMLCh* const
109         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
110         );
111 
112     //@}
113 
114     /**
115       * Returns an instance of the base datatype validator class
116 	  * Used by the DatatypeValidatorFactory.
117       */
118     DatatypeValidator* newInstance
119     (
120         RefHashTableOf<KVStringPair>* const facets
121         , RefArrayVectorOf<XMLCh>* const enums
122         , const int finalSet
123         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
124     );
125 
126     /***
127      * Support for Serialization/De-serialization
128      ***/
129     DECL_XSERIALIZABLE(BooleanDatatypeValidator)
130 
131 private:
132 
133     virtual void checkContent(const XMLCh*             const content
134                             ,       ValidationContext* const context
135                             , bool                           asBase
136                             , MemoryManager* const manager);
137 
138     // -----------------------------------------------------------------------
139     //  Unimplemented methods.
140     // -----------------------------------------------------------------------
141     BooleanDatatypeValidator(const BooleanDatatypeValidator&);
142     BooleanDatatypeValidator& operator=(const BooleanDatatypeValidator&);
143 
144 };
145 
146 // ---------------------------------------------------------------------------
147 //  Constructors and Destructor
148 // ---------------------------------------------------------------------------
BooleanDatatypeValidator(MemoryManager * const manager)149 inline BooleanDatatypeValidator::BooleanDatatypeValidator(MemoryManager* const manager)
150 :DatatypeValidator(0, 0, 0, DatatypeValidator::Boolean, manager)
151 {
152     setFinite(true);
153 }
154 
~BooleanDatatypeValidator()155 inline BooleanDatatypeValidator::~BooleanDatatypeValidator()
156 {
157 }
158 
159 // -----------------------------------------------------------------------
160 // Getter methods
161 // -----------------------------------------------------------------------
162 
163 
164 // -----------------------------------------------------------------------
165 // Compare methods
166 // -----------------------------------------------------------------------
167 
newInstance(RefHashTableOf<KVStringPair> * const facets,RefArrayVectorOf<XMLCh> * const enums,const int finalSet,MemoryManager * const manager)168 inline DatatypeValidator* BooleanDatatypeValidator::newInstance
169 (
170       RefHashTableOf<KVStringPair>* const facets
171     , RefArrayVectorOf<XMLCh>* const      enums
172     , const int                           finalSet
173     , MemoryManager* const                manager
174 )
175 {
176     return (DatatypeValidator*) new (manager) BooleanDatatypeValidator(this, facets, enums, finalSet, manager);
177 }
178 
validate(const XMLCh * const content,ValidationContext * const context,MemoryManager * const manager)179 inline void BooleanDatatypeValidator::validate( const XMLCh*             const content
180                                               ,       ValidationContext* const context
181                                               ,       MemoryManager*     const manager)
182 {
183     checkContent(content, context, false, manager);
184 }
185 
186 XERCES_CPP_NAMESPACE_END
187 
188 #endif
189 
190 /**
191   * End of file BooleanDatatypeValidator.hpp
192   */
193 
194