source: NonGTP/Xerces/xercesc/framework/psvi/XSObject.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: XSObject.hpp,v $
59 * Revision 1.10  2003/12/01 23:23:26  neilg
60 * fix for bug 25118; thanks to Jeroen Witmond
61 *
62 * Revision 1.9  2003/11/25 15:10:44  jberry
63 * Eliminate some compiler warnings concerning comments inside of comments
64 *
65 * Revision 1.8  2003/11/21 17:34:04  knoaman
66 * PSVI update
67 *
68 * Revision 1.7  2003/11/15 21:18:39  neilg
69 * fixes for compilation under gcc
70 *
71 * Revision 1.6  2003/11/14 22:47:53  neilg
72 * fix bogus log message from previous commit...
73 *
74 * Revision 1.5  2003/11/14 22:33:30  neilg
75 * Second phase of schema component model implementation. 
76 * Implement XSModel, XSNamespaceItem, and the plumbing necessary
77 * to connect them to the other components.
78 * Thanks to David Cargill.
79 *
80 * Revision 1.4  2003/11/06 15:30:04  neilg
81 * 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.
82 *
83 * Revision 1.3  2003/10/24 10:59:26  gareth
84 * changed C comments to C++ comments to prevent compiler warnings.
85 *  (rephrased that message to eliminate compiler warnings on the message--this is recursive!)
86 *
87 * Revision 1.2  2003/10/10 18:37:51  neilg
88 * update XSModel and XSObject interface so that IDs can be used to query components in XSModels, and so that those IDs can be recovered from components
89 *
90 * Revision 1.1  2003/09/16 14:33:36  neilg
91 * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them
92 *
93 */
94
95#if !defined(XSOBJECT_HPP)
96#define XSOBJECT_HPP
97
98#include <xercesc/util/PlatformUtils.hpp>
99#include <xercesc/framework/psvi/XSConstants.hpp>
100
101XERCES_CPP_NAMESPACE_BEGIN
102
103/**
104 * The XSObject forms the base of the Schema Component Model.  It contains
105 * all properties common to the majority of XML Schema components.
106 * This is *always* owned by the validator /parser object from which
107 * it is obtained.  It is designed to be subclassed; subclasses will
108 * specify under what conditions it may be relied upon to have meaningful contents.
109 */
110
111// forward declarations
112class XSNamespaceItem;
113class XSModel;
114
115class XMLPARSER_EXPORT XSObject : public XMemory
116{
117public:
118
119    //  Constructors and Destructor
120    // -----------------------------------------------------------------------
121    /** @name Constructors */
122    //@{
123
124    /**
125      * The default constructor
126      *
127      * @param  compType
128      * @param  xsModel
129      * @param  manager     The configurable memory manager
130      */
131    XSObject
132    (
133        XSConstants::COMPONENT_TYPE compType
134        , XSModel* const xsModel
135        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
136    );
137
138    //@};
139
140    /** @name Destructor */
141    //@{
142    virtual ~XSObject();
143    //@}
144
145    //---------------------
146    /** @name XSObject methods */
147
148    //@{
149
150    /**
151     *  The <code>type</code> of this object, i.e.
152     * <code>ELEMENT_DECLARATION</code>.
153     */
154    XSConstants::COMPONENT_TYPE getType() const;
155
156    /**
157     * The name of type <code>NCName</code> of this declaration as defined in
158     * XML Namespaces.
159     */
160    virtual const XMLCh* getName();
161
162    /**
163     *  The [target namespace] of this object, or <code>null</code> if it is
164     * unspecified.
165     */
166    virtual const XMLCh* getNamespace();
167
168    /**
169     * A namespace schema information item corresponding to the target
170     * namespace of the component, if it's globally declared; or null
171     * otherwise.
172     */
173    virtual XSNamespaceItem *getNamespaceItem();
174
175    /**
176      * Optional.  Return a unique identifier for a component within this XSModel, to
177      * optimize querying.  May not be defined for all types of component.
178      * @return id unique for this type of component within this XSModel or 0
179      *     to indicate that this is not supported for this type of component.
180      */
181    virtual unsigned int getId() const;
182
183    //@}
184
185    //----------------------------------
186    /** methods needed by implementation */
187
188    //@{
189
190    //@}
191private:
192
193    // -----------------------------------------------------------------------
194    //  Unimplemented constructors and operators
195    // -----------------------------------------------------------------------
196    XSObject(const XSObject&);
197    XSObject & operator=(const XSObject &);
198
199protected:
200
201    // -----------------------------------------------------------------------
202    //  data members
203    // -----------------------------------------------------------------------
204    // fMemoryManager:
205    //  used for any memory allocations
206    // fComponentType
207    //  the type of the actual component
208    XSConstants::COMPONENT_TYPE fComponentType;
209    XSModel*                    fXSModel;
210    MemoryManager*              fMemoryManager;
211};
212
213inline XSConstants::COMPONENT_TYPE XSObject::getType() const
214{
215    return fComponentType;
216}
217
218XERCES_CPP_NAMESPACE_END
219
220#endif
Note: See TracBrowser for help on using the repository browser.