Zoltan2
src
environment
Zoltan2_Exceptions.hpp
Go to the documentation of this file.
1
// @HEADER
2
//
3
// ***********************************************************************
4
//
5
// Zoltan2: A package of combinatorial algorithms for scientific computing
6
// Copyright 2012 Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Karen Devine (kddevin@sandia.gov)
39
// Erik Boman (egboman@sandia.gov)
40
// Siva Rajamanickam (srajama@sandia.gov)
41
//
42
// ***********************************************************************
43
//
44
// @HEADER
45
46
#ifndef _ZOLTAN2_EXCEPTIONS_HPP_
47
#define _ZOLTAN2_EXCEPTIONS_HPP_
48
53
#include <stdexcept>
54
#include <iostream>
55
#include <sstream>
56
#include <string>
57
64
#define Z2_THROW_OUTSIDE_ERROR(env) \
65
catch (std::exception &e) { \
66
std::cerr<<(env).myRank_<<" "<<__FILE__<<","<<__LINE__<<","<<e.what()<<std::endl; \
67
throw e; \
68
}
69
70
namespace
Zoltan2
{
73
class
NotImplemented
:
public
std::exception
74
{
75
private
:
76
std::string msg;
77
public
:
78
NotImplemented
(
const
char
*ffile,
const
int
lline,
const
char
*ffunc)
79
{
80
std::ostringstream emsg;
81
emsg << ffile <<
":"
<< lline
82
<<
" error: "
<< ffunc <<
" is not implemented."
83
<< std::endl;
84
msg = emsg.str();
85
}
86
~NotImplemented
() throw() {}
87
const
char
*
what
()
const
throw() {
return
msg.c_str(); }
88
};
89
90
}
91
92
#define Z2_THROW_NOT_IMPLEMENTED \
93
{ throw Zoltan2::NotImplemented(__FILE__, __LINE__, __func__zoltan2__); }
94
95
106
#define Z2_FORWARD_EXCEPTIONS \
107
catch (std::runtime_error &e) { throw e; } \
108
catch (std::logic_error &e) { throw e; } \
109
catch (std::bad_alloc &e) { throw e; } \
110
catch (std::exception &e) { throw e; }
111
121
#define Z2_THROW_EXPERIMENTAL(mystr) \
122
{ \
123
std::ostringstream oss; \
124
oss << (mystr) << std::endl \
125
<< "To experiment with this software, configure with " \
126
<< "-D Zoltan2_ENABLE_Experimental:BOOL=ON " \
127
<< std::endl; \
128
throw std::runtime_error(oss.str()); \
129
}
130
140
#define Z2_THROW_EXPERIMENTAL_WOLF(mystr) \
141
{ \
142
std::ostringstream oss; \
143
oss << (mystr) << std::endl \
144
<< "To experiment with this software, configure with " \
145
<< "-D Zoltan2_ENABLE_Experimental_Wolf:BOOL=ON " \
146
<< std::endl; \
147
throw std::runtime_error(oss.str()); \
148
}
149
154
#define Z2_THROW_SERIAL(mystr) \
155
{ \
156
std::ostringstream oss; \
157
oss << (mystr) << std::endl \
158
<< "This algorithm only runs in serial (Comm_Serial or MPI_Comm with worldsize=1). " \
159
<< std::endl; \
160
throw std::runtime_error(oss.str()); \
161
}
162
163
170
#define Z2_ASSERT_VALUE(actual, expected) \
171
{ \
172
if (actual != expected) \
173
{ \
174
std::ostringstream oss; \
175
oss << "Expected value " << expected << "does not match actual value"\
176
<< actual << "in" << __FILE__<<", "<<__LINE__ \
177
<< std::endl; \
178
throw std::runtime_error(oss.str()); \
179
}\
180
}
181
182
#ifdef _MSC_VER
183
#if _MSC_VER >= 1300
184
#define __func__zoltan2__ __FUNCTION__
185
#else
186
#define __func__zoltan2__ "unknown zoltan2 function"
187
#endif
188
#else
189
#define __func__zoltan2__ __func__
190
#endif
191
192
#endif
Zoltan2::NotImplemented::~NotImplemented
~NotImplemented()
Definition:
Zoltan2_Exceptions.hpp:86
Zoltan2::NotImplemented::what
const char * what() const
Definition:
Zoltan2_Exceptions.hpp:87
Zoltan2::NotImplemented
Exception thrown when a called base-class method is not implemented.
Definition:
Zoltan2_Exceptions.hpp:73
Zoltan2::NotImplemented::NotImplemented
NotImplemented(const char *ffile, const int lline, const char *ffunc)
Definition:
Zoltan2_Exceptions.hpp:78
Zoltan2
Definition:
Zoltan2_AlgSerialGreedy.hpp:56
Generated by
1.8.16