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: AbstractNumericValidator.hpp 527149 2007-04-10 14:56:39Z amassari $
20  */
21 
22 #if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP)
23 #define XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP
24 
25 #include <xercesc/validators/datatype/AbstractNumericFacetValidator.hpp>
26 #include <xercesc/util/RefVectorOf.hpp>
27 
28 XERCES_CPP_NAMESPACE_BEGIN
29 
30 class VALIDATORS_EXPORT AbstractNumericValidator : public AbstractNumericFacetValidator
31 {
32 public:
33 
34     // -----------------------------------------------------------------------
35     //  Public ctor/dtor
36     // -----------------------------------------------------------------------
37 	/** @name Constructor. */
38     //@{
39 
40     virtual ~AbstractNumericValidator();
41 
42 	//@}
43 
44 	virtual void validate
45                  (
46                   const XMLCh*             const content
47                 ,       ValidationContext* const context = 0
48                 ,       MemoryManager*     const manager = XMLPlatformUtils::fgMemoryManager
49                   );
50 
51     virtual const XMLCh* getCanonicalRepresentation
52                         (
53                           const XMLCh*         const rawData
54                         ,       MemoryManager* const memMgr = 0
55                         ,       bool                 toValidate = false
56                         ) const;
57 
58     /***
59      * Support for Serialization/De-serialization
60      ***/
61     DECL_XSERIALIZABLE(AbstractNumericValidator)
62 
63 protected:
64 
65     AbstractNumericValidator
66     (
67         DatatypeValidator* const baseValidator
68         , RefHashTableOf<KVStringPair>* const facets
69         , const int finalSet
70         , const ValidatorType type
71         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
72     );
73 
74     inline void init(RefArrayVectorOf<XMLCh>*  const enums
75         , MemoryManager* const manager);
76 
77     //
78     // Abstract interface
79     //
80     virtual void checkContent(const XMLCh*             const content
81                             ,       ValidationContext* const context
82                             , bool                           asBase
83                             , MemoryManager* const manager) = 0;
84 
85     void boundsCheck(const XMLNumber* const
86                     , MemoryManager* const manager);
87 
88 private:
89 
90     // -----------------------------------------------------------------------
91     //  Unimplemented constructors and operators
92     // -----------------------------------------------------------------------
93     AbstractNumericValidator(const AbstractNumericValidator&);
94     AbstractNumericValidator& operator=(const AbstractNumericValidator&);
95 };
96 
init(RefArrayVectorOf<XMLCh> * const enums,MemoryManager * const manager)97 inline void AbstractNumericValidator::init(RefArrayVectorOf<XMLCh>*  const enums
98                                            , MemoryManager* const manager)
99 {
100     AbstractNumericFacetValidator::init(enums, manager);
101 }
102 
103 XERCES_CPP_NAMESPACE_END
104 
105 #endif
106 
107 /**
108   * End of file AbstractNumericValidator.hpp
109   */
110