/* * 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$ */ #include #include #include #include #include #include "impl/DOMImplementationImpl.hpp" #include "DOMException.hpp" XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Destructor and Constructor // --------------------------------------------------------------------------- DOMException::~DOMException() { if (msg && fMsgOwned) fMemoryManager->deallocate((void*)msg); } DOMException::DOMException() :code(0) ,msg(0) ,fMemoryManager(0) ,fMsgOwned(false) { } DOMException::DOMException(short exCode, short messageCode, MemoryManager* const memoryManager) :code(exCode) ,fMemoryManager(0) ,fMsgOwned(true) { if (memoryManager) fMemoryManager = memoryManager->getExceptionMemoryManager(); const XMLSize_t msgSize = 2047; XMLCh errText[msgSize + 1]; // load the text if(messageCode==0) messageCode=XMLDOMMsg::DOMEXCEPTION_ERRX+exCode; msg = XMLString::replicate ( DOMImplementationImpl::getMsgLoader4DOM()->loadMsg(messageCode, errText, msgSize) ? errText : XMLUni::fgDefErrMsg , fMemoryManager ); } DOMException::DOMException(const DOMException &other) :code(other.code) ,msg(0) ,fMemoryManager(other.fMemoryManager) ,fMsgOwned(other.fMsgOwned) { if (other.msg) msg = other.fMsgOwned? XMLString::replicate(other.msg, other.fMemoryManager) : other.msg; } XERCES_CPP_NAMESPACE_END