1 /* 2 * libpal - Automated Placement of Labels Library 3 * 4 * Copyright (C) 2008 Maxence Laurent, MIS-TIC, HEIG-VD 5 * University of Applied Sciences, Western Switzerland 6 * http://www.hes-so.ch 7 * 8 * Contact: 9 * maxence.laurent <at> heig-vd <dot> ch 10 * or 11 * eric.taillard <at> heig-vd <dot> ch 12 * 13 * This file is part of libpal. 14 * 15 * libpal is free software: you can redistribute it and/or modify 16 * it under the terms of the GNU General Public License as published by 17 * the Free Software Foundation, either version 3 of the License, or 18 * (at your option) any later version. 19 * 20 * libpal is distributed in the hope that it will be useful, 21 * but WITHOUT ANY WARRANTY; without even the implied warranty of 22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 * GNU General Public License for more details. 24 * 25 * You should have received a copy of the GNU General Public License 26 * along with libpal. If not, see <http://www.gnu.org/licenses/>. 27 * 28 */ 29 30 #ifndef PAL_EXCEPTION_H 31 #define PAL_EXCEPTION_H 32 33 #include <exception> 34 35 36 namespace pal 37 { 38 39 /** 40 * \brief Various Exceptions 41 * \ingroup core 42 */ 43 class PalException 44 { 45 public: 46 47 /** 48 * \brief Thrown when a feature is not yet implemented 49 * \ingroup core 50 */ 51 class NotImplemented : public std::exception 52 { what()53 const char *what() const throw() override 54 { 55 return "Not yet implemented... sorry"; 56 } 57 }; 58 59 /** 60 * \brief Try to access an unknown feature 61 * \ingroup core 62 */ 63 class UnknownFeature : public std::exception 64 { what()65 const char *what() const throw() override 66 { 67 return "Feature not found"; 68 } 69 }; 70 71 /** 72 * \brief Try to access an unknown layer 73 * \ingroup core 74 */ 75 class UnknownLayer : public std::exception 76 { what()77 const char *what() const throw() override 78 { 79 return "Layer not found"; 80 } 81 }; 82 83 /** 84 * \brief layer already exists 85 * \ingroup core 86 */ 87 class LayerExists : public std::exception 88 { what()89 const char *what() const throw() override 90 { 91 return "Layers names must be unique"; 92 } 93 }; 94 95 /** 96 * \brief features already exists 97 * \ingroup core 98 */ 99 class FeatureExists : public std::exception 100 { what()101 const char *what() const throw() override 102 { 103 return "Features IDs must be unique within a layer"; 104 } 105 }; 106 107 /** 108 * \brief thrown when a value is not in the valid scale range\ 109 * \ingroup core 110 * 111 * It can be thrown by : 112 * 113 * - pal::Layer::setFeatureLabelSize if either the height or the width of the label is < 0 114 * - pal::Layer::setFeatureDistlabel is distlable < 0 115 */ 116 class ValueNotInRange : public std::exception 117 { what()118 const char *what() const throw() override 119 { 120 return "value not allowed"; 121 } 122 }; 123 }; 124 125 } // namespace 126 127 #endif 128