xercesattgroupinfo.cpp

来自「IBM的解析xml的工具Xerces的源代码」· C++ 代码 · 共 221 行

CPP
221
字号
/* * Copyright 2001,2004 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Log: XercesAttGroupInfo.cpp,v $ * Revision 1.9  2004/09/08 13:56:58  peiyongz * Apache License Version 2.0 * * Revision 1.8  2003/11/20 17:06:05  knoaman * PSVI: store name and namespace information * * Revision 1.7  2003/11/13 23:20:47  peiyongz * initSize * * Revision 1.6  2003/10/17 21:17:12  peiyongz * using XTemplateSerializer * * Revision 1.5  2003/10/14 15:22:28  peiyongz * Implementation of Serialization/Deserialization * * Revision 1.4  2003/05/15 18:57:27  knoaman * Partial implementation of the configurable memory manager. * * Revision 1.3  2002/11/04 14:49:42  tng * C++ Namespace Support. * * Revision 1.2  2002/09/24 20:12:48  tng * Performance: use XMLString::equals instead of XMLString::compareString * * Revision 1.1.1.1  2002/02/01 22:22:50  peiyongz * sane_include * * Revision 1.4  2001/11/20 20:21:49  knoaman * Add check for attribute derviation ok when redefining attribute group by restriction. * * Revision 1.3  2001/11/20 15:57:04  knoaman * Add check for multiple attributes with type derived from ID. * * Revision 1.2  2001/08/09 15:23:17  knoaman * add support for <anyAttribute> declaration. * * Revision 1.1  2001/07/31 15:26:54  knoaman * Added support for <attributeGroup>. * */// ---------------------------------------------------------------------------//  Includes// ---------------------------------------------------------------------------#include <xercesc/validators/schema/XercesAttGroupInfo.hpp>#include <xercesc/util/QName.hpp>#include <xercesc/internal/XTemplateSerializer.hpp>XERCES_CPP_NAMESPACE_BEGIN// ---------------------------------------------------------------------------//  XercesAttGroupInfo: Constructors and Destructor// ---------------------------------------------------------------------------XercesAttGroupInfo::XercesAttGroupInfo(MemoryManager* const manager)    : fTypeWithId(false)    , fNameId(0)    , fNamespaceId(0)    , fAttributes(0)    , fAnyAttributes(0)    , fCompleteWildCard(0)    , fMemoryManager(manager){}XercesAttGroupInfo::XercesAttGroupInfo(unsigned int attGroupNameId,                                       unsigned int attGroupNamespaceId,                                       MemoryManager* const manager)    : fTypeWithId(false)    , fNameId(attGroupNameId)    , fNamespaceId(attGroupNamespaceId)    , fAttributes(0)    , fAnyAttributes(0)    , fCompleteWildCard(0)    , fMemoryManager(manager){}XercesAttGroupInfo::~XercesAttGroupInfo(){    delete fAttributes;    delete fAnyAttributes;    delete fCompleteWildCard;}bool XercesAttGroupInfo::containsAttribute(const XMLCh* const name,                                           const unsigned int uri) {    if (fAttributes) {        unsigned int attCount = fAttributes->size();        if (attCount) {            for (unsigned int i=0; i < attCount; i++) {                QName* attName = fAttributes->elementAt(i)->getAttName();                if (attName->getURI() == uri &&                    XMLString::equals(attName->getLocalPart(),name)) {                    return true;                }            }        }    }    return false;}// ---------------------------------------------------------------------------//  XercesAttGroupInfo: Getter methods// ---------------------------------------------------------------------------const SchemaAttDef* XercesAttGroupInfo::getAttDef(const XMLCh* const baseName,                                                  const int uriId) const {    // If no list, then return a null    if (!fAttributes)        return 0;    unsigned int attSize = fAttributes->size();    for (unsigned int i=0; i<attSize; i++) {        const SchemaAttDef* attDef = fAttributes->elementAt(i);        QName* attName = attDef->getAttName();        if (uriId == (int) attName->getURI() &&			XMLString::equals(baseName, attName->getLocalPart())) {            return attDef;        }    }    return 0;}/*** * Support for Serialization/De-serialization ***/IMPL_XSERIALIZABLE_TOCREATE(XercesAttGroupInfo)void XercesAttGroupInfo::serialize(XSerializeEngine& serEng){    if (serEng.isStoring())    {        serEng<<fTypeWithId;        serEng<<fNameId;        serEng<<fNamespaceId;        /***         *         * Serialize RefVectorOf<SchemaAttDef>* fAttributes;         *         ***/        XTemplateSerializer::storeObject(fAttributes, serEng);        /***         *         * Serialize RefVectorOf<SchemaAttDef>* fAnyAttributes;         *         ***/        XTemplateSerializer::storeObject(fAnyAttributes, serEng);        serEng<<fCompleteWildCard;    }    else    {        serEng>>fTypeWithId;        serEng>>fNameId;        serEng>>fNamespaceId;        /***         *         * Deserialize RefVectorOf<SchemaAttDef>* fAttributes;         *         ***/        XTemplateSerializer::loadObject(&fAttributes, 4, true, serEng);        /***         *         * Deserialize RefVectorOf<SchemaAttDef>* fAnyAttributes;         *         ***/        XTemplateSerializer::loadObject(&fAnyAttributes, 2, true, serEng);        serEng>>fCompleteWildCard;    }}XERCES_CPP_NAMESPACE_END/**  * End of file XercesAttGroupInfo.cpp  */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?