summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/Exception.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2016-05-09 19:30:54 -0400
committerBernard Normier <bernard@zeroc.com>2016-05-09 19:30:54 -0400
commitdb4206bee14d8cd4e53e82e2848ae8cbc1cb47a2 (patch)
tree2c534974d2fa0c302c8fada7f55c1c92cc5414e0 /cpp/src/IceUtil/Exception.cpp
parentConflict fixes from previous commit (diff)
downloadice-db4206bee14d8cd4e53e82e2848ae8cbc1cb47a2.tar.bz2
ice-db4206bee14d8cd4e53e82e2848ae8cbc1cb47a2.tar.xz
ice-db4206bee14d8cd4e53e82e2848ae8cbc1cb47a2.zip
Removed libIceUtil and libSlice
Diffstat (limited to 'cpp/src/IceUtil/Exception.cpp')
-rw-r--r--cpp/src/IceUtil/Exception.cpp979
1 files changed, 0 insertions, 979 deletions
diff --git a/cpp/src/IceUtil/Exception.cpp b/cpp/src/IceUtil/Exception.cpp
deleted file mode 100644
index b0c25c75324..00000000000
--- a/cpp/src/IceUtil/Exception.cpp
+++ /dev/null
@@ -1,979 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-#if defined(_MSC_VER) && _MSC_VER >= 1700
-//
-// DbgHelp.dll on Windows XP does not contain Unicode functions, so we
-// "switch on" Unicode only with VS2012 and up
-//
-# ifndef UNICODE
-# define UNICODE
-# endif
-# ifndef _UNICODE
-# define _UNICODE
-# endif
-#endif
-
-//
-// For UINTPTR_MAX on Ubuntu Precise
-//
-#ifndef __STDC_LIMIT_MACROS
-# define __STDC_LIMIT_MACROS
-#endif
-
-#include <IceUtil/Exception.h>
-#include <IceUtil/MutexPtrLock.h>
-#include <IceUtil/Mutex.h>
-#include <IceUtil/StringUtil.h>
-#include <ostream>
-#include <iomanip>
-#include <cstdlib>
-
-#ifdef __GNUC__
-# if defined(ICE_LIBBACKTRACE)
-# include <backtrace.h>
-# include <backtrace-supported.h>
-# if BACKTRACE_SUPPORTED && BACKTRACE_SUPPORTS_THREADS
-# include <algorithm>
-# include <cxxabi.h>
-# else
- // It's available but we cant' use it - shouldn't happen
-# undef ICE_LIBBACKTRACE
-# endif
-# endif
-
-# if !defined(__sun) && !defined(__FreeBSD__) && !defined(__MINGW32__) && !defined(ICE_STATIC_LIBS)
-# include <execinfo.h>
-# include <cxxabi.h>
-# include <stdint.h>
-# define ICE_BACKTRACE
-# endif
-#endif
-
-#if defined(_WIN32) && !defined(ICE_OS_WINRT) && !defined(__MINGW32__)
-# define ICE_DBGHELP
-# if defined(_MSC_VER) && (_MSC_VER >= 1700)
-# define DBGHELP_TRANSLATE_TCHAR
-# include <IceUtil/StringConverter.h>
-# if _MSC_VER >= 1900
-# pragma warning(disable:4091) // VS 2015 RC issues this warning for code in DbgHelp.h
-# endif
-# endif
-# include <DbgHelp.h>
-# include <tchar.h>
-#endif
-
-using namespace std;
-
-namespace IceUtilInternal
-{
-
-bool ICE_UTIL_API printStackTraces = false;
-bool ICE_UTIL_API nullHandleAbort = false;
-
-StackTraceImpl
-stackTraceImpl()
-{
-#if defined(ICE_DBGHELP)
- return STDbghelp;
-#elif defined(ICE_LIBBACKTRACE)
-# if defined(ICE_BACKTRACE)
- return STLibbacktracePlus;
-# else
- return STLibbacktrace;
-# endif
-#elif defined(ICE_BACKTRACE)
- return STBacktrace;
-#else
- return STNone;
-#endif
-}
-}
-
-namespace
-{
-
-IceUtil::Mutex* globalMutex = 0;
-
-#ifdef ICE_DBGHELP
-HANDLE process = 0;
-#endif
-
-#ifdef ICE_LIBBACKTRACE
-backtrace_state* bstate = 0;
-
-void
-ignoreErrorCallback(void*, const char* msg, int errnum)
-{
- // cerr << "Error callback: " << msg << ", errnum = " << errnum << endl;
-}
-
-#endif
-
-class Init
-{
-public:
-
- Init()
- {
- globalMutex = new IceUtil::Mutex;
-#ifdef ICE_LIBBACKTRACE
- // Leaked, as libbacktrace does not provide an API to free
- // this state
- bstate = backtrace_create_state(0, 1, ignoreErrorCallback, 0);
-#endif
- }
-
- ~Init()
- {
- delete globalMutex;
- globalMutex = 0;
-#ifdef ICE_DBGHELP
- if(process != 0)
- {
- SymCleanup(process);
- process = 0;
- }
-#endif
- }
-};
-
-Init init;
-
-#if defined(ICE_LIBBACKTRACE) || defined (ICE_BACKTRACE)
-
-struct FrameInfo
-{
- FrameInfo(int i, uintptr_t p) :
- index(i),
- pc(p),
- fallback(0),
- setByErrorCb(false)
- {
- }
-
- int index;
- uintptr_t pc;
- const char* fallback;
- bool setByErrorCb;
- string output;
-};
-
-void
-decode(const string& line, string& function, string& filename)
-{
- string::size_type openParen = line.find_first_of('(');
- if(openParen != string::npos)
- {
- //
- // Format: "/opt/Ice/lib/libIceUtil.so.33(_ZN7IceUtil9ExceptionC2EPKci+0x51) [0x73b267]"
- //
- string::size_type closeParen = line.find_first_of(')', openParen);
- if(closeParen != string::npos)
- {
- string tmp = line.substr(openParen + 1, closeParen - openParen - 1);
- string::size_type plus = tmp.find_last_of('+');
- if(plus != string::npos)
- {
- function = tmp.substr(0 , plus);
- filename = line.substr(0, openParen);
- }
- }
- }
- else
- {
- //
- // Format: "1 libIce.3.3.1.dylib 0x000933a1 _ZN7IceUtil9ExceptionC2EPKci + 71"
- //
- string::size_type plus = line.find_last_of('+');
- if(plus != string::npos)
- {
- string tmp = line.substr(0, plus - 1);
- string::size_type space = tmp.find_last_of(" \t");
- if(space != string::npos)
- {
- tmp = tmp.substr(space + 1, tmp.size() - space);
-
- string::size_type start = line.find_first_not_of(" \t", 3);
- if(start != string::npos)
- {
- string::size_type finish = line.find_first_of(" \t", start);
- if(finish != string::npos)
- {
- function = tmp;
- filename = line.substr(start, finish - start);
- }
- }
- }
- }
- }
-}
-
-int
-printFrame(void* data, uintptr_t pc, const char* filename, int lineno, const char* function)
-{
- FrameInfo& frameInfo = *reinterpret_cast<FrameInfo*>(data);
-
- ostringstream os;
- os << setw(3) << frameInfo.index << " ";
-
- string functionHolder, filenameHolder;
-
- if(!function && frameInfo.fallback)
- {
- // Extract function and filename from fallback
- decode(frameInfo.fallback, functionHolder, filenameHolder);
- if(!functionHolder.empty())
- {
- function = functionHolder.c_str();
- }
- if(!filename && !filenameHolder.empty())
- {
- filename = filenameHolder.c_str();
- }
- }
-
- int ret = 0;
-
- if(function)
- {
- char* demangledFunction = abi::__cxa_demangle(function, 0, 0, 0);
- if(demangledFunction)
- {
- os << demangledFunction;
- free(demangledFunction);
- }
- else
- {
- os << function;
- }
-
- if(filename && lineno > 0)
- {
- os << " at " << filename << ":" << lineno;
- }
- else if(filename)
- {
- os << " in " << filename;
- }
- }
- else if(frameInfo.fallback)
- {
- // decode was not able to parse this string
- os << frameInfo.fallback;
- ret = 1;
- }
- else
- {
- os << hex << setw(sizeof(uintptr_t) * 2) << setfill('0') << pc;
- ret = 2;
- }
- os << "\n";
- frameInfo.output = os.str();
- return ret;
-}
-#endif
-
-#ifdef ICE_LIBBACKTRACE
-
-void
-handlePcInfoError(void* data, const char* msg, int errnum)
-{
- // cerr << "pcinfo error callback: " << msg << ", " << errnum << endl;
-
- FrameInfo& frameInfo = *reinterpret_cast<FrameInfo*>(data);
- printFrame(&frameInfo, frameInfo.pc, 0, 0, 0);
- frameInfo.setByErrorCb = true;
-}
-
-
-int
-addFrame(void* sf, uintptr_t pc)
-{
- if(pc != UINTPTR_MAX)
- {
- vector<void*>* stackFrames = reinterpret_cast<vector<void*>*>(sf);
- stackFrames->push_back(reinterpret_cast<void*>(pc));
- return 0;
- }
- else
- {
- return 1;
- }
-}
-#endif
-
-vector<void*>
-getStackFrames()
-{
- vector<void*> stackFrames;
-
- if(!IceUtilInternal::printStackTraces)
- {
- return stackFrames;
- }
-
-#if defined(ICE_DBGHELP)
-
- stackFrames.resize(61);
- //
- // 1: skip the first frame (the call to getStackFrames)
- // 1 + stackSize < 63 on Windows XP according to the documentation for CaptureStackBackTrace
- //
- USHORT frameCount = CaptureStackBackTrace(1, static_cast<DWORD>(stackFrames.size()), &stackFrames.front(), 0);
-
- stackFrames.resize(frameCount);
-
-#elif defined(ICE_LIBBACKTRACE)
-
- backtrace_simple(bstate, 1, addFrame, ignoreErrorCallback, &stackFrames);
-
-#elif defined(ICE_BACKTRACE)
-
- stackFrames.resize(100);
- size_t stackDepth = backtrace(&stackFrames.front(), stackFrames.size());
- stackFrames.resize(stackDepth);
- if(!stackFrames.empty())
- {
- stackFrames.erase(stackFrames.begin()); // drop the first frame
- }
-#endif
-
- return stackFrames;
-}
-
-
-string
-getStackTrace(const vector<void*>& stackFrames)
-{
- if(stackFrames.empty())
- {
- return "";
- }
-
- string stackTrace;
-
-#if defined(ICE_DBGHELP)
-
- //
- // Note: the Sym functions are not thread-safe
- //
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
- if(process == 0)
- {
- //
- // Compute Search path (best effort)
- // consists of the current working directory, this DLL (or exe) directory and %_NT_SYMBOL_PATH%
- //
- basic_string<TCHAR> searchPath;
- const TCHAR pathSeparator = _T('\\');
- const TCHAR searchPathSeparator = _T(';');
-
- TCHAR cwd[MAX_PATH];
- if(GetCurrentDirectory(MAX_PATH, cwd) != 0)
- {
- searchPath = cwd;
- }
-
- HMODULE myModule = 0;
- GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
- "startHook",
- &myModule);
- //
- // If GetModuleHandleEx fails, myModule is NULL, i.e. we'll locate the current exe's directory.
- //
-
- TCHAR myFilename[MAX_PATH];
- DWORD len = GetModuleFileName(myModule, myFilename, MAX_PATH);
- if(len != 0 && len < MAX_PATH)
- {
- assert(myFilename[len] == 0);
-
- basic_string<TCHAR> myPath = myFilename;
- size_t pos = myPath.find_last_of(pathSeparator);
- if(pos != basic_string<TCHAR>::npos)
- {
- myPath = myPath.substr(0, pos);
-
- if(!searchPath.empty())
- {
- searchPath += searchPathSeparator;
- }
- searchPath += myPath;
- }
- }
-
- const DWORD size = 1024;
- TCHAR symbolPath[size];
- len = GetEnvironmentVariable(_T("_NT_SYMBOL_PATH"), symbolPath, size);
- if(len > 0 && len < size)
- {
- if(!searchPath.empty())
- {
- searchPath += searchPathSeparator;
- }
- searchPath += symbolPath;
- }
-
- process = GetCurrentProcess();
-
- SymSetOptions(SYMOPT_LOAD_LINES | SYMOPT_DEFERRED_LOADS | SYMOPT_EXACT_SYMBOLS | SYMOPT_UNDNAME);
- if(SymInitialize(process, searchPath.c_str(), TRUE) == 0)
- {
- process = 0;
- return "No stack trace: SymInitialize failed with " + IceUtilInternal::errorToString(GetLastError());
- }
- }
- lock.release();
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1600)
-# if defined(DBGHELP_TRANSLATE_TCHAR)
- static_assert(sizeof(TCHAR) == sizeof(wchar_t), "Bad TCHAR - should be wchar_t");
-# else
- static_assert(sizeof(TCHAR) == sizeof(char), "Bad TCHAR - should be char");
-# endif
-#endif
-
- char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR)];
-
- SYMBOL_INFO* symbol = reinterpret_cast<SYMBOL_INFO*>(buffer);
- symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
- symbol->MaxNameLen = MAX_SYM_NAME;
-
- IMAGEHLP_LINE64 line = {};
- line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
- DWORD displacement = 0;
-
- lock.acquire();
-
- // TODO: call SymRefreshModuleList here? (not available on XP)
-
-#ifdef DBGHELP_TRANSLATE_TCHAR
- const IceUtil::StringConverterPtr converter = IceUtil::getProcessStringConverter();
-#endif
- for(size_t i = 0; i < stackFrames.size(); i++)
- {
- ostringstream s;
- s << setw(3) << i << " ";
-
- DWORD64 address = reinterpret_cast<DWORD64>(stackFrames[i]);
-
- BOOL ok = SymFromAddr(process, address, 0, symbol);
- if(ok)
- {
-#ifdef DBGHELP_TRANSLATE_TCHAR
- s << IceUtil::wstringToString(symbol->Name, converter);
-#else
- s << symbol->Name;
-#endif
- ok = SymGetLineFromAddr64(process, address, &displacement, &line);
- if(ok)
- {
- s << " at "
-#ifdef DBGHELP_TRANSLATE_TCHAR
- << IceUtil::wstringToString(line.FileName, converter)
-#else
- << line.FileName
-#endif
- << ":" << line.LineNumber;
- }
- }
- else
- {
- s << hex << setw(sizeof(DWORD64) * 2) << setfill('0') << address;
- }
- s << "\n";
- stackTrace += s.str();
- }
- lock.release();
-
-#elif defined(ICE_LIBBACKTRACE) || defined (ICE_BACKTRACE)
-
- vector<void*>::const_iterator p = stackFrames.begin();
- int frameIndex = 0;
- int offset = 0;
- char** backtraceStrings = 0;
-
-# if defined(ICE_LIBBACKTRACE) && defined(ICE_BACKTRACE)
- bool backtraceStringsInitialized = false;
-# endif
-# if !defined(ICE_LIBBACKTRACE)
- // Initialize backtraceStrings immediately
- if(p != stackFrames.end())
- {
- backtraceStrings = backtrace_symbols(&*p, stackFrames.size());
- }
-# endif
-
- do
- {
- FrameInfo frameInfo(frameIndex, reinterpret_cast<uintptr_t>(*p));
- bool retry = false;
-
- if(backtraceStrings)
- {
- frameInfo.fallback = backtraceStrings[frameIndex - offset];
- }
-
-# if defined(ICE_LIBBACKTRACE)
- bool ok = backtrace_pcinfo(bstate, frameInfo.pc, printFrame, handlePcInfoError, &frameInfo) == 0;
-
- // When error callback is called, pcinfo returns 0
- if(!ok || frameInfo.setByErrorCb)
- {
-# if defined(ICE_BACKTRACE)
- if(!backtraceStringsInitialized)
- {
- offset = frameIndex;
- // Initialize backtraceStrings as fallback
- backtraceStrings = backtrace_symbols(&*p, stackFrames.size() - offset);
- backtraceStringsInitialized = true;
- retry = true;
- }
-# endif
- }
-# else // not using libbacktrace:
- printFrame(&frameInfo, frameInfo.pc, 0, 0, 0);
-# endif
- if(!retry)
- {
- stackTrace += frameInfo.output;
- ++p;
- ++frameIndex;
- }
- } while(p != stackFrames.end());
-
- if(backtraceStrings)
- {
- free(backtraceStrings);
- }
-
-#endif
- return stackTrace;
-}
-}
-
-IceUtil::Exception::Exception() :
- _file(0),
- _line(0),
- _stackFrames(getStackFrames())
-{
-}
-
-IceUtil::Exception::Exception(const char* file, int line) :
- _file(file),
- _line(line),
- _stackFrames(getStackFrames())
-{
-}
-
-IceUtil::Exception::~Exception() ICE_NOEXCEPT
-{
-}
-
-void
-IceUtil::Exception::ice_print(ostream& out) const
-{
- if(_file && _line > 0)
- {
- out << _file << ':' << _line << ": ";
- }
- out << ice_id();
-}
-
-const char*
-IceUtil::Exception::what() const ICE_NOEXCEPT
-{
- try
- {
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
- {
- if(_str.empty())
- {
- stringstream s;
- ice_print(s);
- _str = s.str(); // Lazy initialization.
- }
- }
- return _str.c_str();
- }
- catch(...)
- {
- }
- return "";
-}
-
-string
-IceUtil::Exception::ice_id() const
-{
- return "::IceUtil::Exception";
-}
-
-#ifdef ICE_CPP11_MAPPING
-exception_ptr
-IceUtil::Exception::ice_clone() const
-{
- try
- {
- ice_throw();
- }
- catch(...)
- {
- return current_exception();
- }
- assert(false);
- return nullptr; // Make compilers happy
-}
-#else
-
-string
-IceUtil::Exception::ice_name() const
-{
- return ice_id().substr(2);
-}
-
-IceUtil::Exception*
-IceUtil::Exception::ice_clone() const
-{
- return new Exception(*this);
-}
-#endif
-
-void
-IceUtil::Exception::ice_throw() const
-{
- throw *this;
-}
-
-const char*
-IceUtil::Exception::ice_file() const
-{
- return _file;
-}
-
-int
-IceUtil::Exception::ice_line() const
-{
- return _line;
-}
-
-string
-IceUtil::Exception::ice_stackTrace() const
-{
- return getStackTrace(_stackFrames);
-}
-
-ostream&
-IceUtil::operator<<(ostream& out, const IceUtil::Exception& ex)
-{
- ex.ice_print(out);
- return out;
-}
-
-IceUtil::NullHandleException::NullHandleException(const char* file, int line) :
- Exception(file, line)
-{
- if(IceUtilInternal::nullHandleAbort)
- {
- abort();
- }
-}
-
-IceUtil::NullHandleException::~NullHandleException() ICE_NOEXCEPT
-{
-}
-
-string
-IceUtil::NullHandleException::ice_id() const
-{
- return "::IceUtil::NullHandleException";
-}
-
-#ifndef ICE_CPP11_MAPPING
-IceUtil::NullHandleException*
-IceUtil::NullHandleException::ice_clone() const
-{
- return new NullHandleException(*this);
-}
-#endif
-
-void
-IceUtil::NullHandleException::ice_throw() const
-{
- throw *this;
-}
-
-IceUtil::IllegalArgumentException::IllegalArgumentException(const char* file, int line) :
- Exception(file, line)
-{
-}
-
-IceUtil::IllegalArgumentException::IllegalArgumentException(const char* file, int line, const string& r) :
- Exception(file, line),
- _reason(r)
-{
-}
-
-IceUtil::IllegalArgumentException::~IllegalArgumentException() ICE_NOEXCEPT
-{
-}
-
-void
-IceUtil::IllegalArgumentException::ice_print(ostream& out) const
-{
- Exception::ice_print(out);
- out << ": " << _reason;
-}
-
-string
-IceUtil::IllegalArgumentException::ice_id() const
-{
- return "::IceUtil::IllegalArgumentException";
-}
-
-#ifndef ICE_CPP11_MAPPING
-IceUtil::IllegalArgumentException*
-IceUtil::IllegalArgumentException::ice_clone() const
-{
- return new IllegalArgumentException(*this);
-}
-#endif
-
-void
-IceUtil::IllegalArgumentException::ice_throw() const
-{
- throw *this;
-}
-
-string
-IceUtil::IllegalArgumentException::reason() const
-{
- return _reason;
-}
-
-//
-// IllegalConversionException
-//
-IceUtil::IllegalConversionException::IllegalConversionException(const char* file, int line):
- Exception(file, line)
-{}
-
-IceUtil::IllegalConversionException::IllegalConversionException(const char* file, int line,
- const string& reason):
- Exception(file, line),
- _reason(reason)
-{}
-
-IceUtil::IllegalConversionException::~IllegalConversionException() ICE_NOEXCEPT
-{}
-
-void
-IceUtil::IllegalConversionException::ice_print(ostream& out) const
-{
- Exception::ice_print(out);
- out << ": " << _reason;
-
-}
-
-string
-IceUtil::IllegalConversionException::ice_id() const
-{
- return "::IceUtil::IllegalConversionException";
-}
-
-#ifndef ICE_CPP11_MAPPING
-IceUtil::IllegalConversionException*
-IceUtil::IllegalConversionException::ice_clone() const
-{
- return new IllegalConversionException(*this);
-}
-#endif
-
-void
-IceUtil::IllegalConversionException::ice_throw() const
-{
- throw *this;
-}
-
-string
-IceUtil::IllegalConversionException::reason() const
-{
- return _reason;
-}
-
-
-
-IceUtil::SyscallException::SyscallException(const char* file, int line, int err ):
- Exception(file, line),
- _error(err)
-{
-}
-
-void
-IceUtil::SyscallException::ice_print(ostream& os) const
-{
- Exception::ice_print(os);
- if(_error != 0)
- {
- os << ":\nsyscall exception: " << IceUtilInternal::errorToString(_error);
- }
-}
-
-string
-IceUtil::SyscallException::ice_id() const
-{
- return "::IceUtil::SyscallException";
-}
-
-#ifndef ICE_CPP11_MAPPING
-IceUtil::SyscallException*
-IceUtil::SyscallException::ice_clone() const
-{
- return new SyscallException(*this);
-}
-#endif
-
-void
-IceUtil::SyscallException::ice_throw() const
-{
- throw *this;
-}
-
-int
-IceUtil::SyscallException::error() const
-{
- return _error;
-}
-
-
-IceUtil::FileLockException::FileLockException(const char* file, int line, int err, const string& path):
- Exception(file, line),
- _error(err),
- _path(path)
-{
-}
-
-IceUtil::FileLockException::~FileLockException() ICE_NOEXCEPT
-{
-}
-
-void
-IceUtil::FileLockException::ice_print(ostream& os) const
-{
- Exception::ice_print(os);
- os << ":\ncould not lock file: `" << _path << "'";
- if(_error != 0)
- {
- os << "\nsyscall exception: " << IceUtilInternal::errorToString(_error);
- }
-}
-
-string
-IceUtil::FileLockException::ice_id() const
-{
- return "::IceUtil::FileLockException";
-}
-
-#ifndef ICE_CPP11_MAPPING
-IceUtil::FileLockException*
-IceUtil::FileLockException::ice_clone() const
-{
- return new FileLockException(*this);
-}
-#endif
-
-void
-IceUtil::FileLockException::ice_throw() const
-{
- throw *this;
-}
-
-int
-IceUtil::FileLockException::error() const
-{
- return _error;
-}
-
-IceUtil::OptionalNotSetException::OptionalNotSetException(const char* file, int line) :
- Exception(file, line)
-{
- if(IceUtilInternal::nullHandleAbort)
- {
- abort();
- }
-}
-
-IceUtil::OptionalNotSetException::~OptionalNotSetException() ICE_NOEXCEPT
-{
-}
-
-string
-IceUtil::OptionalNotSetException::ice_id() const
-{
- return "::IceUtil::OptionalNotSetException";
-}
-
-#ifndef ICE_CPP11_MAPPING
-IceUtil::OptionalNotSetException*
-IceUtil::OptionalNotSetException::ice_clone() const
-{
- return new OptionalNotSetException(*this);
-}
-#endif
-
-void
-IceUtil::OptionalNotSetException::ice_throw() const
-{
- throw *this;
-}
-
-#ifndef _WIN32
-IceUtil::IconvInitializationException::IconvInitializationException(const char* file, int line, const string& reason) :
- Exception(file, line),
- _reason(reason)
-{
-}
-
-IceUtil::IconvInitializationException::~IconvInitializationException() ICE_NOEXCEPT
-{
-}
-
-void
-IceUtil::IconvInitializationException::ice_print(ostream& out) const
-{
- Exception::ice_print(out);
- out << ": " << _reason;
-}
-
-string
-IceUtil::IconvInitializationException::ice_id() const
-{
- return "::IceUtil::IconvInitializationException";
-}
-
-#ifndef ICE_CPP11_MAPPING
-IceUtil::IconvInitializationException*
-IceUtil::IconvInitializationException::ice_clone() const
-{
- return new IconvInitializationException(*this);
-}
-#endif
-
-void
-IceUtil::IconvInitializationException::ice_throw() const
-{
- throw *this;
-}
-
-string
-IceUtil::IconvInitializationException::reason() const
-{
- return _reason;
-}
-#endif