diff --git a/include/dynamic-graph/python/exception-python.hh b/include/dynamic-graph/python/exception-python.hh new file mode 100644 index 0000000000000000000000000000000000000000..ad34ce03748a7dbe7912f0a4ec5c6e12a7bae525 --- /dev/null +++ b/include/dynamic-graph/python/exception-python.hh @@ -0,0 +1,62 @@ +// -*- mode: c++ -*- +// Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, +// JRL, CNRS/AIST. +// +// This file is part of dynamic-graph. +// dynamic-graph is free software: you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation, either version 3 of +// the License, or (at your option) any later version. +// +// dynamic-graph is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Lesser Public License for more details. You should have +// received a copy of the GNU Lesser General Public License along with +// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. + +#ifndef DYNAMIC_GRAPH_PYTHON_EXCEPTION_PYTHON_H +# define DYNAMIC_GRAPH_PYTHON_EXCEPTION_PYTHON_H +# include <string> + +# include <dynamic-graph/fwd.hh> +# include <dynamic-graph/dynamic-graph-api.h> +# include <dynamic-graph/exception-abstract.h> + +namespace dynamicgraph { + namespace python { + + /// \ingroup error + /// + /// \brief Generic error class. + class DYNAMIC_GRAPH_DLLAPI ExceptionPython : public ExceptionAbstract + { + public: + enum ErrorCodeEnum + { + GENERIC + ,VALUE_PARSING + ,VECTOR_PARSING + ,MATRIX_PARSING + }; + + static const std::string EXCEPTION_NAME; + + explicit ExceptionPython (const ExceptionPython::ErrorCodeEnum& errcode, + const std::string & msg = ""); + + ExceptionPython (const ExceptionPython::ErrorCodeEnum& errcode, + const std::string& msg, const char* format, ...); + + virtual ~ExceptionPython () throw () + {} + + virtual const std::string& getExceptionName () const + { + return ExceptionPython::EXCEPTION_NAME; + } + }; + } // end of namespace python +} // end of namespace dynamicgraph + +#endif //! DYNAMIC_GRAPH_PYTHON_EXCEPTION_PYTHON_H diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7b1328457f0d3e79fcf492d8ee6d6437712ccfe0..42e4b2ac82cc303538d5b5bae3c2734db193585d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,6 +66,7 @@ SET(PYTHON_MODULE wrap) ADD_LIBRARY(${PYTHON_MODULE} MODULE + exception-python.cc dynamic-graph-py.cc signal-base-py.cc entity-py.cc diff --git a/src/exception-python.cc b/src/exception-python.cc new file mode 100644 index 0000000000000000000000000000000000000000..84d59d1d0c54d8d0fb7b2ce79c005b5d07856658 --- /dev/null +++ b/src/exception-python.cc @@ -0,0 +1,75 @@ +/* + * Copyright 2010, + * François Bleibel, + * Olivier Stasse, + * + * CNRS/AIST + * + * This file is part of dynamic-graph. + * dynamic-graph is free software: you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * dynamic-graph is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. You should + * have received a copy of the GNU Lesser General Public License along + * with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <dynamic-graph/python/exception-python.hh> +#include <dynamic-graph/debug.h> +#include <stdarg.h> +#include <cstdio> + +namespace dynamicgraph { + namespace python { + + /* --------------------------------------------------------------------- */ + /* --- CLASS ----------------------------------------------------------- */ + /* --------------------------------------------------------------------- */ + + const std::string ExceptionPython::EXCEPTION_NAME = "Python"; + + ExceptionPython:: + ExceptionPython ( const ExceptionPython::ErrorCodeEnum& errcode, + const std::string & msg ) + :ExceptionAbstract(errcode,msg) + { + dgDEBUGF( 15,"Created with message <%s>.",msg.c_str ()); + dgDEBUG( 1) <<"Created with message <%s>."<<msg<<std::endl; + } + + ExceptionPython:: + ExceptionPython ( const ExceptionPython::ErrorCodeEnum& errcode, + const std::string & msg,const char* format, ... ) + :ExceptionAbstract(errcode,msg) + { + va_list args; + va_start(args,format); + + const unsigned int SIZE = 256; + char buffer[SIZE]; + vsnprintf(buffer,SIZE,format,args); + + dgDEBUG(15) <<"Created "<<" with message <" + <<msg<<"> and buffer <"<<buffer<<">. "<<std::endl; + + message += buffer; + + va_end(args); + + dgDEBUG(1) << "Throw exception " << EXCEPTION_NAME << "[#" << errcode<<"]: " + <<"<"<< message << ">."<<std::endl; + + } + + } // namespace dynamicgraph +} // namespace python + +/* + * Local variables: + * c-basic-offset: 2 + * End: + */