exception.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2008, Willow Garage, Inc.
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions are met:
00007  *
00008  *     * Redistributions of source code must retain the above copyright
00009  *       notice, this list of conditions and the following disclaimer.
00010  *     * Redistributions in binary form must reproduce the above copyright
00011  *       notice, this list of conditions and the following disclaimer in the
00012  *       documentation and/or other materials provided with the distribution.
00013  *     * Neither the name of the Willow Garage, Inc. nor the names of its
00014  *       contributors may be used to endorse or promote products derived from
00015  *       this software without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00018  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00021  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00022  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00023  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00025  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00026  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00027  * POSSIBILITY OF SUCH DAMAGE.
00028  *
00029  */
00030 
00039 #ifndef TOPOLOGICAL_MAP_2D_EXCEPTION_H
00040 #define TOPOLOGICAL_MAP_2D_EXCEPTION_H
00041 
00042 #include <boost/format.hpp>
00043 #include <stdexcept>
00044 
00045 
00046 namespace topological_map_2d
00047 {
00048 
00049 using boost::format;
00050 using std::string;
00051 
00054 class TopologicalMapException: public std::logic_error
00055 {
00056 public:
00057   TopologicalMapException (const format& error_string) : std::logic_error(error_string.str()) {};
00058   TopologicalMapException (const char* str) : std::logic_error(str) {};
00059 };
00060 
00062 struct UnknownNodeIdException: public TopologicalMapException
00063 {
00064   UnknownNodeIdException (const unsigned id): 
00065     TopologicalMapException(format("Unknown node id %1%") % id), id(id) {}
00066   const unsigned id;
00067 };
00068 
00070 struct UnknownEdgeIdException: public TopologicalMapException
00071 {
00072   UnknownEdgeIdException (const unsigned id): 
00073     TopologicalMapException(format("Unknown edge id %1%") % id), id(id) {}
00074   const unsigned id;
00075 };
00076 
00077 
00080 struct InvalidNodeIdException: public TopologicalMapException
00081 {
00082   InvalidNodeIdException (const unsigned id) :
00083     TopologicalMapException (format ("%1% is not a valid node id.  This "
00084                                      "exception is probably because somewhere"
00085                                      " in the code, a grid id is being left "
00086                                      "uninitialized") % id) {}
00087 };      
00088 
00091 struct InvalidEdgeIdException: public TopologicalMapException
00092 {
00093   InvalidEdgeIdException (const unsigned id) :
00094     TopologicalMapException (format ("%1% is not a valid edge id.  This "
00095                                      "exception is probably because somewhere"
00096                                      " in the code, an edge id is being left"
00097                                      " uninitialized.") % id) {}
00098 };      
00099 
00100 
00102 struct DuplicateNodeIdException: public TopologicalMapException
00103 {
00104   DuplicateNodeIdException (const unsigned id):
00105     TopologicalMapException(format("Node %1% already exists") % id), id(id) {}
00106   const unsigned id;
00107 };
00108 
00109 
00111 struct DuplicateEdgeIdException: public TopologicalMapException
00112 {
00113   DuplicateEdgeIdException (const unsigned id):
00114     TopologicalMapException(format("Edge %1% already exists") % id), id(id) {}
00115   const unsigned id;
00116 };
00117 
00119 struct ParallelEdgeException: public TopologicalMapException
00120 {
00121   ParallelEdgeException (const unsigned n1, const unsigned n2) :
00122     TopologicalMapException (format ("Edge between %1% and %2% already existed")
00123                              % n1 % n2) {}
00124 };
00125 
00127 struct GridFrameNameException: public TopologicalMapException
00128 {
00129   GridFrameNameException (const string& frame) :
00130     TopologicalMapException (format ("Frame %1% was not of the form 'gridXXX'")
00131                              % frame) {}
00132 };      
00133 
00134 } // namespace
00135 
00136 #endif // include guard


topological_map_2d
Author(s): Bhaskara Marthi
autogenerated on Sun Jan 5 2014 11:39:24