source: icXML/icXML-devel/src/xercesc/framework/psvi/XSNamespaceItem.cpp @ 2722

Last change on this file since 2722 was 2722, checked in by cameron, 6 years ago

Original Xerces files with import mods for icxercesc

File size: 7.3 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * $Id: XSNamespaceItem.cpp 674012 2008-07-04 11:18:21Z borisk $
20 */
21
22#include <xercesc/framework/psvi/XSNamespaceItem.hpp>
23#include <xercesc/validators/schema/SchemaGrammar.hpp>
24#include <xercesc/framework/psvi/XSModel.hpp>
25#include <xercesc/framework/psvi/XSAnnotation.hpp>
26#include <xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp>
27
28XERCES_CPP_NAMESPACE_BEGIN
29
30// ---------------------------------------------------------------------------
31//  XSNamespaceItem: Constructors and Destructors
32// ---------------------------------------------------------------------------
33XSNamespaceItem::XSNamespaceItem(XSModel* const       xsModel,
34                                 SchemaGrammar* const grammar,
35                                 MemoryManager* const manager)
36    : fMemoryManager(manager)
37    , fGrammar(grammar)
38    , fXSModel(xsModel)
39    , fXSAnnotationList(0)
40    , fSchemaNamespace(grammar->getTargetNamespace())
41{
42    // Populate XSNamedMaps by going through the components
43    for (XMLSize_t i=0; i<XSConstants::MULTIVALUE_FACET; i++)
44    {
45        switch (i+1)
46        {
47            case XSConstants::ATTRIBUTE_DECLARATION:
48            case XSConstants::ELEMENT_DECLARATION:
49            case XSConstants::TYPE_DEFINITION:
50            case XSConstants::ATTRIBUTE_GROUP_DEFINITION:
51            case XSConstants::MODEL_GROUP_DEFINITION:
52            case XSConstants::NOTATION_DECLARATION:
53                fComponentMap[i] = new (fMemoryManager) XSNamedMap<XSObject>
54                (
55                    20,     // size
56                    29,     // modulus
57                    fXSModel->getURIStringPool(),
58                    false,  // adoptElems
59                    fMemoryManager
60                );
61                fHashMap[i] = new (fMemoryManager) RefHashTableOf<XSObject>
62                (
63                    29,
64                    false,
65                    fMemoryManager
66                );
67                break;
68            default:
69                // ATTRIBUTE_USE
70                // MODEL_GROUP
71                // PARTICLE
72                // IDENTITY_CONSTRAINT
73                // WILDCARD
74                // ANNOTATION
75                // FACET
76                // MULTIVALUE
77                fComponentMap[i] = 0;
78                fHashMap[i] = 0;
79                break;
80        }
81    }
82
83    fXSAnnotationList = new (manager) RefVectorOf <XSAnnotation> (5, false, manager);
84}
85
86XSNamespaceItem::XSNamespaceItem(XSModel* const       xsModel,
87                                 const XMLCh* const   schemaNamespace,
88                                 MemoryManager* const manager)
89    : fMemoryManager(manager)
90    , fGrammar(0)
91    , fXSModel(xsModel)
92    , fXSAnnotationList(0)
93    , fSchemaNamespace(schemaNamespace)
94{
95    // Populate XSNamedMaps by going through the components
96    for (XMLSize_t i=0; i<XSConstants::MULTIVALUE_FACET; i++)
97    {
98        switch (i+1)
99        {
100            case XSConstants::ATTRIBUTE_DECLARATION:
101            case XSConstants::ELEMENT_DECLARATION:
102            case XSConstants::TYPE_DEFINITION:
103            case XSConstants::ATTRIBUTE_GROUP_DEFINITION:
104            case XSConstants::MODEL_GROUP_DEFINITION:
105            case XSConstants::NOTATION_DECLARATION:
106                fComponentMap[i] = new (fMemoryManager) XSNamedMap<XSObject>
107                (
108                    20,     // size
109                    29,     // modulus
110                    fXSModel->getURIStringPool(),
111                    false,  // adoptElems
112                    fMemoryManager
113                );
114                fHashMap[i] = new (fMemoryManager) RefHashTableOf<XSObject>
115                (
116                    29,
117                    false,
118                    fMemoryManager
119                );
120                break;
121            default:
122                // ATTRIBUTE_USE
123                // MODEL_GROUP
124                // PARTICLE
125                // IDENTITY_CONSTRAINT
126                // WILDCARD
127                // ANNOTATION
128                // FACET
129                // MULTIVALUE
130                fComponentMap[i] = 0;
131                fHashMap[i] = 0;
132                break;
133        }
134    }
135
136    fXSAnnotationList = new (manager) RefVectorOf <XSAnnotation> (5, false, manager);
137}
138
139XSNamespaceItem::~XSNamespaceItem()
140{
141    for (XMLSize_t i=0; i<XSConstants::MULTIVALUE_FACET; i++)
142    {
143        switch (i+1)
144        {
145            case XSConstants::ATTRIBUTE_DECLARATION:
146            case XSConstants::ELEMENT_DECLARATION:
147            case XSConstants::TYPE_DEFINITION:
148            case XSConstants::ATTRIBUTE_GROUP_DEFINITION:
149            case XSConstants::MODEL_GROUP_DEFINITION:
150            case XSConstants::NOTATION_DECLARATION:
151                delete fComponentMap[i];
152                delete fHashMap[i];
153                break;
154        }
155    }
156
157    delete fXSAnnotationList;
158}
159
160// ---------------------------------------------------------------------------
161//  XSNamespaceItem: access methods
162// ---------------------------------------------------------------------------
163XSNamedMap<XSObject> *XSNamespaceItem::getComponents(XSConstants::COMPONENT_TYPE objectType)
164{
165    return fComponentMap[objectType -1];
166}
167
168XSElementDeclaration *XSNamespaceItem::getElementDeclaration(const XMLCh *name)
169{
170    if (name)
171        return (XSElementDeclaration*) fHashMap[XSConstants::ELEMENT_DECLARATION -1]->get(name);
172    return 0;
173}
174
175XSAttributeDeclaration *XSNamespaceItem::getAttributeDeclaration(const XMLCh *name)
176{
177    if (name)
178        return (XSAttributeDeclaration*) fHashMap[XSConstants::ATTRIBUTE_DECLARATION -1]->get(name);
179    return 0;
180}
181
182XSTypeDefinition *XSNamespaceItem::getTypeDefinition(const XMLCh *name)
183{
184    if (name)
185        return (XSTypeDefinition*) fHashMap[XSConstants::TYPE_DEFINITION -1]->get(name);
186    return 0;
187}
188
189XSAttributeGroupDefinition *XSNamespaceItem::getAttributeGroup(const XMLCh *name)
190{
191    if (name)
192        return (XSAttributeGroupDefinition*) fHashMap[XSConstants::ATTRIBUTE_GROUP_DEFINITION -1]->get(name);
193    return 0;
194}
195
196XSModelGroupDefinition *XSNamespaceItem::getModelGroupDefinition(const XMLCh *name)
197{
198    if (name)
199        return (XSModelGroupDefinition*) fHashMap[XSConstants::MODEL_GROUP_DEFINITION -1]->get(name);
200    return 0;
201}
202
203XSNotationDeclaration *XSNamespaceItem::getNotationDeclaration(const XMLCh *name)
204{
205    if (name)
206        return (XSNotationDeclaration*) fHashMap[XSConstants::NOTATION_DECLARATION -1]->get(name);
207    return 0;
208}
209
210const StringList *XSNamespaceItem::getDocumentLocations()
211{
212    if (fGrammar)
213        return ((XMLSchemaDescriptionImpl*) fGrammar->getGrammarDescription())->getLocationHints();
214
215    return 0;
216}
217
218XERCES_CPP_NAMESPACE_END
Note: See TracBrowser for help on using the repository browser.