summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/automate/grafcet.cc
diff options
context:
space:
mode:
authorschodet2003-05-08 15:18:58 +0000
committerschodet2003-05-08 15:18:58 +0000
commitfa92b08399708d7846d61094a9b73983684d2138 (patch)
treeeb511beea201931788b9d3b4b7790f7160d02734 /2003/i/buzz/src/automate/grafcet.cc
parente5287bcd6975507ce4f03b4dad082c3cdccf96ca (diff)
Ajout du module automate
Diffstat (limited to '2003/i/buzz/src/automate/grafcet.cc')
-rw-r--r--2003/i/buzz/src/automate/grafcet.cc54
1 files changed, 54 insertions, 0 deletions
diff --git a/2003/i/buzz/src/automate/grafcet.cc b/2003/i/buzz/src/automate/grafcet.cc
new file mode 100644
index 0000000..b2af52e
--- /dev/null
+++ b/2003/i/buzz/src/automate/grafcet.cc
@@ -0,0 +1,54 @@
+// grafcet.cc
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+//
+#include "grafcet.h"
+#include "erreur/erreur.h"
+
+Automate::Grafcet *parse_file (const char *filename);
+
+namespace Automate
+{
+
+// Pointeur vers l'instance unique du grafcet.
+Grafcet *Grafcet::m_instance = 0;
+
+// Constructeur.
+Grafcet::Grafcet ()
+{
+}
+
+Grafcet::Grafcet (const char *filename)
+{
+ Grafcet *g = parse_file (filename);
+ if (!g) throw ErreurFatale ("Impossible de lire le grafcet");
+ m_grafcet = g->m_grafcet;
+ delete g;
+}
+
+// Destructeur.
+Grafcet::~Grafcet ()
+{
+ for (vector<GrafcetElem>::iterator i = m_grafcet.begin ();
+ i != m_grafcet.end (); ++i)
+ {
+ switch (i->type)
+ {
+ case etape:
+ delete i->elem.etape;
+ break;
+ case action:
+ delete i->elem.action;
+ break;
+ case receptivite:
+ delete i->elem.receptivite;
+ break;
+ case transition:
+ delete i->elem.transition;
+ break;
+ }
+ }
+}
+
+
+} // namespace Automate