source: trunk/VUT/GtpVisibilityPreprocessor/support/xercesc/validators/datatype/DecimalDatatypeValidator.hpp @ 188

Revision 188, 11.2 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-2003 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: DecimalDatatypeValidator.hpp,v 1.14 2004/01/29 11:51:22 cargilld Exp $
59 * $Log: DecimalDatatypeValidator.hpp,v $
60 * Revision 1.14  2004/01/29 11:51:22  cargilld
61 * Code cleanup changes to get rid of various compiler diagnostic messages.
62 *
63 * Revision 1.13  2003/12/23 21:50:36  peiyongz
64 * Absorb exception thrown in getCanonicalRepresentation and return 0,
65 * only validate when required
66 *
67 * Revision 1.11  2003/12/17 00:18:38  cargilld
68 * Update to memory management so that the static memory manager (one used to call Initialize) is only for static data.
69 *
70 * Revision 1.10  2003/11/28 18:53:07  peiyongz
71 * Support for getCanonicalRepresentation
72 *
73 * Revision 1.9  2003/11/12 20:32:03  peiyongz
74 * Statless Grammar: ValidationContext
75 *
76 * Revision 1.8  2003/10/02 19:21:06  peiyongz
77 * Implementation of Serialization/Deserialization
78 *
79 * Revision 1.7  2003/08/14 03:00:11  knoaman
80 * Code refactoring to improve performance of validation.
81 *
82 * Revision 1.6  2003/05/22 02:10:52  knoaman
83 * Default the memory manager.
84 *
85 * Revision 1.5  2003/05/15 18:53:26  knoaman
86 * Partial implementation of the configurable memory manager.
87 *
88 * Revision 1.4  2002/12/18 14:17:55  gareth
89 * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf.
90 *
91 * Revision 1.3  2002/11/04 14:53:28  tng
92 * C++ Namespace Support.
93 *
94 * Revision 1.2  2002/10/17 20:49:05  peiyongz
95 * Patch to Bug#13640: Getter methods not public in DecimalDatatypeValidator
96 *
97 * Revision 1.1.1.1  2002/02/01 22:22:41  peiyongz
98 * sane_include
99 *
100 * Revision 1.10  2001/11/22 20:23:20  peiyongz
101 * _declspec(dllimport) and inline warning C4273
102 *
103 * Revision 1.9  2001/10/09 20:52:43  peiyongz
104 * init():removed
105 *
106 * Revision 1.8  2001/10/01 21:04:40  peiyongz
107 * DTV Reorganization:fix to memory leak in compare() method.
108 *
109 * Revision 1.7  2001/10/01 16:16:38  peiyongz
110 * DTV Reorganization:derived from AbstractNumericValidator
111 *
112 */
113
114#if !defined(DECIMAL_DATATYPEVALIDATOR_HPP)
115#define DECIMAL_DATATYPEVALIDATOR_HPP
116
117#include <xercesc/validators/datatype/AbstractNumericValidator.hpp>
118#include <xercesc/util/RefVectorOf.hpp>
119
120XERCES_CPP_NAMESPACE_BEGIN
121
122class XMLBigDecimal;
123
124class VALIDATORS_EXPORT DecimalDatatypeValidator : public AbstractNumericValidator
125{
126public:
127
128    // -----------------------------------------------------------------------
129    //  Public ctor/dtor
130    // -----------------------------------------------------------------------
131        /** @name Constructors and Destructor */
132    //@{
133
134    DecimalDatatypeValidator
135    (
136        MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
137    );
138    DecimalDatatypeValidator
139    (
140        DatatypeValidator* const baseValidator
141        , RefHashTableOf<KVStringPair>* const facets
142        , RefArrayVectorOf<XMLCh>* const enums
143        , const int finalSet
144        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
145    );
146    virtual ~DecimalDatatypeValidator();
147
148        //@}
149
150    // -----------------------------------------------------------------------
151    // Compare methods
152    // -----------------------------------------------------------------------
153    /** @name Compare Function */
154    //@{
155
156    /**
157     * Compare two boolean data types
158     *
159     * @param content1
160     * @param content2
161     * @return
162     */
163    virtual int compare(const XMLCh* const, const XMLCh* const
164        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
165        );
166
167    //@}
168
169    /**
170      * Returns an instance of the base datatype validator class
171          * Used by the DatatypeValidatorFactory.
172      */
173    virtual DatatypeValidator* newInstance
174    (
175        RefHashTableOf<KVStringPair>* const facets
176        , RefArrayVectorOf<XMLCh>* const enums
177        , const int finalSet
178        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
179    );
180
181    virtual const XMLCh* getCanonicalRepresentation
182                        (
183                          const XMLCh*         const rawData
184                        ,       MemoryManager* const memMgr = 0
185                        ,       bool                 toValidate = false
186                        ) const;
187
188    /***
189     * Support for Serialization/De-serialization
190     ***/
191    DECL_XSERIALIZABLE(DecimalDatatypeValidator)
192
193protected:
194
195// -----------------------------------------------------------------------
196// ctor provided to be used by derived classes
197// -----------------------------------------------------------------------
198    DecimalDatatypeValidator
199    (
200        DatatypeValidator* const baseValidator
201        , RefHashTableOf<KVStringPair>* const facets
202        , const int finalSet
203        , const ValidatorType type
204        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
205    );
206
207// -----------------------------------------------------------------------
208// Abstract interface from AbstractNumericFacetValidator
209// -----------------------------------------------------------------------
210
211    virtual void assignAdditionalFacet(const XMLCh* const key
212                                     , const XMLCh* const value
213                                     , MemoryManager* const manager);
214
215    virtual void inheritAdditionalFacet();
216
217    virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const;
218
219    virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const;
220
221    virtual int  compareValues(const XMLNumber* const lValue
222                             , const XMLNumber* const rValue);
223
224    virtual void  setMaxInclusive(const XMLCh* const);
225
226    virtual void  setMaxExclusive(const XMLCh* const);
227
228    virtual void  setMinInclusive(const XMLCh* const);
229
230    virtual void  setMinExclusive(const XMLCh* const);
231
232    virtual void  setEnumeration(MemoryManager* const manager);
233
234// -----------------------------------------------------------------------
235// Abstract interface from AbstractNumericValidator
236// -----------------------------------------------------------------------
237
238    virtual void checkContent(const XMLCh*             const content
239                            ,       ValidationContext* const context
240                            , bool                           asBase
241                            ,       MemoryManager*     const manager);
242public:
243
244// -----------------------------------------------------------------------
245// Getter methods
246// -----------------------------------------------------------------------
247
248    inline unsigned int                    getTotalDigits() const;
249
250    inline unsigned int                    getFractionDigits() const;
251
252private:
253// -----------------------------------------------------------------------
254// Setter methods
255// -----------------------------------------------------------------------
256
257    inline void  setTotalDigits(unsigned int);
258
259    inline void  setFractionDigits(unsigned int);
260
261    // -----------------------------------------------------------------------
262    //  Private data members
263    //
264    // -----------------------------------------------------------------------
265    unsigned int         fTotalDigits;
266    unsigned int         fFractionDigits;
267
268
269    // -----------------------------------------------------------------------
270    //  Unimplemented constructors and operators
271    // -----------------------------------------------------------------------
272    DecimalDatatypeValidator(const DecimalDatatypeValidator&);
273    DecimalDatatypeValidator& operator=(const DecimalDatatypeValidator&);
274};
275
276// -----------------------------------------------------------------------
277// Getter methods
278// -----------------------------------------------------------------------
279
280inline unsigned int DecimalDatatypeValidator::getTotalDigits() const
281{
282    return fTotalDigits;
283}
284
285inline unsigned int DecimalDatatypeValidator::getFractionDigits() const
286{
287    return fFractionDigits;
288}
289
290// -----------------------------------------------------------------------
291// Setter methods
292// -----------------------------------------------------------------------
293
294inline void DecimalDatatypeValidator::setTotalDigits(unsigned int newTotalDigits)
295{
296    fTotalDigits = newTotalDigits;
297}
298
299inline void DecimalDatatypeValidator::setFractionDigits(unsigned int newFractionDigits)
300{
301    fFractionDigits = newFractionDigits;
302}
303
304XERCES_CPP_NAMESPACE_END
305
306#endif
307
308/**
309  * End of file DecimalDatatypeValidator.hpp
310  */
Note: See TracBrowser for help on using the repository browser.