Branch data Line data Source code
1 : : // -*- C++ -*-
2 : : /***************************************************************************
3 : : *
4 : : * The IPPL Framework
5 : : *
6 : : * This program was prepared by PSI.
7 : : * All rights in the program are reserved by PSI.
8 : : * Neither PSI nor the author(s)
9 : : * makes any warranty, express or implied, or assumes any liability or
10 : : * responsibility for the use of this software
11 : : *
12 : : * Visit www.amas.web.psi for more details
13 : : *
14 : : ***************************************************************************/
15 : :
16 : : // -*- C++ -*-
17 : : /***************************************************************************
18 : : *
19 : : * The IPPL Framework
20 : : *
21 : : *
22 : : * Visit http://people.web.psi.ch/adelmann/ for more details
23 : : *
24 : : ***************************************************************************/
25 : :
26 : : //---------------------------------------------------------------------------//
27 : : // Assert.cpp
28 : : // Geoffrey Furnish
29 : : // Fri Jul 25 08:41:38 1997
30 : : //---------------------------------------------------------------------------//
31 : : // @> Helper functions for the Assert facility.
32 : : //---------------------------------------------------------------------------//
33 : :
34 : : // include files
35 : : #include "Utility/PAssert.h"
36 : :
37 : : #include <iostream>
38 : : using namespace std;
39 : : #include <cstdio>
40 : : #include <cstdlib>
41 : : #include <cstring>
42 : :
43 : : //---------------------------------------------------------------------------//
44 : :
45 : 0 : assertion::assertion(const char* cond, const char* file, int line)
46 : 0 : : std::runtime_error(cond) {
47 [ # # ]: 0 : msg = new char[strlen(cond) + strlen(file) + 500];
48 : 0 : sprintf(msg, "Assertion: %s, failed in %s, line %8d.", cond, file, line);
49 : 0 : }
50 : :
51 : 0 : assertion::assertion(const char* m)
52 : 0 : : std::runtime_error(m) {
53 [ # # ]: 0 : msg = new char[strlen(m) + 1];
54 : 0 : strcpy(msg, m);
55 : 0 : }
56 : :
57 : 0 : assertion::assertion(const assertion& a)
58 : 0 : : std::runtime_error(a.msg) {
59 [ # # ]: 0 : msg = new char[strlen(a.msg) + 1];
60 : 0 : strcpy(msg, a.msg);
61 : 0 : }
62 : :
63 : 0 : assertion& assertion::operator=(const assertion& a) {
64 : 0 : msg = new char[strlen(a.msg) + 1];
65 : 0 : strcpy(msg, a.msg);
66 : 0 : return *this;
67 : : }
68 : :
69 : : //---------------------------------------------------------------------------//
70 : : // Function to perform the task of actually throwing an assertion.
71 : : //---------------------------------------------------------------------------//
72 : :
73 : 0 : void toss_cookies(const char* cond, const char* file, int line) {
74 [ # # # # : 0 : std::string what = "Assertion '" + std::string(cond) + "' failed. \n";
# # ]
75 [ # # ]: 0 : what += "in \n";
76 [ # # # # : 0 : what += std::string(file) + ", line " + std::to_string(line);
# # # # ]
77 : :
78 [ # # ]: 0 : throw std::runtime_error(what);
79 : 0 : }
80 : :
81 : : //---------------------------------------------------------------------------//
82 : : // Function to perform the task of actually throwing an isistion.
83 : : //---------------------------------------------------------------------------//
84 : 0 : void insist(const char* cond, const char* msg, const char* file, int line) {
85 : 0 : char* fullmsg = new char[strlen(cond) + strlen(msg) + strlen(file) + 500];
86 : 0 : sprintf(fullmsg, "%s\nAssertion '%s' failed in \n%s on line %8d.", msg, cond, file, line);
87 : :
88 [ # # ]: 0 : throw assertion(fullmsg);
89 : : }
90 : :
91 : : //---------------------------------------------------------------------------//
92 : : // end of Assert.cpp
93 : : //---------------------------------------------------------------------------//
94 : :
95 : : /***************************************************************************
96 : : * $RCSfile: PAssert.cpp,v $ $Author: adelmann $
97 : : * $Revision: 1.1.1.1 $ $Date: 2003/01/23 07:40:33 $
98 : : * IPPL_VERSION_ID: $Id: PAssert.cpp,v 1.1.1.1 2003/01/23 07:40:33 adelmann Exp $
99 : : ***************************************************************************/
|