summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/vision/thresholds.cc
diff options
context:
space:
mode:
Diffstat (limited to '2003/i/buzz/src/vision/thresholds.cc')
-rw-r--r--2003/i/buzz/src/vision/thresholds.cc55
1 files changed, 55 insertions, 0 deletions
diff --git a/2003/i/buzz/src/vision/thresholds.cc b/2003/i/buzz/src/vision/thresholds.cc
new file mode 100644
index 0000000..23c37e5
--- /dev/null
+++ b/2003/i/buzz/src/vision/thresholds.cc
@@ -0,0 +1,55 @@
+// Classe Thresholds - Chargement de seuils
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+#include "thresholds.h"
+
+#include <stdio.h>
+
+// Constructeur.
+Thresholds::Thresholds (const char *filename)
+{
+ FILE *fp;
+ Threshold **pt;
+ int n;
+ int zone, ym, yM, um, uM, vm, vM;
+ // Ouvre le fichier.
+ fp = fopen (filename, "r");
+ if (!fp) throw "Thresholds::Thresholds: fopen failled";
+ // Charge chaque lignes.
+ pt = &m_thresholds;
+ while (!feof (fp))
+ {
+ n = fscanf (fp, "%d %d %d %d %d %d %d\n", &zone, &ym, &yM, &um,
+ &uM, &vm, &vM);
+ if (n != 7)
+ {
+ fclose (fp);
+ throw "Thresholds::Thresholds: Bad format.";
+ }
+ // Ajoute un nouveaux seuil a la collection.
+ *pt = new Threshold;
+ (*pt)->zone = zone;
+ (*pt)->ym = ym;
+ (*pt)->yM = yM;
+ (*pt)->um = um;
+ (*pt)->uM = uM;
+ (*pt)->vm = vm;
+ (*pt)->vM = vM;
+ pt = &(*pt)->next;
+ }
+ // Ferme la liste de seuils.
+ *pt = 0;
+ // Ferme le fichier.
+ fclose (fp);
+}
+
+// Destructeur.
+Thresholds::~Thresholds (void)
+{
+ Threshold *p, *p2;
+ for (p = m_thresholds; p; p = p2)
+ {
+ p2 = p->next;
+ delete p;
+ }
+}