summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/erreur
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/erreur')
-rw-r--r--2004/i/nono/src/erreur/Makefile.defs4
-rw-r--r--2004/i/nono/src/erreur/erreur.cc31
-rw-r--r--2004/i/nono/src/erreur/erreur.h39
3 files changed, 74 insertions, 0 deletions
diff --git a/2004/i/nono/src/erreur/Makefile.defs b/2004/i/nono/src/erreur/Makefile.defs
new file mode 100644
index 0000000..9ff08a8
--- /dev/null
+++ b/2004/i/nono/src/erreur/Makefile.defs
@@ -0,0 +1,4 @@
+LIBS += erreur.a
+erreur_a_SOURCES = erreur.cc
+
+erreur.a: ${erreur_a_SOURCES:%.cc=erreur.a(%.o)}
diff --git a/2004/i/nono/src/erreur/erreur.cc b/2004/i/nono/src/erreur/erreur.cc
new file mode 100644
index 0000000..241b243
--- /dev/null
+++ b/2004/i/nono/src/erreur/erreur.cc
@@ -0,0 +1,31 @@
+// erreur.cc
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+//
+#include "erreur.h"
+
+#include <stdio.h>
+
+// Retourne une description de l'erreur.
+const char *
+Erreur::what () const throw ()
+{
+ return "Erreur non spécifiée.\n";
+}
+
+const char *
+ErreurFatale::what () const throw ()
+{
+ return m_descr;
+}
+
+const char *
+ErreurConfig::what () const throw ()
+{
+ static char descr[1024];
+ if (!m_id)
+ sprintf (descr, "%s: %s", m_file, m_descr);
+ else
+ sprintf (descr, "%s: %s: %s", m_file, m_id, m_descr);
+ return descr;
+}
diff --git a/2004/i/nono/src/erreur/erreur.h b/2004/i/nono/src/erreur/erreur.h
new file mode 100644
index 0000000..fcbb0eb
--- /dev/null
+++ b/2004/i/nono/src/erreur/erreur.h
@@ -0,0 +1,39 @@
+#ifndef erreur_h
+#define erreur_h
+// erreur.h
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+
+#include <exception>
+
+class Erreur : public std::exception
+{
+ public:
+ // Retourne une description de l'erreur.
+ virtual const char *what () const throw ();
+};
+
+class ErreurFatale : public Erreur
+{
+ const char *m_descr;
+ public:
+ ErreurFatale (const char *descr) { m_descr = descr; }
+ virtual const char *what () const throw ();
+};
+
+class ErreurConfig : public Erreur
+{
+ const char *m_file;
+ const char *m_id;
+ const char *m_descr;
+ public:
+ ErreurConfig (const char *file, const char *id,
+ const char *descr)
+ { m_file = file; m_id = id; m_descr = descr; }
+ ErreurConfig (const char *file, const char *descr)
+ { m_file = file; m_id = 0; m_descr = descr; }
+ virtual const char *what () const throw ();
+};
+
+
+#endif // erreur_h