Embedded Template Library 1.0
Loading...
Searching...
No Matches
exception.h
Go to the documentation of this file.
1
2
3/******************************************************************************
4The MIT License(MIT)
5
6Embedded Template Library.
7https://github.com/ETLCPP/etl
8https://www.etlcpp.com
9
10Copyright(c) 2014 John Wellbelove
11
12Permission is hereby granted, free of charge, to any person obtaining a copy
13of this software and associated documentation files(the "Software"), to deal
14in the Software without restriction, including without limitation the rights
15to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
16copies of the Software, and to permit persons to whom the Software is
17furnished to do so, subject to the following conditions :
18
19The above copyright notice and this permission notice shall be included in all
20copies or substantial portions of the Software.
21
22THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
25AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28SOFTWARE.
29******************************************************************************/
30
31#ifndef ETL_EXCEPTION_INCLUDED
32#define ETL_EXCEPTION_INCLUDED
33
34#include "platform.h"
35
36#if ETL_USING_STD_EXCEPTION
37 #include <exception>
38 #define ETL_EXCEPTION_CONSTEXPR
39 #define ETL_EXCEPTION_OVERRIDE override
40#else
41 #define ETL_EXCEPTION_CONSTEXPR ETL_CONSTEXPR
42 #define ETL_EXCEPTION_OVERRIDE
43#endif
44
48
49namespace etl
50{
51 //***************************************************************************
54 //***************************************************************************
56#if ETL_USING_STD_EXCEPTION
57 : public std::exception
58#endif
59 {
60 public:
61
62 typedef const char* string_type;
63 typedef int numeric_type;
64
65 //*************************************************************************
67 //*************************************************************************
68#if defined(ETL_VERBOSE_ERRORS)
69 ETL_EXCEPTION_CONSTEXPR
70 exception(string_type reason_, string_type file_, numeric_type line_)
71 : reason_text(reason_)
72 , file_text(file_)
73 , line(line_)
74 {
75 }
76#elif defined(ETL_MINIMAL_ERRORS)
77 ETL_EXCEPTION_CONSTEXPR
78 exception(string_type /*reason_*/, string_type /*file_*/, numeric_type /*line_*/) {}
79#else
80 ETL_EXCEPTION_CONSTEXPR
81 exception(string_type reason_, string_type /*file_*/, numeric_type /*line_*/)
82 : reason_text(reason_)
83 {
84 }
85#endif
86
87 //***************************************************************************
90 //***************************************************************************
91 ETL_EXCEPTION_CONSTEXPR
92 string_type what() const ETL_NOEXCEPT ETL_EXCEPTION_OVERRIDE
93 {
94#if !defined(ETL_MINIMAL_ERRORS)
95 return reason_text;
96#else
97 return "";
98#endif
99 }
100
101 //***************************************************************************
104 //***************************************************************************
105 ETL_EXCEPTION_CONSTEXPR
106 string_type file_name() const
107 {
108#if defined(ETL_VERBOSE_ERRORS)
109 return file_text;
110#else
111 return "";
112#endif
113 }
114
115 //***************************************************************************
118 //***************************************************************************
119 ETL_EXCEPTION_CONSTEXPR
120 numeric_type line_number() const
121 {
122#if defined(ETL_VERBOSE_ERRORS)
123 return line;
124#else
125 return -1;
126#endif
127 }
128
129 private:
130
131#if !defined(ETL_MINIMAL_ERRORS)
132 string_type reason_text;
133#endif
134
135#if defined(ETL_VERBOSE_ERRORS)
136 string_type file_text;
137 numeric_type line;
138#endif
139 };
140} // namespace etl
141
142#endif
ETL_EXCEPTION_CONSTEXPR string_type what() const ETL_NOEXCEPT ETL_EXCEPTION_OVERRIDE
Definition exception.h:92
ETL_EXCEPTION_CONSTEXPR numeric_type line_number() const
Definition exception.h:120
ETL_EXCEPTION_CONSTEXPR string_type file_name() const
Definition exception.h:106
ETL_EXCEPTION_CONSTEXPR exception(string_type reason_, string_type, numeric_type)
Constructor.
Definition exception.h:81
bitset_ext
Definition absolute.h:40