00001 /****************************************************************************** 00002 * Copyright (C) 2014 by Ralf Kaestner * 00003 * ralf.kaestner@gmail.com * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the Lesser GNU General Public License as published by* 00007 * the Free Software Foundation; either version 3 of the License, or * 00008 * (at your option) any later version. * 00009 * * 00010 * This program is distributed in the hope that it will be useful, * 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00013 * Lesser GNU General Public License for more details. * 00014 * * 00015 * You should have received a copy of the Lesser GNU General Public License * 00016 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 00017 ******************************************************************************/ 00018 00023 #ifndef VARIANT_TOPIC_TOOLS_EXCEPTIONS_H 00024 #define VARIANT_TOPIC_TOOLS_EXCEPTIONS_H 00025 00026 #include <ros/ros.h> 00027 00028 namespace variant_topic_tools { 00031 class NullPointerException : 00032 public ros::Exception { 00033 public: 00036 NullPointerException(); 00037 }; 00038 00041 class InvalidOperationException : 00042 public ros::Exception { 00043 public: 00046 InvalidOperationException(const std::string& what); 00047 }; 00048 00051 class InvalidDataTypeException : 00052 public ros::Exception { 00053 public: 00056 InvalidDataTypeException(); 00057 }; 00058 00062 class ImmutableDataTypeException : 00063 public ros::Exception { 00064 public: 00067 ImmutableDataTypeException(); 00068 }; 00069 00072 class NoSuchDataTypeException : 00073 public ros::Exception { 00074 public: 00077 NoSuchDataTypeException(const std::string& identifier); 00078 }; 00079 00082 class AmbiguousDataTypeIdentifierException : 00083 public ros::Exception { 00084 public: 00087 AmbiguousDataTypeIdentifierException(const std::string& identifier); 00088 }; 00089 00092 class DataTypeMismatchException : 00093 public ros::Exception { 00094 public: 00097 DataTypeMismatchException(const std::string& expectedDataType, const 00098 std::string& providedDataType); 00099 }; 00100 00103 class AmbiguousMemberNameException : 00104 public ros::Exception { 00105 public: 00108 AmbiguousMemberNameException(const std::string& name); 00109 }; 00110 00113 class NoSuchMemberException : 00114 public ros::Exception { 00115 public: 00118 NoSuchMemberException(int index); 00119 00122 NoSuchMemberException(const std::string& name); 00123 }; 00124 00127 class InvalidMessageMemberException : 00128 public ros::Exception { 00129 public: 00132 InvalidMessageMemberException(); 00133 }; 00134 00137 class MD5SumMismatchException : 00138 public ros::Exception { 00139 public: 00142 MD5SumMismatchException(const std::string& expectedMD5Sum, const 00143 std::string& providedMD5Sum); 00144 }; 00145 00148 class InvalidMessageTypeException : 00149 public ros::Exception { 00150 public: 00153 InvalidMessageTypeException(const std::string& invalidMessageType); 00154 }; 00155 00158 class MessageTypeMismatchException : 00159 public ros::Exception { 00160 public: 00163 MessageTypeMismatchException(const std::string& expectedMessageType, 00164 const std::string& providedMessageType); 00165 }; 00166 00170 class DefinitionParseException : 00171 public ros::Exception { 00172 public: 00175 DefinitionParseException(const std::string& dataType, const std::string& 00176 line, const std::string& what); 00177 }; 00178 00181 class PackageNotFoundException : 00182 public ros::Exception { 00183 public: 00186 PackageNotFoundException(const std::string& package); 00187 }; 00188 00191 class FileOpenException : 00192 public ros::Exception { 00193 public: 00196 FileOpenException(const std::string& filename); 00197 }; 00198 00201 class InvalidSerializerException : 00202 public ros::Exception { 00203 public: 00206 InvalidSerializerException(); 00207 }; 00208 }; 00209 00210 #endif