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