xmlelementdecl.cpp

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

CPP
171
字号
/* * Copyright 1999-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. *//** * $Id: XMLElementDecl.cpp,v 1.10 2004/09/08 13:55:58 peiyongz Exp $ */// ---------------------------------------------------------------------------//  Includes// ---------------------------------------------------------------------------#include <xercesc/framework/XMLElementDecl.hpp>#include <xercesc/util/XMLUniDefs.hpp>#include <xercesc/util/XMLUni.hpp>#include <xercesc/validators/schema/SchemaElementDecl.hpp>#include <xercesc/validators/DTD/DTDElementDecl.hpp>XERCES_CPP_NAMESPACE_BEGIN// ---------------------------------------------------------------------------//  XMLElementDecl: Public, static data// ---------------------------------------------------------------------------const unsigned int  XMLElementDecl::fgInvalidElemId    = 0xFFFFFFFE;const unsigned int  XMLElementDecl::fgPCDataElemId     = 0xFFFFFFFF;const XMLCh         XMLElementDecl::fgPCDataElemName[] ={        chPound, chLatin_P, chLatin_C, chLatin_D, chLatin_A    ,   chLatin_T, chLatin_A, chNull};// ---------------------------------------------------------------------------//  XMLElementDecl: Destructor// ---------------------------------------------------------------------------XMLElementDecl::~XMLElementDecl(){    delete fElementName;}// ---------------------------------------------------------------------------//  XMLElementDecl: Setter Methods// ---------------------------------------------------------------------------voidXMLElementDecl::setElementName(const XMLCh* const       prefix                            , const XMLCh* const        localPart                            , const int                 uriId ){    if (fElementName)        fElementName->setName(prefix, localPart, uriId);    else        fElementName = new (fMemoryManager) QName(prefix, localPart, uriId, fMemoryManager);}voidXMLElementDecl::setElementName(const XMLCh* const       rawName                            , const int                 uriId ){    if (fElementName)        fElementName->setName(rawName, uriId);    else        fElementName = new (fMemoryManager) QName(rawName, uriId, fMemoryManager);}voidXMLElementDecl::setElementName(const QName* const    elementName){    if (fElementName)        fElementName->setValues(*elementName);    else        fElementName = new (fMemoryManager) QName(*elementName);}// ---------------------------------------------------------------------------//  ElementDecl: Hidden constructors// ---------------------------------------------------------------------------XMLElementDecl::XMLElementDecl(MemoryManager* const manager) :    fMemoryManager(manager)    , fElementName(0)    , fCreateReason(XMLElementDecl::NoReason)    , fId(XMLElementDecl::fgInvalidElemId)    , fExternalElement(false){}/*** * Support for Serialization/De-serialization ***/IMPL_XSERIALIZABLE_NOCREATE(XMLElementDecl)void XMLElementDecl::serialize(XSerializeEngine& serEng){    if (serEng.isStoring())    {        serEng<<fElementName;        serEng<<(int) fCreateReason;        serEng<<fId;        serEng<<fExternalElement;    }    else    {        serEng>>fElementName;        int i;        serEng>>i;        fCreateReason=(CreateReasons)i;        serEng>>fId;        serEng>>fExternalElement;    }}void XMLElementDecl::storeElementDecl(XSerializeEngine&        serEng                               , XMLElementDecl*    const element){    if (element)    {        serEng<<(int) element->getObjectType();        serEng<<element;    }    else    {        serEng<<(int) UnKnown;    }}XMLElementDecl* XMLElementDecl::loadElementDecl(XSerializeEngine& serEng){    int type;    serEng>>type;    switch((XMLElementDecl::objectType)type)    {    case Schema:        SchemaElementDecl* schemaElementDecl;        serEng>>schemaElementDecl;        return schemaElementDecl;    case DTD:        DTDElementDecl* dtdElementDecl;        serEng>>dtdElementDecl;        return dtdElementDecl;    case UnKnown:         //fall through    default:        return 0;    }}XERCES_CPP_NAMESPACE_END

⌨️ 快捷键说明

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