Scippy

SoPlex

Sequential object-oriented simPlex

exceptions.h
Go to the documentation of this file.
1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2/* */
3/* This file is part of the class library */
4/* SoPlex --- the Sequential object-oriented simPlex. */
5/* */
6/* Copyright (c) 1996-2024 Zuse Institute Berlin (ZIB) */
7/* */
8/* Licensed under the Apache License, Version 2.0 (the "License"); */
9/* you may not use this file except in compliance with the License. */
10/* You may obtain a copy of the License at */
11/* */
12/* http://www.apache.org/licenses/LICENSE-2.0 */
13/* */
14/* Unless required by applicable law or agreed to in writing, software */
15/* distributed under the License is distributed on an "AS IS" BASIS, */
16/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17/* See the License for the specific language governing permissions and */
18/* limitations under the License. */
19/* */
20/* You should have received a copy of the Apache-2.0 license */
21/* along with SoPlex; see the file LICENSE. If not email to soplex@zib.de. */
22/* */
23/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24
25/**@file exceptions.h
26 * @brief Exception classes for SoPlex.
27 */
28#ifndef _EXCEPTIONS_H_
29#define _EXCEPTIONS_H_
30
31#include <string.h>
32
33namespace soplex
34{
35/**@brief Exception base class.
36 * @ingroup Elementary
37 *
38 * This class implements a base class for our SoPlex exceptions
39 * We provide a what() function which returns the exception message.
40 */
42{
43private:
44 //----------------------------------------
45 /**@name Private data */
46 ///@{
47 /// Exception message.
48 std::string msg;
49 ///@}
50public:
51 //----------------------------------------
52 /**@name Construction / destruction */
53 ///@{
54 /// constructor
55 /** The constructor receives an optional string as an exception message.
56 */
57 SPxException(const std::string& m = "") : msg(m) {}
58 /// destructor
59 virtual ~SPxException() {}
60 ///@}
61
62 //----------------------------------------
63 /**@name Access / modification */
64 ///@{
65 /// returns exception message
66 virtual const std::string what() const
67 {
68 return msg;
69 }
70 ///@}
71};
72
73/**@brief Exception class for out of memory exceptions.
74 * @ingroup Elementary
75 *
76 * This class is derived from the SoPlex exception base class.
77 * It does not provide any new functionality.
78 */
80{
81public:
82 //----------------------------------------
83 /**@name Construction / destruction */
84 ///@{
85 /// constructor
86 /** The constructor receives an optional string as an exception message.
87 */
88 SPxMemoryException(const std::string& m = "") : SPxException(m) {}
89 ///@}
90};
91
92/**@brief Exception class for status exceptions during the computations
93 * @ingroup Elementary
94 *
95 * This class is derived from the SoPlex exception base class.
96 * It does not provide any new functionality.
97 */
99{
100public:
101 //----------------------------------------
102 /**@name Construction / destruction */
103 ///@{
104 /// constructor
105 /** The constructor receives an optional string as an exception message.
106 */
107 SPxStatusException(const std::string& m = "") : SPxException(m) {}
108 ///@}
109};
110
111/**@brief Exception class for things that should NEVER happen.
112 * @ingroup Elementary
113 *
114 * This class is derived from the SoPlex exception base class.
115 * It does not provide any new functionality. Most often it is used to replace
116 * assert(false) terms in earlier code.
117 */
119{
120public:
121 //----------------------------------------
122 /**@name Construction / destruction */
123 ///@{
124 /// constructor
125 /** The constructor receives an optional string as an exception message.
126 */
127 SPxInternalCodeException(const std::string& m = "") : SPxException(m) {}
128 ///@}
129};
130
131
132/**@brief Exception class for incorrect usage of interface methods.
133 * @ingroup Elementary
134 */
136{
137public:
138 //----------------------------------------
139 /**@name Construction / destruction */
140 ///@{
141 /// constructor
142 /** The constructor receives an optional string as an exception message.
143 */
144 SPxInterfaceException(const std::string& m = "") : SPxException(m) {}
145 ///@}
146};
147
148} //namespace soplex
149
150#endif // _EXCEPTIONS_H_
Exception base class.
Definition: exceptions.h:42
std::string msg
Exception message.
Definition: exceptions.h:48
virtual ~SPxException()
destructor
Definition: exceptions.h:59
SPxException(const std::string &m="")
constructor
Definition: exceptions.h:57
virtual const std::string what() const
returns exception message
Definition: exceptions.h:66
Exception class for incorrect usage of interface methods.
Definition: exceptions.h:136
SPxInterfaceException(const std::string &m="")
constructor
Definition: exceptions.h:144
Exception class for things that should NEVER happen.
Definition: exceptions.h:119
SPxInternalCodeException(const std::string &m="")
constructor
Definition: exceptions.h:127
Exception class for out of memory exceptions.
Definition: exceptions.h:80
SPxMemoryException(const std::string &m="")
constructor
Definition: exceptions.h:88
Exception class for status exceptions during the computations.
Definition: exceptions.h:99
SPxStatusException(const std::string &m="")
constructor
Definition: exceptions.h:107
Everything should be within this namespace.