From 9fdd6704947174fae292dfc6e14cc1029a7f7a6c Mon Sep 17 00:00:00 2001 From: schodet Date: Sat, 7 Feb 2004 16:55:41 +0000 Subject: Initial revision --- 2004/i/nono/src/date/Makefile.defs | 8 +++++ 2004/i/nono/src/date/date.cc | 74 ++++++++++++++++++++++++++++++++++++++ 2004/i/nono/src/date/date.h | 54 ++++++++++++++++++++++++++++ 2004/i/nono/src/date/test_date.cc | 42 ++++++++++++++++++++++ 4 files changed, 178 insertions(+) create mode 100644 2004/i/nono/src/date/Makefile.defs create mode 100644 2004/i/nono/src/date/date.cc create mode 100644 2004/i/nono/src/date/date.h create mode 100644 2004/i/nono/src/date/test_date.cc (limited to '2004/i/nono/src/date') diff --git a/2004/i/nono/src/date/Makefile.defs b/2004/i/nono/src/date/Makefile.defs new file mode 100644 index 0000000..1d4474c --- /dev/null +++ b/2004/i/nono/src/date/Makefile.defs @@ -0,0 +1,8 @@ +LIBS += date.a +TARGETS += test_date +date_a_SOURCES = date.cc +test_date_SOURCES = test_date.cc date.a + +test_date: $(test_date_SOURCES:%.cc=%.o) + +date.a: ${date_a_SOURCES:%.cc=date.a(%.o)} diff --git a/2004/i/nono/src/date/date.cc b/2004/i/nono/src/date/date.cc new file mode 100644 index 0000000..25243ad --- /dev/null +++ b/2004/i/nono/src/date/date.cc @@ -0,0 +1,74 @@ +// date.cc +// nono - programme du robot 2004. {{{ +// +// Copyright (C) 2004 Nicolas Schodet +// +// Robot APB Team/Efrei 2004. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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 Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "date.h" + +#include +#include + +// Pointeur vers l'instance unique. +Date *Date::m_instance = 0; + +// Constructeur. +Date::Date (void) +{ + m_start = getDate (); + m_round = -1; + m_instance = this; +} + +// Destructeur. +Date::~Date (void) +{ + m_instance = 0; +} + +// Signale le début du match. +void +Date::startRound (void) +{ + m_round = getDate (); +} + +// Retourne la date système. +int +Date::getDate (void) +{ + timeval tv; + gettimeofday (&tv, 0); + // Ça veut dire, un bug tous les 11 jours... + // Cette année : le 26/05/2003, et le 06/05/2003. Mais le robot n'est pas + // à l'heure de toute façon. + return (tv.tv_sec % 1000000) * 1000 + tv.tv_usec / 1000; +} + +// Attend un nombre de millisecondes. +void +Date::wait (int t) +{ + timespec ts, r; + ts.tv_sec = t / 1000; + ts.tv_nsec = (t % 1000) * 1000000; + nanosleep (&ts, &r); +} diff --git a/2004/i/nono/src/date/date.h b/2004/i/nono/src/date/date.h new file mode 100644 index 0000000..1a40adc --- /dev/null +++ b/2004/i/nono/src/date/date.h @@ -0,0 +1,54 @@ +#ifndef date_h +#define date_h +// date.h +// nono - programme du robot 2004. {{{ +// +// Copyright (C) 2004 Nicolas Schodet +// +// Robot APB Team/Efrei 2004. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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 Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +class Date +{ + // On travaille en millième de seconde, ça nous fait 24 jours dans un int. + int m_start, m_round; + // Pointeur vers l'instance unique. + static Date *m_instance; + public: + // Constructeur. + Date (void); + // Destructeur. + ~Date (void); + // Retourne une référence vers l'instance unique. + static Date &getInstance (void) { return *m_instance; } + // Retourne la date depuis le début du match, en millième de secondes. + int round (void) { return m_round == -1 ? 0 : getDate () - m_round; } + // Retourne la date depuis le début du programme. + int start (void) { return getDate () - m_start; } + // Signale le début du match. + void startRound (void); + // Attend un nombre de millisecondes. + static void wait (int t); + private: + // Retourne la date système. + int getDate (void); +}; + +#endif // date_h diff --git a/2004/i/nono/src/date/test_date.cc b/2004/i/nono/src/date/test_date.cc new file mode 100644 index 0000000..fe020e1 --- /dev/null +++ b/2004/i/nono/src/date/test_date.cc @@ -0,0 +1,42 @@ +// test_date.cc +// nono - programme du robot 2004. {{{ +// +// Copyright (C) 2004 Nicolas Schodet +// +// Robot APB Team/Efrei 2004. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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 Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "date.h" + +#include +#include + +int +main (void) +{ + Date d; + sleep (2); + cout << "date " << d.start () << ' ' << d.round () << endl; + d.startRound (); + sleep (1); + cout << "date " << d.start () << ' ' << d.round () << endl; + sleep (2); + cout << "date " << d.start () << ' ' << d.round () << endl; + return 0; +} -- cgit v1.2.3