From f3459a8223c11c1ee228845b56f82dc1923ba9dd Mon Sep 17 00:00:00 2001
From: Mansard <nmansard@laas.fr>
Date: Thu, 27 Jan 2011 18:26:36 +0100
Subject: [PATCH] IVIGIT.

---
 .../dynamic-graph/python/exception-python.hh  | 62 +++++++++++++++
 src/CMakeLists.txt                            |  1 +
 src/exception-python.cc                       | 75 +++++++++++++++++++
 3 files changed, 138 insertions(+)
 create mode 100644 include/dynamic-graph/python/exception-python.hh
 create mode 100644 src/exception-python.cc

diff --git a/include/dynamic-graph/python/exception-python.hh b/include/dynamic-graph/python/exception-python.hh
new file mode 100644
index 0000000..ad34ce0
--- /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 7b13284..42e4b2a 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 0000000..84d59d1
--- /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:
+ */
-- 
GitLab