/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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$ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include 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 // --------------------------------------------------------------------------- void XMLElementDecl::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); } void XMLElementDecl::setElementName(const XMLCh* const rawName , const int uriId ) { if (fElementName) fElementName->setName(rawName, uriId); else fElementName = new (fMemoryManager) QName(rawName, uriId, fMemoryManager); } void XMLElementDecl::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; int i; serEng>>i; fCreateReason=(CreateReasons)i; serEng.readSize (fId); serEng>>fExternalElement; } } void XMLElementDecl::storeElementDecl(XSerializeEngine& serEng , XMLElementDecl* const element) { if (element) { serEng<<(int) element->getObjectType(); 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