1/////////////////////////////////////////////////////////////////////////// 2// 3// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas 4// Digital Ltd. LLC 5// 6// All rights reserved. 7// 8// Redistribution and use in source and binary forms, with or without 9// modification, are permitted provided that the following conditions are 10// met: 11// * Redistributions of source code must retain the above copyright 12// notice, this list of conditions and the following disclaimer. 13// * Redistributions in binary form must reproduce the above 14// copyright notice, this list of conditions and the following disclaimer 15// in the documentation and/or other materials provided with the 16// distribution. 17// * Neither the name of Industrial Light & Magic nor the names of 18// its contributors may be used to endorse or promote products derived 19// from this software without specific prior written permission. 20// 21// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32// 33/////////////////////////////////////////////////////////////////////////// 34 35 36 37//--------------------------------------------------------------------- 38// 39// Constructors and destructors for our exception base class. 40// 41//--------------------------------------------------------------------- 42 43#include "IexBaseExc.h" 44 45namespace Iex { 46namespace { 47 48 49StackTracer currentStackTracer = 0; 50 51 52} // namespace 53 54 55void 56setStackTracer (StackTracer stackTracer) 57{ 58 currentStackTracer = stackTracer; 59} 60 61 62StackTracer 63stackTracer () 64{ 65 return currentStackTracer; 66} 67 68 69BaseExc::BaseExc (const char* s) throw () : 70 std::string (s? s: ""), 71 _stackTrace (currentStackTracer? currentStackTracer(): "") 72{ 73 // empty 74} 75 76 77BaseExc::BaseExc (const std::string &s) throw () : 78 std::string (s), 79 _stackTrace (currentStackTracer? currentStackTracer(): "") 80{ 81 // empty 82} 83 84 85BaseExc::BaseExc (std::stringstream &s) throw () : 86 std::string (s.str()), 87 _stackTrace (currentStackTracer? currentStackTracer(): "") 88{ 89 // empty 90} 91 92 93BaseExc::BaseExc (const BaseExc &be) throw () : 94 std::string (be), 95 _stackTrace (be._stackTrace) 96{ 97 // empty 98} 99 100 101BaseExc::~BaseExc () throw () 102{ 103 // empty 104} 105 106 107const char * 108BaseExc::what () const throw () 109{ 110 return c_str(); 111} 112 113 114BaseExc & 115BaseExc::assign (std::stringstream &s) 116{ 117 std::string::assign (s.str()); 118 return *this; 119} 120 121BaseExc & 122BaseExc::append (std::stringstream &s) 123{ 124 std::string::append (s.str()); 125 return *this; 126} 127 128 129} // namespace Iex 130