source: icXML/icXML-devel/src/xercesc/validators/schema/XercesAttGroupInfo.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: 4.8 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: XercesAttGroupInfo.cpp 676911 2008-07-15 13:27:32Z amassari $
20 */
21
22// ---------------------------------------------------------------------------
23//  Includes
24// ---------------------------------------------------------------------------
25#include <xercesc/validators/schema/XercesAttGroupInfo.hpp>
26#include <icxercesc/util/QName.hpp>
27
28#include <xercesc/internal/XTemplateSerializer.hpp>
29
30XERCES_CPP_NAMESPACE_BEGIN
31
32// ---------------------------------------------------------------------------
33//  XercesAttGroupInfo: Constructors and Destructor
34// ---------------------------------------------------------------------------
35XercesAttGroupInfo::XercesAttGroupInfo(MemoryManager* const manager)
36    : fTypeWithId(false)
37    , fNameId(0)
38    , fNamespaceId(0)
39    , fAttributes(0)
40    , fAnyAttributes(0)
41    , fCompleteWildCard(0)
42    , fMemoryManager(manager)
43{
44
45}
46
47XercesAttGroupInfo::XercesAttGroupInfo(unsigned int attGroupNameId,
48                                       unsigned int attGroupNamespaceId,
49                                       MemoryManager* const manager)
50    : fTypeWithId(false)
51    , fNameId(attGroupNameId)
52    , fNamespaceId(attGroupNamespaceId)
53    , fAttributes(0)
54    , fAnyAttributes(0)
55    , fCompleteWildCard(0)
56    , fMemoryManager(manager)
57{
58
59}
60
61XercesAttGroupInfo::~XercesAttGroupInfo()
62{
63    delete fAttributes;
64    delete fAnyAttributes;
65    delete fCompleteWildCard;
66}
67
68bool XercesAttGroupInfo::containsAttribute(const XMLCh* const name,
69                                           const unsigned int uri) {
70
71    if (fAttributes) {
72
73        XMLSize_t attCount = fAttributes->size();
74
75        if (attCount) {
76
77            for (XMLSize_t i=0; i < attCount; i++) {
78
79                QName* attName = fAttributes->elementAt(i)->getAttName();
80
81                if (attName->getURI() == uri &&
82                    XMLString::equals(attName->getLocalPart(),name)) {
83                    return true;
84                }
85            }
86        }
87    }
88
89    return false;
90}
91
92// ---------------------------------------------------------------------------
93//  XercesAttGroupInfo: Getter methods
94// ---------------------------------------------------------------------------
95const SchemaAttDef* XercesAttGroupInfo::getAttDef(const XMLCh* const baseName,
96                                                  const int uriId) const {
97
98    // If no list, then return a null
99    if (!fAttributes)
100        return 0;
101
102    XMLSize_t attSize = fAttributes->size();
103
104    for (XMLSize_t i=0; i<attSize; i++) {
105
106        const SchemaAttDef* attDef = fAttributes->elementAt(i);
107        QName* attName = attDef->getAttName();
108
109        if (uriId == (int) attName->getURI() &&
110                        XMLString::equals(baseName, attName->getLocalPart())) {
111
112            return attDef;
113        }
114    }
115
116    return 0;
117}
118
119/***
120 * Support for Serialization/De-serialization
121 ***/
122
123IMPL_XSERIALIZABLE_TOCREATE(XercesAttGroupInfo)
124
125void XercesAttGroupInfo::serialize(XSerializeEngine& serEng)
126{
127
128    if (serEng.isStoring())
129    {
130        serEng<<fTypeWithId;
131        serEng<<fNameId;
132        serEng<<fNamespaceId;
133
134        /***
135         *
136         * Serialize RefVectorOf<SchemaAttDef>* fAttributes;
137         *
138         ***/
139        XTemplateSerializer::storeObject(fAttributes, serEng);
140
141        /***
142         *
143         * Serialize RefVectorOf<SchemaAttDef>* fAnyAttributes;
144         *
145         ***/
146        XTemplateSerializer::storeObject(fAnyAttributes, serEng);
147
148        serEng<<fCompleteWildCard;
149    }
150    else
151    {
152        serEng>>fTypeWithId;
153        serEng>>fNameId;
154        serEng>>fNamespaceId;
155
156        /***
157         *
158         * Deserialize RefVectorOf<SchemaAttDef>* fAttributes;
159         *
160         ***/
161        XTemplateSerializer::loadObject(&fAttributes, 4, true, serEng);
162
163        /***
164         *
165         * Deserialize RefVectorOf<SchemaAttDef>* fAnyAttributes;
166         *
167         ***/
168
169        XTemplateSerializer::loadObject(&fAnyAttributes, 2, true, serEng);
170
171        serEng>>fCompleteWildCard;
172    }
173
174}
175
176XERCES_CPP_NAMESPACE_END
177
178/**
179  * End of file XercesAttGroupInfo.cpp
180  */
181
182
Note: See TracBrowser for help on using the repository browser.