diff --git a/eo/src/Makefile.am b/eo/src/Makefile.am index 4efd7604..bb878cc8 100644 --- a/eo/src/Makefile.am +++ b/eo/src/Makefile.am @@ -8,7 +8,7 @@ SUBDIRS = es ga gp utils other CPPFLAGS = -O2 lib_LIBRARIES = libeo.a -libeo_a_SOURCES = eoFunctorStore.cpp eoPersistent.cpp eoPrintable.cpp +libeo_a_SOURCES = eoFunctorStore.cpp eoPersistent.cpp eoPrintable.cpp eoCtrlCContinue.cpp libeoincdir = $(includedir)/eo libeoinc_HEADERS = *.h eo diff --git a/eo/src/eoCtrlCContinue.cpp b/eo/src/eoCtrlCContinue.cpp new file mode 100644 index 00000000..ce25e65d --- /dev/null +++ b/eo/src/eoCtrlCContinue.cpp @@ -0,0 +1,45 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +//----------------------------------------------------------------------------- +// eoCtrlCContinue.cpp +// (c) EEAAX 1996 - GeNeura Team, 1998 - Maarten Keijzer 2000 +/* + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: todos@geneura.ugr.es, http://geneura.ugr.es + Marc.Schoenauer@polytechnique.fr + mak@dhi.dk +*/ +//----------------------------------------------------------------------------- +#include +#include + +// --- Global variables - but don't know what else to do - MS --- +static bool arret_demande = false; +static bool existCtrlCContinue = false; + +// +// The signal handler - installed in the eoCtrlCContinue Ctor +// +void signal_handler( int sig ) +// --------------------------- +{ + // --- On veut la paix, jusqu'a la fin --- + signal( SIGINT, SIG_IGN ); + signal( SIGQUIT, SIG_IGN ); + cerr << "Ctrl C entered ... closing down" << endl ; + arret_demande = true; +} + diff --git a/eo/src/eoCtrlCContinue.h b/eo/src/eoCtrlCContinue.h index 3a2adfcb..66708083 100644 --- a/eo/src/eoCtrlCContinue.h +++ b/eo/src/eoCtrlCContinue.h @@ -23,39 +23,18 @@ mak@dhi.dk */ //----------------------------------------------------------------------------- +// the same thing can probably be done in MS environement, but I hoave no way +// to test it so at the moment it is commented out when in MSVC +#ifndef _MSC_VER + #ifndef eoCtrlCContinue_h #define eoCtrlCContinue_h -#include #include -// --- Global variables - but don't know what else to do - MS --- -static bool arret_demande = false; -static bool existCtrlCContinue = false; - -// -// The signal handler - installed in the eoCtrlCContinue Ctor -// -void signal_handler( int sig ) -// --------------------------- -{ - // --- On veut la paix, jusqu'a la fin --- - signal( SIGINT, SIG_IGN ); - signal( SIGQUIT, SIG_IGN ); - cerr << "Ctrl C entered ... closing down" << endl ; - arret_demande = true; -} - -// -// Permet de savoir si on a appuye sur Control-C -// (renvoie alors 1) -// -int AppliArretDemande() -// -------------------- -{ - return arret_demande; -} +extern bool arret_demande, existCtrlCContinue; +extern void signal_handler( int sig ); /** @@ -67,7 +46,7 @@ class eoCtrlCContinue: public eoContinue public: /// Ctor : installs the signal handler - eoCtrlCContinue() + eoCtrlCContinue() { // First checks that no other eoCtrlCContinue does exist if (existCtrlCContinue) @@ -85,8 +64,9 @@ public: return false; return true; } - }; #endif + +#endif // of MSVC comment-out diff --git a/eo/src/eoPop.h b/eo/src/eoPop.h index caebf929..c5323644 100644 --- a/eo/src/eoPop.h +++ b/eo/src/eoPop.h @@ -234,6 +234,22 @@ class eoPop: public vector, public eoObject, public eoPersistent std::swap(static_cast& >(*this), static_cast& >(other)); } + /** + * Prints sorted pop but does NOT modify it! + * + * @param _os A ostream. + */ + virtual void sortedPrintOn(ostream& _os) const + { + vector result; + sort(result); + _os << size() << '\n'; + for (unsigned i = 0; i < size(); ++i) + { + _os << *result[i] << endl; + } + } + /** * Write object. It's called printOn since it prints the object _on_ a stream. * @param _os A ostream. @@ -242,7 +258,7 @@ class eoPop: public vector, public eoObject, public eoPersistent { _os << size() << '\n'; copy( begin(), end(), ostream_iterator( _os, "\n") ); - }; + } /** @name Methods from eoObject */ //@{