From 4e5c530cd695b4c5807a16b017b3fa9ef1d61886 Mon Sep 17 00:00:00 2001 From: beaufour Date: Fri, 5 May 2006 18:28:27 +0000 Subject: Oui bon j'ai oublie de commite et ca compile. --- i/marvin/src/utils/Makefile.defs | 2 +- i/marvin/src/utils/signalhandler.cc | 66 -------------------------------- i/marvin/src/utils/signalhandler.hh | 1 + i/marvin/src/utils/signalhandler.tcc | 66 ++++++++++++++++++++++++++++++++ i/marvin/src/utils/test_signalHandler.cc | 15 -------- i/marvin/src/utils/test_signalhandler.cc | 15 ++++++++ 6 files changed, 83 insertions(+), 82 deletions(-) delete mode 100644 i/marvin/src/utils/signalhandler.cc create mode 100644 i/marvin/src/utils/signalhandler.tcc delete mode 100644 i/marvin/src/utils/test_signalHandler.cc create mode 100644 i/marvin/src/utils/test_signalhandler.cc diff --git a/i/marvin/src/utils/Makefile.defs b/i/marvin/src/utils/Makefile.defs index f9ed92a..8eb0711 100644 --- a/i/marvin/src/utils/Makefile.defs +++ b/i/marvin/src/utils/Makefile.defs @@ -8,4 +8,4 @@ test_callback_OBJECTS = test_callback.o test_bind_OBJECTS = test_bind.o -test_signalhandler_OBJECT = testsignalhandler.o +test_signalhandler_OBJECTS = test_signalhandler.o diff --git a/i/marvin/src/utils/signalhandler.cc b/i/marvin/src/utils/signalhandler.cc deleted file mode 100644 index 04a1660..0000000 --- a/i/marvin/src/utils/signalhandler.cc +++ /dev/null @@ -1,66 +0,0 @@ -// signalhandler.cc -// // // marvin - programme du robot 2006. {{{ -// // // -// // // Copyright (C) 2003-2006 Sebastien Beaufour -// // // -// // // Robot APB Team/Efrei 2006. -// // // 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 "signalhandler.hh" - -/// reset NEED a default reset, so here is a default reset with nothing inside -template void SignalHandler::DefaultReset (void) -{ - // Nothing -} - -// Now we can set the default value to reset -template Callback SignalHandler::reset=SignalHandler::DefaultReset; - -///Static member which will be use by sigaction -template void SignalHandler::trapsigint(int a) -{ - std::cout << "Trap du crtl+c "<< std::endl; - reset(); -} - -///Function to bind to the function to be called when signal il caught -template void SignalHandler::bind(Callback r) -{ - reset=r; - action.sa_handler = trapsigint; - action.sa_flags = SA_ONESHOT; - sigaction(sig,&action,NULL); -} - -/// Constructor, nothing to do -template SignalHandler::SignalHandler() -{ - //nada -} - -///Destructor, put the old sig handler back -template SignalHandler::~SignalHandler() -{ - sigaction(sig,&old,NULL); -} diff --git a/i/marvin/src/utils/signalhandler.hh b/i/marvin/src/utils/signalhandler.hh index 07f6970..43e0f89 100644 --- a/i/marvin/src/utils/signalhandler.hh +++ b/i/marvin/src/utils/signalhandler.hh @@ -46,6 +46,7 @@ class SignalHandler SignalHandler(); ~SignalHandler(); }; +#include "signalhandler.tcc" #endif // end of signalhandler_hh diff --git a/i/marvin/src/utils/signalhandler.tcc b/i/marvin/src/utils/signalhandler.tcc new file mode 100644 index 0000000..04a1660 --- /dev/null +++ b/i/marvin/src/utils/signalhandler.tcc @@ -0,0 +1,66 @@ +// signalhandler.cc +// // // marvin - programme du robot 2006. {{{ +// // // +// // // Copyright (C) 2003-2006 Sebastien Beaufour +// // // +// // // Robot APB Team/Efrei 2006. +// // // 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 "signalhandler.hh" + +/// reset NEED a default reset, so here is a default reset with nothing inside +template void SignalHandler::DefaultReset (void) +{ + // Nothing +} + +// Now we can set the default value to reset +template Callback SignalHandler::reset=SignalHandler::DefaultReset; + +///Static member which will be use by sigaction +template void SignalHandler::trapsigint(int a) +{ + std::cout << "Trap du crtl+c "<< std::endl; + reset(); +} + +///Function to bind to the function to be called when signal il caught +template void SignalHandler::bind(Callback r) +{ + reset=r; + action.sa_handler = trapsigint; + action.sa_flags = SA_ONESHOT; + sigaction(sig,&action,NULL); +} + +/// Constructor, nothing to do +template SignalHandler::SignalHandler() +{ + //nada +} + +///Destructor, put the old sig handler back +template SignalHandler::~SignalHandler() +{ + sigaction(sig,&old,NULL); +} diff --git a/i/marvin/src/utils/test_signalHandler.cc b/i/marvin/src/utils/test_signalHandler.cc deleted file mode 100644 index e25b1d2..0000000 --- a/i/marvin/src/utils/test_signalHandler.cc +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include "signalhandler.hh" - -void res() -{ - std::cout << "RESET" << std::endl; -} - -int main() -{ - SignalHandler test; - test.bind(res); - while(1); - return 0; -} diff --git a/i/marvin/src/utils/test_signalhandler.cc b/i/marvin/src/utils/test_signalhandler.cc new file mode 100644 index 0000000..e25b1d2 --- /dev/null +++ b/i/marvin/src/utils/test_signalhandler.cc @@ -0,0 +1,15 @@ +#include +#include "signalhandler.hh" + +void res() +{ + std::cout << "RESET" << std::endl; +} + +int main() +{ + SignalHandler test; + test.bind(res); + while(1); + return 0; +} -- cgit v1.2.3