source: NonGTP/Xerces/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp @ 188

Revision 188, 9.7 KB checked in by mattausch, 19 years ago (diff)

added xercesc to support

Line 
1/*
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 2001 The Apache Software Foundation.  All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in
16 *    the documentation and/or other materials provided with the
17 *    distribution.
18 *
19 * 3. The end-user documentation included with the redistribution,
20 *    if any, must include the following acknowledgment:
21 *       "This product includes software developed by the
22 *        Apache Software Foundation (http://www.apache.org/)."
23 *    Alternately, this acknowledgment may appear in the software itself,
24 *    if and wherever such third-party acknowledgments normally appear.
25 *
26 * 4. The names "Xerces" and "Apache Software Foundation" must
27 *    not be used to endorse or promote products derived from this
28 *    software without prior written permission. For written
29 *    permission, please contact apache\@apache.org.
30 *
31 * 5. Products derived from this software may not be called "Apache",
32 *    nor may "Apache" appear in their name, without prior written
33 *    permission of the Apache Software Foundation.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation, and was
51 * originally based on software copyright (c) 2001, International
52 * Business Machines, Inc., http://www.ibm.com .  For more information
53 * on the Apache Software Foundation, please see
54 * <http://www.apache.org/>.
55 */
56
57/*
58 * $Id: AbstractNumericFacetValidator.hpp,v 1.11 2004/01/29 11:51:22 cargilld Exp $
59 * $Log: AbstractNumericFacetValidator.hpp,v $
60 * Revision 1.11  2004/01/29 11:51:22  cargilld
61 * Code cleanup changes to get rid of various compiler diagnostic messages.
62 *
63 * Revision 1.10  2003/12/17 00:18:38  cargilld
64 * Update to memory management so that the static memory manager (one used to call Initialize) is only for static data.
65 *
66 * Revision 1.9  2003/11/12 20:32:03  peiyongz
67 * Statless Grammar: ValidationContext
68 *
69 * Revision 1.8  2003/10/17 21:13:24  peiyongz
70 * loadNumber() moved to XMLNumber
71 *
72 * Revision 1.7  2003/10/02 19:21:06  peiyongz
73 * Implementation of Serialization/Deserialization
74 *
75 * Revision 1.6  2003/05/15 18:53:26  knoaman
76 * Partial implementation of the configurable memory manager.
77 *
78 * Revision 1.5  2002/12/18 14:17:55  gareth
79 * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
80 *
81 * Revision 1.4  2002/11/04 14:53:27  tng
82 * C++ Namespace Support.
83 *
84 * Revision 1.3  2002/10/18 16:52:14  peiyongz
85 * Patch to Bug#13640: Getter methods not public in
86 *                                    DecimalDatatypeValidator
87 *
88 * Revision 1.2  2002/02/14 15:17:31  peiyongz
89 * getEnumString()
90 *
91 * Revision 1.1.1.1  2002/02/01 22:22:39  peiyongz
92 * sane_include
93 *
94 * Revision 1.3  2001/11/22 20:23:20  peiyongz
95 * _declspec(dllimport) and inline warning C4273
96 *
97 * Revision 1.2  2001/11/12 20:37:57  peiyongz
98 * SchemaDateTimeException defined
99 *
100 * Revision 1.1  2001/10/01 16:13:56  peiyongz
101 * DTV Reorganization:new classes: AbstractNumericFactValidator/ AbstractNumericValidator
102 *
103 */
104
105#if !defined(ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP)
106#define ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP
107
108#include <xercesc/validators/datatype/DatatypeValidator.hpp>
109#include <xercesc/util/RefArrayVectorOf.hpp>
110#include <xercesc/util/XMLNumber.hpp>
111
112XERCES_CPP_NAMESPACE_BEGIN
113
114class VALIDATORS_EXPORT AbstractNumericFacetValidator : public DatatypeValidator
115{
116public:
117
118    // -----------------------------------------------------------------------
119    //  Public ctor/dtor
120    // -----------------------------------------------------------------------
121        /** @name Constructor. */
122    //@{
123
124    virtual ~AbstractNumericFacetValidator();
125
126        //@}
127
128        virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;
129
130    /***
131     * Support for Serialization/De-serialization
132     ***/
133    DECL_XSERIALIZABLE(AbstractNumericFacetValidator)
134
135protected:
136
137    AbstractNumericFacetValidator
138    (
139        DatatypeValidator* const baseValidator
140        , RefHashTableOf<KVStringPair>* const facets
141        , const int finalSet
142        , const ValidatorType type
143        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
144    );
145
146    void init(RefArrayVectorOf<XMLCh>*  const enums
147        , MemoryManager* const manager);
148
149    //
150    // Abstract interface
151    //
152    virtual void assignAdditionalFacet(const XMLCh* const key
153                                     , const XMLCh* const value
154                                     , MemoryManager* const manager);
155
156    virtual void inheritAdditionalFacet();
157
158    virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const;
159
160    virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const;
161
162    virtual int  compareValues(const XMLNumber* const lValue
163                             , const XMLNumber* const rValue) = 0;
164
165    virtual void checkContent(const XMLCh*             const content
166                            ,       ValidationContext* const context
167                            , bool                           asBase
168                            ,       MemoryManager*     const manager) = 0;
169
170// -----------------------------------------------------------------------
171// Setter methods
172// -----------------------------------------------------------------------
173
174    virtual void  setMaxInclusive(const XMLCh* const) = 0;
175
176    virtual void  setMaxExclusive(const XMLCh* const) = 0;
177
178    virtual void  setMinInclusive(const XMLCh* const) = 0;
179
180    virtual void  setMinExclusive(const XMLCh* const) = 0;
181
182    virtual void  setEnumeration(MemoryManager* const manager) = 0;
183
184    static const int INDETERMINATE;
185
186public:
187// -----------------------------------------------------------------------
188// Getter methods
189// -----------------------------------------------------------------------
190
191    inline XMLNumber* const            getMaxInclusive() const;
192
193    inline XMLNumber* const            getMaxExclusive() const;
194
195    inline XMLNumber* const            getMinInclusive() const;
196
197    inline XMLNumber* const            getMinExclusive() const;
198
199    inline RefVectorOf<XMLNumber>*     getEnumeration() const;
200
201protected:
202    // -----------------------------------------------------------------------
203    //  Protected data members
204    //
205    //      Allow access to derived class
206    //
207    // -----------------------------------------------------------------------
208    bool                     fMaxInclusiveInherited;
209    bool                     fMaxExclusiveInherited;
210    bool                     fMinInclusiveInherited;
211    bool                     fMinExclusiveInherited;
212    bool                     fEnumerationInherited;
213
214    XMLNumber*               fMaxInclusive;
215    XMLNumber*               fMaxExclusive;
216    XMLNumber*               fMinInclusive;
217    XMLNumber*               fMinExclusive;
218
219    RefVectorOf<XMLNumber>*  fEnumeration;    // save the actual value
220    RefArrayVectorOf<XMLCh>*      fStrEnumeration;
221
222private:
223
224    void assignFacet(MemoryManager* const manager);
225
226    void inspectFacet(MemoryManager* const manager);
227
228    void inspectFacetBase(MemoryManager* const manager);
229
230    void inheritFacet();
231
232    // -----------------------------------------------------------------------
233    //  Unimplemented constructors and operators
234    // -----------------------------------------------------------------------
235    AbstractNumericFacetValidator(const AbstractNumericFacetValidator&);
236    AbstractNumericFacetValidator& operator=(const AbstractNumericFacetValidator&);
237};
238
239// -----------------------------------------------------------------------
240// Getter methods
241// -----------------------------------------------------------------------
242
243inline XMLNumber* const AbstractNumericFacetValidator::getMaxInclusive() const
244{
245    return fMaxInclusive;
246}
247
248inline XMLNumber* const AbstractNumericFacetValidator::getMaxExclusive() const
249{
250    return fMaxExclusive;
251}
252
253inline XMLNumber* const AbstractNumericFacetValidator::getMinInclusive() const
254{
255    return fMinInclusive;
256}
257
258inline XMLNumber* const AbstractNumericFacetValidator::getMinExclusive() const
259{
260    return fMinExclusive;
261}
262
263inline RefVectorOf<XMLNumber>* AbstractNumericFacetValidator::getEnumeration() const
264{
265    return fEnumeration;
266}
267
268XERCES_CPP_NAMESPACE_END
269
270#endif
271
272/**
273  * End of file AbstractNumericFacetValidator.hpp
274  */
Note: See TracBrowser for help on using the repository browser.