summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pexception.h
diff options
context:
space:
mode:
author andreasnaive <andreasnaive@gmail.com>2019-03-25 23:13:40 +0100
committer andreasnaive <andreasnaive@gmail.com>2019-03-25 23:13:40 +0100
commitb380514764cf857469bae61c11143a19f79a74c5 (patch)
tree63c8012e262618f08a332da31dd714281aa2c5ed /src/lib/netlist/plib/pexception.h
parentc24473ddff715ecec2e258a6eb38960cf8c8e98e (diff)
Revert "conflict resolution (nw)"
This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing changes made to 009cba4fb8102102168ef32870892438327f3705.
Diffstat (limited to 'src/lib/netlist/plib/pexception.h')
-rw-r--r--src/lib/netlist/plib/pexception.h214
1 files changed, 108 insertions, 106 deletions
diff --git a/src/lib/netlist/plib/pexception.h b/src/lib/netlist/plib/pexception.h
index 28a3ac1adf1..4827081b754 100644
--- a/src/lib/netlist/plib/pexception.h
+++ b/src/lib/netlist/plib/pexception.h
@@ -9,116 +9,118 @@
#define PEXCEPTION_H_
#include "pstring.h"
-#include "ptypes.h"
#include <exception>
namespace plib {
+//============================================================
+// exception base
+//============================================================
+
+class pexception : public std::exception
+{
+public:
+ explicit pexception(const pstring &text);
+ pexception(const pexception &e) : std::exception(e), m_text(e.m_text) { }
+
+ virtual ~pexception() noexcept;
+
+ const pstring &text() { return m_text; }
+ const char* what() const noexcept override { return m_text.c_str(); }
+
+private:
+ pstring m_text;
+};
+
+class file_e : public plib::pexception
+{
+public:
+ file_e(const pstring &fmt, const pstring &filename);
+ file_e(const file_e &e) : pexception(e) { }
+ virtual ~file_e() noexcept;
+};
+
+class file_open_e : public file_e
+{
+public:
+ explicit file_open_e(const pstring &filename);
+ file_open_e(const file_open_e &e) : file_e(e) { }
+ virtual ~file_open_e() noexcept;
+};
+
+class file_read_e : public file_e
+{
+public:
+ explicit file_read_e(const pstring &filename);
+ file_read_e(const file_read_e &e) : file_e(e) { }
+ virtual ~file_read_e() noexcept;
+};
+
+class file_write_e : public file_e
+{
+public:
+ explicit file_write_e(const pstring &filename);
+ file_write_e(const file_write_e &e) : file_e(e) { }
+ virtual ~file_write_e() noexcept;
+};
+
+class null_argument_e : public plib::pexception
+{
+public:
+ explicit null_argument_e(const pstring &argument);
+ null_argument_e(const null_argument_e &e) : pexception(e) { }
+ virtual ~null_argument_e() noexcept;
+};
+
+class out_of_mem_e : public plib::pexception
+{
+public:
+ explicit out_of_mem_e(const pstring &location);
+ out_of_mem_e(const out_of_mem_e &e) : pexception(e) { }
+ virtual ~out_of_mem_e() noexcept;
+};
+
+/* FIXME: currently only a stub for later use. More use could be added by
+ * using “-fnon-call-exceptions" and sigaction to enable c++ exception supported.
+ */
+
+class fpexception_e : public pexception
+{
+public:
+ explicit fpexception_e(const pstring &text);
+ fpexception_e(const fpexception_e &e) : pexception(e) { }
+ virtual ~fpexception_e() noexcept;
+};
+
+static constexpr unsigned FP_INEXACT = 0x0001;
+static constexpr unsigned FP_DIVBYZERO = 0x0002;
+static constexpr unsigned FP_UNDERFLOW = 0x0004;
+static constexpr unsigned FP_OVERFLOW = 0x0008;
+static constexpr unsigned FP_INVALID = 0x00010;
+static constexpr unsigned FP_ALL = 0x0001f;
+
+/*
+ * Catch SIGFPE on linux for debugging purposes.
+ */
+
+class fpsignalenabler
+{
+public:
+ explicit fpsignalenabler(unsigned fpexceptions);
+ ~fpsignalenabler();
+
+ /* is the functionality supported ? */
+ static bool supported();
+ /* returns last global enable state */
+ static bool global_enable(bool enable);
+
+private:
+ int m_last_enabled;
+
+ static bool m_enable;
+};
+
- //============================================================
- // terminate
- //============================================================
-
- /*! Terminate the program
- *
- * \note could be enhanced by setting a termination handler
- */
- [[noreturn]] void terminate(const pstring &msg) noexcept;
-
- //============================================================
- // exception base
- //============================================================
-
- class pexception : public std::exception
- {
- public:
- explicit pexception(const pstring &text);
-
- const pstring &text() { return m_text; }
- const char* what() const noexcept override { return m_text.c_str(); }
-
- private:
- pstring m_text;
- };
-
- class file_e : public plib::pexception
- {
- public:
- file_e(const pstring &fmt, const pstring &filename);
- };
-
- class file_open_e : public file_e
- {
- public:
- explicit file_open_e(const pstring &filename);
- };
-
- class file_read_e : public file_e
- {
- public:
- explicit file_read_e(const pstring &filename);
- };
-
- class file_write_e : public file_e
- {
- public:
- explicit file_write_e(const pstring &filename);
- };
-
- class null_argument_e : public plib::pexception
- {
- public:
- explicit null_argument_e(const pstring &argument);
- };
-
- class out_of_mem_e : public plib::pexception
- {
- public:
- explicit out_of_mem_e(const pstring &location);
- };
-
- /* FIXME: currently only a stub for later use. More use could be added by
- * using “-fnon-call-exceptions" and sigaction to enable c++ exception supported.
- */
-
- class fpexception_e : public pexception
- {
- public:
- explicit fpexception_e(const pstring &text);
- };
-
- static constexpr unsigned FP_INEXACT = 0x0001;
- static constexpr unsigned FP_DIVBYZERO = 0x0002;
- static constexpr unsigned FP_UNDERFLOW = 0x0004;
- static constexpr unsigned FP_OVERFLOW = 0x0008;
- static constexpr unsigned FP_INVALID = 0x00010;
- static constexpr unsigned FP_ALL = 0x0001f;
-
- /*
- * Catch SIGFPE on linux for debugging purposes.
- */
-
- class fpsignalenabler
- {
- public:
- explicit fpsignalenabler(unsigned fpexceptions);
-
- COPYASSIGNMOVE(fpsignalenabler, delete)
-
- ~fpsignalenabler();
-
- /* is the functionality supported ? */
- static bool supported();
- /* returns last global enable state */
- static bool global_enable(bool enable);
-
- private:
- int m_last_enabled;
-
- static bool m_enable;
- };
-
-
-} // namespace plib
+}
#endif /* PEXCEPTION_H_ */