source: NonGTP/Xerces/xercesc/validators/schema/identity/IdentityConstraint.hpp @ 188

Revision 188, 9.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: IdentityConstraint.hpp,v 1.7 2003/11/14 22:35:09 neilg Exp $
59 */
60
61#if !defined(IDENTITYCONSTRAINT_HPP)
62#define IDENTITYCONSTRAINT_HPP
63
64
65/**
66  * The class act as a base class for schema identity constraints.
67  */
68
69// ---------------------------------------------------------------------------
70//  Includes
71// ---------------------------------------------------------------------------
72#include <xercesc/util/RefVectorOf.hpp>
73#include <xercesc/validators/schema/identity/IC_Field.hpp>
74
75#include <xercesc/internal/XSerializable.hpp>
76
77XERCES_CPP_NAMESPACE_BEGIN
78
79// ---------------------------------------------------------------------------
80//  Forward Declarations
81// ---------------------------------------------------------------------------
82class IC_Selector;
83
84class VALIDATORS_EXPORT IdentityConstraint : public XSerializable, public XMemory
85{
86public:
87    // -----------------------------------------------------------------------
88    //  Constants
89    // -----------------------------------------------------------------------
90    enum ICType {
91        UNIQUE = 0,
92        KEY = 1,
93        KEYREF = 2,
94        UNKNOWN
95    };
96
97    // -----------------------------------------------------------------------
98    //  Constructors/Destructor
99    // -----------------------------------------------------------------------
100        virtual ~IdentityConstraint();
101
102    // -----------------------------------------------------------------------
103    //  operators
104    // -----------------------------------------------------------------------
105    bool operator== (const IdentityConstraint& other) const;
106    bool operator!= (const IdentityConstraint& other) const;
107
108        // -----------------------------------------------------------------------
109    //  Getter methods
110    // -----------------------------------------------------------------------
111    virtual short getType() const = 0;
112    int           getFieldCount() const;
113    XMLCh*        getIdentityConstraintName() const;
114    XMLCh*        getElementName() const;
115    IC_Selector*  getSelector() const;
116    int           getNamespaceURI() const;
117
118        // -----------------------------------------------------------------------
119    //  Setter methods
120    // -----------------------------------------------------------------------
121    void setSelector(IC_Selector* const selector);
122    void setNamespaceURI(int uri);
123
124        // -----------------------------------------------------------------------
125    //  Access methods
126    // -----------------------------------------------------------------------
127    void addField(IC_Field* const field);
128    const IC_Field* getFieldAt(const unsigned int index) const;
129    IC_Field* getFieldAt(const unsigned int index);
130
131    /***
132     * Support for Serialization/De-serialization
133     ***/
134    DECL_XSERIALIZABLE(IdentityConstraint)
135
136        static void                storeIC(XSerializeEngine&         serEng
137                                     , IdentityConstraint* const ic);
138
139        static IdentityConstraint* loadIC(XSerializeEngine& serEng);
140
141protected:
142    // -----------------------------------------------------------------------
143    //  Constructors/Destructor
144    // -----------------------------------------------------------------------
145    IdentityConstraint(const XMLCh* const identityConstraintName,
146                       const XMLCh* const elementName,
147                                           MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
148
149private:
150    // -----------------------------------------------------------------------
151    //  Unimplemented contstructors and operators
152    // -----------------------------------------------------------------------
153    IdentityConstraint(const IdentityConstraint& other);
154    IdentityConstraint& operator= (const IdentityConstraint& other);
155
156    // -----------------------------------------------------------------------
157    //  CleanUp methods
158    // -----------------------------------------------------------------------
159    void cleanUp();
160
161    // -----------------------------------------------------------------------
162    //  Data members
163    //
164    //  fIdentityConstraintName
165    //      The identity constraint name
166    //
167    //  fElemName
168    //      The element name
169    //
170    //  fSelector
171    //      The selector information
172    //
173    //  fFields
174    //      The field(s) information
175    // -----------------------------------------------------------------------
176    XMLCh*                 fIdentityConstraintName;
177    XMLCh*                 fElemName;
178    IC_Selector*           fSelector;
179    RefVectorOf<IC_Field>* fFields;
180    MemoryManager*         fMemoryManager;
181    int                    fNamespaceURI;
182};
183
184
185// ---------------------------------------------------------------------------
186//  IdentityConstraint: Getter methods
187// ---------------------------------------------------------------------------
188inline int IdentityConstraint::getFieldCount() const {
189
190    if (fFields) {
191        return fFields->size();
192    }
193
194    return 0;
195}
196
197inline XMLCh* IdentityConstraint::getIdentityConstraintName() const {
198
199    return fIdentityConstraintName;
200}
201
202inline XMLCh* IdentityConstraint::getElementName() const {
203
204    return fElemName;
205}
206
207inline IC_Selector* IdentityConstraint::getSelector() const {
208
209    return fSelector;
210}
211
212inline int IdentityConstraint::getNamespaceURI() const
213{
214    return fNamespaceURI;
215}
216
217// ---------------------------------------------------------------------------
218//  IdentityConstraint: Setter methods
219// ---------------------------------------------------------------------------
220inline void IdentityConstraint::setNamespaceURI(int uri)
221{
222    fNamespaceURI = uri;
223}
224
225// ---------------------------------------------------------------------------
226//  IdentityConstraint: Access methods
227// ---------------------------------------------------------------------------
228inline void IdentityConstraint::addField(IC_Field* const field) {
229
230    if (!fFields) {
231        fFields = new (fMemoryManager) RefVectorOf<IC_Field>(4, true, fMemoryManager);
232    }
233
234    fFields->addElement(field);
235}
236
237inline const IC_Field* IdentityConstraint::getFieldAt(const unsigned int index) const {
238
239    if (fFields) {
240        return (fFields->elementAt(index));
241    }
242
243    return 0;
244}
245
246inline IC_Field* IdentityConstraint::getFieldAt(const unsigned int index) {
247
248    if (fFields) {
249        return (fFields->elementAt(index));
250    }
251
252    return 0;
253}
254
255XERCES_CPP_NAMESPACE_END
256
257#endif
258
259/**
260  * End of file IdentityConstraint.hpp
261  */
262
Note: See TracBrowser for help on using the repository browser.