1 /******************************************************************************
2 * Project: PROJ
3 * Purpose: Functionality related to deformation model
4 * Author: Even Rouault, <even.rouault at spatialys.com>
5 *
6 ******************************************************************************
7 * Copyright (c) 2020, Even Rouault, <even.rouault at spatialys.com>
8 *
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 * DEALINGS IN THE SOFTWARE.
26 *****************************************************************************/
27
28 #ifndef DEFORMATON_MODEL_NAMESPACE
29 #error "Should be included only by defmodel.hpp"
30 #endif
31
32 #include <exception>
33
34 namespace DEFORMATON_MODEL_NAMESPACE {
35
36 // ---------------------------------------------------------------------------
37
38 /** Parsing exception. */
39 class ParsingException : public std::exception {
40 public:
ParsingException(const std::string & msg)41 explicit ParsingException(const std::string &msg) : msg_(msg) {}
42 const char *what() const noexcept override;
43
44 private:
45 std::string msg_;
46 };
47
what() const48 const char *ParsingException::what() const noexcept { return msg_.c_str(); }
49
50 // ---------------------------------------------------------------------------
51
52 class UnimplementedException : public std::exception {
53 public:
UnimplementedException(const std::string & msg)54 explicit UnimplementedException(const std::string &msg) : msg_(msg) {}
55 const char *what() const noexcept override;
56
57 private:
58 std::string msg_;
59 };
60
what() const61 const char *UnimplementedException::what() const noexcept {
62 return msg_.c_str();
63 }
64
65 // ---------------------------------------------------------------------------
66
67 /** Evaluator exception. */
68 class EvaluatorException : public std::exception {
69 public:
EvaluatorException(const std::string & msg)70 explicit EvaluatorException(const std::string &msg) : msg_(msg) {}
71 const char *what() const noexcept override;
72
73 private:
74 std::string msg_;
75 };
76
what() const77 const char *EvaluatorException::what() const noexcept { return msg_.c_str(); }
78
79 // ---------------------------------------------------------------------------
80
81 } // namespace DEFORMATON_MODEL_NAMESPACE
82