diff --git a/branches/rc2.0/.mpd.conf b/branches/rc2.0/.mpd.conf
new file mode 100644
index 000000000..bf47811ab
--- /dev/null
+++ b/branches/rc2.0/.mpd.conf
@@ -0,0 +1 @@
+secretword=Nothing
diff --git a/branches/rc2.0/.project b/branches/rc2.0/.project
new file mode 100644
index 000000000..daf60532e
--- /dev/null
+++ b/branches/rc2.0/.project
@@ -0,0 +1,11 @@
+
+
+ trunk
+
+
+
+
+
+
+
+
diff --git a/branches/rc2.0/AUTHORS b/branches/rc2.0/AUTHORS
new file mode 100644
index 000000000..ff1c0cec0
--- /dev/null
+++ b/branches/rc2.0/AUTHORS
@@ -0,0 +1,12 @@
+Jean-Charles Boisson
+Sébastien Cahon
+Clive Canape
+Laetitia Jourdan
+Thomas Legrand
+Arnaud Liefooghe
+Nouredine Melab
+El-Ghazali Talbi
+Alexandru-Adrian Tantar
+Sebastien Verel
+Jérémie Humeau
+Karima Boufaras
diff --git a/branches/rc2.0/LICENSE b/branches/rc2.0/LICENSE
new file mode 100644
index 000000000..294819b46
--- /dev/null
+++ b/branches/rc2.0/LICENSE
@@ -0,0 +1,1019 @@
+CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to
+ users,
+ * secondly, the election of a governing law, French law, with which
+ it is conformant, both as regards the law of torts and
+ intellectual property law, and the protection that it offers to
+ both authors and holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat à l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of these rights is conditional upon certain obligations
+for users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical
+ medium;
+ * (ii) the first time the Licensee exercises any of the rights
+ granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or
+ all medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission
+ or storage operation as regards the Software, that it is entitled
+ to carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows future Licensees unhindered access to
+the full Source Code of the Software by indicating how to access it, it
+being understood that the additional cost of acquiring the Source Code
+shall not exceed the cost of transferring the data.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the object code of the Modified
+Software is redistributed, the Licensee allows future Licensees
+unhindered access to the full source code of the Modified Software by
+indicating how to access it, it being understood that the additional
+cost of acquiring the source code shall not exceed the cost of
+transferring the data.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 COMPATIBILITY WITH THE GNU GPL
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL in the Modified or unmodified Software,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies
+ of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-à-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 2.0 dated 2006-09-05.
+
+------------------------------------------------------------------------------
+
+CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
+
+
+ Avertissement
+
+Ce contrat est une licence de logiciel libre issue d'une concertation
+entre ses auteurs afin que le respect de deux grands principes préside à
+sa rédaction:
+
+ * d'une part, le respect des principes de diffusion des logiciels
+ libres: accès au code source, droits étendus conférés aux
+ utilisateurs,
+ * d'autre part, la désignation d'un droit applicable, le droit
+ français, auquel elle est conforme, tant au regard du droit de la
+ responsabilité civile que du droit de la propriété intellectuelle
+ et de la protection qu'il offre aux auteurs et titulaires des
+ droits patrimoniaux sur un logiciel.
+
+Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel]
+L[ibre]) sont:
+
+Commissariat à l'Energie Atomique - CEA, établissement public de
+recherche à caractère scientifique, technique et industriel, dont le
+siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
+
+Centre National de la Recherche Scientifique - CNRS, établissement
+public à caractère scientifique et technologique, dont le siège est
+situé 3 rue Michel-Ange, 75794 Paris cedex 16.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, établissement public à caractère scientifique et technologique,
+dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
+Le Chesnay cedex.
+
+
+ Préambule
+
+Ce contrat est une licence de logiciel libre dont l'objectif est de
+conférer aux utilisateurs la liberté de modification et de
+redistribution du logiciel régi par cette licence dans le cadre d'un
+modèle de diffusion en logiciel libre.
+
+L'exercice de ces libertés est assorti de certains devoirs à la charge
+des utilisateurs afin de préserver ce statut au cours des
+redistributions ultérieures.
+
+L'accessibilité au code source et les droits de copie, de modification
+et de redistribution qui en découlent ont pour contrepartie de n'offrir
+aux utilisateurs qu'une garantie limitée et de ne faire peser sur
+l'auteur du logiciel, le titulaire des droits patrimoniaux et les
+concédants successifs qu'une responsabilité restreinte.
+
+A cet égard l'attention de l'utilisateur est attirée sur les risques
+associés au chargement, à l'utilisation, à la modification et/ou au
+développement et à la reproduction du logiciel par l'utilisateur étant
+donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+manipuler et qui le réserve donc à des développeurs ou des
+professionnels avertis possédant des connaissances informatiques
+approfondies. Les utilisateurs sont donc invités à charger et tester
+l'adéquation du logiciel à leurs besoins dans des conditions permettant
+d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
+généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
+sécurité. Ce contrat peut être reproduit et diffusé librement, sous
+réserve de le conserver en l'état, sans ajout ni suppression de clauses.
+
+Ce contrat est susceptible de s'appliquer à tout logiciel dont le
+titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
+dispositions qu'il contient.
+
+
+ Article 1 - DEFINITIONS
+
+Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
+lettre capitale, auront la signification suivante:
+
+Contrat: désigne le présent contrat de licence, ses éventuelles versions
+postérieures et annexes.
+
+Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
+Source et le cas échéant sa documentation, dans leur état au moment de
+l'acceptation du Contrat par le Licencié.
+
+Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
+éventuellement de Code Objet et le cas échéant sa documentation, dans
+leur état au moment de leur première diffusion sous les termes du Contrat.
+
+Logiciel Modifié: désigne le Logiciel modifié par au moins une
+Contribution.
+
+Code Source: désigne l'ensemble des instructions et des lignes de
+programme du Logiciel et auquel l'accès est nécessaire en vue de
+modifier le Logiciel.
+
+Code Objet: désigne les fichiers binaires issus de la compilation du
+Code Source.
+
+Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
+sur le Logiciel Initial.
+
+Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
+Contrat.
+
+Contributeur: désigne le Licencié auteur d'au moins une Contribution.
+
+Concédant: désigne le Titulaire ou toute personne physique ou morale
+distribuant le Logiciel sous le Contrat.
+
+Contribution: désigne l'ensemble des modifications, corrections,
+traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
+le Logiciel par tout Contributeur, ainsi que tout Module Interne.
+
+Module: désigne un ensemble de fichiers sources y compris leur
+documentation qui permet de réaliser des fonctionnalités ou services
+supplémentaires à ceux fournis par le Logiciel.
+
+Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
+Module et le Logiciel s'exécutent dans des espaces d'adressage
+différents, l'un appelant l'autre au moment de leur exécution.
+
+Module Interne: désigne tout Module lié au Logiciel de telle sorte
+qu'ils s'exécutent dans le même espace d'adressage.
+
+GNU GPL: désigne la GNU General Public License dans sa version 2 ou
+toute version ultérieure, telle que publiée par Free Software Foundation
+Inc.
+
+Parties: désigne collectivement le Licencié et le Concédant.
+
+Ces termes s'entendent au singulier comme au pluriel.
+
+
+ Article 2 - OBJET
+
+Le Contrat a pour objet la concession par le Concédant au Licencié d'une
+licence non exclusive, cessible et mondiale du Logiciel telle que
+définie ci-après à l'article 5 pour toute la durée de protection des droits
+portant sur ce Logiciel.
+
+
+ Article 3 - ACCEPTATION
+
+3.1 L'acceptation par le Licencié des termes du Contrat est réputée
+acquise du fait du premier des faits suivants:
+
+ * (i) le chargement du Logiciel par tout moyen notamment par
+ téléchargement à partir d'un serveur distant ou par chargement à
+ partir d'un support physique;
+ * (ii) le premier exercice par le Licencié de l'un quelconque des
+ droits concédés par le Contrat.
+
+3.2 Un exemplaire du Contrat, contenant notamment un avertissement
+relatif aux spécificités du Logiciel, à la restriction de garantie et à
+la limitation à un usage par des utilisateurs expérimentés a été mis à
+disposition du Licencié préalablement à son acceptation telle que
+définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
+connaissance.
+
+
+ Article 4 - ENTREE EN VIGUEUR ET DUREE
+
+
+ 4.1 ENTREE EN VIGUEUR
+
+Le Contrat entre en vigueur à la date de son acceptation par le Licencié
+telle que définie en 3.1.
+
+
+ 4.2 DUREE
+
+Le Contrat produira ses effets pendant toute la durée légale de
+protection des droits patrimoniaux portant sur le Logiciel.
+
+
+ Article 5 - ETENDUE DES DROITS CONCEDES
+
+Le Concédant concède au Licencié, qui accepte, les droits suivants sur
+le Logiciel pour toutes destinations et pour la durée du Contrat dans
+les conditions ci-après détaillées.
+
+Par ailleurs, si le Concédant détient ou venait à détenir un ou
+plusieurs brevets d'invention protégeant tout ou partie des
+fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
+opposer les éventuels droits conférés par ces brevets aux Licenciés
+successifs qui utiliseraient, exploiteraient ou modifieraient le
+Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
+faire reprendre les obligations du présent alinéa aux cessionnaires.
+
+
+ 5.1 DROIT D'UTILISATION
+
+Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
+aux domaines d'application, étant ci-après précisé que cela comporte:
+
+ 1. la reproduction permanente ou provisoire du Logiciel en tout ou
+ partie par tout moyen et sous toute forme.
+
+ 2. le chargement, l'affichage, l'exécution, ou le stockage du
+ Logiciel sur tout support.
+
+ 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
+ fonctionnement afin de déterminer les idées et principes qui sont
+ à la base de n'importe quel élément de ce Logiciel; et ceci,
+ lorsque le Licencié effectue toute opération de chargement,
+ d'affichage, d'exécution, de transmission ou de stockage du
+ Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
+
+
+ 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
+
+Le droit d'apporter des Contributions comporte le droit de traduire,
+d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
+et le droit de reproduire le logiciel en résultant.
+
+Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
+réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
+cette Contribution et la date de création de celle-ci.
+
+
+ 5.3 DROIT DE DISTRIBUTION
+
+Le droit de distribution comporte notamment le droit de diffuser, de
+transmettre et de communiquer le Logiciel au public sur tout support et
+par tout moyen ainsi que le droit de mettre sur le marché à titre
+onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
+
+Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
+non, à des tiers dans les conditions ci-après détaillées.
+
+
+ 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
+
+Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
+sous forme de Code Source ou de Code Objet, à condition que cette
+distribution respecte les dispositions du Contrat dans leur totalité et
+soit accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
+le Licencié permette aux futurs Licenciés d'accéder facilement au Code
+Source complet du Logiciel en indiquant les modalités d'accès, étant
+entendu que le coût additionnel d'acquisition du Code Source ne devra
+pas excéder le simple coût de transfert des données.
+
+
+ 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
+
+Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
+de distribution du Logiciel Modifié en résultant sont alors soumises à
+l'intégralité des dispositions du Contrat.
+
+Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
+code source ou de code objet, à condition que cette distribution
+respecte les dispositions du Contrat dans leur totalité et soit
+accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le code objet du Logiciel Modifié est
+redistribué, le Licencié permette aux futurs Licenciés d'accéder
+facilement au code source complet du Logiciel Modifié en indiquant les
+modalités d'accès, étant entendu que le coût additionnel d'acquisition
+du code source ne devra pas excéder le simple coût de transfert des données.
+
+
+ 5.3.3 DISTRIBUTION DES MODULES EXTERNES
+
+Lorsque le Licencié a développé un Module Externe les conditions du
+Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
+sous un contrat de licence différent.
+
+
+ 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
+
+Le Licencié peut inclure un code soumis aux dispositions d'une des
+versions de la licence GNU GPL dans le Logiciel modifié ou non et
+distribuer l'ensemble sous les conditions de la même version de la
+licence GNU GPL.
+
+Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
+aux dispositions d'une des versions de la licence GNU GPL et distribuer
+l'ensemble sous les conditions de la même version de la licence GNU GPL.
+
+
+ Article 6 - PROPRIETE INTELLECTUELLE
+
+
+ 6.1 SUR LE LOGICIEL INITIAL
+
+Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
+Initial. Toute utilisation du Logiciel Initial est soumise au respect
+des conditions dans lesquelles le Titulaire a choisi de diffuser son
+oeuvre et nul autre n'a la faculté de modifier les conditions de
+diffusion de ce Logiciel Initial.
+
+Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
+par le Contrat et ce, pour la durée visée à l'article 4.2.
+
+
+ 6.2 SUR LES CONTRIBUTIONS
+
+Le Licencié qui a développé une Contribution est titulaire sur celle-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable.
+
+
+ 6.3 SUR LES MODULES EXTERNES
+
+Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable et reste libre du choix du contrat régissant
+sa diffusion.
+
+
+ 6.4 DISPOSITIONS COMMUNES
+
+Le Licencié s'engage expressément:
+
+ 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
+ mentions de propriété intellectuelle apposées sur le Logiciel;
+
+ 2. à reproduire à l'identique lesdites mentions de propriété
+ intellectuelle sur les copies du Logiciel modifié ou non.
+
+Le Licencié s'engage à ne pas porter atteinte, directement ou
+indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
+l'égard de son personnel toutes les mesures nécessaires pour assurer le
+respect des dits droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs.
+
+
+ Article 7 - SERVICES ASSOCIES
+
+7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
+prestations d'assistance technique ou de maintenance du Logiciel.
+
+Cependant le Concédant reste libre de proposer ce type de services. Les
+termes et conditions d'une telle assistance technique et/ou d'une telle
+maintenance seront alors déterminés dans un acte séparé. Ces actes de
+maintenance et/ou assistance technique n'engageront que la seule
+responsabilité du Concédant qui les propose.
+
+7.2 De même, tout Concédant est libre de proposer, sous sa seule
+responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
+lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
+dans les conditions qu'il souhaite. Cette garantie et les modalités
+financières de son application feront l'objet d'un acte séparé entre le
+Concédant et le Licencié.
+
+
+ Article 8 - RESPONSABILITE
+
+8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
+faculté, sous réserve de prouver la faute du Concédant concerné, de
+solliciter la réparation du préjudice direct qu'il subirait du fait du
+Logiciel et dont il apportera la preuve.
+
+8.2 La responsabilité du Concédant est limitée aux engagements pris en
+application du Contrat et ne saurait être engagée en raison notamment:
+(i) des dommages dus à l'inexécution, totale ou partielle, de ses
+obligations par le Licencié, (ii) des dommages directs ou indirects
+découlant de l'utilisation ou des performances du Logiciel subis par le
+Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
+particulier, les Parties conviennent expressément que tout préjudice
+financier ou commercial (par exemple perte de données, perte de
+bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
+manque à gagner, trouble commercial quelconque) ou toute action dirigée
+contre le Licencié par un tiers, constitue un dommage indirect et
+n'ouvre pas droit à réparation par le Concédant.
+
+
+ Article 9 - GARANTIE
+
+9.1 Le Licencié reconnaît que l'état actuel des connaissances
+scientifiques et techniques au moment de la mise en circulation du
+Logiciel ne permet pas d'en tester et d'en vérifier toutes les
+utilisations ni de détecter l'existence d'éventuels défauts. L'attention
+du Licencié a été attirée sur ce point sur les risques associés au
+chargement, à l'utilisation, la modification et/ou au développement et à
+la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
+
+Il relève de la responsabilité du Licencié de contrôler, par tous
+moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
+de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
+
+9.2 Le Concédant déclare de bonne foi être en droit de concéder
+l'ensemble des droits attachés au Logiciel (comprenant notamment les
+droits visés à l'article 5).
+
+9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
+Concédant sans autre garantie, expresse ou tacite, que celle prévue à
+l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
+son caractère sécurisé, innovant ou pertinent.
+
+En particulier, le Concédant ne garantit pas que le Logiciel est exempt
+d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
+avec l'équipement du Licencié et sa configuration logicielle ni qu'il
+remplira les besoins du Licencié.
+
+9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
+Logiciel ne porte pas atteinte à un quelconque droit de propriété
+intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
+autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
+profit du Licencié contre les actions en contrefaçon qui pourraient être
+diligentées au titre de l'utilisation, de la modification, et de la
+redistribution du Logiciel. Néanmoins, si de telles actions sont
+exercées contre le Licencié, le Concédant lui apportera son aide
+technique et juridique pour sa défense. Cette aide technique et
+juridique est déterminée au cas par cas entre le Concédant concerné et
+le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
+toute responsabilité quant à l'utilisation de la dénomination du
+Logiciel par le Licencié. Aucune garantie n'est apportée quant à
+l'existence de droits antérieurs sur le nom du Logiciel et sur
+l'existence d'une marque.
+
+
+ Article 10 - RESILIATION
+
+10.1 En cas de manquement par le Licencié aux obligations mises à sa
+charge par le Contrat, le Concédant pourra résilier de plein droit le
+Contrat trente (30) jours après notification adressée au Licencié et
+restée sans effet.
+
+10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
+utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
+licences qu'il aura concédées antérieurement à la résiliation du Contrat
+resteront valides sous réserve qu'elles aient été effectuées en
+conformité avec le Contrat.
+
+
+ Article 11 - DISPOSITIONS DIVERSES
+
+
+ 11.1 CAUSE EXTERIEURE
+
+Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
+d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
+fortuit ou une cause extérieure, telle que, notamment, le mauvais
+fonctionnement ou les interruptions du réseau électrique ou de
+télécommunication, la paralysie du réseau liée à une attaque
+informatique, l'intervention des autorités gouvernementales, les
+catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
+le feu, les explosions, les grèves et les conflits sociaux, l'état de
+guerre...
+
+11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
+plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
+Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
+intéressée à s'en prévaloir ultérieurement.
+
+11.3 Le Contrat annule et remplace toute convention antérieure, écrite
+ou orale, entre les Parties sur le même objet et constitue l'accord
+entier entre les Parties sur cet objet. Aucune addition ou modification
+aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
+d'être faite par écrit et signée par leurs représentants dûment habilités.
+
+11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
+s'avèrerait contraire à une loi ou à un texte applicable, existants ou
+futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
+amendements nécessaires pour se conformer à cette loi ou à ce texte.
+Toutes les autres dispositions resteront en vigueur. De même, la
+nullité, pour quelque raison que ce soit, d'une des dispositions du
+Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
+
+
+ 11.5 LANGUE
+
+Le Contrat est rédigé en langue française et en langue anglaise, ces
+deux versions faisant également foi.
+
+
+ Article 12 - NOUVELLES VERSIONS DU CONTRAT
+
+12.1 Toute personne est autorisée à copier et distribuer des copies de
+ce Contrat.
+
+12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
+et ne peut être modifié que par les auteurs de la licence, lesquels se
+réservent le droit de publier périodiquement des mises à jour ou de
+nouvelles versions du Contrat, qui posséderont chacune un numéro
+distinct. Ces versions ultérieures seront susceptibles de prendre en
+compte de nouvelles problématiques rencontrées par les logiciels libres.
+
+12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
+faire l'objet d'une diffusion ultérieure que sous la même version du
+Contrat ou une version postérieure, sous réserve des dispositions de
+l'article 5.3.4.
+
+
+ Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
+
+13.1 Le Contrat est régi par la loi française. Les Parties conviennent
+de tenter de régler à l'amiable les différends ou litiges qui
+viendraient à se produire par suite ou à l'occasion du Contrat.
+
+13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
+de leur survenance et sauf situation relevant d'une procédure d'urgence,
+les différends ou litiges seront portés par la Partie la plus diligente
+devant les Tribunaux compétents de Paris.
+
+
+Version 2.0 du 2006-09-05.
+
diff --git a/branches/rc2.0/OldDartConfig.cmake b/branches/rc2.0/OldDartConfig.cmake
new file mode 100644
index 000000000..c7d4bee30
--- /dev/null
+++ b/branches/rc2.0/OldDartConfig.cmake
@@ -0,0 +1,10 @@
+
+#############################################################################
+# Dart config for report submission
+#############################################################################
+
+SET (DROP_METHOD "xmlrpc")
+SET (DROP_SITE "http://dart.irisa.fr")
+SET (DROP_LOCATION "ParadisEO")
+SET (NIGHTLY_START_TIME "23:00:00 WEST")
+#############################################################################
\ No newline at end of file
diff --git a/branches/rc2.0/README b/branches/rc2.0/README
new file mode 100644
index 000000000..fa79c9af5
--- /dev/null
+++ b/branches/rc2.0/README
@@ -0,0 +1,84 @@
+
+==========================================================================================
+ RELEASE
+==========================================================================================
+
+The current release is paradisEO-1.4
+
+==========================================================================================
+ INSTALLATION
+==========================================================================================
+The basic installation procedure must be done in the directory
+which contains the extracted archive.
+
+ --> Example : bash installParadiseo.sh
+
+Please try source installParadiseo.sh --help for further information
+
+==========================================================================================
+ DIRECTORY STRUCTURE
+==========================================================================================
+After unpacking the archive file, you should end up with the following
+structure:
+
+.../ Installation directory (specified with ./installParadiseo.sh)
+ |
+ |
+ +-- AUTHORS Author list
+ |
+ |
+ +-- INSTALL INSTALL file
+ |
+ |
+ +-- install.cmake ParadisEO main install config file
+ |
+ |
+ +-- installParadiseo.sh Install script
+ |
+ +-- lib/
+ | | +-- /libxml2-2.7.3.tar.gz LIBXML2 archive (required for ParadisEO-PEO)
+ | | +-- /mpich2-1.0.8.tar.gz MPICH2 archive (required for ParadisEO-PEO)
+ |
+ |
+ + LICENCE Licence contents
+ |
+ |
+ +-- paradiseo-eo paradiseo-eo dir
+ |
+ |
+ +-- paradiseo-mo paradiseo-mo dir
+ |
+ |
+ +-- paradiseo-moeo paradiseo-moeo dir
+ |
+ |
+ +-- paradiseo-old-mo paradiseo-old-mo dir
+ |
+ |
+ +-- paradiseo-peo paradiseo-peo dir
+ |
+ |
+ +-- problems classical problems evaluation functions
+ |
+ |
+ +-- README README file
+
+==========================================================================================
+ NOTES
+==========================================================================================
+
+ParadisEO uses EO, a templates-based, ANSI-C++ compliant evolutionary computation library.
+It contains classes for almost any kind of evolutionary computation you might come up to - at
+least for the ones we could think of.
+EO Website: http://eodev.sourceforge.net/.
+EO is distributed under the GNU Lesser General Public License: http://www.gnu.org/copyleft/lesser.html
+
+Please read README file of each extracted directory if you have
+problems for the installation.
+
+==========================================================================================
+ CONTACT
+==========================================================================================
+For further information about ParadisEO, help or to report any
+problem : paradiseo-help@lists.gforge.inria.fr
+
diff --git a/branches/rc2.0/install.cmake b/branches/rc2.0/install.cmake
new file mode 100644
index 000000000..8113a6dd7
--- /dev/null
+++ b/branches/rc2.0/install.cmake
@@ -0,0 +1,130 @@
+######################################################################################
+### CMake basic configuration
+######################################################################################
+
+# check cmake version compatibility
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+# regular expression checking
+INCLUDE_REGULAR_EXPRESSION("^.*$" "^$")
+
+# set a language for the entire project.
+ENABLE_LANGUAGE(CXX)
+ENABLE_LANGUAGE(C)
+
+####################################################################################
+
+
+#####################################################################################
+### Include required modules & utilities
+#####################################################################################
+INCLUDE(CMakeBackwardCompatibilityCXX)
+
+INCLUDE(FindDoxygen)
+
+INCLUDE(FindGnuplot)
+
+INCLUDE(CheckLibraryExists)
+
+INCLUDE(Dart OPTIONAL)
+
+INCLUDE(CPack)
+
+# Set a special flag if the environment is windows (should do the same in a config.g file)
+IF (WIN32)
+ ADD_DEFINITIONS(-D_WINDOWS=1)
+ENDIF (WIN32)
+######################################################################################
+
+
+#####################################################################################
+### Manage the build type
+#####################################################################################
+
+# the user should choose the build type on windows environments,excepted under cygwin (default=none)
+SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE)
+
+FIND_PROGRAM(MEMORYCHECK_COMMAND
+ NAMES purify valgrind
+ PATHS
+ "/usr/local/bin /usr/bin [HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]"
+ DOC "Path to the memory checking command, used for memory error detection.")
+
+IF(NOT CMAKE_BUILD_TYPE)
+ SET( CMAKE_BUILD_TYPE
+ ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING
+ "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
+ FORCE)
+ENDIF(NOT CMAKE_BUILD_TYPE)
+
+IF(WIN32 AND NOT CYGWIN)
+ IF(CMAKE_CXX_COMPILER MATCHES cl)
+ IF(NOT WITH_SHARED_LIBS)
+ IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008" OR CMAKE_GENERATOR STREQUAL "Visual Studio 10")
+ SET(CMAKE_CXX_FLAGS "/nologo /Gy")
+ SET(CMAKE_CXX_FLAGS_DEBUG "/W3 /MTd /Z7 /Od")
+ SET(CMAKE_CXX_FLAGS_RELEASE "/w /MT /O2 /wd4530")
+ SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2")
+ SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE")
+ ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008" OR CMAKE_GENERATOR STREQUAL "Visual Studio 10")
+ ENDIF(NOT WITH_SHARED_LIBS)
+ ENDIF(CMAKE_CXX_COMPILER MATCHES cl)
+ELSE(WIN32 AND NOT CYGWIN)
+ IF(CMAKE_COMPILER_IS_GNUCXX)
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -fprofile-arcs -ftest-coverage -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers")
+ SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
+ SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -O6")
+ ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+ENDIF(WIN32 AND NOT CYGWIN)
+
+IF(CMAKE_BUILD_TYPE MATCHES Debug)
+ ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON)
+ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
+
+#####################################################################################
+
+######################################################################################
+### compilation of examples?
+######################################################################################
+
+SET(ENABLE_CMAKE_EXAMPLE TRUE CACHE BOOL "Enable copy of benchs and parameters file?")
+
+######################################################################################
+### Test config
+######################################################################################
+
+IF (ENABLE_CMAKE_TESTING OR ENABLE_MINIMAL_CMAKE_TESTING)
+ ENABLE_TESTING()
+ENDIF (ENABLE_CMAKE_TESTING OR ENABLE_MINIMAL_CMAKE_TESTING)
+######################################################################################
+
+#######################################################################################
+### Paths to EO, MO and MOEO must be specified above.
+#######################################################################################
+
+SET(EO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-eo" CACHE PATH "ParadisEO-EO source directory" FORCE)
+SET(EO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-eo/build" CACHE PATH "ParadisEO-EO binary directory" FORCE)
+
+SET(MO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-mo" CACHE PATH "ParadisMO-MO source directory" FORCE)
+SET(MO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-mo/build" CACHE PATH "ParadisMO-MO binary directory" FORCE)
+
+SET(OLDMO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-old-mo" CACHE PATH "ParadisMO-MO source directory" FORCE)
+SET(OLDMO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-old-mo/build" CACHE PATH "ParadisMO-MO binary directory" FORCE)
+
+SET(MOEO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-moeo" CACHE PATH "ParadisMOEO-MOEO source directory" FORCE)
+SET(MOEO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-moeo/build" CACHE PATH "ParadisMOEO-MOEO binary directory" FORCE)
+
+SET(PROBLEMS_SRC_DIR "${CMAKE_SOURCE_DIR}/../problems" CACHE PATH "Problems dependant source directory" FORCE)
+
+######################################################################################
+######################################################################################
+### Subdirectories that CMake should process for MO, MOEO and PEO
+######################################################################################
+
+ADD_SUBDIRECTORY(doc)
+ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(test)
+ADD_SUBDIRECTORY(tutorial)
+######################################################################################
+
diff --git a/branches/rc2.0/installParadiseo.sh b/branches/rc2.0/installParadiseo.sh
new file mode 100755
index 000000000..9ce586868
--- /dev/null
+++ b/branches/rc2.0/installParadiseo.sh
@@ -0,0 +1,1371 @@
+#!/bin/sh
+
+#########################################################################################
+#
+# Project : paradisEO full package install
+# File : installParadiseo.sh
+# Comment : # This file attempts to install ParadisEO #
+#
+#########################################################################################
+
+# global variables
+installStartTime=$SECONDS
+resourceKitPath=$PWD
+TAR_MSG=" "
+DIE=0
+PROG=ParadisEO
+CMAKE_PRIMARY_CONFIG_FILE=install.cmake
+HOME_PATH=$HOME
+libxml2=" "
+binxml2=" "
+mpich2=" "
+bash_path='$PATH'
+library_path='$LD_LIBRARY_PATH'
+
+# generator types available on Unix platforms
+P_UNIX_MAKEFILES=1
+P_KDEVELOP3_PROJECT=2
+P_XCODE_PROJECT=3
+G_UNIX_MAKEFILES="Unix Makefiles"
+G_KDEVELOP3_PROJECT="KDevelop3"
+G_XCODE_PROJECT="Xcode"
+
+# should we compile ParadisEO ?
+COMPILE_PARADISEO=1
+
+# Build types
+DEFAULT_BUILD_TYPE=Release
+BUILD_TYPE=$DEFAULT_BUILD_TYPE
+
+# CMake/CTest/Dart flags
+CTEST_DEFAULT_CONFIG="-D ExperimentalStart -D ExperimentalBuild -D ExperimentalTest"
+CTEST_CONFIG=$CTEST_DEFAULT_CONFIG
+
+# What are the tests that should be always run ?
+MIN_CMAKE_FLAGS='-DENABLE_MINIMAL_CMAKE_TESTING=TRUE'
+
+# install types to select in the main menu
+P_BASIC_INSTALL=1
+P_PARALLEL_INSTALL=2
+P_FULL_INSTALL=3
+P_RM_PREVIOUS_INSTALLL=4
+P_EXIT_INSTALL=5
+
+IS_MPICH_INSTALLED=1
+IS_LIBXML2_INSTALLED=1
+USE_EXISTING_MPICH=-1
+USE_EXISTING_LIBXML2=-1
+
+# install steps
+S_INTRODUCTION=1000
+S_UNPACK_EO=1001
+S_UNPACK_LIBXML=1002
+S_UNPACK_MPICH=1003
+S_INSTALL_EO=1004
+S_INSTALL_MO=1005
+S_INSTALL_MOEO=1006
+S_INSTALL_LIBXML=1007
+S_INSTALL_MPICH=1008
+S_INSTALL_PEO=1009
+S_REMOVE_TEMP_LIBXML=1010
+S_REMOVE_TEMP_MPICH=1011
+S_CONFIGURE_ENV=1012
+S_CONFIGURE_MPD=1013
+S_PEO_CHECK=1014
+S_REMOVE_INSTALL=1015
+S_END=1016
+S_END_WITHOUT_INFO=1017
+S_CHECK_AUTOTOOLS=1018
+S_CLEANING_INSTALL=1019
+
+#### define what are the possible installs and their content
+
+# full install
+
+FULL_INSTALL="$S_CLEANING_INSTALL $S_INTRODUCTION $S_UNPACK_LIBXML $S_UNPACK_MPICH $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_CHECK_AUTOTOOLS $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_ENV $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END"
+
+FULL_INSTALL_WITHOUT_LIBXML2="$S_INTRODUCTION $S_UNPACK_MPICH $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_CHECK_AUTOTOOLS $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_MPICH_ENV $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END"
+
+FULL_INSTALL_WITHOUT_MPICH2="$S_INTRODUCTION $S_UNPACK_LIBXML $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_CHECK_AUTOTOOLS $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_CONFIGURE_LIBXML2_ENV $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END"
+
+FULL_INSTALL_WITHOUT_LIBXML2_MPICH2="$S_INTRODUCTION $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END_WITHOUT_INFO"
+
+# basic install
+BASIC_INSTALL="$S_INTRODUCTION $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_END"
+
+# install only paradiseo-peo
+PARALLEL_INSTALL="$S_PEO_CHECK $S_INTRODUCTION $S_UNPACK_LIBXML $S_CHECK_AUTOTOOLS $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_UNPACK_MPICH $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_ENV $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END"
+
+PARALLEL_INSTALL_WITHOUT_LIBXML2="$S_PEO_CHECK $S_INTRODUCTION $S_UNPACK_MPICH $S_CHECK_AUTOTOOLS $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_MPICH_ENV $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END"
+
+PARALLEL_INSTALL_WITHOUT_MPICH2="$S_PEO_CHECK $S_INTRODUCTION $S_CHECK_AUTOTOOLS $S_UNPACK_LIBXML $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_CONFIGURE_LIBXML2_ENV $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END"
+
+PARALLEL_INSTALL_WITHOUT_LIBXML2_MPICH2="$S_PEO_CHECK $S_INTRODUCTION $S_CONFIGURE_MPD $S_INSTALL_PEO $S_END_WITHOUT_INFO"
+
+# remove a previous install
+RM_PREVIOUS_INSTALL="$S_REMOVE_INSTALL"
+
+#others
+LIBS_PATH=lib
+LIBXML2_ARCHIVE=libxml2-2.7.3
+LIBXML2_ARCHIVE_SUFFIX=.tar.gz
+MPICH2_ARCHIVE=mpich2-1.0.8
+MPICH2_ARCHIVE_SUFFIX=.tar.gz
+# errors
+SUCCESSFUL_STEP=0
+EO_UNPACKING_ERROR=100
+LIBXML_UNPACKING_ERROR=104
+MPICH_UNPACKING_ERROR=105
+EO_INSTALL_ERROR=106
+MO_INSTALL_ERROR=107
+MOEO_INSTALL_ERROR=108
+PARADISEO_INSTALL_ERROR=110
+LIBXML_INSTALL_ERROR=111
+MPICH_INSTALL_ERROR=112
+REMOVE_TEMP_DIRECTORY_ERROR=113
+VAR_CONFIG_ERROR=114
+MPD_COPY_ERROR=115
+LIBXML_INSTALL_ERROR=116
+MPICH_INSTALL_ERROR=117
+PEO_CHECK_ERROR=118
+RM_PARADISEO_EO_ERROR=119
+RM_UTIL_ERROR=120
+BASIC_INSTALL_MISSING_ERROR=121
+DART_SUBMISSION_ERROR=64
+CHECK_AUTOTOOLS_ERROR=122
+
+#Date
+DATE=`/bin/date '+%Y%m%d%H%M%S'`
+# create log file
+SPY=$PWD/logs/install-paradiseo.${DATE}.log
+
+#------------------------------------------------------#
+#-- FUNCTION : execute_cmd ---#
+#------------------------------------------------------#
+#-- PARAMETERS : ---#
+#-- $1 : cmd line ---#
+#-- $2 : comment ---#
+#-- $3 : spy file ---#
+#-- $4 : output std file ---#
+#-- $5 : error log file ---#
+#-- ---#
+#------------------------------------------------------#
+#-- CODE RETURN : 0 : OK ---#
+#-- CODE RETURN : 1 : NOK ---#
+#------------------------------------------------------#
+function execute_cmd
+{
+ COMMAND=${1}
+ COMMENT=${2}
+ FIC_ESP=${3}
+ FIC_OUT=${4}
+ FIC_ERR=${5}
+
+ if [ `echo ${FIC_OUT} | wc -c` -eq 1 ]
+ then
+ FIC_OUT=${FIC_ESP}
+ fi
+
+ if [ `echo ${FIC_ERR} | wc -c` -eq 1 ]
+ then
+ FIC_ERR=${FIC_ESP}
+ fi
+
+ echo "" >> ${FIC_ESP}
+ echo "[execute_cmd][Begin][`/bin/date +%H:%M:%S`]" >> ${FIC_ESP}
+
+ echo "------------------------------------------------------------------------------------------------------------" >> ${FIC_ESP}
+ echo "${COMMENT}" >> ${FIC_ESP}
+ echo "------------------------------------------------------------------------------------------------------------" >> ${FIC_ESP}
+ echo "${COMMAND}" >> ${FIC_ESP}
+
+ ${COMMAND} >> ${FIC_OUT} 2>> ${FIC_ERR}
+
+ RETURN_CODE=$?
+ echo "RETURN_CODE : ${RETURN_CODE}" >> ${FIC_ESP}
+
+ if [ ${RETURN_CODE} -eq 0 ]
+ then
+ echo " ${COMMENT} OK" >> ${FIC_ESP}
+ echo "[execute_cmd][End][`/bin/date +%H:%M:%S`]" >> ${FIC_ESP}
+ return 0
+ else
+ echo " $ERROR_TAG ${COMMENT} NOK" >> ${FIC_ESP}
+ return ${RETURN_CODE}
+ fi
+}
+
+#----------------------------------------------------------------#
+#-- FUNCTIONS : cleaning bashrc at install and uninstall ---#
+#----------------------------------------------------------------#
+function configuring_env
+{
+ echo "On configuring"
+ echo $PATH
+ echo $LD_LIBRARY_PATH
+ grep "export LD_LIBRARY_PATH" $HOME/.bashrc &> .clean
+ if [ $? -eq 0 ]
+ then
+ sed -e s,^"export LD_LIBRARY_PATH.*",,g $HOME/.bashrc > paradiseo.tmp1
+ sed -e s,^"export LD_LIBRARY_PATH.*",,g paradiseo.tmp1 > $HOME/.bashrc
+ fi
+
+ grep "export PATH" $HOME/.bashrc &> .clean
+ if [ $? -eq 0 ]
+ then
+ sed -e s,^"export PATH.*",,g $HOME/.bashrc > paradiseo.tmp1
+ sed -e s,^"export PATH.*",,g paradiseo.tmp1 > $HOME/.bashrc
+ fi
+
+}
+
+function on_install
+{
+ grep "export PATH" $HOME/.bashrc &> .clean
+ if [ $? -eq 0 ]
+ then
+ myPATH=${PATH/$binxml2/}
+ myPATH=${myPATH/$mpich2/}
+ sed -e s,$binxml2,,g $HOME/.bashrc > paradiseo.tmp1
+ sed -e s,$mpich2,,g paradiseo.tmp1 > $HOME/.bashrc
+ execute_cmd "export PATH=$myPATH" "Modify the Path" $SPY
+ fi
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5] Export variables" $SPY
+ grep "export LD_LIBRARY_PATH" $HOME/.bashrc &> .clean
+ if [ $? -eq 0 ]
+ then
+ sed -e s,$libxml2,,g $HOME/.bashrc > paradiseo.tmp1
+ sed -e s,"export LD_LIBRARY_PATH="$,"unset LD_LIBRARY_PATH",g paradiseo.tmp1 > paradiseo.tmp2
+ grep "unset LD_LIBRARY_PATH" paradiseo.tmp2
+ if [ $? -eq 0 ]
+ then
+ my_LD_LIBRARY=${LD_LIBRARY_PATH/$libxml2/}
+ execute_cmd "export LD_LIBRARY_PATH=$my_LD_LIBRARY" "Modify the Path" $SPY
+ execute_cmd "unset LD_LIBRARY_PATH" "[$currentStepCounter-5] unset variable" $SPY
+ fi
+ sed -e s,"unset LD_LIBRARY_PATH.*"$,,g paradiseo.tmp2 > $HOME/.bashrc
+ fi
+
+}
+
+function on_uninstall
+{
+ #installpath=$1
+ #libxml2="$installpath/libxml2/lib"
+ #binxml2="$installpath/libxml2/bin:"
+ #mpich2="$installpath/mpich2/bin:"
+ sed -e s,$libxml2,,g $HOME/.bashrc > paradiseo.tmp1
+ sed -e s,$binxml2,,g paradiseo.tmp1 > paradiseo.tmp2
+ sed -e s,$mpich2,,g paradiseo.tmp2 > paradiseo.tmp3
+
+ sed -e s,"export LD_LIBRARY_PATH="$,"unset LD_LIBRARY_PATH",g paradiseo.tmp3 > $HOME/.bashrc
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5] Updating $HOME/.bashrc" $SPY
+ sed -e s,"unset LD_LIBRARY_PATH.*"$,,g $HOME/.bashrc > paradiseo.tmp1
+ sed -e s,"unset LD_LIBRARY_PATH.*"$,,g paradiseo.tmp1 > $HOME/.bashrc
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5]" $SPY
+ on_install
+ execute_cmd "rm paradiseo.tmp*" "[$currentStepCounter] Removing temporary files" $SPY
+}
+
+
+#------------------------------------------------------#
+#-- FUNCTION : on_error ---#
+#------------------------------------------------------#
+#-- PARAMETERS : ---#
+#-- Error number ---#
+#------------------------------------------------------#
+#-- RETURN: ---#
+#------------------------------------------------------#
+function on_error()
+{
+ case $1 in
+ $LIBXML_UNPACKING_ERROR)
+ echo
+ echo " An error has occured : impossible to unpack libxml2 archive.See $SPY for more details"
+ echo " Make sure that libxml2 archive exists in current directory"
+ echo
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+
+ $MPICH_UNPACKING_ERROR)
+ echo
+ echo " An error has occured : impossible to unpack mpich2 archive.See $SPY for more details"
+ echo " Make sure that mpich2 archive exists in current directory"
+ echo
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo ;;
+
+ $EO_INSTALL_ERROR)
+ echo
+ echo " An error has occured : impossible to install Paradiseo-EO.See $SPY for more details"
+ echo "If you need help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ echo
+ kill $$;;
+
+ $MO_INSTALL_ERROR)
+ echo
+ echo " An error has occured : impossible to install Paradiseo-MO.See $SPY for more details"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $MOEO_INSTALL_ERROR)
+ echo
+ echo " An error has occured : impossible to install Paradiseo-MOEO.See $SPY for more details"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $PARADISEO_INSTALL_ERROR)
+ echo
+ echo " An error has occured : impossible to install Paradiseo-PEO.See $SPY for more details"
+ echo ' Make sure you have the required variables in your environment (ex: by using "echo $PATH" for PATH variable) : '
+ echo ' -LD_LIBRARY_PATH=/libxml2/lib:$LD_LIBRARY_PATH'
+ echo ' -PATH=/libxml2/bin:/mpich2/bin:$PATH'
+ echo
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $CHECK_AUTOTOOLS_ERROR)
+ echo
+ echo " An error has occured : cannot find the Autotools. See $SPY for more details"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $LIBXML_INSTALL_ERROR)
+ echo
+ echo " An error has occured : impossible to install libxml2. See $SPY for more details"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $MPICH_INSTALL_ERROR)
+ echo
+ echo " An error has occured : impossible to install mpich2 See $SPY for more details"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $PEO_CHECK_ERROR)
+ echo
+ echo " If you want to install ParadisEO-PEO, you should remove the old directories of libxml2 or mpich2 or choose another location."
+ echo
+ kill $$;;
+
+ $RM_PARADISEO_EO_ERROR)
+ echo
+ echo " An error has occured : impossible to remove ParadisEO-EO. See $SPY for more details"
+ echo " You may not have a previous ParadisEO install available in the current directory"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $RM_UTIL_ERROR)
+ echo
+ echo " An error has occured : impossible to remove the previous install of mpich2 and libxml2. See $SPY for more details"
+ echo " You may not have a previous ParadisEO install available in the current directory"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $BASIC_INSTALL_MISSING_ERROR)
+ echo
+ echo " An error has occured : impossible to find the basic install of ParadisEO. See $SPY for more details"
+ echo " You may not have a basic ParadisEO install available in the current directory"
+ echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY"
+ echo
+ kill $$;;
+
+ $SUCCESSFUL_STEP)
+ ;;
+ *)
+ echo
+ ;;
+ esac
+}
+
+#------------------------------------------------------#
+#-- FUNCTION : run_install_step ---#
+#------------------------------------------------------#
+#-- PARAMETERS : ---#
+#-- install path ---#
+#-- step to launch (0,1 ...) ---#
+#-- counter for loop ---#
+#-- Major function for install ---#
+#------------------------------------------------------#
+#-- RETURN: 0 if install OK ---#
+#------------------------------------------------------#
+
+function run_install_step()
+{
+ installKitPath=$1
+ stepToRun=$2
+ currentStepCounter=$3
+ libxml2="$installKitPath/libxml2/lib"
+ binxml2="$installKitPath/libxml2/bin:"
+ mpich2="$installKitPath/mpich2/bin:"
+ RETURN=0
+
+ case "$stepToRun" in
+ $S_CLEANING_INSTALL)
+ ########## Introduction #########
+ clear
+ echo ""
+ echo -e ' \033[40m\033[1;33m### Cleaning any previous install .... ### \033[0m '
+
+ on_uninstall
+
+ #on_install
+
+ sleep 2
+ echo
+ return $SUCCESSFUL_STEP
+ ;;
+ $S_INTRODUCTION)
+ ########## Introduction #########
+ clear
+ echo ""
+ echo -e ' \033[40m\033[1;33m### ParadisEO install starting .... ### \033[0m '
+ echo
+ echo "Installing the environment for ParadisEO...Note that the librairies \"libxml2\" and \"mpich2\" required for ParadisEO are provided with this package. To avoid build and test reports to be sent to our repository, please stop the program and restart it using the --skipdart option."
+ sleep 6
+ echo
+ echo
+ return $SUCCESSFUL_STEP
+ ;;
+
+ $S_UNPACK_LIBXML)
+ ########## unpacking libxml2 ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Unpacking libxml2 (required for ParadisEO) ...'
+
+ execute_cmd "rm -Rf $installKitPath/$LIBXML2_ARCHIVE_SUFFIX" "[$currentStepCounter-1] Remove potential existing dir $installKitPath/$LIBXML2_ARCHIVE" $SPY
+ RETURN=$?
+
+ execute_cmd "tar xzvf $resourceKitPath/$LIBS_PATH/$LIBXML2_ARCHIVE$LIBXML2_ARCHIVE_SUFFIX --directory $installKitPath" "[$currentStepCounter-2] Unpack Libxml2" $SPY
+ if [ ! "$?" = "0" ]
+ then
+ echo ''
+ echo " --> Error when unpacking libxml2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $LIBXML_UNPACKING_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+ $S_UNPACK_MPICH)
+ ########## unpacking mpich2 ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Unpacking mpich2 (required for ParadisEO) ...'
+
+ execute_cmd "rm -Rf $installKitPath/$MPICH2_ARCHIVE" "[$currentStepCounter-1] Remove potential existing dir $installKitPath/$MPICH2_ARCHIVE" $SPY
+ RETURN=$?
+
+ execute_cmd "tar xzvf $resourceKitPath/$LIBS_PATH/$MPICH2_ARCHIVE$MPICH2_ARCHIVE_SUFFIX --directory $installKitPath" "[$currentStepCounter-2] Unpack Mpich2" $SPY
+ if [ ! "$?" = "0" ]
+ then
+ echo ''
+ echo " --> Error when unpacking mpich2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $MPICH_UNPACKING_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+
+ $S_INSTALL_EO)
+ ########## installing paradiseo-eo ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Installing Paradiseo-EO. Please wait ...'
+
+ if [ ! "$installKitPath" = "$resourceKitPath" ]
+ then
+ cp -Rf $resourceKitPath/paradiseo-eo/ $installKitPath/
+ rm -Rf $installKitPath/paradiseo-eo/build
+ fi
+
+ execute_cmd "mkdir $installKitPath/paradiseo-eo/build" "[$currentStepCounter-1] Create build directory" $SPY
+
+ execute_cmd "cd $installKitPath/paradiseo-eo/build" "[$currentStepCounter-2] Go in Paradiseo-EO build dir" $SPY
+ RETURN=`expr $RETURN + $?`
+
+ execute_cmd " echo \"cmake ../ -G$BUILD_PROCESS_TYPE $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS\" " "[$currentStepCounter-3] Run CMake using generator $BUILD_PROCESS_TYPE" $SPY
+
+ cmake ../ -G"$BUILD_PROCESS_TYPE" -DCMAKE_BUILD_TYPE=$BUILD_TYPE $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS >> ${SPY} 2>> ${SPY}
+ RETURN=`expr $RETURN + $?`
+
+ if [ "$COMPILE_PARADISEO" = "1" ]
+ then
+ execute_cmd "ctest $CTEST_CONFIG" "[$currentStepCounter-4] Compile ParadisEO-EO using CTest" $SPY
+ LAST_RETURN=$?
+ # don't consider a submission error as a "right error"
+ if [ ! "$LAST_RETURN" = "$DART_SUBMISSION_ERROR" ]
+ then
+ RETURN=`expr $RETURN + $LAST_RETURN`
+ fi
+ fi
+
+ if [ ! $(($RETURN)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when installing Paradiseo-EO"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $EO_INSTALL_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_INSTALL_MO)
+ ########## installing paradiseo-mo ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Installing Paradiseo-MO. Please wait ...'
+
+ if [ ! "$installKitPath" = "$resourceKitPath" ]
+ then
+ cp -Rf $resourceKitPath/paradiseo-mo/ $installKitPath/
+ cp $resourceKitPath/install.cmake $installKitPath/
+ rm -Rf $installKitPath/paradiseo-mo/build/*
+ fi
+
+ execute_cmd "cd $installKitPath/paradiseo-mo/build" "[$currentStepCounter-1] Go in Paradiseo-MO dir" $SPY
+ RETURN=$?
+
+ execute_cmd " echo \"cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G\"$BUILD_PROCESS_TYPE\" $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=$BUILD_TYPE\" " "[$currentStepCounter-2] Run CMake using generator $BUILD_PROCESS_TYPE -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE" $SPY
+ cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G"$BUILD_PROCESS_TYPE" -DCMAKE_BUILD_TYPE=$BUILD_TYPE $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS>> ${SPY} 2>> ${SPY}
+ RETURN=`expr $RETURN + $?`
+
+ if [ "$COMPILE_PARADISEO" = "1" ]
+ then
+ execute_cmd "ctest $CTEST_CONFIG" "[$currentStepCounter-3] Compile ParadisEO-MO using CTest" $SPY
+ LAST_RETURN=$?
+ # don't consider a submission error as a "right error"
+ if [ ! "$LAST_RETURN" = "$DART_SUBMISSION_ERROR" ]
+ then
+ RETURN=`expr $RETURN + $LAST_RETURN`
+ fi
+ fi
+
+ if [ ! $(($RETURN)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when installing Paradiseo-MO"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $MO_INSTALL_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_INSTALL_MOEO)
+ ########## installing MOEO ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Installing Paradiseo-MOEO. Please wait ...'
+
+ if [ ! "$installKitPath" = "$resourceKitPath" ]
+ then
+ cp -Rf $resourceKitPath/paradiseo-moeo/ $installKitPath/
+ rm -Rf $installKitPath/paradiseo-moeo/build/*
+ fi
+
+ execute_cmd "cd $installKitPath/paradiseo-moeo/build" "[$currentStepCounter-1] Go in Paradiseo-MOEO dir" $SPY
+ RETURN=$?
+
+ execute_cmd " echo \"cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G\"$BUILD_PROCESS_TYPE\" -DCMAKE_BUILD_TYPE=$BUILD_TYPE $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS \"" "[$currentStepCounter-2] Run CMake using generator $BUILD_PROCESS_TYPE -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE" $SPY
+ cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G"$BUILD_PROCESS_TYPE" -DCMAKE_BUILD_TYPE=$BUILD_TYPE $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS >> ${SPY} 2>> ${SPY}
+ RETURN=`expr $RETURN + $?`
+
+ if [ "$COMPILE_PARADISEO" = "1" ]
+ then
+ execute_cmd "ctest $CTEST_CONFIG" "[$currentStepCounter-3] Compile ParadisEO-MOEO using CTest" $SPY
+ LAST_RETURN=$?
+ # don't consider a submission error as a "right error"
+ if [ ! "$LAST_RETURN" = "$DART_SUBMISSION_ERROR" ]
+ then
+ RETURN=`expr $RETURN + $LAST_RETURN`
+ fi
+ fi
+
+ if [ ! $(($RETURN)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when installing Paradiseo-MOEO"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $MOEO_INSTALL_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+ $S_CHECK_AUTOTOOLS)
+ ########## Check if we can user Autogen & Autoconf (only for libxml2 & mpich2 installation) ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Looking for the Autotools (Autogen & Autoconf, required to install libxml2 and mpich2)'
+
+ (autoconf --version) < /dev/null > /dev/null 2>&1 ||
+ {
+ echo ''
+ echo " --> Error when checking for Autoconf"
+ echo " You must have Autoconf installed to compile $PROG. Please update your system to get it before installing $PROG."
+ execute_cmd "autoconf --version" "[$currentStepCounter-1] Check Autoconf" $SPY
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $CHECK_AUTOTOOLS_ERROR
+ }
+
+ (automake --version) < /dev/null > /dev/null 2>&1 ||
+ {
+ echo ''
+ echo " --> Error when checking for Automake"
+ echo " You must have Automake installed to compile $PROG. Please update your system to get it before installing $PROG."
+ execute_cmd "automake --version" "[$currentStepCounter-2] Check Automake" $SPY
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $CHECK_AUTOTOOLS_ERROR
+ }
+
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ ;;
+
+ $S_INSTALL_LIBXML)
+ ########## installing LIBXML2 ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Installing libxml2. Please wait ...'
+
+ execute_cmd "rm -Rf $installKitPath/libxml2" "[$currentStepCounter-0] Remove potential existing dir $installKitPath/libxml2" $SPY
+ RETURN=$?
+
+ execute_cmd "mkdir $installKitPath/libxml2" "[$currentStepCounter-1] Create libxml2 dir" $SPY
+ RETURN=$?
+ execute_cmd "cd $installKitPath/$LIBXML2_ARCHIVE/" "[$currentStepCounter-2] Go in $LIBXML2_ARCHIVE dir" $SPY
+ RETURN=`expr $RETURN + $?`
+ execute_cmd "./configure --prefix=$installKitPath/libxml2/ --exec-prefix=$installKitPath/libxml2/" "[$currentStepCounter-3] Run configure for libxml2" $SPY
+ RETURN=`expr $RETURN + $?`
+ execute_cmd "make" "[$currentStepCounter-4] Compile libxml2" $SPY
+ RETURN=`expr $RETURN + $?`
+ execute_cmd "make install" "[$currentStepCounter-5] Run install libxml2 " $SPY
+ RETURN=`expr $RETURN + $?`
+ if [ ! $(($RETURN)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when installing libxml2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $LIBXML_INSTALL_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_INSTALL_MPICH)
+ ########## installing MPICH2 ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Installing mpich2. Please wait ...'
+
+ execute_cmd "rm -Rf $installKitPath/mpich2" "[$currentStepCounter-0] Remove potential existing dir $installKitPath/mpich2" $SPY
+ RETURN=$?
+
+ execute_cmd "mkdir $installKitPath/mpich2" "[$currentStepCounter-1] Create mpich2 dir" $SPY
+ RETURN=$?
+ execute_cmd "cd $installKitPath/$MPICH2_ARCHIVE/" "[$currentStepCounter-2] Go in $MPICH2_ARCHIVE dir" $SPY
+ RETURN=`expr $RETURN + $?`
+ execute_cmd "./configure --prefix=$installKitPath/mpich2/" "[$currentStepCounter-3] Run configure for mpich2" $SPY
+ RETURN=`expr $RETURN + $?`
+ execute_cmd "make" "[$currentStepCounter-4] Compile mpich2" $SPY
+ RETURN=`expr $RETURN + $?`
+ execute_cmd "make install" "[$currentStepCounter-5] Run install mpich2 " $SPY
+ RETURN=`expr $RETURN + $?`
+ if [ ! $(($RETURN)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when installing MPICH2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $MPICH_INSTALL_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_REMOVE_TEMP_LIBXML)
+ ########## removing temp directory for libxml ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Removing libxml2 temp install directory ...'
+
+ execute_cmd "rm -fr $installKitPath/$LIBXML2_ARCHIVE" "[$currentStepCounter] Remove Libxml2 temporary directory" $SPY
+ if [ ! "$?" = "0" ]
+ then
+ echo ''
+ echo " --> Error when removing $installKitPath/$LIBXML2_ARCHIVE"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $REMOVE_TEMP_DIRECTORY_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+ $S_REMOVE_TEMP_MPICH)
+ ########## removing temp directory for mpich ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Removing mpich2 temp install directory ...'
+
+ execute_cmd "rm -fr $installKitPath/$MPICH2_ARCHIVE" "[$currentStepCounter] Remove Mpich2 temporary directory" $SPY
+ if [ ! "$?" = "0" ]
+ then
+ echo ''
+ echo " --> Error when removing $installKitPath/$MPICH2_ARCHIVE"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $REMOVE_TEMP_DIRECTORY_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+ $S_REMOVE_INSTALL)
+ ########## removing a previous install of EO ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Removing your previous install of ParadisEO ...'
+ libxml2="$installKitPath/libxml2/lib"
+ binxml2="$installKitPath/libxml2/bin:"
+ mpich2="$installKitPath/mpich2/bin:"
+ on_uninstall
+
+ if [ "$UID" = "0" ]
+ then
+ execute_cmd "rm /etc/mpd.conf*" "[$currentStepCounter] removing mpd.conf" $SPY
+ else
+ execute_cmd "rm $HOME/.mpd.conf*" "[$currentStepCounter] removing .mpd.conf" $SPY
+ fi
+ if [ -d "$installKitPath/mpich2" ]
+ then
+ execute_cmd "rm -r $installKitPath/mpich2" "[$currentStepCounter] Remove previous install of mpich2" $SPY
+ fi
+ idx=$?
+
+ if [ -d "$installKitPath/libxml2" ]
+ then
+ execute_cmd "rm -r $installKitPath/libxml2" "[$currentStepCounter] Remove previous install of libxml2" $SPY
+ fi
+ idx=`expr $idx + $?`
+
+ execute_cmd "rm -Rf $installKitPath/paradiseo-eo/build/*" "[$currentStepCounter] Remove $installKitPath/paradiseo-eo/build/*" $SPY
+ idx=`expr $idx + $?`
+ execute_cmd "rm -Rf $installKitPath/paradiseo-mo/build/*" "[$currentStepCounter] Remove $installKitPath/paradiseo-mo/build/*" $SPY
+ idx=`expr $idx + $?`
+ execute_cmd "rm -Rf $installKitPath/paradiseo-moeo/build/*" "[$currentStepCounter] Remove $installKitPath/paradiseo-moeo/build/*" $SPY
+ idx=`expr $idx + $?`
+ execute_cmd "rm -Rf $installKitPath/paradiseo-peo/build/*" "[$currentStepCounter] Remove $installKitPath/paradiseo-peo/build/*" $SPY
+ idx=`expr $idx + $?`
+
+ if [ ! $(($idx)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when removing previous install of ParadisEO"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $RM_UTIL_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo -e "Please \033[40m\033[1;33m CLOSE YOUR TERMINAL OR OPEN A NEW ONE \033[0m before proceeding with a new installation."
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+ $S_CONFIGURE_MPICH_ENV)
+ ########## Configuring mpich environment variables ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Configuring environment variables for mpich2 ...'
+
+ execute_cmd "export PATH=`xml2-config --prefix`/bin:$installKitPath/mpich2/bin:$PATH" "[$currentStepCounter-2] Export PATH variable" $SPY
+ idx=$?
+ execute_cmd "echo export PATH=$PATH" "[$currentStepCounter-4] Export PATH variable into env" $SPY $HOME/.bashrc
+ idx=`expr $idx + $?`
+
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5] Export variables for mpich2" $SPY
+ idx=`expr $idx + $?`
+
+ if [ ! $(($idx)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when configuring environment variables for mpich2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $VAR_CONFIG_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+ $S_CONFIGURE_LIBXML2_ENV)
+ ########## Configuring environment variables ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Configuring environment variables for libxml2 ...'
+
+ execute_cmd "XML2_CONFIG=\`xml2-config --prefix\`" "[$currentStepCounter-1] Run xml2-config variable" $SPY
+ idx=$?
+ echo "******** $XML2_CONFIG *********"
+
+ execute_cmd "export LD_LIBRARY_PATH=`xml2-config --prefix`/lib" "[$currentStepCounter-2] Export LD_LIBRARY_PATH variable" $SPY
+ idx=$?
+
+ execute_cmd "echo export LD_LIBRARY_PATH=$`xml2-config --prefix`/lib" "[$currentStepCounter-3] Export LD_LIBRARY_PATH variable into env" $SPY $HOME/.bashrc
+ idx=$?
+
+ execute_cmd "echo export PATH=`xml2-config --prefix`/bin:$PATH" "[$currentStepCounter-4] Export PATH variable into env" $SPY $HOME/.bashrc
+ idx=`expr $idx + $?`
+
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5] Export variables for libxml2" $SPY
+ idx=`expr $idx + $?`
+
+ if [ ! $(($idx)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when configuring environment variables for libxml2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $VAR_CONFIG_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_CONFIGURE_ENV)
+ ########## Configuring environment variables ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Configuring environment variables for libxml2 and mpich2 ...'
+
+ execute_cmd "export LD_LIBRARY_PATH=$installKitPath/libxml2/lib" "[$currentStepCounter-1] Export LD_LIBRARY_PATH variable" $SPY
+ idx=$?
+ execute_cmd "export PATH=$installKitPath/libxml2/bin:$installKitPath/mpich2/bin:$PATH" "[$currentStepCounter-2] Export PATH variable" $SPY
+ idx=`expr $idx + $?`
+ execute_cmd "echo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" "[$currentStepCounter-3] Export LD_LIBRARY_PATH variable" $SPY $HOME/.bashrc
+ idx=`expr $idx + $?`
+ execute_cmd "echo export PATH=$PATH" "[$currentStepCounter-4] Export PATH variable into env" $SPY $HOME/.bashrc
+ idx=`expr $idx + $?`
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5] Export variables" $SPY
+ idx=`expr $idx + $?`
+
+ if [ ! $(($idx)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when configuring environment variables for libxml2 and mpich2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $VAR_CONFIG_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_FAKE_INSTALL)
+ ########## Configuring environment variables ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Configuring environment variables for libxml2 and mpich2 ...'
+
+
+ execute_cmd "export LD_LIBRARY_PATH=$installKitPath/libxml2/lib" "[$currentStepCounter-1] Export LD_LIBRARY_PATH variable" $SPY
+ idx=$?
+
+ execute_cmd "export PATH=$installKitPath/libxml2/bin:$installKitPath/mpich2/bin:$PATH" "[$currentStepCounter-2] Export PATH variable" $SPY
+ configuring_env
+ idx=$?
+ #execute_cmd "grep 'export LD_LIBRARY_PATH' $HOME/.bashrc" "[$currentStepCounter-3] Export PATH variable" $SPY
+
+ idx=`expr $idx + $?`
+
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5] Export variables" $SPY
+ idx=`expr $idx + $?`
+
+ if [ ! $(($idx)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when configuring environment variables for libxml2 and mpich2"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $VAR_CONFIG_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_CONFIGURE_MPD)
+ ######## copy .mpd.conf file in your HOME directory or in /etc if you are root (required for mpich2)
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Copy .mpd.conf file in your HOME directory or in /etc if you are root (required for mpich2) ...'
+ if [ "$UID" = "0" ]
+ then
+ execute_cmd "cp $resourceKitPath/.mpd.conf /etc" "[$currentStepCounter-1] Copy mpd.conf file in /etc (root)" $SPY
+ RETURN=$?
+ execute_cmd "mv /etc/.mpd.conf /etc/mpd.conf" "[$currentStepCounter-2] Move .mpd.conf to mpd.conf" $SPY
+ RETURN=`expr $RETURN + $?`
+ execute_cmd "chmod 600 /etc/mpd.conf" "[$currentStepCounter-3] Change .mpd.conf rights" $SPY
+ RETURN=`expr $RETURN + $?`
+ else
+ execute_cmd "cp $resourceKitPath/.mpd.conf $HOME" "[$currentStepCounter-1] Copy mpd.conf file in in your HOME directory" $SPY
+ RETURN=$?
+ execute_cmd "chmod 600 $HOME/.mpd.conf" "[$currentStepCounter-2] Change .mpd.conf rights" $SPY
+ RETURN=`expr $RETURN + $?`
+ fi
+ if [ ! $(($RETURN)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when copying .mpd.conf file "
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $MPD_COPY_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+ $S_INSTALL_PEO)
+ ######## installing paradiseo-peo ##########
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m "
+ echo ' --> Installing Paradiseo-PEO. Please wait ...'
+ execute_cmd "source $HOME/.bashrc" "[$currentStepCounter-5] Export variables" $SPY
+ execute_cmd "cd $installKitPath/paradiseo-peo/build" "[$currentStepCounter-1] Go in Paradiseo-PEO dir" $SPY
+ RETURN=$?
+ execute_cmd " echo \"cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G\"$BUILD_PROCESS_TYPE\" $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS \"" "[$currentStepCounter-2] Run CMake using generator $BUILD_PROCESS_TYPE -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE" $SPY
+ cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G"$BUILD_PROCESS_TYPE" $MIN_CMAKE_FLAGS $OPTIONNAL_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=$BUILD_TYPE >> ${SPY} 2>> ${SPY}
+ RETURN=`expr $RETURN + $?`
+
+ if [ "$COMPILE_PARADISEO" = "1" ]
+ then
+ execute_cmd "ctest $CTEST_CONFIG" "[$currentStepCounter-3] Compile ParadisEO-PEO using CTest" $SPY
+ LAST_RETURN=$?
+ # don't consider a submission error as a "right error"
+ if [ ! "$LAST_RETURN" = "$DART_SUBMISSION_ERROR" ]
+ then
+ RETURN=`expr $RETURN + $LAST_RETURN`
+ fi
+ fi
+
+ if [ ! $(($RETURN)) = 0 ]
+ then
+ echo ''
+ echo " --> Error when installing Paradiseo-PEO"
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $PARADISEO_INSTALL_ERROR
+ else
+ echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ fi
+ ;;
+
+ $S_PEO_CHECK)
+ if [ -d paradiseo-eo -a -d paradiseo-mo -a -d paradiseo-moeo ]
+ then
+ if [ -d libxml2 -o -d mpich2 ]
+ then
+ echo
+ echo "A previous installation of ParadisEO-PEO may exist because libxml2 or mpich2 directory have been detected in $installKitPath."
+ echo -e " \033[40m\033[1;33m => Do you want to remove these directories for a new installation ? If you choose NO, the installation will stop. (y/n) ? \033[0m "
+ read ANSWER
+ if [ "$ANSWER" = "y" ]
+ then
+ execute_cmd "rm -rf $installKitPath/libxml2 $installKitPath/mpich2" "[$currentStepCounter] Remove libxml2 ans mpich2 directories for a new install" $SPY "/dev/null" "/dev/null"
+ else
+ return $PEO_CHECK_ERROR
+ fi
+ fi
+ else
+ echo
+ echo "Basic install not found (at least one of the EO,MO,MOEO components is missing) in $installKitPath."
+
+ execute_cmd "test -d paradiseo-eo" "[$currentStepCounter-1] Check previous basic install" $SPY
+ execute_cmd "test -d paradiseo-mo" "[$currentStepCounter-2] Check previous basic install" $SPY
+ execute_cmd "test -d paradiseo-moeo" "[$currentStepCounter-3] Check previous basic install" $SPY
+
+ echo ''
+ echo " --> Error when searching for a previous basic install in $installKitPath."
+ echo -e ' \033[40m\033[1;33m### END ### \033[0m '
+ return $BASIC_INSTALL_MISSING_ERROR
+ fi
+ ;;
+ $S_END_WITHOUT_INFO)
+ echo
+ echo -e " \033[40m\033[1;34m# SUCCESSFULL INSTALLATION. \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ ;;
+ $S_END)
+ echo -e "The file \".bashrc\" file located in your directory $HOME has been MODIFIED. The following variables have been modified at the end:"
+ echo -e " LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:$installKitPath/libxml2/lib"
+ echo -e " PATH=\$installKitPath/libxml2/bin:$installKitPath/mpich2/bin:$PATH"
+ echo -e "These variables are necessary to compile any program using ParadisEO-PEO.\033[40m\033[1;33m If you want to keep them in your environment in order not to have to set them each time you compile, enter \"source $HOME/.bashrc\" \033[0m. If you don't want to use these variables, please remove them from $HOME/.bashrc."
+ #sleep 2
+ echo
+ echo
+ echo -e " \033[40m\033[1;34m# SUCCESSFULL INSTALLATION. \033[0m"
+ echo
+ return $SUCCESSFUL_STEP
+ ;;
+ *)
+
+ ;;
+ esac
+}
+
+
+#------------------------------------------------------#
+#-- FUNCTION : check_utils_install ---#
+#------------------------------------------------------#
+#-- PARAMETERS : No ---#
+#-- Set some global variables (used for libxml2 ---#
+#-- and mpich2 install management) ---#
+#------------------------------------------------------#
+function check_utils_install
+{
+ # is there an available version of mpich on the system ?
+ (mpicxx --version) < /dev/null > /dev/null 2>&1 ||
+ {
+ IS_MPICH_INSTALLED=0
+ }
+
+ # is there an available version of libxml2 on the system ?
+ (xml2-config --version) < /dev/null > /dev/null 2>&1 ||
+ {
+ IS_LIBXML2_INSTALLED=0
+ }
+
+ # ask the user if he'd like to keep his mpich version instead of the provided one
+ if [ "$IS_MPICH_INSTALLED" = "1" ]
+ then
+ echo
+ echo -e ' \033[40m\033[1;31m### A version of the MPI compiler has been detected on your system. Do you want to use it (if no, the mpich2 package, provided with ParadisEO, will be installed on your computer) [y/n] \033[0m '
+
+ execute_cmd "echo \" A version of the MPI compiler has been detected on the system\"" "Is there a previous install of MPI ?" $SPY
+
+ TREATENED=0
+ while [ "$TREATENED" = "0" ]
+ do
+ read MPICH_YES_NO
+ if [ ! "$MPICH_YES_NO" = "y" ] && [ ! "$MPICH_YES_NO" = "n" ]
+ then
+ TREATENED=0
+ else
+ if [ "$MPICH_YES_NO" = "y" ]
+ then
+ USE_EXISTING_MPICH=1
+ else
+ USE_EXISTING_MPICH=0
+ fi
+ TREATENED=1
+ fi
+ done
+ fi
+
+
+ # ask the user if he'd like to keep his libxml2 version instead of the provided one
+ if [ "$IS_LIBXML2_INSTALLED" = "1" ]
+ then
+ echo
+ echo -e ' \033[40m\033[1;31m### A version of libxml2 has been detected on your system. Do you want to use it (if no, the libxml2 package, provided with ParadisEO, will be installed on your computer) [y/n] \033[0m '
+
+ execute_cmd "echo \" A version of libxml2 has been detected on the system\"" "Is there a previous install of libxml2 ?" $SPY
+
+ TREATENED=0
+ while [ "$TREATENED" = "0" ]
+ do
+ read LIBXML2_YES_NO
+ if [ ! "$LIBXML2_YES_NO" = "y" ] && [ ! "$LIBXML2_YES_NO" = "n" ]
+ then
+ TREATENED=0
+ else
+ if [ "$LIBXML2_YES_NO" = "y" ]
+ then
+ USE_EXISTING_LIBXML2=1
+ else
+ USE_EXISTING_LIBXML2=0
+ fi
+ TREATENED=1
+ fi
+ done
+ fi
+
+}
+
+
+
+########################################################
+######### BODY ########
+#########################################################
+
+
+(cmake --version) < /dev/null > /dev/null 2>&1 ||
+{
+ echo "You must have CMake installed to compile $PROG. Please update your system to get it before installing $PROG."
+ execute_cmd "echo \"You must have CMake installed to compile $PROG. Please update your system to get it before installing $PROG.\"" "[0-3] Check autoconf" $SPY
+ DIE=1
+}
+
+if [ "$DIE" = "1" ]
+then
+ exit 1
+fi
+
+
+
+########################################################################
+# Simple menu
+# The options are :
+# --prefix
+# --debug
+# --skipdart
+# --help
+#######################################################################
+
+INSTALL_TREATENED=0
+INSTALL_PATH=$PWD
+for i in $*
+do
+ if [ "${i%=*}" = "--help" ] || [ "${i%=*}" = "-h" ]
+ then
+ clear
+ echo "installParadiseo.sh"
+ echo
+ echo -e "\033[1mNAME\033[0m"
+ echo ' installParadiseo.sh - Install ParadisEO'
+ echo
+ echo -e "\033[1mSYNOPSIS\033[0m"
+ echo -e ' \033[1m./installParadiseo.sh\033[0m or \033[1mbash installParadiseo.sh\033[0m'
+ echo -e ' [\033[1m--prefix=\033[0m\033[4mPATH\033[0m] [\033[1m--debug\033[0m] [\033[1m--skipdart\033[0m] [\033[1m--home=\033[0m\033[4mHOME\033[0m] [\033[1m-h\033[0m] [\033[1m--help\033[0m]'
+ echo
+ echo -e "\033[1mDESCRIPTION\033[0m"
+ echo -e " \033[1m--prefix=\033[0m\033[4mPATH\033[0m"
+ echo -e " ParadisEO will be installed in the directory \033[0m\033[4mPATH\033[0m. The current directory is used by default."
+ echo
+ echo -e " \033[1m--debug\033[0m"
+ echo ' Debug mode, set warning compiler flags and run tests.'
+ echo
+ echo -e " \033[1m--skipdart\033[0m"
+ echo ' Use this option to avoid build/test report submission to our Dart server.'
+ echo
+ echo -e " \033[1m--home=\033[0m\033[4mHOME\033[0m"
+ echo -e " Using \033[0m\033[4mHOME\033[0m as your home directory. Should be used when ~ doesnt reference your home. "
+ echo
+ echo -e " \033[1m-h, --help\033[0m"
+ echo ' Print these useful lines.'
+ echo
+ echo -e "\033[1mAUTHOR\033[0m"
+ echo " Written by Thomas Legrand."
+ echo
+ echo -e "\033[1mBUGS\033[0m"
+ echo " Report bugs to paradiseo-bugs@lists.gforge.inria.fr."
+ echo
+ echo -e "\033[1mCOPYRIGHT\033[0m"
+ echo " This software is governed by the CeCILL license under French law and"
+ echo " abiding by the rules of distribution of free software. You can use,"
+ echo " modify and/ or redistribute the software under the terms of the CeCILL"
+ echo " license as circulated by CEA, CNRS and INRIA at the following URL"
+ echo " http://www.cecill.info. "
+ echo
+ echo -e "\033[1mSEE ALSO\033[0m"
+ echo " For further help, please contact paradiseo-help@lists.gforge.inria.fr."
+ echo
+ exit
+ fi
+ if [ "${i%=*}" = "--prefix" ]
+ then
+ INSTALL_PATH=${i#*=}
+ fi
+ if [ "${i%=*}" = "--debug" ]
+ then
+ BUILD_TYPE=Debug
+ OPTIONNAL_CMAKE_FLAGS='-DENABLE_CMAKE_TESTING=TRUE'
+ CTEST_CONFIG="$CTEST_CONFIG -D ExperimentalTest"
+ fi
+ if [ "${i%=*}" = "--skipdart" ]
+ then
+ SKIP_DART="1"
+ fi
+ if [ "${i%=*}" = "--home" ]
+ then
+ HOME_PATH=${i#*=}
+ fi
+done
+#######################################################################
+
+### Do we have a valid home path ?
+if [ ! -d $HOME_PATH ]
+then
+ echo " Please give a valid path for your home directory (use --help for further information)"
+fi
+
+
+### Add a CTest flag depending on the "skipdart" option.
+if [ ! "$SKIP_DART" = "1" ]
+then
+ CTEST_CONFIG="$CTEST_CONFIG -D ExperimentalSubmit"
+fi
+
+### Need the generator
+BUILD_PROCESS_TYPE=0
+GENERATOR_TREATENED=0
+
+while [ ! "$GENERATOR_TREATENED" = "1" ]
+do
+ case "$BUILD_PROCESS_TYPE" in
+
+ $P_UNIX_MAKEFILES)
+ BUILD_PROCESS_TYPE="$G_UNIX_MAKEFILES"
+ GENERATOR_TREATENED=1
+ ;;
+
+ $P_KDEVELOP3_PROJECT)
+ BUILD_PROCESS_TYPE="$G_KDEVELOP3_PROJECT"
+ GENERATOR_TREATENED=1
+ COMPILE_PARADISEO=1
+ ;;
+
+ $P_XCODE_PROJECT)
+ BUILD_PROCESS_TYPE="$G_XCODE_PROJECT"
+ GENERATOR_TREATENED=1
+ COMPILE_PARADISEO=1
+ ;;
+ *)
+ echo
+ echo -e ' \033[40m\033[1;33m### Please select the kind of "Makefile" you want to generate: ### \033[0m '
+ echo
+ echo " $P_UNIX_MAKEFILES : Unix Makefiles (standard Makefiles)"
+ echo " $P_KDEVELOP3_PROJECT : KDevelop3 project files"
+ echo " $P_XCODE_PROJECT : Xcode project files"
+ read BUILD_PROCESS_TYPE
+ ;;
+ esac
+done
+libxml2="$INSTALL_PATH/libxml2/lib"
+binxml2="$INSTALL_PATH/libxml2/bin:"
+mpich2="$INSTALL_PATH/mpich2/bin:"
+on_uninstall
+while [ ! "$INSTALL_TREATENED" = "1" ]
+do
+ case "$INSTALL_TYPE" in
+
+ $P_FULL_INSTALL)
+
+ check_utils_install
+
+ if [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "1" ]
+ then
+ THE_GOOD_INSTALL=$FULL_INSTALL_WITHOUT_LIBXML2_MPICH2
+
+ elif [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "0" ]
+ then
+ THE_GOOD_INSTALL=$FULL_INSTALL_WITHOUT_MPICH
+
+ elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "1" ]
+ then
+ THE_GOOD_INSTALL=$FULL_INSTALL_WITHOUT_LIBXML2
+
+ elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "0" ]
+ then
+ THE_GOOD_INSTALL=$FULL_INSTALL
+ else
+ THE_GOOD_INSTALL=$FULL_INSTALL
+ fi
+
+ configuring_env
+ counter=0
+ for step in $THE_GOOD_INSTALL
+ do
+ run_install_step $INSTALL_PATH $step $counter
+ on_error $?
+ counter=`expr $counter + 1`
+ done
+ INSTALL_TREATENED=1
+ ;;
+
+ $P_BASIC_INSTALL)
+ counter=0
+ for step in $BASIC_INSTALL
+ do
+ run_install_step $INSTALL_PATH $step $counter
+ on_error $?
+ counter=`expr $counter + 1`
+ done
+ INSTALL_TREATENED=1
+ ;;
+
+ $P_PARALLEL_INSTALL)
+
+ check_utils_install
+
+ if [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "1" ]
+ then
+ THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL_WITHOUT_LIBXML2_MPICH2
+
+ elif [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "0" ]
+ then
+ THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL_WITHOUT_MPICH2
+
+ elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "1" ]
+ then
+ THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL_WITHOUT_LIBXML2
+
+ elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "0" ]
+ then
+ THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL
+ else
+ THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL
+ fi
+
+ counter=0
+ for step in $THE_GOOD_PARALLEL_INSTALL
+ do
+ run_install_step $INSTALL_PATH $step $counter
+ on_error $?
+ counter=`expr $counter + 1`
+ done
+ INSTALL_TREATENED=1
+ ;;
+
+ $P_RM_PREVIOUS_INSTALLL)
+ counter=0
+ for step in $RM_PREVIOUS_INSTALL
+ do
+ run_install_step $INSTALL_PATH $step $counter
+ on_error $?
+ counter=`expr $counter + 1`
+ done
+ INSTALL_TREATENED=1
+ ;;
+
+ $P_EXIT_INSTALL)
+ INSTALL_TREATENED=1
+ ;;
+
+ *)
+ echo
+ echo -e ' \033[40m\033[1;33m### Please select your install for ParadisEO : ### \033[0m '
+ echo
+ echo " 1 : Basic install: only EO,MO and MOEO components will be installed."
+ echo " 2 : ParadisEO-PEO install. I've already installed the basic version and I want to install ParadisEO-PEO"
+ echo " 3 : Full install (all the components : EO,MO,MOEO and PEO)"
+ echo " 4 : Remove a previous install of ParadisEO located in $INSTALL_PATH"
+ echo " 5 : Exit install"
+ read INSTALL_TYPE
+ ;;
+ esac
+done
\ No newline at end of file
diff --git a/branches/rc2.0/lib/libxml2-2.7.3.tar.gz b/branches/rc2.0/lib/libxml2-2.7.3.tar.gz
new file mode 100755
index 000000000..9f4b3ad82
Binary files /dev/null and b/branches/rc2.0/lib/libxml2-2.7.3.tar.gz differ
diff --git a/branches/rc2.0/lib/mpich2-1.0.8.tar.gz b/branches/rc2.0/lib/mpich2-1.0.8.tar.gz
new file mode 100644
index 000000000..bfb89fad5
Binary files /dev/null and b/branches/rc2.0/lib/mpich2-1.0.8.tar.gz differ
diff --git a/branches/rc2.0/paradiseo-mo/AUTHORS b/branches/rc2.0/paradiseo-mo/AUTHORS
new file mode 100644
index 000000000..c9f1498f0
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/AUTHORS
@@ -0,0 +1,4 @@
+Authors:
+ Sebastien Verel
+ Arnaud Liefooghe
+ Jérémie Humeau
diff --git a/branches/rc2.0/paradiseo-mo/CMakeLists.txt b/branches/rc2.0/paradiseo-mo/CMakeLists.txt
new file mode 100644
index 000000000..3b58ccd7f
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/CMakeLists.txt
@@ -0,0 +1,46 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+##########################################################################################################################################
+### 0) If you want to set your own variables in mo-conf.cmake and avoid the cmd line
+##########################################################################################################################################
+
+INCLUDE(mo-conf.cmake OPTIONAL)
+
+##########################################################################################################################################
+
+
+##########################################################################################################################################
+### 1) Project properties
+##########################################################################################################################################
+
+# set the project name
+PROJECT(ParadisEO-MO)
+
+SET(PACKAGE_BUGREPORT "paradiseo-help@lists.gforge.inria.fr" CACHE STRING "Package bug report" FORCE)
+SET(PACKAGE_NAME "ParadisEO-MO - Moving Objects" CACHE STRING "Package name" FORCE)
+SET(PACKAGE_STRING "ParadisEO-MO 1.3" CACHE STRING "MO Package string full name" FORCE)
+SET(PACKAGE_VERSION "1.3" CACHE STRING "Package version" FORCE)
+SET(GLOBAL_VERSION "1.3" CACHE STRING "Global version" FORCE)
+SET(VERSION "1.3.0" CACHE STRING "Version" FORCE)
+##########################################################################################################################################
+
+
+##########################################################################################################################################
+### 2) Include the common CMake configuration
+##########################################################################################################################################
+
+# The "config" variable must be provided on the command line
+IF(NOT DEFINED config OR NOT config)
+ MESSAGE(FATAL_ERROR "The \"config\" variable must be set on the command line to
+ give the path of the install configuration file. ")
+ENDIF(NOT DEFINED config OR NOT config)
+
+# Need the config file whose full path is given thanks to the "config" variable
+INCLUDE(${config})
+
+EXECUTE_PROCESS(
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${MO_SRC_DIR}/CTestCustom.cmake
+ ${MO_BIN_DIR}/CTestCustom.cmake)
+##########################################################################################################################################
+
diff --git a/branches/rc2.0/paradiseo-mo/CTestConfig.cmake b/branches/rc2.0/paradiseo-mo/CTestConfig.cmake
new file mode 100644
index 000000000..465d208d6
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/CTestConfig.cmake
@@ -0,0 +1,7 @@
+set(CTEST_PROJECT_NAME "ParadisEO")
+set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
+
+set(CTEST_DROP_METHOD "http")
+set(CTEST_DROP_SITE "cdash.inria.fr")
+set(CTEST_DROP_LOCATION "/CDash/submit.php?project=ParadisEO")
+set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/branches/rc2.0/paradiseo-mo/CTestCustom.cmake b/branches/rc2.0/paradiseo-mo/CTestCustom.cmake
new file mode 100644
index 000000000..61bcd9133
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/CTestCustom.cmake
@@ -0,0 +1,7 @@
+SET(CTEST_CUSTOM_COVERAGE_EXCLUDE
+ ${CTEST_CUSTOM_COVERAGE_EXCLUDE}
+"test/"
+"paradiseo-eo/"
+"problems/"
+"tutorial/"
+)
diff --git a/branches/rc2.0/paradiseo-mo/README b/branches/rc2.0/paradiseo-mo/README
new file mode 100644
index 000000000..e1308a753
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/README
@@ -0,0 +1,79 @@
+ PARADISEO-MO README FILE
+=======================================================================
+
+=======================================================================
+
+Welcome to PARADISEO-MO (Moving Objects), a part of the ParadisEO framework.
+
+=======================================================================
+ BUILDING PARADISEO-OLD-MO
+=======================================================================
+The basic installation procedure goes the following:
+
+To compile paradiseo-mo in the default directory,
+go to paradiseo-mo/build/ and run:
+ > cmake ../ -Dconfig=
+ > make
+ // for an easy-use of the provided lessons
+ > make install
+ // optional (if the documentation is not already available)
+ > make doc
+
+To compile paradiseo-mo anywhere else, simply run:
+ > cmake $(MO) -Dconfig=
+ > make
+ // for an easy-use of the provided lessons
+ > make install
+ // optional (if the documentation is not already available)
+ > make doc
+
+where $(MO) is the top-level directory of PARADISEO-MO.
+
+To clean everything, simply run
+ > make clean
+
+======================================================================
+ DIRECTORY STRUCTURE
+======================================================================
+After unpacking the archive file, you should end up with the following
+structure:
+
+.../ The MAIN PARADISEO-MO directory, created when unpacking.
+ |
+ +-- build Repertory where the executables will be produced.
+ |
+ |
+ +-- src SOURCE directory contains most PARADISEO-MO .h files.
+ |
+ |
+ +-- doc DOCUMENTATION directory (generated by Doxygen).
+ | |
+ | +- html HTML files - start at index.html.
+ | |
+ | +- latex latex files - use to generate Postcript doc.
+ | |
+ | +- man Unix man format documentation.
+ |
+ |
+ +-- tutorial TUTORIAL with lessons
+ |
+ +- Lesson1 How make a Hill Climbing. Example on the oneMax problem.
+ |
+ +- Lesson2 How make a Neighborhood.
+ |
+ +- Lesson3 How make a Simulated Annealing. Example on the QUEEN problem.
+ |
+ +- Lesson4 How make a Simple Tabu Search. Example on the QUEEN problem.
+ |
+ +- Lesson5 How make a Iterated Tabu Search on the QUEEN problem.
+ |
+ +- Lesson6 How make a Landscape analysis.
+ |
+ +- Lesson7 How make a Hybridization between a algorithm genetic and a local search.
+
+
+===================================================================
+ NOTES
+===================================================================
+
+Mailing list : paradiseo-help@lists.gforge.inria.fr
diff --git a/branches/rc2.0/paradiseo-mo/doc/CMakeLists.txt b/branches/rc2.0/paradiseo-mo/doc/CMakeLists.txt
new file mode 100755
index 000000000..8963a9ba5
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/doc/CMakeLists.txt
@@ -0,0 +1,26 @@
+
+##########################################################################################
+### MO Doc generation using Doxygen
+##########################################################################################
+
+IF (DOXYGEN_FOUND)
+
+ SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "MO documentation directory")
+ SET(MO_DOC_CONFIG_FILE "mo.doxyfile" CACHE PATH "MO documentation configuration file")
+ # define the doc target
+ IF (DOXYGEN_EXECUTABLE)
+ ADD_CUSTOM_TARGET(doc
+ COMMAND ${DOXYGEN_EXECUTABLE} ${MO_DOC_CONFIG_FILE}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ ENDIF (DOXYGEN_EXECUTABLE)
+
+ # configure doxyfile file
+ CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${MO_DOC_CONFIG_FILE}.cmake"
+ "${CMAKE_BINARY_DIR}/doc/${MO_DOC_CONFIG_FILE}")
+
+ELSE (DOXYGEN_FOUND)
+ MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found")
+ENDIF (DOXYGEN_FOUND)
+
+##########################################################################################
diff --git a/branches/rc2.0/paradiseo-mo/doc/index.h b/branches/rc2.0/paradiseo-mo/doc/index.h
new file mode 100644
index 000000000..da6778372
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/doc/index.h
@@ -0,0 +1,52 @@
+/** @mainpage Welcome to ParadisEO-MO
+
+@section Introduction
+
+ParadisEO-MO is a white-box object-oriented generic framework dedicated to the flexible design of local search algorithms (hill-climbing, tabu search, simulated annealing, ...)
+
+@section tutorials Tutorials
+
+Tutorials for ParadisEO-MO are available in the "Tutorials section" of the ParadisEO website.
+
+@section Design
+
+For an introduction to the design of ParadisEO-MO,
+you can look at the ParadisEO website.
+
+@section LICENSE
+
+ This software is governed by the CeCILL license under French law and
+ abiding by the rules of distribution of free software. You can use,
+ modify and/ or redistribute the software under the terms of the CeCILL
+ license as circulated by CEA, CNRS and INRIA at the following URL
+ "http://www.cecill.info".
+
+ As a counterpart to the access to the source code and rights to copy,
+ modify and redistribute granted by the license, users are provided only
+ with a limited warranty and the software's author, the holder of the
+ economic rights, and the successive licensors have only limited liability.
+
+ In this respect, the user's attention is drawn to the risks associated
+ with loading, using, modifying and/or developing or reproducing the
+ software by the user in light of its specific status of free software,
+ that may mean that it is complicated to manipulate, and that also
+ therefore means that it is reserved for developers and experienced
+ professionals having in-depth computer knowledge. Users are therefore
+ encouraged to load and test the software's suitability as regards their
+ requirements in conditions enabling the security of their systems and/or
+ data to be ensured and, more generally, to use and operate it in the
+ same conditions as regards security.
+ The fact that you are presently reading this means that you have had
+ knowledge of the CeCILL license and that you accept its terms.
+
+ ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+ Contact: paradiseo-help@lists.gforge.inria.fr
+
+*/
+
+/** @page webpages Related webpages
+
+- ParadisEO homepage
+- INRIA GForge project page
+- README
+*/
diff --git a/branches/rc2.0/paradiseo-mo/doc/mo.doxyfile.cmake b/branches/rc2.0/paradiseo-mo/doc/mo.doxyfile.cmake
new file mode 100644
index 000000000..19a13b947
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/doc/mo.doxyfile.cmake
@@ -0,0 +1,1523 @@
+# Doxyfile 1.7.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = @PACKAGE_NAME@
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @PACKAGE_VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = YES
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = YES
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = YES
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = YES
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command , where is the value of
+# the FILE_VERSION_FILTER tag, and is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = NO
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @CMAKE_SOURCE_DIR@
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = *.cpp \
+ *.h \
+ NEWS \
+ README
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = */tutorial/*
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS = *::*
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command , where
+# is the value of the INPUT_FILTER tag, and is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 3
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX = mo
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# Qt Help Project / Custom Filters.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# Qt Help Project / Filter Attributes.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature. Other possible values
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = YES
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/mo.doxytag
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = YES
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = YES
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Options related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = YES
diff --git a/branches/rc2.0/paradiseo-mo/install.cmake b/branches/rc2.0/paradiseo-mo/install.cmake
new file mode 100644
index 000000000..8113a6dd7
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/install.cmake
@@ -0,0 +1,130 @@
+######################################################################################
+### CMake basic configuration
+######################################################################################
+
+# check cmake version compatibility
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+# regular expression checking
+INCLUDE_REGULAR_EXPRESSION("^.*$" "^$")
+
+# set a language for the entire project.
+ENABLE_LANGUAGE(CXX)
+ENABLE_LANGUAGE(C)
+
+####################################################################################
+
+
+#####################################################################################
+### Include required modules & utilities
+#####################################################################################
+INCLUDE(CMakeBackwardCompatibilityCXX)
+
+INCLUDE(FindDoxygen)
+
+INCLUDE(FindGnuplot)
+
+INCLUDE(CheckLibraryExists)
+
+INCLUDE(Dart OPTIONAL)
+
+INCLUDE(CPack)
+
+# Set a special flag if the environment is windows (should do the same in a config.g file)
+IF (WIN32)
+ ADD_DEFINITIONS(-D_WINDOWS=1)
+ENDIF (WIN32)
+######################################################################################
+
+
+#####################################################################################
+### Manage the build type
+#####################################################################################
+
+# the user should choose the build type on windows environments,excepted under cygwin (default=none)
+SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE)
+
+FIND_PROGRAM(MEMORYCHECK_COMMAND
+ NAMES purify valgrind
+ PATHS
+ "/usr/local/bin /usr/bin [HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]"
+ DOC "Path to the memory checking command, used for memory error detection.")
+
+IF(NOT CMAKE_BUILD_TYPE)
+ SET( CMAKE_BUILD_TYPE
+ ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING
+ "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
+ FORCE)
+ENDIF(NOT CMAKE_BUILD_TYPE)
+
+IF(WIN32 AND NOT CYGWIN)
+ IF(CMAKE_CXX_COMPILER MATCHES cl)
+ IF(NOT WITH_SHARED_LIBS)
+ IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008" OR CMAKE_GENERATOR STREQUAL "Visual Studio 10")
+ SET(CMAKE_CXX_FLAGS "/nologo /Gy")
+ SET(CMAKE_CXX_FLAGS_DEBUG "/W3 /MTd /Z7 /Od")
+ SET(CMAKE_CXX_FLAGS_RELEASE "/w /MT /O2 /wd4530")
+ SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2")
+ SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE")
+ ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005" OR CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008" OR CMAKE_GENERATOR STREQUAL "Visual Studio 10")
+ ENDIF(NOT WITH_SHARED_LIBS)
+ ENDIF(CMAKE_CXX_COMPILER MATCHES cl)
+ELSE(WIN32 AND NOT CYGWIN)
+ IF(CMAKE_COMPILER_IS_GNUCXX)
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -fprofile-arcs -ftest-coverage -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers")
+ SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
+ SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -O6")
+ ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+ENDIF(WIN32 AND NOT CYGWIN)
+
+IF(CMAKE_BUILD_TYPE MATCHES Debug)
+ ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON)
+ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
+
+#####################################################################################
+
+######################################################################################
+### compilation of examples?
+######################################################################################
+
+SET(ENABLE_CMAKE_EXAMPLE TRUE CACHE BOOL "Enable copy of benchs and parameters file?")
+
+######################################################################################
+### Test config
+######################################################################################
+
+IF (ENABLE_CMAKE_TESTING OR ENABLE_MINIMAL_CMAKE_TESTING)
+ ENABLE_TESTING()
+ENDIF (ENABLE_CMAKE_TESTING OR ENABLE_MINIMAL_CMAKE_TESTING)
+######################################################################################
+
+#######################################################################################
+### Paths to EO, MO and MOEO must be specified above.
+#######################################################################################
+
+SET(EO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-eo" CACHE PATH "ParadisEO-EO source directory" FORCE)
+SET(EO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-eo/build" CACHE PATH "ParadisEO-EO binary directory" FORCE)
+
+SET(MO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-mo" CACHE PATH "ParadisMO-MO source directory" FORCE)
+SET(MO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-mo/build" CACHE PATH "ParadisMO-MO binary directory" FORCE)
+
+SET(OLDMO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-old-mo" CACHE PATH "ParadisMO-MO source directory" FORCE)
+SET(OLDMO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-old-mo/build" CACHE PATH "ParadisMO-MO binary directory" FORCE)
+
+SET(MOEO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-moeo" CACHE PATH "ParadisMOEO-MOEO source directory" FORCE)
+SET(MOEO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-moeo/build" CACHE PATH "ParadisMOEO-MOEO binary directory" FORCE)
+
+SET(PROBLEMS_SRC_DIR "${CMAKE_SOURCE_DIR}/../problems" CACHE PATH "Problems dependant source directory" FORCE)
+
+######################################################################################
+######################################################################################
+### Subdirectories that CMake should process for MO, MOEO and PEO
+######################################################################################
+
+ADD_SUBDIRECTORY(doc)
+ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(test)
+ADD_SUBDIRECTORY(tutorial)
+######################################################################################
+
diff --git a/branches/rc2.0/paradiseo-mo/src/CMakeLists.txt b/branches/rc2.0/paradiseo-mo/src/CMakeLists.txt
new file mode 100644
index 000000000..d41d4587a
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/CMakeLists.txt
@@ -0,0 +1,3 @@
+###############################################################
+# This is a dummy file
+###############################################################
diff --git a/branches/rc2.0/paradiseo-mo/src/acceptCrit/moAcceptanceCriterion.h b/branches/rc2.0/paradiseo-mo/src/acceptCrit/moAcceptanceCriterion.h
new file mode 100644
index 000000000..266b30f45
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/acceptCrit/moAcceptanceCriterion.h
@@ -0,0 +1,44 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sébastien Verel, Arnaud Liefooghe, Jérémie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moAcceptanceCriterion_h
+#define _moAcceptanceCriterion_h
+
+#include
+#include
+
+/**
+ * Abstract class for Acceptance criteria
+ */
+template< class Neighbor >
+class moAcceptanceCriterion : public eoBF, virtual public moMemory {
+
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/acceptCrit/moAlwaysAcceptCrit.h b/branches/rc2.0/paradiseo-mo/src/acceptCrit/moAlwaysAcceptCrit.h
new file mode 100644
index 000000000..777ef0b18
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/acceptCrit/moAlwaysAcceptCrit.h
@@ -0,0 +1,57 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sébastien Verel, Arnaud Liefooghe, Jérémie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moAlwaysAcceptCrit_h
+#define _moAlwaysAcceptCrit_h
+
+#include
+#include
+
+/**
+ * Acceptance Criterion for extreme diversification : always accept new solution
+ */
+template< class Neighbor >
+class moAlwaysAcceptCrit : public moAcceptanceCriterion, public moDummyMemory {
+
+public:
+ typedef typename Neighbor::EOT EOT;
+
+ /**
+ * Always accept the new solution
+ * @param _sol1 the previous solution
+ * @param _sol2 the new solution after local search
+ * @return always true
+ */
+ bool operator()(EOT& _sol1, EOT& _sol2) {
+ return true;
+ }
+
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/acceptCrit/moBetterAcceptCrit.h b/branches/rc2.0/paradiseo-mo/src/acceptCrit/moBetterAcceptCrit.h
new file mode 100644
index 000000000..13f2f867c
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/acceptCrit/moBetterAcceptCrit.h
@@ -0,0 +1,76 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sébastien Verel, Arnaud Liefooghe, Jérémie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moBetterAcceptCrit_h
+#define _moBetterAcceptCrit_h
+
+#include
+#include
+#include
+
+/**
+ * Acceptance Criterion for extreme intensification : accept if the new solution is better than previous one
+ */
+template< class Neighbor >
+class moBetterAcceptCrit : public moAcceptanceCriterion, public moDummyMemory {
+
+public:
+ typedef typename Neighbor::EOT EOT;
+
+ /*
+ constructor with a specific comparator
+
+ @param _comparator the comparaison method of two solutions
+ */
+ moBetterAcceptCrit(moSolComparator& _comparator):comparator(_comparator) {}
+
+ /*
+ default constructor:
+ compare the fitness value: accept if the fitness is higher
+ */
+ moBetterAcceptCrit():comparator(defaultComparator) {}
+
+ /**
+ * Accept if the new solution is better than previous one according to the comparator
+ * @param _sol1 the previous solution
+ * @param _sol2 the new solution after local search
+ * @return true if the new solution is better than previous one
+ */
+ bool operator()(EOT& _sol1, EOT& _sol2) {
+ return comparator(_sol1, _sol2);
+ }
+
+private:
+ moSolComparator& comparator;
+
+ moSolComparator defaultComparator;
+
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/eoDummyMonOp.h b/branches/rc2.0/paradiseo-mo/src/algo/eoDummyMonOp.h
new file mode 100644
index 000000000..dba88fa7f
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/eoDummyMonOp.h
@@ -0,0 +1,56 @@
+/*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+ Sébastien Verel, Arnaud Liefooghe, Jérémie Humeau
+
+ This software is governed by the CeCILL license under French law and
+ abiding by the rules of distribution of free software. You can use,
+ modify and/ or redistribute the software under the terms of the CeCILL
+ license as circulated by CEA, CNRS and INRIA at the following URL
+ "http://www.cecill.info".
+
+ As a counterpart to the access to the source code and rights to copy,
+ modify and redistribute granted by the license, users are provided only
+ with a limited warranty and the software's author, the holder of the
+ economic rights, and the successive licensors have only limited liability.
+
+ In this respect, the user's attention is drawn to the risks associated
+ with loading, using, modifying and/or developing or reproducing the
+ software by the user in light of its specific status of free software,
+ that may mean that it is complicated to manipulate, and that also
+ therefore means that it is reserved for developers and experienced
+ professionals having in-depth computer knowledge. Users are therefore
+ encouraged to load and test the software's suitability as regards their
+ requirements in conditions enabling the security of their systems and/or
+ data to be ensured and, more generally, to use and operate it in the
+ same conditions as regards security.
+ The fact that you are presently reading this means that you have had
+ knowledge of the CeCILL license and that you accept its terms.
+
+ ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+ Contact: paradiseo-help@lists.gforge.inria.fr
+ */
+
+#ifndef _moDummyMonOp_h
+#define _moDummyMonOp_h
+
+#include
+
+/**
+ * The mutation operator that does nothing at all !
+ */
+template
+class eoDummyMonOp: public eoMonOp {
+public:
+ /**
+ * Do nothing on the solution
+ * @param _solution the related solution
+ */
+ virtual bool operator()(EOT & _solution) {
+ return true;
+ }
+};
+
+#endif
+
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moDummyLS.h b/branches/rc2.0/paradiseo-mo/src/algo/moDummyLS.h
new file mode 100644
index 000000000..fd24d3575
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moDummyLS.h
@@ -0,0 +1,71 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moDummyLS_h
+#define _moDummyLS_h
+
+#include
+#include
+#include
+
+/**
+ * Dummy Local Search:
+ *
+ * To do nothing, only the full evaluation of the solution if necessary ;-)
+*/
+template
+class moDummyLS: public moLocalSearch
+{
+public:
+ typedef typename Neighbor::EOT EOT;
+ typedef moNeighborhood Neighborhood ;
+
+ /**
+ * Simple constructor
+ * @param _fullEval the full evaluation function
+ */
+ moDummyLS(eoEvalFunc& _fullEval):
+ moLocalSearch(explorer, trueCont, _fullEval)
+ {}
+
+ /**
+ * @return name of the class
+ */
+ virtual std::string className(void) const {
+ return "moDummyLS";
+ }
+
+private:
+ // always true continuator
+ moTrueContinuator trueCont;
+ // dummy Explorer
+ moDummyExplorer explorer;
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moFirstImprHC.h b/branches/rc2.0/paradiseo-mo/src/algo/moFirstImprHC.h
new file mode 100644
index 000000000..4793ef626
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moFirstImprHC.h
@@ -0,0 +1,120 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moFirstImprHC_h
+#define _moFirstImprHC_h
+
+#include
+#include
+#include
+#include
+#include
+
+/**
+ * First improvement HC:
+ * Hill-Climbing local search
+ *
+ * At each iteration,
+ * one of the random solution in the neighborhood is selected
+ * if the selected neighbor have higher fitness than the current solution
+ * then the solution is replaced by the selected neighbor
+ * the algorithm stops when there is no higher neighbor
+ */
+template
+class moFirstImprHC: public moLocalSearch
+{
+public:
+ typedef typename Neighbor::EOT EOT;
+ typedef moNeighborhood Neighborhood ;
+
+ /**
+ * Basic constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ */
+ moFirstImprHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval):
+ moLocalSearch(explorer, trueCont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp)
+ {}
+
+ /**
+ * Simple constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _cont an external continuator
+ */
+ moFirstImprHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, moContinuator& _cont):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp)
+ {}
+
+ /**
+ * General constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _cont an external continuator
+ * @param _compN a neighbor vs neighbor comparator
+ * @param _compSN a solution vs neighbor comparator
+ */
+ moFirstImprHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, moContinuator& _cont, moNeighborComparator& _compN, moSolNeighborComparator& _compSN):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, _compN, _compSN)
+ {}
+
+ /**
+ * to never stop the hill climbing
+ *
+ */
+ virtual void alwaysContinue() {
+ explorer.alwaysContinue();
+ }
+
+ /**
+ * Return the class id.
+ * @return the class name as a std::string
+ */
+ virtual std::string className() const {
+ return "moFirstImprHV";
+ }
+
+private:
+ // always true continuator
+ moTrueContinuator trueCont;
+ // compare the fitness values of neighbors: true if strictly greater
+ moNeighborComparator defaultNeighborComp;
+ // compare the fitness values of the solution and the neighbor: true if strictly greater
+ moSolNeighborComparator defaultSolNeighborComp;
+ // the explorer of the first improvement HC
+ moFirstImprHCexplorer explorer;
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moILS.h b/branches/rc2.0/paradiseo-mo/src/algo/moILS.h
new file mode 100644
index 000000000..934335b2d
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moILS.h
@@ -0,0 +1,118 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sébastien Verel, Arnaud Liefooghe, Jérémie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moILS_h
+#define _moILS_h
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/**
+ * Iterated Local Search
+ */
+template >
+class moILS: public moLocalSearch< NeighborLO >
+{
+public:
+
+ typedef typename Neighbor::EOT EOT;
+ typedef moNeighborhood Neighborhood ;
+
+
+ /**
+ * Basic constructor for Iterated Local Search
+ * @param _ls the local search to iterates
+ * @param _fullEval the full evaluation function
+ * @param _op the operator used to perturb solution
+ * @param _nbIteration the time limit for search
+ */
+ moILS(moLocalSearch& _ls, eoEvalFunc& _fullEval, eoMonOp& _op, unsigned int _nbIteration):
+ moLocalSearch< moDummyNeighbor >(explorer, iterCont, _fullEval),
+ iterCont(_nbIteration),
+ defaultPerturb(_op, _fullEval),
+ explorer(_ls, defaultPerturb, defaultAccept)
+ {}
+
+ /**
+ * Simple constructor for Iterated Local Search
+ * @param _ls the local search to iterates
+ * @param _fullEval the full evaluation function
+ * @param _op the operator used to perturb solution
+ * @param _cont a continuator
+ */
+ moILS(moLocalSearch& _ls, eoEvalFunc& _fullEval, eoMonOp& _op, moContinuator& _cont):
+ moLocalSearch< NeighborLO >(explorer, _cont, _fullEval),
+ iterCont(0),
+ defaultPerturb(_op, _fullEval),
+ explorer(_ls, defaultPerturb, defaultAccept)
+ {}
+
+ /**
+ * General constructor for Iterated Local Search
+ * @param _ls the local search to iterates
+ * @param _fullEval the full evaluation function
+ * @param _cont a continuator
+ * @param _perturb a perturbation operator
+ * @param _accept a acceptance criteria
+ */
+ // moILS(moLocalSearch& _ls, eoEvalFunc& _fullEval, moContinuator >& _cont, moMonOpPerturb& _perturb, moAcceptanceCriterion& _accept):
+ // moILS(moLocalSearch& _ls, eoEvalFunc& _fullEval, moContinuator& _cont, moPerturbation& _perturb):
+ moILS(moLocalSearch& _ls, eoEvalFunc& _fullEval, moContinuator& _cont, moPerturbation& _perturb, moAcceptanceCriterion& _accept):
+ moLocalSearch(explorer, _cont, _fullEval),
+ iterCont(0),
+ defaultPerturb(dummyOp, _fullEval),
+ explorer(_ls, _perturb, _accept)
+ {}
+
+private:
+
+ class dummmyMonOp: public eoMonOp {
+ public:
+ bool operator()(EOT&) {
+ return false;
+ }
+ } dummyOp;
+
+ moIterContinuator > iterCont;
+ moMonOpPerturb defaultPerturb;
+ moAlwaysAcceptCrit defaultAccept;
+ moILSexplorer< Neighbor , NeighborLO > explorer; // inherits from moNeighborhoodExplorer< NeighborLO >
+};
+
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moLocalSearch.h b/branches/rc2.0/paradiseo-mo/src/algo/moLocalSearch.h
new file mode 100644
index 000000000..bf77a8f3f
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moLocalSearch.h
@@ -0,0 +1,146 @@
+/*
+
+ Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+ Sébastien Verel, Arnaud Liefooghe, Jérémie Humeau
+
+ This software is governed by the CeCILL license under French law and
+ abiding by the rules of distribution of free software. You can use,
+ modify and/ or redistribute the software under the terms of the CeCILL
+ license as circulated by CEA, CNRS and INRIA at the following URL
+ "http://www.cecill.info".
+
+ As a counterpart to the access to the source code and rights to copy,
+ modify and redistribute granted by the license, users are provided only
+ with a limited warranty and the software's author, the holder of the
+ economic rights, and the successive licensors have only limited liability.
+
+ In this respect, the user's attention is drawn to the risks associated
+ with loading, using, modifying and/or developing or reproducing the
+ software by the user in light of its specific status of free software,
+ that may mean that it is complicated to manipulate, and that also
+ therefore means that it is reserved for developers and experienced
+ professionals having in-depth computer knowledge. Users are therefore
+ encouraged to load and test the software's suitability as regards their
+ requirements in conditions enabling the security of their systems and/or
+ data to be ensured and, more generally, to use and operate it in the
+ same conditions as regards security.
+ The fact that you are presently reading this means that you have had
+ knowledge of the CeCILL license and that you accept its terms.
+
+ ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+ Contact: paradiseo-help@lists.gforge.inria.fr
+ */
+
+#ifndef _moLocalSearch_h
+#define _moLocalSearch_h
+
+#include
+#include
+#include
+#include
+#include
+
+/**
+ * the main algorithm of the local search
+ */
+template
+class moLocalSearch: public eoMonOp {
+public:
+ typedef moNeighborhood Neighborhood;
+ typedef moNeighborhoodExplorer NeighborhoodExplorer;
+ typedef typename Neighbor::EOT EOT;
+
+ /**
+ * Constructor of a moLocalSearch
+ * @param _searchExpl a neighborhood explorer
+ * @param _cont an external continuator (can be a checkpoint!)
+ * @param _fullEval a full evaluation function
+ */
+ moLocalSearch(NeighborhoodExplorer& _searchExpl,
+ moContinuator & _cont, eoEvalFunc& _fullEval) :
+ searchExplorer(_searchExpl), cont(&_cont), fullEval(_fullEval) {
+ }
+ ;
+
+ /**
+ * Run the local search on a solution
+ * @param _solution the related solution
+ */
+ virtual bool operator()(EOT & _solution) {
+
+ if (_solution.invalid())
+ fullEval(_solution);
+
+ // initialization of the parameter of the search (for example fill empty the tabu list)
+ searchExplorer.initParam(_solution);
+
+ // initialization of the external continuator (for example the time, or the number of generations)
+ cont->init(_solution);
+
+ bool b;
+ do {
+ // explore the neighborhood of the solution
+ searchExplorer(_solution);
+ // if a solution in the neighborhood can be accepted
+ if (searchExplorer.accept(_solution)) {
+ searchExplorer.move(_solution);
+ searchExplorer.moveApplied(true);
+ } else
+ searchExplorer.moveApplied(false);
+
+ // update the parameter of the search (for ex. Temperature of the SA)
+ searchExplorer.updateParam(_solution);
+
+ b = (*cont)(_solution);
+ } while (b && searchExplorer.isContinue(_solution));
+
+ searchExplorer.terminate(_solution);
+
+ cont->lastCall(_solution);
+
+ return true;
+ }
+ ;
+
+ /**
+ * Set an external continuator
+ * @param _cont the external continuator
+ */
+ void setContinuator(moContinuator & _cont) {
+ cont = &_cont;
+ }
+
+ /**
+ * external continuator object
+ *
+ * @overload
+ * @return the external continuator
+ */
+ moContinuator* getContinuator() const {
+ return cont;
+ }
+
+ /**
+ * to get the neighborhood explorer
+ *
+ * @overload
+ * @return the neighborhood explorer
+ */
+ moNeighborhoodExplorer & getNeighborhoodExplorer() const {
+ return searchExplorer;
+ }
+
+protected:
+ // make the exploration of the neighborhood according to a local search heuristic
+ moNeighborhoodExplorer& searchExplorer;
+
+ // external continuator
+ moContinuator * cont;
+
+ //full evaluation function
+ eoEvalFunc& fullEval;
+};
+
+#endif
+
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moMetropolisHasting.h b/branches/rc2.0/paradiseo-mo/src/algo/moMetropolisHasting.h
new file mode 100644
index 000000000..5b4292459
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moMetropolisHasting.h
@@ -0,0 +1,110 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moMetropolisHasting_h
+#define _moMetropolisHasting_h
+
+#include
+#include
+#include
+#include
+#include
+
+/**
+ * Metropolis-Hasting local search
+ * Only the symetric case is considered when Q(x,y) = Q(y,x)
+ * Fitness must be > 0
+ *
+ * At each iteration,
+ * one of the random solution in the neighborhood is selected
+ * if the selected neighbor have higher or equal fitness than the current solution
+ * then the solution is replaced by the selected neighbor
+ * if a random number from [0,1] is lower than fitness(neighbor) / fitness(solution)
+ * then the solution is replaced by the selected neighbor
+ * the algorithm stops when the number of iterations is too large
+ */
+template
+class moMetropolisHasting: public moLocalSearch
+{
+public:
+ typedef typename Neighbor::EOT EOT;
+ typedef moNeighborhood Neighborhood ;
+
+ /**
+ * Basic constructor of the Metropolis-Hasting
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStep maximum step to do
+ */
+ moMetropolisHasting(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned int _nbStep):
+ moLocalSearch(explorer, trueCont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp, _nbStep)
+ {}
+
+ /**
+ * Simple constructor of the Metropolis-Hasting
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStep maximum step to do
+ * @param _cont an external continuator
+ */
+ moMetropolisHasting(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned int _nbStep, moContinuator& _cont):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp, _nbStep)
+ {}
+
+ /**
+ * General constructor of the Metropolis-Hasting
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStep maximum step to do
+ * @param _cont an external continuator
+ * @param _compN a neighbor vs neighbor comparator
+ * @param _compSN a solution vs neighbor comparator
+ */
+ moMetropolisHasting(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned int _nbStep, moContinuator& _cont, moNeighborComparator& _compN, moSolNeighborComparator& _compSN):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, _compN, _compSN, _nbStep)
+ {}
+
+private:
+ // always true continuator
+ moTrueContinuator trueCont;
+ // compare the fitness values of neighbors
+ moNeighborComparator defaultNeighborComp;
+ // compare the fitness values of the solution and the neighbor
+ moSolNeighborComparator defaultSolNeighborComp;
+ // MetropolisHasting explorer
+ moMetropolisHastingExplorer explorer;
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moNeutralHC.h b/branches/rc2.0/paradiseo-mo/src/algo/moNeutralHC.h
new file mode 100644
index 000000000..2fd2583d5
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moNeutralHC.h
@@ -0,0 +1,106 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moNeutralHC_h
+#define _moNeutralHC_h
+
+#include
+#include
+#include
+#include
+#include
+
+/**
+ * Hill-Climbing local search
+ *
+ * At each iteration,
+ * one of the random best solution in the neighborhood is selected
+ * if the selected neighbor have higher or equal fitness than the current solution
+ * then the solution is replaced by the selected neighbor
+ * the algorithm stops when there is no higher or equal neighbor, or if the number of iterations is too large
+ */
+template
+class moNeutralHC: public moLocalSearch
+{
+public:
+ typedef typename Neighbor::EOT EOT;
+ typedef moNeighborhood Neighborhood ;
+
+ /**
+ * Basic constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStep maximum step to do
+ */
+ moNeutralHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned int _nbStep):
+ moLocalSearch(explorer, trueCont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp, _nbStep)
+ {}
+
+ /**
+ * Simple constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStep maximum step to do
+ * @param _cont an external continuator
+ */
+ moNeutralHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned int _nbStep, moContinuator& _cont):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp, _nbStep)
+ {}
+
+ /**
+ * General constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStep maximum step to do
+ * @param _cont an external continuator
+ * @param _compN a neighbor vs neighbor comparator
+ * @param _compSN a solution vs neighbor comparator
+ */
+ moNeutralHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned int _nbStep, moContinuator& _cont, moNeighborComparator& _compN, moSolNeighborComparator& _compSN):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, _compN, _compSN, _nbStep)
+ {}
+
+private:
+ // always true continuator
+ moTrueContinuator trueCont;
+ // compare the fitness values of neighbors
+ moNeighborComparator defaultNeighborComp;
+ // compare the fitness values of the solution and the neighbor
+ moSolNeighborComparator defaultSolNeighborComp;
+ // the explorer of the HC with neutral move (equals fitness move)
+ moNeutralHCexplorer explorer;
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moRandomBestHC.h b/branches/rc2.0/paradiseo-mo/src/algo/moRandomBestHC.h
new file mode 100644
index 000000000..3e7a32d62
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moRandomBestHC.h
@@ -0,0 +1,104 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moRandomBestHC_h
+#define _moRandomBestHC_h
+
+#include
+#include
+#include
+#include
+#include
+
+/**
+ * Random Best HC:
+ * Hill-Climbing local search
+ *
+ * At each iteration,
+ * one of the random best solution in the neighborhood is selected
+ * if the selected neighbor have higher fitness than the current solution
+ * then the solution is replaced by the selected neighbor
+ * the algorithm stops when there is no higher neighbor
+ */
+template
+class moRandomBestHC: public moLocalSearch
+{
+public:
+ typedef typename Neighbor::EOT EOT;
+ typedef moNeighborhood Neighborhood ;
+
+ /**
+ * Basic constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ */
+ moRandomBestHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval):
+ moLocalSearch(explorer, trueCont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp)
+ {}
+
+ /**
+ * Simple constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _cont an external continuator
+ */
+ moRandomBestHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, moContinuator& _cont):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, defaultNeighborComp, defaultSolNeighborComp)
+ {}
+
+ /**
+ * General constructor for a hill-climber
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _cont an external continuator
+ * @param _compN a neighbor vs neighbor comparator
+ * @param _compSN a solution vs neighbor comparator
+ */
+ moRandomBestHC(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, moContinuator& _cont, moNeighborComparator& _compN, moSolNeighborComparator& _compSN):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, _compN, _compSN)
+ {}
+
+private:
+ // always true continuator
+ moTrueContinuator trueCont;
+ // compare the fitness values of neighbors
+ moNeighborComparator defaultNeighborComp;
+ // compare the fitness values of the solution and the neighbor
+ moSolNeighborComparator defaultSolNeighborComp;
+ // the explorer of the HC with random choice of the best solution
+ moRandomBestHCexplorer explorer;
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moRandomNeutralWalk.h b/branches/rc2.0/paradiseo-mo/src/algo/moRandomNeutralWalk.h
new file mode 100644
index 000000000..4f21588c5
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moRandomNeutralWalk.h
@@ -0,0 +1,102 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moRandomNeutralWalk_h
+#define _moRandomNeutralWalk_h
+
+#include
+#include
+#include
+#include
+#include
+
+/**
+ * Random Neutral Walk:
+ * Random Neutral walk local search
+ *
+ * At each iteration,
+ * one random neighbor with the same fitness is selected and replace the current solution
+ * the algorithm stops when the number of steps is reached
+ */
+template
+class moRandomNeutralWalk: public moLocalSearch
+{
+public:
+ typedef typename Neighbor::EOT EOT;
+ typedef moNeighborhood Neighborhood ;
+
+ /**
+ * Basic constructor for a random walk
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStepMax number of step of the walk
+ */
+ moRandomNeutralWalk(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned _nbStepMax):
+ moLocalSearch(explorer, trueCont, _fullEval),
+ explorer(_neighborhood, _eval, defaultSolNeighborComp, _nbStepMax)
+ {}
+
+ /**
+ * Simple constructor for a random walk
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStepMax number of step of the walk
+ * @param _cont an external continuator
+ */
+ moRandomNeutralWalk(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned _nbStepMax, moContinuator& _cont):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, defaultSolNeighborComp, _nbStepMax)
+ {}
+
+ /**
+ * General constructor for a random walk
+ * @param _neighborhood the neighborhood
+ * @param _fullEval the full evaluation function
+ * @param _eval neighbor's evaluation function
+ * @param _nbStepMax number of step of the walk
+ * @param _cont an external continuator
+ * @param _comp a solution vs neighbor comparator
+ */
+ moRandomNeutralWalk(Neighborhood& _neighborhood, eoEvalFunc& _fullEval, moEval& _eval, unsigned _nbStepMax, moContinuator& _cont, moSolNeighborComparator& _comp):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_neighborhood, _eval, _comp, _nbStepMax)
+ {}
+
+private:
+ // always true continuator
+ moTrueContinuator trueCont;
+ // the explorer of the random walk
+ moRandomNeutralWalkExplorer explorer;
+ // compare the fitness values of the solution and the neighbor
+ moSolNeighborComparator defaultSolNeighborComp;
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moRandomSearch.h b/branches/rc2.0/paradiseo-mo/src/algo/moRandomSearch.h
new file mode 100644
index 000000000..c0a468d6a
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moRandomSearch.h
@@ -0,0 +1,90 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moRandomSearch_h
+#define _moRandomSearch_h
+
+#include
+#include
+#include
+#include
+#include
+
+/**
+ * Random Search:
+ * Pure random search local search
+ *
+ * At each iteration,
+ * one random solution is selected and replace the current solution
+ * the algorithm stops when the number of solution is reached
+ */
+template
+class moRandomSearch: public moLocalSearch
+{
+public:
+ typedef typename Neighbor::EOT EOT;
+
+ /**
+ * Simple constructor for a random search
+ * @param _init the solution initializer, to explore at random the search space
+ * @param _fullEval the full evaluation function
+ * @param _nbSolMax number of solutions
+ */
+ moRandomSearch(eoInit & _init, eoEvalFunc& _fullEval, unsigned _nbSolMax):
+ moLocalSearch(explorer, trueCont, _fullEval),
+ explorer(_init, _fullEval, _nbSolMax>0?_nbSolMax - 1:0)
+ {}
+
+ /**
+ * General constructor for a random search
+ * @param _init the solution initializer, to explore at random the search space
+ * @param _fullEval the full evaluation function
+ * @param _nbSolMax number of solutions
+ * @param _cont external continuator
+ */
+ moRandomSearch(eoInit & _init, eoEvalFunc& _fullEval, unsigned _nbSolMax, moContinuator& _cont):
+ moLocalSearch(explorer, _cont, _fullEval),
+ explorer(_init, _fullEval, _nbSolMax>0?_nbSolMax - 1:0)
+ {}
+
+ /**
+ * @return name of the class
+ */
+ virtual std::string className(void) const {
+ return "moRandomSearch";
+ }
+
+private:
+ // always true continuator
+ moTrueContinuator trueCont;
+ // the explorer of the random walk
+ moRandomSearchExplorer explorer;
+};
+
+#endif
diff --git a/branches/rc2.0/paradiseo-mo/src/algo/moRandomWalk.h b/branches/rc2.0/paradiseo-mo/src/algo/moRandomWalk.h
new file mode 100644
index 000000000..dafa3f277
--- /dev/null
+++ b/branches/rc2.0/paradiseo-mo/src/algo/moRandomWalk.h
@@ -0,0 +1,87 @@
+/*
+
+Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010
+
+Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau
+
+This software is governed by the CeCILL license under French law and
+abiding by the rules of distribution of free software. You can ue,
+modify and/ or redistribute the software under the terms of the CeCILL
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL license and that you accept its terms.
+
+ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+Contact: paradiseo-help@lists.gforge.inria.fr
+*/
+
+#ifndef _moRandomWalk_h
+#define _moRandomWalk_h
+
+#include
+#include
+#include
+#include