source: NonGTP/Xerces/xercesc/framework/psvi/XSIDCDefinition.hpp @ 188

Revision 188, 7.8 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) 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) 1999, 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 * $Log: XSIDCDefinition.hpp,v $
59 * Revision 1.6  2003/12/01 23:23:26  neilg
60 * fix for bug 25118; thanks to Jeroen Witmond
61 *
62 * Revision 1.5  2003/11/21 17:29:53  knoaman
63 * PSVI update
64 *
65 * Revision 1.4  2003/11/14 22:47:53  neilg
66 * fix bogus log message from previous commit...
67 *
68 * Revision 1.3  2003/11/14 22:33:30  neilg
69 * Second phase of schema component model implementation. 
70 * Implement XSModel, XSNamespaceItem, and the plumbing necessary
71 * to connect them to the other components.
72 * Thanks to David Cargill.
73 *
74 * Revision 1.2  2003/11/06 15:30:04  neilg
75 * first part of PSVI/schema component model implementation, thanks to David Cargill.  This covers setting the PSVIHandler on parser objects, as well as implementing XSNotation, XSSimpleTypeDefinition, XSIDCDefinition, and most of XSWildcard, XSComplexTypeDefinition, XSElementDeclaration, XSAttributeDeclaration and XSAttributeUse.
76 *
77 * Revision 1.1  2003/09/16 14:33:36  neilg
78 * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them
79 *
80 */
81
82#if !defined(XSIDCDEFINITION_HPP)
83#define XSIDCDEFINITION_HPP
84
85#include <xercesc/framework/psvi/XSObject.hpp>
86
87XERCES_CPP_NAMESPACE_BEGIN
88
89/**
90 * This class describes all properties of a Schema Identity Constraint
91 * Definition component.
92 * This is *always* owned by the validator /parser object from which
93 * it is obtained. 
94 */
95
96// forward declarations
97class XSAnnotation;
98class IdentityConstraint;
99
100class XMLPARSER_EXPORT XSIDCDefinition : public XSObject
101{
102public:
103
104    // Identity Constraints
105    enum IC_CATEGORY {
106            /**
107             *
108             */
109            IC_KEY                    = 1,
110            /**
111             *
112             */
113            IC_KEYREF                 = 2,
114            /**
115             *
116             */
117            IC_UNIQUE                 = 3
118    };
119
120    //  Constructors and Destructor
121    // -----------------------------------------------------------------------
122    /** @name Constructors */
123    //@{
124
125    /**
126      * The default constructor
127      *
128      * @param  identityConstraint
129      * @param  keyIC
130      * @param  headAnnot
131      * @param  stringList
132      * @param  xsModel
133      * @param  manager     The configurable memory manager
134      */
135    XSIDCDefinition
136    (
137        IdentityConstraint* const identityConstraint
138        , XSIDCDefinition*  const keyIC
139        , XSAnnotation* const     headAnnot
140        , StringList* const       stringList
141        , XSModel* const          xsModel
142        , MemoryManager* const    manager = XMLPlatformUtils::fgMemoryManager
143    );
144
145    //@};
146
147    /** @name Destructor */
148    //@{
149    ~XSIDCDefinition();
150    //@}
151
152    //---------------------
153    /** @name overridden XSXSObject methods */
154
155    //@{
156
157    /**
158     * The name of type <code>NCName</code> of this declaration as defined in
159     * XML Namespaces.
160     */
161    const XMLCh* getName();
162
163    /**
164     *  The [target namespace] of this object, or <code>null</code> if it is
165     * unspecified.
166     */
167    const XMLCh* getNamespace();
168
169    /**
170     * A namespace schema information item corresponding to the target
171     * namespace of the component, if it's globally declared; or null
172     * otherwise.
173     */
174    XSNamespaceItem *getNamespaceItem();
175
176    //@}
177
178    //---------------------
179    /** @name XSIDCDefinition methods */
180
181    //@{
182
183    /**
184     * [identity-constraint category]: one of IC_KEY, IC_KEYREF or IC_UNIQUE.
185     */
186    IC_CATEGORY getCategory() const;
187
188    /**
189     * [selector]: a restricted XPath expression.
190     */
191    const XMLCh *getSelectorStr();
192
193    /**
194     * [fields]: a non-empty list of restricted XPath ([XPath]) expressions.
195     */
196    StringList *getFieldStrs();
197
198    /**
199     * [referenced key]: required if [identity-constraint category] is IC_KEYREF,
200     * forbidden otherwise (when an identity-constraint definition with [
201     * identity-constraint category] equal to IC_KEY or IC_UNIQUE).
202     */
203    XSIDCDefinition *getRefKey() const;
204
205    /**
206     * A set of [annotations].
207     */
208    XSAnnotationList *getAnnotations();
209
210    //@}
211
212    //----------------------------------
213    /** methods needed by implementation */
214
215    //@{
216
217    //@}
218private:
219
220    // -----------------------------------------------------------------------
221    //  Unimplemented constructors and operators
222    // -----------------------------------------------------------------------
223    XSIDCDefinition(const XSIDCDefinition&);
224    XSIDCDefinition & operator=(const XSIDCDefinition &);
225
226protected:
227
228    // -----------------------------------------------------------------------
229    //  data members
230    // -----------------------------------------------------------------------
231    IdentityConstraint* fIdentityConstraint;
232    XSIDCDefinition*    fKey;
233    StringList*         fStringList;
234    XSAnnotationList*   fXSAnnotationList;
235};
236
237
238inline StringList* XSIDCDefinition::getFieldStrs()
239{
240    return fStringList;
241}
242
243inline XSIDCDefinition* XSIDCDefinition::getRefKey() const
244{
245    return fKey;
246}
247
248XERCES_CPP_NAMESPACE_END
249
250#endif
Note: See TracBrowser for help on using the repository browser.