From 8fe0255b242cfd08e29a2ed583f902dc774e96ce Mon Sep 17 00:00:00 2001 From: legrand Date: Wed, 20 Dec 2006 13:04:18 +0000 Subject: [PATCH] git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@98 331e1502-861f-0410-8da2-ba01fb791d7f --- trunk/paradiseo-peo/AUTHORS | 0 trunk/paradiseo-peo/COPYING | 340 + trunk/paradiseo-peo/ChangeLog | 0 trunk/paradiseo-peo/INSTALL | 236 + trunk/paradiseo-peo/Makefile.am | 35 + trunk/paradiseo-peo/Makefile.in | 629 ++ trunk/paradiseo-peo/NEWS | 0 trunk/paradiseo-peo/README | 0 trunk/paradiseo-peo/TODO | 0 trunk/paradiseo-peo/acconfig.h | 14 + trunk/paradiseo-peo/acinclude.m4 | 1 + trunk/paradiseo-peo/aclocal.m4 | 874 +++ trunk/paradiseo-peo/autogen.sh | 127 + trunk/paradiseo-peo/config.guess | 1411 ++++ trunk/paradiseo-peo/config.h | 70 + trunk/paradiseo-peo/config.h.in | 69 + trunk/paradiseo-peo/config.sub | 1500 ++++ trunk/paradiseo-peo/configure.in | 45 + trunk/paradiseo-peo/docs/Makefile.am | 10 + trunk/paradiseo-peo/docs/Makefile.in | 293 + trunk/paradiseo-peo/docs/ParadisEO.doxytag | 1550 ++++ .../docs/html/_n_e_w_s-source.html | 29 + .../docs/html/_r_e_a_d_m_e-source.html | 29 + .../docs/html/acconfig_8h-source.html | 43 + trunk/paradiseo-peo/docs/html/annotated.html | 62 + .../docs/html/class_communicable-members.html | 48 + .../docs/html/class_communicable.html | 100 + .../docs/html/class_communicable.png | Bin 0 -> 3267 bytes .../docs/html/class_communicator-members.html | 46 + .../docs/html/class_communicator.html | 59 + .../docs/html/class_communicator.png | Bin 0 -> 472 bytes .../docs/html/class_cooperative-members.html | 55 + .../docs/html/class_cooperative.html | 76 + .../docs/html/class_cooperative.png | Bin 0 -> 926 bytes .../html/class_reactive_thread-members.html | 46 + .../docs/html/class_reactive_thread.html | 67 + .../docs/html/class_reactive_thread.png | Bin 0 -> 633 bytes .../html/class_ring_topology-members.html | 41 + .../docs/html/class_ring_topology.html | 55 + .../docs/html/class_ring_topology.png | Bin 0 -> 356 bytes .../docs/html/class_runner-members.html | 63 + .../paradiseo-peo/docs/html/class_runner.html | 88 + .../paradiseo-peo/docs/html/class_runner.png | Bin 0 -> 649 bytes .../docs/html/class_service-members.html | 62 + .../docs/html/class_service.html | 102 + .../paradiseo-peo/docs/html/class_service.png | Bin 0 -> 2032 bytes .../docs/html/class_thread-members.html | 43 + .../paradiseo-peo/docs/html/class_thread.html | 75 + .../paradiseo-peo/docs/html/class_thread.png | Bin 0 -> 982 bytes .../docs/html/class_topology-members.html | 41 + .../docs/html/class_topology.html | 65 + .../docs/html/class_topology.png | Bin 0 -> 359 bytes .../docs/html/class_worker-members.html | 68 + .../paradiseo-peo/docs/html/class_worker.html | 94 + .../paradiseo-peo/docs/html/class_worker.png | Bin 0 -> 624 bytes trunk/paradiseo-peo/docs/html/classes.html | 48 + .../docs/html/classpeo_agg_eval_func.html | 67 + .../docs/html/classpeo_agg_eval_func.png | Bin 0 -> 611 bytes .../classpeo_async_island_mig-members.html | 67 + .../docs/html/classpeo_async_island_mig.html | 320 + .../docs/html/classpeo_async_island_mig.png | Bin 0 -> 637 bytes .../docs/html/classpeo_e_a-members.html | 69 + .../paradiseo-peo/docs/html/classpeo_e_a.html | 256 + .../paradiseo-peo/docs/html/classpeo_e_a.png | Bin 0 -> 637 bytes .../classpeo_no_agg_eval_func-members.html | 38 + .../docs/html/classpeo_no_agg_eval_func.html | 66 + .../docs/html/classpeo_no_agg_eval_func.png | Bin 0 -> 601 bytes .../html/classpeo_para_pop_eval-members.html | 73 + .../docs/html/classpeo_para_pop_eval.html | 501 ++ .../docs/html/classpeo_para_pop_eval.png | Bin 0 -> 772 bytes ...classpeo_para_s_g_a_transform-members.html | 71 + .../html/classpeo_para_s_g_a_transform.html | 112 + .../html/classpeo_para_s_g_a_transform.png | Bin 0 -> 850 bytes .../docs/html/classpeo_pop_eval-members.html | 61 + .../docs/html/classpeo_pop_eval.html | 69 + .../docs/html/classpeo_pop_eval.png | Bin 0 -> 1211 bytes .../html/classpeo_seq_pop_eval-members.html | 63 + .../docs/html/classpeo_seq_pop_eval.html | 162 + .../docs/html/classpeo_seq_pop_eval.png | Bin 0 -> 776 bytes .../html/classpeo_seq_transform-members.html | 63 + .../docs/html/classpeo_seq_transform.html | 180 + .../docs/html/classpeo_seq_transform.png | Bin 0 -> 791 bytes .../classpeo_sync_island_mig-members.html | 68 + .../docs/html/classpeo_sync_island_mig.html | 325 + .../docs/html/classpeo_sync_island_mig.png | Bin 0 -> 636 bytes .../classpeo_sync_multi_start-members.html | 72 + .../docs/html/classpeo_sync_multi_start.html | 503 ++ .../docs/html/classpeo_sync_multi_start.png | Bin 0 -> 607 bytes .../docs/html/classpeo_transform-members.html | 60 + .../docs/html/classpeo_transform.html | 62 + .../docs/html/classpeo_transform.png | Bin 0 -> 1199 bytes .../docs/html/comm_8cpp-source.html | 111 + .../docs/html/comm_8h-source.html | 75 + .../docs/html/communicable_8cpp-source.html | 114 + .../docs/html/communicable_8h-source.html | 91 + .../docs/html/config_8h-source.html | 99 + .../docs/html/coop_8cpp-source.html | 86 + .../docs/html/cooperative_8h-source.html | 85 + .../docs/html/core_2runner_8cpp-source.html | 148 + .../docs/html/core_2service_8cpp-source.html | 102 + trunk/paradiseo-peo/docs/html/doxygen.css | 310 + trunk/paradiseo-peo/docs/html/doxygen.png | Bin 0 -> 1281 bytes .../docs/html/eo_pop__comm_8h-source.html | 76 + .../docs/html/eo_vector__comm_8h-source.html | 82 + trunk/paradiseo-peo/docs/html/files.html | 102 + trunk/paradiseo-peo/docs/html/ftv2blank.png | Bin 0 -> 174 bytes trunk/paradiseo-peo/docs/html/ftv2doc.png | Bin 0 -> 255 bytes .../docs/html/ftv2folderclosed.png | Bin 0 -> 259 bytes .../docs/html/ftv2folderopen.png | Bin 0 -> 261 bytes .../paradiseo-peo/docs/html/ftv2lastnode.png | Bin 0 -> 233 bytes trunk/paradiseo-peo/docs/html/ftv2link.png | Bin 0 -> 358 bytes .../paradiseo-peo/docs/html/ftv2mlastnode.png | Bin 0 -> 160 bytes trunk/paradiseo-peo/docs/html/ftv2mnode.png | Bin 0 -> 194 bytes trunk/paradiseo-peo/docs/html/ftv2node.png | Bin 0 -> 235 bytes .../paradiseo-peo/docs/html/ftv2plastnode.png | Bin 0 -> 165 bytes trunk/paradiseo-peo/docs/html/ftv2pnode.png | Bin 0 -> 200 bytes .../paradiseo-peo/docs/html/ftv2vertline.png | Bin 0 -> 229 bytes trunk/paradiseo-peo/docs/html/functions.html | 225 + .../docs/html/functions_func.html | 155 + .../docs/html/functions_vars.html | 154 + trunk/paradiseo-peo/docs/html/hierarchy.html | 84 + trunk/paradiseo-peo/docs/html/index.html | 8 + trunk/paradiseo-peo/docs/html/installdox | 117 + trunk/paradiseo-peo/docs/html/main.html | 100 + .../docs/html/mess_8cpp-source.html | 281 + .../docs/html/mess_8h-source.html | 75 + .../docs/html/messaging_8h-source.html | 148 + .../docs/html/namespacemembers.html | 51 + .../docs/html/namespacemembers_func.html | 49 + .../docs/html/namespacemembers_vars.html | 47 + .../paradiseo-peo/docs/html/namespacepeo.html | 65 + trunk/paradiseo-peo/docs/html/namespaces.html | 37 + .../docs/html/node_8cpp-source.html | 102 + .../docs/html/node_8h-source.html | 68 + .../docs/html/paradiseo_8h-source.html | 83 + .../docs/html/param_8cpp-source.html | 65 + .../docs/html/param_8h-source.html | 58 + .../docs/html/peo__debug_8cpp-source.html | 121 + .../docs/html/peo__debug_8h-source.html | 66 + .../docs/html/peo__fin_8cpp-source.html | 68 + .../docs/html/peo__fin_8h-source.html | 61 + .../docs/html/peo__init_8cpp-source.html | 81 + .../docs/html/peo__init_8h-source.html | 65 + .../docs/html/peo__param_8cpp-source.html | 69 + .../docs/html/peo__param_8h-source.html | 61 + .../docs/html/peo__run_8cpp-source.html | 63 + .../docs/html/peo__run_8h-source.html | 61 + .../html/peo_agg_eval_func_8h-source.html | 64 + .../html/peo_async_island_mig_8h-source.html | 204 + .../docs/html/peo_e_a_8h-source.html | 143 + .../html/peo_no_agg_eval_func_8h-source.html | 73 + .../html/peo_para_pop_eval_8h-source.html | 241 + .../peo_para_s_g_a_transform_8h-source.html | 199 + .../docs/html/peo_pop_eval_8h-source.html | 67 + .../docs/html/peo_seq_pop_eval_8h-source.html | 87 + .../html/peo_seq_transform_8h-source.html | 95 + .../html/peo_sync_island_mig_8h-source.html | 232 + .../html/peo_sync_multi_start_8h-source.html | 196 + .../docs/html/peo_transform_8h-source.html | 66 + .../docs/html/reac__thread_8cpp-source.html | 80 + .../docs/html/reac__thread_8h-source.html | 79 + .../docs/html/recv_8cpp-source.html | 156 + .../docs/html/recv_8h-source.html | 58 + .../docs/html/ring__topo_8cpp-source.html | 69 + .../docs/html/ring__topo_8h-source.html | 68 + .../html/rmc_2mpi_2runner_8cpp-source.html | 77 + .../html/rmc_2mpi_2service_8cpp-source.html | 74 + .../docs/html/rmc_8cpp-source.html | 90 + .../docs/html/rmc_8h-source.html | 62 + .../docs/html/runner_8h-source.html | 102 + .../docs/html/scheduler_8cpp-source.html | 122 + .../docs/html/scheduler_8h-source.html | 76 + .../docs/html/schema_8cpp-source.html | 179 + .../docs/html/schema_8h-source.html | 83 + trunk/paradiseo-peo/docs/html/search.idx | Bin 0 -> 378366 bytes trunk/paradiseo-peo/docs/html/search.php | 382 + .../docs/html/send_8cpp-source.html | 160 + .../docs/html/send_8h-source.html | 66 + .../docs/html/service_8h-source.html | 94 + .../docs/html/struct_node-members.html | 42 + .../paradiseo-peo/docs/html/struct_node.html | 62 + ...truct_s_e_n_d___r_e_q_u_e_s_t-members.html | 40 + .../html/struct_s_e_n_d___r_e_q_u_e_s_t.html | 56 + trunk/paradiseo-peo/docs/html/tab_b.gif | Bin 0 -> 35 bytes trunk/paradiseo-peo/docs/html/tab_l.gif | Bin 0 -> 706 bytes trunk/paradiseo-peo/docs/html/tab_r.gif | Bin 0 -> 2585 bytes trunk/paradiseo-peo/docs/html/tabs.css | 102 + .../docs/html/tags_8h-source.html | 68 + .../docs/html/thread_8cpp-source.html | 125 + .../docs/html/thread_8h-source.html | 92 + .../docs/html/topology_8cpp-source.html | 64 + .../docs/html/topology_8h-source.html | 77 + trunk/paradiseo-peo/docs/html/tree.html | 235 + .../docs/html/worker_8cpp-source.html | 138 + .../docs/html/worker_8h-source.html | 94 + .../docs/html/xml__parser_8cpp-source.html | 119 + .../docs/html/xml__parser_8h-source.html | 66 + trunk/paradiseo-peo/docs/latex/Helvetica.ttf | Bin 0 -> 32760 bytes trunk/paradiseo-peo/docs/latex/Makefile | 39 + trunk/paradiseo-peo/docs/latex/annotated.tex | 27 + .../docs/latex/class_communicable.eps | 269 + .../docs/latex/class_communicable.tex | 63 + .../docs/latex/class_communicator.eps | 203 + .../docs/latex/class_communicator.tex | 30 + .../docs/latex/class_cooperative.eps | 209 + .../docs/latex/class_cooperative.tex | 48 + .../docs/latex/class_reactive_thread.eps | 209 + .../docs/latex/class_reactive_thread.tex | 39 + .../docs/latex/class_ring_topology.eps | 197 + .../docs/latex/class_ring_topology.tex | 27 + .../paradiseo-peo/docs/latex/class_runner.eps | 209 + .../paradiseo-peo/docs/latex/class_runner.tex | 61 + .../docs/latex/class_service.eps | 237 + .../docs/latex/class_service.tex | 70 + .../paradiseo-peo/docs/latex/class_thread.eps | 221 + .../paradiseo-peo/docs/latex/class_thread.tex | 45 + .../docs/latex/class_topology.eps | 197 + .../docs/latex/class_topology.tex | 39 + .../paradiseo-peo/docs/latex/class_worker.eps | 209 + .../paradiseo-peo/docs/latex/class_worker.tex | 66 + .../docs/latex/classpeo_agg_eval_func.eps | 197 + .../docs/latex/classpeo_agg_eval_func.tex | 37 + .../docs/latex/classpeo_async_island_mig.eps | 203 + .../docs/latex/classpeo_async_island_mig.tex | 184 + .../paradiseo-peo/docs/latex/classpeo_e_a.eps | 209 + .../paradiseo-peo/docs/latex/classpeo_e_a.tex | 125 + .../docs/latex/classpeo_no_agg_eval_func.eps | 197 + .../docs/latex/classpeo_no_agg_eval_func.tex | 35 + .../docs/latex/classpeo_para_pop_eval.eps | 209 + .../docs/latex/classpeo_para_pop_eval.tex | 216 + .../latex/classpeo_para_s_g_a_transform.eps | 209 + .../latex/classpeo_para_s_g_a_transform.tex | 82 + .../docs/latex/classpeo_pop_eval.eps | 215 + .../docs/latex/classpeo_pop_eval.tex | 35 + .../docs/latex/classpeo_seq_pop_eval.eps | 209 + .../docs/latex/classpeo_seq_pop_eval.tex | 80 + .../docs/latex/classpeo_seq_transform.eps | 209 + .../docs/latex/classpeo_seq_transform.tex | 93 + .../docs/latex/classpeo_sync_island_mig.eps | 203 + .../docs/latex/classpeo_sync_island_mig.tex | 189 + .../docs/latex/classpeo_sync_multi_start.eps | 203 + .../docs/latex/classpeo_sync_multi_start.tex | 203 + .../docs/latex/classpeo_transform.eps | 215 + .../docs/latex/classpeo_transform.tex | 27 + trunk/paradiseo-peo/docs/latex/doxygen.sty | 64 + trunk/paradiseo-peo/docs/latex/hierarchy.tex | 49 + trunk/paradiseo-peo/docs/latex/main.tex | 49 + .../paradiseo-peo/docs/latex/namespacepeo.tex | 34 + trunk/paradiseo-peo/docs/latex/namespaces.tex | 4 + trunk/paradiseo-peo/docs/latex/refman.tex | 66 + .../paradiseo-peo/docs/latex/struct_node.tex | 32 + .../latex/struct_s_e_n_d___r_e_q_u_e_s_t.tex | 26 + .../docs/man/man3/Communicable.3 | 62 + .../docs/man/man3/Communicator.3 | 27 + .../paradiseo-peo/docs/man/man3/Cooperative.3 | 48 + trunk/paradiseo-peo/docs/man/man3/Node.3 | 34 + .../docs/man/man3/ReactiveThread.3 | 39 + .../docs/man/man3/RingTopology.3 | 24 + trunk/paradiseo-peo/docs/man/man3/Runner.3 | 60 + .../docs/man/man3/SEND_REQUEST.3 | 28 + trunk/paradiseo-peo/docs/man/man3/Service.3 | 69 + trunk/paradiseo-peo/docs/man/man3/Thread.3 | 43 + trunk/paradiseo-peo/docs/man/man3/Topology.3 | 37 + trunk/paradiseo-peo/docs/man/man3/Worker.3 | 64 + trunk/paradiseo-peo/docs/man/man3/peo.3 | 43 + .../docs/man/man3/peoAggEvalFunc.3 | 31 + .../docs/man/man3/peoAsyncIslandMig.3 | 174 + trunk/paradiseo-peo/docs/man/man3/peoEA.3 | 109 + .../docs/man/man3/peoNoAggEvalFunc.3 | 35 + .../docs/man/man3/peoParaPopEval.3 | 217 + .../docs/man/man3/peoParaSGATransform.3 | 83 + .../paradiseo-peo/docs/man/man3/peoPopEval.3 | 37 + .../docs/man/man3/peoSeqPopEval.3 | 78 + .../docs/man/man3/peoSeqTransform.3 | 96 + .../docs/man/man3/peoSyncIslandMig.3 | 181 + .../docs/man/man3/peoSyncMultiStart.3 | 209 + .../docs/man/man3/peoTransform.3 | 27 + trunk/paradiseo-peo/docs/paradiseo.cfg | 1119 +++ trunk/paradiseo-peo/indentSources | 20 + trunk/paradiseo-peo/install-sh | 323 + trunk/paradiseo-peo/ltmain.sh | 6496 +++++++++++++++++ trunk/paradiseo-peo/missing | 357 + trunk/paradiseo-peo/mkinstalldirs | 99 + trunk/paradiseo-peo/src/Makefile.am | 72 + trunk/paradiseo-peo/src/Makefile.in | 777 ++ trunk/paradiseo-peo/src/core/communicable.cpp | 85 + .../paradiseo-peo/src/core/communicable.cpp: | 0 trunk/paradiseo-peo/src/core/communicable.h | 62 + trunk/paradiseo-peo/src/core/communicable.h: | 0 trunk/paradiseo-peo/src/core/cooperative.h | 56 + trunk/paradiseo-peo/src/core/cooperative.h: | 0 trunk/paradiseo-peo/src/core/eoPop_comm.h | 47 + trunk/paradiseo-peo/src/core/eoPop_comm.h: | 0 trunk/paradiseo-peo/src/core/eoVector_comm.h | 53 + trunk/paradiseo-peo/src/core/eoVector_comm.h: | 0 trunk/paradiseo-peo/src/core/messaging.h | 119 + trunk/paradiseo-peo/src/core/messaging.h: | 0 trunk/paradiseo-peo/src/core/peo_debug.cpp | 92 + trunk/paradiseo-peo/src/core/peo_debug.cpp: | 0 trunk/paradiseo-peo/src/core/peo_debug.h | 37 + trunk/paradiseo-peo/src/core/peo_debug.h: | 0 trunk/paradiseo-peo/src/core/peo_fin.cpp | 39 + trunk/paradiseo-peo/src/core/peo_fin.cpp: | 0 trunk/paradiseo-peo/src/core/peo_fin.h | 32 + trunk/paradiseo-peo/src/core/peo_fin.h: | 0 trunk/paradiseo-peo/src/core/peo_init.cpp | 52 + trunk/paradiseo-peo/src/core/peo_init.cpp: | 0 trunk/paradiseo-peo/src/core/peo_init.h | 36 + trunk/paradiseo-peo/src/core/peo_init.h: | 0 trunk/paradiseo-peo/src/core/peo_param.cpp | 40 + trunk/paradiseo-peo/src/core/peo_param.cpp: | 0 trunk/paradiseo-peo/src/core/peo_param.h | 32 + trunk/paradiseo-peo/src/core/peo_param.h: | 0 trunk/paradiseo-peo/src/core/peo_run.cpp | 34 + trunk/paradiseo-peo/src/core/peo_run.cpp: | 0 trunk/paradiseo-peo/src/core/peo_run.h | 32 + trunk/paradiseo-peo/src/core/peo_run.h: | 0 trunk/paradiseo-peo/src/core/reac_thread.cpp | 51 + trunk/paradiseo-peo/src/core/reac_thread.cpp: | 0 trunk/paradiseo-peo/src/core/reac_thread.h | 50 + trunk/paradiseo-peo/src/core/reac_thread.h: | 0 trunk/paradiseo-peo/src/core/ring_topo.cpp | 40 + trunk/paradiseo-peo/src/core/ring_topo.cpp: | 0 trunk/paradiseo-peo/src/core/ring_topo.h | 39 + trunk/paradiseo-peo/src/core/ring_topo.h: | 0 trunk/paradiseo-peo/src/core/rmc.h | 33 + trunk/paradiseo-peo/src/core/rmc.h: | 0 trunk/paradiseo-peo/src/core/runner.cpp | 119 + trunk/paradiseo-peo/src/core/runner.cpp: | 0 trunk/paradiseo-peo/src/core/runner.h | 73 + trunk/paradiseo-peo/src/core/runner.h: | 0 trunk/paradiseo-peo/src/core/service.cpp | 73 + trunk/paradiseo-peo/src/core/service.cpp: | 0 trunk/paradiseo-peo/src/core/service.h | 65 + trunk/paradiseo-peo/src/core/service.h: | 0 trunk/paradiseo-peo/src/core/thread.cpp | 96 + trunk/paradiseo-peo/src/core/thread.cpp: | 0 trunk/paradiseo-peo/src/core/thread.h | 63 + trunk/paradiseo-peo/src/core/thread.h: | 0 trunk/paradiseo-peo/src/core/topology.cpp | 35 + trunk/paradiseo-peo/src/core/topology.cpp: | 0 trunk/paradiseo-peo/src/core/topology.h | 48 + trunk/paradiseo-peo/src/core/topology.h: | 0 trunk/paradiseo-peo/src/paradiseo | 29 + trunk/paradiseo-peo/src/paradiseo.h | 286 + trunk/paradiseo-peo/src/peoAggEvalFunc.h | 45 + trunk/paradiseo-peo/src/peoAsyncIslandMig.h | 273 + trunk/paradiseo-peo/src/peoEA.h | 160 + trunk/paradiseo-peo/src/peoNoAggEvalFunc.h | 49 + trunk/paradiseo-peo/src/peoParaPopEval.h | 240 + trunk/paradiseo-peo/src/peoParaSGATransform.h | 170 + trunk/paradiseo-peo/src/peoPopEval.h | 43 + trunk/paradiseo-peo/src/peoSeqPopEval.h | 68 + trunk/paradiseo-peo/src/peoSeqTransform.h | 81 + trunk/paradiseo-peo/src/peoSyncIslandMig.h | 301 + trunk/paradiseo-peo/src/peoSyncMultiStart.h | 198 + trunk/paradiseo-peo/src/peoTransform.h | 40 + trunk/paradiseo-peo/src/rmc/Makefile.am | 1 + trunk/paradiseo-peo/src/rmc/Makefile.in | 443 ++ trunk/paradiseo-peo/src/rmc/mpi/Makefile.am | 39 + trunk/paradiseo-peo/src/rmc/mpi/Makefile.in | 476 ++ trunk/paradiseo-peo/src/rmc/mpi/comm.cpp | 82 + trunk/paradiseo-peo/src/rmc/mpi/comm.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/comm.h | 46 + trunk/paradiseo-peo/src/rmc/mpi/comm.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/coop.cpp | 57 + trunk/paradiseo-peo/src/rmc/mpi/coop.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/mess.cpp | 252 + trunk/paradiseo-peo/src/rmc/mpi/mess.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/mess.h | 46 + trunk/paradiseo-peo/src/rmc/mpi/mess.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/node.cpp | 73 + trunk/paradiseo-peo/src/rmc/mpi/node.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/node.h | 39 + trunk/paradiseo-peo/src/rmc/mpi/node.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/param.cpp | 36 + trunk/paradiseo-peo/src/rmc/mpi/param.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/param.h | 29 + trunk/paradiseo-peo/src/rmc/mpi/param.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/recv.cpp | 127 + trunk/paradiseo-peo/src/rmc/mpi/recv.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/recv.h | 29 + trunk/paradiseo-peo/src/rmc/mpi/recv.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp | 62 + trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/runner.cpp | 48 + trunk/paradiseo-peo/src/rmc/mpi/runner.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp | 93 + .../paradiseo-peo/src/rmc/mpi/scheduler.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/scheduler.h | 47 + trunk/paradiseo-peo/src/rmc/mpi/scheduler.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/schema.cpp | 150 + trunk/paradiseo-peo/src/rmc/mpi/schema.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/schema.h | 54 + trunk/paradiseo-peo/src/rmc/mpi/schema.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/send.cpp | 131 + trunk/paradiseo-peo/src/rmc/mpi/send.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/send.h | 37 + trunk/paradiseo-peo/src/rmc/mpi/send.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/service.cpp | 45 + trunk/paradiseo-peo/src/rmc/mpi/service.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/tags.h | 39 + trunk/paradiseo-peo/src/rmc/mpi/tags.h: | 0 trunk/paradiseo-peo/src/rmc/mpi/worker.cpp | 109 + trunk/paradiseo-peo/src/rmc/mpi/worker.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/worker.h | 65 + trunk/paradiseo-peo/src/rmc/mpi/worker.h: | 0 .../paradiseo-peo/src/rmc/mpi/xml_parser.cpp | 90 + .../paradiseo-peo/src/rmc/mpi/xml_parser.cpp: | 0 trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h | 37 + trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h: | 0 411 files changed, 45668 insertions(+) create mode 100755 trunk/paradiseo-peo/AUTHORS create mode 100755 trunk/paradiseo-peo/COPYING create mode 100755 trunk/paradiseo-peo/ChangeLog create mode 100755 trunk/paradiseo-peo/INSTALL create mode 100755 trunk/paradiseo-peo/Makefile.am create mode 100755 trunk/paradiseo-peo/Makefile.in create mode 100755 trunk/paradiseo-peo/NEWS create mode 100755 trunk/paradiseo-peo/README create mode 100755 trunk/paradiseo-peo/TODO create mode 100755 trunk/paradiseo-peo/acconfig.h create mode 100755 trunk/paradiseo-peo/acinclude.m4 create mode 100755 trunk/paradiseo-peo/aclocal.m4 create mode 100755 trunk/paradiseo-peo/autogen.sh create mode 100755 trunk/paradiseo-peo/config.guess create mode 100755 trunk/paradiseo-peo/config.h create mode 100755 trunk/paradiseo-peo/config.h.in create mode 100755 trunk/paradiseo-peo/config.sub create mode 100755 trunk/paradiseo-peo/configure.in create mode 100755 trunk/paradiseo-peo/docs/Makefile.am create mode 100755 trunk/paradiseo-peo/docs/Makefile.in create mode 100755 trunk/paradiseo-peo/docs/ParadisEO.doxytag create mode 100644 trunk/paradiseo-peo/docs/html/_n_e_w_s-source.html create mode 100644 trunk/paradiseo-peo/docs/html/_r_e_a_d_m_e-source.html create mode 100644 trunk/paradiseo-peo/docs/html/acconfig_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/annotated.html create mode 100644 trunk/paradiseo-peo/docs/html/class_communicable-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_communicable.html create mode 100644 trunk/paradiseo-peo/docs/html/class_communicable.png create mode 100644 trunk/paradiseo-peo/docs/html/class_communicator-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_communicator.html create mode 100644 trunk/paradiseo-peo/docs/html/class_communicator.png create mode 100644 trunk/paradiseo-peo/docs/html/class_cooperative-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_cooperative.html create mode 100644 trunk/paradiseo-peo/docs/html/class_cooperative.png create mode 100644 trunk/paradiseo-peo/docs/html/class_reactive_thread-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_reactive_thread.html create mode 100644 trunk/paradiseo-peo/docs/html/class_reactive_thread.png create mode 100644 trunk/paradiseo-peo/docs/html/class_ring_topology-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_ring_topology.html create mode 100644 trunk/paradiseo-peo/docs/html/class_ring_topology.png create mode 100644 trunk/paradiseo-peo/docs/html/class_runner-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_runner.html create mode 100644 trunk/paradiseo-peo/docs/html/class_runner.png create mode 100644 trunk/paradiseo-peo/docs/html/class_service-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_service.html create mode 100644 trunk/paradiseo-peo/docs/html/class_service.png create mode 100644 trunk/paradiseo-peo/docs/html/class_thread-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_thread.html create mode 100644 trunk/paradiseo-peo/docs/html/class_thread.png create mode 100644 trunk/paradiseo-peo/docs/html/class_topology-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_topology.html create mode 100644 trunk/paradiseo-peo/docs/html/class_topology.png create mode 100644 trunk/paradiseo-peo/docs/html/class_worker-members.html create mode 100644 trunk/paradiseo-peo/docs/html/class_worker.html create mode 100644 trunk/paradiseo-peo/docs/html/class_worker.png create mode 100644 trunk/paradiseo-peo/docs/html/classes.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_agg_eval_func.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_agg_eval_func.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_async_island_mig-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_async_island_mig.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_async_island_mig.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_e_a-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_e_a.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_e_a.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_pop_eval-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_pop_eval.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_pop_eval.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_seq_transform-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_seq_transform.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_seq_transform.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start.png create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_transform-members.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_transform.html create mode 100644 trunk/paradiseo-peo/docs/html/classpeo_transform.png create mode 100644 trunk/paradiseo-peo/docs/html/comm_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/comm_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/communicable_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/communicable_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/config_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/coop_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/cooperative_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/core_2runner_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/core_2service_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/doxygen.css create mode 100644 trunk/paradiseo-peo/docs/html/doxygen.png create mode 100644 trunk/paradiseo-peo/docs/html/eo_pop__comm_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/eo_vector__comm_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/files.html create mode 100644 trunk/paradiseo-peo/docs/html/ftv2blank.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2doc.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2folderclosed.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2folderopen.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2lastnode.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2link.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2mlastnode.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2mnode.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2node.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2plastnode.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2pnode.png create mode 100644 trunk/paradiseo-peo/docs/html/ftv2vertline.png create mode 100644 trunk/paradiseo-peo/docs/html/functions.html create mode 100644 trunk/paradiseo-peo/docs/html/functions_func.html create mode 100644 trunk/paradiseo-peo/docs/html/functions_vars.html create mode 100644 trunk/paradiseo-peo/docs/html/hierarchy.html create mode 100644 trunk/paradiseo-peo/docs/html/index.html create mode 100755 trunk/paradiseo-peo/docs/html/installdox create mode 100644 trunk/paradiseo-peo/docs/html/main.html create mode 100644 trunk/paradiseo-peo/docs/html/mess_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/mess_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/messaging_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/namespacemembers.html create mode 100644 trunk/paradiseo-peo/docs/html/namespacemembers_func.html create mode 100644 trunk/paradiseo-peo/docs/html/namespacemembers_vars.html create mode 100644 trunk/paradiseo-peo/docs/html/namespacepeo.html create mode 100644 trunk/paradiseo-peo/docs/html/namespaces.html create mode 100644 trunk/paradiseo-peo/docs/html/node_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/node_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/paradiseo_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/param_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/param_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__debug_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__debug_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__fin_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__fin_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__init_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__init_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__param_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__param_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__run_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo__run_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_agg_eval_func_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_async_island_mig_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_e_a_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_no_agg_eval_func_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_para_pop_eval_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_para_s_g_a_transform_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_pop_eval_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_seq_pop_eval_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_seq_transform_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_sync_island_mig_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_sync_multi_start_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/peo_transform_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/reac__thread_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/reac__thread_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/recv_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/recv_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/ring__topo_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/ring__topo_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/rmc_2mpi_2runner_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/rmc_2mpi_2service_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/rmc_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/rmc_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/runner_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/scheduler_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/scheduler_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/schema_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/schema_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/search.idx create mode 100644 trunk/paradiseo-peo/docs/html/search.php create mode 100644 trunk/paradiseo-peo/docs/html/send_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/send_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/service_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/struct_node-members.html create mode 100644 trunk/paradiseo-peo/docs/html/struct_node.html create mode 100644 trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t-members.html create mode 100644 trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t.html create mode 100644 trunk/paradiseo-peo/docs/html/tab_b.gif create mode 100644 trunk/paradiseo-peo/docs/html/tab_l.gif create mode 100644 trunk/paradiseo-peo/docs/html/tab_r.gif create mode 100644 trunk/paradiseo-peo/docs/html/tabs.css create mode 100644 trunk/paradiseo-peo/docs/html/tags_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/thread_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/thread_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/topology_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/topology_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/tree.html create mode 100644 trunk/paradiseo-peo/docs/html/worker_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/worker_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/html/xml__parser_8cpp-source.html create mode 100644 trunk/paradiseo-peo/docs/html/xml__parser_8h-source.html create mode 100644 trunk/paradiseo-peo/docs/latex/Helvetica.ttf create mode 100644 trunk/paradiseo-peo/docs/latex/Makefile create mode 100644 trunk/paradiseo-peo/docs/latex/annotated.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_communicable.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_communicable.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_communicator.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_communicator.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_cooperative.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_cooperative.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_reactive_thread.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_reactive_thread.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_ring_topology.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_ring_topology.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_runner.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_runner.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_service.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_service.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_thread.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_thread.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_topology.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_topology.tex create mode 100644 trunk/paradiseo-peo/docs/latex/class_worker.eps create mode 100644 trunk/paradiseo-peo/docs/latex/class_worker.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_e_a.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_e_a.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.tex create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_transform.eps create mode 100644 trunk/paradiseo-peo/docs/latex/classpeo_transform.tex create mode 100644 trunk/paradiseo-peo/docs/latex/doxygen.sty create mode 100644 trunk/paradiseo-peo/docs/latex/hierarchy.tex create mode 100644 trunk/paradiseo-peo/docs/latex/main.tex create mode 100644 trunk/paradiseo-peo/docs/latex/namespacepeo.tex create mode 100644 trunk/paradiseo-peo/docs/latex/namespaces.tex create mode 100644 trunk/paradiseo-peo/docs/latex/refman.tex create mode 100644 trunk/paradiseo-peo/docs/latex/struct_node.tex create mode 100644 trunk/paradiseo-peo/docs/latex/struct_s_e_n_d___r_e_q_u_e_s_t.tex create mode 100644 trunk/paradiseo-peo/docs/man/man3/Communicable.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Communicator.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Cooperative.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Node.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/ReactiveThread.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/RingTopology.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Runner.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/SEND_REQUEST.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Service.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Thread.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Topology.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/Worker.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peo.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoAggEvalFunc.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoAsyncIslandMig.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoEA.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoNoAggEvalFunc.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoParaPopEval.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoParaSGATransform.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoPopEval.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoSeqPopEval.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoSeqTransform.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoSyncIslandMig.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoSyncMultiStart.3 create mode 100644 trunk/paradiseo-peo/docs/man/man3/peoTransform.3 create mode 100755 trunk/paradiseo-peo/docs/paradiseo.cfg create mode 100755 trunk/paradiseo-peo/indentSources create mode 100755 trunk/paradiseo-peo/install-sh create mode 100755 trunk/paradiseo-peo/ltmain.sh create mode 100755 trunk/paradiseo-peo/missing create mode 100755 trunk/paradiseo-peo/mkinstalldirs create mode 100755 trunk/paradiseo-peo/src/Makefile.am create mode 100755 trunk/paradiseo-peo/src/Makefile.in create mode 100644 trunk/paradiseo-peo/src/core/communicable.cpp create mode 100644 trunk/paradiseo-peo/src/core/communicable.cpp: create mode 100644 trunk/paradiseo-peo/src/core/communicable.h create mode 100644 trunk/paradiseo-peo/src/core/communicable.h: create mode 100644 trunk/paradiseo-peo/src/core/cooperative.h create mode 100644 trunk/paradiseo-peo/src/core/cooperative.h: create mode 100644 trunk/paradiseo-peo/src/core/eoPop_comm.h create mode 100644 trunk/paradiseo-peo/src/core/eoPop_comm.h: create mode 100644 trunk/paradiseo-peo/src/core/eoVector_comm.h create mode 100644 trunk/paradiseo-peo/src/core/eoVector_comm.h: create mode 100644 trunk/paradiseo-peo/src/core/messaging.h create mode 100644 trunk/paradiseo-peo/src/core/messaging.h: create mode 100644 trunk/paradiseo-peo/src/core/peo_debug.cpp create mode 100644 trunk/paradiseo-peo/src/core/peo_debug.cpp: create mode 100644 trunk/paradiseo-peo/src/core/peo_debug.h create mode 100644 trunk/paradiseo-peo/src/core/peo_debug.h: create mode 100644 trunk/paradiseo-peo/src/core/peo_fin.cpp create mode 100644 trunk/paradiseo-peo/src/core/peo_fin.cpp: create mode 100644 trunk/paradiseo-peo/src/core/peo_fin.h create mode 100644 trunk/paradiseo-peo/src/core/peo_fin.h: create mode 100644 trunk/paradiseo-peo/src/core/peo_init.cpp create mode 100644 trunk/paradiseo-peo/src/core/peo_init.cpp: create mode 100644 trunk/paradiseo-peo/src/core/peo_init.h create mode 100644 trunk/paradiseo-peo/src/core/peo_init.h: create mode 100644 trunk/paradiseo-peo/src/core/peo_param.cpp create mode 100644 trunk/paradiseo-peo/src/core/peo_param.cpp: create mode 100644 trunk/paradiseo-peo/src/core/peo_param.h create mode 100644 trunk/paradiseo-peo/src/core/peo_param.h: create mode 100644 trunk/paradiseo-peo/src/core/peo_run.cpp create mode 100644 trunk/paradiseo-peo/src/core/peo_run.cpp: create mode 100644 trunk/paradiseo-peo/src/core/peo_run.h create mode 100644 trunk/paradiseo-peo/src/core/peo_run.h: create mode 100644 trunk/paradiseo-peo/src/core/reac_thread.cpp create mode 100644 trunk/paradiseo-peo/src/core/reac_thread.cpp: create mode 100644 trunk/paradiseo-peo/src/core/reac_thread.h create mode 100644 trunk/paradiseo-peo/src/core/reac_thread.h: create mode 100644 trunk/paradiseo-peo/src/core/ring_topo.cpp create mode 100644 trunk/paradiseo-peo/src/core/ring_topo.cpp: create mode 100644 trunk/paradiseo-peo/src/core/ring_topo.h create mode 100644 trunk/paradiseo-peo/src/core/ring_topo.h: create mode 100644 trunk/paradiseo-peo/src/core/rmc.h create mode 100644 trunk/paradiseo-peo/src/core/rmc.h: create mode 100644 trunk/paradiseo-peo/src/core/runner.cpp create mode 100644 trunk/paradiseo-peo/src/core/runner.cpp: create mode 100644 trunk/paradiseo-peo/src/core/runner.h create mode 100644 trunk/paradiseo-peo/src/core/runner.h: create mode 100644 trunk/paradiseo-peo/src/core/service.cpp create mode 100644 trunk/paradiseo-peo/src/core/service.cpp: create mode 100644 trunk/paradiseo-peo/src/core/service.h create mode 100644 trunk/paradiseo-peo/src/core/service.h: create mode 100644 trunk/paradiseo-peo/src/core/thread.cpp create mode 100644 trunk/paradiseo-peo/src/core/thread.cpp: create mode 100644 trunk/paradiseo-peo/src/core/thread.h create mode 100644 trunk/paradiseo-peo/src/core/thread.h: create mode 100644 trunk/paradiseo-peo/src/core/topology.cpp create mode 100644 trunk/paradiseo-peo/src/core/topology.cpp: create mode 100644 trunk/paradiseo-peo/src/core/topology.h create mode 100644 trunk/paradiseo-peo/src/core/topology.h: create mode 100644 trunk/paradiseo-peo/src/paradiseo create mode 100644 trunk/paradiseo-peo/src/paradiseo.h create mode 100644 trunk/paradiseo-peo/src/peoAggEvalFunc.h create mode 100644 trunk/paradiseo-peo/src/peoAsyncIslandMig.h create mode 100644 trunk/paradiseo-peo/src/peoEA.h create mode 100644 trunk/paradiseo-peo/src/peoNoAggEvalFunc.h create mode 100644 trunk/paradiseo-peo/src/peoParaPopEval.h create mode 100644 trunk/paradiseo-peo/src/peoParaSGATransform.h create mode 100644 trunk/paradiseo-peo/src/peoPopEval.h create mode 100644 trunk/paradiseo-peo/src/peoSeqPopEval.h create mode 100644 trunk/paradiseo-peo/src/peoSeqTransform.h create mode 100644 trunk/paradiseo-peo/src/peoSyncIslandMig.h create mode 100644 trunk/paradiseo-peo/src/peoSyncMultiStart.h create mode 100644 trunk/paradiseo-peo/src/peoTransform.h create mode 100755 trunk/paradiseo-peo/src/rmc/Makefile.am create mode 100755 trunk/paradiseo-peo/src/rmc/Makefile.in create mode 100755 trunk/paradiseo-peo/src/rmc/mpi/Makefile.am create mode 100755 trunk/paradiseo-peo/src/rmc/mpi/Makefile.in create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/comm.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/comm.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/comm.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/comm.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/coop.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/coop.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/mess.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/mess.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/mess.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/mess.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/node.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/node.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/node.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/node.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/param.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/param.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/param.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/param.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/recv.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/recv.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/recv.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/recv.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/runner.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/runner.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/scheduler.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/scheduler.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/schema.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/schema.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/schema.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/schema.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/send.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/send.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/send.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/send.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/service.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/service.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/tags.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/tags.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/worker.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/worker.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/worker.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/worker.h: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/xml_parser.cpp create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/xml_parser.cpp: create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h create mode 100644 trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h: diff --git a/trunk/paradiseo-peo/AUTHORS b/trunk/paradiseo-peo/AUTHORS new file mode 100755 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/COPYING b/trunk/paradiseo-peo/COPYING new file mode 100755 index 000000000..d60c31a97 --- /dev/null +++ b/trunk/paradiseo-peo/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/trunk/paradiseo-peo/ChangeLog b/trunk/paradiseo-peo/ChangeLog new file mode 100755 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/INSTALL b/trunk/paradiseo-peo/INSTALL new file mode 100755 index 000000000..56b077d6a --- /dev/null +++ b/trunk/paradiseo-peo/INSTALL @@ -0,0 +1,236 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PREFIX', the package will +use PREFIX as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). Here is a another example: + + /bin/bash ./configure CONFIG_SHELL=/bin/bash + +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent +configuration-related scripts to be executed by `/bin/bash'. + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/trunk/paradiseo-peo/Makefile.am b/trunk/paradiseo-peo/Makefile.am new file mode 100755 index 000000000..20b1e500e --- /dev/null +++ b/trunk/paradiseo-peo/Makefile.am @@ -0,0 +1,35 @@ +## Process this file with automake to produce Makefile.in +## Created by Anjuta - will be overwritten +## If you don't want it to overwrite it, +## Please disable it in the Anjuta project configuration + +SUBDIRS = src docs + +libparadiseodocdir = ${prefix}/docs/paradisEO +libparadiseodoc_DATA = \ + README\ + COPYING\ + AUTHORS\ + ChangeLog\ + INSTALL\ + NEWS\ + TODO + +EXTRA_DIST = $(libparadiseodoc_DATA) + +# Add documentation to distribution +dist-hook: + for specfile in *.spec; do \ + if test -f $$specfile; then \ + cp -p $$specfile $(distdir); \ + fi \ + done + $(MAKE) documentation + $(INSTALL_DATA) -d $(srcdir)/docs/html $(srcdir)/docs/latex $(srcdir)/docs/man $(distdir)/docs/ + +# Prepare documentation +documentation: + cd docs && $(MAKE) doc && cd .. + +# convinience-target +doc: documentation diff --git a/trunk/paradiseo-peo/Makefile.in b/trunk/paradiseo-peo/Makefile.in new file mode 100755 index 000000000..a7bc43d0d --- /dev/null +++ b/trunk/paradiseo-peo/Makefile.in @@ -0,0 +1,629 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \ + ChangeLog INSTALL NEWS TODO acconfig.h config.guess config.sub \ + depcomp install-sh ltmain.sh missing mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libparadiseodocdir)" +libparadiseodocDATA_INSTALL = $(INSTALL_DATA) +DATA = $(libparadiseodoc_DATA) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = src docs +libparadiseodocdir = ${prefix}/docs/paradisEO +libparadiseodoc_DATA = \ + README\ + COPYING\ + AUTHORS\ + ChangeLog\ + INSTALL\ + NEWS\ + TODO + +EXTRA_DIST = $(libparadiseodoc_DATA) +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +uninstall-info-am: +install-libparadiseodocDATA: $(libparadiseodoc_DATA) + @$(NORMAL_INSTALL) + test -z "$(libparadiseodocdir)" || $(mkdir_p) "$(DESTDIR)$(libparadiseodocdir)" + @list='$(libparadiseodoc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(libparadiseodocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(libparadiseodocdir)/$$f'"; \ + $(libparadiseodocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(libparadiseodocdir)/$$f"; \ + done + +uninstall-libparadiseodocDATA: + @$(NORMAL_UNINSTALL) + @list='$(libparadiseodoc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libparadiseodocdir)/$$f'"; \ + rm -f "$(DESTDIR)$(libparadiseodocdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libparadiseodocdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-libparadiseodocDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libparadiseodocDATA + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \ + dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libparadiseodocDATA install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-libparadiseodocDATA + + +# Add documentation to distribution +dist-hook: + for specfile in *.spec; do \ + if test -f $$specfile; then \ + cp -p $$specfile $(distdir); \ + fi \ + done + $(MAKE) documentation + $(INSTALL_DATA) -d $(srcdir)/docs/html $(srcdir)/docs/latex $(srcdir)/docs/man $(distdir)/docs/ + +# Prepare documentation +documentation: + cd docs && $(MAKE) doc && cd .. + +# convinience-target +doc: documentation +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/paradiseo-peo/NEWS b/trunk/paradiseo-peo/NEWS new file mode 100755 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/README b/trunk/paradiseo-peo/README new file mode 100755 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/TODO b/trunk/paradiseo-peo/TODO new file mode 100755 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/acconfig.h b/trunk/paradiseo-peo/acconfig.h new file mode 100755 index 000000000..787dcad99 --- /dev/null +++ b/trunk/paradiseo-peo/acconfig.h @@ -0,0 +1,14 @@ +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY +#undef HAVE_LIBSM +#undef PACKAGE_LOCALE_DIR +#undef PACKAGE_DOC_DIR +#undef PACKAGE_DATA_DIR +#undef PACKAGE_PIXMAPS_DIR +#undef PACKAGE_HELP_DIR +#undef PACKAGE_MENU_DIR +#undef PACKAGE_SOURCE_DIR +#undef GETTEXT_PACKAGE diff --git a/trunk/paradiseo-peo/acinclude.m4 b/trunk/paradiseo-peo/acinclude.m4 new file mode 100755 index 000000000..7e553f36d --- /dev/null +++ b/trunk/paradiseo-peo/acinclude.m4 @@ -0,0 +1 @@ +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/trunk/paradiseo-peo/aclocal.m4 b/trunk/paradiseo-peo/aclocal.m4 new file mode 100755 index 000000000..81c1cc3be --- /dev/null +++ b/trunk/paradiseo-peo/aclocal.m4 @@ -0,0 +1,874 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + + +# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# This was merged into AC_PROG_CC in Autoconf. + +AU_DEFUN([AM_PROG_CC_STDC], +[AC_PROG_CC +AC_DIAGNOSE([obsolete], [$0: + your code should no longer depend upon `am_cv_prog_cc_stdc', but upon + `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when + you adjust the code. You can also remove the above call to + AC_PROG_CC if you already called it elsewhere.]) +am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc +]) +AU_DEFUN([fp_PROG_CC_STDC]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([acinclude.m4]) diff --git a/trunk/paradiseo-peo/autogen.sh b/trunk/paradiseo-peo/autogen.sh new file mode 100755 index 000000000..245311580 --- /dev/null +++ b/trunk/paradiseo-peo/autogen.sh @@ -0,0 +1,127 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +PKG_NAME="the package." + +DIE=0 + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`autoconf' installed to." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { + (libtool --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`libtool' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`automake' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/" + echo "(or a newer version if it is available)" + DIE=1 + NO_AUTOMAKE=yes +} + + +# if no automake, don't bother testing for aclocal +test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: Missing \`aclocal'. The version of \`automake'" + echo "installed doesn't appear recent enough." + echo "Get ftp://ftp.gnu.org/pub/gnu/" + echo "(or a newer version if it is available)" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "**Warning**: I am going to run \`configure' with no arguments." + echo "If you wish to pass any to it, please specify them on the" + echo \`$0\'" command line." + echo +fi + +case $CC in +xlc ) + am_opt=--include-deps;; +esac + +for coin in `find $srcdir -name configure.in -print` +do + dr=`dirname $coin` + if test -f $dr/NO-AUTO-GEN; then + echo skipping $dr -- flagged as no auto-gen + else + echo processing $dr + macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` + ( cd $dr + aclocalinclude="$ACLOCAL_FLAGS" + for k in $macrodirs; do + if test -d $k; then + aclocalinclude="$aclocalinclude -I $k" + ##else + ## echo "**Warning**: No such directory \`$k'. Ignored." + fi + done + if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then + if grep "sed.*POTFILES" configure.in >/dev/null; then + : do nothing -- we still have an old unmodified configure.in + else + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + ./setup-gettext + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + fi + if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + ./setup-gettext + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then + echo "Running libtoolize..." + libtoolize --force --copy + fi + test -d m4 && aclocalinclude="$aclocalinclude -I m4" + echo "Running aclocal $aclocalinclude ..." + aclocal $aclocalinclude + if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then + echo "Running autoheader..." + autoheader + fi + echo "Running automake --gnu $am_opt ..." + automake --add-missing --gnu $am_opt + echo "Running autoconf ..." + autoconf + ) + fi +done + +#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c + +if test x$NOCONFIGURE = x; then + echo Running $srcdir/configure $conf_flags "$@" ... + $srcdir/configure $conf_flags "$@" \ + && echo Now type \`make\' to compile $PKG_NAME +else + echo Skipping configure process. +fi diff --git a/trunk/paradiseo-peo/config.guess b/trunk/paradiseo-peo/config.guess new file mode 100755 index 000000000..2fc3acce2 --- /dev/null +++ b/trunk/paradiseo-peo/config.guess @@ -0,0 +1,1411 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-06-17' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +## for Red Hat Linux +if test -f /etc/redhat-release ; then + VENDOR=redhat ; +else + VENDOR= ; +fi + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/trunk/paradiseo-peo/config.h b/trunk/paradiseo-peo/config.h new file mode 100755 index 000000000..665400c32 --- /dev/null +++ b/trunk/paradiseo-peo/config.h @@ -0,0 +1,70 @@ +/* config.h. Generated by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ +/* #undef ENABLE_NLS */ +/* #undef HAVE_CATGETS */ +/* #undef HAVE_GETTEXT */ +/* #undef HAVE_LC_MESSAGES */ +/* #undef HAVE_STPCPY */ +/* #undef HAVE_LIBSM */ +/* #undef PACKAGE_LOCALE_DIR */ +#define PACKAGE_DOC_DIR "/usr/local/doc/paradisEO" +#define PACKAGE_DATA_DIR "/usr/local/share" +#define PACKAGE_PIXMAPS_DIR "/usr/local/share/pixmaps" +#define PACKAGE_HELP_DIR "/usr/local/share/help" +#define PACKAGE_MENU_DIR "/usr/local/share" +#define PACKAGE_SOURCE_DIR "/home/cahon/paradisEO" +/* #undef GETTEXT_PACKAGE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Name of package */ +#define PACKAGE "paradisEO" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "0.3" diff --git a/trunk/paradiseo-peo/config.h.in b/trunk/paradiseo-peo/config.h.in new file mode 100755 index 000000000..ccde2b22f --- /dev/null +++ b/trunk/paradiseo-peo/config.h.in @@ -0,0 +1,69 @@ +/* config.h.in. Generated from configure.in by autoheader. */ +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY +#undef HAVE_LIBSM +#undef PACKAGE_LOCALE_DIR +#undef PACKAGE_DOC_DIR +#undef PACKAGE_DATA_DIR +#undef PACKAGE_PIXMAPS_DIR +#undef PACKAGE_HELP_DIR +#undef PACKAGE_MENU_DIR +#undef PACKAGE_SOURCE_DIR +#undef GETTEXT_PACKAGE + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff --git a/trunk/paradiseo-peo/config.sub b/trunk/paradiseo-peo/config.sub new file mode 100755 index 000000000..6b2ff9f6a --- /dev/null +++ b/trunk/paradiseo-peo/config.sub @@ -0,0 +1,1500 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-06-18' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | s390 | s390x \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | s390-* | s390x-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/trunk/paradiseo-peo/configure.in b/trunk/paradiseo-peo/configure.in new file mode 100755 index 000000000..2652b51df --- /dev/null +++ b/trunk/paradiseo-peo/configure.in @@ -0,0 +1,45 @@ +dnl Process this file with autoconf to produce a configure script. +dnl Created by Anjuta - will be overwritten +dnl If you don't want it to overwrite it, +dnl Please disable it in the Anjuta project configuration + +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(paradisEO, 0.3) +dnl AM_CONFIG_HEADER(config.h) + +AC_ISC_POSIX +CXXFLAGS="" +AC_SUBST(CXXFLAGS) +AC_PROG_CXX +AM_PROG_CC_STDC +AC_HEADER_STDC +AC_PROG_RANLIB + +AC_SUBST(EO_DIR) + +dnl EO +AC_ARG_WITH(EOdir, + --with-EOdir : Giving the path of the EO tree., + dnl Well done :-) + EO_DIR="$withval" + if test ! -d $EO_DIR + then + echo "" + echo "# --with-EOdir Invalid directory $withval" + exit 1 + fi, + dnl Bouhhhh !!!! + echo "" + echo "# You forgot to give the path of the EO tree !" + echo "# Please write something like ... './configure --with-EOdir=\$HOME/eo'" + exit 1 + ) + +AC_OUTPUT([ +Makefile +docs/Makefile +src/Makefile +src/rmc/Makefile +src/rmc/mpi/Makefile +]) + diff --git a/trunk/paradiseo-peo/docs/Makefile.am b/trunk/paradiseo-peo/docs/Makefile.am new file mode 100755 index 000000000..33afd4348 --- /dev/null +++ b/trunk/paradiseo-peo/docs/Makefile.am @@ -0,0 +1,10 @@ +## Makefile.am for paradiseo/docs + + +EXTRA_DIST = paradiseo.cfg foot.html + +doc: + cd $(srcdir) && doxygen paradiseo.cfg + +clean-local: + cd $(srcdir) && rm -rf html latex man diff --git a/trunk/paradiseo-peo/docs/Makefile.in b/trunk/paradiseo-peo/docs/Makefile.in new file mode 100755 index 000000000..b05a29d5a --- /dev/null +++ b/trunk/paradiseo-peo/docs/Makefile.in @@ -0,0 +1,293 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = paradiseo.cfg foot.html +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-local \ + distclean distclean-generic distdir dvi dvi-am html html-am \ + info info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am uninstall-info-am + + +doc: + cd $(srcdir) && doxygen paradiseo.cfg + +clean-local: + cd $(srcdir) && rm -rf html latex man +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/paradiseo-peo/docs/ParadisEO.doxytag b/trunk/paradiseo-peo/docs/ParadisEO.doxytag new file mode 100755 index 000000000..7fef4fd27 --- /dev/null +++ b/trunk/paradiseo-peo/docs/ParadisEO.doxytag @@ -0,0 +1,1550 @@ + + + + main + The ParadisEO Framework + main + parallel_local_searches + parallel_metaheuristics + paradiseo_goals + hybridization + intro + parallel_distributed + parallel_ls + architecture + local_searches + motivation + + + Communicable + class_communicable.html + + + Communicable + class_communicable.html + 8ae1827ecf7569b3db1ed386c7d8ad78 + () + + + virtual + ~Communicable + class_communicable.html + 2280b0dfa0d3a515fccf62c2a9fd5f41 + () + + + COMM_ID + getKey + class_communicable.html + db4307b69b9ccacff55fdbf84b8f50e4 + () + + + void + lock + class_communicable.html + e1f8bd1ee810fd73d44315c95998d19d + () + + + void + unlock + class_communicable.html + caa814847192e71f434fbf9479ede862 + () + + + void + stop + class_communicable.html + cb53e6534b947bc889aa181d9dbbd13b + () + + + void + resume + class_communicable.html + 3306a9adb11a0ab5af342c0db9f7bb2a + () + + + COMM_ID + key + class_communicable.html + 605b0efeffe81326f216c9903f5bbf4c + + + + sem_t + sem_lock + class_communicable.html + cf9639312f71a2f348bc1e7789ccbd9d + + + + sem_t + sem_stop + class_communicable.html + 29c53b9191348e0505e3bcba6d8b82b1 + + + + static unsigned + num_comm + class_communicable.html + 7a6acfdc781a67c9c0ec4f17893f86c3 + + + + + Communicator + class_communicator.html + ReactiveThread + + + Communicator + class_communicator.html + 7c9dce4ea92bd04d01d53f80c0ef08ee + (int *__argc, char ***__argv) + + + void + start + class_communicator.html + 142fae13b16b166519315f248a513c62 + () + + + + Cooperative + class_cooperative.html + Communicable + + Runner * + getOwner + class_cooperative.html + 4012b4e8329e87d26ee266491e1a883e + () + + + void + setOwner + class_cooperative.html + fe7b022567174c8305bc78d8c5749b12 + (Runner &__runner) + + + virtual void + pack + class_cooperative.html + 6a4848c94031289df281a571ea427d46 + ()=0 + + + virtual void + unpack + class_cooperative.html + 7c31a68fb29e0a9cbe1da8019e4cdafa + ()=0 + + + void + send + class_cooperative.html + c609f2a1200da7d1ac96005602515fc6 + (Cooperative *__coop) + + + virtual void + notifySending + class_cooperative.html + 4439ddeaa1246a2e44c003bfb781739b + () + + + Runner * + owner + class_cooperative.html + 7604f094479d08154ede4996a45bf79e + + + + + Node + struct_node.html + + RANK_ID + rk + struct_node.html + 7de6f254b6b8c3f9f8287af0bb742e9b + + + + std::string + name + struct_node.html + 3c4318d71ca9a44fe33edcf8b7f26863 + + + + unsigned + num_workers + struct_node.html + 01fec86d75332858b158c810d57caee3 + + + + int + rk_sched + struct_node.html + 98deed2036c3dd8fc0f4fe8dacf56a92 + + + + std::vector< RUNNER_ID > + id_run + struct_node.html + a90013b890888d3d252a71cb4fe48934 + + + + + peoAggEvalFunc + classpeo_agg_eval_func.html + EOT + + + peoAsyncIslandMig + classpeo_async_island_mig.html + EOT + Cooperative + + + peoAsyncIslandMig + classpeo_async_island_mig.html + e0f706cbf4148d3ca327227a5c7a9fdf + (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination) + + + void + operator() + classpeo_async_island_mig.html + 13581e54425727a7f785ca8a6df527b5 + () + + + void + pack + classpeo_async_island_mig.html + 6d790a5d0b6ac510cac4f61a1c0d8f16 + () + + + void + unpack + classpeo_async_island_mig.html + 455501aee5db2bbfbae15779c8429369 + () + + + void + emigrate + classpeo_async_island_mig.html + 87a4ef7d4bd30d349a801bf0f9e87c82 + () + + + void + immigrate + classpeo_async_island_mig.html + 5a9a64ba51a696e45f91b362c39c9a64 + () + + + eoContinue< EOT > & + cont + classpeo_async_island_mig.html + 2fc077d02ef9ea4595cfe883af0d4f83 + + + + eoSelect< EOT > & + select + classpeo_async_island_mig.html + b1fa045094c8a411323e75b5820c80c2 + + + + eoReplacement< EOT > & + replace + classpeo_async_island_mig.html + b761dbd880ee32e170741ecd78da6f48 + + + + Topology & + topology + classpeo_async_island_mig.html + e45e5a808a96f0853ab6ba42339fe679 + + + + eoPop< EOT > & + source + classpeo_async_island_mig.html + 8a502d82c773033e274dca932fc2d4ee + + + + eoPop< EOT > & + destination + classpeo_async_island_mig.html + e407f411d08ae7d96992603c145a7e43 + + + + std::queue< eoPop< EOT > > + imm + classpeo_async_island_mig.html + b8c76d98d9ae99dd930a77c12860519a + + + + std::queue< eoPop< EOT > > + em + classpeo_async_island_mig.html + a9cc0e2d61cac6e11647b141962adc89 + + + + std::queue< Cooperative * > + coop_em + classpeo_async_island_mig.html + 1a2c0004d23bc303420af137a8c8bd27 + + + + + peoEA + classpeo_e_a.html + EOT + Runner + + + peoEA + classpeo_e_a.html + dbfc4f8907bef234602149229f132371 + (eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace) + + + void + run + classpeo_e_a.html + 6ab8c321d29350634143a2a01cf2ad24 + () + + + void + operator() + classpeo_e_a.html + 3c709e3b2491147d26fee36138644613 + (eoPop< EOT > &__pop) + + + eoContinue< EOT > & + cont + classpeo_e_a.html + 5f015eebf42f176b9fe322488c446c2a + + + + peoPopEval< EOT > & + pop_eval + classpeo_e_a.html + 9140259f50c9186edcb062b023624c96 + + + + eoSelect< EOT > & + select + classpeo_e_a.html + 2d8428d69fdd6aefefbaf543fdd46d19 + + + + peoTransform< EOT > & + trans + classpeo_e_a.html + 713c77935eb8aafebfb9488cfaa4a363 + + + + eoReplacement< EOT > & + replace + classpeo_e_a.html + 9bd2d4356cf7e69e3141dc269213aa8a + + + + eoPop< EOT > * + pop + classpeo_e_a.html + c0b110e410bc16283e8339f24b733772 + + + + + peoNoAggEvalFunc + classpeo_no_agg_eval_func.html + EOT + peoAggEvalFunc + + void + operator() + classpeo_no_agg_eval_func.html + 1a69ee1af8745ac75c864bf884436de5 + (EOT &__sol, const typename EOT::Fitness &__fit) + + + + peoParaPopEval + classpeo_para_pop_eval.html + EOT + peoPopEval + + + peoParaPopEval + classpeo_para_pop_eval.html + bcb540510a7038520bec41a7af332daf + (eoEvalFunc< EOT > &__eval_func) + + + + peoParaPopEval + classpeo_para_pop_eval.html + 1cc13a1ec366f95d219d682eccb455bc + (const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval) + + + void + operator() + classpeo_para_pop_eval.html + aeaa4fca4f8650e453e308838b4a2cb5 + (eoPop< EOT > &__pop) + + + void + packData + classpeo_para_pop_eval.html + fea632bd645ab11182782fd3c038d6d8 + () + + + void + unpackData + classpeo_para_pop_eval.html + 410bf4c173e2f36df82251cb16ce1b05 + () + + + void + execute + classpeo_para_pop_eval.html + 3af76378611eac5a36da9a0a00aeeb6c + () + + + void + packResult + classpeo_para_pop_eval.html + 24bb4ae84b0b9f64e7170e3d2b0e1223 + () + + + void + unpackResult + classpeo_para_pop_eval.html + fd7f0afe9cba30be39269d16097e190e + () + + + void + notifySendingData + classpeo_para_pop_eval.html + 1f78c3cec2940af08a059cc1aa96a9c8 + () + + + void + notifySendingAllResourceRequests + classpeo_para_pop_eval.html + b77031fc4807921ffaf7cf6b669a7665 + () + + + const std::vector< eoEvalFunc< EOT > * > & + funcs + classpeo_para_pop_eval.html + 6d69b8f73c0b5d72baf75d6e53f025b7 + + + + std::vector< eoEvalFunc< EOT > * > + one_func + classpeo_para_pop_eval.html + f0e8af3ee442d2b6baf0bd122226be3c + + + + peoAggEvalFunc< EOT > & + merge_eval + classpeo_para_pop_eval.html + b48bcd4e9f92f364118304535c089456 + + + + peoNoAggEvalFunc< EOT > + no_merge_eval + classpeo_para_pop_eval.html + bf255dd5861e27108c2abae7309d7690 + + + + std::queue< EOT * > + tasks + classpeo_para_pop_eval.html + af76cd18368a0f6185878f37f0b5f272 + + + + std::map< EOT *, std::pair< unsigned, unsigned > > + progression + classpeo_para_pop_eval.html + 80e7e34bb1bb2d12f1f2eed3feac6ecf + + + + unsigned + num_func + classpeo_para_pop_eval.html + 87abb090c0de39f0ccc36af1f07cca0c + + + + EOT + sol + classpeo_para_pop_eval.html + fb6941e0455515a908eb82342b995163 + + + + EOT * + ad_sol + classpeo_para_pop_eval.html + 60cafeab376262af675fdff43434c8d8 + + + + unsigned + total + classpeo_para_pop_eval.html + b528ad9dd9006c3dd57f149a3843e57d + + + + + peoParaSGATransform + classpeo_para_s_g_a_transform.html + EOT + peoTransform + + + peoParaSGATransform + classpeo_para_s_g_a_transform.html + 2052bca82fbbfe5455bf6f69246d4dbf + (eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate) + + + void + operator() + classpeo_para_s_g_a_transform.html + 669de7f7c6316fa745a15b909efb6527 + (eoPop< EOT > &__pop) + + + void + packData + classpeo_para_s_g_a_transform.html + fd278bcde58d29c9a343d5cbead81a1e + () + + + void + unpackData + classpeo_para_s_g_a_transform.html + a43a487a6e81791c8bbf6ce30f4336ab + () + + + void + execute + classpeo_para_s_g_a_transform.html + c9de2100fb897177a401c634002f6dd9 + () + + + void + packResult + classpeo_para_s_g_a_transform.html + ba08e224ceaa4149e8e1a88694a2ccf2 + () + + + void + unpackResult + classpeo_para_s_g_a_transform.html + 257663dcdc6cc95b6183d472ffba1b2f + () + + + void + notifySendingData + classpeo_para_s_g_a_transform.html + 4e19dfc22b6f69fa8b93537226551866 + () + + + void + notifySendingAllResourceRequests + classpeo_para_s_g_a_transform.html + 8a0316e33897c395a81787f59ea7a1c8 + () + + + eoQuadOp< EOT > & + cross + classpeo_para_s_g_a_transform.html + c6f97deabe7502c84f5b6c479013f6dc + + + + double + cross_rate + classpeo_para_s_g_a_transform.html + dfcf216e2df05016db4d57a5ffb0b0e2 + + + + eoMonOp< EOT > & + mut + classpeo_para_s_g_a_transform.html + 34ff5f9d285ca4879cf8865fb425a311 + + + + double + mut_rate + classpeo_para_s_g_a_transform.html + b9d3a2094737d0bbd034aac942cc53e3 + + + + unsigned + idx + classpeo_para_s_g_a_transform.html + 03972feadc86626e58fe60bd4061b57e + + + + eoPop< EOT > * + pop + classpeo_para_s_g_a_transform.html + 94e10a1285e128aba6e71517c941f961 + + + + EOT + father + classpeo_para_s_g_a_transform.html + 9ef60190e2e3bd5961a93d1b52cb275d + + + + EOT + mother + classpeo_para_s_g_a_transform.html + e991ad2af6d116afd855de2db46e1d27 + + + + unsigned + num_term + classpeo_para_s_g_a_transform.html + 589ea7cd72d522ae51a07de4d8ffbf11 + + + + + peoPopEval + classpeo_pop_eval.html + EOT + Service + + virtual void + operator() + classpeo_pop_eval.html + 2f208067a5e39c3b26c1234050a41e8f + (eoPop< EOT > &__pop)=0 + + + + peoSeqPopEval + classpeo_seq_pop_eval.html + EOT + peoPopEval + + + peoSeqPopEval + classpeo_seq_pop_eval.html + a41f91ab4b2aeb325ff75feb66d4e003 + (eoEvalFunc< EOT > &__eval) + + + void + operator() + classpeo_seq_pop_eval.html + b2c88b9a3ad9091949acf741844eb02f + (eoPop< EOT > &__pop) + + + eoEvalFunc< EOT > & + eval + classpeo_seq_pop_eval.html + 5465f31386c6b96bc8f7fb9393a28a2f + + + + + peoSeqTransform + classpeo_seq_transform.html + EOT + peoTransform + + + peoSeqTransform + classpeo_seq_transform.html + 3b8e4ed19d9458938eb669d83a53c626 + (eoTransform< EOT > &__trans) + + + void + operator() + classpeo_seq_transform.html + 1ba63536abb6c4e1c369e0b7e066872e + (eoPop< EOT > &__pop) + + + virtual void + packData + classpeo_seq_transform.html + c4bf2724e9f6055f12bd169fad893be3 + () + + + virtual void + unpackData + classpeo_seq_transform.html + 24e6cf15ef230ed538031b522ddd4ae6 + () + + + virtual void + execute + classpeo_seq_transform.html + 0294a2f9d6b44ec74d22eaceccdffc2b + () + + + virtual void + packResult + classpeo_seq_transform.html + 4861c61f9e46d83964ea8a156a9a3ee0 + () + + + virtual void + unpackResult + classpeo_seq_transform.html + 5dd029fc011eb2a810ca1140025129b1 + () + + + eoTransform< EOT > & + trans + classpeo_seq_transform.html + ad3e16c59dd6c46dfc1baf7b88af30cf + + + + + peoSyncIslandMig + classpeo_sync_island_mig.html + EOT + Cooperative + + + peoSyncIslandMig + classpeo_sync_island_mig.html + 96b7b6de20b5e318a8b1cde76842305c + (unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination) + + + void + operator() + classpeo_sync_island_mig.html + 178476fd276f78b73607b33d19522c36 + () + + + void + pack + classpeo_sync_island_mig.html + e334188141eeba9f7b78bc6716f819ad + () + + + void + unpack + classpeo_sync_island_mig.html + 85777bd9f709c5d4107799e8619948d1 + () + + + void + notifySending + classpeo_sync_island_mig.html + 8c427b3f91c19ff85f86930366b96008 + () + + + void + emigrate + classpeo_sync_island_mig.html + 4c8416e3acce1a6e4c3b0a442d94b063 + () + + + void + immigrate + classpeo_sync_island_mig.html + 38dd72312a3d16808af1aa7beb9ed4a7 + () + + + eoPeriodicContinue< EOT > + cont + classpeo_sync_island_mig.html + 2d8ae9104376f3e073e0b250d9b425a2 + + + + eoSelect< EOT > & + select + classpeo_sync_island_mig.html + 5e9c9f5f65d6418ad46e647ee1804a3d + + + + eoReplacement< EOT > & + replace + classpeo_sync_island_mig.html + cb6d2d909503a86415912900d6e1d891 + + + + Topology & + topology + classpeo_sync_island_mig.html + ebfe6edb6be16d46bf6d71cb233fcace + + + + eoPop< EOT > & + source + classpeo_sync_island_mig.html + 33fde1f09faf2a3f772d8b8f6a2615c6 + + + + eoPop< EOT > & + destination + classpeo_sync_island_mig.html + a9bf4612c7c04da6cf69245c6617e6a6 + + + + std::queue< eoPop< EOT > > + imm + classpeo_sync_island_mig.html + 088c1623f32668dcd3683fceff9426c3 + + + + std::queue< eoPop< EOT > > + em + classpeo_sync_island_mig.html + 11d6dd3e4a6db710433f501af0988322 + + + + std::queue< Cooperative * > + coop_em + classpeo_sync_island_mig.html + 2f7ca18d67ab7fb47a9851ab3179eb7d + + + + sem_t + sync + classpeo_sync_island_mig.html + 91e0e1ea59c2a6a66eb496bddd60a18f + + + + + peoSyncMultiStart + classpeo_sync_multi_start.html + EOT + Service + + + peoSyncMultiStart + classpeo_sync_multi_start.html + d29f94aad3c1f443bfffc8b6aee0704c + (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop) + + + void + operator() + classpeo_sync_multi_start.html + 76385b33fe514f91cb83f0fbecbeb3c2 + () + + + void + packData + classpeo_sync_multi_start.html + 8becfab1922b64708dca5a53e2932a5a + () + + + void + unpackData + classpeo_sync_multi_start.html + 2903a441b77cded266b5fb651e17a5b5 + () + + + void + execute + classpeo_sync_multi_start.html + a4d1c2943c290de540800087b54dc49b + () + + + void + packResult + classpeo_sync_multi_start.html + 6c48eb0dae741cff7203b65e226f9616 + () + + + void + unpackResult + classpeo_sync_multi_start.html + c3cbd1f10a89d1915c5ccf82a2c34a1d + () + + + void + notifySendingData + classpeo_sync_multi_start.html + 32ec0d01d3fd8a9932abd68f4781fc94 + () + + + void + notifySendingAllResourceRequests + classpeo_sync_multi_start.html + fc90282cc4e93cdea8f82fd52dd78fb0 + () + + + eoContinue< EOT > & + cont + classpeo_sync_multi_start.html + 43f4fa9b125baef6fc8b968dfd16f437 + + + + eoSelect< EOT > & + select + classpeo_sync_multi_start.html + 8fc9a3d046023ddd077defec3c23ab3b + + + + eoReplacement< EOT > & + replace + classpeo_sync_multi_start.html + a375ccea98e9bf2a0854dac27df4522f + + + + moAlgo< EOT > & + ls + classpeo_sync_multi_start.html + 4d317966de767dcc87eee0286ea7f95d + + + + eoPop< EOT > & + pop + classpeo_sync_multi_start.html + 391178bd6b8a97a08ab4e345f070e967 + + + + eoPop< EOT > + sel + classpeo_sync_multi_start.html + dbcc1a069ec72ecd8d40c392640d84b3 + + + + eoPop< EOT > + impr_sel + classpeo_sync_multi_start.html + ca10f6d258105e3c4f0d1660db5b7679 + + + + EOT + sol + classpeo_sync_multi_start.html + 2c2ebe46470d1425f0409897deab435b + + + + unsigned + idx + classpeo_sync_multi_start.html + 64191ef79b7b589964ac9c3e23ae6718 + + + + unsigned + num_term + classpeo_sync_multi_start.html + 773eb9097550d9444f25ca8f48997a30 + + + + + peoTransform + classpeo_transform.html + EOT + Service + + + ReactiveThread + class_reactive_thread.html + Thread + + + ReactiveThread + class_reactive_thread.html + 77381649429941c99a3e3d568113d6cf + () + + + void + sleep + class_reactive_thread.html + 8263c2a32d8c99a49a05f1a7717d4262 + () + + + void + wakeUp + class_reactive_thread.html + a724a54575de10f09cc03ab7aa4e59ce + () + + + sem_t + sem + class_reactive_thread.html + 915e5a42dc8cb1bcf6738d5fe883a4e7 + + + + + RingTopology + class_ring_topology.html + Topology + + void + setNeighbors + class_ring_topology.html + 292a7746993788f96042f2f628cfcbc5 + (Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to) + + + + Runner + class_runner.html + Communicable + Thread + + + Runner + class_runner.html + 7acb8258c21da9daa62f9a177a2e5acd + () + + + void + start + class_runner.html + 7dc4419051fcc5cc9dadd54ecc9cd47d + () + + + void + waitStarting + class_runner.html + 5bc239db2be753b77369fa9a038769fd + () + + + bool + isLocal + class_runner.html + 40adbfb7d6944189b4fff60b02e669ca + () + + + void + terminate + class_runner.html + 0f133e75c28fb8264549814f80608e68 + () + + + virtual void + run + class_runner.html + 2d306c1835d8710258d2b52b8cc8312c + ()=0 + + + RUNNER_ID + getID + class_runner.html + 5026c74eec184e3a15cb3c0ec4200a57 + () + + + void + packTermination + class_runner.html + 2ad6d199d684d6f34347fc202ffe2fa3 + () + + + void + notifySendingTermination + class_runner.html + 3591be473e0fcee1105fb57319b529aa + () + + + sem_t + sem_start + class_runner.html + 4b0827d5df2df632db4ab71dd55e81b2 + + + + unsigned + id + class_runner.html + 1989c1f8e0b0b54ad2e60a341007e59d + + + + + SEND_REQUEST + struct_s_e_n_d___r_e_q_u_e_s_t.html + + Communicable * + comm + struct_s_e_n_d___r_e_q_u_e_s_t.html + 1ad8f7233fa3ff13262e783a9153920f + + + + int + to + struct_s_e_n_d___r_e_q_u_e_s_t.html + 93e2a6a71d2a91aa2b7bdd050ee59b4d + + + + int + tag + struct_s_e_n_d___r_e_q_u_e_s_t.html + 3126b3ef9d6533d3086760e413a7f23f + + + + + Service + class_service.html + Communicable + + void + setOwner + class_service.html + 33b149b98498c0e7e401b0f0839d7f0d + (Thread &__owner) + + + Thread * + getOwner + class_service.html + 0dae00309c51a7b7069788142aed799f + () + + + void + requestResourceRequest + class_service.html + 7e2ae35a9070a05dcd46488df649896d + (unsigned __how_many=1) + + + void + packResourceRequest + class_service.html + c4289f98d1cd9ed53e850efbb6a947bd + () + + + virtual void + packData + class_service.html + aea4b8f7f8fb88e83862ee4bfd9ab207 + () + + + virtual void + unpackData + class_service.html + 3bd87b444710813d30fd754d4d0b4df3 + () + + + virtual void + execute + class_service.html + e4f2894e6121e60f38d41cfbd7447ae4 + () + + + virtual void + packResult + class_service.html + e5e4f90b2315e15c2a2913bd370f4cf5 + () + + + virtual void + unpackResult + class_service.html + 45c06344edbfa482b91f68e2035a6099 + () + + + virtual void + notifySendingData + class_service.html + 81ad4d6ebb50045b8977e2ab74826f30 + () + + + virtual void + notifySendingResourceRequest + class_service.html + 94e2012e76aaae3aa8199250f558d503 + () + + + virtual void + notifySendingAllResourceRequests + class_service.html + f94cc8a5c2665d4574041737e61e9ffc + () + + + Thread * + owner + class_service.html + 8b615c65c876f342fe8209eb7e36d7b2 + + + + unsigned + num_sent_rr + class_service.html + a5b2ad9520bb3710b54348b99acebd58 + + + + + Thread + class_thread.html + + + Thread + class_thread.html + 95c703fb8f2f27cb64f475a8c940864a + () + + + virtual + ~Thread + class_thread.html + 37d9edd3a1a776cbc27dedff949c9726 + () + + + virtual void + start + class_thread.html + c667c1d8fd7243d669043e3dd762b567 + ()=0 + + + void + setActive + class_thread.html + e197c46f8f62ecce6d2a7fe95bdc5b38 + () + + + void + setPassive + class_thread.html + 20632ffe9ddfa2a478afb0c84dc1096b + () + + + bool + act + class_thread.html + 1b155d63bca3096ac4a1d039aea83c7c + + + + + Topology + class_topology.html + + virtual + ~Topology + class_topology.html + 3e447669757c8311c7f6f8edc705abf2 + () + + + void + add + class_topology.html + 62bc46d8c20fdc71dad9e7c7a0d7aded + (Cooperative &__mig) + + + virtual void + setNeighbors + class_topology.html + 86c006ad698649b2ba5016a5ddd619ce + (Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)=0 + + + std::vector< Cooperative * > + mig + class_topology.html + 247a2faa8568b678f0b7b11e62c7812c + + + + + Worker + class_worker.html + Communicable + ReactiveThread + + + Worker + class_worker.html + 3754817df06ffe220f7f0d903c78ccac + () + + + void + start + class_worker.html + abcbbace05c6113f1959c494b3577291 + () + + + void + packResult + class_worker.html + 83780920118e6c2b67d9477bdf8be248 + () + + + void + unpackData + class_worker.html + bff2bdcd64fe5400156cc78704c64953 + () + + + void + packTaskDone + class_worker.html + 60d2e8eba85b9ef403d94be54c391640 + () + + + void + notifySendingResult + class_worker.html + e2f487014766a73c5788bdcfd58ad863 + () + + + void + notifySendingTaskDone + class_worker.html + 13efd6a8e275745329a4a8e23a0eb0bb + () + + + void + setSource + class_worker.html + 5dab4ea663546b5a49d9398d7a624d27 + (int __rank) + + + WORKER_ID + id + class_worker.html + b5ffcb995e12fa71b9551e91729d6972 + + + + SERVICE_ID + serv_id + class_worker.html + d7dc76e301fd2bcf5d3a2088a59f1378 + + + + Service * + serv + class_worker.html + 454e1764ed165af733cc44a73e395692 + + + + int + src + class_worker.html + 895c3ebc198018ea3391c09bc802d2f6 + + + + bool + toto + class_worker.html + 7ba5a18b2918cf9e704536b763be37f7 + + + + + peo + namespacepeo.html + + void + finalize + namespacepeo.html + f90478489cc92d1e6abb222179163a30 + () + + + void + init + namespacepeo.html + 8184c3b1f7eecc68f69bb8e8b872a7d3 + (int &__argc, char **&__argv) + + + void + loadParameters + namespacepeo.html + 2b496ee9b81d9ae322ae6edb9a93dc71 + (int &__argc, char **&__argv) + + + void + run + namespacepeo.html + 10819b2d60b37477c6a89b60c595c67c + () + + + int * + argc + namespacepeo.html + 18a3998ce8b39c4e1143914fdd07b3d2 + + + + char *** + argv + namespacepeo.html + d07043237d4d923125e38860ba9bbe20 + + + + int * + argc + namespacepeo.html + 18a3998ce8b39c4e1143914fdd07b3d2 + + + + char *** + argv + namespacepeo.html + d07043237d4d923125e38860ba9bbe20 + + + + diff --git a/trunk/paradiseo-peo/docs/html/_n_e_w_s-source.html b/trunk/paradiseo-peo/docs/html/_n_e_w_s-source.html new file mode 100644 index 000000000..4e4eff926 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/_n_e_w_s-source.html @@ -0,0 +1,29 @@ + + +ParadisEO: NEWS Source File + + + + +
+
+

NEWS


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/_r_e_a_d_m_e-source.html b/trunk/paradiseo-peo/docs/html/_r_e_a_d_m_e-source.html new file mode 100644 index 000000000..b7c58f4b0 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/_r_e_a_d_m_e-source.html @@ -0,0 +1,29 @@ + + +ParadisEO: README Source File + + + + +
+
+

README


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/acconfig_8h-source.html b/trunk/paradiseo-peo/docs/html/acconfig_8h-source.html new file mode 100644 index 000000000..3e24cd74f --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/acconfig_8h-source.html @@ -0,0 +1,43 @@ + + +ParadisEO: acconfig.h Source File + + + + +
+
+

acconfig.h

00001 #undef ENABLE_NLS
+00002 #undef HAVE_CATGETS
+00003 #undef HAVE_GETTEXT
+00004 #undef HAVE_LC_MESSAGES
+00005 #undef HAVE_STPCPY
+00006 #undef HAVE_LIBSM
+00007 #undef PACKAGE_LOCALE_DIR
+00008 #undef PACKAGE_DOC_DIR
+00009 #undef PACKAGE_DATA_DIR
+00010 #undef PACKAGE_PIXMAPS_DIR
+00011 #undef PACKAGE_HELP_DIR
+00012 #undef PACKAGE_MENU_DIR
+00013 #undef PACKAGE_SOURCE_DIR
+00014 #undef GETTEXT_PACKAGE
+

Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/annotated.html b/trunk/paradiseo-peo/docs/html/annotated.html new file mode 100644 index 000000000..a8132d908 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/annotated.html @@ -0,0 +1,62 @@ + + +ParadisEO: Class List + + + + +
+
+ +

ParadisEO Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable
Communicator
Cooperative
Node
peoAggEvalFunc< EOT >The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided
peoAsyncIslandMig< EOT >The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e
peoEA< EOT >The peoEA class offers an elementary evolutionary algorithm implementation
peoNoAggEvalFunc< EOT >The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual
peoParaPopEval< EOT >The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor
peoParaSGATransform< EOT >
peoPopEval< EOT >The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors
peoSeqPopEval< EOT >The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor
peoSeqTransform< EOT >The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms
peoSyncIslandMig< EOT >The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e
peoSyncMultiStart< EOT >The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population
peoTransform< EOT >The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes
ReactiveThread
RingTopology
Runner
SEND_REQUEST
Service
Thread
Topology
Worker
+
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_communicable-members.html b/trunk/paradiseo-peo/docs/html/class_communicable-members.html new file mode 100644 index 000000000..a33cf475a --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_communicable-members.html @@ -0,0 +1,48 @@ + + +ParadisEO: Member List + + + + +
+
+ +

Communicable Member List

This is the complete list of members for Communicable, including all inherited members.

+ + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
keyCommunicable [protected]
lock()Communicable
num_commCommunicable [protected, static]
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
stop()Communicable
unlock()Communicable
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_communicable.html b/trunk/paradiseo-peo/docs/html/class_communicable.html new file mode 100644 index 000000000..55a945e5b --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_communicable.html @@ -0,0 +1,100 @@ + + +ParadisEO: Communicable Class Reference + + + + +
+
+ +

Communicable Class Reference

Inheritance diagram for Communicable: +

+ +Cooperative +Runner +Service +Worker +peoAsyncIslandMig< EOT > +peoSyncIslandMig< EOT > +peoEA< EOT > +peoPopEval< EOT > +peoSyncMultiStart< EOT > +peoTransform< EOT > +peoParaPopEval< EOT > +peoSeqPopEval< EOT > +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Communicable ()
+virtual ~Communicable ()
+COMM_ID getKey ()
+void lock ()
+void unlock ()
+void stop ()
+void resume ()

Protected Attributes

+COMM_ID key
+sem_t sem_lock
+sem_t sem_stop

Static Protected Attributes

+static unsigned num_comm = 0
+

Detailed Description

+ +

+ +

+Definition at line 31 of file communicable.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_communicable.png b/trunk/paradiseo-peo/docs/html/class_communicable.png new file mode 100644 index 0000000000000000000000000000000000000000..a229e70683d27503207a292738306eb52e3be16e GIT binary patch literal 3267 zcmb_fc{r5q8XsGfEfOZ7Oj#0*nX*Ne#uUa9%D(f;VC;lJ$W~Ln`G^@~NtPIUcJd`L zwht02fKp<>FAm75u0#eVLx@hnvY>Y9}+27v>+5P>N>}-eMKr1uj{vO{y#~l&P%@+GM zEjMMxta9`H*^R=CHhcRM>^I26J5jtJp5Qjh8+&7NZbP+{S_qFs9MJvTaM-7~%g7ba zxX&JTZsqY%EuJetXyz?$fK^8Yk-RJRZD)5UB)r*fBW9qJ<^102A54NJ9TB>e9 zhSzqxU6p7g>FJDzVgUmPc*aZTc&)22ll09EUnmD8Iiii@dH}qFKYkmgLE_8vA0@0w zH?V^rsk}4j0Ps6SP!F_m`rsCHG)ZY@sbkytbAkPcLCoVRDfmC#J3!(KV4-s~G6Ad; z5M(s&r}tCl*I#sKm$E=wev#F^cdE<~uAh6Ew8x4vLynR77%VkB5D4dgK~VVpXr@QQ zm(H{XFF}GH4KoSE#PJpJ&@Ducq4QMX&R#c#iHj|SnjA+Il?6E*_kW!9{P8`rLxbG6 zzvN^?MnvvYcD_H>@yzbBMo~B1s6E$_Kc3?(_GPWwHpzr*@}x>dxHAHD$bshKKpSfz zbb($)L6cRGxeoXZH6eHRp$o8gi7P29^iGRa9YYfpV0Q5`aU`60HSiU^Gq}~T)Z7-i zq7$s=4G4tr*to89AgQEw{F_&o55MKrrf0JqIa4`EEcydF55L2atDkcjnZ6pUrz`ff zN{Ed-OB(20{n7o<2|YTo!8gdO9X{8Zb!ko=nAHlNXd->?vQQ zj#v*2kYTu?g)YsH5fUj?BEWK)O#^IZ_M9Ej&#~DpohMiSu@drbSFCq0sXnJG)Fa*~ zNK+u_ZqMN&!){z?B@lo-Xe2y8>3~*fIbYga*jg8Vv|yp1pq?uGF`U+pvx=C*Jckav zz*+gc4L-Y5n)RMu_}*=3y0~?C)W9PK>Cw5;{c!CFN#Fa=B926^B%B_c4JwH9S-PpBV4; zCZCtWq}!FrL+n5aU72h)|E;di>b{@SGa}+=;!%7NMZAjenw()KJP#P}!azti3%D3o zv}GOwW}p@Os>;uV{Ew$gx5L>P4>0c~)>HkOW9w36k3@5zLZePF6YWkUXyyrVNE}{Z z`yYk`8zNcOCuJj%{1UuJyIe9fMmdQ;P!8yX02nh;J5Pj<#3wP4&_X!8fX=%OHLnwx zThsMt-=0!@h?)3KGSC(+aT>#@Ma%^zmMl_*E@n2!m8~T8jx2ap96{Yl!fYQX9n)f# zk&w7+JQDX+u8Z9CB_w*xQnENL;kwr=PIEc|Kl-CvW<731#AvEmq-aG-{=>XoS|=hm zR4xhc^hG>E`z|!xQ$lqqFPQ%-U!wQLm2Ox-jFUUf`s0UqdqbJnCRg-HM&@|_Kts3L zM2TJY^satEcKdzPxhls+ylch%HiMX_G7n9e67T3w%-1UBl2S#(%_g{s(x=N%_#nxF zWY!=ZL1JHaFVs3~$D@FtoSm#yzlLnGAu_q#x3TYJk?ixq`Kz28S4aBg_)(VQRb6(Y zmLmP0@h=YIO){MTF8jP!f(korUNPNxQ@%u2EWrnVTfE zW}hC7)M*EXCaY|NOKoye$m6BLb>iAdC&9z=LYr#V@VLL1ei;ucccK^eIQJGBF6vKX z8?Y>6#RL32iwoXfL2p&S zVOy{nEzsDtSuA|~JZuZyY*VJ$eLoI}8yAKeahhX$KjEk6+4xj-MmW#g^|OW5rCe}! zpn(&bH4)&MMOk~g!Xl}kkQgglL#c(u zm$}xzdDA|HtM#$A{Z=-N{Zjj!l4Wr+v1Fp!QjaV-{?0Y1R^^13lKSXGH8$k+!Awao zNGN%RqIr4l_zCIq8#$9}lyClDoMa$s7Ai7Q(H=c{!yLDI+{ktOOU%-AZ!MMEkhv2iXDPm z2ca|Cgpl0j41L1c(KTDi2SE7nKzda-|P|xH=wd#cs@n6@}D;DEmlwNEPBE zgca3P0K3$bJlN@+K-CsoP-+LU^mfx<3`zVEImv`zI*7lVcahkEFcf+KTeqMswECjN zdX#OIA9Vh5i7({rOu)3VM3QTU{P8QZm4w0AnFO^|-$tL~|EZFT@DGm2@Wy*K3n!dK4DON~F|Y#2bm*>~^lp>wM?i>5^v>ZnZ~=t-Xw z!slV*8_P&VZ)&3}?K<-!p^^LBf_kcwscPpbfu`YGr`9bVFZzYO470T>P)+ikNW)AN zW)!pO@6T>W5f>0c9PwVNpPFA_57ELsLdnr@@imqd=@sul7N1|IZ7 z)Wg-#K;hP7GVmEcYLGQP{TAg;E~T%b<8L#Ff!+MCwJ7Fp>_y7m;2t4PVZHN=`1ewZsBTbArbUK@5AvosI( zLeDFO3G>GLIVIo2JC0cy3|5N3khs%uOSeLGmbc%8F9LB9Dp%bH37fAO@o$fTTV5g# zsB>&pD&}&aX*#|~uF$&r_6KXB4dT!=KDyc>=dOTSiw159eBGneyglV5{BC$WOd1sgwOch7zIH@T|J%00oUh(W27 z83{I_fn^D<`pY;7+!-t5h$dB@fjieGumNX#mG_$+{=PaIo`;cp^6gjg6`heumCOwJ T{-LAbjRT^qV~8r#c8LB5pGN^H literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/class_communicator-members.html b/trunk/paradiseo-peo/docs/html/class_communicator-members.html new file mode 100644 index 000000000..9b4d16b78 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_communicator-members.html @@ -0,0 +1,46 @@ + + +ParadisEO: Member List + + + + +
+
+ +

Communicator Member List

This is the complete list of members for Communicator, including all inherited members.

+ + + + + + + + + +
Communicator(int *__argc, char ***__argv)Communicator
ReactiveThread()ReactiveThread
setActive()Thread
setPassive()Thread
sleep()ReactiveThread
start()Communicator [virtual]
Thread()Thread
wakeUp()ReactiveThread
~Thread()Thread [virtual]


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_communicator.html b/trunk/paradiseo-peo/docs/html/class_communicator.html new file mode 100644 index 000000000..96b1bdfd8 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_communicator.html @@ -0,0 +1,59 @@ + + +ParadisEO: Communicator Class Reference + + + + +
+
+ +

Communicator Class Reference

Inheritance diagram for Communicator: +

+ +ReactiveThread +Thread + +List of all members. + + + + + + +

Public Member Functions

Communicator (int *__argc, char ***__argv)
+void start ()
+

Detailed Description

+ +

+ +

+Definition at line 30 of file comm.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_communicator.png b/trunk/paradiseo-peo/docs/html/class_communicator.png new file mode 100644 index 0000000000000000000000000000000000000000..0f0ce225befada7093a601526f633a52e4c45b89 GIT binary patch literal 472 zcmV;}0Vn>6P)iw;7faa%EELnaMo3jpxd=HFR7L zzhzJ=LxvThGNBA>uil2q<*HSnWu%M_7BAN4Ng;NWmZ>c-T=TGTC=A=g!W8djZ?mml znW90>GVhu7d2(>Gx6OH~Zb=}R_E|TBi?`;v^By=ei1GUR+`PVa#u;av`CAOSEli<% z1Fy;u4p~~__DopZCu{E*vRo69&IFpY1?V5-5eB)+Mu>Kdj46O7kWrBPG^u=ACLA)$ zFNbG$PJNvLx*0molXPnt6egT8`g~Nk!iW$#Jn0rpx0dNKXGStNzExj?e|Tv=k5mo- O0000 + +ParadisEO: Member List + + + + +
+
+ +

Cooperative Member List

This is the complete list of members for Cooperative, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
getOwner()Cooperative
keyCommunicable [protected]
lock()Communicable
notifySending()Cooperative [virtual]
num_commCommunicable [protected, static]
ownerCooperative [private]
pack()=0 (defined in Cooperative)Cooperative [pure virtual]
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
stop()Communicable
unlock()Communicable
unpack()=0 (defined in Cooperative)Cooperative [pure virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_cooperative.html b/trunk/paradiseo-peo/docs/html/class_cooperative.html new file mode 100644 index 000000000..c6c5f35e7 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_cooperative.html @@ -0,0 +1,76 @@ + + +ParadisEO: Cooperative Class Reference + + + + +
+
+ +

Cooperative Class Reference

Inheritance diagram for Cooperative: +

+ +Communicable +peoAsyncIslandMig< EOT > +peoSyncIslandMig< EOT > + +List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

+RunnergetOwner ()
+void setOwner (Runner &__runner)
+virtual void pack ()=0
+virtual void unpack ()=0
+void send (Cooperative *__coop)
+virtual void notifySending ()

Private Attributes

+Runnerowner
+

Detailed Description

+ +

+ +

+Definition at line 32 of file cooperative.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_cooperative.png b/trunk/paradiseo-peo/docs/html/class_cooperative.png new file mode 100644 index 0000000000000000000000000000000000000000..826cbc31b4febb82bbc504168b9e66a6879f01f2 GIT binary patch literal 926 zcmeAS@N?(olHy`uVBq!ia0y~yU`ztCJ6M>3r2efxl0Zr#z$e7@|Ns9$=Kuc(=Fd-< z0AzvjfddDs5B+}vEaktG3V`^+`PvM0&UG&U$>{{F;q8R zeb=hBcFJ%0#E%SS|9lK;Q&&98P1${;_EQT(?y3~I{z)}|T%VLrbdI!>QOa6#EUV`1 z4WajD%bCyh-8Oh;yilz7=&?zgukALBHm@`6wJtjM{eQ`wDI33U^0_vV_uP~H(~rH` zVf*-}SgPfmXZw0O4;jAoKmV;~`ro@98`p?>C(m+on*2E8+T+5t9>?l_xkg56@7TF@ zkrBuuAd1Pkb9eRsrkZ=Y0dxNK%#SaZp0dpP@%iVU^I8vmNx$>(OmK3|6$yFMWA42l z1ForO23}72dBu#*`J!-)80He|HYkTopc^sxqYkKHy9tw z=atMiu{kGpSGu>okf-AO2IEb#K3R5W{vIn#U$Rp=dC|sBr}Eh!um3jO%A1_owfNAS zZy(lXAI*|cPqw^%XT^lC6>_D48=Iplz!rAq2kg~abYnSlW>ges2DxL!Kd zEaCo!^7C&tRo^zEIWfN5c?(XGd}ECn^6HgRQal#6p+O3+0JdEu2>u9%1U`j$0(Y + +ParadisEO: Member List + + + + +
+
+ +

ReactiveThread Member List

This is the complete list of members for ReactiveThread, including all inherited members.

+ + + + + + + + + +
ReactiveThread()ReactiveThread
semReactiveThread [private]
setActive()Thread
setPassive()Thread
sleep()ReactiveThread
start()=0 (defined in Thread)Thread [pure virtual]
Thread()Thread
wakeUp()ReactiveThread
~Thread()Thread [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_reactive_thread.html b/trunk/paradiseo-peo/docs/html/class_reactive_thread.html new file mode 100644 index 000000000..cc9063338 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_reactive_thread.html @@ -0,0 +1,67 @@ + + +ParadisEO: ReactiveThread Class Reference + + + + +
+
+ +

ReactiveThread Class Reference

Inheritance diagram for ReactiveThread: +

+ +Thread +Communicator +Worker + +List of all members. + + + + + + + + + + + +

Public Member Functions

ReactiveThread ()
+void sleep ()
+void wakeUp ()

Private Attributes

+sem_t sem
+

Detailed Description

+ +

+ +

+Definition at line 31 of file reac_thread.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_reactive_thread.png b/trunk/paradiseo-peo/docs/html/class_reactive_thread.png new file mode 100644 index 0000000000000000000000000000000000000000..46b2d6d40ee1d26fc0a846cb7e148fe5f1cd4c93 GIT binary patch literal 633 zcmV-<0*3vGP)?V7jCQZEm5tbP~Dq6H4x~rYB3T1$&17l;Fw?gFY@?C5*v(4J2 zE42?sy&cK`fEhJy7L^{)y(!Az*@3-6*Nua0i_*rOwr&g9bOFQBb=qvaS9Ac_a~~Ad zcS7y9S1tq1mKnHcjA9g{7E${>oMr9We8&HP>Tf4RUHkrosFP+OqZq{~Mlp&}jA9g{ zPK}aKY}Ke8MlkA-C;*kTgm*UEluEm+l_-@Amq~R4l(e^t4bB!e66qTdWeeNjy{ZLD z2?9_NYUl)8K=jJBDBLUM*2Y~1C>0Oiwl*q7IDj~#Ylx`mZL@$v#;6dbgcwF8WTU7? zdleYN1#Gidj|{|A!!(m3W}stw@9GTPdIX~w^>(QJ9?r6M=%?GP@$c-1L7g-M8O10@ zRa#$Z6{uU?C#;E>QH){~qZoBiR95|T&pAGESXNH;lb2I{6|21*szM~jsH33_=x6Sz zs~viuqBI@ppy#NGQhhR0D-?MRpj6$C&|aDhq`XG$u)P8a*%wgM$%INCg{o&wa%2Ys zR6%>ywWI4iDs(}$d#KE#9xqSP$viVCW1>_$N~z0H0L3U2yjP&iD^bx_d6es!K~c99 z1p%dtQAzI!%DDeXL=;NZ9fdMby9``HxlWW))4S)~UrdZ*)L)@qRjR-GaF(}Uw8bHQ T(SPdl00000NkvXXu0mjf00bIB literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/class_ring_topology-members.html b/trunk/paradiseo-peo/docs/html/class_ring_topology-members.html new file mode 100644 index 000000000..8a42e337d --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_ring_topology-members.html @@ -0,0 +1,41 @@ + + +ParadisEO: Member List + + + + +
+
+ +

RingTopology Member List

This is the complete list of members for RingTopology, including all inherited members.

+ + + + +
add(Cooperative &__mig)Topology
migTopology [protected]
setNeighbors(Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)RingTopology [virtual]
~Topology()Topology [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_ring_topology.html b/trunk/paradiseo-peo/docs/html/class_ring_topology.html new file mode 100644 index 000000000..c64e7c96b --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_ring_topology.html @@ -0,0 +1,55 @@ + + +ParadisEO: RingTopology Class Reference + + + + +
+
+ +

RingTopology Class Reference

Inheritance diagram for RingTopology: +

+ +Topology + +List of all members. + + + + +

Public Member Functions

+void setNeighbors (Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)
+

Detailed Description

+ +

+ +

+Definition at line 29 of file ring_topo.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_ring_topology.png b/trunk/paradiseo-peo/docs/html/class_ring_topology.png new file mode 100644 index 0000000000000000000000000000000000000000..79e86b8473e87f8d848077bcd8c56eb5f7d40589 GIT binary patch literal 356 zcmV-q0h|7bP)K)Ljn3 zAPfLt`r>oT4cZeJy^v44{}JS8i-2VeBgr)Iz#RSTxpPrd^0_5bH!OEvatiE_Lz-ZO!|-sC!2%JxR(|_L9rH!#dP0N3~Ge zzmuNW0lM!Cp^ryp{R{fCjMK}~Q%av6*^{ZKo_gvJG<6I#*zv@l)<9%nU2wlCi@)n^ z6-`@%L6?)_AAMsfUi<{;!jNl5i5;f9z7S7i(y=bR>?7R(0000 + +ParadisEO: Member List + + + + +
+
+ +

Runner Member List

This is the complete list of members for Runner, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
getID()Runner
getKey()Communicable
idRunner [private]
isLocal()Runner
keyCommunicable [protected]
lock()Communicable
notifySendingTermination()Runner
num_commCommunicable [protected, static]
packTermination()Runner
resume()Communicable
run()=0 (defined in Runner)Runner [pure virtual]
Runner()Runner
sem_lockCommunicable [protected]
sem_startRunner [private]
sem_stopCommunicable [protected]
setActive()Thread
setPassive()Thread
start()Runner [virtual]
stop()Communicable
terminate()Runner
Thread()Thread
unlock()Communicable
waitStarting()Runner
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_runner.html b/trunk/paradiseo-peo/docs/html/class_runner.html new file mode 100644 index 000000000..556a01867 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_runner.html @@ -0,0 +1,88 @@ + + +ParadisEO: Runner Class Reference + + + + +
+
+ +

Runner Class Reference

Inheritance diagram for Runner: +

+ +Communicable +Thread +peoEA< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Runner ()
+void start ()
+void waitStarting ()
+bool isLocal ()
+void terminate ()
+virtual void run ()=0
+RUNNER_ID getID ()
+void packTermination ()
+void notifySendingTermination ()

Private Attributes

+sem_t sem_start
+unsigned id
+

Detailed Description

+ +

+ +

+Definition at line 34 of file runner.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_runner.png b/trunk/paradiseo-peo/docs/html/class_runner.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6d66557cc229a64d271d5b6d0528ead701a63c GIT binary patch literal 649 zcmV;40(Sk0P)jc;U zxsyVI7@GF(agX|hCCJaZDFo?uZ5^X@>oQ~HKSyrX^$^d9nBpf9Zkly|i3uySP88Sp z6Qqzrr$VPaZmq>_^+-1U#2KeSojir();%qB>*UwQ(TT6`H0T9qok9vJQ~~OCg&fLV zL(Rq%Qb-|%6uK$|(r9-=;yi`k26{ZJDnV^y&V$;fHHLoycaZl@HlY-1O#{5*J#%+P z708WI8-%!;-^yw|nm_=@L1xmU=1|C-a_iji_mH1;$3O=pD5TKqL#I7%t;KbpRM(>J z*CS5=?fjw@iT?<;PCHl?QChdrQ)m93<0mT2_kBYGgd}%BC zQt!HuZ!Xoj#;RZ%*+mc$rkd|Ni0rH+y#yNSiP467WLMdJ2N9M+b|_p12oUsRH13g? z3L)QQ>=9$IeCwQ4+@pTwUKo2cgNl1J9U~8=F&fRf@-Z4_9rz0PzA`<1j%v+1D+z^0 jkSr8>T}WKhorC@XtI`%G;3R&800000NkvXXu0mjfkB%d1 literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/class_service-members.html b/trunk/paradiseo-peo/docs/html/class_service-members.html new file mode 100644 index 000000000..c2a18e16e --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_service-members.html @@ -0,0 +1,62 @@ + + +ParadisEO: Member List + + + + +
+
+ +

Service Member List

This is the complete list of members for Service, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_sent_rrService [private]
ownerService [private]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_service.html b/trunk/paradiseo-peo/docs/html/class_service.html new file mode 100644 index 000000000..cd6fbbfce --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_service.html @@ -0,0 +1,102 @@ + + +ParadisEO: Service Class Reference + + + + +
+
+ +

Service Class Reference

Inheritance diagram for Service: +

+ +Communicable +peoPopEval< EOT > +peoSyncMultiStart< EOT > +peoTransform< EOT > +peoParaPopEval< EOT > +peoSeqPopEval< EOT > +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

+void setOwner (Thread &__owner)
+ThreadgetOwner ()
+void requestResourceRequest (unsigned __how_many=1)
+void packResourceRequest ()
+virtual void packData ()
+virtual void unpackData ()
+virtual void execute ()
+virtual void packResult ()
+virtual void unpackResult ()
+virtual void notifySendingData ()
+virtual void notifySendingResourceRequest ()
+virtual void notifySendingAllResourceRequests ()

Private Attributes

+Threadowner
+unsigned num_sent_rr
+

Detailed Description

+ +

+ +

+Definition at line 32 of file service.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_service.png b/trunk/paradiseo-peo/docs/html/class_service.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6f68a5411cd8a8a22d2b70693af7a0e2f82564 GIT binary patch literal 2032 zcmb7_c~H|y7RNzUmTRIQ0)r+BlGzH!u%H|!3L`-TNt7diakyk<00kB%K(Y`(M~JW? zKRM)xkN}AwAeUm0I~pLIatm@Jk%$?C2_O-WY@8Zvw`!)gYX9i|e)=8NuV1~YPPvG7 zP*eU^Sx!z)&G8)4RZdO;EMxX=1=)`8dN3dp?TgOt_EM=-hEge;PWQVbqu&;r&5nI8 z<;jlnI9IfrobA#?pq!jyvLo^bcYOZ){7?$RO8b_^lhL+-IrgkdT{QF5z&ZW(&p?et zMOFKX2Ex6qtfz{)_l#&W#U|+LyJ*fRx4Lz+v5^fa0Zn=GhM;1$I>9dmQG*0~O}_EZ zG7+M6PfkGrx4K?Co8U09m3J&6?y~OHG##wZwSbxPh8uR5;A;gD_Yg0J-N1Ggx|L)M zbe{`nCH^NC3S3&2%3bqC7IFMh;GYCmp!?5RunU{Kh;t-D-r|WrePN-g*Zw zj7(R|I^EV*-MR;+K}bwlwa)HR_|x3~)6A$AmREy4wIm$eN*qxfr17;mvP#B8Px%5S z^cHWZq_LBDNa!E~EVv3#wSfRri$Y67x=|Mcb$4-$^W@jXk}#S>qU$Gs07 z=MBYi&zW}q&tKZ`ho`*WAjY#KM5`~(+>KNNaiaRFPc0Jc_d1U9$1eV!{@^9QUfX*n ztMqMk9PUjnE+@Z453oGGY+{YF2Zsj@dq+}J5wnBLCf;#PLUWO0Om{F$jJL}aW{kM= zM9I(@gVM6DMKu(4T~vXRo}ft$dYLw|S@M14+@;Wa3sLh`OqPnWXcm}B@)j8$k}SnU zV{20%b>p7lToN=xA2u;htcMNYAI=s#l}g}dPL&`uRBLrGpu($QMa}p)&HvXD*1ev- zs%2`|G4Rer2A485vg03}fHGO2uufxhM5dj@eWZiKtvmiB@0IAjhd)v$3U{_6MifWN&{CGhl(KTyF;S^&Fdsr_Y&%0Ul7FkY^0jKyNOG zg2-A?i*WlieEoWrX)&KZp?3!(&Hc8!yt~H)@1?2hJN`6u4X_4Xb1*k=oz{_0{6730 zNB%5A`?^2LH@KBRb>DR6YlEE0iVhR!RMQz_g98 z|4-KI-~yXKL?@+K89{5r^g~AGt@wZIhrHTU4%z7%_q3?2-foIqyPE+5L+Q5v zBl~-E|3EQ0t6bAbGBIMVGK8oZev0h5W6Rq=-@ym9uVXrBA(h;U$5qV%u5~9nkSBqk zC&`G(@(Er9dSl;<#cdcb_l{z=62UL;cUj{PNh)(Z4sXJ~sZz=}ZL^O?n!(atk}}Co zJY;Rp1LRpvv>xo!0rjn;_tkYUR!U{aPNTQS7+<*iH}BW*zq>E|PxDa^v1eph!s85V zlx3k(wmhmvHR$G5TMZ)xs-Mo_?%qVG*WTmL%>K+Z-;csd)4J)MtHHy8;_$hIN9#cK zP3RcZto%-Z9z)ssKcKt!vE-8Zo<8a_+f1=M*KUiMx_r2r_c7af>ATJOhqgGP8j_Fwx_%V6ZXc*UONo&lsYZ}mR`e4}5Vvrdn9}oDHW@63?gqV!Hmh34wzm_r- zB~ODj!;wQJfBDh;!Y{LZMaC9mMi$$~I;|QoZBeW+n&bU72 z8He(XzqYeZMMzIeT5T1}jKo4@9oQA++x@-(fBnEd;%Ga^!a-0)a1MM)wv@`Qp*kF7 z=sv%mhQ%q*EzitS4^0|_FBOJOz41D* z#wpo7pbqlRvuk=~(`h^Nv|-7GKGpOV(y?n7=#+^Hl@VpRNh;Xu02f>3Pc@k*9Kg4K z(*LpCgcO~yb50|ZZbRXJ%;p1o0IM7${HTLK*bfO7|7+D@tHTm+ukL}hd>mZg}24QcKNoS~$UWmEkH90gil*f$l0 cj+Hx#=SAep4SgIH+4n5xXpcr#o$ + +ParadisEO: Member List + + + + +
+
+ +

Thread Member List

This is the complete list of members for Thread, including all inherited members.

+ + + + + + +
actThread [private]
setActive()Thread
setPassive()Thread
start()=0 (defined in Thread)Thread [pure virtual]
Thread()Thread
~Thread()Thread [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_thread.html b/trunk/paradiseo-peo/docs/html/class_thread.html new file mode 100644 index 000000000..c354e6f9d --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_thread.html @@ -0,0 +1,75 @@ + + +ParadisEO: Thread Class Reference + + + + +
+
+ +

Thread Class Reference

Inheritance diagram for Thread: +

+ +ReactiveThread +Runner +Communicator +Worker +peoEA< EOT > + +List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

Thread ()
+virtual ~Thread ()
+virtual void start ()=0
+void setActive ()
+void setPassive ()

Private Attributes

+bool act
+

Detailed Description

+ +

+ +

+Definition at line 31 of file thread.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_thread.png b/trunk/paradiseo-peo/docs/html/class_thread.png new file mode 100644 index 0000000000000000000000000000000000000000..bac19c4248b924672e1783be08d6cbd4f07c5a11 GIT binary patch literal 982 zcmeAS@N?(olHy`uVBq!ia0y~yU~~quJ6M>3WWVc_??6f-z$e7@|Ns9$=Kuc(=Fd-< z0AzvjfddDs5B+}vEaktG3V{9+IO=Jc-n$}U){GbH`sk( zi>I~!63@N=1*hdRskX3u7vJ=Asji9qxn|+uKpmFW1yRB$cZjZ%pCG8omg3UISgky( zV=iBGiMvSu_C?W3O?CeKe^;(=>|Yz4-^j7+!k*>r|IBRPbyyrdt8lM)(c84TmkfEm z8MPJp`g|M2VqN^rdtUf|*`eXKL_j&HLr~L%;Sq!R%E*=X7*c`Q)i!=FXO|Si$FD(q z1-+yg3L6R%U4)>LAO)y6j@dr`i;~?;^|hATuGxKpnnyZBl3ch9m0BexI`w!cx~;je zJznzfxzImax6XX~GkNuo!VZh;uc`$CiOF5D#z?gDL=J^NSlGd2plXyEg3M2!w z)`%F|E^(;Ye5tMDm(Nz?uYT2hwT*`B%6A>Oek#l*IdHbq7Uwg!Pg=HW?3LWi?S9PS zh3t{2Jxv_T_8ae+`!hKEVosjqI>FRCHIcWYj!YH5r}nQ!eCbh^4wZEZO2=-Q=_hr) zkhx@X@t%*vl)5f4d9&(5Ke36s<4ly)vJE#Z6|ODSJyess$k}D~1=Gat;+~A-ud-(= zSGB!hmA<&Oqx6xygIkJ=+n?ito6D!j@9;ePO2BaS?>n#3O&K1sPcm9@IrUxtkD80= z9D?>NG7N<+!0>~I$HLtT+tlvVC?+%UEt+Z4m$?lZ#clRI8TMg)1v9NrR>)m6HQi}s_VeKK5QmyY`N1VkYnfec za~yW$3p}=GzO2j6v-)0wXAjqNS}>oQVZAxUP9kQeJCARPG7r0@i${^}pPM_cNxR%| zjfpdiRhIqFAjmvZQa5w&^P@-WJeZ4~Gb>&_RxRkK%oL)`BqG4LNZfSU_aC=i4tu)T zJa(Ngk!*f_(}SZs4qLA4(oK4GR8>}epMt`vtRtbXWsiJ~a{11cZP@wZYSfnNuF{Ee zg(v40Mq21C^6pqSk$3C&)i?57W_!lT$gS(H7K~kbdcWS%o}+IIdUj-J9J%#SqEJvd t?^lgs(zkVns~^w4vZpUU==0&ftQ-sr88-Y;Oaf*?22WQ%mvv4FO#m1+uj&8* literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/class_topology-members.html b/trunk/paradiseo-peo/docs/html/class_topology-members.html new file mode 100644 index 000000000..a04fad63d --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_topology-members.html @@ -0,0 +1,41 @@ + + +ParadisEO: Member List + + + + +
+
+ +

Topology Member List

This is the complete list of members for Topology, including all inherited members.

+ + + + +
add(Cooperative &__mig)Topology
migTopology [protected]
setNeighbors(Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)=0 (defined in Topology)Topology [pure virtual]
~Topology()Topology [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_topology.html b/trunk/paradiseo-peo/docs/html/class_topology.html new file mode 100644 index 000000000..776b48688 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_topology.html @@ -0,0 +1,65 @@ + + +ParadisEO: Topology Class Reference + + + + +
+
+ +

Topology Class Reference

Inheritance diagram for Topology: +

+ +RingTopology + +List of all members. + + + + + + + + + + + +

Public Member Functions

+virtual ~Topology ()
+void add (Cooperative &__mig)
+virtual void setNeighbors (Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)=0

Protected Attributes

+std::vector< Cooperative * > mig
+

Detailed Description

+ +

+ +

+Definition at line 31 of file topology.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_topology.png b/trunk/paradiseo-peo/docs/html/class_topology.png new file mode 100644 index 0000000000000000000000000000000000000000..bc09751e50a5b00a6da2da18b5ccb4162efd8623 GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^kw6^4!VDxEw2p)TDTx4|5ZC|z{{xx-{~wq?KVbrp z1;z&s9H>6@{|S)GSQ6wH%;50sMjDXw*VDx@#G~`=l|a5`1s;YA-_q}IGuKd$*v73J z`RH%I0ZZ(H)lA+Vcbx149&}C>YLrT9;(Ya(zvRcW@`TK{JXbPQ9OfKK&1^6b_WG^o z=eUMzaFJGNarDL%ziE_>?tMze1!y7$v{1HZ2-Jt3WCy5e*FDdF3W+y5%QsW92I zF);pFUDdqkpv=p*-&0;JY?u4RU2Fb0voG%9vsaIoZxyhNWdCEU`Z?!CjtR4Ml+15a zO*;>n>VKO|4%I~!`ELA}Fq6yn<}9D~J(hlJX9d6gv~}s4$fvbSWTUI}^S$4{_gvGy z?rE6H){D!;qTBcMZtc|7y?xN)X6M^wZ|z%TuZuVGtUhvIyF&~Z5DcEKelF{r5}E)% CSe$qO literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/class_worker-members.html b/trunk/paradiseo-peo/docs/html/class_worker-members.html new file mode 100644 index 000000000..b9281c819 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_worker-members.html @@ -0,0 +1,68 @@ + + +ParadisEO: Member List + + + + +
+
+ +

Worker Member List

This is the complete list of members for Worker, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
idWorker [private]
keyCommunicable [protected]
lock()Communicable
notifySendingResult()Worker
notifySendingTaskDone()Worker
num_commCommunicable [protected, static]
packResult()Worker
packTaskDone()Worker
ReactiveThread()ReactiveThread
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
servWorker [private]
serv_idWorker [private]
setActive()Thread
setPassive()Thread
setSource(int __rank)Worker
sleep()ReactiveThread
srcWorker [private]
start()Worker [virtual]
stop()Communicable
Thread()Thread
totoWorker [private]
unlock()Communicable
unpackData()Worker
wakeUp()ReactiveThread
Worker()Worker
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_worker.html b/trunk/paradiseo-peo/docs/html/class_worker.html new file mode 100644 index 000000000..cca1be02c --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/class_worker.html @@ -0,0 +1,94 @@ + + +ParadisEO: Worker Class Reference + + + + +
+
+ +

Worker Class Reference

Inheritance diagram for Worker: +

+ +Communicable +ReactiveThread +Thread + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Worker ()
+void start ()
+void packResult ()
+void unpackData ()
+void packTaskDone ()
+void notifySendingResult ()
+void notifySendingTaskDone ()
+void setSource (int __rank)

Private Attributes

+WORKER_ID id
+SERVICE_ID serv_id
+Serviceserv
+int src
+bool toto
+

Detailed Description

+ +

+ +

+Definition at line 33 of file worker.h.


The documentation for this class was generated from the following files: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/class_worker.png b/trunk/paradiseo-peo/docs/html/class_worker.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea239005e92fa21c493b7163f0f4059a251cddd GIT binary patch literal 624 zcmV-$0+0QPP)!#BBAI1X8x_y{u8If)i*WG*k52*frLe#bIPl!5c1Of#VP(T3%6i`3`bqv(@BiW~K zR&td4+I-RssDcA3P)9@2Tqq32@hKyJKoRk%uH+iz3dSX&aYV_er$_b}HI>$7;yy)b zfqO^xnyU(;mc4AwQ8my00;Q6=)*)@I86M>xE+dxm6y@uY%M_-dzPgrKHBbHm#Y3I! zsjTW>Etkp?#raBg!tkR%L;1DxDJ;_z#W}^imrzkPXNj>h8Wk&!DEAmLGAft8h?poC)&K{a2CKp$#8%*5sh49r+M zioi{FoDUOFK>Zb};pXhA-B)*)53OW(+YWUtlzR)r?}n(pOq(wezZ;^?8G%3n1ylu8 zUub1-xaXS#1r$&~0rg%eLz}G_)u07XhezEs{nqDkQFQB!G0CZfa{Zf5)6FEO7Rn@o zX9TAW%6*2ap>(MtDvYQJDlJ=0lm?zAb!wq1v;YdIw?pl_Ir{-RVHOmMf_5qZ0000< KMNUMnLSTY`6%p|O literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/classes.html b/trunk/paradiseo-peo/docs/html/classes.html new file mode 100644 index 000000000..3a2643537 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classes.html @@ -0,0 +1,48 @@ + + +ParadisEO: Alphabetical List + + + + +
+
+ +

ParadisEO Class Index

A | C | E | N | P | R | S | T | W

+ +
  A  
+
Node   peoSeqPopEval   
peoAggEvalFunc   
  P  
+
peoSeqTransform   
peoAsyncIslandMig   peoParaPopEval   Service   
  C  
+
peoParaSGATransform   peoSyncIslandMig   
Communicable   peoPopEval   peoSyncMultiStart   
Communicator   
  R  
+
  T  
+
Cooperative   ReactiveThread   Thread   
  E  
+
RingTopology   Topology   
peoEA   Runner   peoTransform   
  N  
+
  S  
+
  W  
+
peoNoAggEvalFunc   SEND_REQUEST   Worker   

A | C | E | N | P | R | S | T | W

+


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_agg_eval_func.html b/trunk/paradiseo-peo/docs/html/classpeo_agg_eval_func.html new file mode 100644 index 000000000..6640cbc56 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_agg_eval_func.html @@ -0,0 +1,67 @@ + + +ParadisEO: peoAggEvalFunc< EOT > Class Template Reference + + + + +
+
+ +

peoAggEvalFunc< EOT > Class Template Reference

The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. +More... +

+#include <peoAggEvalFunc.h> +

+

Inheritance diagram for peoAggEvalFunc< EOT >: +

+ +peoNoAggEvalFunc< EOT > + + + +
+

Detailed Description

+

template<class EOT>
+ class peoAggEvalFunc< EOT >

+ +The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. +

+The class inherits public eoBF< EOT&, const typename EOT :: Fitness&, void > thus requiring, for the derived classes, the creation of a function having the following signature:

+ + + +
void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness );    
+

+The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +

+ +

+Definition at line 40 of file peoAggEvalFunc.h.


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_agg_eval_func.png b/trunk/paradiseo-peo/docs/html/classpeo_agg_eval_func.png new file mode 100644 index 0000000000000000000000000000000000000000..782e65274667f290861ac4f8e63a5b1705d63046 GIT binary patch literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^>w!3cg&9cBt+40JG z3ycpOI8c4){}UjWu_VYZn8D%MjWi(pr>Bc!NJQ(~>ArbPhCHp0eXkehJ($C=HR$|h z(eL(7$rmiuely1=1`p+ z9><=(|N8Wd<0U0^4g=(9N$B}8FI%v=h`&rPf>gKdd1U*#3a_o+eF>sd~(|N zFz|=*2eIr-w&ECBBrY+yf8=rP8Z#p=Qt5Y+YlWW=%2andLKdQ7YEh=f| zziztW{r8&>S{_D!Q2($wyD6U0?#=Uh_gb0FJDCqYpKs1wKj(ZtTixLhpARhlFm!*- z`rogs+rLe*d#z}Ca6P;D&urJaZh`K(*S_^%>r!OO%71f8RDw4q<`U4mOV@RmC`m10 zQhOvSz13j-hrk0KQ@s>ls)lLo@LY5FV9Fc87>_G=DlA_?{k+w=YzIs5%Llg(iX5!k zZRvjNq@4KlRmHCg=R};~+gGw#a##MF*DIg4K>Y2)Cw!el@9HjDn+QXnJq+!g&Bu!p z6TZ)gwz{Em@bQGM7lj_KS3_O|1}hq-YI`0`$&1v|IsQ5%r{(h9+g|TvOS#|tt~J|{ r^h3;s#cq+>577s*_Ajenec_H1G0#Z6thXGPA{abf{an^LB{Ts52`Cin literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig-members.html b/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig-members.html new file mode 100644 index 000000000..fca05b416 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig-members.html @@ -0,0 +1,67 @@ + + +ParadisEO: Member List + + + + +
+
+ +

peoAsyncIslandMig< EOT > Member List

This is the complete list of members for peoAsyncIslandMig< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoAsyncIslandMig< EOT > [private]
coop_empeoAsyncIslandMig< EOT > [private]
destinationpeoAsyncIslandMig< EOT > [private]
empeoAsyncIslandMig< EOT > [private]
emigrate()peoAsyncIslandMig< EOT > [private]
getKey()Communicable
getOwner()Cooperative
immpeoAsyncIslandMig< EOT > [private]
immigrate()peoAsyncIslandMig< EOT > [private]
keyCommunicable [protected]
lock()Communicable
notifySending()Cooperative [virtual]
num_commCommunicable [protected, static]
operator()()peoAsyncIslandMig< EOT >
pack()peoAsyncIslandMig< EOT > [virtual]
peoAsyncIslandMig(eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)peoAsyncIslandMig< EOT >
replacepeoAsyncIslandMig< EOT > [private]
resume()Communicable
selectpeoAsyncIslandMig< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
sourcepeoAsyncIslandMig< EOT > [private]
stop()Communicable
topologypeoAsyncIslandMig< EOT > [private]
unlock()Communicable
unpack()peoAsyncIslandMig< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig.html b/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig.html new file mode 100644 index 000000000..ac1977177 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig.html @@ -0,0 +1,320 @@ + + +ParadisEO: peoAsyncIslandMig< EOT > Class Template Reference + + + + +
+
+ +

peoAsyncIslandMig< EOT > Class Template Reference

The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. +More... +

+#include <peoAsyncIslandMig.h> +

+

Inheritance diagram for peoAsyncIslandMig< EOT >: +

+ +Cooperative +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoAsyncIslandMig (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)
 Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
void operator() ()
 Function operator to be called as checkpoint for performing the migration step.
+void pack ()
 Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
+void unpack ()
 Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.

Private Member Functions

+void emigrate ()
+void immigrate ()

Private Attributes

+eoContinue< EOT > & cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+Topologytopology
+eoPop< EOT > & source
+eoPop< EOT > & destination
+std::queue< eoPop< EOT > > imm
+std::queue< eoPop< EOT > > em
+std::queue< Cooperative * > coop_em
+

Detailed Description

+

template<class EOT>
+ class peoAsyncIslandMig< EOT >

+ +The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. +

+continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase.

+The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:

+ + + + + + + + + + + + + +
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offspring
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+

+Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the Runner class (for example a peoEA object represents a possible owner). A simple example is offered bellow:

+

    +
  1. +topological model to be followed when performing migrations:
    +
    + + + +
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +

    +

  2. +
  3. +the continuation criterion, selection and replacement strategy etc. are defined:
    +
    + + + + + + + + + + + + + + + + + +
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoPeriodicContinue< EOT > migCont( MIG_FREQ );   // migrations occur periodically at MIG_FREQ iterations
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoAsyncIslandMig< EOT > asyncMigration(
    +          migCont, migSelect, migReplace, migTopology,
    +          population, population
    + );  
    // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +

    +

  4. +
  5. +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +
    + + + + + + + + + + + + + +
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( asyncMigration );   // adding the migration operator as checkpoint element
    ...    
    +

    +

  6. +
  7. +definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +
    + + + + + + + +
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    asyncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +
  8. +
+

+The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively.

+The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +

+ +

+Definition at line 127 of file peoAsyncIslandMig.h.


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+template<class EOT>
peoAsyncIslandMig< EOT >::peoAsyncIslandMig eoContinue< EOT > &  __cont,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
Topology __topology,
eoPop< EOT > &  __source,
eoPop< EOT > &  __destination
+
+ + + + + +
+   + + +

+Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +

+

Parameters:
+ + + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the migration is performed or not;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
Topology& __topology - topological model to be followed when performing migrations;
eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
+
+ +

+Definition at line 186 of file peoAsyncIslandMig.h. +

+References Topology::add().

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoAsyncIslandMig< EOT >::operator()  ) 
+
+ + + + + +
+   + + +

+Function operator to be called as checkpoint for performing the migration step. +

+The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +

+Definition at line 263 of file peoAsyncIslandMig.h. +

+References peoAsyncIslandMig< EOT >::cont, peoAsyncIslandMig< EOT >::emigrate(), peoAsyncIslandMig< EOT >::immigrate(), and peoAsyncIslandMig< EOT >::source.

+


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig.png b/trunk/paradiseo-peo/docs/html/classpeo_async_island_mig.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b2d9f659674be4d2ebb1a6c17af6a930d7ee32 GIT binary patch literal 637 zcmV-@0)qXCP)Z#f9VCm?raWIa_n*oV zrv07wb&y@oyoaTFqj{@0KEAdwZ_!njToPj@&|oG!)|6FtGCS!Dy`%l~41P8HaXAxv zx%`}nJy#|utE{rhDyyur@5WC0*?g}59h5z0cSjtdqjb2H39Gd& zEcxL@$fdA06JiO>MRqh3mJ{!4|B~%(%FbjbeW6eK`SEgA>tOTPb7g|E$||d@vdSv^ zZY)k|24>usRrc>#yB-0{AlUU;;eF>PW8=;a3+vf$SPtNo0bm*`vX+P1a7hrBuN+>G z2*@GIC`c?vZNoyA7c7JhtjUkKi_(E?VVX8RaWIB3oVaDNvS!8Bh%9F6C6-w$s!5-z zGFxm}L>U>^Ux37>MJOz + +ParadisEO: Member List + + + + +
+
+ +

peoEA< EOT > Member List

This is the complete list of members for peoEA< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoEA< EOT > [private]
getID()Runner
getKey()Communicable
isLocal()Runner
keyCommunicable [protected]
lock()Communicable
notifySendingTermination()Runner
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoEA< EOT >
packTermination()Runner
peoEA(eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)peoEA< EOT >
poppeoEA< EOT > [private]
pop_evalpeoEA< EOT > [private]
replacepeoEA< EOT > [private]
resume()Communicable
run()peoEA< EOT > [virtual]
Runner()Runner
selectpeoEA< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setActive()Thread
setPassive()Thread
start()Runner [virtual]
stop()Communicable
terminate()Runner
Thread()Thread
transpeoEA< EOT > [private]
unlock()Communicable
waitStarting()Runner
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_e_a.html b/trunk/paradiseo-peo/docs/html/classpeo_e_a.html new file mode 100644 index 000000000..890404472 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_e_a.html @@ -0,0 +1,256 @@ + + +ParadisEO: peoEA< EOT > Class Template Reference + + + + +
+
+ +

peoEA< EOT > Class Template Reference

The peoEA class offers an elementary evolutionary algorithm implementation. +More... +

+#include <peoEA.h> +

+

Inheritance diagram for peoEA< EOT >: +

+ +Runner +Communicable +Thread + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoEA (eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)
 Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism.
+void run ()
 Evolutionary algorithm function - a side effect of the fact that the class is derived from the Runner class, thus requiring the existence of a run function, the algorithm being executed on a distinct thread.
void operator() (eoPop< EOT > &__pop)
 Function operator for specifying the population to be associated with the algorithm.

Private Attributes

+eoContinue< EOT > & cont
+peoPopEval< EOT > & pop_eval
+eoSelect< EOT > & select
+peoTransform< EOT > & trans
+eoReplacement< EOT > & replace
+eoPop< EOT > * pop
+

Detailed Description

+

template<class EOT>
+ class peoEA< EOT >

+ +The peoEA class offers an elementary evolutionary algorithm implementation. +

+In addition, as compared with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a peoEA object:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
...    
eoPop< EOT > population( POP_SIZE, popInitializer );   // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual
   
eoGenContinue< EOT > eaCont( NUM_GEN );   // number of generations for the evolutionary algorithm
eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects
   
peoSeqPopEval< EOT > eaPopEval( evalFunction );   // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor
   
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE );   // the number of individuals to be selected for creating the offspring population
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
   
eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE );   // transformation operator - crossover and mutation operators with their associated probabilities
peoSeqTransform< EOT > eaTransform( transform );   // ParadisEO specific sequential operator - a parallel version may be specified in the same manner
   
eoPlusReplacement< EOT > eaReplace;   // replacement strategy - for integrating the offspring resulting individuals in the initial population
   
peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );   // ParadisEO evolutionary algorithm integrating the above defined objects
eaAlg( population );   // specifying the initial population for the algorithm
...    
+ +

+ +

+Definition at line 69 of file peoEA.h.


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+template<class EOT>
peoEA< EOT >::peoEA eoContinue< EOT > &  __cont,
peoPopEval< EOT > &  __pop_eval,
eoSelect< EOT > &  __select,
peoTransform< EOT > &  __trans,
eoReplacement< EOT > &  __replace
+
+ + + + + +
+   + + +

+Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +

+Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes.

+

Parameters:
+ + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not;
peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals;
peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform;
eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population;
+
+ +

+Definition at line 113 of file peoEA.h. +

+References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class EOT>
void peoEA< EOT >::operator() eoPop< EOT > &  __pop  ) 
+
+ + + + + +
+   + + +

+Function operator for specifying the population to be associated with the algorithm. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved;
+
+ +

+Definition at line 129 of file peoEA.h. +

+References peoEA< EOT >::pop.

+


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_e_a.png b/trunk/paradiseo-peo/docs/html/classpeo_e_a.png new file mode 100644 index 0000000000000000000000000000000000000000..e3384cb4437e114ee4fbf2197291f5fa2788e106 GIT binary patch literal 637 zcmV-@0)qXCP)U;@tD;oEsjW5UXp-yw(wK5{4 z&H6OxE)W4uou#yc+5Qv+061!4bl5`Jw=)@QP&m5B0i5ub=VNX6L5F2-(Q0G zH0QO;xK z3^K?dgABSWwC^|Cj@b9B)1dzV!Sv#Id1!5MyeJfwB}vx7Wp$fQg|J;?rvyx7V>a#W?)e0<4g z_94jo&~F}2H39i#m4GVGPyEkID_)v~XUJDaA=g1+jsyZ}nWrWnkw^z2X|f#=V-Op5 zqe~a0!y`&hP8x$L=<|wPW<8#zkU6`Z(@^qi0QdOr-Flb+%LGKF{z1{i) XqeU7?v_)yU00000NkvXXu0mjfWw#p0 literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func-members.html b/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func-members.html new file mode 100644 index 000000000..6a45484a7 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func-members.html @@ -0,0 +1,38 @@ + + +ParadisEO: Member List + + + + +
+
+ +

peoNoAggEvalFunc< EOT > Member List

This is the complete list of members for peoNoAggEvalFunc< EOT >, including all inherited members.

+ +
operator()(EOT &__sol, const typename EOT::Fitness &__fit)peoNoAggEvalFunc< EOT >


Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func.html b/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func.html new file mode 100644 index 000000000..c69780902 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func.html @@ -0,0 +1,66 @@ + + +ParadisEO: peoNoAggEvalFunc< EOT > Class Template Reference + + + + +
+
+ +

peoNoAggEvalFunc< EOT > Class Template Reference

The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +More... +

+#include <peoNoAggEvalFunc.h> +

+

Inheritance diagram for peoNoAggEvalFunc< EOT >: +

+ +peoAggEvalFunc< EOT > + +List of all members. + + + + + +

Public Member Functions

+void operator() (EOT &__sol, const typename EOT::Fitness &__fit)
 Operator which sets as fitness the __fit value for the __sol individual.
+

Detailed Description

+

template<class EOT>
+ class peoNoAggEvalFunc< EOT >

+ +The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +

+The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. +

+ +

+Definition at line 34 of file peoNoAggEvalFunc.h.


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func.png b/trunk/paradiseo-peo/docs/html/classpeo_no_agg_eval_func.png new file mode 100644 index 0000000000000000000000000000000000000000..0db69caaa3a0fec69f47e443be9ab895961e793f GIT binary patch literal 601 zcmV-f0;c_mP)v38agL;tJx(g&dQ^{n$42hJ8>NWbK4Lkc>sY{e zY=x4Cj&(`{xU-_`cmN-C+&mVrdCVmZOuA?D*rnpg{O$xbGXpV2E zA`e3j`1H61w)371&gkBPUxCja3;YW3w7>rc#^n+5zW`sq-wb@YUf&G-hN)QK1zz9< zUf=~@;03-raL$M!&N^!bF3O0|qq=8l9Ja(z@9=lWoNrlXkiW*b45(EtDmZm~;yidhJIL*B$-^_bpJMY=x nfbK1L3Or*h@GHQx{{DXegBLo(z_a$e00000NkvXXu0mjf5knV_ literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval-members.html b/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval-members.html new file mode 100644 index 000000000..66ba93b0c --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval-members.html @@ -0,0 +1,73 @@ + + +ParadisEO: Member List + + + + +
+
+ +

peoParaPopEval< EOT > Member List

This is the complete list of members for peoParaPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ad_solpeoParaPopEval< EOT > [private]
Communicable()Communicable
execute()peoParaPopEval< EOT > [virtual]
funcspeoParaPopEval< EOT > [private]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
merge_evalpeoParaPopEval< EOT > [private]
no_merge_evalpeoParaPopEval< EOT > [private]
notifySendingAllResourceRequests()peoParaPopEval< EOT > [virtual]
notifySendingData()peoParaPopEval< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_funcpeoParaPopEval< EOT > [private]
one_funcpeoParaPopEval< EOT > [private]
operator()(eoPop< EOT > &__pop)peoParaPopEval< EOT > [virtual]
packData()peoParaPopEval< EOT > [virtual]
packResourceRequest()Service
packResult()peoParaPopEval< EOT > [virtual]
peoParaPopEval(eoEvalFunc< EOT > &__eval_func)peoParaPopEval< EOT >
peoParaPopEval(const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval)peoParaPopEval< EOT >
progressionpeoParaPopEval< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
solpeoParaPopEval< EOT > [private]
stop()Communicable
taskspeoParaPopEval< EOT > [private]
totalpeoParaPopEval< EOT > [private]
unlock()Communicable
unpackData()peoParaPopEval< EOT > [virtual]
unpackResult()peoParaPopEval< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval.html b/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval.html new file mode 100644 index 000000000..c519cc388 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval.html @@ -0,0 +1,501 @@ + + +ParadisEO: peoParaPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoParaPopEval< EOT > Class Template Reference

The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. +More... +

+#include <peoParaPopEval.h> +

+

Inheritance diagram for peoParaPopEval< EOT >: +

+ +peoPopEval< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoParaPopEval (eoEvalFunc< EOT > &__eval_func)
 Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor.
 peoParaPopEval (const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval)
 Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function.
void operator() (eoPop< EOT > &__pop)
 Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population.
void packData ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void unpackData ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
+void execute ()
 Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function.
void packResult ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void unpackResult ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void notifySendingData ()
 Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase.
void notifySendingAllResourceRequests ()
 Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase.

Private Attributes

+const std::vector< eoEvalFunc<
+ EOT > * > & 
funcs
+std::vector< eoEvalFunc< EOT > * > one_func
+peoAggEvalFunc< EOT > & merge_eval
+peoNoAggEvalFunc< EOT > no_merge_eval
+std::queue< EOT * > tasks
+std::map< EOT *, std::pair<
+ unsigned, unsigned > > 
progression
+unsigned num_func
+EOT sol
+EOT * ad_sol
+unsigned total
+

Detailed Description

+

template<class EOT>
+ class peoParaPopEval< EOT >

+ +The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. +

+The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. +

+ +

+Definition at line 41 of file peoParaPopEval.h.


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class EOT>
peoParaPopEval< EOT >::peoParaPopEval eoEvalFunc< EOT > &  __eval_func  ) 
+
+ + + + + +
+   + + +

+Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. +

+

Parameters:
+ + +
eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population
+
+ +

+Definition at line 117 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::one_func.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class EOT>
peoParaPopEval< EOT >::peoParaPopEval const std::vector< eoEvalFunc< EOT > * > &  __funcs,
peoAggEvalFunc< EOT > &  __merge_eval
+
+ + + + + +
+   + + +

+Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. +

+

Parameters:
+ + + +
const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors;
peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values.
+
+ +

+Definition at line 126 of file peoParaPopEval.h.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class EOT>
void peoParaPopEval< EOT >::operator() eoPop< EOT > &  __pop  )  [virtual]
+
+ + + + + +
+   + + +

+Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor.
+
+ +

+Implements peoPopEval< EOT >. +

+Definition at line 137 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::funcs, peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks.

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoParaPopEval< EOT >::packData  )  [virtual]
+
+ + + + + +
+   + + +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 158 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks.

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoParaPopEval< EOT >::unpackData  )  [virtual]
+
+ + + + + +
+   + + +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 172 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, peoParaPopEval< EOT >::num_func, and peoParaPopEval< EOT >::sol.

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoParaPopEval< EOT >::packResult  )  [virtual]
+
+ + + + + +
+   + + +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 189 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, and peoParaPopEval< EOT >::sol.

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoParaPopEval< EOT >::unpackResult  )  [virtual]
+
+ + + + + +
+   + + +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 198 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, Service::getOwner(), peoParaPopEval< EOT >::merge_eval, peoParaPopEval< EOT >::progression, Communicable::resume(), Thread::setActive(), and peoParaPopEval< EOT >::total.

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoParaPopEval< EOT >::notifySendingData  )  [virtual]
+
+ + + + + +
+   + + +

+Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 229 of file peoParaPopEval.h.

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoParaPopEval< EOT >::notifySendingAllResourceRequests  )  [virtual]
+
+ + + + + +
+   + + +

+Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 234 of file peoParaPopEval.h. +

+References Service::getOwner(), and Thread::setPassive().

+


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval.png b/trunk/paradiseo-peo/docs/html/classpeo_para_pop_eval.png new file mode 100644 index 0000000000000000000000000000000000000000..3ddb392239123f182a27303d1cf1ebac4748a310 GIT binary patch literal 772 zcmV+f1N;1mP)3A-qBm$S^j5k55eni@U^@@nnu*_3N+u{Ee-V;17!BsHsF*)NP<|^;7zeOx z>`RMGU%=s!^)(!sf)CzfK#X7G3o$jZ6CpHx9T!0XFakXg5F{(Hq z;udkj3#0I|{SlnjQErGVO>v4-oZ=LxIK@2xC;Yhh>}TWu9>)$iVBf9RV+BCFTu4Ln z=Jo(L9%Y$S-z+v8Z;tb2YYlB{?Mcmr3K(#Hzh=X6&<{nJxwmZmtxDNb>UQ=H-+fCEu6 zPI3-babh?C_T9!zb=9>?swt$8G}O%|oNLzk!kNKT*DM?xi@LRul77k&E~(DNPclxO zq^1#*dmGLTzgclEHO|sEQVrye+zF(bJf2kRwm9fG({MRNF59Nq)v-8W$+6V98awVC za9lB`faFQTqve@y=rpZ!D zz!IZmHU-t1*30g@ZD!4TS^wkw0GymC?ha0NVf+Wf>N??=rmyAz0000 + +ParadisEO: Member List + + + + +
+
+ +

peoParaSGATransform< EOT > Member List

This is the complete list of members for peoParaSGATransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
crosspeoParaSGATransform< EOT > [private]
cross_ratepeoParaSGATransform< EOT > [private]
execute()peoParaSGATransform< EOT > [virtual]
fatherpeoParaSGATransform< EOT > [private]
getKey()Communicable
getOwner()Service
idxpeoParaSGATransform< EOT > [private]
keyCommunicable [protected]
lock()Communicable
motherpeoParaSGATransform< EOT > [private]
mutpeoParaSGATransform< EOT > [private]
mut_ratepeoParaSGATransform< EOT > [private]
notifySendingAllResourceRequests()peoParaSGATransform< EOT > [virtual]
notifySendingData()peoParaSGATransform< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_termpeoParaSGATransform< EOT > [private]
operator()(eoPop< EOT > &__pop)peoParaSGATransform< EOT >
packData()peoParaSGATransform< EOT > [virtual]
packResourceRequest()Service
packResult()peoParaSGATransform< EOT > [virtual]
peoParaSGATransform(eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)peoParaSGATransform< EOT >
poppeoParaSGATransform< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()peoParaSGATransform< EOT > [virtual]
unpackResult()peoParaSGATransform< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform.html b/trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform.html new file mode 100644 index 000000000..8a767e266 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform.html @@ -0,0 +1,112 @@ + + +ParadisEO: peoParaSGATransform< EOT > Class Template Reference + + + + +
+
+ +

peoParaSGATransform< EOT > Class Template Reference

Inheritance diagram for peoParaSGATransform< EOT >: +

+ +peoTransform< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

peoParaSGATransform (eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)
+void operator() (eoPop< EOT > &__pop)
+void packData ()
+void unpackData ()
+void execute ()
+void packResult ()
+void unpackResult ()
+void notifySendingData ()
+void notifySendingAllResourceRequests ()

Private Attributes

+eoQuadOp< EOT > & cross
+double cross_rate
+eoMonOp< EOT > & mut
+double mut_rate
+unsigned idx
+eoPop< EOT > * pop
+EOT father
+EOT mother
+unsigned num_term
+

Detailed Description

+

template<class EOT>
+ class peoParaSGATransform< EOT >

+ + +

+ +

+Definition at line 36 of file peoParaSGATransform.h.


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform.png b/trunk/paradiseo-peo/docs/html/classpeo_para_s_g_a_transform.png new file mode 100644 index 0000000000000000000000000000000000000000..95dfd12320a08b7c12fcda4fc50c179adbc8c4dd GIT binary patch literal 850 zcmV-Y1FigtP)QO#n1p?*+m^; z&4M@qvN^b9!3?m;f-rN@)VSIJN(`zj+7^RZ7I9x`b`fWh0(f!04&KS4m6adL9RUZ6 z0nPvze%mtq#_MbVtDF8l;QCo)00S7n00uCC0Ss_k01TFgA7EuA&H$$a0QlxCt)Lml z**06+DWjaBJ&p&<08hH6AJaL{c!9KktrMU3R7x4(T+%{tQAb1X)3+;n6yO}Mp`|oP zZ$z|$dpIR+30^jiRqwaY?Bzd2d$XvPEo(gR=uJPJS@?ekg?g9<=*cqg0W zMH_vNL2UulfTY=JM4Y%vP@)PT10dU014MuCB4{kg2Ug(qe+s~B^j$XgQCw78Fb7N) z)G?R=G#)d6n*pX6R9RHTpw1$45eFNbUI(=WX^qb=;w(}?a~ + +ParadisEO: Member List + + + + +
+
+ +

peoPopEval< EOT > Member List

This is the complete list of members for peoPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)=0peoPopEval< EOT > [pure virtual]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_pop_eval.html b/trunk/paradiseo-peo/docs/html/classpeo_pop_eval.html new file mode 100644 index 000000000..2ac292508 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_pop_eval.html @@ -0,0 +1,69 @@ + + +ParadisEO: peoPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoPopEval< EOT > Class Template Reference

The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +More... +

+#include <peoPopEval.h> +

+

Inheritance diagram for peoPopEval< EOT >: +

+ +Service +Communicable +peoParaPopEval< EOT > +peoSeqPopEval< EOT > + +List of all members. + + + + + +

Public Member Functions

+virtual void operator() (eoPop< EOT > &__pop)=0
 Interface function providing the signature for constructing an evaluation functor.
+

Detailed Description

+

template<class EOT>
+ class peoPopEval< EOT >

+ +The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +

+The derived classes may be used as wrappers for EO-derived evaluation functors. In order to have an example, please refer to the implementation of the peoSeqPopEval and peoParaPopEval classes. +

+ +

+Definition at line 34 of file peoPopEval.h.


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_pop_eval.png b/trunk/paradiseo-peo/docs/html/classpeo_pop_eval.png new file mode 100644 index 0000000000000000000000000000000000000000..100bbb7708cfffb99c2337daff193b7a05ccf0b4 GIT binary patch literal 1211 zcmeAS@N?(olHy`uVBq!ia0y~yU~~eq53n!;$>yH&6F^ELz$e7@|Ns9$=Kuc(=Fd-< z0AzvjfddDs5B+}vEaktG3V{v+`QWcJZ-rmFY+gwPbh0l z+#S%!xbweYTA=(g5%WNYlR*Ld-U?imUq3HkQDC~(UY)JKe%ub)zxwyu>+QLksv(Ew zyJRq&-(|kBagA-8z<%Z#trvb+L?xGrxg_5eZ>na@{{Caxw}3-)4=YG;A2UAm&p0>b z?Z=km((+$o`>pN*6A7!CZUY;gD!l)@#QbSA03220882 zQ%>>Rsh)B1@2hX?e(#@rXKzn|wOM}6>q0i!!uq`UL#3q)Z!X>z_`mvc?#&hV&*uB4 zukrq7wod6z*zrx91D~(+jGmVKn(2Fs_VQOgJ5-z&bhN4k@MNm{dYbcB@?8Jjd12xN zD}Cne{o78@NNp~0Gdsoeu}ebld5d;;qGLrO&rh3}A2wfR9)7NP`l9pBcsS z%ii8L_4?u0#Xk@3i_(1f{dd;V{gx+yKKL6z*xT0)4nXEq*Q;@mi| zCHaBHn>inDoPTpO^2D!#R>g+kDJ_w6r6&97ZBvUE&hoKQNijP!&z0$N;X{r%-)4^9 zgI^d{1YBU6D5v}Q)xnnKPCv7>>#{!`UGu+3U~i($LDSfe()o!7bKd>scM5jX6p$0m zOsbs_u)NK-x82sNW7W+mEdc^fRqrO;cJ*!E_>AM2mF7bUtKAAFCph|}RO{GU%3nN7 zytDoNhpj$$y4@EoHsdf+$9u)jQQuRHgWc!+w?hbSziRtWA61|i`_fidAtv8mN+*3#vXMOoiMei`lij3op0P`8nOBKIJFe4-ITf7 zc3r!F@l3w1ojJ*RmtVe^ZzalR8prQnbkpwI;UKG-n*#scdolG^f>%Y}7o$Y$m+#GV r-%JU}yWY6r)3uF3>+kf2y|TBGw3FIaDzySw(lB_s`njxgN@xNAZqPj* literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval-members.html b/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval-members.html new file mode 100644 index 000000000..8c4dfa925 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval-members.html @@ -0,0 +1,63 @@ + + +ParadisEO: Member List + + + + +
+
+ +

peoSeqPopEval< EOT > Member List

This is the complete list of members for peoSeqPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
evalpeoSeqPopEval< EOT > [private]
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoSeqPopEval< EOT > [virtual]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
peoSeqPopEval(eoEvalFunc< EOT > &__eval)peoSeqPopEval< EOT >
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval.html b/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval.html new file mode 100644 index 000000000..fe2be33ff --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval.html @@ -0,0 +1,162 @@ + + +ParadisEO: peoSeqPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoSeqPopEval< EOT > Class Template Reference

The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor. +More... +

+#include <peoSeqPopEval.h> +

+

Inheritance diagram for peoSeqPopEval< EOT >: +

+ +peoPopEval< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + +

Public Member Functions

 peoSeqPopEval (eoEvalFunc< EOT > &__eval)
 Constructor function - it only sets an internal reference to point to the specified evaluation object.
void operator() (eoPop< EOT > &__pop)
 Operator for evaluating all the individuals of a given population - in a sequential iterative manner.

Private Attributes

+eoEvalFunc< EOT > & eval
+

Detailed Description

+

template<class EOT>
+ class peoSeqPopEval< EOT >

+ +The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor. +

+The specified EO evaluation object is applyied in an iterative manner to each individual of a specified population. +

+ +

+Definition at line 36 of file peoSeqPopEval.h.


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class EOT>
peoSeqPopEval< EOT >::peoSeqPopEval eoEvalFunc< EOT > &  __eval  ) 
+
+ + + + + +
+   + + +

+Constructor function - it only sets an internal reference to point to the specified evaluation object. +

+

Parameters:
+ + +
eoEvalFunc< EOT >& __eval - evaluation object to be applied for each individual of a specified population
+
+ +

+Definition at line 56 of file peoSeqPopEval.h.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class EOT>
void peoSeqPopEval< EOT >::operator() eoPop< EOT > &  __pop  )  [virtual]
+
+ + + + + +
+   + + +

+Operator for evaluating all the individuals of a given population - in a sequential iterative manner. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be evaluated.
+
+ +

+Implements peoPopEval< EOT >. +

+Definition at line 61 of file peoSeqPopEval.h. +

+References peoSeqPopEval< EOT >::eval.

+


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval.png b/trunk/paradiseo-peo/docs/html/classpeo_seq_pop_eval.png new file mode 100644 index 0000000000000000000000000000000000000000..df2001515c1532a88a54eed65d6bcf9ad0a58de4 GIT binary patch literal 776 zcmV+j1NZ!iP)nL9!;X98JcZAis%u2!F=lj12MiXWiI-hgIX3vEF8R zz>%rX0xJ0x3&*Bv{xr*rZ^8R`6rvBbAHGRQpq!{`j;>$ z)3}NSATk^iG|Osze97WGwk#;uH5o6yzbKEH6%&v!oJX9<x4h2&8_Du;5s-pJPdLA!ydK6Q5vlC!+K$u3lqmRAkm$ zd7K=^GS-o`a!p&g)_$C2{fSA~I+U@DWh`SE%UH&`&RY2_ch~3DFJ-CU=b;wGN#}v9 zN~Ec_m>jZHUjnsOSjD0*aVyJvEH6k%5$ipsavMckSU!vzA&ONy5V^R9j#tp}l3eI` zsXUJ3rSlka9{K)4d2J%u<@@Vd9z#E-nqU6~>-}M@S=P!mZRJ|~ahCNbCSmJP#xj<% zjAbli8S6R=){V_AbAC70TdW;ik)SH8Hti{E@q?zSS;un4df&DlphQoQ^3jl4DPD3|6EBrV6|b7d z9bC=hmh(vW7g3T{-CxH%ZpTq{=f4-XW-S`Vnq@6q)BXW=2mS6mK?9Be0000 + +ParadisEO: Member List + + + + +
+
+ +

peoSeqTransform< EOT > Member List

This is the complete list of members for peoSeqTransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()peoSeqTransform< EOT > [inline, virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoSeqTransform< EOT >
packData()peoSeqTransform< EOT > [inline, virtual]
packResourceRequest()Service
packResult()peoSeqTransform< EOT > [inline, virtual]
peoSeqTransform(eoTransform< EOT > &__trans)peoSeqTransform< EOT >
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
transpeoSeqTransform< EOT > [private]
unlock()Communicable
unpackData()peoSeqTransform< EOT > [inline, virtual]
unpackResult()peoSeqTransform< EOT > [inline, virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_seq_transform.html b/trunk/paradiseo-peo/docs/html/classpeo_seq_transform.html new file mode 100644 index 000000000..1bfbf63e7 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_seq_transform.html @@ -0,0 +1,180 @@ + + +ParadisEO: peoSeqTransform< EOT > Class Template Reference + + + + +
+
+ +

peoSeqTransform< EOT > Class Template Reference

The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. +More... +

+#include <peoSeqTransform.h> +

+

Inheritance diagram for peoSeqTransform< EOT >: +

+ +peoTransform< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSeqTransform (eoTransform< EOT > &__trans)
 Constructor function - sets an internal reference towards the specified EO-derived transform object.
void operator() (eoPop< EOT > &__pop)
 Operator for applying the specified transform operators on each individual of the given population.
+virtual void packData ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void unpackData ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void execute ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void packResult ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void unpackResult ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.

Private Attributes

+eoTransform< EOT > & trans
+

Detailed Description

+

template<class EOT>
+ class peoSeqTransform< EOT >

+ +The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. +

+A minimal set of interface functions is also provided for creating the link with the parallel architecture of the ParadisEO framework. +

+ +

+Definition at line 35 of file peoSeqTransform.h.


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class EOT>
peoSeqTransform< EOT >::peoSeqTransform eoTransform< EOT > &  __trans  ) 
+
+ + + + + +
+   + + +

+Constructor function - sets an internal reference towards the specified EO-derived transform object. +

+

Parameters:
+ + +
eoTransform< EOT >& __trans - EO-derived transform object including crossover and mutation operators.
+
+ +

+Definition at line 70 of file peoSeqTransform.h.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class EOT>
void peoSeqTransform< EOT >::operator() eoPop< EOT > &  __pop  ) 
+
+ + + + + +
+   + + +

+Operator for applying the specified transform operators on each individual of the given population. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be transformed by applying the crossover and mutation operators.
+
+ +

+Definition at line 75 of file peoSeqTransform.h. +

+References peoSeqTransform< EOT >::trans.

+


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_seq_transform.png b/trunk/paradiseo-peo/docs/html/classpeo_seq_transform.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a4c4196198d486638cecdd366a3c95781656c3 GIT binary patch literal 791 zcmV+y1L*vTP)006)Q0{{R3aTRq$0000OP)t-s|Ns90 z00960z@MLBkN^MxkN^Mxkifved&2+Z00001bW%=J06^y0W&i*Jtw}^dRA_{ zAPfLt^U`O;4McCyUTB|k|07fq|CnSQTiYZvBH1;@_7^~zajaqct6a7}QMLRw@TWk4 z<=G)`v8x{f@$UI2K{**h3;`n|?a~X8H`Is_YyBCJs0c`803nfZ_J{hjV5skGC8E@o zK!jXhM(zYS_VyTvZCK^qhIwWV<$DOBff%wSQO2jEe4!X<;3-i3HhQ#t9X|6#;IG@e zgSXq)n}hEkWdjW~&_DwXH1I!w>OVN&|2MXQQyJ0#4^uD4!0!?`XFz$hr)T)~Kz{{{ zkg^$L%Haw~BGy+)id+Iyeun2VBoLOli=$x5x5OU&CP;@s${ut1B=)zq1fRURQ%s0d5I(eMrtjB=a8F)|fB|-I@?tz(Xy( z{6{GzTL$JG;V@m(%BB%#v&{Io2G=220_|)vT z4iV5fa`?l1I)|%{Pjyb(c%Liuc2w%+KK;2p=y~JWaPo0f1p%cEct0KG77ub{4?+XC z3i6r7PQ%QHHdkLheQuh=zK76*6atrlTuq={)ut?MV3$P_r1Q0czhy{{fg0 VO|nVpTx9?N002ovPDHLkV1jNJX>tGn literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig-members.html b/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig-members.html new file mode 100644 index 000000000..e1f5e60bb --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig-members.html @@ -0,0 +1,68 @@ + + +ParadisEO: Member List + + + + +
+
+ +

peoSyncIslandMig< EOT > Member List

This is the complete list of members for peoSyncIslandMig< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoSyncIslandMig< EOT > [private]
coop_empeoSyncIslandMig< EOT > [private]
destinationpeoSyncIslandMig< EOT > [private]
empeoSyncIslandMig< EOT > [private]
emigrate()peoSyncIslandMig< EOT > [private]
getKey()Communicable
getOwner()Cooperative
immpeoSyncIslandMig< EOT > [private]
immigrate()peoSyncIslandMig< EOT > [private]
keyCommunicable [protected]
lock()Communicable
notifySending()peoSyncIslandMig< EOT > [virtual]
num_commCommunicable [protected, static]
operator()()peoSyncIslandMig< EOT >
pack()peoSyncIslandMig< EOT > [virtual]
peoSyncIslandMig(unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)peoSyncIslandMig< EOT >
replacepeoSyncIslandMig< EOT > [private]
resume()Communicable
selectpeoSyncIslandMig< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
sourcepeoSyncIslandMig< EOT > [private]
stop()Communicable
syncpeoSyncIslandMig< EOT > [private]
topologypeoSyncIslandMig< EOT > [private]
unlock()Communicable
unpack()peoSyncIslandMig< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig.html b/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig.html new file mode 100644 index 000000000..b95a74fd5 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig.html @@ -0,0 +1,325 @@ + + +ParadisEO: peoSyncIslandMig< EOT > Class Template Reference + + + + +
+
+ +

peoSyncIslandMig< EOT > Class Template Reference

The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. +More... +

+#include <peoSyncIslandMig.h> +

+

Inheritance diagram for peoSyncIslandMig< EOT >: +

+ +Cooperative +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSyncIslandMig (unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)
 Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
void operator() ()
 Function operator to be called as checkpoint for performing the migration step.
+void pack ()
 Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
+void unpack ()
 Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.
+void notifySending ()
 Auxiliary function dealing with migration notifications. There is no need to explicitly call the function.

Private Member Functions

+void emigrate ()
+void immigrate ()

Private Attributes

+eoPeriodicContinue< EOT > cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+Topologytopology
+eoPop< EOT > & source
+eoPop< EOT > & destination
+std::queue< eoPop< EOT > > imm
+std::queue< eoPop< EOT > > em
+std::queue< Cooperative * > coop_em
+sem_t sync
+

Detailed Description

+

template<class EOT>
+ class peoSyncIslandMig< EOT >

+ +The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. +

+frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals.

+The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:

+ + + + + + + + + + + + + +
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offspring
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+

+Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the Runner class (for example a peoEA object represents a possible owner). A simple example is offered bellow:

+

    +
  1. +topological model to be followed when performing migrations:
    +
    + + + +
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +

    +

  2. +
  3. +the continuation criterion, selection and replacement strategy etc. are defined:
    +
    + + + + + + + + + + + + + + + +
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoSyncIslandMig< EOT > syncMigration(
    +          MIG_FREQ, migSelect, migReplace, migTopology,
    +          population, population
    + );  
    // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +

    +

  4. +
  5. +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +
    + + + + + + + + + + + + + +
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( syncMigration );   // adding the migration operator as checkpoint element
    ...    
    +

    +

  6. +
  7. +definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +
    + + + + + + + +
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    syncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +
  8. +
+

+The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively.

+The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +

+ +

+Definition at line 129 of file peoSyncIslandMig.h.


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+template<class EOT>
peoSyncIslandMig< EOT >::peoSyncIslandMig unsigned  __frequency,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
Topology __topology,
eoPop< EOT > &  __source,
eoPop< EOT > &  __destination
+
+ + + + + +
+   + + +

+Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +

+

Parameters:
+ + + + + + + +
unsigned __frequency - frequency of the migrations - the migrations occur periodically;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
Topology& __topology - topological model to be followed when performing migrations;
eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
+
+ +

+Definition at line 193 of file peoSyncIslandMig.h. +

+References Topology::add(), and peoSyncIslandMig< EOT >::sync.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class EOT>
void peoSyncIslandMig< EOT >::operator()  ) 
+
+ + + + + +
+   + + +

+Function operator to be called as checkpoint for performing the migration step. +

+The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +

+Definition at line 267 of file peoSyncIslandMig.h. +

+References peoSyncIslandMig< EOT >::cont, peoSyncIslandMig< EOT >::emigrate(), Cooperative::getOwner(), peoSyncIslandMig< EOT >::immigrate(), Thread::setActive(), peoSyncIslandMig< EOT >::source, Communicable::stop(), and peoSyncIslandMig< EOT >::sync.

+


The documentation for this class was generated from the following file: +
Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
+ + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig.png b/trunk/paradiseo-peo/docs/html/classpeo_sync_island_mig.png new file mode 100644 index 0000000000000000000000000000000000000000..429ef28d339a919f8bda41900cc096168094c1f6 GIT binary patch literal 636 zcmV-?0)zdDP)8u0000OP)t-s|Ns90 z00960z@MLBkN^MxkN^Mxkifved&2+Z00001bW%=J06^y0W&i*J5=lfsRA_X$ zi$(t|6AzZOGHE{e$$Oj-!(;eEj7?A?OmqJtGtef$K=nXW4E(soqTj&ua}gX$jsB$j2|hE?3y$KBEph*mC{vmJm?PfBr{(MX)K@a!9`|5A z9$&X$-X-qJRHibOsZ3=m^FGWG-?Vr6o>%6MVCCQQYJTAa(^t|6hl!_SCIL~>4cs7x z8aXpmOENrXN;(C&nR6n(o(wt7l!g*PJ(&Pe1#EICmE_VjJ2~ToiCH5)jr+=pfLJmQ<-l}ybqb(R50Whzsd%2cK@mHEG! z&|REy-4CS9u}ll)v*juIG4`D;r-%7*4TZbHbf#FbWkRTSHnpZ)MoeqtX5p&x4xtu} zjRZ&fI4sPlb(v|`rZCf40x^TSNy8<=992O{sxS?~c<15NOaA%(TUZDR!=yg`L@-3ufU@C;m*@!k
    3(kGZkBT5r*$-CkGbBWvg#7^xtSK)cWe`7_GS)v7k>l& Wi&Zm~P{f!30000 + +ParadisEO: Member List + + + + +
    +
    + +

    peoSyncMultiStart< EOT > Member List

    This is the complete list of members for peoSyncMultiStart< EOT >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Communicable()Communicable
    contpeoSyncMultiStart< EOT > [private]
    execute()peoSyncMultiStart< EOT > [virtual]
    getKey()Communicable
    getOwner()Service
    idxpeoSyncMultiStart< EOT > [private]
    impr_selpeoSyncMultiStart< EOT > [private]
    keyCommunicable [protected]
    lock()Communicable
    lspeoSyncMultiStart< EOT > [private]
    notifySendingAllResourceRequests()peoSyncMultiStart< EOT > [virtual]
    notifySendingData()peoSyncMultiStart< EOT > [virtual]
    notifySendingResourceRequest()Service [virtual]
    num_commCommunicable [protected, static]
    num_termpeoSyncMultiStart< EOT > [private]
    operator()()peoSyncMultiStart< EOT >
    packData()peoSyncMultiStart< EOT > [virtual]
    packResourceRequest()Service
    packResult()peoSyncMultiStart< EOT > [virtual]
    peoSyncMultiStart(eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop)peoSyncMultiStart< EOT >
    poppeoSyncMultiStart< EOT > [private]
    replacepeoSyncMultiStart< EOT > [private]
    requestResourceRequest(unsigned __how_many=1)Service
    resume()Communicable
    selpeoSyncMultiStart< EOT > [private]
    selectpeoSyncMultiStart< EOT > [private]
    sem_lockCommunicable [protected]
    sem_stopCommunicable [protected]
    setOwner(Thread &__owner)Service
    solpeoSyncMultiStart< EOT > [private]
    stop()Communicable
    unlock()Communicable
    unpackData()peoSyncMultiStart< EOT > [virtual]
    unpackResult()peoSyncMultiStart< EOT > [virtual]
    ~Communicable()Communicable [virtual]


    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start.html b/trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start.html new file mode 100644 index 000000000..c0b8a2851 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start.html @@ -0,0 +1,503 @@ + + +ParadisEO: peoSyncMultiStart< EOT > Class Template Reference + + + + +
    +
    + +

    peoSyncMultiStart< EOT > Class Template Reference

    The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. +More... +

    +#include <peoSyncMultiStart.h> +

    +

    Inheritance diagram for peoSyncMultiStart< EOT >: +

    + +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Member Functions

     peoSyncMultiStart (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop)
     Constructor function - several simple parameters are required for defining the characteristics of the multi-start model.
    void operator() ()
     Operator which synchronously executes the specified algorithm on the individuals selected from the initial population.
    void packData ()
     Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
    void unpackData ()
     Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
    void execute ()
     Auxiliary function for actually executing the specified algorithm on one assigned individual.
    void packResult ()
     Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
    void unpackResult ()
     Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
    void notifySendingData ()
     Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase.
    void notifySendingAllResourceRequests ()
     Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase.

    Private Attributes

    +eoContinue< EOT > & cont
    +eoSelect< EOT > & select
    +eoReplacement< EOT > & replace
    +moAlgo< EOT > & ls
    +eoPop< EOT > & pop
    +eoPop< EOT > sel
    +eoPop< EOT > impr_sel
    +EOT sol
    +unsigned idx
    +unsigned num_term
    +

    Detailed Description

    +

    template<class EOT>
    + class peoSyncMultiStart< EOT >

    + +The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. +

    +As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A peoSyncMultiStart object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. +

    + +

    +Definition at line 51 of file peoSyncMultiStart.h.


    Constructor & Destructor Documentation

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +template<class EOT>
    peoSyncMultiStart< EOT >::peoSyncMultiStart eoContinue< EOT > &  __cont,
    eoSelect< EOT > &  __select,
    eoReplacement< EOT > &  __replace,
    moAlgo< EOT > &  __ls,
    eoPop< EOT > &  __pop
    +
    + + + + + +
    +   + + +

    +Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. +

    +

    Parameters:
    + + + + + + +
    eoContinue< EOT >& __cont - defined for including further functionality - no semantics associated at this time;
    eoSelect< EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm;
    eoReplacement< EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population;
    moAlgo< EOT >& __ls - algorithm to be applied on each of the selected individuals - a moAlgo< EOT >-derived object must be specified;
    eoPop< EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm.
    +
    + +

    +Definition at line 121 of file peoSyncMultiStart.h.

    +


    Member Function Documentation

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::operator()  ) 
    +
    + + + + + +
    +   + + +

    +Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. +

    +There is no need to explicitly call the operator - automatically called as checkpoint operator. +

    +Definition at line 176 of file peoSyncMultiStart.h. +

    +References peoSyncMultiStart< EOT >::idx, peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, Service::requestResourceRequest(), peoSyncMultiStart< EOT >::sel, peoSyncMultiStart< EOT >::select, and Communicable::stop().

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::packData  )  [virtual]
    +
    + + + + + +
    +   + + +

    +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

    +There is no need to explicitly call the function. +

    +Reimplemented from Service. +

    +Definition at line 135 of file peoSyncMultiStart.h. +

    +References peoSyncMultiStart< EOT >::idx, and peoSyncMultiStart< EOT >::sel.

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::unpackData  )  [virtual]
    +
    + + + + + +
    +   + + +

    +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

    +There is no need to explicitly call the function. +

    +Reimplemented from Service. +

    +Definition at line 141 of file peoSyncMultiStart.h. +

    +References peoSyncMultiStart< EOT >::sol.

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::execute  )  [virtual]
    +
    + + + + + +
    +   + + +

    +Auxiliary function for actually executing the specified algorithm on one assigned individual. +

    +There is no need to explicitly call the function. +

    +Reimplemented from Service. +

    +Definition at line 147 of file peoSyncMultiStart.h. +

    +References peoSyncMultiStart< EOT >::ls, and peoSyncMultiStart< EOT >::sol.

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::packResult  )  [virtual]
    +
    + + + + + +
    +   + + +

    +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

    +There is no need to explicitly call the function. +

    +Reimplemented from Service. +

    +Definition at line 153 of file peoSyncMultiStart.h. +

    +References peoSyncMultiStart< EOT >::sol.

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::unpackResult  )  [virtual]
    +
    + + + + + +
    +   + + +

    +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

    +There is no need to explicitly call the function. +

    +Reimplemented from Service. +

    +Definition at line 159 of file peoSyncMultiStart.h. +

    +References Service::getOwner(), peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, peoSyncMultiStart< EOT >::replace, Communicable::resume(), peoSyncMultiStart< EOT >::sel, Thread::setActive(), and peoSyncMultiStart< EOT >::sol.

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::notifySendingData  )  [virtual]
    +
    + + + + + +
    +   + + +

    +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +

    +There is no need to explicitly call the function. +

    +Reimplemented from Service. +

    +Definition at line 187 of file peoSyncMultiStart.h.

    +

    + + + + +
    + + + + + + + + + + + +
    +template<class EOT>
    void peoSyncMultiStart< EOT >::notifySendingAllResourceRequests  )  [virtual]
    +
    + + + + + +
    +   + + +

    +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +

    +There is no need to explicitly call the function. +

    +Reimplemented from Service. +

    +Definition at line 192 of file peoSyncMultiStart.h. +

    +References Service::getOwner(), and Thread::setPassive().

    +


    The documentation for this class was generated from the following file: +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start.png b/trunk/paradiseo-peo/docs/html/classpeo_sync_multi_start.png new file mode 100644 index 0000000000000000000000000000000000000000..0818b68a6a229052572b5b81cfb97bbab02facce GIT binary patch literal 607 zcmV-l0-*hgP) + +ParadisEO: Member List + + + + +
    +
    + +

    peoTransform< EOT > Member List

    This is the complete list of members for peoTransform< EOT >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + +
    Communicable()Communicable
    execute()Service [virtual]
    getKey()Communicable
    getOwner()Service
    keyCommunicable [protected]
    lock()Communicable
    notifySendingAllResourceRequests()Service [virtual]
    notifySendingData()Service [virtual]
    notifySendingResourceRequest()Service [virtual]
    num_commCommunicable [protected, static]
    packData()Service [virtual]
    packResourceRequest()Service
    packResult()Service [virtual]
    requestResourceRequest(unsigned __how_many=1)Service
    resume()Communicable
    sem_lockCommunicable [protected]
    sem_stopCommunicable [protected]
    setOwner(Thread &__owner)Service
    stop()Communicable
    unlock()Communicable
    unpackData()Service [virtual]
    unpackResult()Service [virtual]
    ~Communicable()Communicable [virtual]


    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_transform.html b/trunk/paradiseo-peo/docs/html/classpeo_transform.html new file mode 100644 index 000000000..b1663b15f --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/classpeo_transform.html @@ -0,0 +1,62 @@ + + +ParadisEO: peoTransform< EOT > Class Template Reference + + + + +
    +
    + +

    peoTransform< EOT > Class Template Reference

    The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes. +More... +

    +#include <peoTransform.h> +

    +

    Inheritance diagram for peoTransform< EOT >: +

    + +Service +Communicable +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + +
    +

    Detailed Description

    +

    template<class EOT>
    + class peoTransform< EOT >

    + +The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes. +

    + +

    +Definition at line 35 of file peoTransform.h.


    The documentation for this class was generated from the following file: +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/classpeo_transform.png b/trunk/paradiseo-peo/docs/html/classpeo_transform.png new file mode 100644 index 0000000000000000000000000000000000000000..72482d92913dc0131ef43cf6f9446531c4f99d4e GIT binary patch literal 1199 zcmeAS@N?(olHy`uVBq!ia0y~yVC(|253n!;$rn#7=K?8-0G|-o|Ns93ng9PEm_I*Z z0+0p92M!#lKJ@(yi9>XuD z(BDqlp{IV^JDn{s+^525{=m>m{Vwk|&UXEnpi1}2i5l1X?MuI|-s7$QWspQ({|Fo9&)@p3>PdQ`bw^3(a(!14ROL#MnJAO8t z?{n(=f{1^W3{Uk|{|*+|X(XG^2o&h=PT;z?_?n1F`o-L9to3m>Y_$T;c;8|EAh$Gc zqkFB>0tQx~bzOcMyLLUVKwKog|M=C|9}T}2yhtf+cItCb zbYCz*IpBn##uE;aA{H)7rdF9ogz!Y4F1vqRmruqY0eT={&XNe$Yx}tEM7=-iZTO}q zA`_84#mnhxp8G=4cE`L!Z13F?4Ie4D72NAPv|~qP>f)`ktb2K?L_8ll1^IeS^wjTf zQch3qdHXkQ3jZ2j5%ar?&vA=@U3-z!RlK~&OZD@*sFgsMDG6=m@3K=0{7tkYC%($c zat_>C8}Ni%#FEK%UtGYOG6}0yN%bH7%I}8kl!sJ=YJ=>4jx ztN6S0z&=+71%h9gIa0)UE~(gZp**+i6`QZmDrpnLm3bGAEZOBKJed@Mf>TROo}ajX z=vS^!-F08_&yzJ*&2CUS%^-49%{FMw{?&Jv&3R(8`PMY^mrUPZYMi__zurW5r&fHR zj%JR(*}tBosi9%J*DU*%IltkPLjPi}^`85*{))OLm96_I+ImgvNg7Y4)YM1%F8psR zxz_INTbspgw)^p#8*99GzuY@7aLt(*uINkZ((%DMKa-um`Fz?h+ge;GdN}-Yww?9- zz$LL}x7G^E2J58RwXV(m81p#0OZE2h+4Hsb9INN7U6P=*E~}(QE-R+e43N4 zEQ)en5ZwD-m=a&L&vTK3W8#z`<>#B_ORAh6o;?#}bN$D`h?eChhu1Iv zQ0eP@xTfYqS#ED!Piy3|^_?O|d+p=JrMdRInTb>-Z}GXCB3-##FX>*C)y*HXl6L2A zV9fkqIkE3(jC-r&^V}oSGYv|An$D~a@ksRkmGXGDWT-#8an}0(Zy7X_1C=GB$fmP>!J3+kDh%=xJp4=i06JYD@<);T3K0RV~I7+?SZ literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/comm_8cpp-source.html b/trunk/paradiseo-peo/docs/html/comm_8cpp-source.html new file mode 100644 index 000000000..95188578c --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/comm_8cpp-source.html @@ -0,0 +1,111 @@ + + +ParadisEO: comm.cpp Source File + + + + +
    +
    +

    comm.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "comm.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 
    +00025 #include <mpi.h>
    +00026 
    +00027 #include "comm.h"
    +00028 #include "mess.h"
    +00029 #include "node.h"
    +00030 #include "param.h"
    +00031 #include "../../core/peo_debug.h"
    +00032 #include "../../core/runner.h"
    +00033 #include "send.h"
    +00034 #include "recv.h"
    +00035 #include "scheduler.h"
    +00036 
    +00037 static sem_t sem_comm_init;
    +00038 
    +00039 static Communicator * the_thread;
    +00040 
    +00041 Communicator :: Communicator (int * __argc, char * * * __argv) {
    +00042 
    +00043   the_thread = this;  
    +00044   initNode  (__argc, __argv);
    +00045   loadRMCParameters (* __argc, * __argv);  
    +00046   sem_post (& sem_comm_init);
    +00047 }
    +00048 
    +00049 void Communicator :: start () {
    +00050 
    +00051   while (true) {
    +00052     
    +00053     /* Zzz Zzz Zzz :-))) */
    +00054     sleep ();
    +00055     sendMessages ();
    +00056 
    +00057     if (! atLeastOneActiveRunner ())     
    +00058       break;
    +00059     receiveMessages ();    
    +00060   }
    +00061   waitBuffers ();  
    +00062   printDebugMessage ("finalizing");
    +00063   MPI_Finalize ();  
    +00064 }
    +00065 
    +00066 void initCommunication () {
    +00067 
    +00068   sem_init (& sem_comm_init, 0, 0);
    +00069 }
    +00070 
    +00071 void waitNodeInitialization () {
    +00072 
    +00073   sem_wait (& sem_comm_init);
    +00074 }
    +00075 
    +00076 void wakeUpCommunicator () {
    +00077 
    +00078   the_thread -> wakeUp ();
    +00079 }
    +00080 
    +00081 
    +00082 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/comm_8h-source.html b/trunk/paradiseo-peo/docs/html/comm_8h-source.html new file mode 100644 index 000000000..495845432 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/comm_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO: comm.h Source File + + + + +
    +
    +

    comm.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "comm.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __comm_mpi_h
    +00025 #define __comm_mpi_h
    +00026 
    +00027 #include "../../core/communicable.h"
    +00028 #include "../../core/reac_thread.h"
    +00029 
    +00030 class Communicator : public ReactiveThread {
    +00031 
    +00032 public :
    +00033   
    +00034   /* Ctor */
    +00035   Communicator (int * __argc, char * * * __argv);
    +00036 
    +00037   void start ();
    +00038 };
    +00039 
    +00040 extern void initCommunication ();
    +00041 
    +00042 extern void waitNodeInitialization ();
    +00043 
    +00044 extern void wakeUpCommunicator ();
    +00045 
    +00046 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/communicable_8cpp-source.html b/trunk/paradiseo-peo/docs/html/communicable_8cpp-source.html new file mode 100644 index 000000000..60f503cb7 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/communicable_8cpp-source.html @@ -0,0 +1,114 @@ + + +ParadisEO: communicable.cpp Source File + + + + +
    +
    +

    communicable.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "comm.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <vector>
    +00025 #include <map>
    +00026 #include <cassert>
    +00027 
    +00028 #include "communicable.h"
    +00029 
    +00030 static std :: vector <Communicable *> key_to_comm (1); /* Vector of registered cooperators */
    +00031 
    +00032 static std :: map <const Communicable *, unsigned> comm_to_key; /* Map of registered cooperators */
    +00033 
    +00034 unsigned Communicable :: num_comm = 0;
    +00035 
    +00036 Communicable :: Communicable () {
    +00037 
    +00038   comm_to_key [this] = key = ++ num_comm;
    +00039   key_to_comm.push_back (this);
    +00040   sem_init (& sem_lock, 0, 1);
    +00041   sem_init (& sem_stop, 0, 0);
    +00042 }
    +00043 
    +00044 Communicable :: ~ Communicable () {
    +00045 
    +00046 }
    +00047 
    +00048 COMM_ID Communicable :: getKey () {
    +00049 
    +00050   return key;
    +00051 }
    +00052 
    +00053 Communicable * getCommunicable (COMM_ID __key) {
    +00054 
    +00055   assert (__key < key_to_comm.size ());
    +00056   return key_to_comm [__key];  
    +00057 }
    +00058 
    +00059 COMM_ID getKey (const Communicable * __comm) {
    +00060   
    +00061   return comm_to_key [__comm];
    +00062 }
    +00063 
    +00064 void Communicable :: lock () {
    +00065 
    +00066   sem_wait (& sem_lock);
    +00067 }
    +00068 
    +00069 void Communicable :: unlock () {
    +00070 
    +00071   sem_post (& sem_lock);
    +00072 }
    +00073 
    +00074 void Communicable :: stop () {
    +00075 
    +00076   sem_wait (& sem_stop);
    +00077 }
    +00078 
    +00079 void Communicable :: resume () {
    +00080 
    +00081   sem_post (& sem_stop);
    +00082 }
    +00083 
    +00084 
    +00085 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/communicable_8h-source.html b/trunk/paradiseo-peo/docs/html/communicable_8h-source.html new file mode 100644 index 000000000..6e2182857 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/communicable_8h-source.html @@ -0,0 +1,91 @@ + + +ParadisEO: communicable.h Source File + + + + +
    +
    +

    communicable.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "communicable.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __communicable_h
    +00025 #define __communicable_h
    +00026 
    +00027 #include <semaphore.h>
    +00028 
    +00029 typedef unsigned COMM_ID;
    +00030 
    +00031 class Communicable {
    +00032 
    +00033 public :
    +00034 
    +00035   Communicable ();
    +00036   
    +00037   virtual ~ Communicable ();
    +00038 
    +00039   COMM_ID getKey ();  
    +00040 
    +00041   void lock (); /* It suspends the current process if the semaphore is locked */
    +00042   void unlock (); /* It unlocks the shared semaphore */
    +00043 
    +00044   void stop (); /* It suspends the current process */
    +00045   void resume (); /* It resumes ___________ */
    +00046   
    +00047 protected :
    +00048 
    +00049   COMM_ID key;
    +00050 
    +00051   sem_t sem_lock;
    +00052   
    +00053   sem_t sem_stop;
    +00054 
    +00055   static unsigned num_comm;
    +00056 };
    +00057 
    +00058 extern Communicable * getCommunicable (COMM_ID __key); 
    +00059 
    +00060 //extern COMM_ID getKey (const Communicable * __comm);
    +00061 
    +00062 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/config_8h-source.html b/trunk/paradiseo-peo/docs/html/config_8h-source.html new file mode 100644 index 000000000..6740c621a --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/config_8h-source.html @@ -0,0 +1,99 @@ + + +ParadisEO: config.h Source File + + + + +
    +
    +

    config.h

    00001 /* config.h.  Generated by configure.  */
    +00002 /* config.h.in.  Generated from configure.in by autoheader.  */
    +00003 /* #undef ENABLE_NLS */
    +00004 /* #undef HAVE_CATGETS */
    +00005 /* #undef HAVE_GETTEXT */
    +00006 /* #undef HAVE_LC_MESSAGES */
    +00007 /* #undef HAVE_STPCPY */
    +00008 /* #undef HAVE_LIBSM */
    +00009 /* #undef PACKAGE_LOCALE_DIR */
    +00010 #define PACKAGE_DOC_DIR "/usr/local/doc/paradisEO"
    +00011 #define PACKAGE_DATA_DIR "/usr/local/share"
    +00012 #define PACKAGE_PIXMAPS_DIR "/usr/local/share/pixmaps"
    +00013 #define PACKAGE_HELP_DIR "/usr/local/share/help"
    +00014 #define PACKAGE_MENU_DIR "/usr/local/share"
    +00015 #define PACKAGE_SOURCE_DIR "/home/cahon/paradisEO"
    +00016 /* #undef GETTEXT_PACKAGE */
    +00017 
    +00018 /* Define to 1 if you have the <dlfcn.h> header file. */
    +00019 #define HAVE_DLFCN_H 1
    +00020 
    +00021 /* Define to 1 if you have the <inttypes.h> header file. */
    +00022 #define HAVE_INTTYPES_H 1
    +00023 
    +00024 /* Define to 1 if you have the <memory.h> header file. */
    +00025 #define HAVE_MEMORY_H 1
    +00026 
    +00027 /* Define to 1 if you have the <stdint.h> header file. */
    +00028 #define HAVE_STDINT_H 1
    +00029 
    +00030 /* Define to 1 if you have the <stdlib.h> header file. */
    +00031 #define HAVE_STDLIB_H 1
    +00032 
    +00033 /* Define to 1 if you have the <strings.h> header file. */
    +00034 #define HAVE_STRINGS_H 1
    +00035 
    +00036 /* Define to 1 if you have the <string.h> header file. */
    +00037 #define HAVE_STRING_H 1
    +00038 
    +00039 /* Define to 1 if you have the <sys/stat.h> header file. */
    +00040 #define HAVE_SYS_STAT_H 1
    +00041 
    +00042 /* Define to 1 if you have the <sys/types.h> header file. */
    +00043 #define HAVE_SYS_TYPES_H 1
    +00044 
    +00045 /* Define to 1 if you have the <unistd.h> header file. */
    +00046 #define HAVE_UNISTD_H 1
    +00047 
    +00048 /* Name of package */
    +00049 #define PACKAGE "paradisEO"
    +00050 
    +00051 /* Define to the address where bug reports for this package should be sent. */
    +00052 #define PACKAGE_BUGREPORT ""
    +00053 
    +00054 /* Define to the full name of this package. */
    +00055 #define PACKAGE_NAME ""
    +00056 
    +00057 /* Define to the full name and version of this package. */
    +00058 #define PACKAGE_STRING ""
    +00059 
    +00060 /* Define to the one symbol short name of this package. */
    +00061 #define PACKAGE_TARNAME ""
    +00062 
    +00063 /* Define to the version of this package. */
    +00064 #define PACKAGE_VERSION ""
    +00065 
    +00066 /* Define to 1 if you have the ANSI C header files. */
    +00067 #define STDC_HEADERS 1
    +00068 
    +00069 /* Version number of package */
    +00070 #define VERSION "0.3"
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/coop_8cpp-source.html b/trunk/paradiseo-peo/docs/html/coop_8cpp-source.html new file mode 100644 index 000000000..4d789bf37 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/coop_8cpp-source.html @@ -0,0 +1,86 @@ + + +ParadisEO: coop.cpp Source File + + + + +
    +
    +

    coop.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "coop.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "../../core/cooperative.h"
    +00025 #include "send.h"
    +00026 #include "tags.h"
    +00027 #include "schema.h"
    +00028 #include "mess.h"
    +00029 #include "../../core/peo_debug.h"
    +00030 
    +00031 Runner * Cooperative :: getOwner () {
    +00032 
    +00033   return owner;
    +00034 }
    +00035 
    +00036 void Cooperative :: setOwner (Runner & __runner) {
    +00037 
    +00038   owner = & __runner;
    +00039 }
    +00040 
    +00041 void Cooperative :: send (Cooperative * __coop) {
    +00042 
    +00043   :: send (this, getRankOfRunner (__coop -> getOwner () -> getID ()), COOP_TAG);   
    +00044   //  stop ();
    +00045 }
    +00046 
    +00047 Cooperative * getCooperative (COOP_ID __key) {
    +00048 
    +00049   return dynamic_cast <Cooperative *> (getCommunicable (__key));
    +00050 }
    +00051 
    +00052 void Cooperative :: notifySending () {
    +00053 
    +00054   //getOwner -> setPassive ();
    +00055   //  resume ();
    +00056   //  printDebugMessage (b);
    +00057 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/cooperative_8h-source.html b/trunk/paradiseo-peo/docs/html/cooperative_8h-source.html new file mode 100644 index 000000000..05700105e --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/cooperative_8h-source.html @@ -0,0 +1,85 @@ + + +ParadisEO: cooperative.h Source File + + + + +
    +
    +

    cooperative.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "cooperative.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __cooperative_h
    +00025 #define __cooperative_h
    +00026 
    +00027 #include "communicable.h"
    +00028 #include "runner.h"
    +00029 
    +00030 typedef unsigned COOP_ID;
    +00031 
    +00032 class Cooperative : public Communicable {
    +00033 
    +00034 public :
    +00035 
    +00036   Runner * getOwner ();
    +00037 
    +00038   void setOwner (Runner & __runner);
    +00039 
    +00040   virtual void pack () = 0;
    +00041   
    +00042   virtual void unpack () = 0;
    +00043 
    +00044   void send (Cooperative * __coop); 
    +00045 
    +00046   virtual void notifySending ();
    +00047 
    +00048 private :
    +00049 
    +00050   Runner * owner;
    +00051 
    +00052 };
    +00053 
    +00054 extern Cooperative * getCooperative (COOP_ID __key); 
    +00055 
    +00056 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/core_2runner_8cpp-source.html b/trunk/paradiseo-peo/docs/html/core_2runner_8cpp-source.html new file mode 100644 index 000000000..18e8df48e --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/core_2runner_8cpp-source.html @@ -0,0 +1,148 @@ + + +ParadisEO: runner.cpp Source File + + + + +
    +
    +

    runner.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "runner.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <vector>
    +00025 
    +00026 #include "runner.h"
    +00027 #include "reac_thread.h"
    +00028 #include "peo_debug.h"
    +00029 #include "messaging.h"
    +00030 
    +00031 static unsigned num_act = 0; /* Number of active runners */
    +00032 
    +00033 static std :: vector <pthread_t *> ll_threads; /* Low-level runner threads */ 
    +00034 
    +00035 static std :: vector <Runner *> the_runners;
    +00036 
    +00037 static unsigned num_runners = 0;
    +00038 
    +00039 Runner :: Runner () {
    +00040 
    +00041   id = ++ num_runners;
    +00042   the_runners.push_back (this);
    +00043   sem_init (& sem_start, 0, 0);
    +00044   num_act ++;  
    +00045 }
    +00046 
    +00047 extern int getNodeRank ();
    +00048 
    +00049 extern int getNumberOfNodes ();
    +00050 
    +00051 void unpackTerminationOfRunner () {
    +00052   
    +00053   RUNNER_ID id;
    +00054   unpack (id);    
    +00055   num_act --;
    +00056   printDebugMessage ("I'm noticed of the termination of a runner");
    +00057   if (! num_act) {
    +00058     printDebugMessage ("all the runners have terminated. Now stopping the reactive threads.");
    +00059     stopReactiveThreads ();
    +00060   }
    +00061 }
    +00062 
    +00063 bool atLeastOneActiveRunner () {
    +00064 
    +00065   return num_act;
    +00066 }
    +00067 
    +00068 RUNNER_ID Runner :: getID () {
    +00069 
    +00070   return id;
    +00071 }
    +00072 
    +00073 void Runner :: start () {
    +00074 
    +00075   setActive ();
    +00076   sem_post (& sem_start);
    +00077   run ();
    +00078   terminate ();
    +00079 }
    +00080 
    +00081 void Runner :: notifySendingTermination () {
    +00082 
    +00083   /*
    +00084   char b [1000];
    +00085   sprintf (b, "Il reste encore %d !!!!!!!!!!!!", n);
    +00086   printDebugMessage (b);
    +00087   */
    +00088   printDebugMessage ("je suis informe que tout le monde a recu ma terminaison");
    +00089   setPassive ();
    +00090   
    +00091 }
    +00092 
    +00093 void Runner :: waitStarting () {
    +00094 
    +00095   sem_wait (& sem_start);
    +00096 }
    +00097 
    +00098 Runner * getRunner (RUNNER_ID __key) {
    +00099 
    +00100   return dynamic_cast <Runner *> (getCommunicable (__key));
    +00101 }
    +00102 
    +00103 void startRunners () {
    +00104   
    +00105   /* Runners */
    +00106   for (unsigned i = 0; i < the_runners.size (); i ++)
    +00107     if (the_runners [i] -> isLocal ()) {
    +00108       addThread (the_runners [i], ll_threads);
    +00109       the_runners [i] -> waitStarting ();
    +00110     }
    +00111   printDebugMessage ("launched the parallel runners");
    +00112 }
    +00113 
    +00114 
    +00115 void joinRunners () {
    +00116 
    +00117 
    +00118   joinThreads (ll_threads);
    +00119 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/core_2service_8cpp-source.html b/trunk/paradiseo-peo/docs/html/core_2service_8cpp-source.html new file mode 100644 index 000000000..5ddd9d5a6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/core_2service_8cpp-source.html @@ -0,0 +1,102 @@ + + +ParadisEO: service.cpp Source File + + + + +
    +
    +

    service.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "service.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "service.h"
    +00025 
    +00026 void Service :: setOwner (Thread & __owner) {
    +00027 
    +00028   owner = & __owner;
    +00029 }
    +00030   
    +00031 Thread * Service :: getOwner () {
    +00032 
    +00033   return owner;
    +00034 }
    +00035 
    +00036 Service * getService (SERVICE_ID __key) {
    +00037 
    +00038   return dynamic_cast <Service *> (getCommunicable (__key));
    +00039 }
    +00040 
    +00041 void Service :: notifySendingData () {
    +00042 
    +00043 }
    +00044 void Service :: notifySendingResourceRequest () {
    +00045 
    +00046   num_sent_rr --;
    +00047   if (! num_sent_rr)
    +00048     notifySendingAllResourceRequests ();
    +00049 }
    +00050 
    +00051 void Service :: notifySendingAllResourceRequests () {
    +00052 
    +00053 }
    +00054 
    +00055 void Service :: packData () {
    +00056 
    +00057 }
    +00058 
    +00059 void Service :: unpackData () {
    +00060 
    +00061 }
    +00062 
    +00063 void Service :: execute () {
    +00064 
    +00065 }
    +00066   
    +00067 void Service :: packResult () {
    +00068 
    +00069 }
    +00070 
    +00071 void Service :: unpackResult () {
    +00072 
    +00073 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/doxygen.css b/trunk/paradiseo-peo/docs/html/doxygen.css new file mode 100644 index 000000000..05615b2e6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/doxygen.css @@ -0,0 +1,310 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + diff --git a/trunk/paradiseo-peo/docs/html/doxygen.png b/trunk/paradiseo-peo/docs/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 GIT binary patch literal 1281 zcmaJ>ZA?>F7(Vx-ms?uoS`b@hdRtpo6o^%HU>M$hfGrBvQnk$LE?p^P!kn&ikhyq! zX~V@&tPF5Qt@V?oTL96Bi%aRiwbe1)9DWQI#?)=HxS7QSw`J`5fAJ*eJbB;uNuKA& zdERDo*{Y<(If(#(B$Lr#;nB(8Y#ia=ZCeW?JfPLuQY`=@cW$k}Rivq|vbxGrRq1Tl9;+(gNt?}UtVKM2`T5t1jLzuL@0UIs`S#vlhl4)^ zLgSYrPj@$+`|j?eSbXTmiHGkWxV8V}BzNR?pl9k_s4pDu9vd5a_UzZEPk)}Ad{AV_ zzddrjrh4=Imr`E06;LY{)YYt?o}L~H@7C}F^WB!Ra=v`Q0bj{>5&$66CWF>mf6vjP z2N>RRY6ZYa=K`76>+|_)Xdwko+7wv}7cN|btOhWb(*{sta~6b?S8Omrxw}!4`NhGr zZVpNqpu1@BE`QGWNTpEpcJVW5izu~2B^GlM?1(OPg)zwW;QcP@Ltcclm>XbJL9C|j z=9!2?ua=uIlf0%AndzHsRC}IyTL$EhAee(fdKB`?27KeS^2M8M_7b~PiCFO&r5LC7 z7gl1*a<8;SjNaw#h=843_AV9iZbWQOAp5YOC^&_F*9K0> zB|6%IDb?aM#3viTxkLU4aXg&@+CkNTOnQ1iMP*^?b|^lJy$4C)Zk4isV!|RZ*XhXh zw8q3$=*0LeGC!XI_Wc?dkT~3+*Gu%%yIqP+Wr3H$=&ROMQU6q}Ag^P~>c5vAEO;a- z_dK-3PPeKar%)6$j~vI2#*-YH!1h6HYVtwCX5_wM`iF#UKz&&@9Oo5w3%XGYrX zW>dY~)SG-((Yim%`InwgTvyRC?e=Wh^8KCao!R6Eg&TpVWUY1sN~4G}V?nFnEGo-; zHZ_$eW9-GnC%^WS9b z@p;-$oH#MtC0v>Q$HX%4^JdFdO$0cbv-W)Q TtK}Eh@>>I#ipmV1>S*>q-hkC} literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/eo_pop__comm_8h-source.html b/trunk/paradiseo-peo/docs/html/eo_pop__comm_8h-source.html new file mode 100644 index 000000000..b441aada4 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/eo_pop__comm_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO: eoPop_comm.h Source File + + + + +
    +
    +

    eoPop_comm.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "eoPop_comm.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __eoPop_comm_h
    +00025 #define __eoPop_comm_h
    +00026 
    +00027 #include <eoPop.h>
    +00028 
    +00029 #include "messaging.h"
    +00030 
    +00031 template <class EOT> void pack (const eoPop <EOT> & __pop) {
    +00032 
    +00033   pack ((unsigned) __pop.size ());
    +00034   for (unsigned i = 0; i < __pop.size (); i ++)
    +00035     pack (__pop [i]);
    +00036 }
    +00037 
    +00038 template <class EOT> void unpack (eoPop <EOT> & __pop) {
    +00039 
    +00040   unsigned n;
    +00041   
    +00042   unpack (n);
    +00043   __pop.resize (n);
    +00044   for (unsigned i = 0; i < n; i ++)
    +00045     unpack (__pop [i]);
    +00046 }
    +00047 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/eo_vector__comm_8h-source.html b/trunk/paradiseo-peo/docs/html/eo_vector__comm_8h-source.html new file mode 100644 index 000000000..a2a924e2d --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/eo_vector__comm_8h-source.html @@ -0,0 +1,82 @@ + + +ParadisEO: eoVector_comm.h Source File + + + + +
    +
    +

    eoVector_comm.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "eoVector_comm.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __eoVector_comm_h
    +00025 #define __eoVector_comm_h
    +00026 
    +00027 #include <eoVector.h>
    +00028 
    +00029 #include "messaging.h"
    +00030 
    +00031 template <class F, class T> void pack (const eoVector <F, T> & __v) {
    +00032 
    +00033   pack (__v.fitness ()) ;
    +00034   unsigned len = __v.size ();
    +00035   pack (len);
    +00036   for (unsigned i = 0 ; i < len; i ++)
    +00037     pack (__v [i]);  
    +00038 }
    +00039 
    +00040 template <class F, class T> void unpack (eoVector <F, T> & __v) {
    +00041 
    +00042   F fit; 
    +00043   unpack (fit);
    +00044   __v.fitness (fit);
    +00045 
    +00046   unsigned len;
    +00047   unpack (len);
    +00048   __v.resize (len);
    +00049   for (unsigned i = 0 ; i < len; i ++)
    +00050     unpack (__v [i]);
    +00051 }
    +00052 
    +00053 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/files.html b/trunk/paradiseo-peo/docs/html/files.html new file mode 100644 index 000000000..5ddc4393f --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/files.html @@ -0,0 +1,102 @@ + + +ParadisEO: File Index + + + + +
    +
    +

    ParadisEO File List

    Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    acconfig.h [code]
    comm.cpp [code]
    comm.h [code]
    communicable.cpp [code]
    communicable.h [code]
    config.h [code]
    coop.cpp [code]
    cooperative.h [code]
    eoPop_comm.h [code]
    eoVector_comm.h [code]
    mess.cpp [code]
    mess.h [code]
    messaging.h [code]
    NEWS [code]
    node.cpp [code]
    node.h [code]
    paradiseo.h [code]
    param.cpp [code]
    param.h [code]
    peo_debug.cpp [code]
    peo_debug.h [code]
    peo_fin.cpp [code]
    peo_fin.h [code]
    peo_init.cpp [code]
    peo_init.h [code]
    peo_param.cpp [code]
    peo_param.h [code]
    peo_run.cpp [code]
    peo_run.h [code]
    peoAggEvalFunc.h [code]
    peoAsyncIslandMig.h [code]
    peoEA.h [code]
    peoNoAggEvalFunc.h [code]
    peoParaPopEval.h [code]
    peoParaSGATransform.h [code]
    peoPopEval.h [code]
    peoSeqPopEval.h [code]
    peoSeqTransform.h [code]
    peoSyncIslandMig.h [code]
    peoSyncMultiStart.h [code]
    peoTransform.h [code]
    reac_thread.cpp [code]
    reac_thread.h [code]
    README [code]
    recv.cpp [code]
    recv.h [code]
    ring_topo.cpp [code]
    ring_topo.h [code]
    rmc.cpp [code]
    rmc.h [code]
    core/runner.cpp [code]
    rmc/mpi/runner.cpp [code]
    runner.h [code]
    scheduler.cpp [code]
    scheduler.h [code]
    schema.cpp [code]
    schema.h [code]
    send.cpp [code]
    send.h [code]
    core/service.cpp [code]
    rmc/mpi/service.cpp [code]
    service.h [code]
    tags.h [code]
    thread.cpp [code]
    thread.h [code]
    topology.cpp [code]
    topology.h [code]
    worker.cpp [code]
    worker.h [code]
    xml_parser.cpp [code]
    xml_parser.h [code]
    +
    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/ftv2blank.png b/trunk/paradiseo-peo/docs/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..493c3c0b615ade5b22027bde773faf2c0e076d66 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr2qYM%T@!Q%(o7{me!&ckj8p!u14)&*MwA5S zr6z#mEsk^N1FBF3sc_EE%}vcKVF=AhO-xa6_jFST&P^;T z2~I3aEm8;rVk12R#UIz>f`J-DJY5_^DsClP9B62eH+WF*G=YJMp~A-KbWwke5Kx}M M)78&qol`;+0EL(^EC2ui literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2doc.png b/trunk/paradiseo-peo/docs/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..f72999f92172cca6edaa2538286b3e369bec9f49 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^5yjnX4egh%q=bp-`Pe zR7&bp17l3gfhmh7Fm(iZ2eAfco|q!h5)>qKG?UBh!IC9QGMbJAHf6IEiufk_g|d7~ qkWqJ4k(|I-Aeo-5U~n{Fnc?dN!3Uwu?t6hQVDNPHb6Mw<&;$TLIZ`G7 literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2folderclosed.png b/trunk/paradiseo-peo/docs/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d063440cbf13c4128dacd96661b6fce58abf26 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^55uo^`BphW;jCHO69?}tw{JfcdnZ<*@N=4I z?xF5Qc|QYEmKAIZ;JRGVHe=bn*tx1_|J^^vyg*oVM#A1kZlFULJYD@<);T3K0RTgB BWg7qh literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2folderopen.png b/trunk/paradiseo-peo/docs/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe2c913cf493ee37ad8e3a5132382138d93ac92 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^5u(C zYP)Mg%H-DB+{J~>rPn_#pYTax?r*V6ubqGX{lvROQ{?n5_cbm+cQAOm`njxgN@xNA D92;js literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2lastnode.png b/trunk/paradiseo-peo/docs/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b9ba90cb0cf71c8ce662956bfee7d64cf60fa6 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6UZ?L@CkAK|NlRbNhD}!Xpp$P zU;Pg)ksC(lf|p%(p+w2Gk+!>EaktaVt4N i!r*{E4>QXNV>t$uAA#a^n)TVt_DW*G8-srQl%FeIsRSdYm zeDdtWec}u&7@8h5rqv#p7g*pRdwwmugmlS-+cHV~j}#7`Nwj9m+AU)JGGo`8z_}`K z?s#Xsy%Z;1_jl5Y+?Gum8WyK6`MBvup0SAOKJ)mWcHyteJ?WLL>>-)=?&<$H&t5oH Vd!azZ1yDdSc)I$ztaD0e0sw}(dc*(# literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2mlastnode.png b/trunk/paradiseo-peo/docs/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..09ceb6adb01054ce799ad20c0e818ab9272f2df2 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr#LU3Jc=+&fg$isFPOjJ*AaIJQGm()YSDb0rfjgNefXW#>UHx3vIVCg! E0ORy6RsaA1 literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2mnode.png b/trunk/paradiseo-peo/docs/html/ftv2mnode.png new file mode 100644 index 0000000000000000000000000000000000000000..3254c05112199fbc80aad313611c58a5b388792d GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6Ub2s@Ck7}aNq!ti3c<^Gz9OH zn+a6GSQ6wH%;50sMjDVKR^l2_5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&YcgaLd(;| zF{I*Fa>4?=2W(CyOv{5p*uLi}G<-ambjQcb>&~4!CzK3KXWY6d$*{eWU47N}X+XCz OFnGH9xvXPg)ksC(lf|p%(p+w2Gk+y>EaktaVt4N l!r*{E4>Lv;t literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2plastnode.png b/trunk/paradiseo-peo/docs/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..0b07e00913d8069ebbb51bd7fd6d70d8bba88f75 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr#LU3Jc=+&MJ literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2pnode.png b/trunk/paradiseo-peo/docs/html/ftv2pnode.png new file mode 100644 index 0000000000000000000000000000000000000000..2001b797ba2b98a4127f1d3efca64aef08bf6d51 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6Ub2s@Ck7}aNq!ti3c<^Gz9OH zn+a6GSQ6wH%;50sMjDVKR^l2_5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Ycga!obtT zF{I*Fa>4?=2W(Dkd1@Anj~<0|oqBMOmqox%*rjK-r)THv+0v0L%h-agt(X~hWwYzA SIxU|Ma*U^|pUXO@geCywmoZiV literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/ftv2vertline.png b/trunk/paradiseo-peo/docs/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..b330f3a33c0085c183ff39fc56b1b274160c1da0 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6UZ?L@CkAK|NlRbNhD}!Xpp$P zU;Pg)ksC(lf|p%(p+w2Gqgt>EaktaVt4N e!r*{^G#i7W2*a|cHZQDzQVgE1elF{r5}E+)J2fZ( literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/functions.html b/trunk/paradiseo-peo/docs/html/functions.html new file mode 100644 index 000000000..916da3d6b --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/functions.html @@ -0,0 +1,225 @@ + + +ParadisEO: Class Members + + + + +
    +
    + +
    + +
    +
    + +
    + +

    +Here is a list of all documented class members with links to the class documentation for each member: +

    +

    - a -

    +

    - c -

    +

    - d -

    +

    - e -

    +

    - f -

    +

    - g -

    +

    - i -

    +

    - k -

    +

    - l -

    +

    - m -

    +

    - n -

    +

    - o -

    +

    - p -

    +

    - r -

    +

    - s -

    +

    - t -

    +

    - u -

    +

    - w -

    +

    - ~ -

    +
    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/functions_func.html b/trunk/paradiseo-peo/docs/html/functions_func.html new file mode 100644 index 000000000..97880a759 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/functions_func.html @@ -0,0 +1,155 @@ + + +ParadisEO: Class Members - Functions + + + + +
    +
    + +
    + +
    +
    + +
    + +

    +  +

    +

    - a -

    +

    - c -

    +

    - e -

    +

    - g -

    +

    - i -

    +

    - l -

    +

    - n -

    +

    - o -

    +

    - p -

    +

    - r -

    +

    - s -

    +

    - t -

    +

    - u -

    +

    - w -

    +

    - ~ -

    +
    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/functions_vars.html b/trunk/paradiseo-peo/docs/html/functions_vars.html new file mode 100644 index 000000000..66d893c55 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/functions_vars.html @@ -0,0 +1,154 @@ + + +ParadisEO: Class Members - Variables + + + + +
    +
    + +
    + +
    +
    + +
    + +

    +  +

    +

    - a -

    +

    - c -

    +

    - d -

    +

    - e -

    +

    - f -

    +

    - i -

    +

    - k -

    +

    - l -

    +

    - m -

    +

    - n -

    +

    - o -

    +

    - p -

    +

    - r -

    +

    - s -

    +

    - t -

    +
    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/hierarchy.html b/trunk/paradiseo-peo/docs/html/hierarchy.html new file mode 100644 index 000000000..9ee7b1bf6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/hierarchy.html @@ -0,0 +1,84 @@ + + +ParadisEO: Hierarchical Index + + + + +
    +
    + +

    ParadisEO Class Hierarchy

    This inheritance list is sorted roughly, but not completely, alphabetically: +
    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/index.html b/trunk/paradiseo-peo/docs/html/index.html new file mode 100644 index 000000000..bdab4e483 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/index.html @@ -0,0 +1,8 @@ + + +ParadisEO + + + + + diff --git a/trunk/paradiseo-peo/docs/html/installdox b/trunk/paradiseo-peo/docs/html/installdox new file mode 100755 index 000000000..9b89fe025 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/trunk/paradiseo-peo/docs/html/main.html b/trunk/paradiseo-peo/docs/html/main.html new file mode 100644 index 000000000..90f781adf --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/main.html @@ -0,0 +1,100 @@ + + +ParadisEO: The ParadisEO-PEO Framework + + + + +
    +
    +

    The ParadisEO-PEO Framework

    +

    +

    +Introduction

    +ParadisEO-PEO is a white-box object-oriented framework dedicated to the reusable design of parallel and distributed metaheuristics (PDM). ParadisEO-PEO provides a broad range of features including evolutionary algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO-PEO is based on a clear conceptual separation of the solution methods from the problems they are intended to solve. This separation confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO-PEO is one of the rare frameworks that provide the most common parallel and distributed models. Their implementation is portable on distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated provided classes. Their experimentation on the radio network design real-world application demonstrate their efficiency.

    +In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local search methods (LS). These two families have complementary characteristics: EA allow a better exploration of the search space, while LS have the power to intensify the search in promising regions. Their hybridization allows to deliver robust and better solutions

    +Although serial metaheuristics have a polynomial temporal complexity, they remain unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way to deal with the performance issue of these problems. Numerous parallel and distributed metaheuristics (PDM) and their implementations have been proposed, and are available on theWeb. They can be reused and adapted to his/her own problems. However, the user has to deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, takes along time and makes harder the produced code maintenance. A better way to reuse the code of existing PDM is the reuse through libraries. These are often more reliable as they are more tested and documented. They allow a better maintainability and efficiency. However, libraries do not allow the reuse of design.

    +Parallel and distributed metaheuristics

    +

    +Parallel distributed evolutionary algorithms

    +Evolutionary Algorithms (EA) are based on the iterative improvement of a population of solutions. At each step, individuals are selected, paired and recombined in order to generate new solutions that replace other ones, and so on. As the algorithm converges, the population is mainly composed of individuals well adapted to the "environment", for instance the problem. The main features that characterize EA are the way the population is initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions, the replacement strategy that discards individuals, and the continuation/stopping criterion to decide whether the evolution should go on or not.

    +Basically, three major parallel and distributed models for EA can been distinguished: the island (a)synchronous cooperative model, the parallel evaluation of the population, and the distributed evaluation of a single solution.

      +
    • +Island (a)synchronous cooperative model. Different EA are simultaneously deployed to cooperate for computing better and robust solutions. They exchange in an asynchronous way genetic stuff to diversify the search. The objective is to allow to delay the global convergence, especially when theEAare heterogeneous regarding the variation operators. The migration of individuals follows a policy defined by few parameters: the migration decision criterion, the exchange topology, the number of emigrants, the emigrants selection policy, and the replacement/integration policy.

      +

    • +
    • +Parallel evaluation of the population. It is required as it is in general the most timeconsuming. The parallel evaluation follows the centralized model. The farmer applies the following operations: selection, transformation and replacement as they require a global management of the population. At each generation, it distributes the set of new solutions between differentworkers. These evaluate and return back the solutions and their quality values. An efficient execution is often obtained particularly when the evaluation of each solution is costly. The two main advantages of an asynchronous model over the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the robustness in case the fitness computation can take very different computation times (e.g. for nonlinear numerical optimization). Whereas some time-out detection can be used to address the former issue, the latter one can be partially overcome if the grain is set to very small values, as individuals will be sent out for evaluations upon request of the workers.

      +

    • +
    • +Distributed evaluation of a single solution. The quality of each solution is evaluated in a parallel centralized way. That model is particularly interesting when the evaluation function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In that case, the function can be viewed as an aggregation of a certain number of partial functions. The partial functions could also be identical if for example the problem to deal with is a data mining one. The evaluation is thus data parallel and the accesses to data base are performed in parallel. Furthermore, a reduction operation is performed on the results returned by the partial functions. As a summary, for this model the user has to indicate a set of partial functions and an aggregation operator of these.
    • +
    +

    +Parallel distributed local searches

    +

    +Local searches

    +All metaheuristics dedicated to the improvement of a single solution are based on the concept of neighborhood. They start from a solution randomly generated or obtained from another optimization algorithm, and update it, step by step, by replacing the current solution by one of its neighboring candidates. Some criterion have been identified to differentiate such searches: the heuristic internal memory, the choice of the initial solution, the candidate solutions generator, and the selection strategy of candidate moves. Three main algorithms of local search stand out: Hill Climbing (HC), Simulated Annealing (SA) and Tabu Search (TS).

    +Parallel local searches

    +Two parallel distributed models are commonly used in the literature: the parallel distributed exploration of neighboring candidate solutions model, and the multi-start model.
      +
    • +Parallel exploration of neighboring candidates. It is a low-level Farmer-Worker model that does not alter the behavior of the heuristic. A sequential search computes the same results slower.At the beginning of each iteration, the farmer duplicates the current solution between distributed nodes. Each one manages some candidates and the results are returned to the farmer. The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as the number of neighboring solutions to process before finding one that improves the current objective function may be highly variable.

      +

    • +
    • +Multi-start model. It consists in simultaneously launching several local searches. They may be heterogeneous, but no information is exchanged between them. The resultswould be identical as if the algorithms were sequentially run.Very often deterministic algorithms differ by the supplied initial solution and/or some other parameters. This trivial model is convenient for low-speed networks of workstations.
    • +
    +

    +Hybridization

    +Recently, hybrid metaheuristics have gained a considerable interest. For many practical or academic optimization problems, the best found solutions are obtained by hybrid algorithms. Combinations of different metaheuristics have provided very powerful search methods. Two levels and two modes of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes. The low-level hybridization addresses the functional composition of a single optimization method. A function of a given metaheuristic is replaced by another metaheuristic. On the contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, meaning no direct relationship to their internal working is considered. On the other hand, relay hybridization means a set of metaheuristics is applied in a pipeline way. The output of a metaheuristic (except the last) is the input of the following one (except the first). Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic performs a search in a solution space, and exchange solutions with others.

    +Paradiseo goals and architecture

    +The "EO" part of ParadisEO-PEO means Evolving Objects. EO is a C++ LGPL open source framework and includes a paradigm-free Evolutionary Computation library (EOlib) dedicated to the flexible design of EA through evolving objects superseding the most common dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and Genetic Programming). Furthermore, EO integrates several services including visualization facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO-PEO is an extended version of the EO framework. The extensions include local search methods, hybridization mechanisms, parallelism and distribution mechanisms, and other features that are not addressed in this paper such as multi-objective optimization and grid computing. In the next sections, we present the motivations and goals of ParadisEO-PEO, its architecture and some of its main implementation details and issues.

    +Motivations and goals

    +A framework is normally intended to be exploited by as many users as possible. Therefore, its exploitation could be successful only if some important user criteria are satisfied. The following criteria are the major of them and constitute the main objectives of the ParadisEO-PEO framework:

    +

      +
    • +Maximum design and code reuse. The framework must provide for the user a whole architecture design of his/her solution method. Moreover, the programmer may redo as little code as possible. This objective requires a clear and maximal conceptual separation between the solution methods and the problems to be solved, and thus a deep domain analysis. The user might therefore develop only the minimal problem-specific code.

      +

    • +
    • +Flexibility and adaptability. It must be possible for the user to easily add new features/ metaheuristics or change existing ones without implicating other components. Furthermore, as in practice existing problems evolve and new others arise these have to be tackled by specializing/adapting the framework components.

      +

    • +
    • +Utility. The framework must allow the user to cover a broad range of metaheuristics, problems, parallel distributed models, hybridization mechanisms, etc.

      +

    • +
    • +Transparent and easy access to performance and robustness. As the optimization applications are often time-consuming the performance issue is crucial. Parallelism and distribution are two important ways to achieve high performance execution. In order to facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee the reliability and the quality of the results. The hybridization mechanism allows to obtain robust and better solutions.

      +

    • +
    • +Portability. In order to satisfy a large number of users the framework must support different material architectures and their associated operating systems.
    • +
    +

    +ParadisEO-PEO architecture

    +The architecture of ParadisEO-PEO is multi-layer and modular allowing to achieve the objectives quoted above. This allows particularly a high flexibility and adaptability, an easier hybridization, and more code and design reuse. The architecture has three layers identifying three major categories of classes: Solvers, Runners and Helpers.
      +
    • +Helpers. Helpers are low-level classes that perform specific actions related to the evolution or search process. They are split in two categories: Evolutionary helpers (EH) and Local search helpers (LSH). EH include mainly the transformation, selection and replacement operations, the evaluation function and the stopping criterion. LSH can be generic such as the neighborhood explorer class, or specific to the local search metaheuristic like the tabu list manager class in the Tabu Search solution method. On the other hand, there are some special helpers dedicated to the management of parallel and distributed models 2 and 3, such as the communicators that embody the communication services.

      +Helpers cooperate between them and interact with the components of the upper layer i.e. the runners. The runners invoke the helpers through function parameters. Indeed, helpers have not their own data, but they work on the internal data of the runners.

      +

    • +
    • +Runners. The Runners layer contains a set of classes that implement the metaheuristics themselves. They perform the run of the metaheuristics from the initial state or population to the final one. One can distinguish the Evolutionary runners (ER) such as genetic algorithms, evolution strategies, etc., and Local search runners (LSR) like tabu search, simulated annealing and hill climbing. Runners invoke the helpers to perform specific actions on their data. For instance, an ER may ask the fitness function evaluation helper to evaluate its population. An LSR asks the movement helper to perform a given movement on the current state. Furthermore, runners can be serial or parallel distributed.

      +

    • +
    • +Solvers. Solvers are devoted to control the evolution process and/or the search. They generate the initial state (solution or population) and define the strategy for combining and sequencing different metaheuristics. Two types of solvers can be distinguished. Single metaheuristic solvers (SMS) and Multiple metaheuristics solvers (MMS). SMSs are dedicated to the execution of only one metaheuristic.MMS are more complex as they control and sequence several metaheuristics that can be heterogeneous. Solvers interact with the user by getting the input data and delivering the output (best solution, statistics, etc).
    • +
    +

    +According to the generality of their embedded features, the classes of the architecture split in two major categories: Provided classes and Required classes. Provided classes embody the factored out part of the metaheuristics. They are generic, implemented in the framework, and ensure the control at run time. Required classes are those that must be supplied by the user. They encapsulate the problem-specific aspects of the application. These classes are fixed but not implemented in ParadisEO-PEO. The programmer has the burden to develop them using the OO specialization mechanism.


    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/mess_8cpp-source.html b/trunk/paradiseo-peo/docs/html/mess_8cpp-source.html new file mode 100644 index 000000000..49f5613e8 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/mess_8cpp-source.html @@ -0,0 +1,281 @@ + + +ParadisEO: mess.cpp Source File + + + + +
    +
    +

    mess.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "mess.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <mpi.h>
    +00025 #include <vector>
    +00026 
    +00027 #include "mess.h"
    +00028 #include "../../core/peo_debug.h"
    +00029 #include "node.h"
    +00030 
    +00031 #define MPI_BUF_SIZE 1024*64
    +00032         
    +00033 static char mpi_buf [MPI_BUF_SIZE];
    +00034         
    +00035 static int pos_buf ;
    +00036 
    +00037 static std :: vector <char *> act_buf; /* Active buffers */
    +00038 
    +00039 static std :: vector <MPI_Request *> act_req; /* Active requests */
    +00040 
    +00041 void cleanBuffers () {
    +00042 
    +00043   for (unsigned i = 0; i < act_req.size ();) {
    +00044        
    +00045     MPI_Status stat ;
    +00046     int flag ;
    +00047     MPI_Test (act_req [i], & flag, & stat) ;
    +00048     if (flag) {
    +00049       
    +00050       delete act_buf [i] ;
    +00051       delete act_req [i] ;
    +00052         
    +00053       act_buf [i] = act_buf.back () ;
    +00054       act_buf.pop_back () ;
    +00055       
    +00056       act_req [i] = act_req.back () ;
    +00057       act_req.pop_back () ;
    +00058     }
    +00059     else
    +00060       i ++;
    +00061   } 
    +00062 }
    +00063 
    +00064 void waitBuffers () {
    +00065 
    +00066   printDebugMessage ("waiting the termination of the asynchronous operations to complete");
    +00067 
    +00068   for (unsigned i = 0; i < act_req.size (); i ++) {
    +00069        
    +00070     MPI_Status stat ;
    +00071 
    +00072     MPI_Wait (act_req [i], & stat) ;
    +00073       
    +00074     delete act_buf [i] ;
    +00075     delete act_req [i] ;
    +00076   } 
    +00077 }
    +00078 
    +00079 bool probeMessage (int & __src, int & __tag) {
    +00080 
    +00081   int flag;
    +00082 
    +00083   MPI_Status stat;
    +00084 
    +00085   MPI_Iprobe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & flag, & stat);
    +00086 
    +00087   __src = stat.MPI_SOURCE;
    +00088   __tag = stat.MPI_TAG;
    +00089 
    +00090   return flag;
    +00091 }
    +00092 
    +00093 void waitMessage () {
    +00094 
    +00095   MPI_Status stat;  
    +00096 
    +00097   MPI_Probe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & stat);
    +00098 }
    +00099 
    +00100 void initMessage () {
    +00101   
    +00102   pos_buf = 0;
    +00103 }
    +00104 
    +00105 void sendMessage (int __to, int __tag) {
    +00106 
    +00107   cleanBuffers ();  
    +00108   act_buf.push_back (new char [pos_buf]);
    +00109   act_req.push_back (new MPI_Request);  
    +00110   memcpy (act_buf.back (), mpi_buf, pos_buf);  
    +00111   MPI_Isend (act_buf.back (), pos_buf, MPI_PACKED, __to, __tag, MPI_COMM_WORLD, act_req.back ()); 
    +00112 }
    +00113 
    +00114 void sendMessageToAll (int __tag) {
    +00115 
    +00116   for (int i = 0; i < getNumberOfNodes (); i ++)
    +00117     sendMessage (i, __tag);
    +00118 }
    +00119 
    +00120 void receiveMessage (int __from, int __tag) {
    +00121   
    +00122   MPI_Status stat;  
    +00123   MPI_Request req;
    +00124 
    +00125   MPI_Irecv (mpi_buf, MPI_BUF_SIZE, MPI_PACKED, __from, __tag, MPI_COMM_WORLD, & req) ;
    +00126   MPI_Wait (& req, & stat) ;
    +00127 }
    +00128 
    +00129 /* Char */
    +00130 void pack (const char & __c) {
    +00131 
    +00132   MPI_Pack ((void *) & __c, 1, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00133 }
    +00134 
    +00135 /* Float */
    +00136 void pack (const float & __f, int __nitem) {
    +00137 
    +00138   MPI_Pack ((void *) & __f, __nitem, MPI_FLOAT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00139 }
    +00140 
    +00141 /* Double */
    +00142 void pack (const double & __d, int __nitem) {
    +00143 
    +00144   MPI_Pack ((void *) & __d, __nitem, MPI_DOUBLE, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00145 }
    +00146 
    +00147 /* Integer */
    +00148 void pack (const int & __i, int __nitem) {
    +00149 
    +00150   MPI_Pack ((void *) & __i, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00151 }
    +00152 
    +00153 /* Unsigned int. */
    +00154 void pack (const unsigned int & __ui, int __nitem) {
    +00155 
    +00156   MPI_Pack ((void *) & __ui, __nitem, MPI_UNSIGNED, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00157 }
    +00158 
    +00159 /* Short int. */
    +00160 void pack (const short & __sh, int __nitem) {
    +00161 
    +00162   MPI_Pack ((void *) & __sh, __nitem, MPI_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00163 }
    +00164 
    +00165 /* Unsigned short */
    +00166 void pack (const unsigned short & __ush, int __nitem) {
    +00167 
    +00168   MPI_Pack ((void *) & __ush, __nitem, MPI_UNSIGNED_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00169 }
    +00170 
    +00171 /* Long */
    +00172 void pack (const long & __l, int __nitem) {
    +00173 
    +00174   MPI_Pack ((void *) & __l, __nitem, MPI_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00175 }
    +00176 
    +00177 /* Unsigned long */
    +00178 void pack (const unsigned long & __ul, int __nitem) {
    +00179 
    +00180   MPI_Pack ((void *) & __ul, __nitem, MPI_UNSIGNED_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00181 }
    +00182 
    +00183 /* String */
    +00184 void pack (const char * __str) {
    +00185   
    +00186   int len = strlen (__str) + 1;
    +00187   MPI_Pack (& len, 1, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00188   MPI_Pack ((void *) __str, len, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
    +00189 }
    +00190 
    +00191 /* Char */
    +00192 void unpack (char & __c) {
    +00193 
    +00194   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __c, 1, MPI_CHAR, MPI_COMM_WORLD);
    +00195 }
    +00196 
    +00197 /* Float */
    +00198 void unpack (float & __f, int __nitem) {
    +00199 
    +00200   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __f, __nitem, MPI_FLOAT, MPI_COMM_WORLD);
    +00201 }
    +00202 
    +00203 /* Double */
    +00204 void unpack (double & __d, int __nitem) {
    +00205 
    +00206   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __d, __nitem, MPI_DOUBLE, MPI_COMM_WORLD);
    +00207 }
    +00208 
    +00209 /* Integer */
    +00210 void unpack (int & __i, int __nitem) {
    +00211 
    +00212   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __i, __nitem, MPI_INT, MPI_COMM_WORLD);
    +00213 }
    +00214 
    +00215 /* Unsigned int. */
    +00216 void unpack (unsigned int & __ui, int __nitem) {
    +00217 
    +00218   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ui, __nitem, MPI_UNSIGNED, MPI_COMM_WORLD);
    +00219 }
    +00220 
    +00221 /* Short int. */
    +00222 void unpack (short & __sh, int __nitem) {
    +00223 
    +00224   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __sh, __nitem, MPI_SHORT, MPI_COMM_WORLD);
    +00225 }
    +00226 
    +00227 /* Unsigned short */
    +00228 void unpack (unsigned short & __ush, int __nitem) {
    +00229 
    +00230   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ush, __nitem, MPI_UNSIGNED_SHORT, MPI_COMM_WORLD);
    +00231 }
    +00232 
    +00233 /* Long */
    +00234 void unpack (long & __l, int __nitem) {
    +00235 
    +00236   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __l, __nitem, MPI_LONG, MPI_COMM_WORLD);
    +00237 }
    +00238 
    +00239 /* Unsigned long */
    +00240 void unpack (unsigned long & __ul, int __nitem) {
    +00241 
    +00242   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ul, __nitem, MPI_UNSIGNED_LONG, MPI_COMM_WORLD);
    +00243 }
    +00244 
    +00245 /* String */
    +00246 void unpack (char * __str) {
    +00247 
    +00248   int len;
    +00249   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD);
    +00250   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, __str, len, MPI_CHAR, MPI_COMM_WORLD);    
    +00251 }
    +00252 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/mess_8h-source.html b/trunk/paradiseo-peo/docs/html/mess_8h-source.html new file mode 100644 index 000000000..ef54c7f40 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/mess_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO: mess.h Source File + + + + +
    +
    +

    mess.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "mess.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __mess_rmc_h
    +00025 #define __mess_rmc_h
    +00026 
    +00027 #include "../../core/messaging.h"
    +00028 
    +00029 extern void initMessage ();
    +00030 
    +00031 extern void sendMessage (int __to, int __tag);
    +00032 
    +00033 extern void sendMessageToAll (int __tag);
    +00034 
    +00035 extern void receiveMessage (int __from, int __tag);
    +00036 
    +00037 extern void cleanBuffers ();
    +00038 
    +00039 extern void waitBuffers ();
    +00040 
    +00041 extern bool probeMessage (int & __src, int & __tag);
    +00042 
    +00043 extern void waitMessage ();
    +00044 
    +00045 #endif
    +00046 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/messaging_8h-source.html b/trunk/paradiseo-peo/docs/html/messaging_8h-source.html new file mode 100644 index 000000000..5509ed4a1 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/messaging_8h-source.html @@ -0,0 +1,148 @@ + + +ParadisEO: messaging.h Source File + + + + +
    +
    +

    messaging.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "messaging.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __mess_h
    +00025 #define __mess_h
    +00026 
    +00027 #include <utility>
    +00028 
    +00029 /* Char */
    +00030 extern void pack (const char & __c); 
    +00031 
    +00032 /* Float */
    +00033 extern void pack (const float & __f, int __nitem = 1); 
    +00034 
    +00035 /* Double */
    +00036 extern void pack (const double & __d, int __nitem = 1); 
    +00037 
    +00038 /* Integer */
    +00039 extern void pack (const int & __i, int __nitem = 1); 
    +00040 
    +00041 /* Unsigned int. */
    +00042 extern void pack (const unsigned int & __ui, int __nitem = 1); 
    +00043 
    +00044 /* Short int. */
    +00045 extern void pack (const short & __sh, int __nitem = 1); 
    +00046 
    +00047 /* Unsigned short */
    +00048 extern void pack (const unsigned short & __ush, int __nitem = 1);
    +00049 
    +00050 /* Long */
    +00051 extern void pack (const long & __l, int __nitem = 1); 
    +00052 
    +00053 /* Unsigned long */
    +00054 extern void pack (const unsigned long & __ul, int __nitem = 1); 
    +00055 
    +00056 /* String */
    +00057 extern void pack (const char * __str); 
    +00058 
    +00059 /* Pointer */
    +00060 template <class T> void pack (const T * __ptr) {
    +00061   
    +00062   pack ((unsigned long) __ptr); 
    +00063 }
    +00064 
    +00065 /* Pair */
    +00066 template <class U, class V> void pack (const std :: pair <U, V> & __pair) {
    +00067   
    +00068   pack (__pair.first);
    +00069   pack (__pair.second);
    +00070 }
    +00071 
    +00072 //
    +00073 
    +00074 /* Float */
    +00075 extern void unpack (char & __c); 
    +00076 
    +00077 /* Float */
    +00078 extern void unpack (float & __f, int __nitem = 1); 
    +00079 
    +00080 /* Double */
    +00081 extern void unpack (double & __d, int __nitem = 1); 
    +00082 
    +00083 /* Integer */
    +00084 extern void unpack (int & __i, int __nitem = 1); 
    +00085 
    +00086 /* Unsigned int. */
    +00087 extern void unpack (unsigned int & __ui, int __nitem = 1); 
    +00088 
    +00089 /* Short int. */
    +00090 extern void unpack (short & __sh, int __nitem = 1); 
    +00091 
    +00092 /* Unsigned short */
    +00093 extern void unpack (unsigned short & __ush, int __nitem = 1);
    +00094 
    +00095 /* Long */
    +00096 extern void unpack (long & __l, int __nitem = 1); 
    +00097 
    +00098 /* Unsigned long */
    +00099 extern void unpack (unsigned long & __ul, int __nitem = 1); 
    +00100 
    +00101 /* String */
    +00102 extern void unpack (char * __str); 
    +00103 
    +00104 /* Pointer */
    +00105 template <class T> void unpack (T * & __ptr) {
    +00106   
    +00107   unsigned long p;
    +00108   unpack (p);
    +00109   __ptr = (T *) p;
    +00110 }
    +00111 
    +00112 /* Pair */
    +00113 template <class U, class V> void unpack (std :: pair <U, V> & __pair) {
    +00114   
    +00115   unpack (__pair.first);
    +00116   unpack (__pair.second);
    +00117 }
    +00118 
    +00119 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/namespacemembers.html b/trunk/paradiseo-peo/docs/html/namespacemembers.html new file mode 100644 index 000000000..536b79a91 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/namespacemembers.html @@ -0,0 +1,51 @@ + + +ParadisEO: Class Members + + + + +
    +
    + +
    + +
    +Here is a list of all documented namespace members with links to the namespaces they belong to: +

    +

    +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/namespacemembers_func.html b/trunk/paradiseo-peo/docs/html/namespacemembers_func.html new file mode 100644 index 000000000..148df8726 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/namespacemembers_func.html @@ -0,0 +1,49 @@ + + +ParadisEO: Class Members + + + + +
    +
    + +
    + +
    +  +

    +

      +
    • finalize() +: peo
    • init() +: peo
    • loadParameters() +: peo
    • run() +: peo
    +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/namespacemembers_vars.html b/trunk/paradiseo-peo/docs/html/namespacemembers_vars.html new file mode 100644 index 000000000..ff246a2cd --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/namespacemembers_vars.html @@ -0,0 +1,47 @@ + + +ParadisEO: Class Members + + + + +
    +
    + +
    + +
    +  +

    +

    +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/namespacepeo.html b/trunk/paradiseo-peo/docs/html/namespacepeo.html new file mode 100644 index 000000000..aca6cf157 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/namespacepeo.html @@ -0,0 +1,65 @@ + + +ParadisEO: peo Namespace Reference + + + + +
    +
    + +

    peo Namespace Reference

    +

    + + + + + + + + + + + + + + + + + + + + +

    Functions

    +void finalize ()
    +void init (int &__argc, char **&__argv)
    +void loadParameters (int &__argc, char **&__argv)
    +void run ()

    Variables

    +int * argc
    +char *** argv
    +int * argc
    +char *** argv
    +


    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/namespaces.html b/trunk/paradiseo-peo/docs/html/namespaces.html new file mode 100644 index 000000000..93c44df0f --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/namespaces.html @@ -0,0 +1,37 @@ + + +ParadisEO: Namespace Index + + + + +
    +
    + +

    ParadisEO Namespace List

    Here is a list of all documented namespaces with brief descriptions: + +
    peo
    +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/node_8cpp-source.html b/trunk/paradiseo-peo/docs/html/node_8cpp-source.html new file mode 100644 index 000000000..b691030b8 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/node_8cpp-source.html @@ -0,0 +1,102 @@ + + +ParadisEO: node.cpp Source File + + + + +
    +
    +

    node.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "node.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <mpi.h>
    +00025 #include <vector>
    +00026 #include <map>
    +00027 #include <string>
    +00028 #include <cassert>
    +00029 
    +00030 static int rk, sz; /* Rank & size */
    +00031 
    +00032 static std :: map <std :: string, int> name_to_rk;
    +00033 
    +00034 static std :: vector <std :: string> rk_to_name;
    +00035 
    +00036 int getNodeRank () {
    +00037 
    +00038   return rk;
    +00039 }
    +00040 
    +00041 int getNumberOfNodes () {
    +00042 
    +00043   return sz;
    +00044 }
    +00045 
    +00046 int getRankFromName (const std :: string & __name) {
    +00047   
    +00048   return atoi (__name.c_str ());  
    +00049 }
    +00050 
    +00051 void initNode (int * __argc, char * * * __argv) {
    +00052   
    +00053   int provided;
    +00054   MPI_Init_thread (__argc,  __argv, MPI_THREAD_FUNNELED, & provided);  
    +00055   assert (provided == MPI_THREAD_FUNNELED); /* The MPI implementation must be multi-threaded.
    +00056                                                Yet, only one thread performs the comm.
    +00057                                                operations */
    +00058   MPI_Comm_rank (MPI_COMM_WORLD, & rk);   /* Who ? */
    +00059   MPI_Comm_size (MPI_COMM_WORLD, & sz);    /* How many ? */
    +00060 
    +00061   char names [sz] [MPI_MAX_PROCESSOR_NAME];
    +00062   int len;
    +00063 
    +00064   /* Processor names */ 
    +00065   MPI_Get_processor_name (names [0], & len);   /* Me */  
    +00066   MPI_Allgather (names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, MPI_COMM_WORLD); /* Broadcast */
    +00067   
    +00068   for (int i = 0; i < sz; i ++) {
    +00069     rk_to_name.push_back (names [i]);
    +00070     name_to_rk [names [i]] = i;
    +00071   }
    +00072 }
    +00073 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/node_8h-source.html b/trunk/paradiseo-peo/docs/html/node_8h-source.html new file mode 100644 index 000000000..47b732e74 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/node_8h-source.html @@ -0,0 +1,68 @@ + + +ParadisEO: node.h Source File + + + + +
    +
    +

    node.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "node.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __node_h
    +00025 #define __node_h
    +00026 
    +00027 #include <string>
    +00028 #include <cassert>
    +00029 
    +00030 extern int getNodeRank (); /* It gives the rank of the calling process */
    +00031 
    +00032 extern int getNumberOfNodes (); /* It gives the size of the environment (Total number of nodes) */
    +00033 
    +00034 extern int getRankFromName (const std :: string & __name); /* It gives the rank of the process
    +00035                                                               expressed by its name */
    +00036 
    +00037 extern void initNode (int * __argc, char * * * __argv);
    +00038 
    +00039 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/paradiseo_8h-source.html b/trunk/paradiseo-peo/docs/html/paradiseo_8h-source.html new file mode 100644 index 000000000..b6d0fb738 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/paradiseo_8h-source.html @@ -0,0 +1,83 @@ + + +ParadisEO: paradiseo.h Source File + + + + +
    +
    +

    paradiseo.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "paradiseo.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __paradiseo_h_
    +00025 #define __paradiseo_h_
    +00026 
    +00027 #include <eo>
    +00028 #include <mo>
    +00029 
    +00030 
    +00263 
    +00264 #include "core/peo_init.h"
    +00265 #include "core/peo_run.h"
    +00266 #include "core/peo_fin.h"
    +00267 
    +00268 #include "core/eoVector_comm.h"
    +00269 
    +00270 #include "peoEA.h"
    +00271 
    +00272 /* Parallel steps of the E.A. */
    +00273 #include "peoSeqTransform.h"
    +00274 #include "peoParaSGATransform.h"
    +00275 #include "peoSeqPopEval.h"
    +00276 #include "peoParaPopEval.h"
    +00277 
    +00278 /* Cooperative island model */
    +00279 #include "core/ring_topo.h"
    +00280 #include "peoAsyncIslandMig.h"
    +00281 #include "peoSyncIslandMig.h"
    +00282 
    +00283 /* Synchronous multi-start model */
    +00284 #include "peoSyncMultiStart.h"
    +00285 
    +00286 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/param_8cpp-source.html b/trunk/paradiseo-peo/docs/html/param_8cpp-source.html new file mode 100644 index 000000000..4de8831f6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/param_8cpp-source.html @@ -0,0 +1,65 @@ + + +ParadisEO: param.cpp Source File + + + + +
    +
    +

    param.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "param.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <utils/eoParser.h>
    +00025 
    +00026 #include "schema.h"
    +00027 
    +00028 void loadRMCParameters (int & __argc, char * * & __argv) {
    +00029 
    +00030   eoParser parser (__argc, __argv);
    +00031 
    +00032   /* Schema */
    +00033   eoValueParam <std :: string> schema_param ("schema.xml", "schema", "?");
    +00034   parser.processParam (schema_param);
    +00035   loadSchema (schema_param.value ().c_str ());
    +00036 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/param_8h-source.html b/trunk/paradiseo-peo/docs/html/param_8h-source.html new file mode 100644 index 000000000..0d7bf635c --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/param_8h-source.html @@ -0,0 +1,58 @@ + + +ParadisEO: param.h Source File + + + + +
    +
    +

    param.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "param.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __rmc_param_h
    +00025 #define __rmc_param_h
    +00026 
    +00027 extern void loadRMCParameters (int & __argc, char * * & __argv);
    +00028 
    +00029 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__debug_8cpp-source.html b/trunk/paradiseo-peo/docs/html/peo__debug_8cpp-source.html new file mode 100644 index 000000000..9f64851bb --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__debug_8cpp-source.html @@ -0,0 +1,121 @@ + + +ParadisEO: peo_debug.cpp Source File + + + + +
    +
    +

    peo_debug.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_debug.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "peo_debug.h"
    +00025 
    +00026 #include <stdio.h>
    +00027 #include <time.h>
    +00028 #include <unistd.h>
    +00029 #include <string.h>
    +00030 #include <sys/types.h>
    +00031 #include <sys/stat.h>
    +00032 #include <vector>
    +00033 
    +00034 #include "peo_debug.h"
    +00035 
    +00036 #define MAX_BUFF_SIZE 1000
    +00037 
    +00038 #define DEBUG_PATH "./log/"
    +00039 
    +00040 static bool debug = true;
    +00041 
    +00042 static char host [MAX_BUFF_SIZE];
    +00043 
    +00044 std :: vector <FILE *> files;
    +00045 
    +00046 void setDebugMode (bool __dbg) {
    +00047 
    +00048   debug = __dbg;
    +00049   gethostname (host, MAX_BUFF_SIZE);
    +00050 }
    +00051 
    +00052 extern int getNodeRank ();
    +00053 
    +00054 void initDebugging () {
    +00055   
    +00056   mkdir (DEBUG_PATH, S_IRWXU);
    +00057   //  files.push_back (stdout);
    +00058   char buff [MAX_BUFF_SIZE];
    +00059   sprintf (buff, "%s/%d", DEBUG_PATH, getNodeRank ());
    +00060   files.push_back (fopen (buff, "w"));
    +00061 }
    +00062 
    +00063 void endDebugging () {
    +00064 
    +00065   for (unsigned i = 0; i < files.size (); i ++)
    +00066     if (files [i] != stdout)
    +00067       fclose (files [i]);
    +00068 }
    +00069 
    +00070 void printDebugMessage (const char * __mess) {
    +00071 
    +00072   if (debug) {
    +00073 
    +00074     char buff [MAX_BUFF_SIZE];
    +00075     time_t t = time (0);
    +00076 
    +00077     /* Date */
    +00078     sprintf (buff, "[%s][%s: ", host, ctime (& t));
    +00079     * strchr (buff, '\n') = ']';
    +00080     for (unsigned i = 0; i < files.size (); i ++)
    +00081       fprintf (files [i], buff);
    +00082 
    +00083     /* Message */
    +00084     sprintf (buff, "%s", __mess);
    +00085     
    +00086     for (unsigned i = 0; i < files.size (); i ++) {
    +00087       fputs (buff, files [i]);
    +00088       fputs ("\n", files [i]);
    +00089       fflush (files [i]);
    +00090     }
    +00091   }
    +00092 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__debug_8h-source.html b/trunk/paradiseo-peo/docs/html/peo__debug_8h-source.html new file mode 100644 index 000000000..5fa0855ef --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__debug_8h-source.html @@ -0,0 +1,66 @@ + + +ParadisEO: peo_debug.h Source File + + + + +
    +
    +

    peo_debug.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_debug.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peo_debug_h
    +00025 #define __peo_debug_h
    +00026 
    +00027 extern void initDebugging ();
    +00028 
    +00029 extern void endDebugging ();
    +00030 
    +00031 extern void setDebugMode (bool __dbg = true); /* (Des)activating the Debugging mode */
    +00032 
    +00033 extern void printDebugMessage (const char * __mess); /* Print a new message both on the
    +00034                                                         standard output and a target
    +00035                                                         text-file in a subdirectory) */
    +00036 
    +00037 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__fin_8cpp-source.html b/trunk/paradiseo-peo/docs/html/peo__fin_8cpp-source.html new file mode 100644 index 000000000..668f053e9 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__fin_8cpp-source.html @@ -0,0 +1,68 @@ + + +ParadisEO: peo_fin.cpp Source File + + + + +
    +
    +

    peo_fin.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_finalize.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "peo_fin.h"
    +00025 #include "peo_debug.h"
    +00026 #include "runner.h"
    +00027 #include "rmc.h"
    +00028 
    +00029 void peo :: finalize () {
    +00030 
    +00031   printDebugMessage ("waiting for the termination of all threads");
    +00032 
    +00033   joinRunners ();
    +00034 
    +00035   finalizeRMC ();
    +00036 
    +00037   printDebugMessage ("this is the end");
    +00038   endDebugging ();
    +00039 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__fin_8h-source.html b/trunk/paradiseo-peo/docs/html/peo__fin_8h-source.html new file mode 100644 index 000000000..fca0b9dbf --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__fin_8h-source.html @@ -0,0 +1,61 @@ + + +ParadisEO: peo_fin.h Source File + + + + +
    +
    +

    peo_fin.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_finalize.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peo_finalize_h
    +00025 #define __peo_finalize_h
    +00026 
    +00027 namespace peo {
    +00028   
    +00029   extern void finalize ();
    +00030 }
    +00031 
    +00032 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__init_8cpp-source.html b/trunk/paradiseo-peo/docs/html/peo__init_8cpp-source.html new file mode 100644 index 000000000..75da46c41 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__init_8cpp-source.html @@ -0,0 +1,81 @@ + + +ParadisEO: peo_init.cpp Source File + + + + +
    +
    +

    peo_init.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_init.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <stdio.h>
    +00025 
    +00026 #include "peo_init.h"
    +00027 #include "peo_param.h"
    +00028 #include "peo_debug.h"
    +00029 #include "rmc.h"
    +00030 
    +00031 namespace peo {
    +00032 
    +00033   int * argc;
    +00034   
    +00035   char * * * argv;
    +00036 
    +00037   void init (int & __argc, char * * & __argv) {
    +00038 
    +00039     argc = & __argc;
    +00040     
    +00041     argv = & __argv;
    +00042     
    +00043     /* Initializing the the Resource Management and Communication */
    +00044     initRMC (__argc, __argv);
    +00045 
    +00046     /* Loading the common parameters */ 
    +00047     loadParameters (__argc, __argv);
    +00048     
    +00049     /* */
    +00050     initDebugging ();
    +00051   }
    +00052 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__init_8h-source.html b/trunk/paradiseo-peo/docs/html/peo__init_8h-source.html new file mode 100644 index 000000000..609581a87 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__init_8h-source.html @@ -0,0 +1,65 @@ + + +ParadisEO: peo_init.h Source File + + + + +
    +
    +

    peo_init.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_init.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peo_init_h
    +00025 #define __peo_init_h
    +00026 
    +00027 namespace peo {
    +00028 
    +00029   extern int * argc;
    +00030   
    +00031   extern char * * * argv;
    +00032   
    +00033   extern void init (int & __argc, char * * & __argv);
    +00034 }
    +00035 
    +00036 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__param_8cpp-source.html b/trunk/paradiseo-peo/docs/html/peo__param_8cpp-source.html new file mode 100644 index 000000000..192e7a65d --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__param_8cpp-source.html @@ -0,0 +1,69 @@ + + +ParadisEO: peo_param.cpp Source File + + + + +
    +
    +

    peo_param.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_param.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <utils/eoParser.h>
    +00025 
    +00026 #include "peo_param.h"
    +00027 #include "peo_debug.h"
    +00028 
    +00029 
    +00030 
    +00031 void peo :: loadParameters (int & __argc, char * * & __argv) {
    +00032 
    +00033   eoParser parser (__argc, __argv);
    +00034 
    +00035   /* Debug */
    +00036   eoValueParam <std :: string> debug_param ("false", "debug", "?");
    +00037   parser.processParam (debug_param);
    +00038   if (debug_param.value () == "true")
    +00039     setDebugMode ();
    +00040 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__param_8h-source.html b/trunk/paradiseo-peo/docs/html/peo__param_8h-source.html new file mode 100644 index 000000000..db017c4f9 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__param_8h-source.html @@ -0,0 +1,61 @@ + + +ParadisEO: peo_param.h Source File + + + + +
    +
    +

    peo_param.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_param.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peo_param_h
    +00025 #define __peo_param_h
    +00026 
    +00027 namespace peo {
    +00028   
    +00029   extern void loadParameters (int & __argc, char * * & __argv);
    +00030 }
    +00031 
    +00032 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__run_8cpp-source.html b/trunk/paradiseo-peo/docs/html/peo__run_8cpp-source.html new file mode 100644 index 000000000..ba01b6678 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__run_8cpp-source.html @@ -0,0 +1,63 @@ + + +ParadisEO: peo_run.cpp Source File + + + + +
    +
    +

    peo_run.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_run.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "peo_init.h"
    +00025 #include "peo_run.h"
    +00026 #include "rmc.h"
    +00027 #include "runner.h"
    +00028 
    +00029 void peo :: run () {
    +00030   
    +00031   startRunners ();
    +00032 
    +00033   runRMC ();
    +00034 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo__run_8h-source.html b/trunk/paradiseo-peo/docs/html/peo__run_8h-source.html new file mode 100644 index 000000000..326dc20fa --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo__run_8h-source.html @@ -0,0 +1,61 @@ + + +ParadisEO: peo_run.h Source File + + + + +
    +
    +

    peo_run.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peo_run.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peo_run_h
    +00025 #define __peo_run_h
    +00026 
    +00027 namespace peo {
    +00028   
    +00029   extern void run ();
    +00030 }
    +00031 
    +00032 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_agg_eval_func_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_agg_eval_func_8h-source.html new file mode 100644 index 000000000..ee853b3d4 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_agg_eval_func_8h-source.html @@ -0,0 +1,64 @@ + + +ParadisEO: peoAggEvalFunc.h Source File + + + + +
    +
    +

    peoAggEvalFunc.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoAggEvalFunc.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoAggEvalFunc_h
    +00025 #define __peoAggEvalFunc_h
    +00026 
    +00027 #include <eoFunctor.h>
    +00028 
    +00030 
    +00040 template< class EOT > class peoAggEvalFunc : public eoBF< EOT&, const typename EOT :: Fitness&, void > {
    +00041 
    +00042 };
    +00043 
    +00044 
    +00045 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_async_island_mig_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_async_island_mig_8h-source.html new file mode 100644 index 000000000..50ad5a0e0 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_async_island_mig_8h-source.html @@ -0,0 +1,204 @@ + + +ParadisEO: peoAsyncIslandMig.h Source File + + + + +
    +
    +

    peoAsyncIslandMig.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoAsyncIslandMig.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011 
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016 
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020 
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoAsyncIslandMig_h
    +00025 #define __peoAsyncIslandMig_h
    +00026 
    +00027 
    +00028 #include <queue>
    +00029 
    +00030 #include <utils/eoUpdater.h>
    +00031 
    +00032 #include <eoContinue.h>
    +00033 #include <eoSelect.h>
    +00034 #include <eoReplacement.h>
    +00035 #include <eoPop.h>
    +00036 
    +00037 #include "core/topology.h"
    +00038 #include "core/cooperative.h"
    +00039 #include "core/eoPop_comm.h"
    +00040 #include "core/peo_debug.h"
    +00041 
    +00042 
    +00044 
    +00127 template< class EOT > class peoAsyncIslandMig : public Cooperative, public eoUpdater {
    +00128 
    +00129 public:
    +00130 
    +00140         peoAsyncIslandMig( 
    +00141                                 eoContinue< EOT >& __cont,
    +00142                                 eoSelect< EOT >& __select,
    +00143                                 eoReplacement< EOT >& __replace,
    +00144                                 Topology& __topology,
    +00145                                 eoPop< EOT >& __source,
    +00146                                 eoPop< EOT >& __destination 
    +00147         );
    +00148 
    +00153         void operator()();
    +00154         
    +00156         void pack();
    +00158         void unpack();
    +00159 
    +00160 
    +00161 private:
    +00162 
    +00163         void emigrate();
    +00164         void immigrate();
    +00165 
    +00166 
    +00167 private:
    +00168 
    +00169         eoContinue< EOT >& cont;        // continuator
    +00170         eoSelect< EOT >& select;        // the selection strategy
    +00171         eoReplacement< EOT >& replace;  // the replacement strategy
    +00172         Topology& topology;             // the neighboring topology
    +00173         
    +00174         // source and destination populations
    +00175         eoPop< EOT >& source;
    +00176         eoPop< EOT >& destination;
    +00177         
    +00178         // immigrants & emigrants in the queue
    +00179         std :: queue< eoPop< EOT > > imm;
    +00180         std :: queue< eoPop< EOT > > em;
    +00181         
    +00182         std :: queue< Cooperative* > coop_em;
    +00183 };
    +00184 
    +00185 
    +00186 template< class EOT > peoAsyncIslandMig< EOT > :: peoAsyncIslandMig(
    +00187 
    +00188                 eoContinue< EOT >& __cont,
    +00189                 eoSelect< EOT >& __select,
    +00190                 eoReplacement< EOT >& __replace,
    +00191                 Topology& __topology,
    +00192                 eoPop< EOT >& __source,
    +00193                 eoPop< EOT >& __destination
    +00194 
    +00195         ) : cont( __cont ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination )
    +00196 {
    +00197 
    +00198         __topology.add( *this );
    +00199 }
    +00200 
    +00201 
    +00202 template< class EOT > void peoAsyncIslandMig< EOT > :: pack()
    +00203 {
    +00204 
    +00205         lock(); {
    +00206 
    +00207 		 :: pack( coop_em.front()->getKey() );
    +00208 		 :: pack( em.front() );
    +00209                 coop_em.pop();
    +00210                 em.pop();
    +00211         }
    +00212         unlock();
    +00213 }
    +00214 
    +00215 
    +00216 template< class EOT > void peoAsyncIslandMig< EOT > :: unpack()
    +00217 {
    +00218 
    +00219         lock(); {
    +00220 
    +00221                 eoPop< EOT > mig;
    +00222 		 :: unpack( mig );
    +00223                 imm.push( mig );
    +00224         }
    +00225         unlock();
    +00226 }
    +00227 
    +00228 
    +00229 template< class EOT > void peoAsyncIslandMig< EOT > :: emigrate()
    +00230 {
    +00231 
    +00232         std :: vector< Cooperative* >in, out;
    +00233         topology.setNeighbors( this, in, out );
    +00234 
    +00235         for ( unsigned i = 0; i < out.size(); i++ ) {
    +00236         
    +00237                 eoPop< EOT > mig;
    +00238                 select( source, mig );
    +00239                 em.push( mig );
    +00240                 coop_em.push( out[i] );
    +00241                 send( out[i] );
    +00242                 printDebugMessage( "sending some emigrants." );
    +00243         }
    +00244 }
    +00245 
    +00246 
    +00247 template< class EOT > void peoAsyncIslandMig< EOT > :: immigrate()
    +00248 {
    +00249 
    +00250         lock(); {
    +00251 
    +00252                 while ( !imm.empty() ) {
    +00253 
    +00254                         replace( destination, imm.front() );
    +00255                         imm.pop();
    +00256                         printDebugMessage( "receiving some immigrants." );
    +00257                 }
    +00258         }
    +00259         unlock();
    +00260 }
    +00261 
    +00262 
    +00263 template< class EOT > void peoAsyncIslandMig< EOT > :: operator()() {
    +00264 
    +00265         if ( !cont( source ) ) {
    +00266 
    +00267                 emigrate();     // sending emigrants
    +00268                 immigrate();    // receiving immigrants
    +00269         }
    +00270 }
    +00271 
    +00272 
    +00273 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_e_a_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_e_a_8h-source.html new file mode 100644 index 000000000..55eedfc11 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_e_a_8h-source.html @@ -0,0 +1,143 @@ + + +ParadisEO: peoEA.h Source File + + + + +
    +
    +

    peoEA.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoEA.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoEA_h
    +00025 #define __peoEA_h
    +00026 
    +00027 #include <eoContinue.h>
    +00028 #include <eoEvalFunc.h>
    +00029 #include <eoSelect.h>
    +00030 #include <eoPopEvalFunc.h>
    +00031 #include <eoReplacement.h>
    +00032 
    +00033 #include "peoPopEval.h"
    +00034 #include "peoTransform.h"
    +00035 #include "core/runner.h"
    +00036 #include "core/peo_debug.h"
    +00037 
    +00039 
    +00069 template < class EOT > class peoEA : public Runner {
    +00070 
    +00071 public:
    +00072 
    +00084         peoEA( 
    +00085                 eoContinue< EOT >& __cont,
    +00086                 peoPopEval< EOT >& __pop_eval,
    +00087                 eoSelect< EOT >& __select,
    +00088                 peoTransform< EOT >& __trans,
    +00089                 eoReplacement< EOT >& __replace 
    +00090         );
    +00091 
    +00094         void run();
    +00095         
    +00099         void operator()( eoPop< EOT >& __pop );
    +00100 
    +00101 private:
    +00102 
    +00103 
    +00104         eoContinue< EOT >& cont;
    +00105         peoPopEval< EOT >& pop_eval;
    +00106         eoSelect< EOT >& select;
    +00107         peoTransform< EOT >& trans;
    +00108         eoReplacement< EOT >& replace;
    +00109         eoPop< EOT >* pop;
    +00110 };
    +00111 
    +00112 
    +00113 template < class EOT > peoEA< EOT > :: peoEA( 
    +00114 
    +00115                                 eoContinue< EOT >& __cont, 
    +00116                                 peoPopEval< EOT >& __pop_eval, 
    +00117                                 eoSelect< EOT >& __select, 
    +00118                                 peoTransform< EOT >& __trans, 
    +00119                                 eoReplacement< EOT >& __replace
    +00120 
    +00121                 ) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace )
    +00122 {
    +00123 
    +00124         trans.setOwner( *this );
    +00125         pop_eval.setOwner( *this );
    +00126 }
    +00127 
    +00128 
    +00129 template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) {
    +00130 
    +00131         pop = &__pop;
    +00132 }
    +00133 
    +00134 
    +00135 template< class EOT > void peoEA< EOT > :: run() {
    +00136 
    +00137         printDebugMessage( "performing the first evaluation of the population." );
    +00138         pop_eval( *pop );
    +00139         
    +00140         do {
    +00141 
    +00142                 eoPop< EOT > off;
    +00143 
    +00144                 printDebugMessage( "performing the selection step." );
    +00145                 select( *pop, off );
    +00146                 trans( off );
    +00147 
    +00148                 printDebugMessage( "performing the evaluation of the population." );
    +00149                 pop_eval( off );
    +00150 
    +00151                 printDebugMessage( "performing the replacement of the population." );
    +00152                 replace( *pop, off );
    +00153 
    +00154                 printDebugMessage( "deciding of the continuation." );
    +00155         
    +00156         } while ( cont( *pop ) );
    +00157 }
    +00158 
    +00159 
    +00160 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_no_agg_eval_func_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_no_agg_eval_func_8h-source.html new file mode 100644 index 000000000..be68977b6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_no_agg_eval_func_8h-source.html @@ -0,0 +1,73 @@ + + +ParadisEO: peoNoAggEvalFunc.h Source File + + + + +
    +
    +

    peoNoAggEvalFunc.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoNoAggEvalFunc.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoNoAggEvalFunc_h
    +00025 #define __peoNoAggEvalFunc_h
    +00026 
    +00027 #include "peoAggEvalFunc.h"
    +00028 
    +00030 
    +00034 template< class EOT > class peoNoAggEvalFunc : public peoAggEvalFunc< EOT > {
    +00035 
    +00036 public :
    +00037 
    +00039         void operator()( EOT& __sol, const typename EOT :: Fitness& __fit );
    +00040 };
    +00041 
    +00042 
    +00043 template< class EOT > void peoNoAggEvalFunc< EOT > :: operator()( EOT& __sol, const typename EOT :: Fitness& __fit ) {
    +00044 
    +00045         __sol.fitness( __fit );
    +00046 }
    +00047 
    +00048 
    +00049 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_para_pop_eval_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_para_pop_eval_8h-source.html new file mode 100644 index 000000000..f8d105dc5 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_para_pop_eval_8h-source.html @@ -0,0 +1,241 @@ + + +ParadisEO: peoParaPopEval.h Source File + + + + +
    +
    +

    peoParaPopEval.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoParaPopEval.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoParaPopEval_h
    +00025 #define __peoParaPopEval_h
    +00026 
    +00027 #include <queue>
    +00028 #include <eoEvalFunc.h>
    +00029 
    +00030 #include "core/messaging.h"
    +00031 #include "core/peo_debug.h"
    +00032 #include "peoAggEvalFunc.h"
    +00033 #include "peoNoAggEvalFunc.h"
    +00034 
    +00035 
    +00037 
    +00041 template< class EOT > class peoParaPopEval : public peoPopEval< EOT > {
    +00042 
    +00043 public:
    +00044 
    +00045         using peoPopEval< EOT > :: requestResourceRequest;
    +00046         using peoPopEval< EOT > :: resume;
    +00047         using peoPopEval< EOT > :: stop;
    +00048         using peoPopEval< EOT > :: getOwner;
    +00049         
    +00054         peoParaPopEval( eoEvalFunc< EOT >& __eval_func );
    +00055 
    +00060         peoParaPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval );
    +00061 
    +00065         void operator()( eoPop< EOT >& __pop );
    +00066 
    +00069         void packData();
    +00070         
    +00073         void unpackData();
    +00074 
    +00076         void execute();
    +00077         
    +00080         void packResult();
    +00081         
    +00084         void unpackResult();
    +00085         
    +00088         void notifySendingData();
    +00089 
    +00092         void notifySendingAllResourceRequests();
    +00093 
    +00094 private:
    +00095 
    +00096 
    +00097         const std :: vector< eoEvalFunc < EOT >* >& funcs;
    +00098         std :: vector< eoEvalFunc < EOT >* > one_func;
    +00099         
    +00100         peoAggEvalFunc< EOT >& merge_eval;
    +00101         peoNoAggEvalFunc< EOT > no_merge_eval;
    +00102         
    +00103         std :: queue< EOT* >tasks;
    +00104         
    +00105         std :: map< EOT*, std :: pair< unsigned, unsigned > > progression;
    +00106         
    +00107         unsigned num_func;
    +00108         
    +00109         EOT sol;
    +00110         
    +00111         EOT *ad_sol;
    +00112         
    +00113         unsigned total;
    +00114 };
    +00115 
    +00116 
    +00117 template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( eoEvalFunc< EOT >& __eval_func ) : 
    +00118 
    +00119                 funcs( one_func ), merge_eval( no_merge_eval )
    +00120 {
    +00121 
    +00122         one_func.push_back( &__eval_func );
    +00123 }
    +00124 
    +00125 
    +00126 template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( 
    +00127 
    +00128                                 const std :: vector< eoEvalFunc< EOT >* >& __funcs,
    +00129                                 peoAggEvalFunc< EOT >& __merge_eval 
    +00130 
    +00131                 ) : funcs( __funcs ), merge_eval( __merge_eval )
    +00132 {
    +00133 
    +00134 }
    +00135 
    +00136 
    +00137 template< class EOT > void peoParaPopEval< EOT >::operator()( eoPop< EOT >& __pop ) {
    +00138 
    +00139         for ( unsigned i = 0; i < __pop.size(); i++ ) {
    +00140 
    +00141                 __pop[ i ].fitness( typename EOT :: Fitness() );
    +00142 
    +00143                 progression[ &__pop[ i ] ].first = funcs.size() - 1;
    +00144                 progression[ &__pop[ i ] ].second = funcs.size();
    +00145                 
    +00146                 for ( unsigned j = 0; j < funcs.size(); j++ ) {
    +00147                         /* Queuing the 'invalid' solution and its associated owner */
    +00148                         tasks.push( &__pop[ i ] );
    +00149                 }
    +00150         }
    +00151         
    +00152         total = funcs.size() * __pop.size();
    +00153         requestResourceRequest( funcs.size() * __pop.size() );
    +00154         stop();
    +00155 }
    +00156 
    +00157 
    +00158 template< class EOT > void peoParaPopEval< EOT > :: packData() {
    +00159 
    +00160         //  printDebugMessage ("debut pakc data");
    +00161         pack( progression[ tasks.front() ].first-- );
    +00162         
    +00163         /* Packing the contents :-) of the solution */
    +00164         pack( *tasks.front() );
    +00165         
    +00166         /* Packing the addresses of both the solution and the owner */
    +00167         pack( tasks.front() );
    +00168         tasks.pop(  );
    +00169 }
    +00170 
    +00171 
    +00172 template< class EOT > void peoParaPopEval< EOT > :: unpackData() {
    +00173 
    +00174         unpack( num_func );
    +00175         /* Unpacking the solution */
    +00176         unpack( sol );
    +00177         /* Unpacking the @ of that one */
    +00178         unpack( ad_sol );
    +00179 }
    +00180 
    +00181 
    +00182 template< class EOT > void peoParaPopEval< EOT > :: execute() {
    +00183 
    +00184         /* Computing the fitness of the solution */
    +00185         funcs[ num_func ]->operator()( sol );
    +00186 }
    +00187 
    +00188 
    +00189 template< class EOT > void peoParaPopEval< EOT > :: packResult() {
    +00190 
    +00191         /* Packing the fitness of the solution */
    +00192         pack( sol.fitness() );
    +00193         /* Packing the @ of the individual */
    +00194         pack( ad_sol );
    +00195 }
    +00196 
    +00197 
    +00198 template< class EOT > void peoParaPopEval< EOT > :: unpackResult() {
    +00199 
    +00200         typename EOT :: Fitness fit;
    +00201         
    +00202         /* Unpacking the computed fitness */
    +00203         unpack( fit );
    +00204                 
    +00205         /* Unpacking the @ of the associated individual */
    +00206         unpack( ad_sol );
    +00207         
    +00208         
    +00209         /* Associating the fitness the local solution */
    +00210         merge_eval( *ad_sol, fit );
    +00211 
    +00212         progression[ ad_sol ].second--;
    +00213 
    +00214         /* Notifying the container of the termination of the evaluation */
    +00215         if ( !progression[ ad_sol ].second ) {
    +00216 
    +00217                 progression.erase( ad_sol );
    +00218         }
    +00219         
    +00220         total--;
    +00221         if ( !total ) {
    +00222 
    +00223                 getOwner()->setActive();
    +00224                 resume();
    +00225         }
    +00226 }
    +00227 
    +00228 
    +00229 template< class EOT > void peoParaPopEval< EOT > :: notifySendingData() {
    +00230 
    +00231 }
    +00232 
    +00233 
    +00234 template< class EOT > void peoParaPopEval< EOT > :: notifySendingAllResourceRequests() {
    +00235 
    +00236         getOwner()->setPassive();
    +00237 }
    +00238 
    +00239 
    +00240 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_para_s_g_a_transform_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_para_s_g_a_transform_8h-source.html new file mode 100644 index 000000000..ea92d3cc5 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_para_s_g_a_transform_8h-source.html @@ -0,0 +1,199 @@ + + +ParadisEO: peoParaSGATransform.h Source File + + + + +
    +
    +

    peoParaSGATransform.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoParaSGATransform.h"
    +00004 
    +00005 //(c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoParaSGATransform_h
    +00025 #define __peoParaSGATransform_h
    +00026 
    +00027 #include "peoTransform.h"
    +00028 #include "core/thread.h"
    +00029 #include "core/messaging.h"
    +00030 #include "core/peo_debug.h"
    +00031 
    +00032 
    +00033 extern int getNodeRank();
    +00034 
    +00035 
    +00036 template< class EOT > class peoParaSGATransform : public peoTransform< EOT > {
    +00037 
    +00038 public:
    +00039 
    +00040         using peoTransform< EOT > :: requestResourceRequest;
    +00041         using peoTransform< EOT > :: resume;
    +00042         using peoTransform< EOT > :: stop;
    +00043         using peoTransform< EOT > :: getOwner;
    +00044 
    +00045         peoParaSGATransform( 
    +00046 
    +00047                                 eoQuadOp< EOT >& __cross,
    +00048                                 double __cross_rate,
    +00049                                 eoMonOp< EOT >& __mut, 
    +00050                                 double __mut_rate 
    +00051         );
    +00052 
    +00053         void operator()( eoPop< EOT >& __pop );
    +00054         
    +00055         void packData();
    +00056         
    +00057         void unpackData();
    +00058         
    +00059         void execute();
    +00060         
    +00061         void packResult();
    +00062         
    +00063         void unpackResult();
    +00064         
    +00065         void notifySendingData();
    +00066         void notifySendingAllResourceRequests();
    +00067 
    +00068 private:
    +00069 
    +00070     eoQuadOp< EOT >& cross;
    +00071     double cross_rate;
    +00072 
    +00073     eoMonOp< EOT >& mut;
    +00074     double mut_rate;
    +00075 
    +00076     unsigned idx;
    +00077 
    +00078     eoPop< EOT >* pop;
    +00079 
    +00080     EOT father, mother;
    +00081 
    +00082     unsigned num_term;
    +00083 };
    +00084 
    +00085 template< class EOT > peoParaSGATransform< EOT > :: peoParaSGATransform( 
    +00086 
    +00087                                 eoQuadOp< EOT >& __cross,
    +00088                                 double __cross_rate,
    +00089                                 eoMonOp < EOT >& __mut,
    +00090                                 double __mut_rate 
    +00091 
    +00092                 ) : cross( __cross ), cross_rate( __cross_rate ), mut( __mut ), mut_rate( __mut_rate )
    +00093 {
    +00094 
    +00095 }
    +00096 
    +00097 
    +00098 template< class EOT > void peoParaSGATransform< EOT > :: packData() {
    +00099 
    +00100         pack( idx );
    +00101          :: pack( pop->operator[]( idx++ ) );
    +00102          :: pack( pop->operator[]( idx++ ) );
    +00103 }
    +00104 
    +00105 
    +00106 template< class EOT > void peoParaSGATransform< EOT > :: unpackData() {
    +00107 
    +00108         unpack( idx );
    +00109          :: unpack( father );
    +00110          :: unpack( mother );
    +00111 }
    +00112 
    +00113 
    +00114 template< class EOT > void peoParaSGATransform< EOT > :: execute() {
    +00115 
    +00116         if( rng.uniform() < cross_rate ) cross( mother, father );
    +00117 
    +00118         if( rng.uniform() < mut_rate ) mut( mother );
    +00119         if( rng.uniform() < mut_rate ) mut( father );
    +00120 }
    +00121 
    +00122 
    +00123 template< class EOT > void peoParaSGATransform< EOT > :: packResult() {
    +00124 
    +00125         pack( idx );
    +00126          :: pack( father );
    +00127          :: pack( mother );
    +00128 }
    +00129 
    +00130 
    +00131 template< class EOT > void peoParaSGATransform< EOT > :: unpackResult() {
    +00132 
    +00133         unsigned sidx;
    +00134         
    +00135         unpack( sidx );
    +00136          :: unpack( pop->operator[]( sidx++ ) );
    +00137          :: unpack( pop->operator[]( sidx ) );
    +00138         num_term += 2;
    +00139         
    +00140         if( num_term == pop->size() ) {
    +00141 
    +00142                 getOwner()->setActive();
    +00143                 resume();
    +00144         }
    +00145 }
    +00146 
    +00147 
    +00148 template< class EOT > void peoParaSGATransform< EOT > :: operator()( eoPop < EOT >& __pop ) {
    +00149 
    +00150         printDebugMessage( "performing the parallel transformation step." );
    +00151         pop = &__pop;
    +00152         idx = 0;
    +00153         num_term = 0;
    +00154         requestResourceRequest( __pop.size() / 2 );
    +00155         stop();
    +00156 }
    +00157 
    +00158 
    +00159 template< class EOT > void peoParaSGATransform< EOT > :: notifySendingData() {
    +00160 
    +00161 }
    +00162 
    +00163 
    +00164 template< class EOT > void peoParaSGATransform< EOT > :: notifySendingAllResourceRequests() {
    +00165 
    +00166         getOwner()->setPassive();
    +00167 }
    +00168 
    +00169 
    +00170 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_pop_eval_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_pop_eval_8h-source.html new file mode 100644 index 000000000..6b4a9eacf --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_pop_eval_8h-source.html @@ -0,0 +1,67 @@ + + +ParadisEO: peoPopEval.h Source File + + + + +
    +
    +

    peoPopEval.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoPopEval.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoPopEval_h
    +00025 #define __peoPopEval_h
    +00026 
    +00027 #include "core/service.h"
    +00028 
    +00030 
    +00034 template< class EOT > class peoPopEval : public Service {
    +00035 
    +00036 public:
    +00037 
    +00039         virtual void operator()( eoPop< EOT >& __pop ) = 0;
    +00040 };
    +00041 
    +00042 
    +00043 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_seq_pop_eval_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_seq_pop_eval_8h-source.html new file mode 100644 index 000000000..44ca90ec9 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_seq_pop_eval_8h-source.html @@ -0,0 +1,87 @@ + + +ParadisEO: peoSeqPopEval.h Source File + + + + +
    +
    +

    peoSeqPopEval.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoSeqPopEval.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoSeqPopEval_h
    +00025 #define __peoSeqPopEval_h
    +00026 
    +00027 #include <eoEvalFunc.h>
    +00028 
    +00029 #include "peoPopEval.h"
    +00030 
    +00032 
    +00036 template< class EOT > class peoSeqPopEval : public peoPopEval< EOT > {
    +00037 
    +00038 public:
    +00039 
    +00043         peoSeqPopEval( eoEvalFunc< EOT >& __eval );
    +00044 
    +00048         void operator()( eoPop< EOT >& __pop );
    +00049 
    +00050 private:
    +00051 
    +00052         eoEvalFunc< EOT >& eval;
    +00053 };
    +00054 
    +00055 
    +00056 template< class EOT > peoSeqPopEval< EOT > :: peoSeqPopEval( eoEvalFunc< EOT >& __eval ) : eval( __eval ) {
    +00057 
    +00058 }
    +00059 
    +00060 
    +00061 template< class EOT > void peoSeqPopEval< EOT > :: operator()( eoPop< EOT >& __pop ) {
    +00062 
    +00063         for ( unsigned i = 0; i < __pop.size(); i++ )
    +00064                 eval( __pop[i] );
    +00065 }
    +00066 
    +00067 
    +00068 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_seq_transform_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_seq_transform_8h-source.html new file mode 100644 index 000000000..e8882e998 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_seq_transform_8h-source.html @@ -0,0 +1,95 @@ + + +ParadisEO: peoSeqTransform.h Source File + + + + +
    +
    +

    peoSeqTransform.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoSeqTransform.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoSeqTransform_h
    +00025 #define __peoSeqTransform_h
    +00026 
    +00027 #include "peoTransform.h"
    +00028 
    +00029 
    +00031 
    +00035 template< class EOT > class peoSeqTransform : public peoTransform< EOT > {
    +00036 
    +00037 public:
    +00038 
    +00042         peoSeqTransform( eoTransform< EOT >& __trans );
    +00043         
    +00047         void operator()( eoPop< EOT >& __pop );
    +00048         
    +00050         virtual void packData() { }
    +00051 
    +00053         virtual void unpackData() { }
    +00054         
    +00056         virtual void execute() { }
    +00057         
    +00059         virtual void packResult() { }
    +00060 
    +00062         virtual void unpackResult() { }
    +00063 
    +00064 private:
    +00065 
    +00066         eoTransform< EOT >& trans;
    +00067 };
    +00068 
    +00069 
    +00070 template< class EOT > peoSeqTransform< EOT > :: peoSeqTransform( eoTransform< EOT >& __trans ) : trans( __trans ) {
    +00071 
    +00072 }
    +00073 
    +00074 
    +00075 template< class EOT > void peoSeqTransform< EOT > :: operator()( eoPop< EOT >& __pop ) {
    +00076 
    +00077         trans( __pop );
    +00078 }
    +00079 
    +00080 
    +00081 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_sync_island_mig_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_sync_island_mig_8h-source.html new file mode 100644 index 000000000..16c6cf38f --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_sync_island_mig_8h-source.html @@ -0,0 +1,232 @@ + + +ParadisEO: peoSyncIslandMig.h Source File + + + + +
    +
    +

    peoSyncIslandMig.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoSyncIslandMig.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011 
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016 
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020 
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoSyncIslandMig_h
    +00025 #define __peoSyncIslandMig_h
    +00026 
    +00027 
    +00028 #include <queue>
    +00029 #include <cassert>
    +00030 
    +00031 #include <eoPeriodicContinue.h>
    +00032 
    +00033 #include <utils/eoUpdater.h>
    +00034 
    +00035 #include <eoContinue.h>
    +00036 #include <eoSelect.h>
    +00037 #include <eoReplacement.h>
    +00038 #include <eoPop.h>
    +00039 
    +00040 #include "core/topology.h"
    +00041 #include "core/thread.h"
    +00042 #include "core/eoPop_comm.h"
    +00043 #include "core/peo_debug.h"
    +00044 
    +00045 
    +00047 
    +00129 template< class EOT > class peoSyncIslandMig : public Cooperative, public eoUpdater {
    +00130 
    +00131 public:
    +00132 
    +00142         peoSyncIslandMig(
    +00143                                 unsigned __frequency,
    +00144                                 eoSelect< EOT >& __select,
    +00145                                 eoReplacement< EOT >& __replace,
    +00146                                 Topology& __topology,
    +00147                                 eoPop< EOT >& __source,
    +00148                                 eoPop< EOT >& __destination
    +00149         );
    +00150 
    +00155         void operator()();
    +00156 
    +00158         void pack();
    +00160         void unpack();
    +00161 
    +00163         void notifySending();
    +00164 
    +00165 
    +00166 private:
    +00167 
    +00168         void emigrate();
    +00169         void immigrate();
    +00170 
    +00171 
    +00172 private:
    +00173 
    +00174         eoPeriodicContinue< EOT > cont;
    +00175         eoSelect< EOT >& select;        // selection strategy
    +00176         eoReplacement< EOT >& replace;  // replacement strategy
    +00177         Topology& topology;             // neighboring topology
    +00178 
    +00179         // source and target populations
    +00180         eoPop< EOT >& source;
    +00181         eoPop< EOT >& destination;
    +00182 
    +00183         // immigrants & emigrants in the queue
    +00184         std :: queue< eoPop< EOT > > imm;
    +00185         std :: queue< eoPop< EOT > > em;
    +00186 
    +00187         std :: queue< Cooperative* > coop_em;
    +00188 
    +00189         sem_t sync;
    +00190 };
    +00191 
    +00192 
    +00193 template< class EOT > peoSyncIslandMig< EOT > :: peoSyncIslandMig(
    +00194 
    +00195                 unsigned __frequency,
    +00196                 eoSelect< EOT >& __select,
    +00197                 eoReplacement< EOT >& __replace,
    +00198                 Topology& __topology,
    +00199                 eoPop< EOT >& __source,
    +00200                 eoPop< EOT >& __destination
    +00201 
    +00202         ) : cont( __frequency ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) 
    +00203 {
    +00204 
    +00205         __topology.add( *this );
    +00206         sem_init( &sync, 0, 0 );
    +00207 }
    +00208 
    +00209 
    +00210 template< class EOT > void peoSyncIslandMig< EOT > :: pack() {
    +00211 
    +00212         lock(); {
    +00213 
    +00214 		 :: pack( coop_em.front()->getKey() );
    +00215 		 :: pack( em.front() );
    +00216                 coop_em.pop();
    +00217                 em.pop();
    +00218         }
    +00219         unlock();
    +00220 }
    +00221 
    +00222 
    +00223 template< class EOT > void peoSyncIslandMig< EOT > :: unpack() {
    +00224 
    +00225         lock(); {
    +00226 
    +00227                 eoPop< EOT > mig;
    +00228 		 :: unpack( mig );
    +00229                 imm.push( mig );
    +00230         }
    +00231         unlock();
    +00232 
    +00233         sem_post( &sync );
    +00234 }
    +00235 
    +00236 
    +00237 template< class EOT > void peoSyncIslandMig< EOT > :: emigrate() {
    +00238 
    +00239         std :: vector< Cooperative* > in, out;
    +00240         topology.setNeighbors( this, in, out );
    +00241         
    +00242         for ( unsigned i = 0; i < out.size(); i ++ ) {
    +00243 
    +00244                 eoPop< EOT > mig;
    +00245                 select( source, mig );
    +00246                 em.push( mig );
    +00247                 coop_em.push( out[ i ] );
    +00248                 send( out[ i ] );
    +00249                 printDebugMessage( "sending some emigrants." );
    +00250         }
    +00251 }
    +00252 
    +00253 
    +00254 template< class EOT > void peoSyncIslandMig< EOT > :: immigrate() {
    +00255 
    +00256         lock(); {
    +00257 
    +00258                 assert( imm.size() );
    +00259                 replace( destination, imm.front() ) ;
    +00260                 imm.pop();
    +00261                 printDebugMessage( "receiving some immigrants." );
    +00262         }
    +00263         unlock();
    +00264 }
    +00265 
    +00266 
    +00267 template< class EOT > void peoSyncIslandMig< EOT > :: operator()() {
    +00268 
    +00269         if ( !cont( source ) ) {
    +00270         
    +00271                 // sending emigrants
    +00272                 emigrate();
    +00273                 stop();
    +00274 
    +00275                 // synchronizing
    +00276                 sem_wait( &sync );
    +00277                 getOwner()->setActive();
    +00278 
    +00279                 // receiving immigrants
    +00280                 immigrate();
    +00281         }
    +00282 }
    +00283 
    +00284 
    +00285 template< class EOT > void peoSyncIslandMig< EOT > :: notifySending() {
    +00286 
    +00287         lock(); {
    +00288 
    +00289                 if ( imm.empty() ) {
    +00290 
    +00291                         printDebugMessage( "entering pasive mode\n" );
    +00292                         getOwner()->setPassive();
    +00293                 }
    +00294         }
    +00295         unlock();
    +00296 
    +00297         resume();
    +00298 }
    +00299 
    +00300 
    +00301 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_sync_multi_start_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_sync_multi_start_8h-source.html new file mode 100644 index 000000000..11180e119 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_sync_multi_start_8h-source.html @@ -0,0 +1,196 @@ + + +ParadisEO: peoSyncMultiStart.h Source File + + + + +
    +
    +

    peoSyncMultiStart.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoSyncMultiStart.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoSyncMultiStart_h
    +00025 #define __peoSyncMultiStart_h
    +00026 
    +00027 #include <utils/eoUpdater.h>
    +00028 #include <moAlgo.h>
    +00029 
    +00030 #include <eoSelect.h>
    +00031 #include <eoReplacement.h>
    +00032 #include <eoContinue.h>
    +00033 
    +00034 #include "core/service.h"
    +00035 #include "core/messaging.h"
    +00036 #include "core/peo_debug.h"
    +00037 
    +00038 
    +00039 extern int getNodeRank();
    +00040 
    +00041 
    +00043 
    +00051 template< class EOT > class peoSyncMultiStart : public Service, public eoUpdater {
    +00052 
    +00053 public:
    +00054 
    +00062         peoSyncMultiStart( 
    +00063 
    +00064                                 eoContinue< EOT >& __cont,
    +00065                                 eoSelect< EOT >& __select,
    +00066                                 eoReplacement< EOT >& __replace,
    +00067                                 moAlgo< EOT >& __ls, 
    +00068                                 eoPop< EOT >& __pop 
    +00069                 );
    +00070 
    +00073         void operator()();
    +00074 
    +00077         void packData();
    +00078 
    +00081         void unpackData();
    +00082 
    +00085         void execute();
    +00086 
    +00089         void packResult();
    +00090 
    +00093         void unpackResult();
    +00094 
    +00097         void notifySendingData();
    +00098 
    +00101         void notifySendingAllResourceRequests();
    +00102 
    +00103 private:
    +00104 
    +00105         eoContinue< EOT >& cont;
    +00106         eoSelect< EOT >& select;
    +00107         eoReplacement< EOT >& replace;
    +00108 
    +00109         moAlgo< EOT >& ls;
    +00110 
    +00111         eoPop< EOT >& pop;
    +00112         eoPop< EOT > sel;
    +00113         eoPop< EOT > impr_sel;
    +00114 
    +00115         EOT sol;
    +00116         unsigned idx;
    +00117         unsigned num_term;
    +00118 };
    +00119 
    +00120 
    +00121 template< class EOT > peoSyncMultiStart< EOT > :: peoSyncMultiStart( 
    +00122 
    +00123                                 eoContinue < EOT >& __cont, 
    +00124                                 eoSelect< EOT >& __select,
    +00125                                 eoReplacement< EOT >& __replace, 
    +00126                                 moAlgo < EOT >& __ls,
    +00127                                 eoPop< EOT >& __pop 
    +00128 
    +00129                 ) : cont( __cont ), select( __select ), replace( __replace ), ls( __ls ), pop( __pop )
    +00130 {
    +00131 
    +00132 }
    +00133 
    +00134 
    +00135 template< class EOT > void peoSyncMultiStart< EOT > :: packData() {
    +00136 
    +00137          :: pack( sel[ idx++ ] );
    +00138 }
    +00139 
    +00140 
    +00141 template< class EOT > void peoSyncMultiStart< EOT > :: unpackData() {
    +00142 
    +00143         unpack( sol );
    +00144 }
    +00145 
    +00146 
    +00147 template< class EOT > void peoSyncMultiStart< EOT > :: execute() {
    +00148 
    +00149         ls( sol );
    +00150 }
    +00151 
    +00152 
    +00153 template< class EOT > void peoSyncMultiStart< EOT > :: packResult() {
    +00154 
    +00155         pack( sol );
    +00156 }
    +00157 
    +00158 
    +00159 template< class EOT > void peoSyncMultiStart< EOT > :: unpackResult() {
    +00160 
    +00161         unpack( sol );
    +00162         impr_sel.push_back( sol );
    +00163         num_term++;
    +00164 
    +00165         if ( num_term == sel.size() ) {
    +00166 
    +00167                 getOwner()->setActive();
    +00168                 replace( pop, impr_sel );
    +00169 
    +00170                 printDebugMessage( "replacing the improved individuals in the population." );
    +00171                 resume();
    +00172         }
    +00173 }
    +00174 
    +00175 
    +00176 template< class EOT > void peoSyncMultiStart< EOT > :: operator()() {
    +00177 
    +00178         printDebugMessage( "performing the parallel multi-start hybridization." );
    +00179         select( pop, sel );
    +00180         impr_sel.clear();
    +00181         idx = num_term = 0;
    +00182         requestResourceRequest( sel.size() );
    +00183         stop();
    +00184 }
    +00185 
    +00186 
    +00187 template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingData() {
    +00188 
    +00189 }
    +00190 
    +00191 
    +00192 template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingAllResourceRequests() {
    +00193 
    +00194         getOwner()->setPassive();
    +00195 }
    +00196 
    +00197 
    +00198 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/peo_transform_8h-source.html b/trunk/paradiseo-peo/docs/html/peo_transform_8h-source.html new file mode 100644 index 000000000..b6ae9dc1f --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/peo_transform_8h-source.html @@ -0,0 +1,66 @@ + + +ParadisEO: peoTransform.h Source File + + + + +
    +
    +

    peoTransform.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "peoTransform.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __peoTransform_h
    +00025 #define __peoTransform_h
    +00026 
    +00027 #include <eoTransform.h>
    +00028 
    +00029 #include "core/service.h"
    +00030 
    +00032 
    +00035 template< class EOT > class peoTransform : public Service, public eoTransform< EOT > {
    +00036 
    +00037 };
    +00038 
    +00039 
    +00040 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/reac__thread_8cpp-source.html b/trunk/paradiseo-peo/docs/html/reac__thread_8cpp-source.html new file mode 100644 index 000000000..c35fc61c7 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/reac__thread_8cpp-source.html @@ -0,0 +1,80 @@ + + +ParadisEO: reac_thread.cpp Source File + + + + +
    +
    +

    reac_thread.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "reac_thread.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "reac_thread.h"
    +00025 
    +00026 static bool the_end = false;
    +00027 
    +00028 static std :: vector <ReactiveThread *> reac_threads;
    +00029 
    +00030 ReactiveThread :: ReactiveThread () {
    +00031 
    +00032   reac_threads.push_back (this);
    +00033   sem_init (& sem, 0, 0);
    +00034 }
    +00035 
    +00036 void ReactiveThread :: sleep () {
    +00037 
    +00038   sem_wait (& sem);     
    +00039 }
    +00040 
    +00041 void ReactiveThread :: wakeUp () {
    +00042 
    +00043   sem_post (& sem);     
    +00044 }
    +00045 
    +00046 void stopReactiveThreads () {
    +00047 
    +00048   the_end = true;
    +00049   for (unsigned i = 0; i < reac_threads.size (); i ++)
    +00050     reac_threads [i] -> wakeUp  ();     
    +00051 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/reac__thread_8h-source.html b/trunk/paradiseo-peo/docs/html/reac__thread_8h-source.html new file mode 100644 index 000000000..f215f33ad --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/reac__thread_8h-source.html @@ -0,0 +1,79 @@ + + +ParadisEO: reac_thread.h Source File + + + + +
    +
    +

    reac_thread.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "reac_thread.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef REAC_THREAD_H_
    +00025 #define REAC_THREAD_H_
    +00026 
    +00027 #include <semaphore.h>
    +00028 
    +00029 #include "thread.h"
    +00030 
    +00031 class ReactiveThread : public Thread {
    +00032         
    +00033 public:
    +00034 
    +00035   /* Ctor */
    +00036   ReactiveThread ();
    +00037 
    +00038   void sleep ();
    +00039   
    +00040   void wakeUp ();
    +00041     
    +00042 private:
    +00043 
    +00044   sem_t sem;
    +00045    
    +00046 };
    +00047 
    +00048 extern void stopReactiveThreads ();
    +00049 
    +00050 #endif /*THREAD_H_*/
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/recv_8cpp-source.html b/trunk/paradiseo-peo/docs/html/recv_8cpp-source.html new file mode 100644 index 000000000..2da83dbba --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/recv_8cpp-source.html @@ -0,0 +1,156 @@ + + +ParadisEO: recv.cpp Source File + + + + +
    +
    +

    recv.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "recv.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "comm.h"
    +00025 #include "tags.h"
    +00026 #include "worker.h"
    +00027 #include "scheduler.h"
    +00028 #include "mess.h"
    +00029 #include "node.h"
    +00030 #include "../../core/runner.h"
    +00031 #include "../../core/cooperative.h"
    +00032 #include "../../core/peo_debug.h"
    +00033 
    +00034 void receiveMessages () {
    +00035 
    +00036   cleanBuffers ();
    +00037     
    +00038   do {
    +00039 
    +00040     if (! atLeastOneActiveThread ()) {
    +00041       //      printDebugMessage ("debut wait");
    +00042       waitMessage ();
    +00043       //printDebugMessage ("fin wait");
    +00044     }
    +00045     
    +00046     int src, tag;
    +00047 
    +00048     while (probeMessage (src, tag)) {
    +00049       
    +00050       receiveMessage (src, tag);
    +00051       initMessage ();
    +00052       /*
    +00053       char b [1000];
    +00054       sprintf (b, "traitement recv %d\n", tag);
    +00055       printDebugMessage (b);
    +00056       */
    +00057       
    +00058       switch (tag) {
    +00059         
    +00060       case RUNNER_STOP_TAG:     
    +00061         unpackTerminationOfRunner ();   
    +00062         wakeUpCommunicator ();
    +00063         break;
    +00064       
    +00065       case COOP_TAG:
    +00066         //      printDebugMessage ("reception de message de cooperation");
    +00067         COOP_ID coop_id;
    +00068         unpack (coop_id);
    +00069         getCooperative (coop_id) -> unpack ();
    +00070         break;
    +00071 
    +00072       case SCHED_REQUEST_TAG:   
    +00073         unpackResourceRequest ();
    +00074         break;
    +00075         
    +00076       case SCHED_RESULT_TAG:
    +00077         {         
    +00078           /* Unpacking the resource */
    +00079           SERVICE_ID serv_id;
    +00080           unpack (serv_id);
    +00081           Service * serv = getService (serv_id);
    +00082           int dest;
    +00083           unpack (dest);
    +00084           WORKER_ID worker_id;
    +00085           unpack (worker_id);
    +00086 
    +00087           /* Going back ... */
    +00088           initMessage ();
    +00089           pack (worker_id);
    +00090           pack (serv_id); 
    +00091           serv -> packData ();
    +00092           serv -> notifySendingData ();
    +00093           sendMessage (dest, TASK_DATA_TAG);
    +00094           break;
    +00095         }
    +00096 
    +00097       case TASK_DATA_TAG:
    +00098       {
    +00099         WORKER_ID worker_id;
    +00100         unpack (worker_id);             
    +00101         Worker * worker = getWorker (worker_id);
    +00102         worker -> setSource (src);
    +00103         worker -> unpackData ();
    +00104         worker -> wakeUp ();
    +00105         break; 
    +00106       }
    +00107       
    +00108       case TASK_RESULT_TAG:
    +00109         {
    +00110           SERVICE_ID serv_id;
    +00111           unpack (serv_id);
    +00112           Service * serv = getService (serv_id);
    +00113           serv -> unpackResult ();
    +00114           break;
    +00115         }
    +00116 
    +00117       case TASK_DONE_TAG:
    +00118         unpackTaskDone ();
    +00119         break;
    +00120 
    +00121       default:
    +00122         ;
    +00123       };
    +00124     }
    +00125         
    +00126   } while (! atLeastOneActiveThread () && atLeastOneActiveRunner () /*&& ! allResourcesFree ()*/);
    +00127 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/recv_8h-source.html b/trunk/paradiseo-peo/docs/html/recv_8h-source.html new file mode 100644 index 000000000..2fd86bfcb --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/recv_8h-source.html @@ -0,0 +1,58 @@ + + +ParadisEO: recv.h Source File + + + + +
    +
    +

    recv.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "recv.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __recv_h
    +00025 #define __recv_h
    +00026 
    +00027 extern void receiveMessages ();
    +00028 
    +00029 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/ring__topo_8cpp-source.html b/trunk/paradiseo-peo/docs/html/ring__topo_8cpp-source.html new file mode 100644 index 000000000..06c17197b --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/ring__topo_8cpp-source.html @@ -0,0 +1,69 @@ + + +ParadisEO: ring_topo.cpp Source File + + + + +
    +
    +

    ring_topo.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "ring_topo.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, September 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "ring_topo.h"
    +00025 
    +00026 void RingTopology :: setNeighbors (Cooperative * __mig,
    +00027                                    std :: vector <Cooperative *> & __from,
    +00028                                    std :: vector <Cooperative *> & __to) {
    +00029   __from.clear () ;
    +00030   __to.clear () ;
    +00031 
    +00032     int len = mig.size () ;
    +00033     
    +00034     for (int i = 0 ; i < len ; i ++)      
    +00035       if (mig [i] == __mig) {   
    +00036         __from.push_back (mig [(i - 1 + len) % len]) ;
    +00037         __to.push_back (mig [(i + 1) % len]) ;  
    +00038         break;
    +00039       }
    +00040 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/ring__topo_8h-source.html b/trunk/paradiseo-peo/docs/html/ring__topo_8h-source.html new file mode 100644 index 000000000..90022d086 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/ring__topo_8h-source.html @@ -0,0 +1,68 @@ + + +ParadisEO: ring_topo.h Source File + + + + +
    +
    +

    ring_topo.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "ring_topo.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, September 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __ring_topo_h
    +00025 #define __ring_topo_h
    +00026 
    +00027 #include "topology.h"
    +00028 
    +00029 class RingTopology : public Topology {
    +00030   
    +00031 public :
    +00032    
    +00033   void setNeighbors (Cooperative * __mig,
    +00034                      std :: vector <Cooperative *> & __from,
    +00035                      std :: vector <Cooperative *> & __to);
    +00036   
    +00037 };
    +00038 
    +00039 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/rmc_2mpi_2runner_8cpp-source.html b/trunk/paradiseo-peo/docs/html/rmc_2mpi_2runner_8cpp-source.html new file mode 100644 index 000000000..df6c2b654 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/rmc_2mpi_2runner_8cpp-source.html @@ -0,0 +1,77 @@ + + +ParadisEO: runner.cpp Source File + + + + +
    +
    +

    runner.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "runner.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "../../core/messaging.h"
    +00025 #include "../../core/runner.h"
    +00026 #include "node.h"
    +00027 #include "send.h"
    +00028 #include "tags.h"
    +00029 #include "schema.h"
    +00030 
    +00031 bool Runner :: isLocal () {
    +00032 
    +00033   for (unsigned i = 0; i < my_node -> id_run.size (); i ++)
    +00034     if (my_node -> id_run [i] == id)
    +00035       return true;
    +00036   return false;
    +00037 }
    +00038 
    +00039 void Runner :: packTermination () {
    +00040 
    +00041   pack (id);
    +00042 }
    +00043 
    +00044 void Runner :: terminate () {
    +00045 
    +00046   sendToAll (this, RUNNER_STOP_TAG);     
    +00047 }
    +00048 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/rmc_2mpi_2service_8cpp-source.html b/trunk/paradiseo-peo/docs/html/rmc_2mpi_2service_8cpp-source.html new file mode 100644 index 000000000..764679f47 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/rmc_2mpi_2service_8cpp-source.html @@ -0,0 +1,74 @@ + + +ParadisEO: service.cpp Source File + + + + +
    +
    +

    service.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "service.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "../../core/service.h"
    +00025 #include "../../core/messaging.h"
    +00026 #include "node.h"
    +00027 #include "tags.h"
    +00028 #include "send.h"
    +00029 #include "scheduler.h"
    +00030 
    +00031 void Service :: requestResourceRequest (unsigned __how_many) {
    +00032 
    +00033   num_sent_rr = __how_many;
    +00034   for (unsigned i = 0; i < __how_many; i ++)
    +00035     send (this, my_node -> rk_sched, SCHED_REQUEST_TAG);
    +00036 }
    +00037 
    +00038 void Service :: packResourceRequest () {
    +00039 
    +00040   SCHED_REQUEST req;
    +00041   req.first = getNodeRank ();
    +00042   req.second = getKey ();
    +00043   //  printf ("demande de ressource pour %d\n", req.second);
    +00044   :: pack (req);
    +00045 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/rmc_8cpp-source.html b/trunk/paradiseo-peo/docs/html/rmc_8cpp-source.html new file mode 100644 index 000000000..a2a166522 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/rmc_8cpp-source.html @@ -0,0 +1,90 @@ + + +ParadisEO: rmc.cpp Source File + + + + +
    +
    +

    rmc.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; messent-column: 35; -*-
    +00002 
    +00003 // "rmc.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "send.h"
    +00025 #include "worker.h"
    +00026 #include "schema.h"
    +00027 #include "comm.h"
    +00028 #include "scheduler.h"
    +00029 #include "../../core/peo_debug.h"
    +00030 
    +00031 static std :: vector <pthread_t *> ll_threads; /* Low level threads */
    +00032 
    +00033 void runRMC () {
    +00034 
    +00035   /* Worker(s) ? */
    +00036   for (unsigned i = 0; i < my_node -> num_workers; i ++) 
    +00037     addThread (new Worker, ll_threads);
    +00038 
    +00039   wakeUpCommunicator ();
    +00040 }
    +00041 
    +00042 void initRMC (int & __argc, char * * & __argv) {
    +00043 
    +00044   /* Communication */
    +00045   initCommunication ();
    +00046   addThread (new Communicator (& __argc, & __argv), ll_threads);
    +00047   waitNodeInitialization ();
    +00048   initSending ();
    +00049 
    +00050   /* Scheduler */
    +00051   if (isScheduleNode ())
    +00052     initScheduler ();
    +00053 
    +00055 }
    +00056 
    +00057 void finalizeRMC () {
    +00058 
    +00059   printDebugMessage ("before join threads RMC");
    +00060   joinThreads (ll_threads);
    +00061   printDebugMessage ("after join threads RMC");
    +00062 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/rmc_8h-source.html b/trunk/paradiseo-peo/docs/html/rmc_8h-source.html new file mode 100644 index 000000000..73e24b896 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/rmc_8h-source.html @@ -0,0 +1,62 @@ + + +ParadisEO: rmc.h Source File + + + + +
    +
    +

    rmc.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "rmc.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __rmc_h
    +00025 #define __rmc_h
    +00026 
    +00027 extern void initRMC (int & __argc, char * * & __argv);
    +00028 
    +00029 extern void runRMC (); /* Resource Management and Communication */ 
    +00030 
    +00031 extern void finalizeRMC ();
    +00032 
    +00033 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/runner_8h-source.html b/trunk/paradiseo-peo/docs/html/runner_8h-source.html new file mode 100644 index 000000000..01da91281 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/runner_8h-source.html @@ -0,0 +1,102 @@ + + +ParadisEO: runner.h Source File + + + + +
    +
    +

    runner.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "runner.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __runner_h
    +00025 #define __runner_h
    +00026 
    +00027 #include <eoFunctor.h>
    +00028 
    +00029 #include "communicable.h"
    +00030 #include "thread.h"
    +00031 
    +00032 typedef unsigned RUNNER_ID;
    +00033 
    +00034 class Runner : public Communicable, public Thread {
    +00035 
    +00036 public :
    +00037 
    +00038   Runner ();
    +00039 
    +00040   void start ();
    +00041 
    +00042   void waitStarting ();
    +00043 
    +00044   bool isLocal ();
    +00045 
    +00046   void terminate ();
    +00047 
    +00048   virtual void run () = 0;
    +00049   
    +00050   RUNNER_ID getID (); 
    +00051 
    +00052   void packTermination ();
    +00053 
    +00054   void notifySendingTermination ();
    +00055 
    +00056 private :
    +00057 
    +00058   sem_t sem_start;
    +00059 
    +00060   unsigned id;
    +00061 };
    +00062 
    +00063 extern bool atLeastOneActiveRunner ();
    +00064 
    +00065 extern void unpackTerminationOfRunner ();
    +00066 
    +00067 extern Runner * getRunner (RUNNER_ID __key); 
    +00068 
    +00069 extern void startRunners ();
    +00070 
    +00071 extern void joinRunners ();
    +00072 
    +00073 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/scheduler_8cpp-source.html b/trunk/paradiseo-peo/docs/html/scheduler_8cpp-source.html new file mode 100644 index 000000000..aca90ba4e --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/scheduler_8cpp-source.html @@ -0,0 +1,122 @@ + + +ParadisEO: scheduler.cpp Source File + + + + +
    +
    +

    scheduler.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "sched_thread.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <queue>
    +00025 
    +00026 #include "scheduler.h"
    +00027 #include "tags.h"
    +00028 #include "mess.h"
    +00029 #include "../../core/peo_debug.h"
    +00030 
    +00031 static std :: queue <SCHED_RESOURCE> resources; /* Free resources */
    +00032 
    +00033 static std :: queue <SCHED_REQUEST> requests; /* Requests */
    +00034 
    +00035 static unsigned initNumberOfRes = 0;
    +00036 
    +00037 void initScheduler () {
    +00038   
    +00039   for (unsigned i = 0; i < the_schema.size (); i ++) {
    +00040     
    +00041     const Node & node = the_schema [i];
    +00042     
    +00043     if (node.rk_sched == my_node -> rk)      
    +00044       for (unsigned j = 0; j < node.num_workers; j ++)
    +00045         resources.push (std :: pair <RANK_ID, WORKER_ID> (i, j + 1));    
    +00046   }  
    +00047   initNumberOfRes = resources.size ();
    +00048 }
    +00049 
    +00050 bool allResourcesFree () {
    +00051 
    +00052   return resources.size () == initNumberOfRes;
    +00053 }
    +00054 
    +00055 static void update () {
    +00056 
    +00057   unsigned num_alloc = std :: min (resources.size (), requests.size ());
    +00058   
    +00059   for (unsigned i = 0; i < num_alloc; i ++) {
    +00060     
    +00061     SCHED_REQUEST req = requests.front ();
    +00062     requests.pop ();
    +00063     
    +00064     SCHED_RESOURCE res = resources.front ();
    +00065     resources.pop ();
    +00066 
    +00067     printDebugMessage ("allocating a resource.");    
    +00068     initMessage ();
    +00069     pack (req.second);
    +00070     pack (res);
    +00071     sendMessage (req.first, SCHED_RESULT_TAG);
    +00072   }  
    +00073 }
    +00074 
    +00075 void unpackResourceRequest () {
    +00076 
    +00077   printDebugMessage ("queuing a resource request.");
    +00078   SCHED_REQUEST req;
    +00079   unpack (req);
    +00080   requests.push (req);
    +00081   update ();
    +00082 }
    +00083 
    +00084 void unpackTaskDone () {
    +00085 
    +00086   printDebugMessage ("I'm notified a worker is now idle.");
    +00087   SCHED_RESOURCE res;
    +00088   unpack (res);
    +00089   resources.push (res);
    +00090   if (resources.size () == initNumberOfRes)
    +00091     printDebugMessage ("all the resources are now free.");
    +00092   update ();
    +00093 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/scheduler_8h-source.html b/trunk/paradiseo-peo/docs/html/scheduler_8h-source.html new file mode 100644 index 000000000..2e213e3e8 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/scheduler_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO: scheduler.h Source File + + + + +
    +
    +

    scheduler.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "scheduler.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __scheduler_h
    +00025 #define __scheduler_h
    +00026 
    +00027 #include <utility>
    +00028 
    +00029 #include "schema.h"
    +00030 #include "worker.h"
    +00031 
    +00032 typedef std :: pair <RANK_ID, WORKER_ID> SCHED_RESOURCE;
    +00033 
    +00034 typedef std :: pair <RANK_ID, SERVICE_ID> SCHED_REQUEST;
    +00035 
    +00036 /* Initializing the list of available workers */
    +00037 extern void initScheduler ();
    +00038 
    +00039 /* Processing a resource request from a service */
    +00040 extern void unpackResourceRequest ();
    +00041 
    +00042 /* Being known a worker is now idle :-) */
    +00043 extern void unpackTaskDone (); 
    +00044 
    +00045 extern bool allResourcesFree ();
    +00046 
    +00047 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/schema_8cpp-source.html b/trunk/paradiseo-peo/docs/html/schema_8cpp-source.html new file mode 100644 index 000000000..d87a044ef --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/schema_8cpp-source.html @@ -0,0 +1,179 @@ + + +ParadisEO: schema.cpp Source File + + + + +
    +
    +

    schema.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "schema.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <iostream>
    +00025 #include <assert.h>
    +00026 
    +00027 #include "schema.h"
    +00028 #include "xml_parser.h"
    +00029 #include "comm.h"
    +00030 #include "node.h"
    +00031 #include "../../core/peo_debug.h"
    +00032 
    +00033 std :: vector <Node> the_schema;
    +00034 
    +00035 Node * my_node;
    +00036 
    +00037 RANK_ID getRankOfRunner (RUNNER_ID __key) {
    +00038 
    +00039   for (unsigned i = 0; i < the_schema.size (); i ++)
    +00040     for (unsigned j = 0; j < the_schema [i].id_run.size (); j ++)
    +00041       if (the_schema [i].id_run [j] == __key)
    +00042         return the_schema [i].rk;
    +00043   assert (false);
    +00044   return 0; 
    +00045 }
    +00046 
    +00047 static void loadNode (int __rk_sched) {
    +00048 
    +00049   Node node;
    +00050   
    +00051   node.rk_sched = __rk_sched;
    +00052 
    +00053   /* ATT: name*/
    +00054   node.rk = getRankFromName (getAttributeValue ("name"));
    +00055   /* ATT: num_workers */
    +00056   node.num_workers = atoi (getAttributeValue ("num_workers").c_str ());
    +00057 
    +00058   while (true) {
    +00059     
    +00060     /* TAG: <runner> | </node> */
    +00061     std :: string name = getNextNode ();
    +00062     assert (name == "runner" || name == "node");    
    +00063     if (name == "runner") {
    +00064       /* TAG: </node> */
    +00065       node.id_run.push_back (atoi (getNextNode ().c_str ()));
    +00066       /* TAG: </runner> */
    +00067       assert (getNextNode () == "runner");
    +00068     }
    +00069     else {      
    +00070       /* TAG: </node> */
    +00071       the_schema.push_back (node); 
    +00072       break;
    +00073     }
    +00074   }
    +00075 }
    +00076 
    +00077 static void loadGroup () {
    +00078 
    +00079   std :: string name;
    +00080   
    +00081   /* ATT: scheduler*/
    +00082   int rk_sched = getRankFromName (getAttributeValue ("scheduler"));
    +00083   
    +00084   while (true) {
    +00085 
    +00086     /* TAG: <node> | </group> */
    +00087     name = getNextNode ();
    +00088     assert (name == "node" || name == "group");    
    +00089     if (name == "node")
    +00090       /* TAG: <node> */
    +00091       loadNode (rk_sched);
    +00092     else
    +00093       /* TAG: </group> */
    +00094       break;
    +00095   }
    +00096 }
    +00097 
    +00098 bool isScheduleNode () {
    +00099   
    +00100   return my_node -> rk == my_node -> rk_sched;
    +00101 }
    +00102 
    +00103 void loadSchema (const char * __filename) {
    +00104   
    +00105   openXMLDocument (__filename);
    +00106   
    +00107   std :: string name;
    +00108   
    +00109   /* TAG: <schema> */
    +00110   name = getNextNode ();
    +00111   assert (name == "schema");
    +00112     
    +00113   while (true) {
    +00114 
    +00115     /* TAG: <group> | </schema> */
    +00116     name = getNextNode ();
    +00117     assert (name == "group" || name == "schema");    
    +00118     if (name == "group")
    +00119       /* TAG: <group> */
    +00120       loadGroup ();
    +00121     else
    +00122       /* TAG: </schema> */
    +00123       break;    
    +00124   }
    +00125 
    +00126   /* Looking for my node */
    +00127   for (unsigned i = 0; i < the_schema.size (); i ++)
    +00128     if (the_schema [i].rk == getNodeRank ())
    +00129       my_node = & (the_schema [i]);
    +00130   
    +00131   /* About me */
    +00132   char mess [1000];
    +00133   
    +00134   sprintf (mess, "my rank is %d", my_node -> rk);
    +00135   printDebugMessage (mess);
    +00136   if (isScheduleNode ())
    +00137     printDebugMessage ("I'am a scheduler");  
    +00138   for (unsigned i = 0; i < my_node -> id_run.size (); i ++) {
    +00139     sprintf (mess, "I manage the runner %d", my_node -> id_run [i]);
    +00140     printDebugMessage (mess);
    +00141   }
    +00142   if (my_node -> num_workers) {
    +00143     
    +00144     sprintf (mess, "I manage %d worker(s)", my_node -> num_workers);
    +00145     printDebugMessage (mess);
    +00146   }
    +00147           
    +00148   closeXMLDocument ();
    +00149 }
    +00150 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/schema_8h-source.html b/trunk/paradiseo-peo/docs/html/schema_8h-source.html new file mode 100644 index 000000000..53710351b --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/schema_8h-source.html @@ -0,0 +1,83 @@ + + +ParadisEO: schema.h Source File + + + + +
    +
    +

    schema.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "schema.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __schema_h
    +00025 #define __schema_h
    +00026 
    +00027 #include <string>
    +00028 #include <vector>
    +00029 #include <cassert>
    +00030 
    +00031 #include "../../core/runner.h"
    +00032 
    +00033 typedef int RANK_ID;
    +00034 
    +00035 struct Node {
    +00036   
    +00037   RANK_ID rk; /* Rank */
    +00038   std :: string name; /* Host name */
    +00039   unsigned num_workers; /* Number of parallel workers */
    +00040   int rk_sched; /* rank of the scheduler */
    +00041   std :: vector <RUNNER_ID> id_run; /* List of runners */
    +00042 };
    +00043 
    +00044 extern std :: vector <Node> the_schema;
    +00045 
    +00046 extern Node * my_node;
    +00047 
    +00048 extern void loadSchema (const char * __filename);
    +00049 
    +00050 extern RANK_ID getRankOfRunner (RUNNER_ID __key);
    +00051 
    +00052 extern bool isScheduleNode ();
    +00053 
    +00054 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/search.idx b/trunk/paradiseo-peo/docs/html/search.idx new file mode 100644 index 0000000000000000000000000000000000000000..63b3278e7a107cc56a92ac02c724d16ea3e59ffe GIT binary patch literal 378366 zcmeFa51dw2wKsm$a}*7I(eOrvIwI9%pj4BWxO6W!$*4<(MP2Gr!^6xo%;?NKCgXEGkS?RMJt$MB^5{(T%!fs3=pBlA=*@yT9*Rd#!!;InOg-_s{RO zT6{jk*?-pFd+qODd+oK?-se11KQilMk^M6S3;{#H5HJJ`0YktLFa!(%L%U3Ge`l1HwFE=J5P0<=5FfHI!&H38x=ehiNIYz;&x(hQ55g0Dm;&*zk7wc*F$De` z5r~I<`p=Q=A$g96HE>=$?5qq;JnSbv9uIrjhba&rI>*Q3L;It6g!3W9BYHVKK5}>z zANe{@V*x|J5O{SX5FdGRhQavAcW2{A{X7%bNc`GC4My?E*9PI^eV79A$hT+W7BK|= z+!2UJuKIKDg6BUTdAkp5ApV;tIT*k0Fin#9QBnN5lkj&r{(k85;y3J#;x`_Hzw!7x z1%Fc={pf=|jRgz=L*UhiKzz(}W-30WU!EJI_?TUu(fF9XY53TVAbedEANyNZ=C~u$ z^y5C{!xk_E41rfS0`YNMG7QGYZO_J!U*O~M@t+IAmj&UzAbh_MTfh)71YX?;#K&)C z2IDb@%k$_A!||BenYc#cF?|}`=QAF2*FN(t(-8P`Lm(cr`Ol5zSHy2T=4VV7pYWz3 z>Ejcy#~=IJD1LKl3lMSq=8N&SW5{xrVF(xke>n)mZ+TC}&ctu|OvQ9dGz1KRS3d&r zTN+>eOd5xVfFbZdflK>W@LQT)y`@#pRX#WihA7T0_(ifelDw;F#BS1M|0hJYdPDncNx`8Ur^e9Akb z_>{j(;~%~`ia)$2h^KdZ;tvP<;v?=3QG7b?0H6M8{4MrnEMN#20)IUS#HWAZucx!t zQ$yg-9D(@s8#6tKPk%le|M-7$JpRO|e0uze^P>0@7x{P?h(Ga_Flu2#zz}#9A`s8I zo4JZ-4Y=ng9h31VyFIsY?IlrMds`ZxQys-~{?XCTft^1`&IStdErCKQiW^Sz^c092 zZja)5@64oG#1Jq9UL6R;^V0o3aTL#c$TJqtdnt;We(K|4AU@-5J{q4nI*QM9?-6KX ze5QMkC_eMonq*Hyz!3NgKp;MI5BDN&{;uy$-2BTZZaK-vEno;30B$K%$IL~-k_J{|_*R(Bte(&DoY4YMq4 z2p9r?p$Noho$wdhGwYTiUe|}Yrp_Yg_1D%Cr(K(CYn$jfSXS$aRbW@MoO3kHtgw%qqpyZK6q#L}|V{n^V z3!P1+R!RY+K&iGkzd#&zQ{nbPD>c`>oJw*kT5D*crn)wQ)Mk!J(^#?pe?mO?Alb@m(>+eA}W%L&6MQ|1kAjt!} zXcuCRfpbSvP-O7j2~nY;lhww#lcU1CdF{n{Dxc@h&^Y0F?xLvBJg?N=)Y;fV{GHoZ zXl^bopwLzhapGX1xwEmb^Z!O+Dni&A{}%&ECc87w5g=vz`6wz-&gaJ!Iyy>qO_=q>;OEyBIu^Fp zHDX;Tb#eaALI=&IB_r^pge9X39c^fo!__EUY$x$vQiEXAJc4z}EUp6z0J_Afu_g7{ zq?0;iDXOk27BE6pZ>4f=%8C?P%GmMo15+|KesXLGTDbqzy=`7*!g7ndddh0YS` z`XxK_G+xFpK)1WPF(nG^G>#XHE_8L4TEJ!SBamO;RF6#R@)v4+lwwl|PDbqu(sXO#m#Bj*@W%I%jz0SO}w^VyaMY? z-I?RtN=>bzN-tgo^457wxR!G{lgjm@T!+K%lHpMuq>41bC8O$^NvesvOKR$xn_A`y z%^c34~3kUFV(^PVjG}m9Mkh^(t~co9O5Otr=E-ip=m?7 zuGl6EL(d{awa%q=rFvq!XE}2`X* zXDda!1dpCUG=WLu7L%Ucln2(S?n}WV!PdpI_GB_0+g#T#9Zp7Dk)|`Rf|ricI5Bu> zr&fusP<(M+siTu;)1^JGZPf#p_STiUnz^x+C`3J{0@Nvh;xQ5yEncDCg%!?05)9PpO`B^q3s)|W9#S}i3IQobEB@WVI} zV63wQ9S{-j3XOXU>`<}SFONJW^d42!+SQ^K{N;c~s*%hvj&?2wSXqMeQdXQEy&Tw~ z!6q8|%LzEgx73G?iQ6|^-W+BTZFiVJj5U{7?Owh$pV8H-S!uVWe%S?G&b?*?B?IPy z+bt~v0A9j#d!=Q=b9uUWfxl&=%JSI4ST>f@WfQY(0!O&>%OED1hG2FyH7x8XLYcB1 zw2UQ#s)kgM6lEKBv4)f z9>Qdg@f9Sdeheo~5`?cTGI9v87g9URR!_jSOV70#UtUlh4A` z3*bSF;7NssvvoRL0g3U0GHFto6XXOVe`P2!lP0w}Yv9UIRwhmAYSr{mP5>8% z8~j|!QX+bF(xkj7T*-3dvvsF*C1e14sJ*Ms_3FxLq&`${Q?(ccA#gHvWq%3_>(#4b zqHsGmQrTC5z4msuUA+oSadn&l7El$DkmNxzaVnOxwk}GX8P&ns$MVce+f{QUR-nA) zbzspgQdjlqM)RuG9Maw7Rh#Ott&_Fss@*QabuFLBgrZZI&*m&@d^zT7XA^J3m#>WK zy1+NDx69YmbwNUCmMq^G!7w2vmJdet#d^}jtmVI0gYC7mQolF_TRnyed7%8_^!j2m znUfB(FV2!EW!2YXJ3xW9`XV;+v_O1uQGF5pZh@vI%Y;@-7#b9$%%%0kx+Y$|zqq^} zB}xlj^L?naz{OYB7aIU3Nx>J_5p{=y@ao}IFYhstb@ixBE0i*p3+j?~^#l;WT%~2? zYV@E;-kz%)>#R^LP>nUja!k@Ym39nh|z z?yXL1q|&`Lo_0a0{Y+=a^-l4Lv>_t0=`MwWv+A2U z_PRK`0eV+zgvF@0Ut46;sdsav79``)yRDu!!M!`{OFVC{9afLs3LD4Qj*jZv3kzfy za&2`~-{m%>j<6=GUkEQtQ(Y|#_RcCyUa!WgPW*e+dF_-ef!jt&-pp(s_IUGQVM}IX zHq*f;d5farNhC_wE{%#b|E^t*T^b3~wQI0xYvMj%HxfY_lk2eg>u6$|>AG=52iu*k zb5%gqRq%avHM8}|Tg2-of(+WJn(dQ$#a5R(y>ekk>qr_ak(>lCM|D+pYwF0C@V1n8 zr{!FYLn`)E z+Gur^YaBV4J&@RW3&#;;wH??^IofRjTh&#bLzlVJvq{YC`Jd`DSAKn5snZT|axr-K zfTJD}6&o6w>R{WmEAjf#8YKmDeKlfkb-KPLDv~^1KP7^HHQn@FKV71f*BHTz2k(Qk z%&%WmY?)iCCyBeh7r`RbIqBW&S2`-5=-01dL+kqO#g;a9m#wJQIzYN&s*t)Fz5>$S zik(cm_~ceBFSd3#FU*QQ1w zvz|;>Qlzc(xQ6CpX)bN`Z&+L`b+yrEoy+wUOFG3SSE02kCSFyN%^cP+w{b(oiRs z>P*sBNeYVsNyg82sc$csA$K`V%Cx>4hk=l678nNQINUfkMJK5J#)&~)=;)1830to8 z&Eu+24YX|MLM(SUAz%hl43Iy+)Kt$X-w5Eq5!84d>l zxDkU1MOdL97|&FB1+@*N{hLf3*{1Ds43LHGfZ!|W4sfO1ub|W9T!(z++5gI7R0F?o zIow|XhruDzS9;Td=Q=m1acW{Pz?t)RN5%H`Qae1OY<%8?DClk)4#SuoZ#RvKisX{S zlFaMNO=F{CCz)Y4O^AwJ?HFqIWZl#p`3=2u0o>G03GC6hX~5@E!A&Hu&JRM-trDdP zy)ww7<$tBmB%QKykgIf4{pOg;A@$}FT0wPHsiC2xjV5RZE54g+91m3Z=4nKxx}FkX zusJ?hb==$*6}w?f!r*4|MTkL+SqX}Z~f~{F4&v& z5@A>!K({P&T=5XzvcfgS)vp3e#P_W+QD7x-9;91GAPT)iwcWar*@m!FiCecxY2xSB zo!|#k1Qs95z$zd`{orz|z&dw|QCu}KY5)+;&Y`(#YD1wN$6}~s)r^KhS2OXjYPL%p z?`#`NX>2Ie(MgJw>XfKc@~ajj3O&ukvZ|*6_Oq+8m(r>DK-9o4LJDt*8n7s1xu8C+ z+TKv41Cmv{H1TAL?Ts25&>dRoZW|WSPGLOOGubfQHZoPNw?WaW>)^KLhNgD5$ZzXL zDvRE2s~eiSnXlXW-5KF+8|eg&+P-ZYQ^8hfZ=v~e+fI!m@>Mj8k!|wlM_(Q7;w%kc zt!`-M1KO|FL{P3oKcxX)KixikZFfV7Jk-?8YEY!dG^>Y`GG=&IPiQE0@kV&{yfESZ1?1>t%;1y|fD5F;nhF5R($wc<`iAd+I;n$~z z$CO`R95r;c(-2`>L6Y?K<-wf$dY?w9j&Dxa7^C^k#T4a?9?sydf3si0l(A;GM5;T; z_FFSS+M@7e&cfWl4vCG7HPfPbI;v}CM$qF>YR%)@y4p$RsmL6c#s%V$@7TrD? zL0Sh&4gU1y_8CZ17sc)1w3Gc^x1(azMC&bd0PEV@cO%KIaixYW<0LJn&3%dB?11UUO+KOTisI(L6HU?&zIY!Z9UooV8mipY`k7T@)POOnwHcV{e4BdqjxmJBQI2QD9`$ zxNt5oXgXW<|D9DXg>q}6rjw|!fPmx_}c$qm6>D=E$enaR7>_&8OxzNy7+Z>W2BZ9t5kdqLAq*Fq4vdzvqxb>5Am zCfT(R0hsYyB#ICC0*-~dw?s{?Sn|YeeD`*!NnM54Rk4d;-8h^tP!GhJv2M`CapM6s zuG`He#6NNmYO9C;Oiq>V8BVLp{HA)`SRmqiMrl!stbo@GmFk(@J*%iDtY?DGJ!_?A zmgalei-vwn#n5xHoQUrG-HS<=!b;CuL4=YK88n&@9(!?!mq2JNCS^ z@g*Mb#c34*LhanUh>N?`_ui#Vt@BG~a{6*G<7VN#ebl_s`};V)_1F z1f|D<@%<}7SaOs6{(fY$v-19}t~eJOj9iEB-^-vrFpPZ5V1WhcfpG+CGfnXaW=ICR ziXWKmV^qrnbSuJ@VqNt>XLJS*gxy-e1j{I%UKx5|b#w+qpNejZa56#XVk8Qbu+^PZ zJg`U7{rb{BI)XEEUU5A6T0q%90Xu%QOTo#_1(*qq4(tADI8Ua^`)6|j3N^wD>=bc- zCkH8Uu`5Nv9v9^C?C*_K&GxV45cQ#d4Q^4=wVYsZ zeu)Q>d1i5eyCCx5a7Rflkq1YC4p%BDIF@KAFrgW%3I!%ZcxX9(a88uDbM@eI7p1H< zk&fzv>tXWwMd86s6vNJpyYb*w#E5*b8Fv#fQP^og3l??f!QFE1^Uw&&Cdp|b|KUTk zDViaDsGE{RrXE^Ok$LU#ZV+`}#Ms#3E|8SdJZ+mz(GsFwt!|Raf?ngd600oFy@6z|U3aAGIG3e=b zSp)m_C}l*{0+Yrs@YKw}=$0aF<(fM9`qe-+C>l%bEgz`yUi5(}E}05U&(uLFvs$oS zc9J_#PhqaO%~wn`i!!B7YH_VCMGJLpBvS*+GZzg9`s9Y>z(%T&2)0Gx;x@38&QaL7 zd1MAM8VSEgW>aDdL-9x>QYmeb6mzuwz7k^ckU{?2fX zqR@9nA>w=)>O!T|aXys`X9>n}ecs3Vohcv|p9z(ni6}KoVdC2rrdVgxawZNDD7Z9o zsC{R7)Z(nA@AS363T65I&T842d}ke}QGtyuuvDmobkAep#qKXEhmbNAeY{C;) zIcX=u>hIC5l;EyEJ~}92mDNXgQvytpPBu$7P$jsI$tq^UaEdG_u)^OkiXu(0%J|yU zhOrdImAmwc?1l-NLl4v9T$lCNhF;FZ2@qYM+ptnIDYAwln0SQshV>L_fLbB}*uXf|m%7{@Y6GJL zHA7j9QWvhb%yZ{}8yrfFusV_b7=xtQxVtRL442%Qe2n4pG@8n&`J?B@7%{Rp(mS+| zF=}oFqzl5W@cWWw@fbtLXv#k9v6muE}udM)~~X3D~zszO#b zWx+!S7oiir$CgAbaJSH4yIM$uA6v$0}ntKKrFKh=qwxPwX){kv=nYw~L zw#QY-i`nC`yT1JR2t4(;`SBV=)Wm#zR@AbvRu+=Sdm>z_a%<(|8)$<`Rsj1K9^Xt+ z;_mTnvh#d=XM~No_#eJIqLp1Z-yPjrgzlPKYH!5td60j%S`(aZ`)-ZKsj}}*kt#Sc zowlKrI;+*Km*2(4lyGsb%8k_#ZU-QLV@)eAN@4Y4VcR%|*ry6MHn);_wz0dFjA-Ww z{a37#*~=yW+LlR?L-K!Jkx4~qSft_G1=PU54z`xE_s72nR)XrWZb4xyxZj&0z+l_T^OFoCvl%w%V-DzTfN&dCKVK zblJ&%e+6P{Nq&D7MaTg}bORJ2#3(XIk(Aj@<0$U7E}LdiI5k~2E#W-4)2NzFy%dAK zf`F6m*|ZXI937O%?TE>enz)-b5G6bVM71??(`h{2>V(NdUD~uOoMM~ymgds!G|u|L zu+m&yP3`Jn!{-O19U;N`gKA%hqxG&7<+QmR3NCV~ZVvolS5&IQr47p18`Wczl+)*<6kE%5%;gWaaM-o-!<`ZD41T!BNz7)F9Aa_v zGP!2Bd1a|}Jk29Y97L`T&F0-viDuG|Mnt7HcnDJ8#g9fiFP6L0_oHg@X*v1$(IOwE z!b_EuA_Is}_x^2~(6IILZ!?vqnjD4yHixLPS4e*xrzAKCE_J@S3NK%jI`?(*2Wll1Md$*%R@}yB>sE=o1_mWY!}+sVA{3s15pf5(-pKnI+=nzuKf}2b=ap^F zezsb2oJ;O!>k!2oB6_YxWd|sUZUDG_KMZ6_1sl0kF-nPrvOJV{Vq{rrSOP#0QF+mT z$eTz{jN4aT!7YI&Chm(+J$5ASPfXnxrA{`U`A-nid|T#;*$CmNmEcNk@+W$cTH##v ziS=AA=#Z~xTRuk{ta2^x%;&q|dSVaKTXO^Ua|lH?F=$ci2@U@B8)EGOY|+lW_2UfKNHHd;!DXZ*l>TQ$_OmcZKw@R5~i#mh77}Gc?>_Z7Pu=8Uefcky4=? zf;=Oe+xqv-NX4<;_$QPZVt}`x3S0?JC+oKDnUtV=nRJZalO$Sc*?=H8EZ(5zX7mlE^MqOMp)=WFbbG0%NHOLM5R6pWrV4pp>Yv(L zAvcirrv@wJhf@C3?g|9rT75dIkmp^kPYO=6kP_a4QkNfPt9 zbQeB#e>_b>m?uHkfZ5X|bong4eEKv=SU!jDPPmtVo`zJpON+A2d76YKOD|$Z%`8S{ zu@EHmZ~{vOTboa>k_2b`J-t?<8DV(3Us4tJjamz_1v{0R+9GKw{M#jkRXvgHl7wIk z_NFy~V*4;e%hnLe80j+ns*!eSdljG z8F`WnLfh-}*)%z1UT<&9XJ&NT_C@*ZRF7?6n$OGVuIMV8gWO!x*a>6YRPdP(ZY({sy<#Tx7mfO^ zikbc@=`(vP=KG_(XNOhHCn*;<^Rpv~0%8QEol}C(Rv|0Zy)2n&6x=;KE=Q1&#%Cwy za%Ek3cB)JF8d)p$2~_orGNNqdv&-@WF@LtPEH@+K&vusOr{ewW;u|lFDu<&vFb>=H~Lu%yc7~ZRIq9efI3m z^6bz&dv;HGzL*I+;_@tS9qbrUo|)POJ4To12Bz7L>hf%FneC`4&&(QTJEoLVIJ<1e z^zs}w%XZ8v&q%GZ9rfk8H0*$PM_WECHC=WrlDyR5_wtb@Q6)<&5N0G~$MOmk!5rDq zS0O($OLnZTK#|Uq9qTG&XJ*QdfeIA4xw2zZ1)7XRip{iR>;4EUtN$H?70RhR?yivM z1#&Q|kef>6;P49Bd{JX?RD~R;&$U=)4(!mK8vVzN@gOe-dJCkH^T7@jPybR8) zkQM0v!8ypEG%2{VG1$y0bTxpu>gHIPOMh?)r@KwU;4+TL*MtUFXpHVe46cdVaFdz5 z--9@PXlldz)O^17ixCkn%etIjjE?wPt-BBLiz#imHcSUBznG3sqAhGKwYa-aznH}t z4g6iUU(^Fqc@30EafXGvxOCCzmo+%f>S%J6{SuYo!mfW|;g_?KDOXZ{*@!A?< z7Q8&pM~XYABBlp?J7*w5wb2#4I$WnFm9%p<66?F_`0QtAqfk&rC&F~!fWnKV1vY4R z?nMqR+2T4fH}dOYZLq7|9k*YP)I1)=K?3!L+9H#fw#2`7 zO?Yelxe-*tjikHH_}pYE!azMY4KbkR7<#TbYD-VLpX-xIEeZ8=t2O4oAMo5dO`=<% zL<3>Pt2Qbf&uyX@(x0E&hHEA^F0yXPL#JKp6@-YOWvn{er1FUGki(- z`8BwMNt59D^>j2x=Vi}tKqg-KXyx zHI^b&wxBmg{4`nMj|1)34tBW>JuPGTon~>)3A3^_!)1 zwMq_ff3sX7X!1S_5H$ZG)*J*0=_cHJX5nT z;47O1k;unEup)UB;;frgt?a}d7HiatOluaU{j%N3vh!?k(=Pkf}SiVgA;-IoX zeS2}Y@I{f`)D?OTM|pQmVD~5ooEw$hV_gR&29cq2afwZrkqF=JAD4eGa(5f3Pz)o< zEiFNqK061*d1QC5LIO_3Ra|zjZ!h{=;KUk)30Fucv=fw~VPAr@@bHo_Q@t-iTKJ0* zeChtBYU!lo^rfku2O^~w-Rb^IIpA>>DL?Qp^=Fgt%@+avrH%O<5BW=AIus!KPz-6E zm$par#;97sJcRV(lDloj{n!-}P?5cqfWXUDVGh-pDfn_t#Mh`^o`TPG;>Md?qk6eH z_-g0N-BG)%Yjp&@>@MHEyv_yXCGVF9B3K9~;l2m0%P((21Xr4gwU@U#)8XYomxiR@ z)*$HKmH2I+OU3O_tfB6f=5N=#G?r(5gX_0jgpgnR`R(?U1osU&ZBKQYrbichs3kB$ zRb_0=?A44tQ&KXzips?uetV{;S?T)=duFAnWC`c0t50(^hji|qHkS^0(QfToq)DFT zrJ9oGWVvPpdaeS#%+1^s zE4becMjg0miMJ6*l7F`wudJYbS)qO}dC2+wa9jy;mh12FO%7H{RO0vJ+#Z9MjNeam z5eMM!doUA;WRuuZzuya&3qGYwrY6$=Fsg&zr*q+{X%=h0KlGxihVity!6NSj^$#oM zRY+?14{KbBI>}ovQR?6yHqdvrsO>*&rVwBEl}*6j5tITGlCt-L`&PUIz^^}1t$Q0O zS4o#pL@sXcT}Kglhhr~r!nH(9Xq5R6;Njm3{g3HXBc*l+RZ|=c`ldQ@-<%-$k3m3L zV){SEsKwcpxcZ5_KTdF9QV^A9blM-cA;IZUWdG+##OOkmyFL7$v(h(4|8oT@ArdqM zJ)1-zW?^Ll#qK&SrEdEJ^dRps+{p0}D){2)CX;cZ%FXr(^W3ZB?rt7(le^eZJUz=FgU)#3;||C)|5yN=p2f+ z;?_DjU~xd7x)zcHdV=)OrH~u|m^?S$m5>~uLP`obbRi@MtO*KaT?felkPcs&;8~$l z8v-h+JKyikG$cGHk^>+m^tF?HnIXvmdoeW5a7hjv;R?9o2ac5(j7a$W=-WFO)dMGz zbWi}pi`RFsP2<>{P!!yE>4*qIl}ZS7I84yw!0ucky=R{sxI{X~E4T{9fy;bqASwq! ztQjt{ODcaYJ~?oer>P9pfon4aB4h{l`_#;EABcG%O{Rl=;1-{l8R`SK`}EvEAGpis zWF%Ny$7o0^ne1{|IA~a9%F5z>5N4{>tH>Ty<&(&Vf+2BttdoPrMIE>XUaa?@B})#P zh_^HNv!=;GQzP1o(;EoML9;sW%2_jBz@^u*NpB|y)pHW0g;c;nZJ;H?GdXCH+ZiMW zErqFy*PD}gGQAffZzLq~G?e4-a3t|;GG>Vaq}0-QI>mBJQW7tZ@QNioDkss~CrR8V zMrVSLFm%vs0hG9j-wsRSt$31f##rR!L#GtmjR?JGkt9BusFLCIJ?)7&$`_pUt538t`_GlqSKE?9CkRPP0UwIO;)t&f zWvRwh>H9!TkB>spGMpSbEnhc;m_OQ<9NLr1qBnI!aR@~(@kzC;M7Q|G)8x=KQi|?q zS55B1H;%Z$fsjE7qY%12t_uDErrDHhFhj-^TQf=2@?fqEeZ<6Zci3oT@ip}1uxd1g zua~31VKv~nUA_Q8;&>PajK7Zsjo4KrPdprT-XWhHHanXge6!+2`f^ip*y0QalYzT) z!^5r+iscy!Dzhq+LamXzk!EcAhFx;l`fSsyOE&4?U@I@CH{&94FUjI?jw?ZH@rUo%TGc^L4~ zGI~jz40c|s3Fz00bG0`F+g4>cRT~@h_Xn8HPLa3B; zdPj(B%MN7KWVid#VwnL%pMq7LOK-?k>)e%s*5+KM>xN`*Lnc0dMLpOF*{0_nlJORr z)Wc&0;W6Xa){@~EmSP(X;qY-R`{HFzhLhw|^7N>qi@wH~44(z3R13damJF}&=%U{; zV2wB&U#`O~BWP)-tA;N^33Ao4Cq5azlxX=)#ANvLj;^`*MmD~sBCF5vKBU0@p$4$t z;1JCJjzBVeUB^PON3QMU@R9C-EIGVNiTqnO$>Gx}jozqLoqhP6OiHES4oD7f)|zyw zJ-j>WIGY;liLe(qlUL-!d+ELiC9dpruYD(nub~hnt;f*;_NmF?8yr0$cKBwwV3HiZ zjeQfz5izCIl0o9Om&p-ToB|26<+K8{+1RF_1R(thZ*E(tG>5anxo zDH&ETzlWT>7F^-d0A;K}hJU#`diqelm+Y3oNc!Zi_n%$TPMj!ZfDeR$#gG0CZi@Q@tcWkHa4&@ zqln{CZJL7*lWUODmuO_tB&mE^nu0M69G%Ii6=@c~I+ToB74e-5cxGUvQ+;bW9(+wE z8PyL9WIj7ql2KbZn+OLzVg9>($?L}jdHze(c=3*YFp01G;41*~E-{BVjgAMC*H7_9 zDK_23pv2wizJ9UKW|jN;frxjEuiq5mjbbXXHKGqm5@fI66XBEV{85hN4KWNmvKGAq zEqTKT{UCethS6>-g+gy=%xulxI6Sw>dgEf)l!Ojw-?-Ifs@{QbD*dKc^2R}5G`Eo+ z4Q6OhM{3T!m79!)HPVDN8nup|jL*6i@n)Xu@#q<9l2TrC)YV3J@{-Zr?vtbx?7^}^ z-uh&8U&Lo!$>`O1a>_ac2#nDK2$1ZJ-b7iHbWDs-{;^Sg%!sZI9L(`9>zK(AmLzvb zmmD)AnvZXy=wforY+A6mzGE6WgAdP=V-|5b)wwisUhL$U0R-Fy!sM7u&Lkj$?a}-u zC|F|Um_75GsNHn^IyR2zW1q-7c0`2VDWbq=_j^UjvDM@*^S>LC99u(ivN8ODvGRHB z40kHvjeGvqdvYv(`pBKnB**qrVSlQc9J`U?tdtxi#|}md@G~)B;J6rDLK>LkMlIk+ zO|*bMk~5xvFeW)}24cKG9yfadz9Gi%=O@Q4MVQ9vxRnS%GZNs(ZClU?O+ulaR0V0! zrWDaC22<0nM^E$8I;$rJ{=d<=(bj-N&ej`ibbQkW9w zxDw6@cYL#pQAV!|l154sH>ZgikHhiX(hMiK;!!w$XPS|d=i~RJS$S^*9|I+0;vp!4 zSutirN<*$8o=4z+%;+H9dC!wE)kxzNbxe)RoixcksQ|;n4tFJIkSHb7*D(T_{`!FQ zbc|r@<$nm>FLkUB_~WkCcXNb z=2AtIk?KC?k(@9sQzv|E{u_csIaA70cut0rc%angOsYFvOHSy{q^jaMVM&z#-IU~n zWr3-4!ip&OgC5BVtD& zL!WhR&biP%&-${IK^{%)XiStm2xmw%3eOAh9E-oL{@r76yh_6dOj3@eW)e@Kf z%94y{(s`6i#}DFhd*?raC(3>9F_*slIhQW7m)!armwwxa@H`?)R)5LG?>$eRf8=Kr zLAJiN7h&oz`m_Esc+xoDA^GL~b~NCXX@-IB5a8t;edYBh zY1#eKqQ3Dps0Z~kpVaog(yD}R%6{lxX?_1&bccaIn&Z?r>XU|PtkFL|H{G1%v<4Wk zghSgwOj9}S&?u=Uxknw8Jm)r7 z$53_OdY8-pf6@kIF@pu-%s-yWw_+fCvixSs0C(;4|7aQL8pT-0!{bkU%UG(8P?}4y zER!reAiBesL46;f@x%Ck^iD@J>r)(Oy|%BsaUXT`g({}kwT;WY>z6K1b<`P`GR?m8 zz{9jJxN_n8_+L&#-`@5eSKm#tX5Fhg4SD(T@nea+yzGk{GKQZey$LK?pW(?m2~W{q zJU35tYYx*%IMMZH#e*o1vAX31JY_w&;SC&4?zx5Q=J8lug)rzOkLx|{i8NorNnHcd zq@GM#jCAM;PCJ-slGDD<<&(Pire&BP>WA`!GMq*_2kncEk-X!Bt`4>tK!3r_F3z?C z#*S?VX>-4J3F)uPP(GxmFtFG5xE-yR`iC;C(`lX4@F;|_KAcE4258^&FL;8t3=T-Y zW+u`}4?^F)-Pu3MKmWm%Ib)Z5o=ez*_VU-b=M}Qf-*}yiKS+2GKV&Nj-Y0EzX<}P3 zFDJ_!d@soW=s*57_iX%td!D1%qYsU4&F21;;URtglduF9iXZE7w9j&mr>?(uTn;`6 z3(!v8%Hiar?T)wNIqq4)BRVWf?pw_96jRhA^5*O)#Ko@TvGZf*Fmf^>{RnYW8S*lt zd}HhiKjStN(HY5ABD>d5N_kN|_s@?z+AqA%J-<;cG_W@q2iUZNv9oni|Ftr956BwB zd?DTQqOy5}tCQP8KG!F_D8^x*G)?M_qN7rM%z3DTWdl#O?N~+-f8Rr{EtQp7_q#ar zj(nCKJkMN#bUaxM*QKA==gQr`+&!5;&~e{Jx-{kU&P^QW`ZP_)@4|jZ z%jIPJgeH|$N)P61hG)uyY}_Mr>fvb|=QM4@*Zum`_SJFawpK=o&M%!)I(JnU=^T4s zk84l&Iw}`B$93-MTxTBMAh>}~o%^cOhSCALer9xm;!C;+^2WSl?3s6r)daVmdc8CC zO^#RPS;u}T-gV!W;T^Vh$H!bfoo*a`AC|r!>1bE=m(HJSfA8pJ9wj$_$;EwNEIzzlL3+~&~h1+ zRXO)_hvrN;Px3MzVvTy(7KCqw_iMnD{RVh0U&XkvJc&KV;ZWwnu;>n^ku`(YbLJB= zp=(~Ik7%Fkpgv*z-t$LpGnw%o_x#vu_q=$6dy1cf=b_rL!Z*tX+gRXT?Ex-FHXM8z zd3`3+o5dE-0#}e zIa8=|ah)qH3y=YpVdxyyfvS5{{(1cXrn*k3u2ug~W^U=)M>T%^K9P6RNB*W;x&UHWUfSt+!+hIzh7?A8>{8c7&d<3r) zlW@4~yHqE1Kih(6S9Q$$a=N9x zk7@lHaqjspzC_jxU2|2JTy(a}zw8$Gyh3zI?>HA%-E!T9E`FoQP%#lJe>o?rhL z_gwo4_x!e-pNyN>9UK;ZQ#?cYpgtNn%F4`9B6 z_7~vYpSL`NIOxS6m+`B~`0t9rM68^BuZ|l!>>5qI*XweT}H}sLxiw`ro_|uM_Y0wurQ&YdGJ8uF$H;_{cawTVT$v6Km z;=u2o#67t^k(H~-FD8BNqj8b&ZG?}6?|54pZlE(eN$2xE3G*DFFxru@*Aq8Pkuu;p zlZUx;>6~a>lU(}UyE&cnX43f&Xmsoti#H$*W6k3s_&wCXWjXz=YtryLU7MUf+3h*5s!*gFq!_8->;jW*jVV(!V!&QHqrr-RdH2lpaX?WdzY4{=Phm?J5!2dfB zNz*5*{epE^{X@D|>E6KmcgPl`F?_#!s$E`Y17Ke3`l@G9ejNz+!6f4t$2_gBrBg-r zw5Oo| z`3wpC7Eg8 zYGY(@mA+^8f&tFn{}}e2>J4bZvEaP~<)g0|{FEosZOBusRR;Z@1@g(|uwNW%?>5w) zUH59@Ut}5Jy2$3&@fi_>iBC-@95fuJ6Tg+xLz;bsXz@EU`gY%-D;MI$wldWV`O@)F{M84T z*<*troi92L{`^LDDfFN20oAXhdq3UV$=;1IkajsNenk$8Uga>$$Y}7nzcHr1fJdf> zjUqaH|K%!-naE{EE>y4h^Q}t!z73vE~%ksT1`P4q+8TurBAHZk0 z9{6<7tIfk}Kk<$b%ydixN(DSONxnA&=*Vj5v z%JehIR45C=AKyEaKJfiQ3IiWroABiOq(oaO4SgzYO!?Na^ge_0BoBP+I;MA_ls3N? z(z|A5dmiYHw@r3@XkEGn>i#NU_tmF4`Y*e^gUVE*ZQSej3yI%Xp^X~1xA6S#uZ=I) zxi+-V-=h5(u+laL$bLoKw{d)wj3e6%X?({N&v(7i#rcjY;<~T&Hh_~=#}nlA{oi-= zdcW-Sxi0?E|8UQLd98cuyeQu9;@p>DzAA3#iw_}#ALuTTJtN;)1z-No>RqT0`FeNt zTbH={wa@qd(Z%n3K%Q!Q?r|X8EpL}bKD|g>w_Y|9+`^9&B(MG<_5=b#_5&6pbP8(?W{vDot*A7p; zC!m-s76ZYaSn^me>7Gcj^?M=IrD?bSRNBRS6MEL&e7BhRfzD7_IA8GMyM~m9deol~ z>L?j|uIKOHk=7sje#`Va+VN@mvHV}kQ+=mK--kNAU88@zOFPv)oR&SNF8xnxbLh#mlOu zi`*(^ynbMw==!1Ks_TZ>8mVm)))VYU_1=uw+HUOvMj4wI=c<06Ko}vPWs&acXuZO> z@D)WkXJcM5cR3B`6ca?Byq#nmbxeH|p1@1bnsm>?=M2c_Ju#mCyrIg`>-_~C6TZ^} zI>jLG^U*Qm`$?eFyFI!e;5$A@*S(Rh!RjMY-Q#Um(*K}mjCDUiadKe}iCUq6qnB$vS7?^TemcCk-GzL!n-9rhNS)94HY@r(b) zJ>~8xrzx$BW2*0nSCrv33w3jwG6vi)sta>L--VOClDqRPWv><+bp0x(P3x{OmV7o$ zXELXxYmEBe^gNzevX4O-tKH~bKYm=_8s(bW~mEIRrzpah~ucH_* zy$7K7q>c|`2aHr7>V3n^S_Zz@c7Yyc9Y^TDbzSrK(8)hTa<4cLuUK<=&H^{} zuc)s?{VD28zF`XJ(GJgPDywbcDQ%{8)A+qBz2CyT2j>@RAG0lo^4cf%y`axJpL8Da zI)-#!$M7thM~^#xbUx|)@$-h(U$mp+p!c{LL)6FXA)adcshy$YrR!sUo@DMXp?+R3 zQID>dYUk@crm}hTZpT+Jtx$s_ng?KL|pGXmCd&oU4450N$1-T_n;DgE`;&V z*iVo%y|2SM0B!1gs(6PP<@0-CUK3!K&6acW()%25*X_WQ{Bl^IbbRwRy6Q8vcUgad z2erMuElv9g((%Ys-K@G+>kvDfWi!0zCG&>U!*Hk<%EBb~I)CzOGI$VrZ>y*d@w!9H zR?tCQHmpBS1G~cCyO47r_20|gjMP7m@!+$1teZTqAyYh`@zk|h%lJDUw8q|u{((l{ zlau=SUj2zbb9u72OuDOFTzUB1co$#taXiU(b$*4iyCCZ8<#T+{i7z%;^DLL=vRbF! z7y0(NTxTXv?|R9dC6)ob)2;Wa_5FBW^9fJL<6Ff)rG0&;*epYpWnGW4Ror^yF2Lb^&OmdVAm1|a>qw>tWJ-{s;1EBMKE=^XyY)sE)T_l1Q+qPLc{%cOkMfGS`n6PU!o3;OgcuBk%~0u~oKQW$ZSLug&!Nu6ZY7^P z@cP>GOvh{Iv?E>G^fO#p_5ZW|hC0=+&-NSQH^1M}slI*WLtLKa;Jvgq)40jm0qbJm zA>+brm&pcf1l>2O{ic2foQ7+IN&e9%ozH$8AalH*AZ*kp1YXo0k+s^F z6Mty={10UpzLAVQtz(Tnpz@yItMT~>=n7SiPxU`!+Q%72#zsMZ%KF^z%3pF4o~Tdt ziu6(6W6R!ahONwagt{Y?xqXFk_MYi0#$IKf`wAZPj8n&p`vf{33%rx5{vqxQ(s}$) zPRH*;>671E&>8|d=6NW;?!I`|u_7ASIm|EW(|v;4<*M^#U&`{4(P5A|^<`?G6z2@D zL(R>Q$3K-Oqz}VXC+1epHc0%PUgYU}U;4csfA<$ysLhbse?iW~rb)j6gL-sdD&HGP z_?-r*%8H^|A(Hw_9R$uId2M`DEQ)#`x zbEy5X`W=SYC-Yh;^T^2no!y{5oy$5`Rkz6g)X6dEyskl5Y4({0J*0A`{(+1hKt0-q z?BW0PHh|NqVrQwJPWQR$A1YM2ero^ptU>)OnSBw-9r#ioQpGjwc+ugY<2g4Y#ZYxb zMISQerurWkKiHV6GyYVcvd(GUBkQ|9swXphVeqMa);+QAh4=UFkNQ~T9U!+}Kwt2< zhkg-SpM!NrWlGmS?k{wqu4(Gq;(98~d)*tTO%l!@wdZx8)As_}roA!d58LciANs6q zavP!jKzBF6i^?XCA?!UJGtrw&!+EId!hTn$;wyMowlAeW+^*;`)vsmq2D(D~qdwZu zHaksh!MX<5zS4R;&}ZS1^;N}p8;BqDcf7lYpM3I5h@;)I_aD$t|IM&NxJ>2#$sAE^ zyxkG{(VX4RanlR>hpQ!rIK6jz(8pcF-@Gcmo^kKS$MTe(*c+4X`^HO=$Gpn+9Jg5%Pa~+U#l^fLq;e7P% zpdUVrvU;DA-!Vh{qGM1eWYOQDtU$Bu$ByQ{cj8GrKo0z!K$7P`pA6}1!rI9C8~z}@ z)1&sj_#TtRRjw|-XKvv*-TZoibK)A>=c4|9bnA=1CwB(< zt5L^AKXFg3qxUiw*L!omF3_q?)-%J^d3VCJT+d0}Qf`XNlYKe&o#!9qCNv>!(Dx8*xMNxL%qYGdRgxtsGTVKxw1Z?HX$FPLsGv4`F~YzLOmn>(sOHmzZ?DX z-y=Yox69o~{r;ui7g*IQ{KMA#hvPV$eCBREQGUTkUA(&rPt>93O1X23mD$FX^byTbl;iP0-@H#Wq}6?!(t#J=E8wYXE8C2SXMC68IEG;w zQ|wdJH?L<3;?r>ZdDNBBdDw@j51-c(cgzK#=Ze8+yM zfdlJyw86Msm);Fk-<8_dde7)o@w+N6dhVzG4?TO*J{GFDP2HcV52NzEJn*6SjF^AK z8TYY6+{*+1dhh7Me%FrrTNpExS0AXJed|3k#W24oP`@zm-%wu1+uyef&u_+{O_d+9 zt@)iK3S(|4c6vst*y!3MZKpDf_Pp(eFt5LOs_e1MVQzUEjBO>^7hW^pc;xY|O8w^Q zFE3PqSJb2a2=!HG@CVLnlV;9_P|mM^=r6Z{cNny8t+R|rlvCS+%g~%bzc`Gio`I-8 zK3|W{559h>3oAC4G?OEmt{3=hUiu~)C=p3vl zAE7Rwu=>hT-`l^8IG%bBPw(03nxkutzjuc9lrh6tWc(VaLwVx61?aDyf#~{>@pBL! zRcISeJ%7mGWz{+0$C~s;*q1!k@T0$l)>B~q?w#&A>3#00?_23RVjrgSdC+}AY;v`A zx(;yZiyn2)%sY1IquMJgzv=SDe)8|u-AR5K)GPK&a<5xsk_XpwI_I%ng1UGgfM@s( zalalQy-Z$FugYs#9_STESrZsrmK%(f>c_Hj$m2S(f6Lg{*cYjPO26vMv3h5}XcUtw1 zx2_$!W~h$SHA2t9cwF-~zP>Yn_EgX7ny71^VwqoKbWJH6vwRz>n?#?fe&n&j{Pi*m zOgRr}+GbhZVI81T9=UJfSW)!*F<9vKJ@<5 z;^hu=eScZc=F9d$CpbEt&-|V>>gTf^V9VbsLcRBp?nZlJFFOAdjXTm#>BAE|$Zz_v z+`nlF(ok-~4)^>}wR@iaG@iuw{q8x`o~m!PqrZEOd-{D5=H3UdcWEEG)jdD_8TYJ} zJ(liGw2fBhzep~mxeA_Cm*w_6zK^QIzWpwy=Q3lzXfoP=$i=-I3Cm<%&*}(2lI0;Kj$**spu7H zH(kHO`9gjg;w|(IqmRNP@3VQ1pilc-d-MA}^~3qK813j>RKJGz`(V!cZxld|_1tUr zFC8xW{>_(fbMZThj&J|1YLsVrmO1&c_c9&Jx2~b`ErH~-?{{Uz4q}^==NtOH;yo@; zb0OKj=fE<>yKo0ZzAiT)?4xBFc@7SjKyXRcpYUh4L=7GuwujSxL z*2i?MLK@Ez%yV7uuckXu7$g530MKY2&l}LLB3%^Hpf8>tVfkJF^C{m5VA=RPnM1P2 z*Z0<4pUL+^{lu8*n$5f+e&*>&$C&H7ao$uHzw&T?GVX8wtxHq+*SW9n{);`r_2@hB zN+V}n%!l||xPR(@5qi#-_s2NQx>&|Wd;**{PM3SH9G35#aah(54zryqJo;U$L*ir==f9J({!(k^B9OOk@tVO9eD@XjpMc1zOnsEI8b|#0l&8* zK01&le8{&SxQ+?0akOd|oJxKalvRDpYn|}XT9wuzXYS0CoV#U%GsOYuDQ~N4q$$FVcQ^z9e^zxxVGKX*=P0`>k%hW*Yw<03mmM!u-ui33r{A z(w|5B6-i%8axLL2Y5kY*^-rW>z8fs*{M{T0^Ys4<%vV%S)K=21uBF)DrF| zAE<=i5@5rAR7sz-C#B)v7n1Z3(;Swt?2Q;R)`MCn?Rh24cBX_UIop@%`8{??XM0h? z|6HGzWxv0qv!7nV{M|vFz?qT z%=%KoydRe^ei?mhV~#%}Hd#NOSk_Q4+vl+9{kOWvzkvFAKZ5?KPc#3nb$1o$z>nB3{#+~n4mRsS zv?I1k!s{R6>POJ`spK16EDy{R+UB(tw3$5#jW5!MT*JXT=b=1fB=$Pp7I-RHwt>OF0h)%-gqdiKix0n{gU zz5bq3qIYXmR#`^Dhsr3=C$z)w!U9XaFHAf`PSlU3H2(LFL4Qi0n_PS91KN+zCzWN9o72eN7MbI4m`-8%;Pf{% zd91*f?v>?EmjAsdDW9Bvtm8??MDM}t9ZdcGk2QxlIvoSA!*F(^-)<5Ah#Pmbt#_n( zJQ2TPimQXiPv(X9)#mi2%!@J%_9>@=2h&g(Z88oR>zdiF?e|Y}Pq}l!I@Rl}3pg(w zTfy4br#ub^ord#m{!gXj_qX1(4ebQFPQNY5^ACN}?^x=*l0CE6!Muk{k;<0(LVDD{>$WUsIeYud_}*AYmG{9tTU z*Q$P7K9%uh{3fJ{{_X)V=lKsCkmo;aDyAh_z?iEJ(Y4^RBVE0E7U2CTXzTqqA`k7W z?y5f-aluQ{cz%9r3)69!X=E(9ecB^IW;lFUd6>^a>FgWr=-I!Q8KmiZukt=C>l(I6 zk>~YEDD%{In5Vi1_$a;lQDt4x`InXht(Ohppyh_7M|)l#QC9tuISp;8 z{&)?RdB^22C)9STd(6oP-@ik-#Z@jImS=x(s5|Lw2mG)O68RT>l%|UvEHnx4FH!%D zU%C4A{DpmLNLN|cvju&xaP8|re-Qrg`>1Nq={dEQk>AX5atVCTUdv_tImHq=ALO%6 zbbVO>z9#neXm%~d(!uV!Ry7Bx<07x5&MGsF5iCOb8oc)^m`Ec9SH4*-oIQf z_L=tCzk3Lbr3}|C*l}2FT@Fiq9OgUQGVXHb%jv>1hZzr{xva>2;q+^^r(u4dQ)s^W z*)*NUL(=)%HWD8DrId#6qDuP2x25U-82E6-?&EgLWQSx5GOlaA>6l}Tl}68uF6;-d#5d_w!VPUP4QSP#(Y?FgrOVD*wyEx9WskHtb zQJO2%9_rOJ)tzEf_Ls;jlveF|-jktTDa*Vl zjo3I|C(Cc1Ia-v_Z)M#!U)qC=C_elfTHsChd|FocXE{&|`8T!#TB$GbeMG%yx1tTu z_`57}?}C403+a3oO;|!^`8TzY#_J#Wl=F1I?p<;c^PAQ+1#!^HHzb%h)fI}V=nVC* zWxi{nG-dWF&6yfkx7wg=3!|-!-l4Gqzv?p(y{W&y5Jm7^>hBBW_h;HS9Z#JHU8lJ^ zb${mjOzDtYKDR=f`uhXyt43V?9{T$O?6XI@%%AkkAF`!wv&{k;ZG(Tm5pAf=v)-Lu z^Vq0-e~R=HXc!MX*|&)260(a?m&%szALUzQZq0Q*>*PJ+U(mYLH>BTsyY#!RF8$V< zKd*)FPS4NJI?mC2_EEN z^HAp&+m9%#^Ih}@)6PFR%hOf==Hkjr$U}w}zM4yyf)@4a9WKU?c)+-+U6|=JbnP`{ z&s8deG~MSd9CS1?KbTKm|3Ra=M#orfpil>@U8Qrz&pC|!KaF*Da~|nA=xPp&Pvo9k zkS03W_Z>7R&PmhdT^ug^o}M)Q{cgX-=`+5NrhjT&8m_xM4Y#~L4U4_ZWo6znPWoPz z&bjtJDTBUfnqPPJl?Hk9bm$MSe>7IWRQE=Dzu5b!K__cB^TofHDA;_4_O}wA7uYGR zLnWQRgD7F%4@;QuwMm%o<4O3df1B3H-}#nwzAq=?u`^Q|e!oi6`F$e^^E*-!<~ykp zo;fEiD|P|v2env4y)*;kjX*@TO1{brTV~RALx7;7~8ymQ+ylVSD`xB`#r%w>qF6zQ)TbqeFV@WdRE19hBmyN z<7_7k&A23Sy4VO&CdD}`wuS4tlpq=(~l1k#TbyBEC3 zSbHCx{ss-74TDGZP3pMm+Na;AV@xn^Y#*aOwU2eY_?`*s(KSYYBZlXo=$$foBOY<+PIv%u z=ohu4W$#pZ45%z>L!0W4QN5)8m{T8d_3F2M-sg0$ zKMT|MQ`BxRR5^O}zp6Z|KZkW2_~Ws}+N8cAe-`^*SDyDE;7jd(K6^!6-#yYZSUr2y zv$u+SCDJJ)vi8iTMA!aytV7zt^`I5=QqtoQ@4 zu|UGX!NtJgb51;NMEvgW(LLQO&2-(ozk5%_jfiv3H_j`V`%nLd_RY&bho78|cedO= z`+<2*?FX!NJ?EBxecoyKZQR$kT)${1)M>sS?wxRL%bMhVcqX*J=6fA>*0XzQN532T zP7XUhc5>9V`-!(JL)&6=ZRgV zi~VlpJNw-6x2A%F{zei#p@yp-}c&shG`J{<6yowx9Qhy^^B zM91kftZOIhoj!1~-pOd~GtW7jyNeHSve?J)2N=}1k1TXHlXw5ojE~df&bMp%TGylF z`B0|Vd-}cpnz3{?AuHqccje6xGwzIs@0%OT@EO5k;eF=H$)$hrKlu$gW%=V1je!)| z&zvj%=3l25bS>F_*uADc=k$o(S8etf-aYzT*q>w9^1ijlJKM9`dZm9qPjWA@GpMdX zr-XXyul-x=-*IaKS?2V=Vh_e5|98;i_bA4S97SC_+}FJl&*>WC{T~Tl;O`$>Y^%6| zza4IHc?}xB&GYI{f{yczIXt294!oypS^oWhrXRXr;%|pHoStfARN!{uA1PN7ZJ`^NPn97gzUEd6xU?ljC2_ z|B-)XU-LsNAH@fa{7`;nF0AbGxImw!EiWr*&tW=!=N0ecYfA2!HO#Zlx9G5`^DR1G z)P=r9=flwN)pqeuhcaF7$-W}wUH4slv&&s@vd>{x|6T6A9oeL`83QK^UElp4@^5*4 z;rCh2p5ZXO<2Bd5wQu;`Teo(jwaWOpwd&TWi+^)#)2&6n_Ik#E_tLfI)|OjSZY{Yr z^e@W0vlx+*k@9@cyo?UVfvWE=Is&9Q9KxUSZA@OEd0&YVBl- zUwG&3j|^Qm4|ZQ|?2J6`Wb=_e!ZEK3?wY86I*OuPim|D55&+4~Y-T6WM;PzVg6ZTr|y!Kk{wD$Vn z1U4i)hx&bPJ}p*uJg@EPZ}$CT*B)c%iOyqu-2N)mc~=ixOhcs8nB$aBR5vk)j$fS4 zQ9B%S<8;sP%FKt#E1uVJWX>F4sSe@3+v9rO@mt>GzT-EyAC35qex-cp{BtSa{peY?Lgdk*IKH~)-wxbJeF|AXvhpyPZL2l7GI6Tdr*r@1M- z|Hy5*|6l(X|JpUD<74H?S0)xv*QJefR9#j6g+A|nQttee-&*WzZG=kO*&Xy7kzvly zt9=xHcWah^?QeR|VKN^-gG~GF|JnNapZ?W$tv(ssf31}n@{jCM`Bv4Be5=k4|608o z^BnziKB?q<-%o6Q-Y1$D1wEHTsyQe8?R|E9hnvrE9=xt(?KxfT;*8w4{>a*$lA0ij z$KC!#u_k2!7MNFaFhhH~w`rHJ^vSzczM_gEllzir<|t(6*s#!N*JS zyBl}cM{lR$H+S#A9&zfoJ$~SM&m)3`c_!qQP!8C2=CGeW>+WektPRSqM~8jF_4_wz z!`&CzAUyczrd@rHHSc2lT)!eY70MH#>u|06Hr}^!cMcP8Jmj89zR|WD_lsv-e-3OU z(g%sz_>Jke+grMt+0LitasIzF&#BGE#&9Za886q4^vR6B-qSYu7ON}czJ=q*wa4D> zev18>W9N6VHpnQ>!2Razv)(4g*rva^b*H+CKKo~xN2iP2I~vbO+s2OHMR^o-ahQcEF2$x*D>Wcw{HA8KJ}X$Gnvz1EjgUvXgM4Z(sa5bTEBK}ME4k* zl%8AD2Xw>!gx7oD#XeixVH})Ja=OT^LAOtHIw``4&~&;<`vV>CzYx76-vXA>ab+*< z@TtS2E+@pb;c`QC%=l)9KV5wghc6wT^tF2IKJ8@P5a{XH3(tI$c?!qyn_kn-Kl$G} z4xhO5w{*Q?8*n(w+iH;qKjcx-Pp#k~{#9MWnCd%>U-HhzJM_!rG_GxIh4Q@DJKVQt z`00JiYkF8rbGxw-lHK-*t_ zu{?i#|6)l!o8Jtjs-Ci@tg2-m*P-f)vCr40TZ*i#hbHU$t1mu2JSETP?t;5mjzdj_8&dJA0FnP+`YZId0P0|@Ef()cly9Bb8b34jm=!l zeb(1mIdn~x*L_~}SvEIIK6ib7^^@g(T%KOZh%CSGBYSi6_+fb(ULK$R_TLHmzWgE? z$?JR^nzAmNVH}&OTJouE`h|tGWKF|TT(sj6;iRRL)Jv8$t19p3zN)*v?3S@<`nf9^ znyD!oq5k>fhtIwm-e0~JK0JQ7U3kMUh0lkl;q@PWdgkLl@YL<|?c3WS9Rumo(yr~) zlzFobZB-9>Ju>FYIyQCDYA<=)_7paFdVKq|JU@FD;4^NOe$=r{#7qYYT3lsL6>8~`zv|Bk-V(Ce5tFds9R_=rCmJ@-M|PjjbnZF zqesIQcV8hDpO=T(bo+MN?pwA)?5)L+7jPQlI3K3I$+DUes`GlC8Ytc0e|)%`hVeb5 z-YzfyaQT%dw*BM=x+)oDM0`I@!?dn-y)yV+HFj&AE!EY}AD_PT@^yIr^2d)4%hlI< z^R}BleE7lhVn>bN}hG*mS|e?uQ@J8GCu~oqZ4*U=!U(CM9U7DJl9VW84{=ynHglr z-t$E-&87^z+-u)cp4}tRW&Shob*)KbDq8Ok*BhAXd3eh*X4U!YglfX5UkaB7teZS7 zD=Mq{tIvnG%d0o$EI+p4IDEw`JasbJ7;!qXv4 z{2l?FmltvGH=$uVzl^I+eKRh3Ggr;HHgk*eF3NI6IT*whN}|h=k&afqqi2B>Go4bGS=m~n z38@sPE%}O6$(NyEOvWf9HE$W%wSD%7wZQ9g>c!76@sJU^dbVIR@-W4J3WqP7b<;PV1x?QilmkRgfb%l4C z0ac+q1i33z)V33mw@1QYiV&9tjG+BE1IqAL@|ZAwyvw|Qe0jG#X*X1+Bm!%vFPZ5} zBttA|Cpe`;O3g{A9WuGuISVdhnzRE)09jefuPLj_cIWn+pfbhS2QWvvdIXy(kSg=5 zhsSwQ948ltiz(hkJummShCc(&-1+>h&aZ}PdVE;LO5!h*C*{M<_#9f_@~i``6mye} zWm~oE{D-a|n{2B4dTQFqGrECgR`vui?7D303IQ{(StFLMg6-{^VW&Ynce2O3l!4W* z7eThZ!tjJFOwMqVztBppP$7#xk4CB&- zRcV^Lxyq)pFPaL;UyW)POv&zP*L~_(#LA(n@{y^W7j$AXf=Qb?Uvf+gZ2WDf0}F8;o`XvUOlm_vWJ8t>3l_^sdim4GPv5>3L**X;CNGEN50AIQ z+qa5<6^80p2))lfy_|>xeknNhni{l7)y}86t*7hEGJufexsyI7o zE34`wqI=IsbpifDSN#;-w~xJynykG@|3W<}rxBQWM-468{+b1K6o$D*cqWywI8Efu zRH!DJR0!mmwkQMwAv$BKbG{%?XcKpPbUFo7p|8TC$mdYtC2u-05sM<(+F@@o)+J@@ zOAwf1nMgzgqEbF05)es8bSO&2q>(_d-;i>9^0s_Nip36Y>5Qb?r-YDpqf=X<0bsU$ zhsI)nuORH5VzGoy!lnjMi2dap04wzoMRxM+A+qDMZf=IBx6_U>EboSr9o2-l6UBqm zDQ6FtSL-}uBroTU-9vN}g0Eqm#t~CVh6>K}a?RPHO;rz!sL{|k#rBP4yBvH7zz{q* z2k}e*BkH-T+bXNrO14XrFa5eso?Gvn`yfPKdEfOD`$(K<*;rS@Tr5q7l_JlwcB$Dz z#>ngDCjQ$B+&$!V-L_?yH+*N&qXVZN_)Fn z16y8PjW|#;@BrKLY|fh|o5y;@UD^k#Cv9R65$reeEnr$GVK!`p6uRBSjD;FK&ZP#w zcROX(JTM+jU*Oqpnw+T{_ALA?Qu!D!&`#sF>%PIkj{CS^VwaLt+>JSKv&Ge2l&r;Y zjJ_9qxA}U%cbK;in-ckImk!?3g5|x6bvbX_p~`Yxsa1y4znN#%8wHkJ8ibOq>UIXJYQ#{%>`4oi-d>n9dnkF#FU#jDpZPamh3AadeaZ`>NuPrykk z=`mJYQ4`8~JE0?i3r&sV8VEK{U58OW7stgsVjU|-563`MuZ=0@l<}*pLJ0Obp&slz zPhv2wXJ=OI_E{>+#k<;9d0_ZlyCFb;5+n5%_E%62;>2w&1i(es;A zl0SClouR{DC{bQlGB|pjP)t}+P^|FadC(>C3)W;!V9(7>_?NzY&>x*tocDaEqOq@b z&={aAt0dk7M`2%-d4X>0IxJ%Y5ozc;&+Rf}*4C}EE_6#?cWj@t9>Z1MEzLv_R7=QD z+m6JhK%@!`+Tp%3GJFxlCN`Ctz$^(IE7qkeaCH!i#D2WRX7&2BpZ@svi_iY?AAk1x z%~6T>jBonkcD}v6ed6jDw;%a0k#j~y$5;zP^800Ra&Q-N;Uz66EI*ii1aDPX1?n{) zTJ+ppp_yc4Q$~+;TgvT5!WL7p;6jy1u{kGNWzDJ#+}PsB7^|{Yvq(zzK(+0Y9;!K? zioT-TJ>IOk!p4(j9nmk<3`X{(J?Jrlrd-mldpx*(h{6 zNw)*qc6|JuP2FktH!)@g<}Ab#dVyFoA&Hy!o1a0u2T^WQHLk=PRp9p~BlspSP-G2O zJwoWpabY*35s18P<S zX<84rr!S8$LxA6va@4D9{O;X=ddB`tj8%!1w_Tw;lwDOWb*qt$((Oq2hOF#+9Mdfb zU8{x#`)oEcauv229PI4S#%#%pLXB;aOpfA2{E|wAv>Atdz!=P@ubl+kO)Y%iFil;D z(+!ZV8smG4Ui%J_m%$nd*t&+1o3*H`kqCvUTzdlaFoF`GOW;L86v!sXHGJ%e$lQBt zqTF#ymSxspkDLka#V9$}gGfg_rp!r8VBz2;wAnA8#A3Y#Ug#$mF%}yOJn#y)br(P{ z14Qw+4}6IU7EAP=K^UC}Uv_t|w9O8BUw^gbxjpkqEM}V3xS~{~%Dz~Zekw_KI-ciV z)_YlYb7OsIi74B9-5{VNqD%V_O069VnB|X49~FR}i7xcCRgwP-Gq zUT@5+D9kP69V?iDU%CPQ-HlzXjv@QwRYxB_bkjj(q527JxygE&!jn$?( zc^7lJR0KQY=!L6FLW|L^;L470Ltzi;ZXmn@v-cU=Ev}hHBCi@Es>il$#7%gTf`d?N;M*g_0_Vbep zY`eJ5LA9-o-wClXL8%^C$b=z}CGg*->cDgncvZo)b2ZLoHkW|kF3ZO?Tfx`u)D_k+ zWY9?p*D!Zu&Xp)kU{-|)Ez4z|*txcA(R4VK{Z3oqng$W8-$2Bl%K|X{V0$rU;h6X+%eZDDt%T2z52(!;k_7qUm#yLoLA|bQWog99!-Ldam|KX_@<&C4< zDXpfAxzjMYMM6fSSMU}nYDx;iMI;FtYVz?@_2O#%IbkBLo*QQ zRe-F9p#a0+RVBv=L^M{1&PP1HMmOE=n!iA2OFdM@JauH3jkwfsLC!U@4d{kBKqga| zE96n{mG??TdF(z-$HbetNRnNPe}h3n>=u%&wN_xRb|5ujhjwa$l(n=^on%I)f#j{F z#Z|fjJqZeKY78&U+BasqAUzN8kP{1Wzf%iUL7pJqkeRqC)Wb*)Zr{~8o+{#-uvN|> z7>enCcX&%i=9oCzdLPOpi(M*gvnz8-wqLf)b=hTQj`66N=NUUs7|!Ma*9KiK1XPi} zh%Iv}UUpFxK>+ zp!1>4%1$;o%T!^?#hQY7cktnEUZS2rhA{*qRD8{FSN7A$y2YGGSYwZUk+scdWfr@< zqOTDG+j_f;x@7&k2wy*`E)wjT*f}gq1&q!>N%A%^6hkrKc_mPBE_PiWIFK#_Q^eH` z*y0A(bwk<`i8W;Wl;o8Yt|7ndL5UPoW%;^b(VN?v;q7W%<#jg^T!3wI!kd|5sx9{S z2(X%9+p@vB@3JYK@}+HwwwOk2pVkPr533AvBB|cyOcK_*Z~oE;v9x$ASSWEW zKv}JKK;DWCY(4?8PzGPvwEC}yyO-CJs7@{$s!L+}PZ`Ae@&H!Z-ST-{Wt>5&%odjg z%k4mxCMs0nP`(>Yi>TWuY%+6?K&KcW7GNQI5jk@#rNGROVngBkcqxhuu#b$NWqukvV7YuVISK=V&=Kcu^4HLaLXG(D^lHw zB+kfrYCt&URJR?;I@5|#3fmI<8^_#s3#BsCdF-|32C@B!e!^5%LZ4eID^zRM)&rhB zoMf1J65H0x@b)6mg-mM3a#^W)fvjWu*)@d6E>&KVfsW7Y>I>NVjV;}A1o=JjNL=2- zXopv^S4y0%FHqkyrh;Wk`(!eNI)|Y-2m)s z7&tu6sB}1hY}$6MdkUeDiWgcq1F5E;7W}<^o3`X6q-i22+oL2M6YC&&yPgZ+UDJ{H zF^vQ?jbW%t$~ ztU$gjMAsw3%5ca2KXQN*#-Wdq=TY6cR?=3keYO0b#Mxg85CQv3Me6 z+EWRfXletwyfG}4jfSSbvr*dw?;bJGqjV>dg$d+2kH8ed3FpSrDWRjhl!&0cE}2Mz z8?dYClr3R%9*?oB53STD!*?@VA9CE!Z84fi)ts<-NBG;2(6+@&_wRyLcDKZvEgjVcD4JlBj_pgU`A+5 ziu}C%bh&%`ZhWLJhk=BLSnImzDZ18HP2Us7*0Iyf2tOlwx#*^q-h>5}Qa)zZ;#-?u zOj+AVbaw1~*Dz27iA<-8RCRI+h<#&IERlG+jfyEAQ;Ylbr;`0}zGCO-FhXF#n`**} zx`ODUvKn%mv+&CHdlMht#-L<38KS)obfEOjzhzKm^2y1&*JmM`^d*u+j7^z%0wbfh{h+rTF3x^2Au*-jS_-uN5d=4tn?MXn>{Rv#8@qSBNX9dyR zIEcXA)JGtprJ0W+q(CJ3(TSv+AwNiT8TCZK2#u7OBBGm(Nmq6RbQM^_MB02F?s_9` z-!a?8@Qb>In4cJICIQnI6<9K0JsG|OIe^5bn-w98ENEm~CWjrC{s_9-`#f*-I$Qe! zBB=3#ot6V|peaU+f{UI`kq+)UGoXcP=47c#2_t zYqdJ8V^l>$R&43p}z0Jtg9pUCm`BK2%Uv{;$Elq&|TQzv?1z<_%>2SDJ3uxflkiZLhYxKVD}S^ zL~P;}!G1Gm(bMLL66q3(1tV|#olV;%>(tEAMUn1t3+6k{(CtVL!|975jDR@OS98n< zJwY%HRYa(~nTO-_-D58J3}NSm%I@?YSi(l&4-UVfB=9i9vOw_8wBoiU5}XYLAyrTn z2@?xHMOwFUY>t=`cS?B1s z?7tV3=E_3(?>_?5+9sdJxudWyH54iClCeyvCevciYH$z8N(nq6ms|a!{kaiZUbf@K zI3nXFx3T6C^HPY*PMN=u;U1I?^Lz%5p{~8eeli78ag&7gQUf4$44OGy6b6+f_d7)4zk=0g` zLe;>)(;&{6r(zJN4ocIBv*_)JyD|`t(vdycwf8}0l}ADG0;Bj0CN}ea6Qjl}G`E3tj zp2SGuZW6SB^=+g|caIH>ti)lVT4Rs<(ncwme~lUui#p|j%*V6?V2sKU6X7UBKM%mv zwI8GsKtc4_6uICcCN|ciSiPn^ZJM~WzWyd4_I5O0yX-fDMj@*z%PG)4Q&?6i_oLH^ zNMjqm;v^2CQ;f_4R*u`)1dI6&w(u8+(#K7FH{cJ>i{)5gvEOd{G(D%3)Jpu)Obim%u#UnBq!>0-ha>HF zC`q*6kWD1|%y`FZGm?LHV9u4|XT&4AkqFw8)qWawTBE)lu3M`1cUjvP`AS*3mY_^I zRAC@2BD7OSjmDk$-H;%(1Omp+OK+khm6`ZLY8+!g&)bF+MJaY&kv~jz+KF66UXNw} z&5d*ZZT(7Bff;M8n8=e3V`Ja24XsJ`X-1+`OG@^Vn$w&2Ur7sr`^Asv8H|_a)5oSc zhw!ek#?2FlTHrbzX9~?AE^3T&ln!3#)3SKE|NP{F{dW{uMkbZ}Y|I(%GI?@CeU?qX z73AB`+1fMDsm{d6;UvBk*OKyHO8_s8;NQoLXuYRp`bsS>a&hpK%)UUeP)y6GDVy=z zMMgPOq#{9dK2O9`*+g$Ls`8bTJJ7yFJ7DQta6=x5lgW1o;j)qEgxlinX~gIL`;@1X z4eAb6PI=j*Y7Ji(5OHt&y&xf`-x$m(a`wC~qp=U^$TpMqQnpqJA#bJJy!XKd6{@|? zdOy`#7rW8LGAF0n;QM4Kg1-`qiIvWs&f#`zK)8dIX_kJsaj!M3tMrJhb2DcLwM5Sl z;7TGqQ53i>DWplkFgZ7cgBOgKQ(cd)*o~nQVz+{rT{#npr2Un+T_DDQB?33lJW*<| z88_BHvf(o%BZHk(_Fp)%i344zU0IW(MuiFd5oGRDT%vIXJ9;Lurh7ncMoJU0T%%&d zYY3L3mH^H*JP_o#odR-u>T(}toh<^kDdbdC9P*SG?)z<>MRY9BxRJ|E2D>c^9|%Ej z1x#S*rsDMVO-30FhnD1=8VUyFQ%3)FUa?|aA&47P{?8%6Hv=YB_6vr$?t;K(D6SDI` zX9Mq`B_iDo!$!1%^6l~-aCOfe zCHh(xHMvSS?Mb;r5KaX_k3piuw*zpYTsyGMU9+WKDV~N`qv3xPhbEh#Ucsj1Iml^b zUiMRPvBh?L|sVv6lp*3G#|H zr|@-xy8?;LuNNV&EqNf2Z*jzWBG!_ADDWD7-G?KmM?|6 zvdsk`j6@e67fuWtk$abtKyo`09*MnBw)nE3wA=&%N9-z%A46d}CMgQD@elG|%9J|; zi$z^Jtlwz-rO`Ulb&U-!Fshw^VTKD*Q`%02e>}9|d13kbW6!m831ARwfCK%1TaW8ae_^f(rh7 zo39=Ch3@VM?ZU@4Ni-YUsUz}cL_mTD^B;(eWv4VIU1Dk=mHlj)gB2!DcSN< z<#EN%f-|Y*>J$n)jGKb#4^P6pv_@FCO*_k3XP_7cG|t*YYg2@)q-rXep5h~`$vx!g z(lIkL^oqq73#v^)sc5-R(ntgSFYg6%De7=SN%N4o8>*Z8crI?aW@l{VFHeYJN)Xud>6CZVkqB_ zx;}%gxYU>Z<^6lnipXj;|Hz;A?}NRzhfn5g<0Hl|)dE{J{v!y=>6ipaN$S>d3s-3^ zT>Ci6ki?Yba0Oh>mx!>ytw0l(xGIV5v7Pa2!5WRU z6Pw&i`k-RPl#*~pCVOt%-h&Au!WgVkuhK_luk+X{Fq?TP6P~K;NjdqFbVKHdLgmtJ zfky$zIR=h)w=FL0K$=TAVXsAUO5{;F(|ZdmlfMqvL;#V1w?1jony+?)q3Wvuu1nNo{Cqye2vH=!0$)B>J5w2%*9XA6*+DL>jP8tFBn?4JPSZisU z2e;0B-=*mWUS3F5!?a9*_J0!|X5L^{ z3g*UxCu|!E)($kkfHNmf%olvS6ijGrgT5#43~|o!A_pVK?}(3|6G|DOHm`I1N0Ru- znQ~j_KM%oHw5rbfAHQ)>n2*jq1-jO3!5)ocS7wu%9Kac1A|+ob$U%Jz%~6Ru9cZdk zbT7$D5P5E*Ydj?nv|0=`gfo^khdvEd+(0@I)JT#J$qt;_w1b3_>c**%H&aC^jkcND zxv}}{rHpP#kq{zi3(8<)CJIip{Zu%?v&yy%cIk#NO3w%nLu~`^g=HsVl?eN#Sf7+E z;|#N9q1ZB~d}?{%atRUEJN?7st7wmIEmx|aj1D+dPOn}3uTe}^aPKOmR)G|tz~HI4 zDJR2C)~GlYjQrlEMCI2Y5nlZxTWXeqt$lc;{B zsg2%~+9ci%B^djFlA?n|Snj;a#!sGf5=z>0f@$YzEZ+L`KI$@-bS1$9lsbRQ(cCA? zXBZF@v9BaX=pnhD&WZjIQ7rx0_*7mx2D|jpm}>%uzr2~U&dvzfTC=u>s=TBS>|k9R z3*yokK-~k)w!^P5nYzUtMx| z492FVY}YXObIZsvWFn+>O+8O3cR`ITY8Vo%GPNt=URdPYj7Vc@g?mO0tht6z1jb5Y zW?RzaIAM*`+N4GWJ9P@e6TUzk^jdl_wt4&wl@N|)xHly$YAOWMadKmgTaj3N&JZN< zfg>_Dg_iQ^z5yX+S0e|{M&L95Dg8JYWuGqF@d`8A$N>kOp~5(lblFqPe#Lyq!7`yC zAtis%;wJd_+xixuYcr$k$jc&E+M5hA!$U+lRuF2A3>08(Bp8PC2#DLGmfAuQFSGxP z;8vnccWhMTqH-2Fho54;AfS*~`CQB_;C4Vj#=%m-%mz4XPw5|mtZx_HzYcn~t{;mJ zJHpKj2xaz~Ov-E(6e5^wkQE-KS<0GmraGpgp!2cJ3lpABqIYfE2}INA*+4AjFKR6a zzKFjmp(|yraD`zP^$|&(uoX1NA)~Vq@I8MeO`6%xj zikVHOz*4G2pcdcSm~y|7g)@3N9)Zv_&YC1SgHt^yFh>r^L=8Vqmx|$9k{NXX*Vd(F zBU+G6mACAKIR9%TU6W%%$blCj6X}*C+iLHlBqBuz!f)e^>%%)C_Z%en1HJSY{S7|T zqTZ*#93gTP&iFm28zeLC^bwX`F%ZRk9NOU#-Hc^8AOllbj2D@+RJKN{K~_jAQ4^i5 zmLC%y6_X0>T*on>AQyShV|W|M=v&_8?Owy^ej(t6pldYPS|+dULpKRtl_r%(FTrez zS|gTsHQORKPZ~F7G6kCg*Bo0*%f|ql$)S-+2!_bI_vO8mxAs~z-dS60RbDy;*J=>j zpDYsrmH}e>%G|gBv_09gGtLHg5g$rdUj1~qU!E}!Ew8@7Q2(?%P$>T3fN*aQ;~U7% zQ8B2SllPBre`Q1#5fP#)33>-hO;lVZd2MMCB^h~|6tCErGjhtorcYnpO@`gC7mA)D z*Ew0T$nnIiD0it=I?gRnZCEPLe(;{{MTp1>fE{F&D5kcg{(l&&cPz_A#9WgcFKuU;=95=_brQP4t zcl*=<-KXv|09RA&lo9*D=*Asy%O317TYw` zAqdm244%E*g|kmfWJMUZfUo88Qb>gng!3BY*u@!DJdh26ryTV>R_JC)K<2wr`j_`t z1y&;SjP|o+KX)~)vpU;UM^wT87j_WP&!Bn6_}x=+^W7w!Rr`l5sT@k==$% zHCk6(0-O%sRa$Kk;Y4v7WM4kiEhPbodc;#2L8c%aUsJB)aC`@tu3N#3QzFD3JvoQ3W1>BUUlB9#kBVG`xLAuggD)a@%D3h7QjcBExj0wO~KKx4u#T z*MR{evXC9eQQA{uLpmWCWl^UxG5H|H2d%osVnVVuFL@dBs0ywGE-dfS-y4lhdhWJw z>}VcSnfHz(D*gH`uqqL9F1A!YU{BKQ^nfH{X;UPcmk;)gT2I9ZhMm_*_?Fk5Adpv% zfvdBT0P=FmhI>t#Im5V(?@`C=6vAq+fIQD?5SEL>RTu9=5);?~f)BDU4}jD4N~sBQ z+@vaVU(A4-ffLG#g5v0TQ%Y6$H$Lxqr!-e={ep`*&u+l|M|IYocqqb0QAfymHi~k< zkKg|U%x$n*jIwHQR*!xr-jl;~Q4JX8uoaXowGav5_bAIA2YVQim2t>nOMog^tHR+0 z4N6W(O`amlkYIthjoB!{StqRwDXSVu|80DP4(5A>xlej1vE^|JVc&5g9aY20sN&pg zDZRE<)P#?$KJa(wUj1I-R~lxcz28KL8JC)B>x3w;oY0Py1W^w(!DzsNf?b9yD75;7 z2+TPL-#iTu&+Fq;plJ_b)HM~I$n+wB2ahI4L6w{+fH9W*$Dx*h;kaJ@MI@b^iG`N0 zOXO#4PjcB0@1#sCB@YT>=g9XUX*UBeS5$jh$JK};kz{cT$d&ZwruUCGR%GlZIFz9v zict<0qjW2VQ#n_iBDMJD-RF3*X@Xnh&v2sC^dGxoGtKN-8fu2EoSsy7#Q$LxC%j9} z=nQyCdh98GH-Jrh_DZGo_WcgAnLF}p44SqlQ_-xSB!dvY5XCe5!PtHIIxp)kXK2|r zv>2oC4oISEM?KZGCKp7`{Pi%(6#_IJIs{l$^TiR5bsiUDhD~h*t;;z`WbICza4;kQ z>(^npiKn@hhBOma6dfTKWGQj15|Q#XsX^qMBSf*8)!5QJ!U|jvrx2Euel@j<#QbC~ z4^@&E?OW>ld88!~_fmCVkrp0Hcb#ZZ$!0V$UDPv6i zX1Wluv^m(;6LE54=WPn|NiP&)$v@ijBOuE>nldEr6@4jX!o9|frN~5i* + +Search + + + + +
    +
      +
    • Main Page
    • +
    • Namespaces
    • +
    • Classes
    • +
    • Files
    • +
    • +
      + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
      \n
      \n
    • \n
    \n
    \n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

    ".search_results()."

    ".matches_text(0)."
    ".matches_text($numDocs); + echo "\n"; + echo "
    $num.".$doc["name"]."
    ".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
    \n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
    \n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
    \n"; + fclose($file); +} + +main(); + + +?> +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/send_8cpp-source.html b/trunk/paradiseo-peo/docs/html/send_8cpp-source.html new file mode 100644 index 000000000..74d45810a --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/send_8cpp-source.html @@ -0,0 +1,160 @@ + + +ParadisEO: send.cpp Source File + + + + +
    +
    +

    send.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "send.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <mpi.h>
    +00025 #include <semaphore.h>
    +00026 #include <queue>
    +00027 
    +00028 #include "tags.h"
    +00029 #include "comm.h"
    +00030 #include "worker.h"
    +00031 #include "scheduler.h"
    +00032 #include "mess.h"
    +00033 #include "node.h"
    +00034 #include "../../core/cooperative.h"
    +00035 #include "../../core/peo_debug.h"
    +00036 
    +00037 #define TO_ALL -1
    +00038 
    +00039 typedef struct {
    +00040 
    +00041   Communicable * comm;
    +00042   int to;
    +00043   int tag;
    +00044 
    +00045 } SEND_REQUEST;
    +00046         
    +00047 static std :: queue <SEND_REQUEST> mess;
    +00048 
    +00049 static sem_t sem_send;
    +00050 
    +00051 void initSending () {
    +00052 
    +00053   sem_init (& sem_send, 0, 1);
    +00054 }
    +00055 
    +00056 void send (Communicable * __comm, int __to, int __tag) {
    +00057 
    +00058   SEND_REQUEST req;  
    +00059   req.comm = __comm;
    +00060   req.to = __to;
    +00061   req.tag = __tag;
    +00062 
    +00063   sem_wait (& sem_send);
    +00064   mess.push (req);
    +00065   sem_post (& sem_send);
    +00066   wakeUpCommunicator ();
    +00067 }
    +00068 
    +00069 void sendToAll (Communicable * __comm, int __tag) {
    +00070   
    +00071   send (__comm, TO_ALL, __tag);
    +00072 }
    +00073 
    +00074 void sendMessages () {
    +00075 
    +00076   sem_wait (& sem_send);
    +00077 
    +00078   while (! mess.empty ()) {
    +00079     
    +00080     SEND_REQUEST req = mess.front ();
    +00081     /*
    +00082     char b [1000];
    +00083     sprintf (b, "traitement send %d\n", req.tag);
    +00084     printDebugMessage (b);
    +00085     */
    +00086     
    +00087     Communicable * comm = req.comm;
    +00088 
    +00089     initMessage ();
    +00090 
    +00091     switch (req.tag) {
    +00092 
    +00093     case RUNNER_STOP_TAG:
    +00094       dynamic_cast <Runner *> (comm) -> packTermination ();            
    +00095       dynamic_cast <Runner *> (comm) -> notifySendingTermination ();            
    +00096       break;
    +00097 
    +00098     case COOP_TAG:
    +00099       dynamic_cast <Cooperative *> (comm) -> pack ();      
    +00100       dynamic_cast <Cooperative *> (comm) -> notifySending ();      
    +00101       break;
    +00102           
    +00103     case SCHED_REQUEST_TAG:
    +00104       dynamic_cast <Service *> (comm) -> packResourceRequest ();
    +00105       dynamic_cast <Service *> (comm) -> notifySendingResourceRequest ();            
    +00106       break;
    +00107 
    +00108     case TASK_RESULT_TAG:
    +00109       dynamic_cast <Worker *> (comm) -> packResult ();
    +00110       dynamic_cast <Worker *> (comm) -> notifySendingResult ();
    +00111       break;
    +00112 
    +00113     case TASK_DONE_TAG:
    +00114       dynamic_cast <Worker *> (comm) -> packTaskDone ();
    +00115       dynamic_cast <Worker *> (comm) -> notifySendingTaskDone ();
    +00116       break;
    +00117       
    +00118     default :
    +00119       break;
    +00120 
    +00121     };
    +00122     
    +00123     if (req.to == TO_ALL)
    +00124       sendMessageToAll (req.tag);
    +00125     else
    +00126       sendMessage (req.to, req.tag);
    +00127     mess.pop ();
    +00128   }
    +00129 
    +00130   sem_post (& sem_send);  
    +00131 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/send_8h-source.html b/trunk/paradiseo-peo/docs/html/send_8h-source.html new file mode 100644 index 000000000..e3f9cca32 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/send_8h-source.html @@ -0,0 +1,66 @@ + + +ParadisEO: send.h Source File + + + + +
    +
    +

    send.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "send.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __send_h
    +00025 #define __send_h
    +00026 
    +00027 #include "../../core/communicable.h"
    +00028 
    +00029 extern void initSending ();
    +00030 
    +00031 extern void send (Communicable * __comm, int __to, int __tag);
    +00032 
    +00033 extern void sendToAll (Communicable * __comm, int __tag);
    +00034 
    +00035 extern void sendMessages ();
    +00036 
    +00037 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/service_8h-source.html b/trunk/paradiseo-peo/docs/html/service_8h-source.html new file mode 100644 index 000000000..7ee5e11bc --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/service_8h-source.html @@ -0,0 +1,94 @@ + + +ParadisEO: service.h Source File + + + + +
    +
    +

    service.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "service.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __service_h
    +00025 #define __service_h
    +00026 
    +00027 #include "communicable.h"
    +00028 #include "thread.h"
    +00029 
    +00030 typedef unsigned SERVICE_ID;
    +00031 
    +00032 class Service : public Communicable {
    +00033 
    +00034 public :
    +00035 
    +00036   void setOwner (Thread & __owner);
    +00037   
    +00038   Thread * getOwner (); 
    +00039 
    +00040   void requestResourceRequest (unsigned __how_many = 1);
    +00041   void packResourceRequest ();
    +00042 
    +00043   virtual void packData ();
    +00044   virtual void unpackData ();
    +00045 
    +00046   virtual void execute ();
    +00047   
    +00048   virtual void packResult ();
    +00049   virtual void unpackResult ();
    +00050 
    +00051   virtual void notifySendingData ();
    +00052   virtual void notifySendingResourceRequest ();
    +00053   virtual void notifySendingAllResourceRequests ();
    +00054 
    +00055 private :
    +00056 
    +00057   Thread * owner; /* Owner thread (i.e. 'uses' that service) */ 
    +00058 
    +00059   unsigned num_sent_rr; /* Number of RR not really sent (i.e. still in the sending queue)*/
    +00060 
    +00061 };
    +00062 
    +00063 extern Service * getService (SERVICE_ID __key); 
    +00064 
    +00065 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/struct_node-members.html b/trunk/paradiseo-peo/docs/html/struct_node-members.html new file mode 100644 index 000000000..c54ef9cc8 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/struct_node-members.html @@ -0,0 +1,42 @@ + + +ParadisEO: Member List + + + + +
    +
    + +

    Node Member List

    This is the complete list of members for Node, including all inherited members.

    + + + + + +
    id_runNode
    nameNode
    num_workersNode
    rkNode
    rk_schedNode


    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/struct_node.html b/trunk/paradiseo-peo/docs/html/struct_node.html new file mode 100644 index 000000000..a0f54cf36 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/struct_node.html @@ -0,0 +1,62 @@ + + +ParadisEO: Node Struct Reference + + + + +
    +
    + +

    Node Struct Reference

    List of all members. + + + + + + + + + + + + +

    Public Attributes

    +RANK_ID rk
    +std::string name
    +unsigned num_workers
    +int rk_sched
    +std::vector< RUNNER_ID > id_run
    +

    Detailed Description

    + +

    + +

    +Definition at line 35 of file schema.h.


    The documentation for this struct was generated from the following file: +
    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t-members.html b/trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t-members.html new file mode 100644 index 000000000..5bbe93d75 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t-members.html @@ -0,0 +1,40 @@ + + +ParadisEO: Member List + + + + +
    +
    + +

    SEND_REQUEST Member List

    This is the complete list of members for SEND_REQUEST, including all inherited members.

    + + + +
    commSEND_REQUEST
    tagSEND_REQUEST
    toSEND_REQUEST


    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t.html b/trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t.html new file mode 100644 index 000000000..f32b249ef --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/struct_s_e_n_d___r_e_q_u_e_s_t.html @@ -0,0 +1,56 @@ + + +ParadisEO: SEND_REQUEST Struct Reference + + + + +
    +
    + +

    SEND_REQUEST Struct Reference

    List of all members. + + + + + + + + +

    Public Attributes

    +Communicablecomm
    +int to
    +int tag
    +

    Detailed Description

    + +

    + +

    +Definition at line 39 of file send.cpp.


    The documentation for this struct was generated from the following file: +
    Generated on Wed Dec 20 13:45:49 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/tab_b.gif b/trunk/paradiseo-peo/docs/html/tab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d623483ffdf5f9f96900108042a7ab0643fe2a3 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJy*>IeJfk6j|fqX^=1|}vKMh0sDa2W*H literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/tab_l.gif b/trunk/paradiseo-peo/docs/html/tab_l.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b1e6337c9299a700401a2a78a2c6ffced475216 GIT binary patch literal 706 zcmZ?wbhEHbZT`}F1e&(Gg}Y(8=I;HA5#Z$3JI=gGB)FQ#odI(O&E^@q;x zK6mr*m3xOS-#u~t!I@i+u0DKm^U160k6t`|^WpV}&n+8{U%dD9&a>B#U%!9-@yol< zU%&tQ{rk_K|NsC0`}dE5ET99@1@a36+kb~?0UJ*yc&I3X_m z!ND^5$O7$#8OFRuDhG}!?8z?cdZK&!`PWjdR;Aj^wZ` zeK{IEYHBJ)6K8VIp1`BVt++swf6j+=L{p1*nO(VhE`pFexG@5$|>uaCcd z`0m=9m+yak{QmXN#Sc$^{$X9h9&q2jiKAI|&T)a;PPx2K9p`YIdw8HtR5k2Q$2-O2 z*;3y{MQ-RnJTgJfI&R5|O)AHxDf_00XbPvDZPy4t=hHd)nfLPvms&O`Ok(sD()5v$ z5U@&h;a=#xbxVbo2~X&Xj0Ie(f{v>vERH+qC+nTG=B8Nca=wU-O$?1&vUgV~9=!H; zx>3p9Yn%*<>t~sk+&0xfyS8RsPfYBd<~wWK%j-LmpU>O7yX^h#UCp1x-p#i7@bE;py8XI6 zmY<)m>~)W~yIWcMVoiPg{duuf<*)9qZ9l$m*Ph&W&$jlv*Vpa+{pH@n=IQ$L?0$ax ec60Ul|8o2P|NVbd{6P)#weSbE3}s?04AuZvx_~SI literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/tab_r.gif b/trunk/paradiseo-peo/docs/html/tab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce9dd9f533cb5486d6941844f442b59d4a9e9175 GIT binary patch literal 2585 zcmbV}`9Bkk1ILFF--w5zJc=ZZT(zjE=;2|_S)Qm~rCWz1Pc)KPl;jv%A#&v2*x}yc zmf2~Jm~&=xjJY?PqwIN}f8qQ2{r$uH{c*nJbmr{cR5??*egHrs-B=MzCF`3%e{FAW z{oL5xTHn~5TM{jaB;@|_Ue5F&Zb@p(kMyG{*;gWDg zyeL|eZf7Qd8=#bXzSiR{yzRgLSj-fJS8>lBjVHN z^o-0eS=nE6a`W;LChBs=`+QAJP~{b93>H^eRb5kCSC1zUNezun%`L5M?RDzv#%jk7 zYVRX=vATPD`+oEfum^{RM@GjuP?-r=yh0!p;Vx^T9G7~`7%5ydH%70=jyJ;;`d;hv92x3R=z{xp+Lg2!*@OK*K15-t&okoPtSED)h&$RLxdbA zseWm^C3d%-yRNi-ryk^!ek+C`n&~cd$#ZWct_cUL{l~i+Nzx^5d!n94(>bW-iL~Rl z&8r)?q|1DIo=0=judQ{FaGcfLERz8gfn3-Qt<2lksh{mzpT}DXxUuR^z=^key&q4! z+wWI45vL0k$R^(F#{qfqhUsN@WA+w-V?LPH33!Q?WFSB3)WBojE@hK41Nb?KfS+Qo zXgrzfsP$wr4Qzy*{OD>uJBjdgGM@VMml5)2f~_}lD*YyOb}Hjeobhz#4c`w(l^>KK zr?Ud;W~Z}*w;%hZ|2^p^+f06gJDJQD zeIhGADbDmm&6arh(q>EZ<7mjzg7l|z$hRL8=1>)Nv=S7CY$B}iYJ&*T_-T_OG*L1q ztZ3Lana33?y3AKnyq^YCF|4x%Rb5WU&2qcl{TFKey%QJeMxn^SdT!hZ5+0i1zeusiYVp-phBl7b5+Px-X&LhByq z0F&<;K0l2+v>qiHlXb#$jXMv$uK-dEGE9L~qtdU(XeRXmvu*K2Q&6!fD**JxYP4b4BR7FdJ$Qx9G9`J%-_X!a#LGpp3g9)VWytGCa;7`S1_e8F~!R+aSJ zOF17p2`H?2kPs8Q`_;U}+D%3p zs2-0BTqFwpUoBk`?P;iPQ(IbEA|JmMx!P&YYG|R@S=5Mnw;-?A6rEEVyV%d7{iU4a zNk`i!%F(Ykpm`}#oH;BjY->@b8vQedv;pza2FL&*6ufjd+*3Ute&>kes~TU?^KkojsTh(o~(3tk1Y6>4(yn( z#U*ID9@eg-beKo1B;HXe+}{Z%n@7m0+yxivuqk9~;!1LGQlah)xYK4>wgL}l6dsaN zIxlRlq`*`j9PG4*0hD6YV_b_2w5b#)o7J?`q#{GjvvKlD`T*dWcZx<-s(ZvLB44E# z=!|sw!?)@%y$oRNL#25WS3lzdii}TuQ3?CLnvQ1_n};2sT_;Y;#d3=+-(O% zMN$>O!3;ke(UuLR%h_&)N zs^!-@A>QR}4yB1bPp`9S19ikTbZ~O{&FF-yHK{En;mmShDUIEw03`j(DBIsM}Rjki2J#SQa3gFZTKBPDeIiLt9Z z%bL3(B@Qw%(B`wSMS~dPh$=R`(}lBoFXKy(s|*{#ru$wjsBc_O#zxNk9w+UUHmx(U zmJ8+M+ndtnZ<7|VU9Mbt61zpo9T&3%Wx&XII=#QJxjR`CZf22ac3d51Z?GD%LEe_&*t46Qf;4`bZ7p2K(Ab5>GfT^}4! zBT&HZD`^PEgWoI&{~o-ID0F?O`75sm(87x%A{(}Ch1)QlzdJ)1B-eqe5a(weg0`4lQIf1evjvbBY50DVbzO7CLf|vP z2#0(U-|jZ`H{y5N^o7%iK6H>_HEGN->U6^!)1{XpJV!!4(Ig7wzZQ*9WYF4X1rG0x z=1uA@i`rIAciubDC{;~b(|&|A@xkjRP5aRcvRU9tvIm}jDB6J eQ0-6-y)mpwdT=ayS0tBxKDA*~;EWmo literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/html/tabs.css b/trunk/paradiseo-peo/docs/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/trunk/paradiseo-peo/docs/html/tags_8h-source.html b/trunk/paradiseo-peo/docs/html/tags_8h-source.html new file mode 100644 index 000000000..2e68237fd --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/tags_8h-source.html @@ -0,0 +1,68 @@ + + +ParadisEO: tags.h Source File + + + + +
    +
    +

    tags.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "tags.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __tags_h
    +00025 #define __tags_h
    +00026 
    +00027 #define RUNNER_STOP_TAG 13
    +00028 
    +00029 #define COOP_TAG 14
    +00030 
    +00031 #define SCHED_REQUEST_TAG 16
    +00032 
    +00033 #define SCHED_RESULT_TAG 17
    +00034 #define TASK_DATA_TAG 18
    +00035 
    +00036 #define TASK_RESULT_TAG 19
    +00037 #define TASK_DONE_TAG 20
    +00038 
    +00039 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/thread_8cpp-source.html b/trunk/paradiseo-peo/docs/html/thread_8cpp-source.html new file mode 100644 index 000000000..043362920 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/thread_8cpp-source.html @@ -0,0 +1,125 @@ + + +ParadisEO: thread.cpp Source File + + + + +
    +
    +

    thread.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "thread.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <map>
    +00025 
    +00026 #include "thread.h"
    +00027 
    +00028 static std :: vector <Thread *> threads;
    +00029 
    +00030 unsigned num_act = 0;
    +00031 
    +00032 Thread :: Thread () {
    +00033         
    +00034   threads.push_back (this);
    +00035   act = false;
    +00036 }
    +00037 
    +00038 Thread :: ~ Thread () {
    +00039 
    +00040   /* Nothing ! */
    +00041 }
    +00042 
    +00043 extern int getNodeRank ();
    +00044 
    +00045 void Thread :: setActive () {
    +00046 
    +00047   if (! act ) {
    +00048 
    +00049     act = true;
    +00050     num_act ++;
    +00051     //    if (getNodeRank () == 1)      
    +00052     //   printf ("On passe a %d\n", num_act);
    +00053   }
    +00054 }
    +00055 
    +00056 void Thread :: setPassive () {
    +00057 
    +00058   if (act) {
    +00059 
    +00060    act = false;
    +00061     num_act --;
    +00062     //    if (getNodeRank () == 1)      
    +00063     //  printf ("On passe a %d\n", num_act);
    +00064 
    +00065   } 
    +00066 }
    +00067 
    +00068 bool atLeastOneActiveThread () {
    +00069 
    +00070   return num_act;
    +00071 }
    +00072 
    +00073 unsigned numberOfActiveThreads () {
    +00074 
    +00075   return num_act;
    +00076 }
    +00077 
    +00078 static void * launch (void * __arg) {
    +00079 
    +00080   Thread * thr = (Thread *) __arg;  
    +00081   thr -> start ();
    +00082   return 0;
    +00083 }
    +00084 
    +00085 void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads) {
    +00086 
    +00087   pthread_t * ll_thr = new pthread_t;
    +00088   __ll_threads.push_back (ll_thr);
    +00089   pthread_create (ll_thr, 0, launch, __hl_thread); 
    +00090 }
    +00091 
    +00092 void joinThreads (std :: vector <pthread_t *> & __threads) {
    +00093 
    +00094   for (unsigned i = 0; i < __threads.size (); i ++)    
    +00095     pthread_join (* __threads [i], 0);  
    +00096 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/thread_8h-source.html b/trunk/paradiseo-peo/docs/html/thread_8h-source.html new file mode 100644 index 000000000..1c672e044 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/thread_8h-source.html @@ -0,0 +1,92 @@ + + +ParadisEO: thread.h Source File + + + + +
    +
    +

    thread.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "thread.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef THREAD_H_
    +00025 #define THREAD_H_
    +00026 
    +00027 #include <vector>
    +00028 
    +00029 /* A high-level thread */
    +00030 
    +00031 class Thread {
    +00032         
    +00033 public:
    +00034 
    +00035   /* Ctor */
    +00036   Thread ();
    +00037 
    +00038   /* Dtor */
    +00039   virtual ~ Thread ();
    +00040   
    +00041   /* Go ! */
    +00042   virtual void start () = 0;
    +00043 
    +00044   void setActive ();/* It means the current process is going to send messages soon */
    +00045   void setPassive ();/* The current process is not going to perform send operations
    +00046                         (but it may receive messages) */
    +00047 
    +00048 private :
    +00049   
    +00050   bool act;
    +00051 };
    +00052 
    +00053 extern void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads);
    +00054 
    +00055 extern void joinThreads (std :: vector <pthread_t *> & __ll_threads);
    +00056 
    +00057 extern bool atLeastOneActiveThread (); /* It returns 'true' iff at least one process is going
    +00058                                       to send messages */
    +00059   
    +00060 extern unsigned numberOfActiveThreads ();
    +00061 
    +00062 
    +00063 #endif /*THREAD_H_*/
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/topology_8cpp-source.html b/trunk/paradiseo-peo/docs/html/topology_8cpp-source.html new file mode 100644 index 000000000..5c37d426d --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/topology_8cpp-source.html @@ -0,0 +1,64 @@ + + +ParadisEO: topology.cpp Source File + + + + +
    +
    +

    topology.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "topo.cpp"
    +00004 
    +00005 // (c) OPAC Team, LIFL, September 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include "topology.h"
    +00025 
    +00026 Topology :: ~ Topology () {
    +00027   
    +00028   /* Nothing ! */
    +00029 }
    +00030 
    +00031 void Topology :: add (Cooperative & __mig) {
    +00032   
    +00033   mig.push_back (& __mig) ;
    +00034 } 
    +00035 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/topology_8h-source.html b/trunk/paradiseo-peo/docs/html/topology_8h-source.html new file mode 100644 index 000000000..0fd9e5a6a --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/topology_8h-source.html @@ -0,0 +1,77 @@ + + +ParadisEO: topology.h Source File + + + + +
    +
    +

    topology.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "topology.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, September 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __topology_h
    +00025 #define __topology_h
    +00026 
    +00027 #include <vector>
    +00028 
    +00029 #include "cooperative.h"
    +00030 
    +00031 class Topology {
    +00032 
    +00033 public:
    +00034 
    +00035         virtual ~Topology ();
    +00036 
    +00037         void add (Cooperative & __mig); 
    +00038 
    +00039         virtual void setNeighbors (Cooperative * __mig,
    +00040                                 std :: vector <Cooperative *> & __from,
    +00041                                 std :: vector <Cooperative *> & __to) = 0;
    +00042 
    +00043 protected:
    +00044 
    +00045         std :: vector <Cooperative *> mig ;  
    +00046 };
    +00047 
    +00048 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/tree.html b/trunk/paradiseo-peo/docs/html/tree.html new file mode 100644 index 000000000..af488a57f --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/tree.html @@ -0,0 +1,235 @@ + + + + + + + TreeView + + + + + +
    +

    ParadisEO

    +
    +

    o*The ParadisEO-PEO Framework

    +

    o+File List

    +
    +

    |o*acconfig.h

    +

    |o*comm.cpp

    +

    |o*comm.h

    +

    |o*communicable.cpp

    +

    |o*communicable.h

    +

    |o*config.h

    +

    |o*coop.cpp

    +

    |o*cooperative.h

    +

    |o*eoPop_comm.h

    +

    |o*eoVector_comm.h

    +

    |o*mess.cpp

    +

    |o*mess.h

    +

    |o*messaging.h

    +

    |o*NEWS

    +

    |o*node.cpp

    +

    |o*node.h

    +

    |o*paradiseo.h

    +

    |o*param.cpp

    +

    |o*param.h

    +

    |o*peo_debug.cpp

    +

    |o*peo_debug.h

    +

    |o*peo_fin.cpp

    +

    |o*peo_fin.h

    +

    |o*peo_init.cpp

    +

    |o*peo_init.h

    +

    |o*peo_param.cpp

    +

    |o*peo_param.h

    +

    |o*peo_run.cpp

    +

    |o*peo_run.h

    +

    |o*peoAggEvalFunc.h

    +

    |o*peoAsyncIslandMig.h

    +

    |o*peoEA.h

    +

    |o*peoNoAggEvalFunc.h

    +

    |o*peoParaPopEval.h

    +

    |o*peoParaSGATransform.h

    +

    |o*peoPopEval.h

    +

    |o*peoSeqPopEval.h

    +

    |o*peoSeqTransform.h

    +

    |o*peoSyncIslandMig.h

    +

    |o*peoSyncMultiStart.h

    +

    |o*peoTransform.h

    +

    |o*reac_thread.cpp

    +

    |o*reac_thread.h

    +

    |o*README

    +

    |o*recv.cpp

    +

    |o*recv.h

    +

    |o*ring_topo.cpp

    +

    |o*ring_topo.h

    +

    |o*rmc.cpp

    +

    |o*rmc.h

    +

    |o*core/runner.cpp

    +

    |o*rmc/mpi/runner.cpp

    +

    |o*runner.h

    +

    |o*scheduler.cpp

    +

    |o*scheduler.h

    +

    |o*schema.cpp

    +

    |o*schema.h

    +

    |o*send.cpp

    +

    |o*send.h

    +

    |o*core/service.cpp

    +

    |o*rmc/mpi/service.cpp

    +

    |o*service.h

    +

    |o*tags.h

    +

    |o*thread.cpp

    +

    |o*thread.h

    +

    |o*topology.cpp

    +

    |o*topology.h

    +

    |o*worker.cpp

    +

    |o*worker.h

    +

    |o*xml_parser.cpp

    +

    |\*xml_parser.h

    +
    +

    o+Class List

    + +

    o+Class Hierarchy

    + +

    o*Class Members

    +

    o+Namespace List

    +
    +

    |\*peo

    +
    +

    \*Namespace Members

    +
    +
    + + diff --git a/trunk/paradiseo-peo/docs/html/worker_8cpp-source.html b/trunk/paradiseo-peo/docs/html/worker_8cpp-source.html new file mode 100644 index 000000000..992adab1e --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/worker_8cpp-source.html @@ -0,0 +1,138 @@ + + +ParadisEO: worker.cpp Source File + + + + +
    +
    +

    worker.cpp

    00001 
    +00002 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00003 
    +00004 // "worker.cpp"
    +00005 
    +00006 // (c) OPAC Team, LIFL, August 2005
    +00007 
    +00008 /* This library is free software; you can redistribute it and/or
    +00009    modify it under the terms of the GNU Lesser General Public
    +00010    License as published by the Free Software Foundation; either
    +00011    version 2 of the License, or (at your option) any later version.
    +00012    
    +00013    This library is distributed in the hope that it will be useful,
    +00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00016    Lesser General Public License for more details.
    +00017    
    +00018    You should have received a copy of the GNU Lesser General Public
    +00019    License along with this library; if not, write to the Free Software
    +00020    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00021    
    +00022    Contact: paradiseo-help@lists.gforge.inria.fr
    +00023 */
    +00024 
    +00025 #include <vector>
    +00026 
    +00027 #include "tags.h"
    +00028 #include "send.h"
    +00029 #include "node.h"
    +00030 #include "schema.h"
    +00031 #include "worker.h"
    +00032 #include "mess.h"
    +00033 #include "../../core/peo_debug.h"
    +00034 
    +00035 static std :: vector <Worker *> key_to_worker (1); /* Vector of registered workers */
    +00036 
    +00037 Worker * getWorker (WORKER_ID __key) {
    +00038 
    +00039   return key_to_worker [__key];  
    +00040 }
    +00041 
    +00042 Worker :: Worker () {
    +00043   
    +00044   toto = false;
    +00045   id = key_to_worker.size ();
    +00046   key_to_worker.push_back (this);
    +00047 }
    +00048 
    +00049 void Worker :: packResult () {
    +00050   
    +00051   pack (serv_id);
    +00052   serv -> packResult ();    
    +00053 }
    +00054 
    +00055 void Worker :: unpackData () {
    +00056 
    +00057   printDebugMessage ("unpacking the ID. of the service.");
    +00058   unpack (serv_id);
    +00059   serv = getService (serv_id); 
    +00060   printDebugMessage ("found the service.");
    +00061   serv -> unpackData (); 
    +00062   printDebugMessage ("unpacking the data.");
    +00063   setActive ();
    +00064 }
    +00065 
    +00066 void Worker :: packTaskDone () {
    +00067 
    +00068   pack (getNodeRank ());
    +00069   pack (id);
    +00070 }
    +00071 
    +00072 void Worker :: notifySendingResult () {
    +00073 
    +00074   /* Notifying the scheduler of the termination */
    +00075   toto = true;
    +00076   wakeUp ();
    +00077 }
    +00078 
    +00079 void Worker :: notifySendingTaskDone () {
    +00080 
    +00081   setPassive ();
    +00082 }
    +00083   
    +00084 void Worker :: setSource (int __rank) {
    +00085 
    +00086   src = __rank;
    +00087 }
    +00088 
    +00089 void Worker :: start () {
    +00090 
    +00091   while (true) {
    +00092     
    +00093     sleep (); 
    +00094 
    +00095     if (! atLeastOneActiveRunner ())
    +00096       break;
    +00097     
    +00098     if (toto) {
    +00099       send (this, my_node -> rk_sched, TASK_DONE_TAG);  
    +00100       toto = false;
    +00101     }
    +00102     else {
    +00103 
    +00104       printDebugMessage ("executing the task.");
    +00105       serv -> execute ();   
    +00106       send (this, src, TASK_RESULT_TAG);    
    +00107     }
    +00108   }
    +00109 }
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/worker_8h-source.html b/trunk/paradiseo-peo/docs/html/worker_8h-source.html new file mode 100644 index 000000000..96a50bca0 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/worker_8h-source.html @@ -0,0 +1,94 @@ + + +ParadisEO: worker.h Source File + + + + +
    +
    +

    worker.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "worker.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __worker_h
    +00025 #define __worker_h
    +00026 
    +00027 #include "../../core/communicable.h"
    +00028 #include "../../core/reac_thread.h"
    +00029 #include "../../core/service.h"
    +00030 
    +00031 typedef unsigned WORKER_ID; 
    +00032 
    +00033 class Worker : public Communicable, public ReactiveThread {
    +00034 
    +00035 public : 
    +00036 
    +00037   Worker ();
    +00038 
    +00039   void start ();
    +00040 
    +00041   void packResult ();
    +00042 
    +00043   void unpackData ();
    +00044 
    +00045   void packTaskDone (); 
    +00046 
    +00047   void notifySendingResult ();
    +00048 
    +00049   void notifySendingTaskDone ();
    +00050   
    +00051   void setSource (int __rank);
    +00052   
    +00053 private :
    +00054 
    +00055   WORKER_ID id;
    +00056   SERVICE_ID serv_id;
    +00057   Service * serv;
    +00058   int src;
    +00059 
    +00060   bool toto;
    +00061 };
    +00062 
    +00063 extern Worker * getWorker (WORKER_ID __key);
    +00064 
    +00065 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/xml__parser_8cpp-source.html b/trunk/paradiseo-peo/docs/html/xml__parser_8cpp-source.html new file mode 100644 index 000000000..936e2c1f9 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/xml__parser_8cpp-source.html @@ -0,0 +1,119 @@ + + +ParadisEO: xml_parser.cpp Source File + + + + +
    +
    +

    xml_parser.cpp

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "xml_parser.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #include <libxml/xmlreader.h>
    +00025 
    +00026 #include "xml_parser.h"
    +00027 
    +00028 static xmlTextReaderPtr reader;
    +00029 
    +00030 void openXMLDocument (const char * __filename) {
    +00031   
    +00032   reader = xmlNewTextReaderFilename (__filename);
    +00033   
    +00034   if (! reader) {
    +00035     
    +00036     fprintf (stderr, "unable to open '%s'.\n", __filename);
    +00037     exit (1);
    +00038   }
    +00039 }
    +00040 
    +00041 void closeXMLDocument () {
    +00042 
    +00043   xmlFreeTextReader (reader);
    +00044 }
    +00045 
    +00046 std :: string getAttributeValue (const std :: string & __attr) {
    +00047   
    +00048   xmlChar * value = xmlTextReaderGetAttribute (reader, (const xmlChar *) __attr.c_str ());
    +00049   
    +00050   std :: string str ((const char *) value);
    +00051   
    +00052   xmlFree (value);
    +00053   
    +00054   return str;
    +00055 }
    +00056 
    +00057 static bool isSep (const xmlChar * __text) {
    +00058   
    +00059   for (unsigned i = 0; i < strlen ((char *) __text); i ++)
    +00060     if (__text [i] != ' ' && __text [i] != '\t' && __text [i] != '\n')
    +00061       return false;
    +00062   return true;
    +00063 }
    +00064 
    +00065 std :: string getNextNode () {
    +00066   
    +00067   xmlChar * name, * value;
    +00068 
    +00069   do {
    +00070     xmlTextReaderRead (reader);
    +00071     name = xmlTextReaderName (reader);
    +00072     value = xmlTextReaderValue (reader);
    +00073     //    printf ("value = %s\n", value);
    +00074   } while (! strcmp ((char *) name, "#text") && isSep (value));
    +00075 
    +00076   std :: string str;
    +00077 
    +00078   if (strcmp ((char *) name, "#text"))
    +00079     str.assign ((char *) name);
    +00080   else
    +00081     str.assign ((char *) value);
    +00082   
    +00083   if (name)
    +00084     xmlFree (name);
    +00085   if (value)
    +00086     xmlFree (value);
    +00087     
    +00088   return str;
    +00089 }
    +00090 
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/html/xml__parser_8h-source.html b/trunk/paradiseo-peo/docs/html/xml__parser_8h-source.html new file mode 100644 index 000000000..f30094709 --- /dev/null +++ b/trunk/paradiseo-peo/docs/html/xml__parser_8h-source.html @@ -0,0 +1,66 @@ + + +ParadisEO: xml_parser.h Source File + + + + +
    +
    +

    xml_parser.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "xml_parser.h"
    +00004 
    +00005 // (c) OPAC Team, LIFL, August 2005
    +00006 
    +00007 /* This library is free software; you can redistribute it and/or
    +00008    modify it under the terms of the GNU Lesser General Public
    +00009    License as published by the Free Software Foundation; either
    +00010    version 2 of the License, or (at your option) any later version.
    +00011    
    +00012    This library is distributed in the hope that it will be useful,
    +00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +00015    Lesser General Public License for more details.
    +00016    
    +00017    You should have received a copy of the GNU Lesser General Public
    +00018    License along with this library; if not, write to the Free Software
    +00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    +00020    
    +00021    Contact: paradiseo-help@lists.gforge.inria.fr
    +00022 */
    +00023 
    +00024 #ifndef __xml_parser_h
    +00025 #define __xml_parser_h
    +00026 
    +00027 #include <string>
    +00028 
    +00029 extern void openXMLDocument (const char * __filename);
    +00030 
    +00031 extern void closeXMLDocument ();
    +00032 
    +00033 extern std :: string getAttributeValue (const std :: string & __attr);
    +00034 
    +00035 extern std :: string getNextNode ();
    +00036 
    +00037 #endif
    +

    Generated on Wed Dec 20 13:45:48 2006 for ParadisEO by  + +doxygen 1.4.6
    + + diff --git a/trunk/paradiseo-peo/docs/latex/Helvetica.ttf b/trunk/paradiseo-peo/docs/latex/Helvetica.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8051f8a119f13c1cce42c147c8252d69c40d8dff GIT binary patch literal 32760 zcmcG$cYIV;8aIBUe)m29`kxMbik2ou#B8Ed*Zy)|Jb<~A$%JwgQiVvoQGUUM2PHw_mye0 z?wC3`hI_#4{RrLu(DW%2C*Qj0svDsxec}D$>2Sb!mA?mGFN4?V(`V0Lysb5jzP|&$ zZ{4i9lO`f_&N_sqWy0$XGp97n>HM&>A41bx;5$dpp161(GgDZB&`dr2e{jyk*;Af4 zb-n^#=fLZ`=FM%KUtsU)hu3g^)G=w{{NU2`C-M=R1+TevQ|C>ay(qH#M}!(m;r0G` z4O8Ydp8Ti{p+(;yB$yCp*5S>FgZCcg3g8O7$u099no2AJM`WHQ^oNCSXJEPUQ&}~% z3aKcF_HyqhhT#I;P52z;;p1oqz3|)H&%l<47-r(LQZP7(U4$0>cDT29w4h9lE)N;0wI2l{}(a z5yxI&kfdWTVB{8f?gC*>kbETKM{sxKiYiyiJIaSDm&+?V%25UEE7xF^pBFNR%wbqz z#G-3KrtO-_p{pp!w$T{^Il`N`V{keVjXL1tTFE{&B9!w4@sfOs5zDwzwj7o6Wtb@^ zB#1FSB}wwi(9UhHXcSHsFRxVEl?xX-E?iK)M->&7O2=1&hmUUNScI`su9Vm0=UEwZ zfmy~y1@^B?zASwD44%b^xL@MGzD0mDMCsiPcL*ldZ#=#rm@qfsjZm&X)n>&-n*cl$j5bRN@;otG{pzD=&_ zb=o_>W^1_jkrxGUzPdIur8I?zte8SZnT}YG_};X>>H8^#$Hb0Ama!p` zo#K`BI>lu$=@h5Y!ke8&D`RsS9mMW5x{2Lo@DRIK@-a5Al)~6t20w3h83Mf7D@k5& z7>PE7M1#u}b{cI?r_oNrHikipE^Ovo@nN;pXfzlkNkm?k%jrat-DWc@HyL$2&ybst z>mh^lAw$@xnqyVQ?M7l;5RxA9iVwl}!r&b;$ATb|tz>6&aQAd7NbzX<1?9qx?PWS% zAXu>O8o}f^DjhJC=2$MQ*K*yX%azyHc6ZT@>A!wph~x2kr!}ppz#1wFSqm7t6xh?4 zkUhktSwoC9WDQLlwfoIMi63z8sI8-L&ruJL+Iwm+b|l^%wRL3TjZq75+2F+Q-FVLy zJaY@)n;1@)Er~5#5+m`R#7I(sXM)BI?Ci!``Q9iS<)c#kff`=s$826sadB?{(1=iV zZoIgTnUuSPSrlr_U0S?0)ReoiSjlhg{Njil^9O_Jg*mOA=hd8GT49|~n(fe+1RdFV zAsN~AC7?;jUJ}a7dq-bl)9Xv}^q~^g*@JH-&m6AiFxQTK$H+6tOZGN91Mf#$agi#4 zd24byZ5+yO#U%%^)B}#TWWA3KzGJu)KDzB-QDcP4uVjhkMbt=Bgo(70TUArG!|4nJ zg2B?#9zC+M;J+VK9S9~h8qLp_Wl73ID)_Xspwg{GuZmpv#<|K0g(%1HM#SS%)l|V% zaVxk@9Lu?5Z{DkELcFs5a(z41S*iqGzn~kx{k;rRf4Lo1T!!P9%VC-?gYI0={^A$R z7H4d&v3qo_ak)0d`FXBBcc_CxC3v z6^Bc!a41+(TA0zJ3KjI|W{$$!QL8Q2ln)=t*UN}rOSEg1+=6aKquJ5yl`CNnMdLWm z6?G>WB@U;_tQB=FT4(UpKb7?ul^=UB{Fuqu1r!Ru}vJ<+>SnOj}wvE@w{-lRY7N&tFyilmN_W;UEgOw5M1K7dAN|7xAWYfV4(V3$^+7!~Al{juKEH3Eb zfays~jo?%s=BJ=XF-#AG3q<^XcyG~@Th|{tvS#%G9P3jv=H|YzFsTn*`!l}yhYppL38#Ut*task+CA;k}Imq4q^+B>;y4y!i1>eXZ zryVD~_LYk7(6C*vq@67NS1;Nv;1X@>|K+RHon$6&$`3P*`AC!FhvmZ@(O;*5JbB_Bd={{{pJG&|c9_RonKSAP}hO55vQeQM2ZTFOQ=#Nr6$+-`SYro`(B!K^O+~MzLNMG)^&3q&%1R>(;c%D{ssLe3>Y{uEe%&D4nHt; z<6Xn{?wvGg+p7=;Nk4D+J-i4EEp zcU+;$2+p$t0x}%O5n`rhtAN+RuU*0T%PoJX9CKpj9T~mSKwlEWPT-%g@%wWfSI^e0 z-+KJzL?A(xdoY|ox9j}+Op>V(QBp9ni1Z4i?F^<@U_#rO@g`#c-297{|9yUI8ZsAV zMBujo%%)u-?^5fU+ACwp$`fNM&p^a~9{>5o(XH#p{PAkXx$hJIObBpxm6=37gtNQQ z8g-D2Wyy=Z5-W*%8p`W<850+1wpE8%MsQjTIvvls;M=VhvtlynWgDww1T68K45?Mn zhHbC#9Fm`f@MVi?;GRXQ*;;g+ESRa zG22+QZba3(`v#5J)E!bbj2cioTgDy+t6i!F&>WHcEHHC89WTy-yZo8Mb1Fy`Buj2R zwXihyt-M^`UanjyFGsnTAqKjfpBFYmcmvTcgf(V@6ZLr09=s`0-;N*HMYp>WbKpFC z5?|oE(P<>1p@$?0@?U@RZR{$aljxXaTTypqy^{5^((5}<<_eLt+6UV}Nd*fD8M`nZF%Te9) z$UKHr;z~kr8X_KU9(=&f&byD^*@d|B70Rt_hcT`PlU)?D_a<4m_0S8aUWuL!23H`?JBQ;L4gZQUevMEG|mS%)%i7vfdnyV_))}kesRziBM^J3 zL0jx$1`}pGvyUOnLWCjM1-*pNNz6Bhd;@a58&1wPFM<1qn511v>Jp7Q<6x<%PDP`3 zT!8WJ&56-&?(e_AHxM)e;&n6E2Kt(U4z=(>x8iHT??2a66Dj@P3&Dy2Ud7OP?bOX|lKP*U)j84;^OJ*HWSq^0Wk5i{T4vGCyho9o`+ z`N19cAKkrd+3wwUE*lgl?_(DCdT~N?qVrrLk$7$Iwj=n7#KS*a!qaix_cPYex%d(W z=qikjgc{W#LvyB?>8nRI;MfFj7gY{Yl2Du?sV47{kQ9K$-GaIq42qd+DTy5$7{%sHc zC3il%^rmHjmj=8ufnHxZ%(o7%&yT)Vi+gfC`QzLx{Bhlz!rMOGKz)t=HsehFWaARc z66-yd6PAmfi{48f{VVbjEAc8mB}MTo{O>w1AstMx09lIrnGioo;l_&heB&m;Ie zAajDp#~Azy1o6#PW^8W7u0sYt1nmA+a$GfGqL&(-@5A-b`NYS`N)$v2#MgTBp$amA z%q1%bOOBCrh|xA3NKPn?yP{M`sr4$aXzxe{&YJPM?pkRK2HJIfmP--DwGCl=C{h9= za@|o0OWGqt>6^d;iKU&!2p1oPY1$-sO|p?tJ~? z)R_-HzTSG~)9?0<-gDxabrbVpBu93B#X4Xlqv(A#lQTFB{S0diY(MiT^Fl9kt7Dc@ zXPfL;V7SA!#<1RYkM~)F#043e2FVnrVRbmopa;|OOtT7Kb{xA<7BWB@qu1M67tMIw zWV)Je_xm{3pJlK#P6*Bol3C4Lws8bg9clyrrY5N0Gt&krd8 zucK=O5$DL3z?PXS_C2+{V2I5kH@2>+o3X*x68i3?#qZ3VI{B{6iElo7wG-d%dSvbX zyO!;=JxLZXpLEx%Rl!4VPCGbx!sFfjFK=v1{P-29FW_CQ0`Y`|4Cu02Y#FVeu76a& zTmQD68^R1RJj5~C#S@;Ng zM`Bya)FT`xsVRX%36e(Dpi@)R3Uy7PBHd;aSj#rmV6YV;qL3hA$RT4Z-k^=#-{YWc z(J0^@%2$w>gT6uTb_LRNI%2UH1p90^L$THi66Y(}dMa!Qat)oPUdcGb88A{(PgwPU;8X8|=mVq)?8 zR5n3*)il=cGngkRG#%cgunNebOOrzvMlQugT$_WI6SxSO@D`Bb(u2lB|4SYN|0$2Z zN+flWG3q-3w4&s!TG`h-)dov?<3&@ zhgk;--I5VZ3x=p>n=}2Yq1r$|l)U);33Tj0iAB!u4N1Nhrg2$K(m8x?KrAjVV_ zKo>UWNK|?KIHpP!&I!)B&J|A9*-Fxzqg~#t{kraUsjjB7xpC^)v|*tttAoH3bQMe* zwQm-?jb;wWtdzj$II!(EqsClqcI6D5IkNYN+ez;e(^@(fon7_k#DypB`DX9u9VJy8 zhc-O()Y2t;*x|;yyvn?rzW>vt+Qh&AxW4^PJQy#-yIxL8xrk< zi%mzFyZ&_#`^(-9TN0MU)z;7U;_vXAk5lY-ILxveX4#3-08{=_Eh%!~EXP2{z{pqn zZ}T`Y4=+c{@iKP4P%k&=7Z{c}??vnJ26m0GQeLHBW4O=xuK5kCB^9RopfBj5n_w`P zZn^~layqa2vx0i$cOkvk-+f1S+}#rL^IWFiV(>S*l^>ba)7 z_Ur<^qE?EIxF7WDcWPmoXNW^h8|xUAHkFy>nC+RCw#2jCzrk~_|53+o&k4_Wj<14O zg4SM+CmnkoOj*`so@7w-l?G$$3I+LKroYNKf!Zn`=oE+FuTH923$;*zV>pIn&@%IX zS*IMTdo5J;%r}PCteS~=^K}*b)j?7nyJ3v3s~C#Ym|e3yH<6;k460nP1-#7xi5Lwc zBbfTiF6?FAUdOVD!e}-=9gY!3LiWC`r{j@h7kndJzm2`Kz?9Q*D8WUUO3#9&e?oH!MdXZD49npT71yqz@#SH)-E( zM61=@M)_{}LHTL4ijz}d^e`%yNMLHz?MbgQVQAf|IE9ZI6$jUE(FRfP7xN=sz zjFo`W@w#$WDwWH)T(*KGK^C(+P1i4}98xR|8Ku{zbR+>ZF!kC+BIRwW(x{>S`i0&| zx=wecUDvPrdh!MLI}iPZ?a97|cr-@UZ(^DtyykdDAlz{>1`aZ0%t4~^$8a?S1l3@C zU%)Q}S>h4caxLUupzFf*%Bht>?p#l0JN&pjU02nW5f@>*i0$*3Q`ZsW^g=abs`EgILr`Tm}U7e7{Kl14CJ`4aL6NKw~)+qFC^2! zcs=Bs03~X}0JRgXbVBo8SlF^_rOaD&VaD(3cx)H7w*PU*O=J@b@c@Q+h|oKRY82ct zr-JvbMqKia`4<2*Dd&+#2m+qob;n=D;eN|2+vzR;k2@A|5&U7c=d~gRU+ZK}k(G&w z&A0-WHz%gjyB-5JUk^E_AElyIYA)!nmn`!v^OD;=Q@muRexi|#fn)U;4)s5~GA%2QK=<)M%tjrY%y#yjiMmGMDH8S2umBd!|WN;7i6 z%t1BF;kvaz;ewgY4wOLR;Qj#o(I9K8oKy{yaVks0R3p(*vB#fazau~Wc6W_6vYydrZ!ep%ee)xZ)91c>uJ)<fZ5zfL9F*_xaRpcp- z^$Cx3)ufCKjm#Q3ux8{G*Oc(otc9K>DGlkXU8_7BQtl0{jkt|UwGlDHsl${^8F_NG zOk|zoIJpJ&L4(QhmOf>S6rf>Q84gD0MM?A+u0$E+_~G1J(oKLrwvxM5lTv*XO1JDV zrROR0w6eu+sD?b*Qc;?n4xblM8hH}%>>^y`9z7}v2toCt15yL9fOGQotnbT}iQ}sF0+mrLs^Xu&@Qe^pXN2X46u0 zFvTuQEGX22rI45wqh&-e^*>!xWhCr9y>||)*)`+oe>RMIGM3uB*`JkCG_qm!3yHm_ zze_Ct@I(CIkC?}|k3LlJQ)16QzDV4Y_^Horlb7IEvHBCfw_)PDhd=2z!e&S~?z*jX zS^X_*C#v;z>eGYAPXA=(c3iPzZ2Yl~i5pDbj9%5)u<3c6`qF2KY2W>rcyjmtJ7=6* z(Qt9g%b#8T9Gh_P)Z2ScCBFFcJJ}g-Jmj8jeO8^Cx^8Rl&3^!i?*x7WSHm3xEjJ>R z2A~L(*`UD2L;xLQNWpt#^ye>hJht;w{EtWar}_%GW54vrClY+*s z=3Dp%vle5nRI6FGf7-~jscDVkDv_VzS-{N`!TfS}%Y24IWLz29en*NZS}p$U?5r#V z#e9NE!0$IB!4=_e3rF;xoD_dhGi32-&v6>?0Ra+dHq@lR#?nL?76__AbpY@))5}r;?r$ZLU8fqSPFuZcRMV>)5)a~DD@z9r z?tj;liO=xt@sU1b%5K}TA+eV`R _~!~TPBcwBP@B)(YIaPm95^@Y>JFX0bY}ls z?*NJgMpHY#<`#nGNI|V??Ico{0)DH9VG`K2`6*3kRmx`cDE9*Mtl=orVtCVV7F|gB zSBlwaNinCSFxh;jIolTu3^0tejk1q)Pv>T)EVbNgd6ap?_^59eeunHae`vHK8}cYN z#lun<>|kaLQ=gxa8B>6}!FsKJJ>&JWq7pF;LXjX8-#r0mBq(6P?VkjLs9})Q9ni`i z4F)ROla?kLg>oyXK?8R3AlvCMI+pYT5Ns%rfytqw4`N-+ww&yhcQoi|AmnJAFjTN=lt;^9&zCOsct(Scq;M3{l^pEu0H{G^+}Mj zF(4x*7@t*YBpASbgyh7V6~74yaG?-IdIBj**S!0Gop-q6Unf034~mGzj8`Y{0w=Hn z%e!437vW_|FBv4zTZheIbuhe_afYzP2rHN13t@+34nc_taO-UNfzlEc5~u+>AfX^2 zBH>Vv;v|#;*+%F|{PPQA?yQ;LICRPVr&lMSlyv{I`TZ&%o;7rD;$7~TJ!Q!4i8HT1 zpGfSU*kf;Te!p*@`|97>K)k`|DbR&);67zER<-k-Ul4RU;IU8%mqfpe1jww~RG(rg z)ZNAm3Q9o(kvs-g?7C}x&#}pgqBI0;sxDuM{=Ij?_xf`c9HDwsHSHv+uJb}&N&-&;3()o7=5Dl^V+<2Qk#Lt3s!7l($i7M z;v``NLxFjx-^f4$Az~cK2&aP|hil2G1%#rZDFbJuM1m5Q+>uFLgHhRDsl=~P@(2(J zKH3T2FS%W%w zmCA)f*e8RG*vzo}xT;s+(pJJ%G3cQ~m>>vE z;dITVy)>M+xu7t)?Ut9^W@aU~X&Oi3ws^hE&8CO9P})%o^rnMz>JDq2E?Opva?4K(XxP|)i<-wdyXt}RQqDWO8xwl!NE^!OKQ zFE^Yi9PTBEZg(#p@+?UdB#vR(ASc-XLIk2zP{-RqhMeYt)xsf z0dT*A+t0Oe=Yc3PNTA2$JRJ_|nsobh41{WH00a&O;U?qyp1WXEbK<>Uc?0{WIjHfp$TVg`0Eyk+07`^dBVc4}NameJi)KK-t^$l@U4?;r) z1&2f&!aDQTljIYu>v)9R)rmT;Tmp&DA|H3WbZr~?>bnHc9<|wHvtjl)RG{iH0WIW^ zK(oPC^1N!)5fEPO{`udyudm`s3!W6pkR8tQM-a?^?S=2#h7fOp?^Eysbp;|O!A86S zyHLMI|CXK+^#k<-O-vRWHslybGh^9>hQ-FU20b45InCEr8g_w-SJdVJ`5&^K}JWhaJL4T|1R;*$|1j?$E4F;o8L4rtXEln0;IYxE? z$eDkT3qox=UzPNt6jb#qpmuwVj0Dn#4DXOuEUO{_JVDbu1w$cZ5rpC4ijIBVxg6RZMBmojMMi7BCE9wN62?Dkd z56ULIW49$+F-HL*Ow1lVK*hYn*zIb zy8F|C8#>daeVS9O0d>LDF<|rKZ!+ZAo7WOBJS*81Ff>h9n;_Dg1Tnzp+y{_Nc+m>A z)?>mp#b)z5ywJVLZa>3V{IY0|P(F&M2{=`P z0ImgG1_GHhnuOQk;#0W)3oVJmubfF7+w~Ss`S>&Jz2n>a|B(2Yyn|=sCr&1w{nM9; z9f#h+V}6(Tcj62##NK8sKbW{ku>y!`*$&WM18^KhsYO%FGi_wBGT1g&8Ea!@y&qH% zIbAgLLxLqDc!C}be;${i%SO0=wGl&=`Zy#vH=?bi8}7_K)ZLKB(8`q-p^~fz zDrY@V^L^s%n6#FOzM`KuE5aL0_6DTiktPjqy=$lwht#@%g)@)0nXHgey?oY+w& zwx|zGh-{A#x2wcXWFH%#0h29YOXIV-Zq8_=Cs*z)iwxn0I0r`J+=#T%k-6MbW(l`} z*}!cFSNJrV05;t6IqWs~es1k_4)XZ@!*0K!hiLCbQw zLPTc_nG2M+HAD`w9>CXPg<>iw@L5)fg!FSuYXG<)BbPEfcsmaDOJ zk}OeL5d))kBZ`YAYl@PfnqnrU%xozGr(J{VH6w2XH}7%B%wXm$uozWeOaYg#qy}KQ zVYk3mT?Yav-P4-J02MS6)$}M?H4p71>tBC&$vf{?W{w!rdHLjsIitFT2LBoFT)lPZ z!%rvjxMNjs-SPNGDdF^?3xJ-JziLCNtm|076qMXCV7kVO7zb5=zd^>6hZ5@JlbA_t zBQu|6!x=?P%-4q*s2h^fFVHu=f5vd8MmH{HROUTaW2PaJPSTl-aIvW{t#7zr?wH`n zv=QN1a-CtOajI>K>kfH|VTozEvLL-NyoOmX-(y&Bx=&f1es}l*!&cK)yFZ+6G{{^C z@@KE0<5`CAIGmme#~{t~cH0Ctrrm+MDL9C$aV?$)tTi5@-2G~}o8RwXIDa?M8}SSh zBPa`Jd3uB*794?6AhoFZH&QN&ll=!)Knv=yT&8p?zzrbd>VjOf5&|u(6D<^`_9q;1W+M8GVX|B!duJd?ipS^u4iJ_uo=_t{O3bY|Gb7fX4<=Z z|ISz`{&aNHk~LSKcr)>@NASnWocl)I+}O9@v^3|$Xvx!4=Ds?4#=9$x_ikJ{wyL0D zW@gVr3m2Seoc}G{19Vid$3UBOs0xT;#1F#*$u7^aP@`&W)1AQ6>|X za`k!oTKzr3J>q74oBons4(hA*fXK@N;22_1;B1g_LhcnLoQ)7p#Dx1cC_yYaMZi-C z#N9yH$c$ABxJlS7z-tVB7DUaAO(1v^*$y=Wdc+*$syUJe@#AJlDlTyx#E|Qnxh%(m2ruvEV^ul3F|eaZt1XF!qmw5K6ap zeh={?{Lqjw6Fyd~g^WNa(Xxs-1cC7oK%QCzSb$0Ij<^1Zmv;}OcEcOq=z#3;>c>s< z7B6PAv@8;6f4YU#PU8(~-z*d{XIUby7%Dc$EXA&YXn=X3Wq@lm8f6}B8Rb&83ENBr zI+!>DJxq|n$$GsAZA>P;&1$jGJ|-75b`hRoSn@mB)Y*U~sO4JK3J7+R0AXl7S&oM5=1j(!*09lW?EEcFv z2p*@?qx2T>Fcd_3SleMyp^!4{aF7CpZg(rb_du7;_P8rMAYSkAxI0`!`%UTl)eXyi zJz}S38`Phg0BwP&wDPynJDr+eV|lRKlow)dds~>7Ac&1`2u>Mr^=YcrR5J#` zd|SyVH4BWS8#`o@Wy!LZ;u5A*C>2W$WyT^)iB+;#X*zD9D`Qs<4on#>C;x43uD%5y zV71Jht`^}%GKsKRx=cCS7_k(yWkQ)uzws8~Ha0GdlgAiuvrNNN*g9dRJi|D}vVdJ8 zQ0K77vdFrIU9Vd&ZDCu5BbGPVw}p?{PlQj6A6dR;zY)GMer3s_opT}vyT>rHqF7DP z@q-n`09|xeNa#gkkQu#Ik}}cXevtue*$@N<9KSYU=WZ=hSqS8|?XhL*-lN2T`Y5+5s%{l~ ziUYV~m<9(fZw!K?FCf0OCN}_!d~?_fAb~eVyTK0nXnxqH27ECq1QHA^2BX7SZnZd^ zfR?}>!@?dUcwea9A&^Y9#AJO+s24^lp>kQGdxY-ktxh;*b;2>aM_}*zH6^z4fOEvTp-g;#e} zUi+EI-HNLH2~4Gx@3P~1TzD8DC5G(@H}`e3#Yy3xuT>-Lux?l}bOmpH((KX@qfgZS zu)}7;$^ybDWJ|e5b~>KUPnW;oSt>rfpc8pszYZcH&sr^565X>8V?6ASuB_Du9 zQXUAzhI9jVhayG5OQRtN7#tv_31Ij+YF_BhS|eBy1y+OiJHb@=z%aB3dQs0F>%0uK zu*({U2y6rhhsIA6HRK3H0tDcT18xcl)g)&I)*MPwvF7Rd`N3=9U6 zki-g-6ahdkQ^G$3vK_=Mn08jmlzoMmu3&~fX@)Ia*e9x$9)*A5{5qb>A@(JBYPFscW-xpEEED_JiCcAqAK z)PaIm1q%(vSTo4D0W2wiVW2yzNK!*F>84Rk>)yl+;)0Q(oQ?p?L@`k~K8kb}kPIFF63d0P zfa^u!iRsB`3&`+Y-Ga#rg?VCW{Ne9O$ zBQXQFXm?Sl`dBWi;}wQP5w`FghsjGU6V{;@#m8v-lt$CwJ*sC7|G5*CuTqp`!^US4F?8LYuBR`LU=?<{F6Ep6* zi;jK`y9d9=orM3Xg|@R&r@N4-CUYT0u$tio1)@}s!(CX7s~Ms)Ku!V6fUpAW{I#&t zN`@cAYk&(@+f3YS{ZX8&QNJ%I>ygmAptk<1 znWzM(s2fFtnC&)rva<}?*?@)GOT1;-1GD3Xcy^s(Ms{u9dc&HmM;(uOb{p)^x%Xrq zb|24t-F+tWkM_?qg}x3Pa0Xn_ob19F8_OBU-jXv?sEJM$W<(e2*8(f|XT#4?b4ekT z`jy=DLT8VV%{3uwZWhV%TqoVqPPzA%aD5b z7&&XAG7*JC>8)g}s${5?)*OuFMfOFwNPbN7H-4bX#oA(IM-0cDVOMHy`YZeyo&@*` zp78ml00IJZPKypv+I>~taq%L>Gk{H+q&UO7_23<;gM^Y+lFsYkE;v@A%%;`<(ToKog<0=CC10)at zdV%j|-@L%)0AFS;ca#IAZipu?#0{fOamRR1oiNKV-89EB$I}-0RDaHS&ixnb-<^MV z|25@&pflhOa=E5lTOLvNNE?P+c?aH)FJU$Ste`5)V7GrjNfOL}Dic&7Dc1{zJ_#*VXw-wG zi>Yrw_0XtLU>pIxx< zMW{3UxT$K>JB^7S5+6N*x4tss-qWYfzHu5fuDbIZrX8f-gHEdhL_H4p`dIrohg*j` zYpu1;$H-&MqlRacXFPhr;Fjvh45p4-pr2=GGCZe0Bp#Ly>Gck%CH$2z#?%R>xuz8+ z#suX2J?cQ(5?qaHfu2C^=6R^FiO6JvW-Hd>lXWg1EBj2?lx|G*!d0Zp(EwOj$P@

    l4D1v*qT z^1)6D0{|AAWZWc~21!|D$`7Rc@Y1=&zZ<^2XYZc^``jzWtlRUSF6%k3zKihDcMVqy7Jw5U>tiU6Pdm7)Y< zrjd=hM2jh%^7@Jo7u0=lckR~P=8oWt3l=`RYw6;hYo6S2_37=HSwE~dF+%Cq^6opY zzH#o|*I~>CgEsm>vg|NsU#OD<$Y&=bm^c>~N61r{ncQ4)iYzElm{LfFbMO;DDn*N!O|A*@eFuvMybW zR(4zf&>Y-feN@9kI=Wc)fL5@t2VP53*pl$SO&8KY5**T)Ao zGyOU06|LZ&n!uwwQM2l|iP+@Mb?3REY0mwa{&B-@gWxe_8uq)}+^n14U8W~cm?9V$ zy~!tGJBiw?EW;ydJM=hqT2D{mjDtqbyHI{cCUEaBV8c(9MZq z%y%F|lmmT9t(9fYmLrF4L*#xoUQBVPKT_F(hMi&W;>iai}<}BB#IHKh!Vlw$N=^Gjx+eld@`ansUx%d=vUU?S~Ar)4|(Y z$$^$kpH-(>FeM03AGKdis0|)%K&5NB+MDzFOj5s8pI&m<3&I6b*yTFw#EMgO);gP@ z`(VBahf!)E{T0(0)0d`B6B{s9n5w`kx}!PsLsTIlOO4mlh=iJX3IbjM0I;2UUE0WT zA=#1(bg6o1Vb_d%Nii)QP|_3_ekVkINhZK=x#&~($vyhaU%t*|#0&R-c4^Lg_nlbs z+?3CD{O-F)o?E_b*WM+Ica8Q83-_2jrey!Uxcu{N7;o6tbgk~EGmBqfvfpca<=xlb zcnxNMEl~X_yU2zP9EFBNXzsB)3&U&?(~mi3V6`r+bcn;8f?032F&xnFeVon))Tpqi z78DnDint9}Rzo#l(pgwsxZiQfLFPGjIQBa_9jt@c!pUl+9X@;s&If4GS?~=k8fqT^ zLqj8yuDWCt28nhdQcDGfil%3pxEXn)E^OrWUThFR(BSC<(8y08#GuvLsb|D?sI*cp zEA(`m*S6f*w(zCFEemE=-&YQ9@ShLFpLx7v0@=BC>F|xqJC1{ltpgQ&9v8edUM(#78f!@I7frG@?5nKM`I zY~<=WQ2x%Rpa;54yG9FoM6HAjhwI4}aBDcuDR7*Q1uipZMc5z{09K&KRMye!l6jra zY}yQZ54Z|+e1#=xvy20Bg8ZtmlH!(v-VYCC zzkTn$pO-#j9QXh`?&^-$D<@Oy2IJ5C1otN6cU6y$AIXmq8I$2(+!dY~!7P%9g%4Ua zAmLK8C4&MBms((J0agYa2x$k@Rd9r70Ziaa!~rlmd^c&dw1`z?Cr8XwVx zg&1EdRv4-bHEaz(T2~`3XYb%15#Qkd$bQ6M;J?-VoBvs`TO?quFf5@I7GSVQ93Y+H zByk1EEa4=XMS_`U1t`2~PmmI189}QYHXY$q!$koxPaNwBmOssi^6bt_1uX`38uUCC!4zzhiGjJ5`uq3N_F=A^_# z0b1oKIptsq<*0mcFsN+~gp#xrXrO~aWIYtvHSmfDOe&<6@(()b=8J=h#%zI&_DZj9 z4#>%W1}F)#b9ySv=PVX%4mg|5R<5n!Tvrad=s*AcfH(PZU`tUvq+X-F0REH)w3l@) zc+a0CV?dh+6jI)h(U=a-5ZV~4xAD^lSLzY6&5A8dHKn0 z@+nMhY8b4N38)dq$dHzlpjz)dL=AJHl-chC-fr z!|Jd%bP~Lrrj=9^>l-K@p&69BAw$=&d9aLp1Uyk1dgCZ`?|!28mJMJTFR&NHKRYi5 zxevK3LE;pGX`;&;1Xwf8@8j)08B`GSX+Tnu&W7>k@QyGEgDx7wo3-ZN_#sz#Gd#AS z6~|R5)E1ye2!JCj4P@fErxssMK zKx}@)Ry0C2AY#*-z1U)~UpJRDYN2;$r!E44#@M9jR=i%pWHYrrTm6O>1jX}jiPfRaz0OxJ*|eQLqy zwL7a7sU>^nEsf8!k%#y7n^)Omc}F8zGiP@12j1Urk$*mv2 z-y)3UYlLb13_&PV$}DA$B3D0Uuw}5LpKBa9PP|o#TjGveU9-8_;$&sEWwv9oYY{Zn z@SI^Ra~pS?G*&;0nZiwxX6YrTkJXt$>JaO3Ll|@Mo_+|5CUHqs%Sd|y+Cz=9WA#4eW2L^Rey0fH(b1(yIo{K$E{j_By^8z zk?(I~k-pE|^ZU=RW9i@S{W8&h^x)bx2b))~JxHuLW8=capF2+f?Jn%chIdcB``+(Q zy#uFS3ph~-#>E0r-Wl~-z0ytTr3_Zsis1er2?VqBX(>JIJyLE?nHSs~6v~`s-a*bm z-Wp-7ew=fh7fKiU8Om(uOmAE8ecR`*&pq$^FW4^l&j&k$jx;u^MD0avnF7^OWsGuB z{#!~yks7=Jpk!C*2o9{m9Imj zLM2LTrPpX5sNUM8WV9@;^}1!4ncuV!u6?HLf$8hc)-CvQ>6lI3&Ce}d{KE6|8xJIA za4)YPHf%%Zwx<(U?;TRsag}-I^y{ZSJoV1UFkZJLW-#YrycFbvzQAoViIQwrPcoR? zq30{?74E_A&Hf#JuFzWOt?>7?_Vq$C@110wTM&1VL6f!!E1&C&yCajoLQ?04V#G2-t z|3}uD;{T60HyPw!rV-D7jSsY0!c!NtBwfo5AhP|Blrty$;SnzPFpEnM(4fWJb|q0phJ+mX2YxsAW{VfLOr{o0!!eDo%bCRRhZ^ahNM8Qrb+%(Y^L z#c6CI+lL*_PG#q_yl56gK{Qy+q5;A4Ut~=TkR)bqhCYVWpcPw5s`>vIrCJ7b;Su01 z0ByM3K>6!*(rNpd7AiqE9(^7eg&`U!`!8u^lX(vixXr7dx@ktm*zq^rd~?t7Ha{EL zS$|8}^BDswY8yH}px0jkNW%fR{yhAtx|B_|rIv|<#J=exQ>UaZ6E}*h(x0=wkaLnT zh)$2onKwA+BPZu2BM4D?V97O37$=UC#>wOK;|z5|omeN;$#wcVLrbJ3!$esV=~>0; zW272+a%6Jm{IvN%s(Da)T>n7k!#P{>o{@IzpU!wDvpMqnh$97}0@dP=jS(`!dWrP} zBX(Bqp5mbywlCnWa96n}xc9lwxOtO1;GXOL(#;0ko7}{G9Kc^Y%)uU2Q798s!Dk^# z(hyoOKFu~qq1II5H^M^^arbd4vreVW5x zj&{LC^?(-vIjg=w1KJwsQyk#03*v<6R?X<C-hsFWBU#o~@M^~<-SqdOiKnc6iik|^b zjDx(6HirBclLhER^s#YNJt7qcP4_Hawzw$#;2V!r^)Ai6fB5p3$C&r)8)q!5b2xIn zt6q6{$qD>(tIgaDZQZgvTBb$^|ppY3X zVLk5D3H`)=wYqu0&E5=6ir`~*07<(|cUH&ij*&VbF%%zwAeVYy?Eyhhbh|*U002+) zDUC4Z1;CV};Z`&nb|$eWiWHbjKxfj-T5~l~JVVNFpOv#}Rr8@k)@Y`G=XT|$DNm6} z8?bIx;=TsBmr(IIBEVja^6{ibUhaOuU zGN2)5xE)mB2)mqGh~dO-PV5{Ced$myp&^Fnl84Om?C|XObb441mN0o(#b_`YC{u%W6+w)_>b=Myn3Ks9Gz=vR z%v~TH^#0KV3fN57$^T5nvJb~UU8Tq^vU$$1VHzk#iThIV$Bpyj>gwf(uJeAB4W{8Us z&<@BQ!eViev=*u|YnXd<>xA{<6KI=wzw{z{N_rU`(H)T9M!%QNp%10MqrXa5(Pb$I zngS#ja!8qoHc!LzekGApEsjD?g+NgPic46OY@#Rucm?^C#$Dl{lYsUW&@!NajN{?AE{UZbG!p60v=cUg*eS`;SXZMWb$R! zGOu45CSc7eq5oIzAY=y`u}9;D03igwl$iCq3t=ev{QYQR4jbuMHEr%~3&}c~y(cT@ zM_@)QzMYjbWUCZ*a zC>sTfg5VjgI-lT`Qy_Q?>#~KYu@DvM%7mWAzRUn#)l~|Eg16@Myz!+vA>+H#ryMf6!1jclajpb9Sl-AGb^%h}pF7&t~2;1&&3r%EPc@HMjz z8a>PwOBA3X04I!+ULQ6XZO{xLm`$drBtVH@pbVt0S%eOAorM)lX1&oMnI(8u4e&u| zUmKlP3$Q?qNU~i~445_-H5nK~D}Ek$A5{{bE3Kfle=8%`4!+1oV}xaJW{> z2cc^KKYs{cv0edN1a84y36Bk8A*QEa_Q7FG4CTNAxWNG{P2y{k8L-yBK*>)U>B;KUm`_Xwg9j&$ zAKP8Q7VJK{y{OmWeTkOiyR$w9p?~ax`5iK+W810IWa`y(WZ9u>XF&Q*V2}O*(y!n} zM@$xMf^t7aDpcql7-QPXZWW*f)zrqd@ol+q?-<`z&M_Z~?-@Q*E=m>)RI!tkBwo}=NhY8i11HI3GAK6) zNs7e7b3-KM4fKXcl&7#!8Z^EZ8#8aHl?1GEL;gJ5^wsc#o)j zHQxjzl~&S6H3peGNop0`=s@$bWOR5rXPdDs*i`5rhQMPy#Do-ERub7PHePOf!NzT4yzx*{ir4B*9pjzexJIkj z%9mPSz(J%j)_gdL<&!@LgGZ;=nxw^fy&5D^=fo==@ewJ1);v;<{Yiu|nxk#O;DI%q z^XoCKM6HT5N12wt|1nD_mHRLoViD4Yb4Qrmh>8~Lc2a=o!n&QPV+;#Iz^q+QM32lw zk9-ctj?O@m?2PE(7y4r=4%JlE#NyZYhV6@C*SUQZ*+W3Q^Djd3#X2+eB4r0kh3}|S1mgK zz@}|mHuKeAy!uRYaK5PLBJ|UfsOLm>mp1{5tbS_dR#p)e?|K7g0yCzv2FwjG=Dh5^ z3YKDC6jN@2XhG}@*2-JWGh*ggx>+ahG=KsH&E8qllUR`zk~3T&Q)XP^R2PnYOieFLr{a>5c)LqW!FZR92d!N@m}5_l z*TAjNe^6Cf$I`IX2h9~YxGa`GFqxGkyzy}8#jcsv1JUl7E842v3#;vYzBucm#cP+V z=BB0g>Sd+g&MdC=%;GEfoIy5wTIV%aT4MLN-#Y%efAz+)Nzb1;?($Xcw`8n*i1iJ2 z2nirMh8+^23tyoM=<;M+y-=`bc$o7GIy_0k%i_bT(5NHc4#jo{#DVaQ0HIeD%QVTy z_Crs}t)Fg1Smh|m4YDM+3B8~nji3yRA?htmH+tm=N)p}RBX12X8ATa5=D-p(eAFP( zm5}1lw8Vsi*6doFt1z|J>M|DA79C`2t??jrurL~Pf9ZozYbw(4Wr>P5h(;(^+@d8a zc2{MIrX@nC4XRj-9(=MuNP6I9QK~e?5eP}bi=s7;@eN-o&=^Z7FtEg6y0k#~ibr|J zj`87X3wp1##O-gt?ems(+g(+MP91l*Oxtfs?|W!`?~V?Xz#?9zE>t#Q{dR#D1FV{! z6PKE&M#*PotdFWm5lUyEyH)5& z!RxqqNkVbsT=O)s=q%rFDy!1Oz%>bAT(s(``rB{v`<+cYE4{bPtH1WcIo|cW?DZR* zQ**7e>rU2J+E!JG+QtGynD(YWUb!@>{$qT70tBK*-YYB-rvAI0BC%s;`ZYA~<1+=| z7e1svQ^WXdYBAd*k3^1`emy~#juI_1PLOyFqKJadPtg)}fYJanOu2NuVIc*ebGC~= zL0beUx#U%!q7C4G0{2ZYj|#uwUjTR;P!CuL$OZ`7EI z?X=FYFmfL8?J>MU*8m=Z{Soy&I$*4!YjOV={Jns4!&QO@VeK(KL3=^}4&0Z6_7Kbf z?jMG|8~!Fw*keq0Qx<4303+zd2xliigxC3!?z-$GygC_-M zGvH443f;wCi97;#m~3ffp9B}k@KsNPNhXt8+jjonKWcLU%wQG5V^6O{3I1xvV! zDDfIZXN0cj4x;48h^)UPO4W$cx`@(2&w#(oV?{n_(K(g;4$_H=$E@-uRm#6^#T?GK0sBkUdM?}Rp5tZDF{ZW{ua4SQa%eO*Zz6EeQ zQ3b-Bf;>z^8miHVYY;~5eSnXM>JWb&!m6(ZpbYBI5H&o3Vtk9JNhN9qy#?vloRHCrd2CEJp~Vz#@cl5+RgRt;8aPa_WZb6!5$W zoHYI^aI(Y&aGfU8GY!7pguPZ`k+v$yUnS$JA`4=vk}+0MF5<1CJc&gJRa7DQeUj2D zaht?55pNaEllBGDzEIi&(%vP*>;|quEIwcn3l4)ydoFlt5R1SfmKy8@3EU=mW+KKK zge>?)$mp>Wi=5UXwB5iK@YEtSVb7KJJc$b=k5A$@Ntub-szqpme}TjSiMt~oL5Hy@ zw|ZG_^$61kyC}VSgt;3yFLE=mNMXH9VLehPctqao5vH)um#&@C9+19*z%%frlQ(IB zOzi@h&LHf46okDGI?qHdx+J|@(z_*HjLOR>09^;-$FZZ4PH2sM2;Yi|{){wxVnD{z z9Hi(t&LOFRvtg1&g)JU!5K{1<#9|jIYUel~Zkw>HpqDgl=jF zP(QSAuAzCd6C{`C_D3!pIV`1tqrwt6}8h$nuXGv10l@0$lrYG zMExwp$QnScbkWu5@QY~)^tp$q$1rK_rZsCUYuBy4wr9iY{v zk>R(I|3;~H)3@jWdYj!Ba|orkh{E99k9yyyELK@$W#n_Dz(Lm|4Jyj;b@n2}@@Jxj zyw5V(7NrHDJQ~p>{|PP|%CL|2(NXC9o6a4E?#Qgj>!{^2x&fg+K*Mwx*BCudzi07= zbCJiO`a26XI|KO{r8n4%%J}(h!kLVTp1#_~O_&P(pp#rMRZ;G5m z`?&%&xQKoTpZ~)?;ahRtqWnZ{jWna3ZKrRF(xxBNJ1m=(L$Y`wFNQ+!hm;Lyk)`l^ z1+749-vNyvuh3hVIv(cn{DktT`lR}WF?alQBoQ^@rUz+1y~GlbQ;iL#K*s0$Bxe#-o!ikYJOJf zQ`RfbtIfDD*HLeS$kI;ZnehO$K>pYGCy|QC9cZ0fXd6=hE$BNKMLRh`zr*!5y~_+N z4&suDNQr|jU^nC1%I;>5umkLIHi}q&!QN#bu)nd7*%urg6^9#erkv;Fa`FxQdVW9u z4%A1U;J@I1;h!lPO1|PzAcn34m32tfoyxtq4k_=b+3E>3f^x1f?14zh0mGAqmksBP z@upj$p62KOeDr+D`M1Vt{I2mmB?fISJ|lCsO(X6<>$&Dly{YXDF4J2QDdQJAzyW?9(B69 zRNbULq`t4dZ|FAs%vuJ@A zf9$lf4FZ3M=pH^r&EjwHH_)D!(h6l3M@!`g*j@Y^Y?K!mZZOvIIyRfmscw|@PjE!< zAG}VP1#QRkX%)XB8lW*%#jFK0;N$q7#WCdV4TOAyF`jMZXN~bR%;Y?q{aBf-dX%5h z@0GV9S@$r#sp3#2`;h-o=|C%ZUTrW0$f10P4l3)RY4{NLW48B&c^BI8Y=$`}b+QWf zse;#hJ{zs5N_h`bMXUL5=|lA6yXf0&g}RdN!IzJ=(EIcQ^onA`T4RYZjs2A4lnR6s zMv1GBBX>1W&!QMo>2|hQ*=Ibm%Ff zMngdTC0mKt&V}SsPh)i3qEx63n73e5>Bg9L7`^)_#(^ef7ATo$IWy5N7GQ+fhifm! z2^B4y9%874$YpIYs<;b65lw%31EEWBoSXZ!S0ASnvP>)RO)xOhBVzB(xI)at*uPl zJ9|Lrxr7kXHIP~_=g~FcuLn+-aeBdd%~v?RQBLngPG-^SslKdK^E);Db)QokV_kCt zu;1--1~vUdX`dzS_ey&L><$M!X#UJTpQf{r=GR*{_YL|(zOqs_6c^j#Z0U_HE2W{> zI9TIg(=(jc4Y7;{CM`U}Ups^&f(gi?p6&Gc^(-g6A{fQx?^&UD%nkT`ISxm#tW;+$ z%bm+~ayIKp9?3#2G8*03qMKwiTEC9m&`xcr^u@tlV-{K#^2D!juIT9w=t>X5@axGQ z#Ou>DZu(>9m$wMq+7h_)Qr8@1(4X0_3Fg7UJ2m}#a|4(7&2fkjf zyHHc@^EJfAw+90{+m0wTkrR=tX#RSgenAPX()1W-v$Jn-RR~p+J*d;X8y&;h+1?|O z)0FMk20H^zhu)au4EFeJL#Z@4@5YfVuaC-PJ+P;WI2F0V!f;1^`@rLRDZ^y@J#p+QTnpd*V+ zH@GZLZSZ443vhn;m&++V6BMJ%@-YcV(M~QlHJ$ZbujPqL(^`1@*gmj3@Z_eR|(PQ7UU!O%pjZSM?RdKWzv zBMKDd2Db^Dp3)LfayV$h#&ZJ8_rnd=*}FybypB2*2ikg#`sGk1y*~c zDVe{3>bC=z0~!Hy080V80Y?4;&mUf4w>HJ$;~TG;vAn>C=>uv0fF3cEca`1iZkbWx z)dX_aUI`n}cQq(j^1AmtfLnpw_uL1YK3BayK5+VsK%p0aPXHqF&I=|j zKgyhyC(QhjlE&!$q}qygO>O)*JRV0i9H+MdDk|tWg#af23MBzI0+s?^1e^s#07h`< zBOkjZP693mGy;|aZULMH7-e$KA}O5K0gEI)BNJ8*+z6N>?)Y(BV#4a+4sR|#6y&kA zDZ8=BmdEDgMe=wRrKe-^WKA~XQ$PuaKS}uXlLU%sisAS0-FSVpW11K>cMpG-i?4+2 z9dCXJ zAMGDt_YBrEw&(1pv@w+p+kXwplZWjmZ9D8gEgv(3a?A}KE5r7qnq)m3p)@nac0J$VA4~RcHTa}8A?Q6Tu$xF zH2oj*ontI^ZkKLwHZ$GYPVJq|dbOv0%oLfYS9#iXQ^(bTA;#_rf~xbo#u&z(F%}V| z?KxsraD*63-hOwEFpIX|9Sl-t`sT*WMr%WIO{?!~P)HI(KCvS(@xwOO#b2f;SKov0 z9P3Zy2K5SIiR40%;6KE);Rs%k&iQ>u*k6Sa3>;A!*x&r~1YK$H1%vHlY@y`C4#{7^ zhZX|^eC9mT1RrVUyeQwkD4z@d!B-#*@WnuBzvOep#7I7s3BI9$0>5vl00=x88VyLE zfeh_Zp4VL9aRGrRJxs4jp4ZaDf=6$V!PsnI$pZol!&{eRv9WB)B2zvjS;{9^c3foH zA!AaasgXPaA(({I7kCm*gXdx~{yR%=Gj_N}>VnI={g`rvoc>-wNZ+}+FH;XM)3l-G zLE(Uzk2|z%d7m(Qdi9{Q*QYOc`m~`s>F+Df-NL!f=^LVMe`jE*+uQ3KuJhLUojtzb z$n=h>RhPxJ<6>M>JH95a4iOlXerZF~rN6JlRVAFKi@2&pTvZ~j>E7uwE|P7$BQRv9 z<{+j8(j0+)2(;Hwjw9HdZn>^OHr_f%=GL5}DzO6;hpA9JCeH}~(XPvy%9?}|`jl`= z6!Yo{r_8N&j+~?Hz=V?pG@8TiA;DihgFc19;g@sRb literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-peo/docs/latex/Makefile b/trunk/paradiseo-peo/docs/latex/Makefile new file mode 100644 index 000000000..776fcf968 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/Makefile @@ -0,0 +1,39 @@ +all: clean refman.dvi + +ps: refman.ps + +pdf: refman.pdf + +ps_2on1: refman_2on1.ps + +pdf_2on1: refman_2on1.pdf + +refman.ps: refman.dvi + dvips -o refman.ps refman.dvi + +refman.pdf: refman.ps + ps2pdf refman.ps refman.pdf + +refman.dvi: refman.tex doxygen.sty + echo "Running latex..." + latex refman.tex + echo "Running makeindex..." + makeindex refman.idx + echo "Rerunning latex...." + latex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + latex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + +refman_2on1.ps: refman.ps + psnup -2 refman.ps >refman_2on1.ps + +refman_2on1.pdf: refman_2on1.ps + ps2pdf refman_2on1.ps refman_2on1.pdf + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/trunk/paradiseo-peo/docs/latex/annotated.tex b/trunk/paradiseo-peo/docs/latex/annotated.tex new file mode 100644 index 000000000..b8ea8bb17 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/annotated.tex @@ -0,0 +1,27 @@ +\section{Paradis\-EO Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{{\bf Communicable} }{\pageref{class_communicable}}{} +\item\contentsline{section}{{\bf Communicator} }{\pageref{class_communicator}}{} +\item\contentsline{section}{{\bf Cooperative} }{\pageref{class_cooperative}}{} +\item\contentsline{section}{{\bf Node} }{\pageref{struct_node}}{} +\item\contentsline{section}{{\bf peo\-Agg\-Eval\-Func$<$ EOT $>$} (The {\bf peo\-Agg\-Eval\-Func}{\rm (p.\,\pageref{classpeo_agg_eval_func})} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided )}{\pageref{classpeo_agg_eval_func}}{} +\item\contentsline{section}{{\bf peo\-Async\-Island\-Mig$<$ EOT $>$} (The {\bf peo\-Async\-Island\-Mig}{\rm (p.\,\pageref{classpeo_async_island_mig})} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e )}{\pageref{classpeo_async_island_mig}}{} +\item\contentsline{section}{{\bf peo\-EA$<$ EOT $>$} (The {\bf peo\-EA}{\rm (p.\,\pageref{classpeo_e_a})} class offers an elementary evolutionary algorithm implementation )}{\pageref{classpeo_e_a}}{} +\item\contentsline{section}{{\bf peo\-No\-Agg\-Eval\-Func$<$ EOT $>$} (The {\bf peo\-No\-Agg\-Eval\-Func}{\rm (p.\,\pageref{classpeo_no_agg_eval_func})} class does nothing more than an association between a fitness value and a specified individual )}{\pageref{classpeo_no_agg_eval_func}}{} +\item\contentsline{section}{{\bf peo\-Para\-Pop\-Eval$<$ EOT $>$} (The {\bf peo\-Para\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_para_pop_eval})} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor )}{\pageref{classpeo_para_pop_eval}}{} +\item\contentsline{section}{{\bf peo\-Para\-SGATransform$<$ EOT $>$} }{\pageref{classpeo_para_s_g_a_transform}}{} +\item\contentsline{section}{{\bf peo\-Pop\-Eval$<$ EOT $>$} (The {\bf {\bf peo\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_pop_eval})}} class provides the interface for constructing Paradis\-EO specific evaluation functors )}{\pageref{classpeo_pop_eval}}{} +\item\contentsline{section}{{\bf peo\-Seq\-Pop\-Eval$<$ EOT $>$} (The {\bf peo\-Seq\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_seq_pop_eval})} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor )}{\pageref{classpeo_seq_pop_eval}}{} +\item\contentsline{section}{{\bf peo\-Seq\-Transform$<$ EOT $>$} (The {\bf peo\-Seq\-Transform}{\rm (p.\,\pageref{classpeo_seq_transform})} represent a wrapper for offering the possibility of using EO derived transform operators along with the Paradis\-EO evolutionary algorithms )}{\pageref{classpeo_seq_transform}}{} +\item\contentsline{section}{{\bf peo\-Sync\-Island\-Mig$<$ EOT $>$} (The {\bf peo\-Sync\-Island\-Mig}{\rm (p.\,\pageref{classpeo_sync_island_mig})} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e )}{\pageref{classpeo_sync_island_mig}}{} +\item\contentsline{section}{{\bf peo\-Sync\-Multi\-Start$<$ EOT $>$} (The {\bf peo\-Sync\-Multi\-Start}{\rm (p.\,\pageref{classpeo_sync_multi_start})} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population )}{\pageref{classpeo_sync_multi_start}}{} +\item\contentsline{section}{{\bf peo\-Transform$<$ EOT $>$} (The {\bf peo\-Transform}{\rm (p.\,\pageref{classpeo_transform})} class acts only as an interface for creating transform operators - for an example please refer to the {\bf {\bf peo\-Seq\-Transform}{\rm (p.\,\pageref{classpeo_seq_transform})}} and the {\bf {\bf peo\-Para\-SGATransform}{\rm (p.\,\pageref{classpeo_para_s_g_a_transform})}} classes )}{\pageref{classpeo_transform}}{} +\item\contentsline{section}{{\bf Reactive\-Thread} }{\pageref{class_reactive_thread}}{} +\item\contentsline{section}{{\bf Ring\-Topology} }{\pageref{class_ring_topology}}{} +\item\contentsline{section}{{\bf Runner} }{\pageref{class_runner}}{} +\item\contentsline{section}{{\bf SEND\_\-REQUEST} }{\pageref{struct_s_e_n_d___r_e_q_u_e_s_t}}{} +\item\contentsline{section}{{\bf Service} }{\pageref{class_service}}{} +\item\contentsline{section}{{\bf Thread} }{\pageref{class_thread}}{} +\item\contentsline{section}{{\bf Topology} }{\pageref{class_topology}}{} +\item\contentsline{section}{{\bf Worker} }{\pageref{class_worker}}{} +\end{CompactList} diff --git a/trunk/paradiseo-peo/docs/latex/class_communicable.eps b/trunk/paradiseo-peo/docs/latex/class_communicable.eps new file mode 100644 index 000000000..a4f4be521 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_communicable.eps @@ -0,0 +1,269 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 57.1429 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 8.75 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 7 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Communicable) cw +(Cooperative) cw +(Runner) cw +(Service) cw +(Worker) cw +(peoAsyncIslandMig< EOT >) cw +(peoSyncIslandMig< EOT >) cw +(peoEA< EOT >) cw +(peoPopEval< EOT >) cw +(peoSyncMultiStart< EOT >) cw +(peoTransform< EOT >) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Communicable) 3 3 box + (Cooperative) 0.5 2 box + (Runner) 2 2 box + (Service) 4 2 box + (Worker) 5 2 box + (peoAsyncIslandMig< EOT >) 0 1 box + (peoSyncIslandMig< EOT >) 1 1 box + (peoEA< EOT >) 2 1 box + (peoPopEval< EOT >) 3 1 box + (peoSyncMultiStart< EOT >) 4 1 box + (peoTransform< EOT >) 5 1 box + (peoParaPopEval< EOT >) 2.5 0 box + (peoSeqPopEval< EOT >) 3.5 0 box + (peoParaSGATransform< EOT >) 4.5 0 box + (peoSeqTransform< EOT >) 5.5 0 box + +% ----- relations ----- + +solid +1 3 2.25 out +solid +0.5 5 3 conn +solid +0 0.5 2.75 in +solid +1 0.5 1.25 out +solid +0 1 2 conn +solid +0 2 2.75 in +solid +1 2 1.25 out +solid +0 4 2.75 in +solid +1 4 1.25 out +solid +3 5 2 conn +solid +0 5 2.75 in +solid +0 0 1.75 in +solid +0 1 1.75 in +solid +0 2 1.75 in +solid +0 3 1.75 in +solid +1 3 0.25 out +solid +2.5 3.5 1 conn +solid +0 4 1.75 in +solid +0 5 1.75 in +solid +1 5 0.25 out +solid +4.5 5.5 1 conn +solid +0 2.5 0.75 in +solid +0 3.5 0.75 in +solid +0 4.5 0.75 in +solid +0 5.5 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/class_communicable.tex b/trunk/paradiseo-peo/docs/latex/class_communicable.tex new file mode 100644 index 000000000..b1cd1ffd4 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_communicable.tex @@ -0,0 +1,63 @@ +\section{Communicable Class Reference} +\label{class_communicable}\index{Communicable@{Communicable}} +Inheritance diagram for Communicable::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.6cm]{class_communicable} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Communicable} ()\label{class_communicable_8ae1827ecf7569b3db1ed386c7d8ad78} + +\item +virtual {\bf $\sim$Communicable} ()\label{class_communicable_2280b0dfa0d3a515fccf62c2a9fd5f41} + +\item +COMM\_\-ID {\bf get\-Key} ()\label{class_communicable_db4307b69b9ccacff55fdbf84b8f50e4} + +\item +void {\bf lock} ()\label{class_communicable_e1f8bd1ee810fd73d44315c95998d19d} + +\item +void {\bf unlock} ()\label{class_communicable_caa814847192e71f434fbf9479ede862} + +\item +void {\bf stop} ()\label{class_communicable_cb53e6534b947bc889aa181d9dbbd13b} + +\item +void {\bf resume} ()\label{class_communicable_3306a9adb11a0ab5af342c0db9f7bb2a} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +COMM\_\-ID {\bf key}\label{class_communicable_605b0efeffe81326f216c9903f5bbf4c} + +\item +sem\_\-t {\bf sem\_\-lock}\label{class_communicable_cf9639312f71a2f348bc1e7789ccbd9d} + +\item +sem\_\-t {\bf sem\_\-stop}\label{class_communicable_29c53b9191348e0505e3bcba6d8b82b1} + +\end{CompactItemize} +\subsection*{Static Protected Attributes} +\begin{CompactItemize} +\item +static unsigned {\bf num\_\-comm} = 0\label{class_communicable_7a6acfdc781a67c9c0ec4f17893f86c3} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 31 of file communicable.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +communicable.h\item +communicable.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_communicator.eps b/trunk/paradiseo-peo/docs/latex/class_communicator.eps new file mode 100644 index 000000000..3d7cc0668 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_communicator.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 550.459 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.908333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Communicator) cw +(ReactiveThread) cw +(Thread) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Communicator) 0 0 box + (ReactiveThread) 0 1 box + (Thread) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/trunk/paradiseo-peo/docs/latex/class_communicator.tex b/trunk/paradiseo-peo/docs/latex/class_communicator.tex new file mode 100644 index 000000000..e4e09f3d5 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_communicator.tex @@ -0,0 +1,30 @@ +\section{Communicator Class Reference} +\label{class_communicator}\index{Communicator@{Communicator}} +Inheritance diagram for Communicator::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_communicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Communicator} (int $\ast$\_\-\_\-argc, char $\ast$$\ast$$\ast$\_\-\_\-argv)\label{class_communicator_7c9dce4ea92bd04d01d53f80c0ef08ee} + +\item +void {\bf start} ()\label{class_communicator_142fae13b16b166519315f248a513c62} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 30 of file comm.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +comm.h\item +comm.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_cooperative.eps b/trunk/paradiseo-peo/docs/latex/class_cooperative.eps new file mode 100644 index 000000000..60c6b6b94 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_cooperative.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 166.667 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Cooperative) cw +(Communicable) cw +(peoAsyncIslandMig< EOT >) cw +(peoSyncIslandMig< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Cooperative) 0.5 1 box + (Communicable) 0.5 2 box + (peoAsyncIslandMig< EOT >) 0 0 box + (peoSyncIslandMig< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/class_cooperative.tex b/trunk/paradiseo-peo/docs/latex/class_cooperative.tex new file mode 100644 index 000000000..2062dc91b --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_cooperative.tex @@ -0,0 +1,48 @@ +\section{Cooperative Class Reference} +\label{class_cooperative}\index{Cooperative@{Cooperative}} +Inheritance diagram for Cooperative::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_cooperative} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Runner} $\ast$ {\bf get\-Owner} ()\label{class_cooperative_4012b4e8329e87d26ee266491e1a883e} + +\item +void {\bf set\-Owner} ({\bf Runner} \&\_\-\_\-runner)\label{class_cooperative_fe7b022567174c8305bc78d8c5749b12} + +\item +virtual void {\bf pack} ()=0\label{class_cooperative_6a4848c94031289df281a571ea427d46} + +\item +virtual void {\bf unpack} ()=0\label{class_cooperative_7c31a68fb29e0a9cbe1da8019e4cdafa} + +\item +void {\bf send} ({\bf Cooperative} $\ast$\_\-\_\-coop)\label{class_cooperative_c609f2a1200da7d1ac96005602515fc6} + +\item +virtual void {\bf notify\-Sending} ()\label{class_cooperative_4439ddeaa1246a2e44c003bfb781739b} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Runner} $\ast$ {\bf owner}\label{class_cooperative_7604f094479d08154ede4996a45bf79e} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 32 of file cooperative.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +cooperative.h\item +coop.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_reactive_thread.eps b/trunk/paradiseo-peo/docs/latex/class_reactive_thread.eps new file mode 100644 index 000000000..9c8a085ba --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_reactive_thread.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 275.229 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.81667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(ReactiveThread) cw +(Thread) cw +(Communicator) cw +(Worker) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (ReactiveThread) 0.5 1 box + (Thread) 0.5 2 box + (Communicator) 0 0 box + (Worker) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/class_reactive_thread.tex b/trunk/paradiseo-peo/docs/latex/class_reactive_thread.tex new file mode 100644 index 000000000..5d39ea429 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_reactive_thread.tex @@ -0,0 +1,39 @@ +\section{Reactive\-Thread Class Reference} +\label{class_reactive_thread}\index{ReactiveThread@{ReactiveThread}} +Inheritance diagram for Reactive\-Thread::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_reactive_thread} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Reactive\-Thread} ()\label{class_reactive_thread_77381649429941c99a3e3d568113d6cf} + +\item +void {\bf sleep} ()\label{class_reactive_thread_8263c2a32d8c99a49a05f1a7717d4262} + +\item +void {\bf wake\-Up} ()\label{class_reactive_thread_a724a54575de10f09cc03ab7aa4e59ce} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +sem\_\-t {\bf sem}\label{class_reactive_thread_915e5a42dc8cb1bcf6738d5fe883a4e7} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 31 of file reac\_\-thread.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +reac\_\-thread.h\item +reac\_\-thread.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_ring_topology.eps b/trunk/paradiseo-peo/docs/latex/class_ring_topology.eps new file mode 100644 index 000000000..04c98c56e --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_ring_topology.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 412.371 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.2125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(RingTopology) cw +(Topology) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (RingTopology) 0 0 box + (Topology) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-peo/docs/latex/class_ring_topology.tex b/trunk/paradiseo-peo/docs/latex/class_ring_topology.tex new file mode 100644 index 000000000..0556e7cbb --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_ring_topology.tex @@ -0,0 +1,27 @@ +\section{Ring\-Topology Class Reference} +\label{class_ring_topology}\index{RingTopology@{RingTopology}} +Inheritance diagram for Ring\-Topology::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_ring_topology} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Neighbors} ({\bf Cooperative} $\ast$\_\-\_\-mig, std::vector$<$ {\bf Cooperative} $\ast$ $>$ \&\_\-\_\-from, std::vector$<$ {\bf Cooperative} $\ast$ $>$ \&\_\-\_\-to)\label{class_ring_topology_292a7746993788f96042f2f628cfcbc5} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 29 of file ring\_\-topo.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +ring\_\-topo.h\item +ring\_\-topo.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_runner.eps b/trunk/paradiseo-peo/docs/latex/class_runner.eps new file mode 100644 index 000000000..6e1d6846c --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_runner.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 280.374 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.78333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Runner) cw +(Communicable) cw +(Thread) cw +(peoEA< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Runner) 0.5 1 box + (Communicable) 0 2 box + (Thread) 1 2 box + (peoEA< EOT >) 0.5 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +1 0.5 0.25 out +solid +0 0.5 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/class_runner.tex b/trunk/paradiseo-peo/docs/latex/class_runner.tex new file mode 100644 index 000000000..e0e816d3a --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_runner.tex @@ -0,0 +1,61 @@ +\section{Runner Class Reference} +\label{class_runner}\index{Runner@{Runner}} +Inheritance diagram for Runner::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_runner} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Runner} ()\label{class_runner_7acb8258c21da9daa62f9a177a2e5acd} + +\item +void {\bf start} ()\label{class_runner_7dc4419051fcc5cc9dadd54ecc9cd47d} + +\item +void {\bf wait\-Starting} ()\label{class_runner_5bc239db2be753b77369fa9a038769fd} + +\item +bool {\bf is\-Local} ()\label{class_runner_40adbfb7d6944189b4fff60b02e669ca} + +\item +void {\bf terminate} ()\label{class_runner_0f133e75c28fb8264549814f80608e68} + +\item +virtual void {\bf run} ()=0\label{class_runner_2d306c1835d8710258d2b52b8cc8312c} + +\item +RUNNER\_\-ID {\bf get\-ID} ()\label{class_runner_5026c74eec184e3a15cb3c0ec4200a57} + +\item +void {\bf pack\-Termination} ()\label{class_runner_2ad6d199d684d6f34347fc202ffe2fa3} + +\item +void {\bf notify\-Sending\-Termination} ()\label{class_runner_3591be473e0fcee1105fb57319b529aa} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +sem\_\-t {\bf sem\_\-start}\label{class_runner_4b0827d5df2df632db4ab71dd55e81b2} + +\item +unsigned {\bf id}\label{class_runner_1989c1f8e0b0b54ad2e60a341007e59d} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 34 of file runner.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +runner.h\item +core/runner.cpp\item +rmc/mpi/runner.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_service.eps b/trunk/paradiseo-peo/docs/latex/class_service.eps new file mode 100644 index 000000000..77ffc2408 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_service.eps @@ -0,0 +1,237 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 100 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 4 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Service) cw +(Communicable) cw +(peoPopEval< EOT >) cw +(peoSyncMultiStart< EOT >) cw +(peoTransform< EOT >) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Service) 1.5 2 box + (Communicable) 1.5 3 box + (peoPopEval< EOT >) 0.5 1 box + (peoSyncMultiStart< EOT >) 1.5 1 box + (peoTransform< EOT >) 2.5 1 box + (peoParaPopEval< EOT >) 0 0 box + (peoSeqPopEval< EOT >) 1 0 box + (peoParaSGATransform< EOT >) 2 0 box + (peoSeqTransform< EOT >) 3 0 box + +% ----- relations ----- + +solid +0 1.5 2 out +solid +1 1.5 3 in +solid +1 1.5 1.25 out +solid +0.5 2.5 2 conn +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 1.5 1.75 in +solid +0 2.5 1.75 in +solid +1 2.5 0.25 out +solid +2 3 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in +solid +0 3 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/class_service.tex b/trunk/paradiseo-peo/docs/latex/class_service.tex new file mode 100644 index 000000000..e797ccbfa --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_service.tex @@ -0,0 +1,70 @@ +\section{Service Class Reference} +\label{class_service}\index{Service@{Service}} +Inheritance diagram for Service::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.8cm]{class_service} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf set\-Owner} ({\bf Thread} \&\_\-\_\-owner)\label{class_service_33b149b98498c0e7e401b0f0839d7f0d} + +\item +{\bf Thread} $\ast$ {\bf get\-Owner} ()\label{class_service_0dae00309c51a7b7069788142aed799f} + +\item +void {\bf request\-Resource\-Request} (unsigned \_\-\_\-how\_\-many=1)\label{class_service_7e2ae35a9070a05dcd46488df649896d} + +\item +void {\bf pack\-Resource\-Request} ()\label{class_service_c4289f98d1cd9ed53e850efbb6a947bd} + +\item +virtual void {\bf pack\-Data} ()\label{class_service_aea4b8f7f8fb88e83862ee4bfd9ab207} + +\item +virtual void {\bf unpack\-Data} ()\label{class_service_3bd87b444710813d30fd754d4d0b4df3} + +\item +virtual void {\bf execute} ()\label{class_service_e4f2894e6121e60f38d41cfbd7447ae4} + +\item +virtual void {\bf pack\-Result} ()\label{class_service_e5e4f90b2315e15c2a2913bd370f4cf5} + +\item +virtual void {\bf unpack\-Result} ()\label{class_service_45c06344edbfa482b91f68e2035a6099} + +\item +virtual void {\bf notify\-Sending\-Data} ()\label{class_service_81ad4d6ebb50045b8977e2ab74826f30} + +\item +virtual void {\bf notify\-Sending\-Resource\-Request} ()\label{class_service_94e2012e76aaae3aa8199250f558d503} + +\item +virtual void {\bf notify\-Sending\-All\-Resource\-Requests} ()\label{class_service_f94cc8a5c2665d4574041737e61e9ffc} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Thread} $\ast$ {\bf owner}\label{class_service_8b615c65c876f342fe8209eb7e36d7b2} + +\item +unsigned {\bf num\_\-sent\_\-rr}\label{class_service_a5b2ad9520bb3710b54348b99acebd58} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 32 of file service.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +service.h\item +core/service.cpp\item +rmc/mpi/service.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_thread.eps b/trunk/paradiseo-peo/docs/latex/class_thread.eps new file mode 100644 index 000000000..e02a5f5fe --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_thread.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 183.486 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.725 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 3 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Thread) cw +(ReactiveThread) cw +(Runner) cw +(Communicator) cw +(Worker) cw +(peoEA< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Thread) 1.25 2 box + (ReactiveThread) 0.5 1 box + (Runner) 2 1 box + (Communicator) 0 0 box + (Worker) 1 0 box + (peoEA< EOT >) 2 0 box + +% ----- relations ----- + +solid +1 1.25 1.25 out +solid +0.5 2 2 conn +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 2 1.75 in +solid +1 2 0.25 out +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/class_thread.tex b/trunk/paradiseo-peo/docs/latex/class_thread.tex new file mode 100644 index 000000000..e645aaf5c --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_thread.tex @@ -0,0 +1,45 @@ +\section{Thread Class Reference} +\label{class_thread}\index{Thread@{Thread}} +Inheritance diagram for Thread::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_thread} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Thread} ()\label{class_thread_95c703fb8f2f27cb64f475a8c940864a} + +\item +virtual {\bf $\sim$Thread} ()\label{class_thread_37d9edd3a1a776cbc27dedff949c9726} + +\item +virtual void {\bf start} ()=0\label{class_thread_c667c1d8fd7243d669043e3dd762b567} + +\item +void {\bf set\-Active} ()\label{class_thread_e197c46f8f62ecce6d2a7fe95bdc5b38} + +\item +void {\bf set\-Passive} ()\label{class_thread_20632ffe9ddfa2a478afb0c84dc1096b} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +bool {\bf act}\label{class_thread_1b155d63bca3096ac4a1d039aea83c7c} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 31 of file thread.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +thread.h\item +thread.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_topology.eps b/trunk/paradiseo-peo/docs/latex/class_topology.eps new file mode 100644 index 000000000..45dacefa6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_topology.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 412.371 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.2125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Topology) cw +(RingTopology) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Topology) 0 1 box + (RingTopology) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/class_topology.tex b/trunk/paradiseo-peo/docs/latex/class_topology.tex new file mode 100644 index 000000000..53b22dac5 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_topology.tex @@ -0,0 +1,39 @@ +\section{Topology Class Reference} +\label{class_topology}\index{Topology@{Topology}} +Inheritance diagram for Topology::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{class_topology} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual {\bf $\sim$Topology} ()\label{class_topology_3e447669757c8311c7f6f8edc705abf2} + +\item +void {\bf add} ({\bf Cooperative} \&\_\-\_\-mig)\label{class_topology_62bc46d8c20fdc71dad9e7c7a0d7aded} + +\item +virtual void {\bf set\-Neighbors} ({\bf Cooperative} $\ast$\_\-\_\-mig, std::vector$<$ {\bf Cooperative} $\ast$ $>$ \&\_\-\_\-from, std::vector$<$ {\bf Cooperative} $\ast$ $>$ \&\_\-\_\-to)=0\label{class_topology_86c006ad698649b2ba5016a5ddd619ce} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +std::vector$<$ {\bf Cooperative} $\ast$ $>$ {\bf mig}\label{class_topology_247a2faa8568b678f0b7b11e62c7812c} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 31 of file topology.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +topology.h\item +topology.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/class_worker.eps b/trunk/paradiseo-peo/docs/latex/class_worker.eps new file mode 100644 index 000000000..5972d40a6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_worker.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 275.229 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.81667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(Worker) cw +(Communicable) cw +(ReactiveThread) cw +(Thread) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (Worker) 0.5 0 box + (Communicable) 0 1 box + (ReactiveThread) 1 1 box + (Thread) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +0 1 1 conn +solid +1 0 1 in +solid +1 1 1 in +solid +0 1 1 out +solid +1 1 2 in diff --git a/trunk/paradiseo-peo/docs/latex/class_worker.tex b/trunk/paradiseo-peo/docs/latex/class_worker.tex new file mode 100644 index 000000000..78f8620fc --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/class_worker.tex @@ -0,0 +1,66 @@ +\section{Worker Class Reference} +\label{class_worker}\index{Worker@{Worker}} +Inheritance diagram for Worker::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{class_worker} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf Worker} ()\label{class_worker_3754817df06ffe220f7f0d903c78ccac} + +\item +void {\bf start} ()\label{class_worker_abcbbace05c6113f1959c494b3577291} + +\item +void {\bf pack\-Result} ()\label{class_worker_83780920118e6c2b67d9477bdf8be248} + +\item +void {\bf unpack\-Data} ()\label{class_worker_bff2bdcd64fe5400156cc78704c64953} + +\item +void {\bf pack\-Task\-Done} ()\label{class_worker_60d2e8eba85b9ef403d94be54c391640} + +\item +void {\bf notify\-Sending\-Result} ()\label{class_worker_e2f487014766a73c5788bdcfd58ad863} + +\item +void {\bf notify\-Sending\-Task\-Done} ()\label{class_worker_13efd6a8e275745329a4a8e23a0eb0bb} + +\item +void {\bf set\-Source} (int \_\-\_\-rank)\label{class_worker_5dab4ea663546b5a49d9398d7a624d27} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +WORKER\_\-ID {\bf id}\label{class_worker_b5ffcb995e12fa71b9551e91729d6972} + +\item +SERVICE\_\-ID {\bf serv\_\-id}\label{class_worker_d7dc76e301fd2bcf5d3a2088a59f1378} + +\item +{\bf Service} $\ast$ {\bf serv}\label{class_worker_454e1764ed165af733cc44a73e395692} + +\item +int {\bf src}\label{class_worker_895c3ebc198018ea3391c09bc802d2f6} + +\item +bool {\bf toto}\label{class_worker_7ba5a18b2918cf9e704536b763be37f7} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 33 of file worker.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +worker.h\item +worker.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.eps b/trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.eps new file mode 100644 index 000000000..0caadfe0f --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoAggEvalFunc< EOT >) cw +(peoNoAggEvalFunc< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoAggEvalFunc< EOT >) 0 1 box + (peoNoAggEvalFunc< EOT >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.tex b/trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.tex new file mode 100644 index 000000000..b1a87abbd --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_agg_eval_func.tex @@ -0,0 +1,37 @@ +\section{peo\-Agg\-Eval\-Func$<$ EOT $>$ Class Template Reference} +\label{classpeo_agg_eval_func}\index{peoAggEvalFunc@{peoAggEvalFunc}} +The {\bf peo\-Agg\-Eval\-Func}{\rm (p.\,\pageref{classpeo_agg_eval_func})} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + + +{\tt \#include $<$peo\-Agg\-Eval\-Func.h$>$} + +Inheritance diagram for peo\-Agg\-Eval\-Func$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classpeo_agg_eval_func} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Agg\-Eval\-Func$<$ EOT $>$} + +The {\bf peo\-Agg\-Eval\-Func}{\rm (p.\,\pageref{classpeo_agg_eval_func})} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +The class inherits {\bf public eo\-BF$<$ EOT\&, const typename EOT :: Fitness\&, void $>$} thus requiring, for the derived classes, the creation of a function having the following signature: + +\begin{TabularC}{2} +\hline +void operator()( EOT\& \_\-\_\-eot, const typename EOT :: Fitness\& \_\-\_\-partial\_\-fittness ); ~ &~ \\\hline +\end{TabularC} + + +The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. + + + +Definition at line 40 of file peo\-Agg\-Eval\-Func.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Agg\-Eval\-Func.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.eps b/trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.eps new file mode 100644 index 000000000..1d54a93f4 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 333.333 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.5 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoAsyncIslandMig< EOT >) cw +(Cooperative) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoAsyncIslandMig< EOT >) 0 0 box + (Cooperative) 0 1 box + (Communicable) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.tex b/trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.tex new file mode 100644 index 000000000..6fa9abb79 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_async_island_mig.tex @@ -0,0 +1,184 @@ +\section{peo\-Async\-Island\-Mig$<$ EOT $>$ Class Template Reference} +\label{classpeo_async_island_mig}\index{peoAsyncIslandMig@{peoAsyncIslandMig}} +The {\bf peo\-Async\-Island\-Mig}{\rm (p.\,\pageref{classpeo_async_island_mig})} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + + +{\tt \#include $<$peo\-Async\-Island\-Mig.h$>$} + +Inheritance diagram for peo\-Async\-Island\-Mig$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeo_async_island_mig} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-Async\-Island\-Mig} (eo\-Continue$<$ EOT $>$ \&\_\-\_\-cont, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace, {\bf Topology} \&\_\-\_\-topology, eo\-Pop$<$ EOT $>$ \&\_\-\_\-source, eo\-Pop$<$ EOT $>$ \&\_\-\_\-destination) +\begin{CompactList}\small\item\em Constructor for the {\bf peo\-Async\-Island\-Mig}{\rm (p.\,\pageref{classpeo_async_island_mig})} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \item\end{CompactList}\item +void {\bf operator()} () +\begin{CompactList}\small\item\em Function operator to be called as checkpoint for performing the migration step. \item\end{CompactList}\item +void {\bf pack} ()\label{classpeo_async_island_mig_6d790a5d0b6ac510cac4f61a1c0d8f16} + +\begin{CompactList}\small\item\em Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +void {\bf unpack} ()\label{classpeo_async_island_mig_455501aee5db2bbfbae15779c8429369} + +\begin{CompactList}\small\item\em Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf emigrate} ()\label{classpeo_async_island_mig_87a4ef7d4bd30d349a801bf0f9e87c82} + +\item +void {\bf immigrate} ()\label{classpeo_async_island_mig_5a9a64ba51a696e45f91b362c39c9a64} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +eo\-Continue$<$ EOT $>$ \& {\bf cont}\label{classpeo_async_island_mig_2fc077d02ef9ea4595cfe883af0d4f83} + +\item +eo\-Select$<$ EOT $>$ \& {\bf select}\label{classpeo_async_island_mig_b1fa045094c8a411323e75b5820c80c2} + +\item +eo\-Replacement$<$ EOT $>$ \& {\bf replace}\label{classpeo_async_island_mig_b761dbd880ee32e170741ecd78da6f48} + +\item +{\bf Topology} \& {\bf topology}\label{classpeo_async_island_mig_e45e5a808a96f0853ab6ba42339fe679} + +\item +eo\-Pop$<$ EOT $>$ \& {\bf source}\label{classpeo_async_island_mig_8a502d82c773033e274dca932fc2d4ee} + +\item +eo\-Pop$<$ EOT $>$ \& {\bf destination}\label{classpeo_async_island_mig_e407f411d08ae7d96992603c145a7e43} + +\item +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ {\bf imm}\label{classpeo_async_island_mig_b8c76d98d9ae99dd930a77c12860519a} + +\item +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ {\bf em}\label{classpeo_async_island_mig_a9cc0e2d61cac6e11647b141962adc89} + +\item +std::queue$<$ {\bf Cooperative} $\ast$ $>$ {\bf coop\_\-em}\label{classpeo_async_island_mig_1a2c0004d23bc303420af137a8c8bd27} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Async\-Island\-Mig$<$ EOT $>$} + +The {\bf peo\-Async\-Island\-Mig}{\rm (p.\,\pageref{classpeo_async_island_mig})} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase. + +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: + +\begin{TabularC}{2} +\hline +{\bf do} \{ ~ &~ \\\hline +~~~~~~~~ select( population, offsprings ); ~ &// select the offsprings from the current population \\\hline +~~~~~~~~ transform( offsprings ); ~ &// crossover and mutation operators are applied on the selected offsprings \\\hline +~~~~~~~~ evaluate( offsprings ); ~ &// evaluation step of the resulting offspring \\\hline +~~~~~~~~ replace( population, offsprings ); ~ &// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy \\\hline +\} {\bf while} ( ea\-Checkpoint\-Continue( population ) ); ~ &// checkpoint operators are applied on the current population, including the migration operator, if any specified \\\hline +\end{TabularC} + + +Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the {\bf {\bf Runner}{\rm (p.\,\pageref{class_runner})}} class (for example a {\bf peo\-EA}{\rm (p.\,\pageref{classpeo_e_a})} object represents a possible owner). A simple example is offered bellow: + +\begin{enumerate} +\item topological model to be followed when performing migrations: \par + \par + \begin{TabularC}{2} +\hline +{\bf Ring\-Topology}{\rm (p.\,\pageref{class_ring_topology})} mig\-Topology; ~ &// a simple ring topological model - each island communicates with two other islands \\\hline +\end{TabularC} + + +\item the continuation criterion, selection and replacement strategy etc. are defined: \par + \par + \begin{TabularC}{2} +\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// population of individuals to be used for the evolutionary algorithm \\\hline +~ &~ \\\hline +eo\-Periodic\-Continue$<$ EOT $>$ mig\-Cont( MIG\_\-FREQ ); ~ &// migrations occur periodically at MIG\_\-FREQ iterations \\\hline +eo\-Random\-Select$<$ EOT $>$ mig\-Select\-Strategy; ~ &// selection strategy - in this case a random selection is applied \\\hline +eo\-Select\-Number$<$ EOT $>$ mig\-Select( mig\-Select\-Strategy, MIG\_\-SIZE ); ~ &// number of individuals to be selected using the specified strategy \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ mig\-Replace; ~ &// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals \\\hline +~ &~ \\\hline +peo\-Async\-Island\-Mig$<$ EOT $>$ async\-Migration( \par + ~~~~~~~~ mig\-Cont, mig\-Select, mig\-Replace, mig\-Topology, \par + ~~~~~~~~ population, population \par + ); ~ &// asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated \\\hline +\end{TabularC} + + +\item creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): \par + \par + \begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// the evolutionary algorithm will stop after NUM\_\-GEN generations \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// number of individuals to be selected using the specified strategy \\\hline +... ~ &~ \\\hline +ea\-Checkpoint\-Continue.add( async\-Migration ); ~ &// adding the migration operator as checkpoint element \\\hline +... ~ &~ \\\hline +\end{TabularC} + + +\item definition of an owner evolutionary algorithm (an object inheriting the {\bf {\bf Runner}{\rm (p.\,\pageref{class_runner})}} class): \par + \par + \begin{TabularC}{2} +\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace); ~ &// evolutionary algorithm having as checkpoint the ea\-Checkpoint\-Continue object defined above \\\hline +async\-Migration.set\-Owner( ea\-Alg ); ~ &// setting the evolutionary algorithm as owner of the migration object \\\hline +ea\-Alg( population ); ~ &// applying the evolutionary algorithm on a given population \\\hline +\end{TabularC} +\end{enumerate} + + +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. + +The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ mig\-Topology object has to be passed as parameter for all the migration objects, in order to interconnect them). + + + +Definition at line 127 of file peo\-Async\-Island\-Mig.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoAsyncIslandMig@{peo\-Async\-Island\-Mig}!peoAsyncIslandMig@{peoAsyncIslandMig}} +\index{peoAsyncIslandMig@{peoAsyncIslandMig}!peoAsyncIslandMig@{peo\-Async\-Island\-Mig}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-Async\-Island\-Mig}$<$ EOT $>$::{\bf peo\-Async\-Island\-Mig} (eo\-Continue$<$ EOT $>$ \& {\em \_\-\_\-cont}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace}, {\bf Topology} \& {\em \_\-\_\-topology}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-source}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-destination})}\label{classpeo_async_island_mig_e0f706cbf4148d3ca327227a5c7a9fdf} + + +Constructor for the {\bf peo\-Async\-Island\-Mig}{\rm (p.\,\pageref{classpeo_async_island_mig})} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the migration is performed or not; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy used for integrating the immigrant individuals in the destination population; \item[{\em Topology\&}]\_\-\_\-topology - topological model to be followed when performing migrations; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-source - source population from which the emigrant individuals are selected; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-destination - destination population in which the immigrant population are integrated. \end{description} +\end{Desc} + + +Definition at line 186 of file peo\-Async\-Island\-Mig.h. + +References Topology::add(). + +\subsection{Member Function Documentation} +\index{peoAsyncIslandMig@{peo\-Async\-Island\-Mig}!operator()@{operator()}} +\index{operator()@{operator()}!peoAsyncIslandMig@{peo\-Async\-Island\-Mig}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Async\-Island\-Mig}$<$ EOT $>$::operator() ()}\label{classpeo_async_island_mig_13581e54425727a7f785ca8a6df527b5} + + +Function operator to be called as checkpoint for performing the migration step. + +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. + +Definition at line 263 of file peo\-Async\-Island\-Mig.h. + +References peo\-Async\-Island\-Mig$<$ EOT $>$::cont, peo\-Async\-Island\-Mig$<$ EOT $>$::emigrate(), peo\-Async\-Island\-Mig$<$ EOT $>$::immigrate(), and peo\-Async\-Island\-Mig$<$ EOT $>$::source. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Async\-Island\-Mig.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_e_a.eps b/trunk/paradiseo-peo/docs/latex/classpeo_e_a.eps new file mode 100644 index 000000000..e4aabc826 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_e_a.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 280.374 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.78333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoEA< EOT >) cw +(Runner) cw +(Communicable) cw +(Thread) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoEA< EOT >) 0.5 0 box + (Runner) 0.5 1 box + (Communicable) 0 2 box + (Thread) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_e_a.tex b/trunk/paradiseo-peo/docs/latex/classpeo_e_a.tex new file mode 100644 index 000000000..6df72495a --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_e_a.tex @@ -0,0 +1,125 @@ +\section{peo\-EA$<$ EOT $>$ Class Template Reference} +\label{classpeo_e_a}\index{peoEA@{peoEA}} +The {\bf peo\-EA}{\rm (p.\,\pageref{classpeo_e_a})} class offers an elementary evolutionary algorithm implementation. + + +{\tt \#include $<$peo\-EA.h$>$} + +Inheritance diagram for peo\-EA$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeo_e_a} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-EA} (eo\-Continue$<$ EOT $>$ \&\_\-\_\-cont, {\bf peo\-Pop\-Eval}$<$ EOT $>$ \&\_\-\_\-pop\_\-eval, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, {\bf peo\-Transform}$<$ EOT $>$ \&\_\-\_\-trans, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace) +\begin{CompactList}\small\item\em Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \item\end{CompactList}\item +void {\bf run} ()\label{classpeo_e_a_6ab8c321d29350634143a2a01cf2ad24} + +\begin{CompactList}\small\item\em Evolutionary algorithm function - a side effect of the fact that the class is derived from the {\bf {\bf Runner}{\rm (p.\,\pageref{class_runner})}} class, thus requiring the existence of a {\em run\/} function, the algorithm being executed on a distinct thread. \item\end{CompactList}\item +void {\bf operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Function operator for specifying the population to be associated with the algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +eo\-Continue$<$ EOT $>$ \& {\bf cont}\label{classpeo_e_a_5f015eebf42f176b9fe322488c446c2a} + +\item +{\bf peo\-Pop\-Eval}$<$ EOT $>$ \& {\bf pop\_\-eval}\label{classpeo_e_a_9140259f50c9186edcb062b023624c96} + +\item +eo\-Select$<$ EOT $>$ \& {\bf select}\label{classpeo_e_a_2d8428d69fdd6aefefbaf543fdd46d19} + +\item +{\bf peo\-Transform}$<$ EOT $>$ \& {\bf trans}\label{classpeo_e_a_713c77935eb8aafebfb9488cfaa4a363} + +\item +eo\-Replacement$<$ EOT $>$ \& {\bf replace}\label{classpeo_e_a_9bd2d4356cf7e69e3141dc269213aa8a} + +\item +eo\-Pop$<$ EOT $>$ $\ast$ {\bf pop}\label{classpeo_e_a_c0b110e410bc16283e8339f24b733772} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-EA$<$ EOT $>$} + +The {\bf peo\-EA}{\rm (p.\,\pageref{classpeo_e_a})} class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the EO framework, the {\bf peo\-EA}{\rm (p.\,\pageref{classpeo_e_a})} class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a {\bf peo\-EA}{\rm (p.\,\pageref{classpeo_e_a})} object: + +\begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// creation of a population with POP\_\-SIZE individuals - the pop\-Initializer is a functor to be called for each individual \\\hline +~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// number of generations for the evolutionary algorithm \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects \\\hline +~ &~ \\\hline +peo\-Seq\-Pop\-Eval$<$ EOT $>$ ea\-Pop\-Eval( eval\-Function ); ~ &// sequential evaluation functor wrapper - eval\-Function represents the actual evaluation functor \\\hline +~ &~ \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +eo\-Select\-Number$<$ EOT $>$ ea\-Select( selection\-Strategy, POP\_\-SIZE ); ~ &// the number of individuals to be selected for creating the offspring population \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +~ &~ \\\hline +eo\-SGATransform$<$ EOT $>$ transform( crossover, CROSS\_\-RATE, mutation, MUT\_\-RATE ); ~ &// transformation operator - crossover and mutation operators with their associated probabilities \\\hline +peo\-Seq\-Transform$<$ EOT $>$ ea\-Transform( transform ); ~ &// Paradis\-EO specific sequential operator - a parallel version may be specified in the same manner \\\hline +~ &~ \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ ea\-Replace; ~ &// replacement strategy - for integrating the offspring resulting individuals in the initial population \\\hline +~ &~ \\\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace ); ~ &// Paradis\-EO evolutionary algorithm integrating the above defined objects \\\hline +ea\-Alg( population ); ~ &// specifying the initial population for the algorithm \\\hline +... ~ &~ \\\hline +\end{TabularC} + + + + +Definition at line 69 of file peo\-EA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoEA@{peo\-EA}!peoEA@{peoEA}} +\index{peoEA@{peoEA}!peoEA@{peo\-EA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-EA}$<$ EOT $>$::{\bf peo\-EA} (eo\-Continue$<$ EOT $>$ \& {\em \_\-\_\-cont}, {\bf peo\-Pop\-Eval}$<$ EOT $>$ \& {\em \_\-\_\-pop\_\-eval}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, {\bf peo\-Transform}$<$ EOT $>$ \& {\em \_\-\_\-trans}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace})}\label{classpeo_e_a_dbfc4f8907bef234602149229f132371} + + +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. + +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the algorithm should continue or not; \item[{\em peo\-Pop\-Eval$<$}]EOT $>$\& \_\-\_\-pop\_\-eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of offspring individuals; \item[{\em peo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the offspring individuals in the initial population; \end{description} +\end{Desc} + + +Definition at line 113 of file peo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop\_\-eval, and peo\-EA$<$ EOT $>$::trans. + +\subsection{Member Function Documentation} +\index{peoEA@{peo\-EA}!operator()@{operator()}} +\index{operator()@{operator()}!peoEA@{peo\-EA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-EA}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})}\label{classpeo_e_a_3c709e3b2491147d26fee36138644613} + + +Function operator for specifying the population to be associated with the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - initial population of the algorithm, to be iteratively evolved; \end{description} +\end{Desc} + + +Definition at line 129 of file peo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-EA.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.eps b/trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.eps new file mode 100644 index 000000000..ead08b31e --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoNoAggEvalFunc< EOT >) cw +(peoAggEvalFunc< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoNoAggEvalFunc< EOT >) 0 0 box + (peoAggEvalFunc< EOT >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.tex b/trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.tex new file mode 100644 index 000000000..2bf20570f --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_no_agg_eval_func.tex @@ -0,0 +1,35 @@ +\section{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$ Class Template Reference} +\label{classpeo_no_agg_eval_func}\index{peoNoAggEvalFunc@{peoNoAggEvalFunc}} +The {\bf peo\-No\-Agg\-Eval\-Func}{\rm (p.\,\pageref{classpeo_no_agg_eval_func})} class does nothing more than an association between a fitness value and a specified individual. + + +{\tt \#include $<$peo\-No\-Agg\-Eval\-Func.h$>$} + +Inheritance diagram for peo\-No\-Agg\-Eval\-Func$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classpeo_no_agg_eval_func} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf operator()} (EOT \&\_\-\_\-sol, const typename EOT::Fitness \&\_\-\_\-fit)\label{classpeo_no_agg_eval_func_1a69ee1af8745ac75c864bf884436de5} + +\begin{CompactList}\small\item\em Operator which sets as fitness the {\bf \_\-\_\-fit} value for the {\bf \_\-\_\-sol} individual. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-No\-Agg\-Eval\-Func$<$ EOT $>$} + +The {\bf peo\-No\-Agg\-Eval\-Func}{\rm (p.\,\pageref{classpeo_no_agg_eval_func})} class does nothing more than an association between a fitness value and a specified individual. + +The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. + + + +Definition at line 34 of file peo\-No\-Agg\-Eval\-Func.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-No\-Agg\-Eval\-Func.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.eps b/trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.eps new file mode 100644 index 000000000..25c8b8af1 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 487.805 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.025 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoParaPopEval< EOT >) cw +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoParaPopEval< EOT >) 0 0 box + (peoPopEval< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.tex b/trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.tex new file mode 100644 index 000000000..6a53a0633 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_para_pop_eval.tex @@ -0,0 +1,216 @@ +\section{peo\-Para\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeo_para_pop_eval}\index{peoParaPopEval@{peoParaPopEval}} +The {\bf peo\-Para\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_para_pop_eval})} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + + +{\tt \#include $<$peo\-Para\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Para\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeo_para_pop_eval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-Para\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \&\_\-\_\-eval\_\-func) +\begin{CompactList}\small\item\em Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. \item\end{CompactList}\item +{\bf peo\-Para\-Pop\-Eval} (const std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ \&\_\-\_\-funcs, {\bf peo\-Agg\-Eval\-Func}$<$ EOT $>$ \&\_\-\_\-merge\_\-eval) +\begin{CompactList}\small\item\em Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. \item\end{CompactList}\item +void {\bf operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. \item\end{CompactList}\item +void {\bf pack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void {\bf unpack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void {\bf execute} ()\label{classpeo_para_pop_eval_3af76378611eac5a36da9a0a00aeeb6c} + +\begin{CompactList}\small\item\em Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. \item\end{CompactList}\item +void {\bf pack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void {\bf unpack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void {\bf notify\-Sending\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \item\end{CompactList}\item +void {\bf notify\-Sending\-All\-Resource\-Requests} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +const std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ \& {\bf funcs}\label{classpeo_para_pop_eval_6d69b8f73c0b5d72baf75d6e53f025b7} + +\item +std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ {\bf one\_\-func}\label{classpeo_para_pop_eval_f0e8af3ee442d2b6baf0bd122226be3c} + +\item +{\bf peo\-Agg\-Eval\-Func}$<$ EOT $>$ \& {\bf merge\_\-eval}\label{classpeo_para_pop_eval_b48bcd4e9f92f364118304535c089456} + +\item +{\bf peo\-No\-Agg\-Eval\-Func}$<$ EOT $>$ {\bf no\_\-merge\_\-eval}\label{classpeo_para_pop_eval_bf255dd5861e27108c2abae7309d7690} + +\item +std::queue$<$ EOT $\ast$ $>$ {\bf tasks}\label{classpeo_para_pop_eval_af76cd18368a0f6185878f37f0b5f272} + +\item +std::map$<$ EOT $\ast$, std::pair$<$ unsigned, unsigned $>$ $>$ {\bf progression}\label{classpeo_para_pop_eval_80e7e34bb1bb2d12f1f2eed3feac6ecf} + +\item +unsigned {\bf num\_\-func}\label{classpeo_para_pop_eval_87abb090c0de39f0ccc36af1f07cca0c} + +\item +EOT {\bf sol}\label{classpeo_para_pop_eval_fb6941e0455515a908eb82342b995163} + +\item +EOT $\ast$ {\bf ad\_\-sol}\label{classpeo_para_pop_eval_60cafeab376262af675fdff43434c8d8} + +\item +unsigned {\bf total}\label{classpeo_para_pop_eval_b528ad9dd9006c3dd57f149a3843e57d} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Para\-Pop\-Eval$<$ EOT $>$} + +The {\bf peo\-Para\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_para_pop_eval})} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. + + + +Definition at line 41 of file peo\-Para\-Pop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!peoParaPopEval@{peoParaPopEval}} +\index{peoParaPopEval@{peoParaPopEval}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::{\bf peo\-Para\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \& {\em \_\-\_\-eval\_\-func})}\label{classpeo_para_pop_eval_bcb540510a7038520bec41a7af332daf} + + +Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-eval\_\-func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population \end{description} +\end{Desc} + + +Definition at line 117 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::one\_\-func.\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!peoParaPopEval@{peoParaPopEval}} +\index{peoParaPopEval@{peoParaPopEval}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::{\bf peo\-Para\-Pop\-Eval} (const std::vector$<$ eo\-Eval\-Func$<$ EOT $>$ $\ast$ $>$ \& {\em \_\-\_\-funcs}, {\bf peo\-Agg\-Eval\-Func}$<$ EOT $>$ \& {\em \_\-\_\-merge\_\-eval})}\label{classpeo_para_pop_eval_1cc13a1ec366f95d219d682eccb455bc} + + +Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]std :: vector$<$ eo\-Eval\-Func $<$ EOT $>$$\ast$ $>$\& \_\-\_\-funcs - vector of EO-derived partial evaluation functors; \item[{\em peo\-Agg\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-merge\_\-eval - aggregation functor for creating a fitness value out of the partial fitness values. \end{description} +\end{Desc} + + +Definition at line 126 of file peo\-Para\-Pop\-Eval.h. + +\subsection{Member Function Documentation} +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_para_pop_eval_aeaa4fca4f8650e453e308838b4a2cb5} + + +Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be evaluated by applying the evaluation functor specified in the constructor. \end{description} +\end{Desc} + + +Implements {\bf peo\-Pop\-Eval$<$ EOT $>$} {\rm (p.\,\pageref{classpeo_pop_eval_2f208067a5e39c3b26c1234050a41e8f})}. + +Definition at line 137 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::funcs, peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, and peo\-Para\-Pop\-Eval$<$ EOT $>$::tasks.\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!packData@{packData}} +\index{packData@{packData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::pack\-Data ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_para_pop_eval_fea632bd645ab11182782fd3c038d6d8} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_aea4b8f7f8fb88e83862ee4bfd9ab207})}. + +Definition at line 158 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, and peo\-Para\-Pop\-Eval$<$ EOT $>$::tasks.\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!unpackData@{unpackData}} +\index{unpackData@{unpackData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::unpack\-Data ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_para_pop_eval_410bf4c173e2f36df82251cb16ce1b05} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_3bd87b444710813d30fd754d4d0b4df3})}. + +Definition at line 172 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, peo\-Para\-Pop\-Eval$<$ EOT $>$::num\_\-func, and peo\-Para\-Pop\-Eval$<$ EOT $>$::sol.\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!packResult@{packResult}} +\index{packResult@{packResult}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::pack\-Result ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_para_pop_eval_24bb4ae84b0b9f64e7170e3d2b0e1223} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_e5e4f90b2315e15c2a2913bd370f4cf5})}. + +Definition at line 189 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, and peo\-Para\-Pop\-Eval$<$ EOT $>$::sol.\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!unpackResult@{unpackResult}} +\index{unpackResult@{unpackResult}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::unpack\-Result ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_para_pop_eval_fd7f0afe9cba30be39269d16097e190e} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_45c06344edbfa482b91f68e2035a6099})}. + +Definition at line 198 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, Service::get\-Owner(), peo\-Para\-Pop\-Eval$<$ EOT $>$::merge\_\-eval, peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, Communicable::resume(), Thread::set\-Active(), and peo\-Para\-Pop\-Eval$<$ EOT $>$::total.\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!notifySendingData@{notifySendingData}} +\index{notifySendingData@{notifySendingData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::notify\-Sending\-Data ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_para_pop_eval_1f78c3cec2940af08a059cc1aa96a9c8} + + +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_81ad4d6ebb50045b8977e2ab74826f30})}. + +Definition at line 229 of file peo\-Para\-Pop\-Eval.h.\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!notifySendingAllResourceRequests@{notifySendingAllResourceRequests}} +\index{notifySendingAllResourceRequests@{notifySendingAllResourceRequests}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Para\-Pop\-Eval}$<$ EOT $>$::notify\-Sending\-All\-Resource\-Requests ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_para_pop_eval_b77031fc4807921ffaf7cf6b669a7665} + + +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_f94cc8a5c2665d4574041737e61e9ffc})}. + +Definition at line 234 of file peo\-Para\-Pop\-Eval.h. + +References Service::get\-Owner(), and Thread::set\-Passive(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Para\-Pop\-Eval.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.eps b/trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.eps new file mode 100644 index 000000000..eee7ca312 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 400 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.25 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoParaSGATransform< EOT >) cw +(peoTransform< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoParaSGATransform< EOT >) 0 0 box + (peoTransform< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.tex b/trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.tex new file mode 100644 index 000000000..9e819d6b0 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_para_s_g_a_transform.tex @@ -0,0 +1,82 @@ +\section{peo\-Para\-SGATransform$<$ EOT $>$ Class Template Reference} +\label{classpeo_para_s_g_a_transform}\index{peoParaSGATransform@{peoParaSGATransform}} +Inheritance diagram for peo\-Para\-SGATransform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeo_para_s_g_a_transform} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-Para\-SGATransform} (eo\-Quad\-Op$<$ EOT $>$ \&\_\-\_\-cross, double \_\-\_\-cross\_\-rate, eo\-Mon\-Op$<$ EOT $>$ \&\_\-\_\-mut, double \_\-\_\-mut\_\-rate)\label{classpeo_para_s_g_a_transform_2052bca82fbbfe5455bf6f69246d4dbf} + +\item +void {\bf operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop)\label{classpeo_para_s_g_a_transform_669de7f7c6316fa745a15b909efb6527} + +\item +void {\bf pack\-Data} ()\label{classpeo_para_s_g_a_transform_fd278bcde58d29c9a343d5cbead81a1e} + +\item +void {\bf unpack\-Data} ()\label{classpeo_para_s_g_a_transform_a43a487a6e81791c8bbf6ce30f4336ab} + +\item +void {\bf execute} ()\label{classpeo_para_s_g_a_transform_c9de2100fb897177a401c634002f6dd9} + +\item +void {\bf pack\-Result} ()\label{classpeo_para_s_g_a_transform_ba08e224ceaa4149e8e1a88694a2ccf2} + +\item +void {\bf unpack\-Result} ()\label{classpeo_para_s_g_a_transform_257663dcdc6cc95b6183d472ffba1b2f} + +\item +void {\bf notify\-Sending\-Data} ()\label{classpeo_para_s_g_a_transform_4e19dfc22b6f69fa8b93537226551866} + +\item +void {\bf notify\-Sending\-All\-Resource\-Requests} ()\label{classpeo_para_s_g_a_transform_8a0316e33897c395a81787f59ea7a1c8} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +eo\-Quad\-Op$<$ EOT $>$ \& {\bf cross}\label{classpeo_para_s_g_a_transform_c6f97deabe7502c84f5b6c479013f6dc} + +\item +double {\bf cross\_\-rate}\label{classpeo_para_s_g_a_transform_dfcf216e2df05016db4d57a5ffb0b0e2} + +\item +eo\-Mon\-Op$<$ EOT $>$ \& {\bf mut}\label{classpeo_para_s_g_a_transform_34ff5f9d285ca4879cf8865fb425a311} + +\item +double {\bf mut\_\-rate}\label{classpeo_para_s_g_a_transform_b9d3a2094737d0bbd034aac942cc53e3} + +\item +unsigned {\bf idx}\label{classpeo_para_s_g_a_transform_03972feadc86626e58fe60bd4061b57e} + +\item +eo\-Pop$<$ EOT $>$ $\ast$ {\bf pop}\label{classpeo_para_s_g_a_transform_94e10a1285e128aba6e71517c941f961} + +\item +EOT {\bf father}\label{classpeo_para_s_g_a_transform_9ef60190e2e3bd5961a93d1b52cb275d} + +\item +EOT {\bf mother}\label{classpeo_para_s_g_a_transform_e991ad2af6d116afd855de2db46e1d27} + +\item +unsigned {\bf num\_\-term}\label{classpeo_para_s_g_a_transform_589ea7cd72d522ae51a07de4d8ffbf11} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Para\-SGATransform$<$ EOT $>$} + + + + + +Definition at line 36 of file peo\-Para\-SGATransform.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Para\-SGATransform.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.eps b/trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.eps new file mode 100644 index 000000000..b486aceee --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 243.902 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoPopEval< EOT >) 0.5 1 box + (Service) 0.5 2 box + (Communicable) 0.5 3 box + (peoParaPopEval< EOT >) 0 0 box + (peoSeqPopEval< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.tex b/trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.tex new file mode 100644 index 000000000..ff84e73aa --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_pop_eval.tex @@ -0,0 +1,35 @@ +\section{peo\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeo_pop_eval}\index{peoPopEval@{peoPopEval}} +The {\bf {\bf peo\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_pop_eval})}} class provides the interface for constructing Paradis\-EO specific evaluation functors. + + +{\tt \#include $<$peo\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeo_pop_eval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop)=0\label{classpeo_pop_eval_2f208067a5e39c3b26c1234050a41e8f} + +\begin{CompactList}\small\item\em Interface function providing the signature for constructing an evaluation functor. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Pop\-Eval$<$ EOT $>$} + +The {\bf {\bf peo\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_pop_eval})}} class provides the interface for constructing Paradis\-EO specific evaluation functors. + +The derived classes may be used as wrappers for {\bf EO}-derived evaluation functors. In order to have an example, please refer to the implementation of the {\bf {\bf peo\-Seq\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_seq_pop_eval})}} and {\bf {\bf peo\-Para\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_para_pop_eval})}} classes. + + + +Definition at line 34 of file peo\-Pop\-Eval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Pop\-Eval.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.eps b/trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.eps new file mode 100644 index 000000000..e8cf5fd7e --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 506.329 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.9875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSeqPopEval< EOT >) cw +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSeqPopEval< EOT >) 0 0 box + (peoPopEval< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.tex b/trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.tex new file mode 100644 index 000000000..2a277fe52 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_seq_pop_eval.tex @@ -0,0 +1,80 @@ +\section{peo\-Seq\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeo_seq_pop_eval}\index{peoSeqPopEval@{peoSeqPopEval}} +The {\bf peo\-Seq\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_seq_pop_eval})} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor. + + +{\tt \#include $<$peo\-Seq\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Seq\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeo_seq_pop_eval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-Seq\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \&\_\-\_\-eval) +\begin{CompactList}\small\item\em Constructor function - it only sets an internal reference to point to the specified evaluation object. \item\end{CompactList}\item +void {\bf operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for evaluating all the individuals of a given population - in a sequential iterative manner. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +eo\-Eval\-Func$<$ EOT $>$ \& {\bf eval}\label{classpeo_seq_pop_eval_5465f31386c6b96bc8f7fb9393a28a2f} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Seq\-Pop\-Eval$<$ EOT $>$} + +The {\bf peo\-Seq\-Pop\-Eval}{\rm (p.\,\pageref{classpeo_seq_pop_eval})} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor. + +The specified EO evaluation object is applyied in an iterative manner to each individual of a specified population. + + + +Definition at line 36 of file peo\-Seq\-Pop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoSeqPopEval@{peo\-Seq\-Pop\-Eval}!peoSeqPopEval@{peoSeqPopEval}} +\index{peoSeqPopEval@{peoSeqPopEval}!peoSeqPopEval@{peo\-Seq\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-Seq\-Pop\-Eval}$<$ EOT $>$::{\bf peo\-Seq\-Pop\-Eval} (eo\-Eval\-Func$<$ EOT $>$ \& {\em \_\-\_\-eval})}\label{classpeo_seq_pop_eval_a41f91ab4b2aeb325ff75feb66d4e003} + + +Constructor function - it only sets an internal reference to point to the specified evaluation object. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-eval - evaluation object to be applied for each individual of a specified population \end{description} +\end{Desc} + + +Definition at line 56 of file peo\-Seq\-Pop\-Eval.h. + +\subsection{Member Function Documentation} +\index{peoSeqPopEval@{peo\-Seq\-Pop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!peoSeqPopEval@{peo\-Seq\-Pop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Seq\-Pop\-Eval}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_seq_pop_eval_b2c88b9a3ad9091949acf741844eb02f} + + +Operator for evaluating all the individuals of a given population - in a sequential iterative manner. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be evaluated. \end{description} +\end{Desc} + + +Implements {\bf peo\-Pop\-Eval$<$ EOT $>$} {\rm (p.\,\pageref{classpeo_pop_eval_2f208067a5e39c3b26c1234050a41e8f})}. + +Definition at line 61 of file peo\-Seq\-Pop\-Eval.h. + +References peo\-Seq\-Pop\-Eval$<$ EOT $>$::eval. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Seq\-Pop\-Eval.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.eps b/trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.eps new file mode 100644 index 000000000..2b86c8a2d --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 476.19 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSeqTransform< EOT >) cw +(peoTransform< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSeqTransform< EOT >) 0 0 box + (peoTransform< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.tex b/trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.tex new file mode 100644 index 000000000..2ec1752b6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_seq_transform.tex @@ -0,0 +1,93 @@ +\section{peo\-Seq\-Transform$<$ EOT $>$ Class Template Reference} +\label{classpeo_seq_transform}\index{peoSeqTransform@{peoSeqTransform}} +The {\bf peo\-Seq\-Transform}{\rm (p.\,\pageref{classpeo_seq_transform})} represent a wrapper for offering the possibility of using EO derived transform operators along with the Paradis\-EO evolutionary algorithms. + + +{\tt \#include $<$peo\-Seq\-Transform.h$>$} + +Inheritance diagram for peo\-Seq\-Transform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeo_seq_transform} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-Seq\-Transform} (eo\-Transform$<$ EOT $>$ \&\_\-\_\-trans) +\begin{CompactList}\small\item\em Constructor function - sets an internal reference towards the specified EO-derived transform object. \item\end{CompactList}\item +void {\bf operator()} (eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for applying the specified transform operators on each individual of the given population. \item\end{CompactList}\item +virtual void {\bf pack\-Data} ()\label{classpeo_seq_transform_c4bf2724e9f6055f12bd169fad893be3} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +virtual void {\bf unpack\-Data} ()\label{classpeo_seq_transform_24e6cf15ef230ed538031b522ddd4ae6} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +virtual void {\bf execute} ()\label{classpeo_seq_transform_0294a2f9d6b44ec74d22eaceccdffc2b} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +virtual void {\bf pack\-Result} ()\label{classpeo_seq_transform_4861c61f9e46d83964ea8a156a9a3ee0} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +virtual void {\bf unpack\-Result} ()\label{classpeo_seq_transform_5dd029fc011eb2a810ca1140025129b1} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +eo\-Transform$<$ EOT $>$ \& {\bf trans}\label{classpeo_seq_transform_ad3e16c59dd6c46dfc1baf7b88af30cf} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Seq\-Transform$<$ EOT $>$} + +The {\bf peo\-Seq\-Transform}{\rm (p.\,\pageref{classpeo_seq_transform})} represent a wrapper for offering the possibility of using EO derived transform operators along with the Paradis\-EO evolutionary algorithms. + +A minimal set of interface functions is also provided for creating the link with the parallel architecture of the Paradis\-EO framework. + + + +Definition at line 35 of file peo\-Seq\-Transform.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoSeqTransform@{peo\-Seq\-Transform}!peoSeqTransform@{peoSeqTransform}} +\index{peoSeqTransform@{peoSeqTransform}!peoSeqTransform@{peo\-Seq\-Transform}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-Seq\-Transform}$<$ EOT $>$::{\bf peo\-Seq\-Transform} (eo\-Transform$<$ EOT $>$ \& {\em \_\-\_\-trans})}\label{classpeo_seq_transform_3b8e4ed19d9458938eb669d83a53c626} + + +Constructor function - sets an internal reference towards the specified EO-derived transform object. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - EO-derived transform object including crossover and mutation operators. \end{description} +\end{Desc} + + +Definition at line 70 of file peo\-Seq\-Transform.h. + +\subsection{Member Function Documentation} +\index{peoSeqTransform@{peo\-Seq\-Transform}!operator()@{operator()}} +\index{operator()@{operator()}!peoSeqTransform@{peo\-Seq\-Transform}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Seq\-Transform}$<$ EOT $>$::operator() (eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})}\label{classpeo_seq_transform_1ba63536abb6c4e1c369e0b7e066872e} + + +Operator for applying the specified transform operators on each individual of the given population. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be transformed by applying the crossover and mutation operators. \end{description} +\end{Desc} + + +Definition at line 75 of file peo\-Seq\-Transform.h. + +References peo\-Seq\-Transform$<$ EOT $>$::trans. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Seq\-Transform.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.eps b/trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.eps new file mode 100644 index 000000000..ce426eb0b --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 346.821 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.44167 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSyncIslandMig< EOT >) cw +(Cooperative) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSyncIslandMig< EOT >) 0 0 box + (Cooperative) 0 1 box + (Communicable) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.tex b/trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.tex new file mode 100644 index 000000000..203aa32f0 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_sync_island_mig.tex @@ -0,0 +1,189 @@ +\section{peo\-Sync\-Island\-Mig$<$ EOT $>$ Class Template Reference} +\label{classpeo_sync_island_mig}\index{peoSyncIslandMig@{peoSyncIslandMig}} +The {\bf peo\-Sync\-Island\-Mig}{\rm (p.\,\pageref{classpeo_sync_island_mig})} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + + +{\tt \#include $<$peo\-Sync\-Island\-Mig.h$>$} + +Inheritance diagram for peo\-Sync\-Island\-Mig$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeo_sync_island_mig} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-Sync\-Island\-Mig} (unsigned \_\-\_\-frequency, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace, {\bf Topology} \&\_\-\_\-topology, eo\-Pop$<$ EOT $>$ \&\_\-\_\-source, eo\-Pop$<$ EOT $>$ \&\_\-\_\-destination) +\begin{CompactList}\small\item\em Constructor for the {\bf peo\-Sync\-Island\-Mig}{\rm (p.\,\pageref{classpeo_sync_island_mig})} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \item\end{CompactList}\item +void {\bf operator()} () +\begin{CompactList}\small\item\em Function operator to be called as checkpoint for performing the migration step. \item\end{CompactList}\item +void {\bf pack} ()\label{classpeo_sync_island_mig_e334188141eeba9f7b78bc6716f819ad} + +\begin{CompactList}\small\item\em Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +void {\bf unpack} ()\label{classpeo_sync_island_mig_85777bd9f709c5d4107799e8619948d1} + +\begin{CompactList}\small\item\em Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +void {\bf notify\-Sending} ()\label{classpeo_sync_island_mig_8c427b3f91c19ff85f86930366b96008} + +\begin{CompactList}\small\item\em Auxiliary function dealing with migration notifications. There is no need to explicitly call the function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void {\bf emigrate} ()\label{classpeo_sync_island_mig_4c8416e3acce1a6e4c3b0a442d94b063} + +\item +void {\bf immigrate} ()\label{classpeo_sync_island_mig_38dd72312a3d16808af1aa7beb9ed4a7} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +eo\-Periodic\-Continue$<$ EOT $>$ {\bf cont}\label{classpeo_sync_island_mig_2d8ae9104376f3e073e0b250d9b425a2} + +\item +eo\-Select$<$ EOT $>$ \& {\bf select}\label{classpeo_sync_island_mig_5e9c9f5f65d6418ad46e647ee1804a3d} + +\item +eo\-Replacement$<$ EOT $>$ \& {\bf replace}\label{classpeo_sync_island_mig_cb6d2d909503a86415912900d6e1d891} + +\item +{\bf Topology} \& {\bf topology}\label{classpeo_sync_island_mig_ebfe6edb6be16d46bf6d71cb233fcace} + +\item +eo\-Pop$<$ EOT $>$ \& {\bf source}\label{classpeo_sync_island_mig_33fde1f09faf2a3f772d8b8f6a2615c6} + +\item +eo\-Pop$<$ EOT $>$ \& {\bf destination}\label{classpeo_sync_island_mig_a9bf4612c7c04da6cf69245c6617e6a6} + +\item +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ {\bf imm}\label{classpeo_sync_island_mig_088c1623f32668dcd3683fceff9426c3} + +\item +std::queue$<$ eo\-Pop$<$ EOT $>$ $>$ {\bf em}\label{classpeo_sync_island_mig_11d6dd3e4a6db710433f501af0988322} + +\item +std::queue$<$ {\bf Cooperative} $\ast$ $>$ {\bf coop\_\-em}\label{classpeo_sync_island_mig_2f7ca18d67ab7fb47a9851ab3179eb7d} + +\item +sem\_\-t {\bf sync}\label{classpeo_sync_island_mig_91e0e1ea59c2a6a66eb496bddd60a18f} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Sync\-Island\-Mig$<$ EOT $>$} + +The {\bf peo\-Sync\-Island\-Mig}{\rm (p.\,\pageref{classpeo_sync_island_mig})} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals. + +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: + +\begin{TabularC}{2} +\hline +{\bf do} \{ ~ &~ \\\hline +~~~~~~~~ select( population, offsprings ); ~ &// select the offsprings from the current population \\\hline +~~~~~~~~ transform( offsprings ); ~ &// crossover and mutation operators are applied on the selected offsprings \\\hline +~~~~~~~~ evaluate( offsprings ); ~ &// evaluation step of the resulting offspring \\\hline +~~~~~~~~ replace( population, offsprings ); ~ &// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy \\\hline +\} {\bf while} ( ea\-Checkpoint\-Continue( population ) ); ~ &// checkpoint operators are applied on the current population, including the migration operator, if any specified \\\hline +\end{TabularC} + + +Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the {\bf {\bf Runner}{\rm (p.\,\pageref{class_runner})}} class (for example a {\bf peo\-EA}{\rm (p.\,\pageref{classpeo_e_a})} object represents a possible owner). A simple example is offered bellow: + +\begin{enumerate} +\item topological model to be followed when performing migrations: \par + \par + \begin{TabularC}{2} +\hline +{\bf Ring\-Topology}{\rm (p.\,\pageref{class_ring_topology})} mig\-Topology; ~ &// a simple ring topological model - each island communicates with two other islands \\\hline +\end{TabularC} + + +\item the continuation criterion, selection and replacement strategy etc. are defined: \par + \par + \begin{TabularC}{2} +\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// population of individuals to be used for the evolutionary algorithm \\\hline +~ &~ \\\hline +eo\-Random\-Select$<$ EOT $>$ mig\-Select\-Strategy; ~ &// selection strategy - in this case a random selection is applied \\\hline +eo\-Select\-Number$<$ EOT $>$ mig\-Select( mig\-Select\-Strategy, MIG\_\-SIZE ); ~ &// number of individuals to be selected using the specified strategy \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ mig\-Replace; ~ &// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals \\\hline +~ &~ \\\hline +peo\-Sync\-Island\-Mig$<$ EOT $>$ sync\-Migration( \par + ~~~~~~~~ MIG\_\-FREQ, mig\-Select, mig\-Replace, mig\-Topology, \par + ~~~~~~~~ population, population \par + ); ~ &// synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated \\\hline +\end{TabularC} + + +\item creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): \par + \par + \begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// the evolutionary algorithm will stop after NUM\_\-GEN generations \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// number of individuals to be selected using the specified strategy \\\hline +... ~ &~ \\\hline +ea\-Checkpoint\-Continue.add( sync\-Migration ); ~ &// adding the migration operator as checkpoint element \\\hline +... ~ &~ \\\hline +\end{TabularC} + + +\item definition of an owner evolutionary algorithm (an object inheriting the {\bf {\bf Runner}{\rm (p.\,\pageref{class_runner})}} class): \par + \par + \begin{TabularC}{2} +\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace); ~ &// evolutionary algorithm having as checkpoint the ea\-Checkpoint\-Continue object defined above \\\hline +sync\-Migration.set\-Owner( ea\-Alg ); ~ &// setting the evolutionary algorithm as owner of the migration object \\\hline +ea\-Alg( population ); ~ &// applying the evolutionary algorithm on a given population \\\hline +\end{TabularC} +\end{enumerate} + + +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. + +The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ mig\-Topology object has to be passed as parameter for all the migration objects, in order to interconnect them). + + + +Definition at line 129 of file peo\-Sync\-Island\-Mig.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoSyncIslandMig@{peo\-Sync\-Island\-Mig}!peoSyncIslandMig@{peoSyncIslandMig}} +\index{peoSyncIslandMig@{peoSyncIslandMig}!peoSyncIslandMig@{peo\-Sync\-Island\-Mig}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-Sync\-Island\-Mig}$<$ EOT $>$::{\bf peo\-Sync\-Island\-Mig} (unsigned {\em \_\-\_\-frequency}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace}, {\bf Topology} \& {\em \_\-\_\-topology}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-source}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-destination})}\label{classpeo_sync_island_mig_96b7b6de20b5e318a8b1cde76842305c} + + +Constructor for the {\bf peo\-Sync\-Island\-Mig}{\rm (p.\,\pageref{classpeo_sync_island_mig})} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em unsigned}]\_\-\_\-frequency - frequency of the migrations - the migrations occur periodically; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy used for integrating the immigrant individuals in the destination population; \item[{\em Topology\&}]\_\-\_\-topology - topological model to be followed when performing migrations; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-source - source population from which the emigrant individuals are selected; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-destination - destination population in which the immigrant population are integrated. \end{description} +\end{Desc} + + +Definition at line 193 of file peo\-Sync\-Island\-Mig.h. + +References Topology::add(), and peo\-Sync\-Island\-Mig$<$ EOT $>$::sync. + +\subsection{Member Function Documentation} +\index{peoSyncIslandMig@{peo\-Sync\-Island\-Mig}!operator()@{operator()}} +\index{operator()@{operator()}!peoSyncIslandMig@{peo\-Sync\-Island\-Mig}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Island\-Mig}$<$ EOT $>$::operator() ()}\label{classpeo_sync_island_mig_178476fd276f78b73607b33d19522c36} + + +Function operator to be called as checkpoint for performing the migration step. + +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. + +Definition at line 267 of file peo\-Sync\-Island\-Mig.h. + +References peo\-Sync\-Island\-Mig$<$ EOT $>$::cont, peo\-Sync\-Island\-Mig$<$ EOT $>$::emigrate(), Cooperative::get\-Owner(), peo\-Sync\-Island\-Mig$<$ EOT $>$::immigrate(), Thread::set\-Active(), peo\-Sync\-Island\-Mig$<$ EOT $>$::source, Communicable::stop(), and peo\-Sync\-Island\-Mig$<$ EOT $>$::sync. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Sync\-Island\-Mig.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.eps b/trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.eps new file mode 100644 index 000000000..025e47565 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 348.837 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.43333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoSyncMultiStart< EOT >) cw +(Service) cw +(Communicable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoSyncMultiStart< EOT >) 0 0 box + (Service) 0 1 box + (Communicable) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.tex b/trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.tex new file mode 100644 index 000000000..773708204 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_sync_multi_start.tex @@ -0,0 +1,203 @@ +\section{peo\-Sync\-Multi\-Start$<$ EOT $>$ Class Template Reference} +\label{classpeo_sync_multi_start}\index{peoSyncMultiStart@{peoSyncMultiStart}} +The {\bf peo\-Sync\-Multi\-Start}{\rm (p.\,\pageref{classpeo_sync_multi_start})} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + + +{\tt \#include $<$peo\-Sync\-Multi\-Start.h$>$} + +Inheritance diagram for peo\-Sync\-Multi\-Start$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeo_sync_multi_start} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf peo\-Sync\-Multi\-Start} (eo\-Continue$<$ EOT $>$ \&\_\-\_\-cont, eo\-Select$<$ EOT $>$ \&\_\-\_\-select, eo\-Replacement$<$ EOT $>$ \&\_\-\_\-replace, mo\-Algo$<$ EOT $>$ \&\_\-\_\-ls, eo\-Pop$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. \item\end{CompactList}\item +void {\bf operator()} () +\begin{CompactList}\small\item\em Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. \item\end{CompactList}\item +void {\bf pack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void {\bf unpack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void {\bf execute} () +\begin{CompactList}\small\item\em Auxiliary function for actually executing the specified algorithm on one assigned individual. \item\end{CompactList}\item +void {\bf pack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void {\bf unpack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void {\bf notify\-Sending\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \item\end{CompactList}\item +void {\bf notify\-Sending\-All\-Resource\-Requests} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +eo\-Continue$<$ EOT $>$ \& {\bf cont}\label{classpeo_sync_multi_start_43f4fa9b125baef6fc8b968dfd16f437} + +\item +eo\-Select$<$ EOT $>$ \& {\bf select}\label{classpeo_sync_multi_start_8fc9a3d046023ddd077defec3c23ab3b} + +\item +eo\-Replacement$<$ EOT $>$ \& {\bf replace}\label{classpeo_sync_multi_start_a375ccea98e9bf2a0854dac27df4522f} + +\item +mo\-Algo$<$ EOT $>$ \& {\bf ls}\label{classpeo_sync_multi_start_4d317966de767dcc87eee0286ea7f95d} + +\item +eo\-Pop$<$ EOT $>$ \& {\bf pop}\label{classpeo_sync_multi_start_391178bd6b8a97a08ab4e345f070e967} + +\item +eo\-Pop$<$ EOT $>$ {\bf sel}\label{classpeo_sync_multi_start_dbcc1a069ec72ecd8d40c392640d84b3} + +\item +eo\-Pop$<$ EOT $>$ {\bf impr\_\-sel}\label{classpeo_sync_multi_start_ca10f6d258105e3c4f0d1660db5b7679} + +\item +EOT {\bf sol}\label{classpeo_sync_multi_start_2c2ebe46470d1425f0409897deab435b} + +\item +unsigned {\bf idx}\label{classpeo_sync_multi_start_64191ef79b7b589964ac9c3e23ae6718} + +\item +unsigned {\bf num\_\-term}\label{classpeo_sync_multi_start_773eb9097550d9444f25ca8f48997a30} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Sync\-Multi\-Start$<$ EOT $>$} + +The {\bf peo\-Sync\-Multi\-Start}{\rm (p.\,\pageref{classpeo_sync_multi_start})} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A {\bf peo\-Sync\-Multi\-Start}{\rm (p.\,\pageref{classpeo_sync_multi_start})} object can be specified as checkpoint object for a classic Paradis\-EO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. + + + +Definition at line 51 of file peo\-Sync\-Multi\-Start.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!peoSyncMultiStart@{peoSyncMultiStart}} +\index{peoSyncMultiStart@{peoSyncMultiStart}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::{\bf peo\-Sync\-Multi\-Start} (eo\-Continue$<$ EOT $>$ \& {\em \_\-\_\-cont}, eo\-Select$<$ EOT $>$ \& {\em \_\-\_\-select}, eo\-Replacement$<$ EOT $>$ \& {\em \_\-\_\-replace}, mo\-Algo$<$ EOT $>$ \& {\em \_\-\_\-ls}, eo\-Pop$<$ EOT $>$ \& {\em \_\-\_\-pop})}\label{classpeo_sync_multi_start_d29f94aad3c1f443bfffc8b6aee0704c} + + +Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - defined for including further functionality - no semantics associated at this time; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the resulting individuals in the initial population; \item[{\em mo\-Algo$<$}]EOT $>$\& \_\-\_\-ls - algorithm to be applied on each of the selected individuals - a {\bf mo\-Algo$<$ EOT $>$}-derived object must be specified; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - the initial population from which the individuals are selected for applying the specified algorithm. \end{description} +\end{Desc} + + +Definition at line 121 of file peo\-Sync\-Multi\-Start.h. + +\subsection{Member Function Documentation} +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!operator()@{operator()}} +\index{operator()@{operator()}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::operator() ()}\label{classpeo_sync_multi_start_76385b33fe514f91cb83f0fbecbeb3c2} + + +Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. + +There is no need to explicitly call the operator - automatically called as checkpoint operator. + +Definition at line 176 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::idx, peo\-Sync\-Multi\-Start$<$ EOT $>$::impr\_\-sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::num\_\-term, peo\-Sync\-Multi\-Start$<$ EOT $>$::pop, Service::request\-Resource\-Request(), peo\-Sync\-Multi\-Start$<$ EOT $>$::sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::select, and Communicable::stop().\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!packData@{packData}} +\index{packData@{packData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::pack\-Data ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_sync_multi_start_8becfab1922b64708dca5a53e2932a5a} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_aea4b8f7f8fb88e83862ee4bfd9ab207})}. + +Definition at line 135 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::idx, and peo\-Sync\-Multi\-Start$<$ EOT $>$::sel.\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!unpackData@{unpackData}} +\index{unpackData@{unpackData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::unpack\-Data ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_sync_multi_start_2903a441b77cded266b5fb651e17a5b5} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_3bd87b444710813d30fd754d4d0b4df3})}. + +Definition at line 141 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!execute@{execute}} +\index{execute@{execute}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::execute ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_sync_multi_start_a4d1c2943c290de540800087b54dc49b} + + +Auxiliary function for actually executing the specified algorithm on one assigned individual. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_e4f2894e6121e60f38d41cfbd7447ae4})}. + +Definition at line 147 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::ls, and peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!packResult@{packResult}} +\index{packResult@{packResult}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::pack\-Result ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_sync_multi_start_6c48eb0dae741cff7203b65e226f9616} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_e5e4f90b2315e15c2a2913bd370f4cf5})}. + +Definition at line 153 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!unpackResult@{unpackResult}} +\index{unpackResult@{unpackResult}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::unpack\-Result ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_sync_multi_start_c3cbd1f10a89d1915c5ccf82a2c34a1d} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_45c06344edbfa482b91f68e2035a6099})}. + +Definition at line 159 of file peo\-Sync\-Multi\-Start.h. + +References Service::get\-Owner(), peo\-Sync\-Multi\-Start$<$ EOT $>$::impr\_\-sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::num\_\-term, peo\-Sync\-Multi\-Start$<$ EOT $>$::pop, peo\-Sync\-Multi\-Start$<$ EOT $>$::replace, Communicable::resume(), peo\-Sync\-Multi\-Start$<$ EOT $>$::sel, Thread::set\-Active(), and peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!notifySendingData@{notifySendingData}} +\index{notifySendingData@{notifySendingData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::notify\-Sending\-Data ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_sync_multi_start_32ec0d01d3fd8a9932abd68f4781fc94} + + +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_81ad4d6ebb50045b8977e2ab74826f30})}. + +Definition at line 187 of file peo\-Sync\-Multi\-Start.h.\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!notifySendingAllResourceRequests@{notifySendingAllResourceRequests}} +\index{notifySendingAllResourceRequests@{notifySendingAllResourceRequests}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf peo\-Sync\-Multi\-Start}$<$ EOT $>$::notify\-Sending\-All\-Resource\-Requests ()\hspace{0.3cm}{\tt [virtual]}}\label{classpeo_sync_multi_start_fc90282cc4e93cdea8f82fd52dd78fb0} + + +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. + +There is no need to explicitly call the function. + +Reimplemented from {\bf Service} {\rm (p.\,\pageref{class_service_f94cc8a5c2665d4574041737e61e9ffc})}. + +Definition at line 192 of file peo\-Sync\-Multi\-Start.h. + +References Service::get\-Owner(), and Thread::set\-Passive(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Sync\-Multi\-Start.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_transform.eps b/trunk/paradiseo-peo/docs/latex/classpeo_transform.eps new file mode 100644 index 000000000..6dbaa126c --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_transform.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 200 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.5 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(peoTransform< EOT >) cw +(Service) cw +(Communicable) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (peoTransform< EOT >) 0.5 1 box + (Service) 0.5 2 box + (Communicable) 0.5 3 box + (peoParaSGATransform< EOT >) 0 0 box + (peoSeqTransform< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/trunk/paradiseo-peo/docs/latex/classpeo_transform.tex b/trunk/paradiseo-peo/docs/latex/classpeo_transform.tex new file mode 100644 index 000000000..857c1413b --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/classpeo_transform.tex @@ -0,0 +1,27 @@ +\section{peo\-Transform$<$ EOT $>$ Class Template Reference} +\label{classpeo_transform}\index{peoTransform@{peoTransform}} +The {\bf peo\-Transform}{\rm (p.\,\pageref{classpeo_transform})} class acts only as an interface for creating transform operators - for an example please refer to the {\bf {\bf peo\-Seq\-Transform}{\rm (p.\,\pageref{classpeo_seq_transform})}} and the {\bf {\bf peo\-Para\-SGATransform}{\rm (p.\,\pageref{classpeo_para_s_g_a_transform})}} classes. + + +{\tt \#include $<$peo\-Transform.h$>$} + +Inheritance diagram for peo\-Transform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeo_transform} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Transform$<$ EOT $>$} + +The {\bf peo\-Transform}{\rm (p.\,\pageref{classpeo_transform})} class acts only as an interface for creating transform operators - for an example please refer to the {\bf {\bf peo\-Seq\-Transform}{\rm (p.\,\pageref{classpeo_seq_transform})}} and the {\bf {\bf peo\-Para\-SGATransform}{\rm (p.\,\pageref{classpeo_para_s_g_a_transform})}} classes. + + + +Definition at line 35 of file peo\-Transform.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Transform.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/doxygen.sty b/trunk/paradiseo-peo/docs/latex/doxygen.sty new file mode 100644 index 000000000..2fc368c23 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/doxygen.sty @@ -0,0 +1,64 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Wed Dec 20 13:45:48 2006 for Paradis\-EO by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Dec 20 13:45:48 2006 for Paradis\-EO by Doxygen }} +\cfoot{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/trunk/paradiseo-peo/docs/latex/hierarchy.tex b/trunk/paradiseo-peo/docs/latex/hierarchy.tex new file mode 100644 index 000000000..1692dc8e1 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/hierarchy.tex @@ -0,0 +1,49 @@ +\section{Paradis\-EO Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{Communicable}{\pageref{class_communicable}}{} +\begin{CompactList} +\item \contentsline{section}{Cooperative}{\pageref{class_cooperative}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Async\-Island\-Mig$<$ EOT $>$}{\pageref{classpeo_async_island_mig}}{} +\item \contentsline{section}{peo\-Sync\-Island\-Mig$<$ EOT $>$}{\pageref{classpeo_sync_island_mig}}{} +\end{CompactList} +\item \contentsline{section}{Runner}{\pageref{class_runner}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-EA$<$ EOT $>$}{\pageref{classpeo_e_a}}{} +\end{CompactList} +\item \contentsline{section}{Service}{\pageref{class_service}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeo_pop_eval}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Para\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeo_para_pop_eval}}{} +\item \contentsline{section}{peo\-Seq\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeo_seq_pop_eval}}{} +\end{CompactList} +\item \contentsline{section}{peo\-Sync\-Multi\-Start$<$ EOT $>$}{\pageref{classpeo_sync_multi_start}}{} +\item \contentsline{section}{peo\-Transform$<$ EOT $>$}{\pageref{classpeo_transform}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Para\-SGATransform$<$ EOT $>$}{\pageref{classpeo_para_s_g_a_transform}}{} +\item \contentsline{section}{peo\-Seq\-Transform$<$ EOT $>$}{\pageref{classpeo_seq_transform}}{} +\end{CompactList} +\end{CompactList} +\item \contentsline{section}{Worker}{\pageref{class_worker}}{} +\end{CompactList} +\item \contentsline{section}{Node}{\pageref{struct_node}}{} +\item \contentsline{section}{peo\-Agg\-Eval\-Func$<$ EOT $>$}{\pageref{classpeo_agg_eval_func}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$}{\pageref{classpeo_no_agg_eval_func}}{} +\end{CompactList} +\item \contentsline{section}{SEND\_\-REQUEST}{\pageref{struct_s_e_n_d___r_e_q_u_e_s_t}}{} +\item \contentsline{section}{Thread}{\pageref{class_thread}}{} +\begin{CompactList} +\item \contentsline{section}{Reactive\-Thread}{\pageref{class_reactive_thread}}{} +\begin{CompactList} +\item \contentsline{section}{Communicator}{\pageref{class_communicator}}{} +\item \contentsline{section}{Worker}{\pageref{class_worker}}{} +\end{CompactList} +\item \contentsline{section}{Runner}{\pageref{class_runner}}{} +\end{CompactList} +\item \contentsline{section}{Topology}{\pageref{class_topology}}{} +\begin{CompactList} +\item \contentsline{section}{Ring\-Topology}{\pageref{class_ring_topology}}{} +\end{CompactList} +\end{CompactList} diff --git a/trunk/paradiseo-peo/docs/latex/main.tex b/trunk/paradiseo-peo/docs/latex/main.tex new file mode 100644 index 000000000..a861f3afd --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/main.tex @@ -0,0 +1,49 @@ +\section{Introduction}\label{main_intro} +Paradis\-EO-PEO is a white-box object-oriented framework dedicated to the reusable design of parallel and distributed metaheuristics (PDM). Paradis\-EO-PEO provides a broad range of features including evolutionary algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization mechanisms, etc. This high content and utility encourages its use at European level. Paradis\-EO-PEO is based on a clear conceptual separation of the solution methods from the problems they are intended to solve. This separation confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes provided by the framework allow a higher flexibility compared to other frameworks. Paradis\-EO-PEO is one of the rare frameworks that provide the most common parallel and distributed models. Their implementation is portable on distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated provided classes. Their experimentation on the radio network design real-world application demonstrate their efficiency. + +In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local search methods (LS). These two families have complementary characteristics: EA allow a better exploration of the search space, while LS have the power to intensify the search in promising regions. Their hybridization allows to deliver robust and better solutions + +Although serial metaheuristics have a polynomial temporal complexity, they remain unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way to deal with the performance issue of these problems. Numerous parallel and distributed metaheuristics (PDM) and their implementations have been proposed, and are available on the\-Web. They can be reused and adapted to his/her own problems. However, the user has to deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, takes along time and makes harder the produced code maintenance. A better way to reuse the code of existing PDM is the reuse through libraries. These are often more reliable as they are more tested and documented. They allow a better maintainability and efficiency. However, libraries do not allow the reuse of design.\section{Parallel and distributed metaheuristics}\label{main_parallel_metaheuristics} +\subsection{Parallel distributed evolutionary algorithms}\label{main_parallel_distributed} +Evolutionary Algorithms (EA) are based on the iterative improvement of a population of solutions. At each step, individuals are selected, paired and recombined in order to generate new solutions that replace other ones, and so on. As the algorithm converges, the population is mainly composed of individuals well adapted to the \char`\"{}environment\char`\"{}, for instance the problem. The main features that characterize EA are the way the population is initialized, the selection strategy (deterministic/stochastic) by fostering \char`\"{}good\char`\"{} solutions, the replacement strategy that discards individuals, and the continuation/stopping criterion to decide whether the evolution should go on or not. + +Basically, three major parallel and distributed models for EA can been distinguished: the island (a)synchronous cooperative model, the parallel evaluation of the population, and the distributed evaluation of a single solution. \begin{itemize} +\item {\em Island (a)synchronous cooperative model\/}. Different EA are simultaneously deployed to cooperate for computing better and robust solutions. They exchange in an asynchronous way genetic stuff to diversify the search. The objective is to allow to delay the global convergence, especially when the\-EAare heterogeneous regarding the variation operators. The migration of individuals follows a policy defined by few parameters: the migration decision criterion, the exchange topology, the number of emigrants, the emigrants selection policy, and the replacement/integration policy. + +\item {\em Parallel evaluation of the population\/}. It is required as it is in general the most timeconsuming. The parallel evaluation follows the centralized model. The farmer applies the following operations: selection, transformation and replacement as they require a global management of the population. At each generation, it distributes the set of new solutions between differentworkers. These evaluate and return back the solutions and their quality values. An efficient execution is often obtained particularly when the evaluation of each solution is costly. The two main advantages of an asynchronous model over the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the robustness in case the fitness computation can take very different computation times (e.g. for nonlinear numerical optimization). Whereas some time-out detection can be used to address the former issue, the latter one can be partially overcome if the grain is set to very small values, as individuals will be sent out for evaluations upon request of the workers. + +\item {\em Distributed evaluation of a single solution\/}. The quality of each solution is evaluated in a parallel centralized way. That model is particularly interesting when the evaluation function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In that case, the function can be viewed as an aggregation of a certain number of partial functions. The partial functions could also be identical if for example the problem to deal with is a data mining one. The evaluation is thus data parallel and the accesses to data base are performed in parallel. Furthermore, a reduction operation is performed on the results returned by the partial functions. As a summary, for this model the user has to indicate a set of partial functions and an aggregation operator of these. \end{itemize} +\subsection{Parallel distributed local searches}\label{main_parallel_ls} +\subsubsection{Local searches}\label{main_local_searches} +All metaheuristics dedicated to the improvement of a single solution are based on the concept of neighborhood. They start from a solution randomly generated or obtained from another optimization algorithm, and update it, step by step, by replacing the current solution by one of its neighboring candidates. Some criterion have been identified to differentiate such searches: the heuristic internal memory, the choice of the initial solution, the candidate solutions generator, and the selection strategy of candidate moves. Three main algorithms of local search stand out: Hill Climbing (HC), Simulated Annealing (SA) and Tabu Search (TS).\subsubsection{Parallel local searches}\label{main_parallel_local_searches} +Two parallel distributed models are commonly used in the literature: the parallel distributed exploration of neighboring candidate solutions model, and the multi-start model. \begin{itemize} +\item {\em Parallel exploration of neighboring candidates\/}. It is a low-level Farmer-Worker model that does not alter the behavior of the heuristic. A sequential search computes the same results slower.At the beginning of each iteration, the farmer duplicates the current solution between distributed nodes. Each one manages some candidates and the results are returned to the farmer. The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as the number of neighboring solutions to process before finding one that improves the current objective function may be highly variable. + +\item {\em Multi-start model\/}. It consists in simultaneously launching several local searches. They may be heterogeneous, but no information is exchanged between them. The resultswould be identical as if the algorithms were sequentially run.Very often deterministic algorithms differ by the supplied initial solution and/or some other parameters. This trivial model is convenient for low-speed networks of workstations. \end{itemize} +\section{Hybridization}\label{main_hybridization} +Recently, hybrid metaheuristics have gained a considerable interest. For many practical or academic optimization problems, the best found solutions are obtained by hybrid algorithms. Combinations of different metaheuristics have provided very powerful search methods. Two levels and two modes of hybridization have been distinguished: Low and High levels, and Relay and {\bf Cooperative}{\rm (p.\,\pageref{class_cooperative})} modes. The low-level hybridization addresses the functional composition of a single optimization method. A function of a given metaheuristic is replaced by another metaheuristic. On the contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, meaning no direct relationship to their internal working is considered. On the other hand, relay hybridization means a set of metaheuristics is applied in a pipeline way. The output of a metaheuristic (except the last) is the input of the following one (except the first). Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic performs a search in a solution space, and exchange solutions with others.\section{Paradiseo goals and architecture}\label{main_paradiseo_goals} +The \char`\"{}EO\char`\"{} part of Paradis\-EO-PEO means Evolving Objects. EO is a C++ LGPL open source framework and includes a paradigm-free Evolutionary Computation library (EOlib) dedicated to the flexible design of EA through evolving objects superseding the most common dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and Genetic Programming). Furthermore, EO integrates several services including visualization facilities, on-line definition of parameters, application check-pointing, etc. Paradis\-EO-PEO is an extended version of the EO framework. The extensions include local search methods, hybridization mechanisms, parallelism and distribution mechanisms, and other features that are not addressed in this paper such as multi-objective optimization and grid computing. In the next sections, we present the motivations and goals of Paradis\-EO-PEO, its architecture and some of its main implementation details and issues.\subsection{Motivations and goals}\label{main_motivation} +A framework is normally intended to be exploited by as many users as possible. Therefore, its exploitation could be successful only if some important user criteria are satisfied. The following criteria are the major of them and constitute the main objectives of the Paradis\-EO-PEO framework: + +\begin{itemize} +\item {\em Maximum design and code reuse\/}. The framework must provide for the user a whole architecture design of his/her solution method. Moreover, the programmer may redo as little code as possible. This objective requires a clear and maximal conceptual separation between the solution methods and the problems to be solved, and thus a deep domain analysis. The user might therefore develop only the minimal problem-specific code. + +\item {\em Flexibility and adaptability\/}. It must be possible for the user to easily add new features/ metaheuristics or change existing ones without implicating other components. Furthermore, as in practice existing problems evolve and new others arise these have to be tackled by specializing/adapting the framework components. + +\item {\em Utility\/}. The framework must allow the user to cover a broad range of metaheuristics, problems, parallel distributed models, hybridization mechanisms, etc. + +\item {\em Transparent and easy access to performance and robustness\/}. As the optimization applications are often time-consuming the performance issue is crucial. Parallelism and distribution are two important ways to achieve high performance execution. In order to facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee the reliability and the quality of the results. The hybridization mechanism allows to obtain robust and better solutions. + +\item {\em Portability\/}. In order to satisfy a large number of users the framework must support different material architectures and their associated operating systems. \end{itemize} +\subsection{Paradis\-EO-PEO architecture}\label{main_architecture} +The architecture of Paradis\-EO-PEO is multi-layer and modular allowing to achieve the objectives quoted above. This allows particularly a high flexibility and adaptability, an easier hybridization, and more code and design reuse. The architecture has three layers identifying three major categories of classes: {\em Solvers\/}, {\em Runners\/} and {\em Helpers\/}. \begin{itemize} +\item {\em Helpers\/}. Helpers are low-level classes that perform specific actions related to the evolution or search process. They are split in two categories: {\em Evolutionary helpers (EH)\/} and {\em Local search helpers (LSH)\/}. EH include mainly the transformation, selection and replacement operations, the evaluation function and the stopping criterion. LSH can be generic such as the neighborhood explorer class, or specific to the local search metaheuristic like the tabu list manager class in the Tabu Search solution method. On the other hand, there are some special helpers dedicated to the management of parallel and distributed models 2 and 3, such as the communicators that embody the communication services. + +Helpers cooperate between them and interact with the components of the upper layer i.e. the runners. The runners invoke the helpers through function parameters. Indeed, helpers have not their own data, but they work on the internal data of the runners. + +\item {\em Runners\/}. The Runners layer contains a set of classes that implement the metaheuristics themselves. They perform the run of the metaheuristics from the initial state or population to the final one. One can distinguish the {\em Evolutionary runners (ER)\/} such as genetic algorithms, evolution strategies, etc., and {\em Local search runners (LSR)\/} like tabu search, simulated annealing and hill climbing. Runners invoke the helpers to perform specific actions on their data. For instance, an ER may ask the fitness function evaluation helper to evaluate its population. An LSR asks the movement helper to perform a given movement on the current state. Furthermore, runners can be serial or parallel distributed. + +\item {\em Solvers\/}. Solvers are devoted to control the evolution process and/or the search. They generate the initial state (solution or population) and define the strategy for combining and sequencing different metaheuristics. Two types of solvers can be distinguished. {\em Single metaheuristic solvers (SMS)\/} and {\em Multiple metaheuristics solvers (MMS)\/}. SMSs are dedicated to the execution of only one metaheuristic.MMS are more complex as they control and sequence several metaheuristics that can be heterogeneous. Solvers interact with the user by getting the input data and delivering the output (best solution, statistics, etc). \end{itemize} + + +According to the generality of their embedded features, the classes of the architecture split in two major categories: {\em Provided classes\/} and {\em Required classes\/}. Provided classes embody the factored out part of the metaheuristics. They are generic, implemented in the framework, and ensure the control at run time. Required classes are those that must be supplied by the user. They encapsulate the problem-specific aspects of the application. These classes are fixed but not implemented in Paradis\-EO-PEO. The programmer has the burden to develop them using the OO specialization mechanism. \ No newline at end of file diff --git a/trunk/paradiseo-peo/docs/latex/namespacepeo.tex b/trunk/paradiseo-peo/docs/latex/namespacepeo.tex new file mode 100644 index 000000000..bb5729e63 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/namespacepeo.tex @@ -0,0 +1,34 @@ +\section{peo Namespace Reference} +\label{namespacepeo}\index{peo@{peo}} + + +\subsection*{Functions} +\begin{CompactItemize} +\item +void {\bf finalize} ()\label{namespacepeo_f90478489cc92d1e6abb222179163a30} + +\item +void {\bf init} (int \&\_\-\_\-argc, char $\ast$$\ast$\&\_\-\_\-argv)\label{namespacepeo_8184c3b1f7eecc68f69bb8e8b872a7d3} + +\item +void {\bf load\-Parameters} (int \&\_\-\_\-argc, char $\ast$$\ast$\&\_\-\_\-argv)\label{namespacepeo_2b496ee9b81d9ae322ae6edb9a93dc71} + +\item +void {\bf run} ()\label{namespacepeo_10819b2d60b37477c6a89b60c595c67c} + +\end{CompactItemize} +\subsection*{Variables} +\begin{CompactItemize} +\item +int $\ast$ {\bf argc}\label{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2} + +\item +char $\ast$$\ast$$\ast$ {\bf argv}\label{namespacepeo_d07043237d4d923125e38860ba9bbe20} + +\item +int $\ast$ {\bf argc}\label{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2} + +\item +char $\ast$$\ast$$\ast$ {\bf argv}\label{namespacepeo_d07043237d4d923125e38860ba9bbe20} + +\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/namespaces.tex b/trunk/paradiseo-peo/docs/latex/namespaces.tex new file mode 100644 index 000000000..9c6c0a3a2 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/namespaces.tex @@ -0,0 +1,4 @@ +\section{Paradis\-EO Namespace List} +Here is a list of all documented namespaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{{\bf peo} }{\pageref{namespacepeo}}{} +\end{CompactList} diff --git a/trunk/paradiseo-peo/docs/latex/refman.tex b/trunk/paradiseo-peo/docs/latex/refman.tex new file mode 100644 index 000000000..87d6cb7d4 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/refman.tex @@ -0,0 +1,66 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Paradis\-EO Reference Manual}\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.4.6}\\ +\vspace*{0.5cm} +{\small Wed Dec 20 13:45:48 2006}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{The Paradis\-EO-PEO Framework } +\label{index}\input{main} +\chapter{Paradis\-EO Namespace Index} +\input{namespaces} +\chapter{Paradis\-EO Hierarchical Index} +\input{hierarchy} +\chapter{Paradis\-EO Class Index} +\input{annotated} +\chapter{Paradis\-EO Namespace Documentation} +\input{namespacepeo} +\chapter{Paradis\-EO Class Documentation} +\input{class_communicable} +\include{class_communicator} +\include{class_cooperative} +\include{struct_node} +\include{classpeo_agg_eval_func} +\include{classpeo_async_island_mig} +\include{classpeo_e_a} +\include{classpeo_no_agg_eval_func} +\include{classpeo_para_pop_eval} +\include{classpeo_para_s_g_a_transform} +\include{classpeo_pop_eval} +\include{classpeo_seq_pop_eval} +\include{classpeo_seq_transform} +\include{classpeo_sync_island_mig} +\include{classpeo_sync_multi_start} +\include{classpeo_transform} +\include{class_reactive_thread} +\include{class_ring_topology} +\include{class_runner} +\include{struct_s_e_n_d___r_e_q_u_e_s_t} +\include{class_service} +\include{class_thread} +\include{class_topology} +\include{class_worker} +\printindex +\end{document} diff --git a/trunk/paradiseo-peo/docs/latex/struct_node.tex b/trunk/paradiseo-peo/docs/latex/struct_node.tex new file mode 100644 index 000000000..82753f25d --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/struct_node.tex @@ -0,0 +1,32 @@ +\section{Node Struct Reference} +\label{struct_node}\index{Node@{Node}} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +RANK\_\-ID {\bf rk}\label{struct_node_7de6f254b6b8c3f9f8287af0bb742e9b} + +\item +std::string {\bf name}\label{struct_node_3c4318d71ca9a44fe33edcf8b7f26863} + +\item +unsigned {\bf num\_\-workers}\label{struct_node_01fec86d75332858b158c810d57caee3} + +\item +int {\bf rk\_\-sched}\label{struct_node_98deed2036c3dd8fc0f4fe8dacf56a92} + +\item +std::vector$<$ RUNNER\_\-ID $>$ {\bf id\_\-run}\label{struct_node_a90013b890888d3d252a71cb4fe48934} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 35 of file schema.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +schema.h\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/latex/struct_s_e_n_d___r_e_q_u_e_s_t.tex b/trunk/paradiseo-peo/docs/latex/struct_s_e_n_d___r_e_q_u_e_s_t.tex new file mode 100644 index 000000000..63290c205 --- /dev/null +++ b/trunk/paradiseo-peo/docs/latex/struct_s_e_n_d___r_e_q_u_e_s_t.tex @@ -0,0 +1,26 @@ +\section{SEND\_\-REQUEST Struct Reference} +\label{struct_s_e_n_d___r_e_q_u_e_s_t}\index{SEND_REQUEST@{SEND\_\-REQUEST}} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +{\bf Communicable} $\ast$ {\bf comm}\label{struct_s_e_n_d___r_e_q_u_e_s_t_1ad8f7233fa3ff13262e783a9153920f} + +\item +int {\bf to}\label{struct_s_e_n_d___r_e_q_u_e_s_t_93e2a6a71d2a91aa2b7bdd050ee59b4d} + +\item +int {\bf tag}\label{struct_s_e_n_d___r_e_q_u_e_s_t_3126b3ef9d6533d3086760e413a7f23f} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 39 of file send.cpp. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +send.cpp\end{CompactItemize} diff --git a/trunk/paradiseo-peo/docs/man/man3/Communicable.3 b/trunk/paradiseo-peo/docs/man/man3/Communicable.3 new file mode 100644 index 000000000..4a370ac8e --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Communicable.3 @@ -0,0 +1,62 @@ +.TH "Communicable" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Communicable \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBCooperative\fP, \fBRunner\fP, \fBService\fP, and \fBWorker\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCommunicable\fP ()" +.br +.ti -1c +.RI "virtual \fB~Communicable\fP ()" +.br +.ti -1c +.RI "COMM_ID \fBgetKey\fP ()" +.br +.ti -1c +.RI "void \fBlock\fP ()" +.br +.ti -1c +.RI "void \fBunlock\fP ()" +.br +.ti -1c +.RI "void \fBstop\fP ()" +.br +.ti -1c +.RI "void \fBresume\fP ()" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "COMM_ID \fBkey\fP" +.br +.ti -1c +.RI "sem_t \fBsem_lock\fP" +.br +.ti -1c +.RI "sem_t \fBsem_stop\fP" +.br +.in -1c +.SS "Static Protected Attributes" + +.in +1c +.ti -1c +.RI "static unsigned \fBnum_comm\fP = 0" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 31 of file communicable.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Communicator.3 b/trunk/paradiseo-peo/docs/man/man3/Communicator.3 new file mode 100644 index 000000000..278bcbd1b --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Communicator.3 @@ -0,0 +1,27 @@ +.TH "Communicator" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Communicator \- +.SH SYNOPSIS +.br +.PP +Inherits \fBReactiveThread\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCommunicator\fP (int *__argc, char ***__argv)" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 30 of file comm.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Cooperative.3 b/trunk/paradiseo-peo/docs/man/man3/Cooperative.3 new file mode 100644 index 000000000..cdcc94eb2 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Cooperative.3 @@ -0,0 +1,48 @@ +.TH "Cooperative" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Cooperative \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP. +.PP +Inherited by \fBpeoAsyncIslandMig< EOT >\fP, and \fBpeoSyncIslandMig< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRunner\fP * \fBgetOwner\fP ()" +.br +.ti -1c +.RI "void \fBsetOwner\fP (\fBRunner\fP &__runner)" +.br +.ti -1c +.RI "virtual void \fBpack\fP ()=0" +.br +.ti -1c +.RI "virtual void \fBunpack\fP ()=0" +.br +.ti -1c +.RI "void \fBsend\fP (\fBCooperative\fP *__coop)" +.br +.ti -1c +.RI "virtual void \fBnotifySending\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBRunner\fP * \fBowner\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 32 of file cooperative.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Node.3 b/trunk/paradiseo-peo/docs/man/man3/Node.3 new file mode 100644 index 000000000..3751949ec --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Node.3 @@ -0,0 +1,34 @@ +.TH "Node" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Node \- +.SH SYNOPSIS +.br +.PP +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "RANK_ID \fBrk\fP" +.br +.ti -1c +.RI "std::string \fBname\fP" +.br +.ti -1c +.RI "unsigned \fBnum_workers\fP" +.br +.ti -1c +.RI "int \fBrk_sched\fP" +.br +.ti -1c +.RI "std::vector< RUNNER_ID > \fBid_run\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 35 of file schema.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/ReactiveThread.3 b/trunk/paradiseo-peo/docs/man/man3/ReactiveThread.3 new file mode 100644 index 000000000..f37d0cc96 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/ReactiveThread.3 @@ -0,0 +1,39 @@ +.TH "ReactiveThread" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ReactiveThread \- +.SH SYNOPSIS +.br +.PP +Inherits \fBThread\fP. +.PP +Inherited by \fBCommunicator\fP, and \fBWorker\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBReactiveThread\fP ()" +.br +.ti -1c +.RI "void \fBsleep\fP ()" +.br +.ti -1c +.RI "void \fBwakeUp\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "sem_t \fBsem\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 31 of file reac_thread.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/RingTopology.3 b/trunk/paradiseo-peo/docs/man/man3/RingTopology.3 new file mode 100644 index 000000000..1901aa6c4 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/RingTopology.3 @@ -0,0 +1,24 @@ +.TH "RingTopology" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +RingTopology \- +.SH SYNOPSIS +.br +.PP +Inherits \fBTopology\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetNeighbors\fP (\fBCooperative\fP *__mig, std::vector< \fBCooperative\fP * > &__from, std::vector< \fBCooperative\fP * > &__to)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 29 of file ring_topo.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Runner.3 b/trunk/paradiseo-peo/docs/man/man3/Runner.3 new file mode 100644 index 000000000..cd40c3bd9 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Runner.3 @@ -0,0 +1,60 @@ +.TH "Runner" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Runner \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP, and \fBThread\fP. +.PP +Inherited by \fBpeoEA< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRunner\fP ()" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.ti -1c +.RI "void \fBwaitStarting\fP ()" +.br +.ti -1c +.RI "bool \fBisLocal\fP ()" +.br +.ti -1c +.RI "void \fBterminate\fP ()" +.br +.ti -1c +.RI "virtual void \fBrun\fP ()=0" +.br +.ti -1c +.RI "RUNNER_ID \fBgetID\fP ()" +.br +.ti -1c +.RI "void \fBpackTermination\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingTermination\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "sem_t \fBsem_start\fP" +.br +.ti -1c +.RI "unsigned \fBid\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 34 of file runner.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/SEND_REQUEST.3 b/trunk/paradiseo-peo/docs/man/man3/SEND_REQUEST.3 new file mode 100644 index 000000000..a38197541 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/SEND_REQUEST.3 @@ -0,0 +1,28 @@ +.TH "SEND_REQUEST" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +SEND_REQUEST \- +.SH SYNOPSIS +.br +.PP +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBCommunicable\fP * \fBcomm\fP" +.br +.ti -1c +.RI "int \fBto\fP" +.br +.ti -1c +.RI "int \fBtag\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 39 of file send.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Service.3 b/trunk/paradiseo-peo/docs/man/man3/Service.3 new file mode 100644 index 000000000..9323a05c2 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Service.3 @@ -0,0 +1,69 @@ +.TH "Service" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Service \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP. +.PP +Inherited by \fBpeoPopEval< EOT >\fP, \fBpeoSyncMultiStart< EOT >\fP, and \fBpeoTransform< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetOwner\fP (\fBThread\fP &__owner)" +.br +.ti -1c +.RI "\fBThread\fP * \fBgetOwner\fP ()" +.br +.ti -1c +.RI "void \fBrequestResourceRequest\fP (unsigned __how_many=1)" +.br +.ti -1c +.RI "void \fBpackResourceRequest\fP ()" +.br +.ti -1c +.RI "virtual void \fBpackData\fP ()" +.br +.ti -1c +.RI "virtual void \fBunpackData\fP ()" +.br +.ti -1c +.RI "virtual void \fBexecute\fP ()" +.br +.ti -1c +.RI "virtual void \fBpackResult\fP ()" +.br +.ti -1c +.RI "virtual void \fBunpackResult\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingData\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingResourceRequest\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingAllResourceRequests\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBThread\fP * \fBowner\fP" +.br +.ti -1c +.RI "unsigned \fBnum_sent_rr\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 32 of file service.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Thread.3 b/trunk/paradiseo-peo/docs/man/man3/Thread.3 new file mode 100644 index 000000000..9ba528e1d --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Thread.3 @@ -0,0 +1,43 @@ +.TH "Thread" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Thread \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBReactiveThread\fP, and \fBRunner\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBThread\fP ()" +.br +.ti -1c +.RI "virtual \fB~Thread\fP ()" +.br +.ti -1c +.RI "virtual void \fBstart\fP ()=0" +.br +.ti -1c +.RI "void \fBsetActive\fP ()" +.br +.ti -1c +.RI "void \fBsetPassive\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBact\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 31 of file thread.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Topology.3 b/trunk/paradiseo-peo/docs/man/man3/Topology.3 new file mode 100644 index 000000000..110dae428 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Topology.3 @@ -0,0 +1,37 @@ +.TH "Topology" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Topology \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBRingTopology\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual \fB~Topology\fP ()" +.br +.ti -1c +.RI "void \fBadd\fP (\fBCooperative\fP &__mig)" +.br +.ti -1c +.RI "virtual void \fBsetNeighbors\fP (\fBCooperative\fP *__mig, std::vector< \fBCooperative\fP * > &__from, std::vector< \fBCooperative\fP * > &__to)=0" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "std::vector< \fBCooperative\fP * > \fBmig\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 31 of file topology.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/Worker.3 b/trunk/paradiseo-peo/docs/man/man3/Worker.3 new file mode 100644 index 000000000..240079954 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/Worker.3 @@ -0,0 +1,64 @@ +.TH "Worker" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Worker \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP, and \fBReactiveThread\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBWorker\fP ()" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.ti -1c +.RI "void \fBpackTaskDone\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingResult\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingTaskDone\fP ()" +.br +.ti -1c +.RI "void \fBsetSource\fP (int __rank)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "WORKER_ID \fBid\fP" +.br +.ti -1c +.RI "SERVICE_ID \fBserv_id\fP" +.br +.ti -1c +.RI "\fBService\fP * \fBserv\fP" +.br +.ti -1c +.RI "int \fBsrc\fP" +.br +.ti -1c +.RI "bool \fBtoto\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 33 of file worker.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peo.3 b/trunk/paradiseo-peo/docs/man/man3/peo.3 new file mode 100644 index 000000000..937d7c767 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peo.3 @@ -0,0 +1,43 @@ +.TH "peo" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peo \- +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBfinalize\fP ()" +.br +.ti -1c +.RI "void \fBinit\fP (int &__argc, char **&__argv)" +.br +.ti -1c +.RI "void \fBloadParameters\fP (int &__argc, char **&__argv)" +.br +.ti -1c +.RI "void \fBrun\fP ()" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "int * \fBargc\fP" +.br +.ti -1c +.RI "char *** \fBargv\fP" +.br +.ti -1c +.RI "int * \fBargc\fP" +.br +.ti -1c +.RI "char *** \fBargv\fP" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoAggEvalFunc.3 b/trunk/paradiseo-peo/docs/man/man3/peoAggEvalFunc.3 new file mode 100644 index 000000000..0a6df4b2a --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoAggEvalFunc.3 @@ -0,0 +1,31 @@ +.TH "peoAggEvalFunc" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoAggEvalFunc \- The \fBpeoAggEvalFunc\fP class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBpeoNoAggEvalFunc< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class peoAggEvalFunc< EOT >" +The \fBpeoAggEvalFunc\fP class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +The class inherits \fBpublic eoBF< EOT&, const typename EOT :: Fitness&, void >\fP thus requiring, for the derived classes, the creation of a function having the following signature: +.PP +void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness ); +.PP +The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +.PP +Definition at line 40 of file peoAggEvalFunc.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoAsyncIslandMig.3 b/trunk/paradiseo-peo/docs/man/man3/peoAsyncIslandMig.3 new file mode 100644 index 000000000..ef557938a --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoAsyncIslandMig.3 @@ -0,0 +1,174 @@ +.TH "peoAsyncIslandMig" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoAsyncIslandMig \- The \fBpeoAsyncIslandMig\fP class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBCooperative\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoAsyncIslandMig\fP (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, \fBTopology\fP &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)" +.br +.RI "\fIConstructor for the \fBpeoAsyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIFunction operator to be called as checkpoint for performing the migration step. \fP" +.ti -1c +.RI "void \fBpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBunpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBemigrate\fP ()" +.br +.ti -1c +.RI "void \fBimmigrate\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoContinue< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBTopology\fP & \fBtopology\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBsource\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBdestination\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBimm\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBem\fP" +.br +.ti -1c +.RI "std::queue< \fBCooperative\fP * > \fBcoop_em\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoAsyncIslandMig< EOT >" +The \fBpeoAsyncIslandMig\fP class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase. +.PP +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +.PP +\fBdo\fP { select( population, offsprings ); // select the offsprings from the current population transform( offsprings ); // crossover and mutation operators are applied on the selected offsprings evaluate( offsprings ); // evaluation step of the resulting offspring replace( population, offsprings ); // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy } \fBwhile\fP ( eaCheckpointContinue( population ) ); // checkpoint operators are applied on the current population, including the migration operator, if any specified +.PP +Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the \fB\fBRunner\fP\fP class (for example a \fBpeoEA\fP object represents a possible owner). A simple example is offered bellow: +.PP +.PD 0 +.IP "1." 4 +topological model to be followed when performing migrations: +.br + +.br + \fBRingTopology\fP migTopology; // a simple ring topological model - each island communicates with two other islands +.PP + +.IP "2." 4 +the continuation criterion, selection and replacement strategy etc. are defined: +.br + +.br + eoPop< EOT > population( POP_SIZE, popInitializer ); // population of individuals to be used for the evolutionary algorithm eoPeriodicContinue< EOT > migCont( MIG_FREQ ); // migrations occur periodically at MIG_FREQ iterations eoRandomSelect< EOT > migSelectStrategy; // selection strategy - in this case a random selection is applied eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); // number of individuals to be selected using the specified strategy eoPlusReplacement< EOT > migReplace; // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals peoAsyncIslandMig< EOT > asyncMigration( +.br + migCont, migSelect, migReplace, migTopology, +.br + population, population +.br + ); // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated +.PP + +.IP "3." 4 +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): +.br + +.br + ... eoGenContinue< EOT > eaCont( NUM_GEN ); // the evolutionary algorithm will stop after NUM_GEN generations eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // number of individuals to be selected using the specified strategy ... eaCheckpointContinue.add( asyncMigration ); // adding the migration operator as checkpoint element ... +.PP + +.IP "4." 4 +definition of an owner evolutionary algorithm (an object inheriting the \fB\fBRunner\fP\fP class): +.br + +.br + peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above asyncMigration.setOwner( eaAlg ); // setting the evolutionary algorithm as owner of the migration object eaAlg( population ); // applying the evolutionary algorithm on a given population +.PP +.PP +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. +.PP +The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +.PP +Definition at line 127 of file peoAsyncIslandMig.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoAsyncIslandMig\fP< EOT >::\fBpeoAsyncIslandMig\fP (eoContinue< EOT > & __cont, eoSelect< EOT > & __select, eoReplacement< EOT > & __replace, \fBTopology\fP & __topology, eoPop< EOT > & __source, eoPop< EOT > & __destination)" +.PP +Constructor for the \fBpeoAsyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the migration is performed or not; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; +.br +\fITopology&\fP __topology - topological model to be followed when performing migrations; +.br +\fIeoPop<\fP EOT >& __source - source population from which the emigrant individuals are selected; +.br +\fIeoPop<\fP EOT >& __destination - destination population in which the immigrant population are integrated. +.RE +.PP + +.PP +Definition at line 186 of file peoAsyncIslandMig.h. +.PP +References Topology::add(). +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoAsyncIslandMig\fP< EOT >::operator() ()" +.PP +Function operator to be called as checkpoint for performing the migration step. +.PP +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +.PP +Definition at line 263 of file peoAsyncIslandMig.h. +.PP +References peoAsyncIslandMig< EOT >::cont, peoAsyncIslandMig< EOT >::emigrate(), peoAsyncIslandMig< EOT >::immigrate(), and peoAsyncIslandMig< EOT >::source. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoEA.3 b/trunk/paradiseo-peo/docs/man/man3/peoEA.3 new file mode 100644 index 000000000..ba1f5ed49 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoEA.3 @@ -0,0 +1,109 @@ +.TH "peoEA" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoEA \- The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBRunner\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoEA\fP (eoContinue< EOT > &__cont, \fBpeoPopEval\fP< EOT > &__pop_eval, eoSelect< EOT > &__select, \fBpeoTransform\fP< EOT > &__trans, eoReplacement< EOT > &__replace)" +.br +.RI "\fIConstructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \fP" +.ti -1c +.RI "void \fBrun\fP ()" +.br +.RI "\fIEvolutionary algorithm function - a side effect of the fact that the class is derived from the \fB\fBRunner\fP\fP class, thus requiring the existence of a \fIrun\fP function, the algorithm being executed on a distinct thread. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIFunction operator for specifying the population to be associated with the algorithm. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoContinue< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "\fBpeoPopEval\fP< EOT > & \fBpop_eval\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "\fBpeoTransform\fP< EOT > & \fBtrans\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "eoPop< EOT > * \fBpop\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoEA< EOT >" +The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the EO framework, the \fBpeoEA\fP class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \fBpeoEA\fP object: +.PP +... eoPop< EOT > population( POP_SIZE, popInitializer ); // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual eoGenContinue< EOT > eaCont( NUM_GEN ); // number of generations for the evolutionary algorithm eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects peoSeqPopEval< EOT > eaPopEval( evalFunction ); // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE ); // the number of individuals to be selected for creating the offspring population eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE ); // transformation operator - crossover and mutation operators with their associated probabilities peoSeqTransform< EOT > eaTransform( transform ); // ParadisEO specific sequential operator - a parallel version may be specified in the same manner eoPlusReplacement< EOT > eaReplace; // replacement strategy - for integrating the offspring resulting individuals in the initial population peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); // ParadisEO evolutionary algorithm integrating the above defined objects eaAlg( population ); // specifying the initial population for the algorithm ... +.PP +Definition at line 69 of file peoEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoEA\fP< EOT >::\fBpeoEA\fP (eoContinue< EOT > & __cont, \fBpeoPopEval\fP< EOT > & __pop_eval, eoSelect< EOT > & __select, \fBpeoTransform\fP< EOT > & __trans, eoReplacement< EOT > & __replace)" +.PP +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +.PP +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not; +.br +\fIpeoPopEval<\fP EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals; +.br +\fIpeoTransform<\fP EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population; +.RE +.PP + +.PP +Definition at line 113 of file peoEA.h. +.PP +References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoEA\fP< EOT >::operator() (eoPop< EOT > & __pop)" +.PP +Function operator for specifying the population to be associated with the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - initial population of the algorithm, to be iteratively evolved; +.RE +.PP + +.PP +Definition at line 129 of file peoEA.h. +.PP +References peoEA< EOT >::pop. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoNoAggEvalFunc.3 b/trunk/paradiseo-peo/docs/man/man3/peoNoAggEvalFunc.3 new file mode 100644 index 000000000..21d9aae6c --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoNoAggEvalFunc.3 @@ -0,0 +1,35 @@ +.TH "peoNoAggEvalFunc" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoNoAggEvalFunc \- The \fBpeoNoAggEvalFunc\fP class does nothing more than an association between a fitness value and a specified individual. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoAggEvalFunc< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (EOT &__sol, const typename EOT::Fitness &__fit)" +.br +.RI "\fIOperator which sets as fitness the \fB__fit\fP value for the \fB__sol\fP individual. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoNoAggEvalFunc< EOT >" +The \fBpeoNoAggEvalFunc\fP class does nothing more than an association between a fitness value and a specified individual. + +The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. +.PP +Definition at line 34 of file peoNoAggEvalFunc.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoParaPopEval.3 b/trunk/paradiseo-peo/docs/man/man3/peoParaPopEval.3 new file mode 100644 index 000000000..c527e6746 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoParaPopEval.3 @@ -0,0 +1,217 @@ +.TH "peoParaPopEval" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParaPopEval \- The \fBpeoParaPopEval\fP represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoPopEval< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoParaPopEval\fP (eoEvalFunc< EOT > &__eval_func)" +.br +.RI "\fIConstructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. \fP" +.ti -1c +.RI "\fBpeoParaPopEval\fP (const std::vector< eoEvalFunc< EOT > * > &__funcs, \fBpeoAggEvalFunc\fP< EOT > &__merge_eval)" +.br +.RI "\fIConstructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIOperator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. \fP" +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.RI "\fIAuxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "const std::vector< eoEvalFunc< EOT > * > & \fBfuncs\fP" +.br +.ti -1c +.RI "std::vector< eoEvalFunc< EOT > * > \fBone_func\fP" +.br +.ti -1c +.RI "\fBpeoAggEvalFunc\fP< EOT > & \fBmerge_eval\fP" +.br +.ti -1c +.RI "\fBpeoNoAggEvalFunc\fP< EOT > \fBno_merge_eval\fP" +.br +.ti -1c +.RI "std::queue< EOT * > \fBtasks\fP" +.br +.ti -1c +.RI "std::map< EOT *, std::pair< unsigned, unsigned > > \fBprogression\fP" +.br +.ti -1c +.RI "unsigned \fBnum_func\fP" +.br +.ti -1c +.RI "EOT \fBsol\fP" +.br +.ti -1c +.RI "EOT * \fBad_sol\fP" +.br +.ti -1c +.RI "unsigned \fBtotal\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoParaPopEval< EOT >" +The \fBpeoParaPopEval\fP represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. +.PP +Definition at line 41 of file peoParaPopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoParaPopEval\fP< EOT >::\fBpeoParaPopEval\fP (eoEvalFunc< EOT > & __eval_func)" +.PP +Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. +.PP +\fBParameters:\fP +.RS 4 +\fIeoEvalFunc<\fP EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population +.RE +.PP + +.PP +Definition at line 117 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::one_func. +.SS "template \fBpeoParaPopEval\fP< EOT >::\fBpeoParaPopEval\fP (const std::vector< eoEvalFunc< EOT > * > & __funcs, \fBpeoAggEvalFunc\fP< EOT > & __merge_eval)" +.PP +Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors; +.br +\fIpeoAggEvalFunc<\fP EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values. +.RE +.PP + +.PP +Definition at line 126 of file peoParaPopEval.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoParaPopEval\fP< EOT >::operator() (eoPop< EOT > & __pop)\fC [virtual]\fP" +.PP +Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor. +.RE +.PP + +.PP +Implements \fBpeoPopEval< EOT >\fP. +.PP +Definition at line 137 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::funcs, peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks. +.SS "template void \fBpeoParaPopEval\fP< EOT >::packData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 158 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks. +.SS "template void \fBpeoParaPopEval\fP< EOT >::unpackData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 172 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, peoParaPopEval< EOT >::num_func, and peoParaPopEval< EOT >::sol. +.SS "template void \fBpeoParaPopEval\fP< EOT >::packResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 189 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, and peoParaPopEval< EOT >::sol. +.SS "template void \fBpeoParaPopEval\fP< EOT >::unpackResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 198 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, Service::getOwner(), peoParaPopEval< EOT >::merge_eval, peoParaPopEval< EOT >::progression, Communicable::resume(), Thread::setActive(), and peoParaPopEval< EOT >::total. +.SS "template void \fBpeoParaPopEval\fP< EOT >::notifySendingData ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 229 of file peoParaPopEval.h. +.SS "template void \fBpeoParaPopEval\fP< EOT >::notifySendingAllResourceRequests ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 234 of file peoParaPopEval.h. +.PP +References Service::getOwner(), and Thread::setPassive(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoParaSGATransform.3 b/trunk/paradiseo-peo/docs/man/man3/peoParaSGATransform.3 new file mode 100644 index 000000000..724bc0d0b --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoParaSGATransform.3 @@ -0,0 +1,83 @@ +.TH "peoParaSGATransform" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParaSGATransform \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoTransform< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoParaSGATransform\fP (eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)" +.br +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoQuadOp< EOT > & \fBcross\fP" +.br +.ti -1c +.RI "double \fBcross_rate\fP" +.br +.ti -1c +.RI "eoMonOp< EOT > & \fBmut\fP" +.br +.ti -1c +.RI "double \fBmut_rate\fP" +.br +.ti -1c +.RI "unsigned \fBidx\fP" +.br +.ti -1c +.RI "eoPop< EOT > * \fBpop\fP" +.br +.ti -1c +.RI "EOT \fBfather\fP" +.br +.ti -1c +.RI "EOT \fBmother\fP" +.br +.ti -1c +.RI "unsigned \fBnum_term\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoParaSGATransform< EOT >" + +.PP +Definition at line 36 of file peoParaSGATransform.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoPopEval.3 b/trunk/paradiseo-peo/docs/man/man3/peoPopEval.3 new file mode 100644 index 000000000..6783a8fd6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoPopEval.3 @@ -0,0 +1,37 @@ +.TH "peoPopEval" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoPopEval \- The \fB\fBpeoPopEval\fP\fP class provides the interface for constructing ParadisEO specific evaluation functors. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP. +.PP +Inherited by \fBpeoParaPopEval< EOT >\fP, and \fBpeoSeqPopEval< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBoperator()\fP (eoPop< EOT > &__pop)=0" +.br +.RI "\fIInterface function providing the signature for constructing an evaluation functor. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoPopEval< EOT >" +The \fB\fBpeoPopEval\fP\fP class provides the interface for constructing ParadisEO specific evaluation functors. + +The derived classes may be used as wrappers for \fBEO\fP-derived evaluation functors. In order to have an example, please refer to the implementation of the \fB\fBpeoSeqPopEval\fP\fP and \fB\fBpeoParaPopEval\fP\fP classes. +.PP +Definition at line 34 of file peoPopEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoSeqPopEval.3 b/trunk/paradiseo-peo/docs/man/man3/peoSeqPopEval.3 new file mode 100644 index 000000000..faf3c04c6 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoSeqPopEval.3 @@ -0,0 +1,78 @@ +.TH "peoSeqPopEval" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSeqPopEval \- The \fBpeoSeqPopEval\fP class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an \fBeoEvalFunc< EOT >\fP-derived class as evaluation functor. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoPopEval< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSeqPopEval\fP (eoEvalFunc< EOT > &__eval)" +.br +.RI "\fIConstructor function - it only sets an internal reference to point to the specified evaluation object. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIOperator for evaluating all the individuals of a given population - in a sequential iterative manner. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoEvalFunc< EOT > & \fBeval\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSeqPopEval< EOT >" +The \fBpeoSeqPopEval\fP class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an \fBeoEvalFunc< EOT >\fP-derived class as evaluation functor. + +The specified EO evaluation object is applyied in an iterative manner to each individual of a specified population. +.PP +Definition at line 36 of file peoSeqPopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSeqPopEval\fP< EOT >::\fBpeoSeqPopEval\fP (eoEvalFunc< EOT > & __eval)" +.PP +Constructor function - it only sets an internal reference to point to the specified evaluation object. +.PP +\fBParameters:\fP +.RS 4 +\fIeoEvalFunc<\fP EOT >& __eval - evaluation object to be applied for each individual of a specified population +.RE +.PP + +.PP +Definition at line 56 of file peoSeqPopEval.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSeqPopEval\fP< EOT >::operator() (eoPop< EOT > & __pop)\fC [virtual]\fP" +.PP +Operator for evaluating all the individuals of a given population - in a sequential iterative manner. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be evaluated. +.RE +.PP + +.PP +Implements \fBpeoPopEval< EOT >\fP. +.PP +Definition at line 61 of file peoSeqPopEval.h. +.PP +References peoSeqPopEval< EOT >::eval. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoSeqTransform.3 b/trunk/paradiseo-peo/docs/man/man3/peoSeqTransform.3 new file mode 100644 index 000000000..5e534784b --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoSeqTransform.3 @@ -0,0 +1,96 @@ +.TH "peoSeqTransform" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSeqTransform \- The \fBpeoSeqTransform\fP represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoTransform< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSeqTransform\fP (eoTransform< EOT > &__trans)" +.br +.RI "\fIConstructor function - sets an internal reference towards the specified EO-derived transform object. \fP" +.ti -1c +.RI "void \fBoperator()\fP (eoPop< EOT > &__pop)" +.br +.RI "\fIOperator for applying the specified transform operators on each individual of the given population. \fP" +.ti -1c +.RI "virtual void \fBpackData\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBunpackData\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBexecute\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBpackResult\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBunpackResult\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoTransform< EOT > & \fBtrans\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSeqTransform< EOT >" +The \fBpeoSeqTransform\fP represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. + +A minimal set of interface functions is also provided for creating the link with the parallel architecture of the ParadisEO framework. +.PP +Definition at line 35 of file peoSeqTransform.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSeqTransform\fP< EOT >::\fBpeoSeqTransform\fP (eoTransform< EOT > & __trans)" +.PP +Constructor function - sets an internal reference towards the specified EO-derived transform object. +.PP +\fBParameters:\fP +.RS 4 +\fIeoTransform<\fP EOT >& __trans - EO-derived transform object including crossover and mutation operators. +.RE +.PP + +.PP +Definition at line 70 of file peoSeqTransform.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSeqTransform\fP< EOT >::operator() (eoPop< EOT > & __pop)" +.PP +Operator for applying the specified transform operators on each individual of the given population. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be transformed by applying the crossover and mutation operators. +.RE +.PP + +.PP +Definition at line 75 of file peoSeqTransform.h. +.PP +References peoSeqTransform< EOT >::trans. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoSyncIslandMig.3 b/trunk/paradiseo-peo/docs/man/man3/peoSyncIslandMig.3 new file mode 100644 index 000000000..7f7c638ef --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoSyncIslandMig.3 @@ -0,0 +1,181 @@ +.TH "peoSyncIslandMig" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSyncIslandMig \- The \fBpeoSyncIslandMig\fP class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBCooperative\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSyncIslandMig\fP (unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, \fBTopology\fP &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)" +.br +.RI "\fIConstructor for the \fBpeoSyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIFunction operator to be called as checkpoint for performing the migration step. \fP" +.ti -1c +.RI "void \fBpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBunpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBnotifySending\fP ()" +.br +.RI "\fIAuxiliary function dealing with migration notifications. There is no need to explicitly call the function. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBemigrate\fP ()" +.br +.ti -1c +.RI "void \fBimmigrate\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoPeriodicContinue< EOT > \fBcont\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBTopology\fP & \fBtopology\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBsource\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBdestination\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBimm\fP" +.br +.ti -1c +.RI "std::queue< eoPop< EOT > > \fBem\fP" +.br +.ti -1c +.RI "std::queue< \fBCooperative\fP * > \fBcoop_em\fP" +.br +.ti -1c +.RI "sem_t \fBsync\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSyncIslandMig< EOT >" +The \fBpeoSyncIslandMig\fP class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals. +.PP +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +.PP +\fBdo\fP { select( population, offsprings ); // select the offsprings from the current population transform( offsprings ); // crossover and mutation operators are applied on the selected offsprings evaluate( offsprings ); // evaluation step of the resulting offspring replace( population, offsprings ); // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy } \fBwhile\fP ( eaCheckpointContinue( population ) ); // checkpoint operators are applied on the current population, including the migration operator, if any specified +.PP +Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the \fB\fBRunner\fP\fP class (for example a \fBpeoEA\fP object represents a possible owner). A simple example is offered bellow: +.PP +.PD 0 +.IP "1." 4 +topological model to be followed when performing migrations: +.br + +.br + \fBRingTopology\fP migTopology; // a simple ring topological model - each island communicates with two other islands +.PP + +.IP "2." 4 +the continuation criterion, selection and replacement strategy etc. are defined: +.br + +.br + eoPop< EOT > population( POP_SIZE, popInitializer ); // population of individuals to be used for the evolutionary algorithm eoRandomSelect< EOT > migSelectStrategy; // selection strategy - in this case a random selection is applied eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); // number of individuals to be selected using the specified strategy eoPlusReplacement< EOT > migReplace; // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals peoSyncIslandMig< EOT > syncMigration( +.br + MIG_FREQ, migSelect, migReplace, migTopology, +.br + population, population +.br + ); // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated +.PP + +.IP "3." 4 +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): +.br + +.br + ... eoGenContinue< EOT > eaCont( NUM_GEN ); // the evolutionary algorithm will stop after NUM_GEN generations eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // number of individuals to be selected using the specified strategy ... eaCheckpointContinue.add( syncMigration ); // adding the migration operator as checkpoint element ... +.PP + +.IP "4." 4 +definition of an owner evolutionary algorithm (an object inheriting the \fB\fBRunner\fP\fP class): +.br + +.br + peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above syncMigration.setOwner( eaAlg ); // setting the evolutionary algorithm as owner of the migration object eaAlg( population ); // applying the evolutionary algorithm on a given population +.PP +.PP +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. +.PP +The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +.PP +Definition at line 129 of file peoSyncIslandMig.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSyncIslandMig\fP< EOT >::\fBpeoSyncIslandMig\fP (unsigned __frequency, eoSelect< EOT > & __select, eoReplacement< EOT > & __replace, \fBTopology\fP & __topology, eoPop< EOT > & __source, eoPop< EOT > & __destination)" +.PP +Constructor for the \fBpeoSyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +.PP +\fBParameters:\fP +.RS 4 +\fIunsigned\fP __frequency - frequency of the migrations - the migrations occur periodically; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; +.br +\fITopology&\fP __topology - topological model to be followed when performing migrations; +.br +\fIeoPop<\fP EOT >& __source - source population from which the emigrant individuals are selected; +.br +\fIeoPop<\fP EOT >& __destination - destination population in which the immigrant population are integrated. +.RE +.PP + +.PP +Definition at line 193 of file peoSyncIslandMig.h. +.PP +References Topology::add(), and peoSyncIslandMig< EOT >::sync. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSyncIslandMig\fP< EOT >::operator() ()" +.PP +Function operator to be called as checkpoint for performing the migration step. +.PP +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +.PP +Definition at line 267 of file peoSyncIslandMig.h. +.PP +References peoSyncIslandMig< EOT >::cont, peoSyncIslandMig< EOT >::emigrate(), Cooperative::getOwner(), peoSyncIslandMig< EOT >::immigrate(), Thread::setActive(), peoSyncIslandMig< EOT >::source, Communicable::stop(), and peoSyncIslandMig< EOT >::sync. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoSyncMultiStart.3 b/trunk/paradiseo-peo/docs/man/man3/peoSyncMultiStart.3 new file mode 100644 index 000000000..815ae0398 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoSyncMultiStart.3 @@ -0,0 +1,209 @@ +.TH "peoSyncMultiStart" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSyncMultiStart \- The \fBpeoSyncMultiStart\fP class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSyncMultiStart\fP (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop)" +.br +.RI "\fIConstructor function - several simple parameters are required for defining the characteristics of the multi-start model. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIOperator which synchronously executes the specified algorithm on the individuals selected from the initial population. \fP" +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.RI "\fIAuxiliary function for actually executing the specified algorithm on one assigned individual. \fP" +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \fP" +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "eoContinue< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "eoSelect< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "eoReplacement< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "moAlgo< EOT > & \fBls\fP" +.br +.ti -1c +.RI "eoPop< EOT > & \fBpop\fP" +.br +.ti -1c +.RI "eoPop< EOT > \fBsel\fP" +.br +.ti -1c +.RI "eoPop< EOT > \fBimpr_sel\fP" +.br +.ti -1c +.RI "EOT \fBsol\fP" +.br +.ti -1c +.RI "unsigned \fBidx\fP" +.br +.ti -1c +.RI "unsigned \fBnum_term\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSyncMultiStart< EOT >" +The \fBpeoSyncMultiStart\fP class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A \fBpeoSyncMultiStart\fP object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. +.PP +Definition at line 51 of file peoSyncMultiStart.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSyncMultiStart\fP< EOT >::\fBpeoSyncMultiStart\fP (eoContinue< EOT > & __cont, eoSelect< EOT > & __select, eoReplacement< EOT > & __replace, moAlgo< EOT > & __ls, eoPop< EOT > & __pop)" +.PP +Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - defined for including further functionality - no semantics associated at this time; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population; +.br +\fImoAlgo<\fP EOT >& __ls - algorithm to be applied on each of the selected individuals - a \fBmoAlgo< EOT >\fP-derived object must be specified; +.br +\fIeoPop<\fP EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm. +.RE +.PP + +.PP +Definition at line 121 of file peoSyncMultiStart.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::operator() ()" +.PP +Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. +.PP +There is no need to explicitly call the operator - automatically called as checkpoint operator. +.PP +Definition at line 176 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::idx, peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, Service::requestResourceRequest(), peoSyncMultiStart< EOT >::sel, peoSyncMultiStart< EOT >::select, and Communicable::stop(). +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::packData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 135 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::idx, and peoSyncMultiStart< EOT >::sel. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::unpackData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 141 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::execute ()\fC [virtual]\fP" +.PP +Auxiliary function for actually executing the specified algorithm on one assigned individual. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 147 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::ls, and peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::packResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 153 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::unpackResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 159 of file peoSyncMultiStart.h. +.PP +References Service::getOwner(), peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, peoSyncMultiStart< EOT >::replace, Communicable::resume(), peoSyncMultiStart< EOT >::sel, Thread::setActive(), and peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::notifySendingData ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 187 of file peoSyncMultiStart.h. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::notifySendingAllResourceRequests ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 192 of file peoSyncMultiStart.h. +.PP +References Service::getOwner(), and Thread::setPassive(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/man/man3/peoTransform.3 b/trunk/paradiseo-peo/docs/man/man3/peoTransform.3 new file mode 100644 index 000000000..a641435c7 --- /dev/null +++ b/trunk/paradiseo-peo/docs/man/man3/peoTransform.3 @@ -0,0 +1,27 @@ +.TH "peoTransform" 3 "20 Dec 2006" "ParadisEO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoTransform \- The \fBpeoTransform\fP class acts only as an interface for creating transform operators - for an example please refer to the \fB\fBpeoSeqTransform\fP\fP and the \fB\fBpeoParaSGATransform\fP\fP classes. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP. +.PP +Inherited by \fBpeoParaSGATransform< EOT >\fP, and \fBpeoSeqTransform< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class peoTransform< EOT >" +The \fBpeoTransform\fP class acts only as an interface for creating transform operators - for an example please refer to the \fB\fBpeoSeqTransform\fP\fP and the \fB\fBpeoParaSGATransform\fP\fP classes. +.PP +Definition at line 35 of file peoTransform.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO from the source code. diff --git a/trunk/paradiseo-peo/docs/paradiseo.cfg b/trunk/paradiseo-peo/docs/paradiseo.cfg new file mode 100755 index 000000000..818338e30 --- /dev/null +++ b/trunk/paradiseo-peo/docs/paradiseo.cfg @@ -0,0 +1,1119 @@ +# Doxyfile 1.3.6 + +# 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 +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = ParadisEO + +# 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 = 0.1 + +# 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 = + +# 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: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# 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 = + +# 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 = NO + +# 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. It is allowed to use relative paths in the argument list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_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 = NO + +# 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 the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_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 DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = 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 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 + +# 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 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 + +#--------------------------------------------------------------------------- +# 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 + +# 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 = NO + +# 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 = NO + +# 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 +# users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# 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_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 + +#--------------------------------------------------------------------------- +# 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 = YES + +# 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 = YES + +# 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 + +# 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. + +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 = .. + +# 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 + +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 = ../src/obsolete + +# 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. + +EXCLUDE_PATTERNS = + +# 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. + +INPUT_FILTER = + +# 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 (the default) +# 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 (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# 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 = peo + +#--------------------------------------------------------------------------- +# 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 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 compressed 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 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 + +# 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 + +# If the GENERATE_TREEVIEW tag is set to YES, 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. + +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 + +#--------------------------------------------------------------------------- +# 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_PREDEFINED 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. + +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 = + +# 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 = ParadisEO.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 + +# 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 = NO + +# 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 = 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 = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# 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 tags 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 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 + +# 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 on 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 MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# 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 a graph may be further truncated if the graph's image dimensions are +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). +# If 0 is used for the depth value (the default), the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# 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 + +#--------------------------------------------------------------------------- +# Configuration::additions 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/trunk/paradiseo-peo/indentSources b/trunk/paradiseo-peo/indentSources new file mode 100755 index 000000000..1904052a0 --- /dev/null +++ b/trunk/paradiseo-peo/indentSources @@ -0,0 +1,20 @@ +indent \ +-kr \ +--blank-lines-after-declarations \ +--blank-lines-after-procedures \ +--braces-on-if-line \ +--braces-on-struct-decl-line \ +--no-space-after-function-call-names \ +--space-after-parentheses \ +--space-after-for \ +--space-after-if \ +--space-after-while \ +--struct-brace-indentation1 \ +--space-special-semicolon \ +--dont-break-procedure-type \ +--dont-break-function-decl-args \ +--parameter-indentation1 \ +--use-tabs \ +--tab-size8 \ +--preserve-mtime \ +$1 diff --git a/trunk/paradiseo-peo/install-sh b/trunk/paradiseo-peo/install-sh new file mode 100755 index 000000000..1a8353401 --- /dev/null +++ b/trunk/paradiseo-peo/install-sh @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-02-02.21 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/trunk/paradiseo-peo/ltmain.sh b/trunk/paradiseo-peo/ltmain.sh new file mode 100755 index 000000000..9be0eb1c3 --- /dev/null +++ b/trunk/paradiseo-peo/ltmain.sh @@ -0,0 +1,6496 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.16 +TIMESTAMP=" (1.1220.2.235 2005/04/25 18:13:26)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +quote_scanset='[[~#^*{};<>?'"'"' ]' + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$my_xdir"; then + exit $status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) prevopt="--tag" prev=tag ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case "$arg_mode" in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qlibobj="\"$qlibobj\"" ;; + esac + if test "X$libobj" != "X$qlibobj"; then + $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + exit $EXIT_FAILURE + fi + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework) + compiler_flags="$compiler_flags $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=darwin_framework + compiler_flags="$compiler_flags $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit $EXIT_FAILURE + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5* ) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + cwrappersource=`$echo ${objdir}/lt-${outputname}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +#define DIR_SEPARATOR '/' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +#define HAVE_DOS_BASED_FILE_SYSTEM +#ifndef DIR_SEPARATOR_2 +#define DIR_SEPARATOR_2 '\\' +#endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask + else + umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "----------------------------------------------------------------------" + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "----------------------------------------------------------------------" + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/trunk/paradiseo-peo/missing b/trunk/paradiseo-peo/missing new file mode 100755 index 000000000..09edd8844 --- /dev/null +++ b/trunk/paradiseo-peo/missing @@ -0,0 +1,357 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-02-08.22 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/trunk/paradiseo-peo/mkinstalldirs b/trunk/paradiseo-peo/mkinstalldirs new file mode 100755 index 000000000..8ab885ec9 --- /dev/null +++ b/trunk/paradiseo-peo/mkinstalldirs @@ -0,0 +1,99 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) # -h for help + echo "${usage}" 1>&2; exit 0 ;; + -m ) # -m PERM arg + shift + test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } + dirmode="${1}" + shift ;; + -- ) shift; break ;; # stop option processing + -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option + * ) break ;; # first non-opt arg + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in +0) exit 0 ;; +esac + +case $dirmode in +'') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi ;; +*) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 3 +# End: +# mkinstalldirs ends here diff --git a/trunk/paradiseo-peo/src/Makefile.am b/trunk/paradiseo-peo/src/Makefile.am new file mode 100755 index 000000000..3175664ff --- /dev/null +++ b/trunk/paradiseo-peo/src/Makefile.am @@ -0,0 +1,72 @@ +# Process this file with automake to produce Makefile.in + +CXX=g++ + +INCLUDES = \ + -I$(EO_DIR)/src + +AM_CXXFLAGS =\ + -Wall\ + -g + +SUBDIRS= rmc + +lib_LIBRARIES = libparadiseo.a + +#bin_PROGRAMS = peodeploy essai + +## Shared sources + +shared_SOURCES = \ + paradiseo \ + paradiseo.h \ + core/peo_init.h \ + core/peo_init.cpp \ + core/peo_fin.h \ + core/peo_fin.cpp \ + core/peo_run.h \ + core/peo_run.cpp \ + core/peo_param.h \ + core/peo_param.cpp \ + core/peo_debug.h \ + core/peo_debug.cpp \ + core/thread.h \ + core/thread.cpp \ + core/reac_thread.h \ + core/reac_thread.cpp \ + core/service.h \ + core/service.cpp \ + core/runner.h \ + core/runner.cpp \ + core/communicable.h \ + core/communicable.cpp \ + core/cooperative.h \ + core/rmc.h \ + core/messaging.h \ + core/topology.h \ + core/topology.cpp \ + core/ring_topo.h \ + core/ring_topo.cpp \ + core/eoPop_comm.h \ + peoEA.h \ + peoTransform.h \ + peoSeqTransform.h \ + peoParaTransform.h \ + peoPopEval.h\ + peoSeqPopEval.h \ + peoAggEvalFunc.h \ + peoParaPopEval.h + +## Main library + +libparadiseo_a_SOURCES = \ + $(shared_SOURCES) + +#libparadiseo_a_LIBADD = + +## Miscellaneous Tools + +# peodeploy + + + diff --git a/trunk/paradiseo-peo/src/Makefile.in b/trunk/paradiseo-peo/src/Makefile.in new file mode 100755 index 000000000..5aa1f8996 --- /dev/null +++ b/trunk/paradiseo-peo/src/Makefile.in @@ -0,0 +1,777 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Process this file with automake to produce Makefile.in + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" +libLIBRARIES_INSTALL = $(INSTALL_DATA) +LIBRARIES = $(lib_LIBRARIES) +AR = ar +ARFLAGS = cru +libparadiseo_a_AR = $(AR) $(ARFLAGS) +libparadiseo_a_LIBADD = +am__objects_1 = peo_init.$(OBJEXT) peo_fin.$(OBJEXT) peo_run.$(OBJEXT) \ + peo_param.$(OBJEXT) peo_debug.$(OBJEXT) thread.$(OBJEXT) \ + reac_thread.$(OBJEXT) service.$(OBJEXT) runner.$(OBJEXT) \ + communicable.$(OBJEXT) topology.$(OBJEXT) ring_topo.$(OBJEXT) +am_libparadiseo_a_OBJECTS = $(am__objects_1) +libparadiseo_a_OBJECTS = $(am_libparadiseo_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libparadiseo_a_SOURCES) +DIST_SOURCES = $(libparadiseo_a_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = g++ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = \ + -I$(EO_DIR)/src + +AM_CXXFLAGS = \ + -Wall\ + -g + +SUBDIRS = rmc +lib_LIBRARIES = libparadiseo.a + +#bin_PROGRAMS = peodeploy essai +shared_SOURCES = \ + paradiseo \ + paradiseo.h \ + core/peo_init.h \ + core/peo_init.cpp \ + core/peo_fin.h \ + core/peo_fin.cpp \ + core/peo_run.h \ + core/peo_run.cpp \ + core/peo_param.h \ + core/peo_param.cpp \ + core/peo_debug.h \ + core/peo_debug.cpp \ + core/thread.h \ + core/thread.cpp \ + core/reac_thread.h \ + core/reac_thread.cpp \ + core/service.h \ + core/service.cpp \ + core/runner.h \ + core/runner.cpp \ + core/communicable.h \ + core/communicable.cpp \ + core/cooperative.h \ + core/rmc.h \ + core/messaging.h \ + core/topology.h \ + core/topology.cpp \ + core/ring_topo.h \ + core/ring_topo.cpp \ + core/eoPop_comm.h \ + peoEA.h \ + peoTransform.h \ + peoSeqTransform.h \ + peoParaTransform.h \ + peoPopEval.h\ + peoSeqPopEval.h \ + peoAggEvalFunc.h \ + peoParaPopEval.h + +libparadiseo_a_SOURCES = \ + $(shared_SOURCES) + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p=$(am__strip_dir) \ + echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +libparadiseo.a: $(libparadiseo_a_OBJECTS) $(libparadiseo_a_DEPENDENCIES) + -rm -f libparadiseo.a + $(libparadiseo_a_AR) libparadiseo.a $(libparadiseo_a_OBJECTS) $(libparadiseo_a_LIBADD) + $(RANLIB) libparadiseo.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/communicable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_fin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_param.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peo_run.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reac_thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ring_topo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +peo_init.o: core/peo_init.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_init.o -MD -MP -MF "$(DEPDIR)/peo_init.Tpo" -c -o peo_init.o `test -f 'core/peo_init.cpp' || echo '$(srcdir)/'`core/peo_init.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_init.Tpo" "$(DEPDIR)/peo_init.Po"; else rm -f "$(DEPDIR)/peo_init.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_init.cpp' object='peo_init.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_init.o `test -f 'core/peo_init.cpp' || echo '$(srcdir)/'`core/peo_init.cpp + +peo_init.obj: core/peo_init.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_init.obj -MD -MP -MF "$(DEPDIR)/peo_init.Tpo" -c -o peo_init.obj `if test -f 'core/peo_init.cpp'; then $(CYGPATH_W) 'core/peo_init.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_init.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_init.Tpo" "$(DEPDIR)/peo_init.Po"; else rm -f "$(DEPDIR)/peo_init.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_init.cpp' object='peo_init.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_init.obj `if test -f 'core/peo_init.cpp'; then $(CYGPATH_W) 'core/peo_init.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_init.cpp'; fi` + +peo_fin.o: core/peo_fin.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_fin.o -MD -MP -MF "$(DEPDIR)/peo_fin.Tpo" -c -o peo_fin.o `test -f 'core/peo_fin.cpp' || echo '$(srcdir)/'`core/peo_fin.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_fin.Tpo" "$(DEPDIR)/peo_fin.Po"; else rm -f "$(DEPDIR)/peo_fin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_fin.cpp' object='peo_fin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_fin.o `test -f 'core/peo_fin.cpp' || echo '$(srcdir)/'`core/peo_fin.cpp + +peo_fin.obj: core/peo_fin.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_fin.obj -MD -MP -MF "$(DEPDIR)/peo_fin.Tpo" -c -o peo_fin.obj `if test -f 'core/peo_fin.cpp'; then $(CYGPATH_W) 'core/peo_fin.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_fin.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_fin.Tpo" "$(DEPDIR)/peo_fin.Po"; else rm -f "$(DEPDIR)/peo_fin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_fin.cpp' object='peo_fin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_fin.obj `if test -f 'core/peo_fin.cpp'; then $(CYGPATH_W) 'core/peo_fin.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_fin.cpp'; fi` + +peo_run.o: core/peo_run.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_run.o -MD -MP -MF "$(DEPDIR)/peo_run.Tpo" -c -o peo_run.o `test -f 'core/peo_run.cpp' || echo '$(srcdir)/'`core/peo_run.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_run.Tpo" "$(DEPDIR)/peo_run.Po"; else rm -f "$(DEPDIR)/peo_run.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_run.cpp' object='peo_run.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_run.o `test -f 'core/peo_run.cpp' || echo '$(srcdir)/'`core/peo_run.cpp + +peo_run.obj: core/peo_run.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_run.obj -MD -MP -MF "$(DEPDIR)/peo_run.Tpo" -c -o peo_run.obj `if test -f 'core/peo_run.cpp'; then $(CYGPATH_W) 'core/peo_run.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_run.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_run.Tpo" "$(DEPDIR)/peo_run.Po"; else rm -f "$(DEPDIR)/peo_run.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_run.cpp' object='peo_run.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_run.obj `if test -f 'core/peo_run.cpp'; then $(CYGPATH_W) 'core/peo_run.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_run.cpp'; fi` + +peo_param.o: core/peo_param.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_param.o -MD -MP -MF "$(DEPDIR)/peo_param.Tpo" -c -o peo_param.o `test -f 'core/peo_param.cpp' || echo '$(srcdir)/'`core/peo_param.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_param.Tpo" "$(DEPDIR)/peo_param.Po"; else rm -f "$(DEPDIR)/peo_param.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_param.cpp' object='peo_param.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_param.o `test -f 'core/peo_param.cpp' || echo '$(srcdir)/'`core/peo_param.cpp + +peo_param.obj: core/peo_param.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_param.obj -MD -MP -MF "$(DEPDIR)/peo_param.Tpo" -c -o peo_param.obj `if test -f 'core/peo_param.cpp'; then $(CYGPATH_W) 'core/peo_param.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_param.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_param.Tpo" "$(DEPDIR)/peo_param.Po"; else rm -f "$(DEPDIR)/peo_param.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_param.cpp' object='peo_param.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_param.obj `if test -f 'core/peo_param.cpp'; then $(CYGPATH_W) 'core/peo_param.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_param.cpp'; fi` + +peo_debug.o: core/peo_debug.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_debug.o -MD -MP -MF "$(DEPDIR)/peo_debug.Tpo" -c -o peo_debug.o `test -f 'core/peo_debug.cpp' || echo '$(srcdir)/'`core/peo_debug.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_debug.Tpo" "$(DEPDIR)/peo_debug.Po"; else rm -f "$(DEPDIR)/peo_debug.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_debug.cpp' object='peo_debug.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_debug.o `test -f 'core/peo_debug.cpp' || echo '$(srcdir)/'`core/peo_debug.cpp + +peo_debug.obj: core/peo_debug.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT peo_debug.obj -MD -MP -MF "$(DEPDIR)/peo_debug.Tpo" -c -o peo_debug.obj `if test -f 'core/peo_debug.cpp'; then $(CYGPATH_W) 'core/peo_debug.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_debug.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/peo_debug.Tpo" "$(DEPDIR)/peo_debug.Po"; else rm -f "$(DEPDIR)/peo_debug.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/peo_debug.cpp' object='peo_debug.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o peo_debug.obj `if test -f 'core/peo_debug.cpp'; then $(CYGPATH_W) 'core/peo_debug.cpp'; else $(CYGPATH_W) '$(srcdir)/core/peo_debug.cpp'; fi` + +thread.o: core/thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT thread.o -MD -MP -MF "$(DEPDIR)/thread.Tpo" -c -o thread.o `test -f 'core/thread.cpp' || echo '$(srcdir)/'`core/thread.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/thread.Tpo" "$(DEPDIR)/thread.Po"; else rm -f "$(DEPDIR)/thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/thread.cpp' object='thread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o thread.o `test -f 'core/thread.cpp' || echo '$(srcdir)/'`core/thread.cpp + +thread.obj: core/thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT thread.obj -MD -MP -MF "$(DEPDIR)/thread.Tpo" -c -o thread.obj `if test -f 'core/thread.cpp'; then $(CYGPATH_W) 'core/thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/thread.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/thread.Tpo" "$(DEPDIR)/thread.Po"; else rm -f "$(DEPDIR)/thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/thread.cpp' object='thread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o thread.obj `if test -f 'core/thread.cpp'; then $(CYGPATH_W) 'core/thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/thread.cpp'; fi` + +reac_thread.o: core/reac_thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reac_thread.o -MD -MP -MF "$(DEPDIR)/reac_thread.Tpo" -c -o reac_thread.o `test -f 'core/reac_thread.cpp' || echo '$(srcdir)/'`core/reac_thread.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/reac_thread.Tpo" "$(DEPDIR)/reac_thread.Po"; else rm -f "$(DEPDIR)/reac_thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/reac_thread.cpp' object='reac_thread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reac_thread.o `test -f 'core/reac_thread.cpp' || echo '$(srcdir)/'`core/reac_thread.cpp + +reac_thread.obj: core/reac_thread.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT reac_thread.obj -MD -MP -MF "$(DEPDIR)/reac_thread.Tpo" -c -o reac_thread.obj `if test -f 'core/reac_thread.cpp'; then $(CYGPATH_W) 'core/reac_thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/reac_thread.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/reac_thread.Tpo" "$(DEPDIR)/reac_thread.Po"; else rm -f "$(DEPDIR)/reac_thread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/reac_thread.cpp' object='reac_thread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o reac_thread.obj `if test -f 'core/reac_thread.cpp'; then $(CYGPATH_W) 'core/reac_thread.cpp'; else $(CYGPATH_W) '$(srcdir)/core/reac_thread.cpp'; fi` + +service.o: core/service.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.o -MD -MP -MF "$(DEPDIR)/service.Tpo" -c -o service.o `test -f 'core/service.cpp' || echo '$(srcdir)/'`core/service.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/service.Tpo" "$(DEPDIR)/service.Po"; else rm -f "$(DEPDIR)/service.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/service.cpp' object='service.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.o `test -f 'core/service.cpp' || echo '$(srcdir)/'`core/service.cpp + +service.obj: core/service.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT service.obj -MD -MP -MF "$(DEPDIR)/service.Tpo" -c -o service.obj `if test -f 'core/service.cpp'; then $(CYGPATH_W) 'core/service.cpp'; else $(CYGPATH_W) '$(srcdir)/core/service.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/service.Tpo" "$(DEPDIR)/service.Po"; else rm -f "$(DEPDIR)/service.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/service.cpp' object='service.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o service.obj `if test -f 'core/service.cpp'; then $(CYGPATH_W) 'core/service.cpp'; else $(CYGPATH_W) '$(srcdir)/core/service.cpp'; fi` + +runner.o: core/runner.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.o -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.o `test -f 'core/runner.cpp' || echo '$(srcdir)/'`core/runner.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/runner.cpp' object='runner.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.o `test -f 'core/runner.cpp' || echo '$(srcdir)/'`core/runner.cpp + +runner.obj: core/runner.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.obj -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.obj `if test -f 'core/runner.cpp'; then $(CYGPATH_W) 'core/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/core/runner.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/runner.cpp' object='runner.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.obj `if test -f 'core/runner.cpp'; then $(CYGPATH_W) 'core/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/core/runner.cpp'; fi` + +communicable.o: core/communicable.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT communicable.o -MD -MP -MF "$(DEPDIR)/communicable.Tpo" -c -o communicable.o `test -f 'core/communicable.cpp' || echo '$(srcdir)/'`core/communicable.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/communicable.Tpo" "$(DEPDIR)/communicable.Po"; else rm -f "$(DEPDIR)/communicable.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/communicable.cpp' object='communicable.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o communicable.o `test -f 'core/communicable.cpp' || echo '$(srcdir)/'`core/communicable.cpp + +communicable.obj: core/communicable.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT communicable.obj -MD -MP -MF "$(DEPDIR)/communicable.Tpo" -c -o communicable.obj `if test -f 'core/communicable.cpp'; then $(CYGPATH_W) 'core/communicable.cpp'; else $(CYGPATH_W) '$(srcdir)/core/communicable.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/communicable.Tpo" "$(DEPDIR)/communicable.Po"; else rm -f "$(DEPDIR)/communicable.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/communicable.cpp' object='communicable.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o communicable.obj `if test -f 'core/communicable.cpp'; then $(CYGPATH_W) 'core/communicable.cpp'; else $(CYGPATH_W) '$(srcdir)/core/communicable.cpp'; fi` + +topology.o: core/topology.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT topology.o -MD -MP -MF "$(DEPDIR)/topology.Tpo" -c -o topology.o `test -f 'core/topology.cpp' || echo '$(srcdir)/'`core/topology.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/topology.Tpo" "$(DEPDIR)/topology.Po"; else rm -f "$(DEPDIR)/topology.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/topology.cpp' object='topology.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o topology.o `test -f 'core/topology.cpp' || echo '$(srcdir)/'`core/topology.cpp + +topology.obj: core/topology.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT topology.obj -MD -MP -MF "$(DEPDIR)/topology.Tpo" -c -o topology.obj `if test -f 'core/topology.cpp'; then $(CYGPATH_W) 'core/topology.cpp'; else $(CYGPATH_W) '$(srcdir)/core/topology.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/topology.Tpo" "$(DEPDIR)/topology.Po"; else rm -f "$(DEPDIR)/topology.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/topology.cpp' object='topology.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o topology.obj `if test -f 'core/topology.cpp'; then $(CYGPATH_W) 'core/topology.cpp'; else $(CYGPATH_W) '$(srcdir)/core/topology.cpp'; fi` + +ring_topo.o: core/ring_topo.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ring_topo.o -MD -MP -MF "$(DEPDIR)/ring_topo.Tpo" -c -o ring_topo.o `test -f 'core/ring_topo.cpp' || echo '$(srcdir)/'`core/ring_topo.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ring_topo.Tpo" "$(DEPDIR)/ring_topo.Po"; else rm -f "$(DEPDIR)/ring_topo.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/ring_topo.cpp' object='ring_topo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ring_topo.o `test -f 'core/ring_topo.cpp' || echo '$(srcdir)/'`core/ring_topo.cpp + +ring_topo.obj: core/ring_topo.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ring_topo.obj -MD -MP -MF "$(DEPDIR)/ring_topo.Tpo" -c -o ring_topo.obj `if test -f 'core/ring_topo.cpp'; then $(CYGPATH_W) 'core/ring_topo.cpp'; else $(CYGPATH_W) '$(srcdir)/core/ring_topo.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ring_topo.Tpo" "$(DEPDIR)/ring_topo.Po"; else rm -f "$(DEPDIR)/ring_topo.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='core/ring_topo.cpp' object='ring_topo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ring_topo.obj `if test -f 'core/ring_topo.cpp'; then $(CYGPATH_W) 'core/ring_topo.cpp'; else $(CYGPATH_W) '$(srcdir)/core/ring_topo.cpp'; fi` +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libLIBRARIES mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: install-libLIBRARIES + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLIBRARIES + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libLIBRARIES clean-recursive ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLIBRARIES install-man install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-libLIBRARIES + + +#libparadiseo_a_LIBADD = + +# peodeploy +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/paradiseo-peo/src/core/communicable.cpp b/trunk/paradiseo-peo/src/core/communicable.cpp new file mode 100644 index 000000000..b407333f7 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/communicable.cpp @@ -0,0 +1,85 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "comm.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include + +#include "communicable.h" + +static std :: vector key_to_comm (1); /* Vector of registered cooperators */ + +static std :: map comm_to_key; /* Map of registered cooperators */ + +unsigned Communicable :: num_comm = 0; + +Communicable :: Communicable () { + + comm_to_key [this] = key = ++ num_comm; + key_to_comm.push_back (this); + sem_init (& sem_lock, 0, 1); + sem_init (& sem_stop, 0, 0); +} + +Communicable :: ~ Communicable () { + +} + +COMM_ID Communicable :: getKey () { + + return key; +} + +Communicable * getCommunicable (COMM_ID __key) { + + assert (__key < key_to_comm.size ()); + return key_to_comm [__key]; +} + +COMM_ID getKey (const Communicable * __comm) { + + return comm_to_key [__comm]; +} + +void Communicable :: lock () { + + sem_wait (& sem_lock); +} + +void Communicable :: unlock () { + + sem_post (& sem_lock); +} + +void Communicable :: stop () { + + sem_wait (& sem_stop); +} + +void Communicable :: resume () { + + sem_post (& sem_stop); +} + + + diff --git a/trunk/paradiseo-peo/src/core/communicable.cpp: b/trunk/paradiseo-peo/src/core/communicable.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/communicable.h b/trunk/paradiseo-peo/src/core/communicable.h new file mode 100644 index 000000000..8176dd54e --- /dev/null +++ b/trunk/paradiseo-peo/src/core/communicable.h @@ -0,0 +1,62 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "communicable.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __communicable_h +#define __communicable_h + +#include + +typedef unsigned COMM_ID; + +class Communicable { + +public : + + Communicable (); + + virtual ~ Communicable (); + + COMM_ID getKey (); + + void lock (); /* It suspends the current process if the semaphore is locked */ + void unlock (); /* It unlocks the shared semaphore */ + + void stop (); /* It suspends the current process */ + void resume (); /* It resumes ___________ */ + +protected : + + COMM_ID key; + + sem_t sem_lock; + + sem_t sem_stop; + + static unsigned num_comm; +}; + +extern Communicable * getCommunicable (COMM_ID __key); + +//extern COMM_ID getKey (const Communicable * __comm); + +#endif diff --git a/trunk/paradiseo-peo/src/core/communicable.h: b/trunk/paradiseo-peo/src/core/communicable.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/cooperative.h b/trunk/paradiseo-peo/src/core/cooperative.h new file mode 100644 index 000000000..4c3e0455d --- /dev/null +++ b/trunk/paradiseo-peo/src/core/cooperative.h @@ -0,0 +1,56 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "cooperative.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __cooperative_h +#define __cooperative_h + +#include "communicable.h" +#include "runner.h" + +typedef unsigned COOP_ID; + +class Cooperative : public Communicable { + +public : + + Runner * getOwner (); + + void setOwner (Runner & __runner); + + virtual void pack () = 0; + + virtual void unpack () = 0; + + void send (Cooperative * __coop); + + virtual void notifySending (); + +private : + + Runner * owner; + +}; + +extern Cooperative * getCooperative (COOP_ID __key); + +#endif diff --git a/trunk/paradiseo-peo/src/core/cooperative.h: b/trunk/paradiseo-peo/src/core/cooperative.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/eoPop_comm.h b/trunk/paradiseo-peo/src/core/eoPop_comm.h new file mode 100644 index 000000000..88571fa24 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/eoPop_comm.h @@ -0,0 +1,47 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoPop_comm.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __eoPop_comm_h +#define __eoPop_comm_h + +#include + +#include "messaging.h" + +template void pack (const eoPop & __pop) { + + pack ((unsigned) __pop.size ()); + for (unsigned i = 0; i < __pop.size (); i ++) + pack (__pop [i]); +} + +template void unpack (eoPop & __pop) { + + unsigned n; + + unpack (n); + __pop.resize (n); + for (unsigned i = 0; i < n; i ++) + unpack (__pop [i]); +} +#endif diff --git a/trunk/paradiseo-peo/src/core/eoPop_comm.h: b/trunk/paradiseo-peo/src/core/eoPop_comm.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/eoVector_comm.h b/trunk/paradiseo-peo/src/core/eoVector_comm.h new file mode 100644 index 000000000..82100e9f0 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/eoVector_comm.h @@ -0,0 +1,53 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoVector_comm.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __eoVector_comm_h +#define __eoVector_comm_h + +#include + +#include "messaging.h" + +template void pack (const eoVector & __v) { + + pack (__v.fitness ()) ; + unsigned len = __v.size (); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (__v [i]); +} + +template void unpack (eoVector & __v) { + + F fit; + unpack (fit); + __v.fitness (fit); + + unsigned len; + unpack (len); + __v.resize (len); + for (unsigned i = 0 ; i < len; i ++) + unpack (__v [i]); +} + +#endif diff --git a/trunk/paradiseo-peo/src/core/eoVector_comm.h: b/trunk/paradiseo-peo/src/core/eoVector_comm.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/messaging.h b/trunk/paradiseo-peo/src/core/messaging.h new file mode 100644 index 000000000..d1630bb44 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/messaging.h @@ -0,0 +1,119 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "messaging.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __mess_h +#define __mess_h + +#include + +/* Char */ +extern void pack (const char & __c); + +/* Float */ +extern void pack (const float & __f, int __nitem = 1); + +/* Double */ +extern void pack (const double & __d, int __nitem = 1); + +/* Integer */ +extern void pack (const int & __i, int __nitem = 1); + +/* Unsigned int. */ +extern void pack (const unsigned int & __ui, int __nitem = 1); + +/* Short int. */ +extern void pack (const short & __sh, int __nitem = 1); + +/* Unsigned short */ +extern void pack (const unsigned short & __ush, int __nitem = 1); + +/* Long */ +extern void pack (const long & __l, int __nitem = 1); + +/* Unsigned long */ +extern void pack (const unsigned long & __ul, int __nitem = 1); + +/* String */ +extern void pack (const char * __str); + +/* Pointer */ +template void pack (const T * __ptr) { + + pack ((unsigned long) __ptr); +} + +/* Pair */ +template void pack (const std :: pair & __pair) { + + pack (__pair.first); + pack (__pair.second); +} + +// + +/* Float */ +extern void unpack (char & __c); + +/* Float */ +extern void unpack (float & __f, int __nitem = 1); + +/* Double */ +extern void unpack (double & __d, int __nitem = 1); + +/* Integer */ +extern void unpack (int & __i, int __nitem = 1); + +/* Unsigned int. */ +extern void unpack (unsigned int & __ui, int __nitem = 1); + +/* Short int. */ +extern void unpack (short & __sh, int __nitem = 1); + +/* Unsigned short */ +extern void unpack (unsigned short & __ush, int __nitem = 1); + +/* Long */ +extern void unpack (long & __l, int __nitem = 1); + +/* Unsigned long */ +extern void unpack (unsigned long & __ul, int __nitem = 1); + +/* String */ +extern void unpack (char * __str); + +/* Pointer */ +template void unpack (T * & __ptr) { + + unsigned long p; + unpack (p); + __ptr = (T *) p; +} + +/* Pair */ +template void unpack (std :: pair & __pair) { + + unpack (__pair.first); + unpack (__pair.second); +} + +#endif diff --git a/trunk/paradiseo-peo/src/core/messaging.h: b/trunk/paradiseo-peo/src/core/messaging.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_debug.cpp b/trunk/paradiseo-peo/src/core/peo_debug.cpp new file mode 100644 index 000000000..a40efffc5 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_debug.cpp @@ -0,0 +1,92 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_debug.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "peo_debug.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "peo_debug.h" + +#define MAX_BUFF_SIZE 1000 + +#define DEBUG_PATH "./log/" + +static bool debug = true; + +static char host [MAX_BUFF_SIZE]; + +std :: vector files; + +void setDebugMode (bool __dbg) { + + debug = __dbg; + gethostname (host, MAX_BUFF_SIZE); +} + +extern int getNodeRank (); + +void initDebugging () { + + mkdir (DEBUG_PATH, S_IRWXU); + // files.push_back (stdout); + char buff [MAX_BUFF_SIZE]; + sprintf (buff, "%s/%d", DEBUG_PATH, getNodeRank ()); + files.push_back (fopen (buff, "w")); +} + +void endDebugging () { + + for (unsigned i = 0; i < files.size (); i ++) + if (files [i] != stdout) + fclose (files [i]); +} + +void printDebugMessage (const char * __mess) { + + if (debug) { + + char buff [MAX_BUFF_SIZE]; + time_t t = time (0); + + /* Date */ + sprintf (buff, "[%s][%s: ", host, ctime (& t)); + * strchr (buff, '\n') = ']'; + for (unsigned i = 0; i < files.size (); i ++) + fprintf (files [i], buff); + + /* Message */ + sprintf (buff, "%s", __mess); + + for (unsigned i = 0; i < files.size (); i ++) { + fputs (buff, files [i]); + fputs ("\n", files [i]); + fflush (files [i]); + } + } +} diff --git a/trunk/paradiseo-peo/src/core/peo_debug.cpp: b/trunk/paradiseo-peo/src/core/peo_debug.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_debug.h b/trunk/paradiseo-peo/src/core/peo_debug.h new file mode 100644 index 000000000..9b2775080 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_debug.h @@ -0,0 +1,37 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_debug.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_debug_h +#define __peo_debug_h + +extern void initDebugging (); + +extern void endDebugging (); + +extern void setDebugMode (bool __dbg = true); /* (Des)activating the Debugging mode */ + +extern void printDebugMessage (const char * __mess); /* Print a new message both on the + standard output and a target + text-file in a subdirectory) */ + +#endif diff --git a/trunk/paradiseo-peo/src/core/peo_debug.h: b/trunk/paradiseo-peo/src/core/peo_debug.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_fin.cpp b/trunk/paradiseo-peo/src/core/peo_fin.cpp new file mode 100644 index 000000000..910df2036 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_fin.cpp @@ -0,0 +1,39 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_finalize.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "peo_fin.h" +#include "peo_debug.h" +#include "runner.h" +#include "rmc.h" + +void peo :: finalize () { + + printDebugMessage ("waiting for the termination of all threads"); + + joinRunners (); + + finalizeRMC (); + + printDebugMessage ("this is the end"); + endDebugging (); +} diff --git a/trunk/paradiseo-peo/src/core/peo_fin.cpp: b/trunk/paradiseo-peo/src/core/peo_fin.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_fin.h b/trunk/paradiseo-peo/src/core/peo_fin.h new file mode 100644 index 000000000..9f565665c --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_fin.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_finalize.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_finalize_h +#define __peo_finalize_h + +namespace peo { + + extern void finalize (); +} + +#endif diff --git a/trunk/paradiseo-peo/src/core/peo_fin.h: b/trunk/paradiseo-peo/src/core/peo_fin.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_init.cpp b/trunk/paradiseo-peo/src/core/peo_init.cpp new file mode 100644 index 000000000..0a7db539d --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_init.cpp @@ -0,0 +1,52 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_init.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "peo_init.h" +#include "peo_param.h" +#include "peo_debug.h" +#include "rmc.h" + +namespace peo { + + int * argc; + + char * * * argv; + + void init (int & __argc, char * * & __argv) { + + argc = & __argc; + + argv = & __argv; + + /* Initializing the the Resource Management and Communication */ + initRMC (__argc, __argv); + + /* Loading the common parameters */ + loadParameters (__argc, __argv); + + /* */ + initDebugging (); + } +} diff --git a/trunk/paradiseo-peo/src/core/peo_init.cpp: b/trunk/paradiseo-peo/src/core/peo_init.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_init.h b/trunk/paradiseo-peo/src/core/peo_init.h new file mode 100644 index 000000000..aeb810c3e --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_init.h @@ -0,0 +1,36 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_init.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_init_h +#define __peo_init_h + +namespace peo { + + extern int * argc; + + extern char * * * argv; + + extern void init (int & __argc, char * * & __argv); +} + +#endif diff --git a/trunk/paradiseo-peo/src/core/peo_init.h: b/trunk/paradiseo-peo/src/core/peo_init.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_param.cpp b/trunk/paradiseo-peo/src/core/peo_param.cpp new file mode 100644 index 000000000..1009ef75b --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_param.cpp @@ -0,0 +1,40 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_param.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "peo_param.h" +#include "peo_debug.h" + + + +void peo :: loadParameters (int & __argc, char * * & __argv) { + + eoParser parser (__argc, __argv); + + /* Debug */ + eoValueParam debug_param ("false", "debug", "?"); + parser.processParam (debug_param); + if (debug_param.value () == "true") + setDebugMode (); +} diff --git a/trunk/paradiseo-peo/src/core/peo_param.cpp: b/trunk/paradiseo-peo/src/core/peo_param.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_param.h b/trunk/paradiseo-peo/src/core/peo_param.h new file mode 100644 index 000000000..a21eb6bb7 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_param.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_param.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_param_h +#define __peo_param_h + +namespace peo { + + extern void loadParameters (int & __argc, char * * & __argv); +} + +#endif diff --git a/trunk/paradiseo-peo/src/core/peo_param.h: b/trunk/paradiseo-peo/src/core/peo_param.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_run.cpp b/trunk/paradiseo-peo/src/core/peo_run.cpp new file mode 100644 index 000000000..65027b047 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_run.cpp @@ -0,0 +1,34 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_run.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "peo_init.h" +#include "peo_run.h" +#include "rmc.h" +#include "runner.h" + +void peo :: run () { + + startRunners (); + + runRMC (); +} diff --git a/trunk/paradiseo-peo/src/core/peo_run.cpp: b/trunk/paradiseo-peo/src/core/peo_run.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/peo_run.h b/trunk/paradiseo-peo/src/core/peo_run.h new file mode 100644 index 000000000..b3fb9b17c --- /dev/null +++ b/trunk/paradiseo-peo/src/core/peo_run.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peo_run.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peo_run_h +#define __peo_run_h + +namespace peo { + + extern void run (); +} + +#endif diff --git a/trunk/paradiseo-peo/src/core/peo_run.h: b/trunk/paradiseo-peo/src/core/peo_run.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/reac_thread.cpp b/trunk/paradiseo-peo/src/core/reac_thread.cpp new file mode 100644 index 000000000..00fbbbe43 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/reac_thread.cpp @@ -0,0 +1,51 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "reac_thread.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "reac_thread.h" + +static bool the_end = false; + +static std :: vector reac_threads; + +ReactiveThread :: ReactiveThread () { + + reac_threads.push_back (this); + sem_init (& sem, 0, 0); +} + +void ReactiveThread :: sleep () { + + sem_wait (& sem); +} + +void ReactiveThread :: wakeUp () { + + sem_post (& sem); +} + +void stopReactiveThreads () { + + the_end = true; + for (unsigned i = 0; i < reac_threads.size (); i ++) + reac_threads [i] -> wakeUp (); +} diff --git a/trunk/paradiseo-peo/src/core/reac_thread.cpp: b/trunk/paradiseo-peo/src/core/reac_thread.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/reac_thread.h b/trunk/paradiseo-peo/src/core/reac_thread.h new file mode 100644 index 000000000..8c3b34b25 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/reac_thread.h @@ -0,0 +1,50 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "reac_thread.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef REAC_THREAD_H_ +#define REAC_THREAD_H_ + +#include + +#include "thread.h" + +class ReactiveThread : public Thread { + +public: + + /* Ctor */ + ReactiveThread (); + + void sleep (); + + void wakeUp (); + +private: + + sem_t sem; + +}; + +extern void stopReactiveThreads (); + +#endif /*THREAD_H_*/ diff --git a/trunk/paradiseo-peo/src/core/reac_thread.h: b/trunk/paradiseo-peo/src/core/reac_thread.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/ring_topo.cpp b/trunk/paradiseo-peo/src/core/ring_topo.cpp new file mode 100644 index 000000000..f870b0ffe --- /dev/null +++ b/trunk/paradiseo-peo/src/core/ring_topo.cpp @@ -0,0 +1,40 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "ring_topo.cpp" + +// (c) OPAC Team, LIFL, September 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "ring_topo.h" + +void RingTopology :: setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to) { + __from.clear () ; + __to.clear () ; + + int len = mig.size () ; + + for (int i = 0 ; i < len ; i ++) + if (mig [i] == __mig) { + __from.push_back (mig [(i - 1 + len) % len]) ; + __to.push_back (mig [(i + 1) % len]) ; + break; + } +} diff --git a/trunk/paradiseo-peo/src/core/ring_topo.cpp: b/trunk/paradiseo-peo/src/core/ring_topo.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/ring_topo.h b/trunk/paradiseo-peo/src/core/ring_topo.h new file mode 100644 index 000000000..38d44b336 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/ring_topo.h @@ -0,0 +1,39 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "ring_topo.h" + +// (c) OPAC Team, LIFL, September 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __ring_topo_h +#define __ring_topo_h + +#include "topology.h" + +class RingTopology : public Topology { + +public : + + void setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to); + +}; + +#endif diff --git a/trunk/paradiseo-peo/src/core/ring_topo.h: b/trunk/paradiseo-peo/src/core/ring_topo.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/rmc.h b/trunk/paradiseo-peo/src/core/rmc.h new file mode 100644 index 000000000..4f943f931 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/rmc.h @@ -0,0 +1,33 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "rmc.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __rmc_h +#define __rmc_h + +extern void initRMC (int & __argc, char * * & __argv); + +extern void runRMC (); /* Resource Management and Communication */ + +extern void finalizeRMC (); + +#endif diff --git a/trunk/paradiseo-peo/src/core/rmc.h: b/trunk/paradiseo-peo/src/core/rmc.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/runner.cpp b/trunk/paradiseo-peo/src/core/runner.cpp new file mode 100644 index 000000000..a47a1b30d --- /dev/null +++ b/trunk/paradiseo-peo/src/core/runner.cpp @@ -0,0 +1,119 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "runner.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "runner.h" +#include "reac_thread.h" +#include "peo_debug.h" +#include "messaging.h" + +static unsigned num_act = 0; /* Number of active runners */ + +static std :: vector ll_threads; /* Low-level runner threads */ + +static std :: vector the_runners; + +static unsigned num_runners = 0; + +Runner :: Runner () { + + id = ++ num_runners; + the_runners.push_back (this); + sem_init (& sem_start, 0, 0); + num_act ++; +} + +extern int getNodeRank (); + +extern int getNumberOfNodes (); + +void unpackTerminationOfRunner () { + + RUNNER_ID id; + unpack (id); + num_act --; + printDebugMessage ("I'm noticed of the termination of a runner"); + if (! num_act) { + printDebugMessage ("all the runners have terminated. Now stopping the reactive threads."); + stopReactiveThreads (); + } +} + +bool atLeastOneActiveRunner () { + + return num_act; +} + +RUNNER_ID Runner :: getID () { + + return id; +} + +void Runner :: start () { + + setActive (); + sem_post (& sem_start); + run (); + terminate (); +} + +void Runner :: notifySendingTermination () { + + /* + char b [1000]; + sprintf (b, "Il reste encore %d !!!!!!!!!!!!", n); + printDebugMessage (b); + */ + printDebugMessage ("je suis informe que tout le monde a recu ma terminaison"); + setPassive (); + +} + +void Runner :: waitStarting () { + + sem_wait (& sem_start); +} + +Runner * getRunner (RUNNER_ID __key) { + + return dynamic_cast (getCommunicable (__key)); +} + +void startRunners () { + + /* Runners */ + for (unsigned i = 0; i < the_runners.size (); i ++) + if (the_runners [i] -> isLocal ()) { + addThread (the_runners [i], ll_threads); + the_runners [i] -> waitStarting (); + } + printDebugMessage ("launched the parallel runners"); +} + + +void joinRunners () { + + + joinThreads (ll_threads); +} diff --git a/trunk/paradiseo-peo/src/core/runner.cpp: b/trunk/paradiseo-peo/src/core/runner.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/runner.h b/trunk/paradiseo-peo/src/core/runner.h new file mode 100644 index 000000000..da549cc6b --- /dev/null +++ b/trunk/paradiseo-peo/src/core/runner.h @@ -0,0 +1,73 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "runner.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __runner_h +#define __runner_h + +#include + +#include "communicable.h" +#include "thread.h" + +typedef unsigned RUNNER_ID; + +class Runner : public Communicable, public Thread { + +public : + + Runner (); + + void start (); + + void waitStarting (); + + bool isLocal (); + + void terminate (); + + virtual void run () = 0; + + RUNNER_ID getID (); + + void packTermination (); + + void notifySendingTermination (); + +private : + + sem_t sem_start; + + unsigned id; +}; + +extern bool atLeastOneActiveRunner (); + +extern void unpackTerminationOfRunner (); + +extern Runner * getRunner (RUNNER_ID __key); + +extern void startRunners (); + +extern void joinRunners (); + +#endif diff --git a/trunk/paradiseo-peo/src/core/runner.h: b/trunk/paradiseo-peo/src/core/runner.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/service.cpp b/trunk/paradiseo-peo/src/core/service.cpp new file mode 100644 index 000000000..1c62e090f --- /dev/null +++ b/trunk/paradiseo-peo/src/core/service.cpp @@ -0,0 +1,73 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "service.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "service.h" + +void Service :: setOwner (Thread & __owner) { + + owner = & __owner; +} + +Thread * Service :: getOwner () { + + return owner; +} + +Service * getService (SERVICE_ID __key) { + + return dynamic_cast (getCommunicable (__key)); +} + +void Service :: notifySendingData () { + +} +void Service :: notifySendingResourceRequest () { + + num_sent_rr --; + if (! num_sent_rr) + notifySendingAllResourceRequests (); +} + +void Service :: notifySendingAllResourceRequests () { + +} + +void Service :: packData () { + +} + +void Service :: unpackData () { + +} + +void Service :: execute () { + +} + +void Service :: packResult () { + +} + +void Service :: unpackResult () { + +} diff --git a/trunk/paradiseo-peo/src/core/service.cpp: b/trunk/paradiseo-peo/src/core/service.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/service.h b/trunk/paradiseo-peo/src/core/service.h new file mode 100644 index 000000000..166e78cc7 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/service.h @@ -0,0 +1,65 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "service.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __service_h +#define __service_h + +#include "communicable.h" +#include "thread.h" + +typedef unsigned SERVICE_ID; + +class Service : public Communicable { + +public : + + void setOwner (Thread & __owner); + + Thread * getOwner (); + + void requestResourceRequest (unsigned __how_many = 1); + void packResourceRequest (); + + virtual void packData (); + virtual void unpackData (); + + virtual void execute (); + + virtual void packResult (); + virtual void unpackResult (); + + virtual void notifySendingData (); + virtual void notifySendingResourceRequest (); + virtual void notifySendingAllResourceRequests (); + +private : + + Thread * owner; /* Owner thread (i.e. 'uses' that service) */ + + unsigned num_sent_rr; /* Number of RR not really sent (i.e. still in the sending queue)*/ + +}; + +extern Service * getService (SERVICE_ID __key); + +#endif diff --git a/trunk/paradiseo-peo/src/core/service.h: b/trunk/paradiseo-peo/src/core/service.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/thread.cpp b/trunk/paradiseo-peo/src/core/thread.cpp new file mode 100644 index 000000000..69feb508a --- /dev/null +++ b/trunk/paradiseo-peo/src/core/thread.cpp @@ -0,0 +1,96 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "thread.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "thread.h" + +static std :: vector threads; + +unsigned num_act = 0; + +Thread :: Thread () { + + threads.push_back (this); + act = false; +} + +Thread :: ~ Thread () { + + /* Nothing ! */ +} + +extern int getNodeRank (); + +void Thread :: setActive () { + + if (! act ) { + + act = true; + num_act ++; + // if (getNodeRank () == 1) + // printf ("On passe a %d\n", num_act); + } +} + +void Thread :: setPassive () { + + if (act) { + + act = false; + num_act --; + // if (getNodeRank () == 1) + // printf ("On passe a %d\n", num_act); + + } +} + +bool atLeastOneActiveThread () { + + return num_act; +} + +unsigned numberOfActiveThreads () { + + return num_act; +} + +static void * launch (void * __arg) { + + Thread * thr = (Thread *) __arg; + thr -> start (); + return 0; +} + +void addThread (Thread * __hl_thread, std :: vector & __ll_threads) { + + pthread_t * ll_thr = new pthread_t; + __ll_threads.push_back (ll_thr); + pthread_create (ll_thr, 0, launch, __hl_thread); +} + +void joinThreads (std :: vector & __threads) { + + for (unsigned i = 0; i < __threads.size (); i ++) + pthread_join (* __threads [i], 0); +} diff --git a/trunk/paradiseo-peo/src/core/thread.cpp: b/trunk/paradiseo-peo/src/core/thread.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/thread.h b/trunk/paradiseo-peo/src/core/thread.h new file mode 100644 index 000000000..a6f07ea7f --- /dev/null +++ b/trunk/paradiseo-peo/src/core/thread.h @@ -0,0 +1,63 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "thread.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef THREAD_H_ +#define THREAD_H_ + +#include + +/* A high-level thread */ + +class Thread { + +public: + + /* Ctor */ + Thread (); + + /* Dtor */ + virtual ~ Thread (); + + /* Go ! */ + virtual void start () = 0; + + void setActive ();/* It means the current process is going to send messages soon */ + void setPassive ();/* The current process is not going to perform send operations + (but it may receive messages) */ + +private : + + bool act; +}; + +extern void addThread (Thread * __hl_thread, std :: vector & __ll_threads); + +extern void joinThreads (std :: vector & __ll_threads); + +extern bool atLeastOneActiveThread (); /* It returns 'true' iff at least one process is going + to send messages */ + +extern unsigned numberOfActiveThreads (); + + +#endif /*THREAD_H_*/ diff --git a/trunk/paradiseo-peo/src/core/thread.h: b/trunk/paradiseo-peo/src/core/thread.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/topology.cpp b/trunk/paradiseo-peo/src/core/topology.cpp new file mode 100644 index 000000000..02c952955 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/topology.cpp @@ -0,0 +1,35 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "topo.cpp" + +// (c) OPAC Team, LIFL, September 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "topology.h" + +Topology :: ~ Topology () { + + /* Nothing ! */ +} + +void Topology :: add (Cooperative & __mig) { + + mig.push_back (& __mig) ; +} + diff --git a/trunk/paradiseo-peo/src/core/topology.cpp: b/trunk/paradiseo-peo/src/core/topology.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/core/topology.h b/trunk/paradiseo-peo/src/core/topology.h new file mode 100644 index 000000000..399a86502 --- /dev/null +++ b/trunk/paradiseo-peo/src/core/topology.h @@ -0,0 +1,48 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "topology.h" + +// (c) OPAC Team, LIFL, September 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __topology_h +#define __topology_h + +#include + +#include "cooperative.h" + +class Topology { + +public: + + virtual ~Topology (); + + void add (Cooperative & __mig); + + virtual void setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to) = 0; + +protected: + + std :: vector mig ; +}; + +#endif diff --git a/trunk/paradiseo-peo/src/core/topology.h: b/trunk/paradiseo-peo/src/core/topology.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/paradiseo b/trunk/paradiseo-peo/src/paradiseo new file mode 100644 index 000000000..b928156cc --- /dev/null +++ b/trunk/paradiseo-peo/src/paradiseo @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "paradiseo" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __paradiseo_ +#define __paradiseo_ + +#include "paradiseo.h" + +#endif diff --git a/trunk/paradiseo-peo/src/paradiseo.h b/trunk/paradiseo-peo/src/paradiseo.h new file mode 100644 index 000000000..ffddcbf05 --- /dev/null +++ b/trunk/paradiseo-peo/src/paradiseo.h @@ -0,0 +1,286 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "paradiseo.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __paradiseo_h_ +#define __paradiseo_h_ + +#include +#include + + +//! \mainpage The ParadisEO-PEO Framework +//! +//! \section intro Introduction +//! +//! ParadisEO-PEO is a white-box object-oriented framework dedicated to the reusable design +//! of parallel and distributed metaheuristics (PDM). ParadisEO-PEO provides a broad range of features including evolutionary +//! algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization +//! mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO-PEO is based on a +//! clear conceptual separation of the solution methods from the problems they are intended to solve. This separation +//! confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes +//! provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO-PEO is one of the rare +//! frameworks that provide the most common parallel and distributed models. Their implementation is portable on +//! distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as +//! MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated +//! provided classes. Their experimentation on the radio network design real-world application demonstrate their +//! efficiency. +//! +//! In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, +//! and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems +//! instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are +//! general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local +//! search methods (LS). These two families have complementary characteristics: EA allow +//! a better exploration of the search space, while LS have the power to intensify the search in +//! promising regions. Their hybridization allows to deliver robust and better solutions +//! +//! Although serial metaheuristics have a polynomial temporal complexity, they remain +//! unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way +//! to deal with the performance issue of these problems. Numerous parallel and distributed +//! metaheuristics (PDM) and their implementations have been proposed, and are available on +//! theWeb. They can be reused and adapted to his/her own problems. However, the user has to +//! deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, +//! takes along time and makes harder the produced code maintenance. A better way to +//! reuse the code of existing PDM is the reuse through libraries. These are often +//! more reliable as they are more tested and documented. They allow a better maintainability +//! and efficiency. However, libraries do not allow the reuse of design. +//! +//! \section parallel_metaheuristics Parallel and distributed metaheuristics +//! +//! \subsection parallel_distributed Parallel distributed evolutionary algorithms +//! +//! Evolutionary Algorithms (EA) are based on the iterative improvement of a +//! population of solutions. At each step, individuals are selected, paired and recombined in order +//! to generate new solutions that replace other ones, and so on. As the algorithm converges, +//! the population is mainly composed of individuals well adapted to the "environment", for +//! instance the problem. The main features that characterize EA are the way the population is +//! initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions, +//! the replacement strategy that discards individuals, and the continuation/stopping criterion +//! to decide whether the evolution should go on or not. +//! +//! Basically, three major parallel and distributed models for EA can been distinguished: +//! the island (a)synchronous cooperative model, the parallel evaluation of the +//! population, and the distributed evaluation of a single solution. +//!

      +//!
    • Island (a)synchronous cooperative model. Different EA are simultaneously deployed to +//! cooperate for computing better and robust solutions. They exchange in an asynchronous +//! way genetic stuff to diversify the search. The objective is to allow to delay the global +//! convergence, especially when theEAare heterogeneous regarding the variation operators. +//! The migration of individuals follows a policy defined by few parameters: the migration +//! decision criterion, the exchange topology, the number of emigrants, the emigrants selection +//! policy, and the replacement/integration policy.
    • +//! +//!
    • Parallel evaluation of the population. It is required as it is in general the most timeconsuming. +//! The parallel evaluation follows the centralized model. The farmer applies +//! the following operations: selection, transformation and replacement as they require a +//! global management of the population. At each generation, it distributes the set of new +//! solutions between differentworkers. These evaluate and return back the solutions and their +//! quality values. An efficient execution is often obtained particularly when the evaluation +//! of each solution is costly. The two main advantages of an asynchronous model over +//! the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the +//! robustness in case the fitness computation can take very different computation times (e.g. +//! for nonlinear numerical optimization). Whereas some time-out detection can be used to +//! address the former issue, the latter one can be partially overcome if the grain is set to very +//! small values, as individuals will be sent out for evaluations upon request of the workers.
    • +//! +//!
    • Distributed evaluation of a single solution. The quality of each solution is evaluated in +//! a parallel centralized way. That model is particularly interesting when the evaluation +//! function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In +//! that case, the function can be viewed as an aggregation of a certain number of partial +//! functions. The partial functions could also be identical if for example the problem to deal +//! with is a data mining one. The evaluation is thus data parallel and the accesses to data +//! base are performed in parallel. Furthermore, a reduction operation is performed on the +//! results returned by the partial functions. As a summary, for this model the user has to +//! indicate a set of partial functions and an aggregation operator of these.
    • +//!
    +//! +//! \subsection parallel_ls Parallel distributed local searches +//! +//! \subsubsection local_searches Local searches +//! +//! All metaheuristics dedicated to the improvement of a single solution +//! are based on the concept of neighborhood. They start from a solution randomly generated or +//! obtained from another optimization algorithm, and update it, step by step, by replacing the +//! current solution by one of its neighboring candidates. Some criterion have been identified to +//! differentiate such searches: the heuristic internal memory, the choice of the initial solution, +//! the candidate solutions generator, and the selection strategy of candidate moves. Three main +//! algorithms of local search stand out: Hill Climbing (HC), Simulated +//! Annealing (SA) and Tabu Search (TS). +//! +//! \subsubsection parallel_local_searches Parallel local searches +//! +//! Two parallel distributed models are commonly used in the literature: the parallel distributed +//! exploration of neighboring candidate solutions model, and the multi-start model. +//!
      +//!
    • Parallel exploration of neighboring candidates. It is a low-level Farmer-Worker model +//! that does not alter the behavior of the heuristic. A sequential search computes the same +//! results slower.At the beginning of each iteration, the farmer duplicates the current solution +//! between distributed nodes. Each one manages some candidates and the results are returned to the farmer. +//! The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great +//! deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate +//! is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as +//! the number of neighboring solutions to process before finding one that improves the current objective function may +//! be highly variable.
    • +//! +//!
    • Multi-start model. It consists in simultaneously launching several local searches. They +//! may be heterogeneous, but no information is exchanged between them. The resultswould +//! be identical as if the algorithms were sequentially run.Very often deterministic algorithms +//! differ by the supplied initial solution and/or some other parameters. This trivial model is +//! convenient for low-speed networks of workstations.
    • +//!
    +//! +//! \section hybridization Hybridization +//! +//! Recently, hybrid metaheuristics have gained a considerable interest. For many +//! practical or academic optimization problems, the best found solutions are obtained by +//! hybrid algorithms. Combinations of different metaheuristics have provided very powerful +//! search methods. Two levels and two modes +//! of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes. +//! The low-level hybridization addresses the functional composition of a single optimization +//! method. A function of a given metaheuristic is replaced by another metaheuristic. On the +//! contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, +//! meaning no direct relationship to their internal working is considered. On the other hand, +//! relay hybridization means a set of metaheuristics is applied in a pipeline way. The output +//! of a metaheuristic (except the last) is the input of the following one (except the first). +//! Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic +//! performs a search in a solution space, and exchange solutions with others. +//! +//! \section paradiseo_goals Paradiseo goals and architecture +//! +//! The "EO" part of ParadisEO-PEO means Evolving Objects. EO is a C++ LGPL open source +//! framework and includes a paradigm-free Evolutionary Computation library (EOlib) +//! dedicated to the flexible design of EA through evolving objects superseding the most common +//! dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and +//! Genetic Programming). Furthermore, EO integrates several services including visualization +//! facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO-PEO is an +//! extended version of the EO framework. The extensions include local search methods, hybridization +//! mechanisms, parallelism and distribution mechanisms, and other features that +//! are not addressed in this paper such as multi-objective optimization and grid computing. In +//! the next sections, we present the motivations and goals of ParadisEO-PEO, its architecture and +//! some of its main implementation details and issues. +//! +//! \subsection motivation Motivations and goals +//! +//! A framework is normally intended to be exploited by as many users as possible. Therefore, +//! its exploitation could be successful only if some important user criteria are satisfied. The +//! following criteria are the major of them and constitute the main objectives of the ParadisEO-PEO +//! framework: +//! +//!
      +//!
    • Maximum design and code reuse. The framework must provide for the user a whole +//! architecture design of his/her solution method. Moreover, the programmer may redo as +//! little code as possible. This objective requires a clear and maximal conceptual separation +//! between the solution methods and the problems to be solved, and thus a deep domain +//! analysis. The user might therefore develop only the minimal problem-specific code.
    • +//! +//!
    • Flexibility and adaptability. It must be possible for the user to easily add new features/ +//! metaheuristics or change existing ones without implicating other components. Furthermore, +//! as in practice existing problems evolve and new others arise these have to be +//! tackled by specializing/adapting the framework components.
    • +//! +//!
    • Utility. The framework must allow the user to cover a broad range of metaheuristics, +//! problems, parallel distributed models, hybridization mechanisms, etc.
    • +//! +//!
    • Transparent and easy access to performance and robustness. As the optimization applications +//! are often time-consuming the performance issue is crucial. Parallelism and +//! distribution are two important ways to achieve high performance execution. In order to +//! facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in +//! a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee +//! the reliability and the quality of the results. The hybridization mechanism allows +//! to obtain robust and better solutions.
    • +//! +//!
    • Portability. In order to satisfy a large number of users the framework must support +//! different material architectures and their associated operating systems.
    • +//!
    +//! +//! \subsection architecture ParadisEO-PEO architecture +//! +//! The architecture of ParadisEO-PEO is multi-layer and modular allowing to achieve the objectives +//! quoted above. This allows particularly a high flexibility and adaptability, an +//! easier hybridization, and more code and design reuse. The architecture has three layers +//! identifying three major categories of classes: Solvers, Runners and Helpers. +//!
      +//!
    • Helpers. Helpers are low-level classes that perform specific actions related to the evolution +//! or search process. They are split in two categories: Evolutionary helpers (EH) +//! and Local search helpers (LSH). EH include mainly the transformation, selection and +//! replacement operations, the evaluation function and the stopping criterion. LSH can be +//! generic such as the neighborhood explorer class, or specific to the local search metaheuristic +//! like the tabu list manager class in the Tabu Search solution method. On the +//! other hand, there are some special helpers dedicated to the management of parallel and +//! distributed models 2 and 3, such as the communicators that embody the communication +//! services. +//! +//! Helpers cooperate between them and interact with the components of the upper layer +//! i.e. the runners. The runners invoke the helpers through function parameters. Indeed, +//! helpers have not their own data, but they work on the internal data of the runners.
    • +//! +//!
    • Runners. The Runners layer contains a set of classes that implement the metaheuristics +//! themselves. They perform the run of the metaheuristics from the initial state or +//! population to the final one. One can distinguish the Evolutionary runners (ER) such as +//! genetic algorithms, evolution strategies, etc., and Local search runners (LSR) like tabu +//! search, simulated annealing and hill climbing. Runners invoke the helpers to perform +//! specific actions on their data. For instance, an ER may ask the fitness function evaluation +//! helper to evaluate its population. An LSR asks the movement helper to perform +//! a given movement on the current state. Furthermore, runners can be serial or parallel +//! distributed.
    • +//! +//!
    • Solvers. Solvers are devoted to control the evolution process and/or the search. They +//! generate the initial state (solution or population) and define the strategy for combining +//! and sequencing different metaheuristics. Two types of solvers can be distinguished. +//! Single metaheuristic solvers (SMS) and Multiple metaheuristics solvers (MMS). SMSs +//! are dedicated to the execution of only one metaheuristic.MMS are more complex as they +//! control and sequence several metaheuristics that can be heterogeneous. Solvers interact with +//! the user by getting the input data and delivering the output (best solution, statistics, +//! etc).
    • +//!
    +//! +//! According to the generality of their embedded features, the classes of the architecture split +//! in two major categories: Provided classes and Required classes. Provided classes embody +//! the factored out part of the metaheuristics. They are generic, implemented in the framework, +//! and ensure the control at run time. Required classes are those that must be supplied by the +//! user. They encapsulate the problem-specific aspects of the application. These classes are +//! fixed but not implemented in ParadisEO-PEO. The programmer has the burden to develop them +//! using the OO specialization mechanism. + +#include "core/peo_init.h" +#include "core/peo_run.h" +#include "core/peo_fin.h" + +#include "core/eoVector_comm.h" + +#include "peoEA.h" + +/* Parallel steps of the E.A. */ +#include "peoSeqTransform.h" +#include "peoParaSGATransform.h" +#include "peoSeqPopEval.h" +#include "peoParaPopEval.h" + +/* Cooperative island model */ +#include "core/ring_topo.h" +#include "peoAsyncIslandMig.h" +#include "peoSyncIslandMig.h" + +/* Synchronous multi-start model */ +#include "peoSyncMultiStart.h" + +#endif diff --git a/trunk/paradiseo-peo/src/peoAggEvalFunc.h b/trunk/paradiseo-peo/src/peoAggEvalFunc.h new file mode 100644 index 000000000..bf1d882fd --- /dev/null +++ b/trunk/paradiseo-peo/src/peoAggEvalFunc.h @@ -0,0 +1,45 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoAggEvalFunc.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoAggEvalFunc_h +#define __peoAggEvalFunc_h + +#include + +//! Interface class for creating an aggregate evaluation function. + +//! The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there +//! are no direct internal functions provided. The class inherits public eoBF< EOT&, const typename EOT :: Fitness&, void > +//! thus requiring, for the derived classes, the creation of a function having the following signature: +//! +//! +//! +//!
    void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness );    
    +//! +//! The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +template< class EOT > class peoAggEvalFunc : public eoBF< EOT&, const typename EOT :: Fitness&, void > { + +}; + + +#endif diff --git a/trunk/paradiseo-peo/src/peoAsyncIslandMig.h b/trunk/paradiseo-peo/src/peoAsyncIslandMig.h new file mode 100644 index 000000000..7401ecf98 --- /dev/null +++ b/trunk/paradiseo-peo/src/peoAsyncIslandMig.h @@ -0,0 +1,273 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoAsyncIslandMig.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoAsyncIslandMig_h +#define __peoAsyncIslandMig_h + + +#include + +#include + +#include +#include +#include +#include + +#include "core/topology.h" +#include "core/cooperative.h" +#include "core/eoPop_comm.h" +#include "core/peo_debug.h" + + +//! Class providing the basis for the asynchronous island migration model. + +//! The peoAsyncIslandMig class offers the elementary basis for implementating an +//! asynchronous island migration model - requires the specification of several basic +//! parameters, i.e. continuation criterion, selection and replacement strategies, +//! a topological model and the source and destination population for the migrating individuals. +//! As opposed to the synchronous migration model, in the asynchronous migration approach, there is +//! no synchronization step between islands after performing the emigration phase. +//! +//! The migration operator is called at the end of each generation of an evolutionary algorithms +//! as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +//! +//! +//! +//! +//! +//! +//! +//! +//!
    do {    
             select( population, offsprings );   // select the offsprings from the current population
             transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
             evaluate( offsprings );   // evaluation step of the resulting offspring
             replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
    } while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
    +//! +//! Constructing an asynchronous island migration model requires having defined (1) a topological migration model, +//! (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, +//! and (4) an owner object must be set. The owner object must be derived from the Runner class (for example +//! a peoEA object represents a possible owner). +//! A simple example is offered bellow: +//! +//!
      +//!
    1. topological model to be followed when performing migrations:
      +//!
      +//! +//! +//!
      RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
      +//!
    2. +//! +//!
    3. the continuation criterion, selection and replacement strategy etc. are defined:
      +//!
      +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//!
      eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
         
      eoPeriodicContinue< EOT > migCont( MIG_FREQ );   // migrations occur periodically at MIG_FREQ iterations
      eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
      eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
      eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
         
      peoAsyncIslandMig< EOT > asyncMigration( +//!
               migCont, migSelect, migReplace, migTopology, +//!
               population, population +//!
      );  
      // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
      +//!
    4. +//! +//!
    5. creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
      +//!
      +//! +//! +//! +//! +//! +//! +//! +//!
      ...    
      eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
      eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
      ...    
      eaCheckpointContinue.add( asyncMigration );   // adding the migration operator as checkpoint element
      ...    
      +//!
    6. +//! +//!
    7. definition of an owner evolutionary algorithm (an object inheriting the Runner class):
      +//!
      +//! +//! +//! +//! +//!
      peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
      asyncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
      eaAlg( population );   // applying the evolutionary algorithm on a given population
      +//!
    8. +//!
    +//! +//! The source and the destination population for the migration object were specified as being the same, in step no. 2, +//! as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique +//! population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations +//! as source and destination for the emigrant and immigrant individuals respectively. +//! +//! The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several +//! islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and +//! the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 +//! (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +template< class EOT > class peoAsyncIslandMig : public Cooperative, public eoUpdater { + +public: + + //! Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined + //! through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + //! + //! @param eoContinue< EOT >& __cont - continuation criterion specifying whether the migration is performed or not; + //! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; + //! @param eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; + //! @param Topology& __topology - topological model to be followed when performing migrations; + //! @param eoPop< EOT >& __source - source population from which the emigrant individuals are selected; + //! @param eoPop< EOT >& __destination - destination population in which the immigrant population are integrated. + peoAsyncIslandMig( + eoContinue< EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + ); + + //! Function operator to be called as checkpoint for performing the migration step. The emigrant individuals are selected + //! from the source population and sent to the next island (defined by the topology object) while the immigrant + //! individuals are integrated in the destination population. There is no need to explicitly call the function - the + //! wrapper checkpoint object (please refer to the above example) will perform the call when required. + void operator()(); + + //! Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. + void pack(); + //! Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. + void unpack(); + + +private: + + void emigrate(); + void immigrate(); + + +private: + + eoContinue< EOT >& cont; // continuator + eoSelect< EOT >& select; // the selection strategy + eoReplacement< EOT >& replace; // the replacement strategy + Topology& topology; // the neighboring topology + + // source and destination populations + eoPop< EOT >& source; + eoPop< EOT >& destination; + + // immigrants & emigrants in the queue + std :: queue< eoPop< EOT > > imm; + std :: queue< eoPop< EOT > > em; + + std :: queue< Cooperative* > coop_em; +}; + + +template< class EOT > peoAsyncIslandMig< EOT > :: peoAsyncIslandMig( + + eoContinue< EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + + ) : cont( __cont ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) +{ + + __topology.add( *this ); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: pack() +{ + + lock(); { + + :: pack( coop_em.front()->getKey() ); + :: pack( em.front() ); + coop_em.pop(); + em.pop(); + } + unlock(); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: unpack() +{ + + lock(); { + + eoPop< EOT > mig; + :: unpack( mig ); + imm.push( mig ); + } + unlock(); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: emigrate() +{ + + std :: vector< Cooperative* >in, out; + topology.setNeighbors( this, in, out ); + + for ( unsigned i = 0; i < out.size(); i++ ) { + + eoPop< EOT > mig; + select( source, mig ); + em.push( mig ); + coop_em.push( out[i] ); + send( out[i] ); + printDebugMessage( "sending some emigrants." ); + } +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: immigrate() +{ + + lock(); { + + while ( !imm.empty() ) { + + replace( destination, imm.front() ); + imm.pop(); + printDebugMessage( "receiving some immigrants." ); + } + } + unlock(); +} + + +template< class EOT > void peoAsyncIslandMig< EOT > :: operator()() { + + if ( !cont( source ) ) { + + emigrate(); // sending emigrants + immigrate(); // receiving immigrants + } +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoEA.h b/trunk/paradiseo-peo/src/peoEA.h new file mode 100644 index 000000000..3098c32d2 --- /dev/null +++ b/trunk/paradiseo-peo/src/peoEA.h @@ -0,0 +1,160 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoEA.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoEA_h +#define __peoEA_h + +#include +#include +#include +#include +#include + +#include "peoPopEval.h" +#include "peoTransform.h" +#include "core/runner.h" +#include "core/peo_debug.h" + +//! Class providing an elementary ParadisEO evolutionary algorithm. + +//! The peoEA class offers an elementary evolutionary algorithm implementation. In addition, as compared +//! with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure +//! for including, for example, parallel evaluation and parallel transformation operators, migration operators +//! etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides +//! in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. +//! A simple example for constructing a peoEA object: +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//! +//!
    ...    
    eoPop< EOT > population( POP_SIZE, popInitializer );   // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual
       
    eoGenContinue< EOT > eaCont( NUM_GEN );   // number of generations for the evolutionary algorithm
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects
       
    peoSeqPopEval< EOT > eaPopEval( evalFunction );   // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor
       
    eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
    eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE );   // the number of individuals to be selected for creating the offspring population
    eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
       
    eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE );   // transformation operator - crossover and mutation operators with their associated probabilities
    peoSeqTransform< EOT > eaTransform( transform );   // ParadisEO specific sequential operator - a parallel version may be specified in the same manner
       
    eoPlusReplacement< EOT > eaReplace;   // replacement strategy - for integrating the offspring resulting individuals in the initial population
       
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );   // ParadisEO evolutionary algorithm integrating the above defined objects
    eaAlg( population );   // specifying the initial population for the algorithm
    ...    
    +template < class EOT > class peoEA : public Runner { + +public: + + //! Constructor for the evolutionary algorithm object - several basic parameters have to be specified, + //! allowing for different levels of parallelism. Depending on the requirements, a sequential or a parallel + //! evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation + //! operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, + //! or custom defined ones may be specified, provided that they are derived from the correct base classes. + //! + //! @param eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not; + //! @param peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; + //! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals; + //! @param peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; + //! @param eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population; + peoEA( + eoContinue< EOT >& __cont, + peoPopEval< EOT >& __pop_eval, + eoSelect< EOT >& __select, + peoTransform< EOT >& __trans, + eoReplacement< EOT >& __replace + ); + + //! Evolutionary algorithm function - a side effect of the fact that the class is derived from the Runner class, + //! thus requiring the existence of a run function, the algorithm being executed on a distinct thread. + void run(); + + //! Function operator for specifying the population to be associated with the algorithm. + //! + //! @param eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved; + void operator()( eoPop< EOT >& __pop ); + +private: + + + eoContinue< EOT >& cont; + peoPopEval< EOT >& pop_eval; + eoSelect< EOT >& select; + peoTransform< EOT >& trans; + eoReplacement< EOT >& replace; + eoPop< EOT >* pop; +}; + + +template < class EOT > peoEA< EOT > :: peoEA( + + eoContinue< EOT >& __cont, + peoPopEval< EOT >& __pop_eval, + eoSelect< EOT >& __select, + peoTransform< EOT >& __trans, + eoReplacement< EOT >& __replace + + ) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace ) +{ + + trans.setOwner( *this ); + pop_eval.setOwner( *this ); +} + + +template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) { + + pop = &__pop; +} + + +template< class EOT > void peoEA< EOT > :: run() { + + printDebugMessage( "performing the first evaluation of the population." ); + pop_eval( *pop ); + + do { + + eoPop< EOT > off; + + printDebugMessage( "performing the selection step." ); + select( *pop, off ); + trans( off ); + + printDebugMessage( "performing the evaluation of the population." ); + pop_eval( off ); + + printDebugMessage( "performing the replacement of the population." ); + replace( *pop, off ); + + printDebugMessage( "deciding of the continuation." ); + + } while ( cont( *pop ) ); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoNoAggEvalFunc.h b/trunk/paradiseo-peo/src/peoNoAggEvalFunc.h new file mode 100644 index 000000000..a5f53d38f --- /dev/null +++ b/trunk/paradiseo-peo/src/peoNoAggEvalFunc.h @@ -0,0 +1,49 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoNoAggEvalFunc.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoNoAggEvalFunc_h +#define __peoNoAggEvalFunc_h + +#include "peoAggEvalFunc.h" + +//! Class providing a simple interface for associating a fitness value to a specified individual. + +//! The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +//! The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness +//! value is explicitly specified. +template< class EOT > class peoNoAggEvalFunc : public peoAggEvalFunc< EOT > { + +public : + + //! Operator which sets as fitness the __fit value for the __sol individual + void operator()( EOT& __sol, const typename EOT :: Fitness& __fit ); +}; + + +template< class EOT > void peoNoAggEvalFunc< EOT > :: operator()( EOT& __sol, const typename EOT :: Fitness& __fit ) { + + __sol.fitness( __fit ); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoParaPopEval.h b/trunk/paradiseo-peo/src/peoParaPopEval.h new file mode 100644 index 000000000..87cbfa398 --- /dev/null +++ b/trunk/paradiseo-peo/src/peoParaPopEval.h @@ -0,0 +1,240 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoParaPopEval.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoParaPopEval_h +#define __peoParaPopEval_h + +#include +#include + +#include "core/messaging.h" +#include "core/peo_debug.h" +#include "peoAggEvalFunc.h" +#include "peoNoAggEvalFunc.h" + + +//! Parallel evaluation functor wrapper. + +//! The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel +//! an EO-derived evaluation functor. The class offers the possibility of chosing between a single-function evaluation +//! and an aggregate evaluation function, including several sub-evalution functions. +template< class EOT > class peoParaPopEval : public peoPopEval< EOT > { + +public: + + using peoPopEval< EOT > :: requestResourceRequest; + using peoPopEval< EOT > :: resume; + using peoPopEval< EOT > :: stop; + using peoPopEval< EOT > :: getOwner; + + //! Constructor function - an EO-derived evaluation functor has to be specified; an internal reference + //! is set towards the specified evaluation functor. + //! + //! @param eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population + peoParaPopEval( eoEvalFunc< EOT >& __eval_func ); + + //! Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. + //! + //! @param const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors; + //! @param peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values. + peoParaPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval ); + + //! Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. + //! + //! @param eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor. + void operator()( eoPop< EOT >& __pop ); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packData(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackData(); + + //! Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. + void execute(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packResult(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackResult(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingData(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingAllResourceRequests(); + +private: + + + const std :: vector< eoEvalFunc < EOT >* >& funcs; + std :: vector< eoEvalFunc < EOT >* > one_func; + + peoAggEvalFunc< EOT >& merge_eval; + peoNoAggEvalFunc< EOT > no_merge_eval; + + std :: queue< EOT* >tasks; + + std :: map< EOT*, std :: pair< unsigned, unsigned > > progression; + + unsigned num_func; + + EOT sol; + + EOT *ad_sol; + + unsigned total; +}; + + +template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( eoEvalFunc< EOT >& __eval_func ) : + + funcs( one_func ), merge_eval( no_merge_eval ) +{ + + one_func.push_back( &__eval_func ); +} + + +template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( + + const std :: vector< eoEvalFunc< EOT >* >& __funcs, + peoAggEvalFunc< EOT >& __merge_eval + + ) : funcs( __funcs ), merge_eval( __merge_eval ) +{ + +} + + +template< class EOT > void peoParaPopEval< EOT >::operator()( eoPop< EOT >& __pop ) { + + for ( unsigned i = 0; i < __pop.size(); i++ ) { + + __pop[ i ].fitness( typename EOT :: Fitness() ); + + progression[ &__pop[ i ] ].first = funcs.size() - 1; + progression[ &__pop[ i ] ].second = funcs.size(); + + for ( unsigned j = 0; j < funcs.size(); j++ ) { + /* Queuing the 'invalid' solution and its associated owner */ + tasks.push( &__pop[ i ] ); + } + } + + total = funcs.size() * __pop.size(); + requestResourceRequest( funcs.size() * __pop.size() ); + stop(); +} + + +template< class EOT > void peoParaPopEval< EOT > :: packData() { + + // printDebugMessage ("debut pakc data"); + pack( progression[ tasks.front() ].first-- ); + + /* Packing the contents :-) of the solution */ + pack( *tasks.front() ); + + /* Packing the addresses of both the solution and the owner */ + pack( tasks.front() ); + tasks.pop( ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: unpackData() { + + unpack( num_func ); + /* Unpacking the solution */ + unpack( sol ); + /* Unpacking the @ of that one */ + unpack( ad_sol ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: execute() { + + /* Computing the fitness of the solution */ + funcs[ num_func ]->operator()( sol ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: packResult() { + + /* Packing the fitness of the solution */ + pack( sol.fitness() ); + /* Packing the @ of the individual */ + pack( ad_sol ); +} + + +template< class EOT > void peoParaPopEval< EOT > :: unpackResult() { + + typename EOT :: Fitness fit; + + /* Unpacking the computed fitness */ + unpack( fit ); + + /* Unpacking the @ of the associated individual */ + unpack( ad_sol ); + + + /* Associating the fitness the local solution */ + merge_eval( *ad_sol, fit ); + + progression[ ad_sol ].second--; + + /* Notifying the container of the termination of the evaluation */ + if ( !progression[ ad_sol ].second ) { + + progression.erase( ad_sol ); + } + + total--; + if ( !total ) { + + getOwner()->setActive(); + resume(); + } +} + + +template< class EOT > void peoParaPopEval< EOT > :: notifySendingData() { + +} + + +template< class EOT > void peoParaPopEval< EOT > :: notifySendingAllResourceRequests() { + + getOwner()->setPassive(); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoParaSGATransform.h b/trunk/paradiseo-peo/src/peoParaSGATransform.h new file mode 100644 index 000000000..f1bc54a90 --- /dev/null +++ b/trunk/paradiseo-peo/src/peoParaSGATransform.h @@ -0,0 +1,170 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoParaSGATransform.h" + +//(c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoParaSGATransform_h +#define __peoParaSGATransform_h + +#include "peoTransform.h" +#include "core/thread.h" +#include "core/messaging.h" +#include "core/peo_debug.h" + + +extern int getNodeRank(); + + +template< class EOT > class peoParaSGATransform : public peoTransform< EOT > { + +public: + + using peoTransform< EOT > :: requestResourceRequest; + using peoTransform< EOT > :: resume; + using peoTransform< EOT > :: stop; + using peoTransform< EOT > :: getOwner; + + peoParaSGATransform( + + eoQuadOp< EOT >& __cross, + double __cross_rate, + eoMonOp< EOT >& __mut, + double __mut_rate + ); + + void operator()( eoPop< EOT >& __pop ); + + void packData(); + + void unpackData(); + + void execute(); + + void packResult(); + + void unpackResult(); + + void notifySendingData(); + void notifySendingAllResourceRequests(); + +private: + + eoQuadOp< EOT >& cross; + double cross_rate; + + eoMonOp< EOT >& mut; + double mut_rate; + + unsigned idx; + + eoPop< EOT >* pop; + + EOT father, mother; + + unsigned num_term; +}; + +template< class EOT > peoParaSGATransform< EOT > :: peoParaSGATransform( + + eoQuadOp< EOT >& __cross, + double __cross_rate, + eoMonOp < EOT >& __mut, + double __mut_rate + + ) : cross( __cross ), cross_rate( __cross_rate ), mut( __mut ), mut_rate( __mut_rate ) +{ + +} + + +template< class EOT > void peoParaSGATransform< EOT > :: packData() { + + pack( idx ); + :: pack( pop->operator[]( idx++ ) ); + :: pack( pop->operator[]( idx++ ) ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: unpackData() { + + unpack( idx ); + :: unpack( father ); + :: unpack( mother ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: execute() { + + if( rng.uniform() < cross_rate ) cross( mother, father ); + + if( rng.uniform() < mut_rate ) mut( mother ); + if( rng.uniform() < mut_rate ) mut( father ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: packResult() { + + pack( idx ); + :: pack( father ); + :: pack( mother ); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: unpackResult() { + + unsigned sidx; + + unpack( sidx ); + :: unpack( pop->operator[]( sidx++ ) ); + :: unpack( pop->operator[]( sidx ) ); + num_term += 2; + + if( num_term == pop->size() ) { + + getOwner()->setActive(); + resume(); + } +} + + +template< class EOT > void peoParaSGATransform< EOT > :: operator()( eoPop < EOT >& __pop ) { + + printDebugMessage( "performing the parallel transformation step." ); + pop = &__pop; + idx = 0; + num_term = 0; + requestResourceRequest( __pop.size() / 2 ); + stop(); +} + + +template< class EOT > void peoParaSGATransform< EOT > :: notifySendingData() { + +} + + +template< class EOT > void peoParaSGATransform< EOT > :: notifySendingAllResourceRequests() { + + getOwner()->setPassive(); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoPopEval.h b/trunk/paradiseo-peo/src/peoPopEval.h new file mode 100644 index 000000000..944a62c9b --- /dev/null +++ b/trunk/paradiseo-peo/src/peoPopEval.h @@ -0,0 +1,43 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoPopEval.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoPopEval_h +#define __peoPopEval_h + +#include "core/service.h" + +//! Interface for ParadisEO specific evaluation functors. + +//! The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +//! The derived classes may be used as wrappers for EO-derived evaluation functors. In order to have an example, +//! please refer to the implementation of the peoSeqPopEval and peoParaPopEval classes. +template< class EOT > class peoPopEval : public Service { + +public: + + //! Interface function providing the signature for constructing an evaluation functor. + virtual void operator()( eoPop< EOT >& __pop ) = 0; +}; + + +#endif diff --git a/trunk/paradiseo-peo/src/peoSeqPopEval.h b/trunk/paradiseo-peo/src/peoSeqPopEval.h new file mode 100644 index 000000000..02fb9b62d --- /dev/null +++ b/trunk/paradiseo-peo/src/peoSeqPopEval.h @@ -0,0 +1,68 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoSeqPopEval.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSeqPopEval_h +#define __peoSeqPopEval_h + +#include + +#include "peoPopEval.h" + +//! Sequential evaluation functor wrapper. + +//! The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating +//! an eoEvalFunc< EOT >-derived class as evaluation functor. The specified EO evaluation object is applyied in an +//! iterative manner to each individual of a specified population. +template< class EOT > class peoSeqPopEval : public peoPopEval< EOT > { + +public: + + //! Constructor function - it only sets an internal reference to point to the specified evaluation object. + //! + //! @param eoEvalFunc< EOT >& __eval - evaluation object to be applied for each individual of a specified population + peoSeqPopEval( eoEvalFunc< EOT >& __eval ); + + //! Operator for evaluating all the individuals of a given population - in a sequential iterative manner. + //! + //! @param eoPop< EOT >& __pop - population to be evaluated. + void operator()( eoPop< EOT >& __pop ); + +private: + + eoEvalFunc< EOT >& eval; +}; + + +template< class EOT > peoSeqPopEval< EOT > :: peoSeqPopEval( eoEvalFunc< EOT >& __eval ) : eval( __eval ) { + +} + + +template< class EOT > void peoSeqPopEval< EOT > :: operator()( eoPop< EOT >& __pop ) { + + for ( unsigned i = 0; i < __pop.size(); i++ ) + eval( __pop[i] ); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoSeqTransform.h b/trunk/paradiseo-peo/src/peoSeqTransform.h new file mode 100644 index 000000000..0d67cb9e9 --- /dev/null +++ b/trunk/paradiseo-peo/src/peoSeqTransform.h @@ -0,0 +1,81 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoSeqTransform.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSeqTransform_h +#define __peoSeqTransform_h + +#include "peoTransform.h" + + +//! ParadisEO specific wrapper class offering the possibility of using EO derived transform operators. + +//! The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators +//! along with the ParadisEO evolutionary algorithms. A minimal set of interface functions is also provided for creating the +//! link with the parallel architecture of the ParadisEO framework. +template< class EOT > class peoSeqTransform : public peoTransform< EOT > { + +public: + + //! Constructor function - sets an internal reference towards the specified EO-derived transform object. + //! + //! @param eoTransform< EOT >& __trans - EO-derived transform object including crossover and mutation operators. + peoSeqTransform( eoTransform< EOT >& __trans ); + + //! Operator for applying the specified transform operators on each individual of the given population. + //! + //! @param eoPop< EOT >& __pop - population to be transformed by applying the crossover and mutation operators. + void operator()( eoPop< EOT >& __pop ); + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void packData() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void unpackData() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void execute() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void packResult() { } + + //! Interface function for providing a link with the parallel architecture of the ParadisEO framework. + virtual void unpackResult() { } + +private: + + eoTransform< EOT >& trans; +}; + + +template< class EOT > peoSeqTransform< EOT > :: peoSeqTransform( eoTransform< EOT >& __trans ) : trans( __trans ) { + +} + + +template< class EOT > void peoSeqTransform< EOT > :: operator()( eoPop< EOT >& __pop ) { + + trans( __pop ); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoSyncIslandMig.h b/trunk/paradiseo-peo/src/peoSyncIslandMig.h new file mode 100644 index 000000000..fc16d2e9a --- /dev/null +++ b/trunk/paradiseo-peo/src/peoSyncIslandMig.h @@ -0,0 +1,301 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoSyncIslandMig.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSyncIslandMig_h +#define __peoSyncIslandMig_h + + +#include +#include + +#include + +#include + +#include +#include +#include +#include + +#include "core/topology.h" +#include "core/thread.h" +#include "core/eoPop_comm.h" +#include "core/peo_debug.h" + + +//! Class providing the basis for the synchronous island migration model. + +//! The peoSyncIslandMig class offers the elementary basis for implementating a +//! synchronous island migration model - requires the specification of several basic +//! parameters, i.e. frequency of the migrations, selection and replacement strategies, +//! a topological model and the source and destination population for the migrating individuals. +//! The main difference as opposed to the asynchronous migration model is the synchronization step +//! performed after selecting and sending the emigrant individuals. +//! +//! The migration operator is called at the end of each generation of an evolutionary algorithms +//! as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +//! +//! +//! +//! +//! +//! +//! +//! +//!
    do {    
             select( population, offsprings );   // select the offsprings from the current population
             transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
             evaluate( offsprings );   // evaluation step of the resulting offspring
             replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
    } while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
    +//! +//! Constructing a synchronous island migration model requires having defined (1) a topological migration model, +//! (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, +//! and (4) an owner object must be set. The owner object must be derived from the Runner class (for example +//! a peoEA object represents a possible owner). +//! A simple example is offered bellow: +//! +//!
      +//!
    1. topological model to be followed when performing migrations:
      +//!
      +//! +//! +//!
      RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
      +//!
    2. +//! +//!
    3. the continuation criterion, selection and replacement strategy etc. are defined:
      +//!
      +//! +//! +//! +//! +//! +//! +//! +//! +//! +//!
      eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
         
      eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
      eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
      eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
         
      peoSyncIslandMig< EOT > syncMigration( +//!
               MIG_FREQ, migSelect, migReplace, migTopology, +//!
               population, population +//!
      );  
      // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
      +//!
    4. +//! +//!
    5. creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
      +//!
      +//! +//! +//! +//! +//! +//! +//! +//!
      ...    
      eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
      eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
      ...    
      eaCheckpointContinue.add( syncMigration );   // adding the migration operator as checkpoint element
      ...    
      +//!
    6. +//! +//!
    7. definition of an owner evolutionary algorithm (an object inheriting the Runner class):
      +//!
      +//! +//! +//! +//! +//!
      peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
      syncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
      eaAlg( population );   // applying the evolutionary algorithm on a given population
      +//!
    8. +//!
    +//! +//! The source and the destination population for the migration object were specified as being the same, in step no. 2, +//! as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique +//! population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations +//! as source and destination for the emigrant and immigrant individuals respectively. +//! +//! The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several +//! islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and +//! the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 +//! (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +template< class EOT > class peoSyncIslandMig : public Cooperative, public eoUpdater { + +public: + + //! Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined + //! through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. + //! + //! @param unsigned __frequency - frequency of the migrations - the migrations occur periodically; + //! @param eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; + //! @param eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; + //! @param Topology& __topology - topological model to be followed when performing migrations; + //! @param eoPop< EOT >& __source - source population from which the emigrant individuals are selected; + //! @param eoPop< EOT >& __destination - destination population in which the immigrant population are integrated. + peoSyncIslandMig( + unsigned __frequency, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + ); + + //! Function operator to be called as checkpoint for performing the migration step. The emigrant individuals are selected + //! from the source population and sent to the next island (defined by the topology object) while the immigrant + //! individuals are integrated in the destination population. There is no need to explicitly call the function - the + //! wrapper checkpoint object (please refer to the above example) will perform the call when required. + void operator()(); + + //! Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. + void pack(); + //! Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. + void unpack(); + + //! Auxiliary function dealing with migration notifications. There is no need to explicitly call the function. + void notifySending(); + + +private: + + void emigrate(); + void immigrate(); + + +private: + + eoPeriodicContinue< EOT > cont; + eoSelect< EOT >& select; // selection strategy + eoReplacement< EOT >& replace; // replacement strategy + Topology& topology; // neighboring topology + + // source and target populations + eoPop< EOT >& source; + eoPop< EOT >& destination; + + // immigrants & emigrants in the queue + std :: queue< eoPop< EOT > > imm; + std :: queue< eoPop< EOT > > em; + + std :: queue< Cooperative* > coop_em; + + sem_t sync; +}; + + +template< class EOT > peoSyncIslandMig< EOT > :: peoSyncIslandMig( + + unsigned __frequency, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + Topology& __topology, + eoPop< EOT >& __source, + eoPop< EOT >& __destination + + ) : cont( __frequency ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) +{ + + __topology.add( *this ); + sem_init( &sync, 0, 0 ); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: pack() { + + lock(); { + + :: pack( coop_em.front()->getKey() ); + :: pack( em.front() ); + coop_em.pop(); + em.pop(); + } + unlock(); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: unpack() { + + lock(); { + + eoPop< EOT > mig; + :: unpack( mig ); + imm.push( mig ); + } + unlock(); + + sem_post( &sync ); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: emigrate() { + + std :: vector< Cooperative* > in, out; + topology.setNeighbors( this, in, out ); + + for ( unsigned i = 0; i < out.size(); i ++ ) { + + eoPop< EOT > mig; + select( source, mig ); + em.push( mig ); + coop_em.push( out[ i ] ); + send( out[ i ] ); + printDebugMessage( "sending some emigrants." ); + } +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: immigrate() { + + lock(); { + + assert( imm.size() ); + replace( destination, imm.front() ) ; + imm.pop(); + printDebugMessage( "receiving some immigrants." ); + } + unlock(); +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: operator()() { + + if ( !cont( source ) ) { + + // sending emigrants + emigrate(); + stop(); + + // synchronizing + sem_wait( &sync ); + getOwner()->setActive(); + + // receiving immigrants + immigrate(); + } +} + + +template< class EOT > void peoSyncIslandMig< EOT > :: notifySending() { + + lock(); { + + if ( imm.empty() ) { + + printDebugMessage( "entering pasive mode\n" ); + getOwner()->setPassive(); + } + } + unlock(); + + resume(); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoSyncMultiStart.h b/trunk/paradiseo-peo/src/peoSyncMultiStart.h new file mode 100644 index 000000000..65d1cc386 --- /dev/null +++ b/trunk/paradiseo-peo/src/peoSyncMultiStart.h @@ -0,0 +1,198 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoSyncMultiStart.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoSyncMultiStart_h +#define __peoSyncMultiStart_h + +#include +#include + +#include +#include +#include + +#include "core/service.h" +#include "core/messaging.h" +#include "core/peo_debug.h" + + +extern int getNodeRank(); + + +//! Class providing the basis for the synchronous multi-start model. + +//! The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, +//! for launching several solution-based algorithms in parallel on a specified initial population. As a simple +//! example, several hill climbing algorithms may be synchronously launched on the specified population, each +//! algorithm acting upon one individual only, the final result being integrated back in the population. A +//! peoSyncMultiStart object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm +//! thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, +//! for example, executed at the end of each generation. +template< class EOT > class peoSyncMultiStart : public Service, public eoUpdater { + +public: + + //! Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. + //! + //! @param eoContinue< EOT >& __cont - defined for including further functionality - no semantics associated at this time; + //! @param eoSelect< EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; + //! @param eoReplacement< EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population; + //! @param moAlgo< EOT >& __ls - algorithm to be applied on each of the selected individuals - a moAlgo< EOT >-derived object must be specified; + //! @param eoPop< EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm. + peoSyncMultiStart( + + eoContinue< EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + moAlgo< EOT >& __ls, + eoPop< EOT >& __pop + ); + + //! Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. + //! There is no need to explicitly call the operator - automatically called as checkpoint operator. + void operator()(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void packData(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void unpackData(); + + //! Auxiliary function for actually executing the specified algorithm on one assigned individual. There is no need to + //! explicitly call the function. + void execute(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void packResult(); + + //! Auxiliary function for transferring data between the process requesting the synchronous execution of the specified + //! algorithm and the process which actually executes the algorithm. There is no need to explicitly call the function. + void unpackResult(); + + //! Auxiliary function for notifications between the process requesting the synchronous multi-start execution + //! and the processes that performs the actual execution phase. There is no need to explicitly call the function. + void notifySendingData(); + + //! Auxiliary function for notifications between the process requesting the synchronous multi-start execution + //! and the processes that performs the actual execution phase. There is no need to explicitly call the function. + void notifySendingAllResourceRequests(); + +private: + + eoContinue< EOT >& cont; + eoSelect< EOT >& select; + eoReplacement< EOT >& replace; + + moAlgo< EOT >& ls; + + eoPop< EOT >& pop; + eoPop< EOT > sel; + eoPop< EOT > impr_sel; + + EOT sol; + unsigned idx; + unsigned num_term; +}; + + +template< class EOT > peoSyncMultiStart< EOT > :: peoSyncMultiStart( + + eoContinue < EOT >& __cont, + eoSelect< EOT >& __select, + eoReplacement< EOT >& __replace, + moAlgo < EOT >& __ls, + eoPop< EOT >& __pop + + ) : cont( __cont ), select( __select ), replace( __replace ), ls( __ls ), pop( __pop ) +{ + +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: packData() { + + :: pack( sel[ idx++ ] ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: unpackData() { + + unpack( sol ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: execute() { + + ls( sol ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: packResult() { + + pack( sol ); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: unpackResult() { + + unpack( sol ); + impr_sel.push_back( sol ); + num_term++; + + if ( num_term == sel.size() ) { + + getOwner()->setActive(); + replace( pop, impr_sel ); + + printDebugMessage( "replacing the improved individuals in the population." ); + resume(); + } +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: operator()() { + + printDebugMessage( "performing the parallel multi-start hybridization." ); + select( pop, sel ); + impr_sel.clear(); + idx = num_term = 0; + requestResourceRequest( sel.size() ); + stop(); +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingData() { + +} + + +template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingAllResourceRequests() { + + getOwner()->setPassive(); +} + + +#endif diff --git a/trunk/paradiseo-peo/src/peoTransform.h b/trunk/paradiseo-peo/src/peoTransform.h new file mode 100644 index 000000000..5f5bc7099 --- /dev/null +++ b/trunk/paradiseo-peo/src/peoTransform.h @@ -0,0 +1,40 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "peoTransform.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __peoTransform_h +#define __peoTransform_h + +#include + +#include "core/service.h" + +//! Interface class for constructing more complex transformation operators. + +//! The peoTransform class acts only as an interface for creating transform operators - for an example +//! please refer to the peoSeqTransform and the peoParaSGATransform classes. +template< class EOT > class peoTransform : public Service, public eoTransform< EOT > { + +}; + + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/Makefile.am b/trunk/paradiseo-peo/src/rmc/Makefile.am new file mode 100755 index 000000000..c9ed98209 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/Makefile.am @@ -0,0 +1 @@ +SUBDIRS= mpi diff --git a/trunk/paradiseo-peo/src/rmc/Makefile.in b/trunk/paradiseo-peo/src/rmc/Makefile.in new file mode 100755 index 000000000..7037aabb0 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/Makefile.in @@ -0,0 +1,443 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = src/rmc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = mpi +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rmc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/rmc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-recursive ctags ctags-recursive \ + distclean distclean-generic distclean-recursive distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/paradiseo-peo/src/rmc/mpi/Makefile.am b/trunk/paradiseo-peo/src/rmc/mpi/Makefile.am new file mode 100755 index 000000000..f26f2c413 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/Makefile.am @@ -0,0 +1,39 @@ +CXX=mpicxx + +INCLUDES = \ + `xml2-config --cflags` \ + -I$(EO_DIR)/src + +AM_CXXFLAGS =\ + -g \ + -Wall + +lib_LIBRARIES = librmc_mpi.a + +librmc_mpi_a_SOURCES = \ + node.h \ + node.cpp \ + param.h \ + param.cpp \ + comm.h \ + comm.cpp \ + coop.h \ + coop.cpp \ + mess.h \ + mess.cpp \ + rmc.cpp \ + scheduler.h \ + scheduler.cpp \ + worker.h \ + worker.cpp \ + send.h \ + send.cpp \ + recv.h \ + recv.cpp \ + xml_parser.h \ + xml_parser.cpp \ + schema.h \ + schema.cpp \ + runner.cpp \ + service.h \ + service.cpp diff --git a/trunk/paradiseo-peo/src/rmc/mpi/Makefile.in b/trunk/paradiseo-peo/src/rmc/mpi/Makefile.in new file mode 100755 index 000000000..685a66c45 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/Makefile.in @@ -0,0 +1,476 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = src/rmc/mpi +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" +libLIBRARIES_INSTALL = $(INSTALL_DATA) +LIBRARIES = $(lib_LIBRARIES) +AR = ar +ARFLAGS = cru +librmc_mpi_a_AR = $(AR) $(ARFLAGS) +librmc_mpi_a_LIBADD = +am_librmc_mpi_a_OBJECTS = node.$(OBJEXT) param.$(OBJEXT) \ + comm.$(OBJEXT) coop.$(OBJEXT) mess.$(OBJEXT) rmc.$(OBJEXT) \ + scheduler.$(OBJEXT) worker.$(OBJEXT) send.$(OBJEXT) \ + recv.$(OBJEXT) xml_parser.$(OBJEXT) schema.$(OBJEXT) \ + runner.$(OBJEXT) service.$(OBJEXT) +librmc_mpi_a_OBJECTS = $(am_librmc_mpi_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(librmc_mpi_a_SOURCES) +DIST_SOURCES = $(librmc_mpi_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = mpicxx +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EO_DIR = @EO_DIR@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = \ + `xml2-config --cflags` \ + -I$(EO_DIR)/src + +AM_CXXFLAGS = \ + -g \ + -Wall + +lib_LIBRARIES = librmc_mpi.a +librmc_mpi_a_SOURCES = \ + node.h \ + node.cpp \ + param.h \ + param.cpp \ + comm.h \ + comm.cpp \ + coop.h \ + coop.cpp \ + mess.h \ + mess.cpp \ + rmc.cpp \ + scheduler.h \ + scheduler.cpp \ + worker.h \ + worker.cpp \ + send.h \ + send.cpp \ + recv.h \ + recv.cpp \ + xml_parser.h \ + xml_parser.cpp \ + schema.h \ + schema.cpp \ + runner.cpp \ + service.h \ + service.cpp + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rmc/mpi/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/rmc/mpi/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p=$(am__strip_dir) \ + echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +librmc_mpi.a: $(librmc_mpi_a_OBJECTS) $(librmc_mpi_a_DEPENDENCIES) + -rm -f librmc_mpi.a + $(librmc_mpi_a_AR) librmc_mpi.a $(librmc_mpi_a_OBJECTS) $(librmc_mpi_a_LIBADD) + $(RANLIB) librmc_mpi.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/param.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scheduler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schema.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/send.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/worker.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml_parser.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-libLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLIBRARIES + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLIBRARIES install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am uninstall-libLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/trunk/paradiseo-peo/src/rmc/mpi/comm.cpp b/trunk/paradiseo-peo/src/rmc/mpi/comm.cpp new file mode 100644 index 000000000..fb61a5a24 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/comm.cpp @@ -0,0 +1,82 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "comm.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + + +#include + +#include "comm.h" +#include "mess.h" +#include "node.h" +#include "param.h" +#include "../../core/peo_debug.h" +#include "../../core/runner.h" +#include "send.h" +#include "recv.h" +#include "scheduler.h" + +static sem_t sem_comm_init; + +static Communicator * the_thread; + +Communicator :: Communicator (int * __argc, char * * * __argv) { + + the_thread = this; + initNode (__argc, __argv); + loadRMCParameters (* __argc, * __argv); + sem_post (& sem_comm_init); +} + +void Communicator :: start () { + + while (true) { + + /* Zzz Zzz Zzz :-))) */ + sleep (); + sendMessages (); + + if (! atLeastOneActiveRunner ()) + break; + receiveMessages (); + } + waitBuffers (); + printDebugMessage ("finalizing"); + MPI_Finalize (); +} + +void initCommunication () { + + sem_init (& sem_comm_init, 0, 0); +} + +void waitNodeInitialization () { + + sem_wait (& sem_comm_init); +} + +void wakeUpCommunicator () { + + the_thread -> wakeUp (); +} + + + diff --git a/trunk/paradiseo-peo/src/rmc/mpi/comm.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/comm.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/comm.h b/trunk/paradiseo-peo/src/rmc/mpi/comm.h new file mode 100644 index 000000000..f8b724246 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/comm.h @@ -0,0 +1,46 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "comm.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __comm_mpi_h +#define __comm_mpi_h + +#include "../../core/communicable.h" +#include "../../core/reac_thread.h" + +class Communicator : public ReactiveThread { + +public : + + /* Ctor */ + Communicator (int * __argc, char * * * __argv); + + void start (); +}; + +extern void initCommunication (); + +extern void waitNodeInitialization (); + +extern void wakeUpCommunicator (); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/comm.h: b/trunk/paradiseo-peo/src/rmc/mpi/comm.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/coop.cpp b/trunk/paradiseo-peo/src/rmc/mpi/coop.cpp new file mode 100644 index 000000000..8f9365cf8 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/coop.cpp @@ -0,0 +1,57 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "coop.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "../../core/cooperative.h" +#include "send.h" +#include "tags.h" +#include "schema.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +Runner * Cooperative :: getOwner () { + + return owner; +} + +void Cooperative :: setOwner (Runner & __runner) { + + owner = & __runner; +} + +void Cooperative :: send (Cooperative * __coop) { + + :: send (this, getRankOfRunner (__coop -> getOwner () -> getID ()), COOP_TAG); + // stop (); +} + +Cooperative * getCooperative (COOP_ID __key) { + + return dynamic_cast (getCommunicable (__key)); +} + +void Cooperative :: notifySending () { + + //getOwner -> setPassive (); + // resume (); + // printDebugMessage (b); +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/coop.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/coop.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/mess.cpp b/trunk/paradiseo-peo/src/rmc/mpi/mess.cpp new file mode 100644 index 000000000..4906b23cc --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/mess.cpp @@ -0,0 +1,252 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "mess.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include "mess.h" +#include "../../core/peo_debug.h" +#include "node.h" + +#define MPI_BUF_SIZE 1024*64 + +static char mpi_buf [MPI_BUF_SIZE]; + +static int pos_buf ; + +static std :: vector act_buf; /* Active buffers */ + +static std :: vector act_req; /* Active requests */ + +void cleanBuffers () { + + for (unsigned i = 0; i < act_req.size ();) { + + MPI_Status stat ; + int flag ; + MPI_Test (act_req [i], & flag, & stat) ; + if (flag) { + + delete act_buf [i] ; + delete act_req [i] ; + + act_buf [i] = act_buf.back () ; + act_buf.pop_back () ; + + act_req [i] = act_req.back () ; + act_req.pop_back () ; + } + else + i ++; + } +} + +void waitBuffers () { + + printDebugMessage ("waiting the termination of the asynchronous operations to complete"); + + for (unsigned i = 0; i < act_req.size (); i ++) { + + MPI_Status stat ; + + MPI_Wait (act_req [i], & stat) ; + + delete act_buf [i] ; + delete act_req [i] ; + } +} + +bool probeMessage (int & __src, int & __tag) { + + int flag; + + MPI_Status stat; + + MPI_Iprobe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & flag, & stat); + + __src = stat.MPI_SOURCE; + __tag = stat.MPI_TAG; + + return flag; +} + +void waitMessage () { + + MPI_Status stat; + + MPI_Probe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & stat); +} + +void initMessage () { + + pos_buf = 0; +} + +void sendMessage (int __to, int __tag) { + + cleanBuffers (); + act_buf.push_back (new char [pos_buf]); + act_req.push_back (new MPI_Request); + memcpy (act_buf.back (), mpi_buf, pos_buf); + MPI_Isend (act_buf.back (), pos_buf, MPI_PACKED, __to, __tag, MPI_COMM_WORLD, act_req.back ()); +} + +void sendMessageToAll (int __tag) { + + for (int i = 0; i < getNumberOfNodes (); i ++) + sendMessage (i, __tag); +} + +void receiveMessage (int __from, int __tag) { + + MPI_Status stat; + MPI_Request req; + + MPI_Irecv (mpi_buf, MPI_BUF_SIZE, MPI_PACKED, __from, __tag, MPI_COMM_WORLD, & req) ; + MPI_Wait (& req, & stat) ; +} + +/* Char */ +void pack (const char & __c) { + + MPI_Pack ((void *) & __c, 1, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Float */ +void pack (const float & __f, int __nitem) { + + MPI_Pack ((void *) & __f, __nitem, MPI_FLOAT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Double */ +void pack (const double & __d, int __nitem) { + + MPI_Pack ((void *) & __d, __nitem, MPI_DOUBLE, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Integer */ +void pack (const int & __i, int __nitem) { + + MPI_Pack ((void *) & __i, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned int. */ +void pack (const unsigned int & __ui, int __nitem) { + + MPI_Pack ((void *) & __ui, __nitem, MPI_UNSIGNED, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Short int. */ +void pack (const short & __sh, int __nitem) { + + MPI_Pack ((void *) & __sh, __nitem, MPI_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned short */ +void pack (const unsigned short & __ush, int __nitem) { + + MPI_Pack ((void *) & __ush, __nitem, MPI_UNSIGNED_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Long */ +void pack (const long & __l, int __nitem) { + + MPI_Pack ((void *) & __l, __nitem, MPI_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned long */ +void pack (const unsigned long & __ul, int __nitem) { + + MPI_Pack ((void *) & __ul, __nitem, MPI_UNSIGNED_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* String */ +void pack (const char * __str) { + + int len = strlen (__str) + 1; + MPI_Pack (& len, 1, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); + MPI_Pack ((void *) __str, len, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Char */ +void unpack (char & __c) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __c, 1, MPI_CHAR, MPI_COMM_WORLD); +} + +/* Float */ +void unpack (float & __f, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __f, __nitem, MPI_FLOAT, MPI_COMM_WORLD); +} + +/* Double */ +void unpack (double & __d, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __d, __nitem, MPI_DOUBLE, MPI_COMM_WORLD); +} + +/* Integer */ +void unpack (int & __i, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __i, __nitem, MPI_INT, MPI_COMM_WORLD); +} + +/* Unsigned int. */ +void unpack (unsigned int & __ui, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ui, __nitem, MPI_UNSIGNED, MPI_COMM_WORLD); +} + +/* Short int. */ +void unpack (short & __sh, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __sh, __nitem, MPI_SHORT, MPI_COMM_WORLD); +} + +/* Unsigned short */ +void unpack (unsigned short & __ush, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ush, __nitem, MPI_UNSIGNED_SHORT, MPI_COMM_WORLD); +} + +/* Long */ +void unpack (long & __l, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __l, __nitem, MPI_LONG, MPI_COMM_WORLD); +} + +/* Unsigned long */ +void unpack (unsigned long & __ul, int __nitem) { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ul, __nitem, MPI_UNSIGNED_LONG, MPI_COMM_WORLD); +} + +/* String */ +void unpack (char * __str) { + + int len; + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD); + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, __str, len, MPI_CHAR, MPI_COMM_WORLD); +} + diff --git a/trunk/paradiseo-peo/src/rmc/mpi/mess.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/mess.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/mess.h b/trunk/paradiseo-peo/src/rmc/mpi/mess.h new file mode 100644 index 000000000..ac38a42f4 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/mess.h @@ -0,0 +1,46 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "mess.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __mess_rmc_h +#define __mess_rmc_h + +#include "../../core/messaging.h" + +extern void initMessage (); + +extern void sendMessage (int __to, int __tag); + +extern void sendMessageToAll (int __tag); + +extern void receiveMessage (int __from, int __tag); + +extern void cleanBuffers (); + +extern void waitBuffers (); + +extern bool probeMessage (int & __src, int & __tag); + +extern void waitMessage (); + +#endif + diff --git a/trunk/paradiseo-peo/src/rmc/mpi/mess.h: b/trunk/paradiseo-peo/src/rmc/mpi/mess.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/node.cpp b/trunk/paradiseo-peo/src/rmc/mpi/node.cpp new file mode 100644 index 000000000..b72589fa7 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/node.cpp @@ -0,0 +1,73 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "node.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include +#include +#include + +static int rk, sz; /* Rank & size */ + +static std :: map name_to_rk; + +static std :: vector rk_to_name; + +int getNodeRank () { + + return rk; +} + +int getNumberOfNodes () { + + return sz; +} + +int getRankFromName (const std :: string & __name) { + + return atoi (__name.c_str ()); +} + +void initNode (int * __argc, char * * * __argv) { + + int provided; + MPI_Init_thread (__argc, __argv, MPI_THREAD_FUNNELED, & provided); + assert (provided == MPI_THREAD_FUNNELED); /* The MPI implementation must be multi-threaded. + Yet, only one thread performs the comm. + operations */ + MPI_Comm_rank (MPI_COMM_WORLD, & rk); /* Who ? */ + MPI_Comm_size (MPI_COMM_WORLD, & sz); /* How many ? */ + + char names [sz] [MPI_MAX_PROCESSOR_NAME]; + int len; + + /* Processor names */ + MPI_Get_processor_name (names [0], & len); /* Me */ + MPI_Allgather (names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, MPI_COMM_WORLD); /* Broadcast */ + + for (int i = 0; i < sz; i ++) { + rk_to_name.push_back (names [i]); + name_to_rk [names [i]] = i; + } +} + diff --git a/trunk/paradiseo-peo/src/rmc/mpi/node.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/node.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/node.h b/trunk/paradiseo-peo/src/rmc/mpi/node.h new file mode 100644 index 000000000..6f5c81092 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/node.h @@ -0,0 +1,39 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "node.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __node_h +#define __node_h + +#include +#include + +extern int getNodeRank (); /* It gives the rank of the calling process */ + +extern int getNumberOfNodes (); /* It gives the size of the environment (Total number of nodes) */ + +extern int getRankFromName (const std :: string & __name); /* It gives the rank of the process + expressed by its name */ + +extern void initNode (int * __argc, char * * * __argv); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/node.h: b/trunk/paradiseo-peo/src/rmc/mpi/node.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/param.cpp b/trunk/paradiseo-peo/src/rmc/mpi/param.cpp new file mode 100644 index 000000000..b96f10aba --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/param.cpp @@ -0,0 +1,36 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "param.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "schema.h" + +void loadRMCParameters (int & __argc, char * * & __argv) { + + eoParser parser (__argc, __argv); + + /* Schema */ + eoValueParam schema_param ("schema.xml", "schema", "?"); + parser.processParam (schema_param); + loadSchema (schema_param.value ().c_str ()); +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/param.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/param.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/param.h b/trunk/paradiseo-peo/src/rmc/mpi/param.h new file mode 100644 index 000000000..04fe34e55 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/param.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "param.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __rmc_param_h +#define __rmc_param_h + +extern void loadRMCParameters (int & __argc, char * * & __argv); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/param.h: b/trunk/paradiseo-peo/src/rmc/mpi/param.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/recv.cpp b/trunk/paradiseo-peo/src/rmc/mpi/recv.cpp new file mode 100644 index 000000000..35769de9b --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/recv.cpp @@ -0,0 +1,127 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "recv.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "comm.h" +#include "tags.h" +#include "worker.h" +#include "scheduler.h" +#include "mess.h" +#include "node.h" +#include "../../core/runner.h" +#include "../../core/cooperative.h" +#include "../../core/peo_debug.h" + +void receiveMessages () { + + cleanBuffers (); + + do { + + if (! atLeastOneActiveThread ()) { + // printDebugMessage ("debut wait"); + waitMessage (); + //printDebugMessage ("fin wait"); + } + + int src, tag; + + while (probeMessage (src, tag)) { + + receiveMessage (src, tag); + initMessage (); + /* + char b [1000]; + sprintf (b, "traitement recv %d\n", tag); + printDebugMessage (b); + */ + + switch (tag) { + + case RUNNER_STOP_TAG: + unpackTerminationOfRunner (); + wakeUpCommunicator (); + break; + + case COOP_TAG: + // printDebugMessage ("reception de message de cooperation"); + COOP_ID coop_id; + unpack (coop_id); + getCooperative (coop_id) -> unpack (); + break; + + case SCHED_REQUEST_TAG: + unpackResourceRequest (); + break; + + case SCHED_RESULT_TAG: + { + /* Unpacking the resource */ + SERVICE_ID serv_id; + unpack (serv_id); + Service * serv = getService (serv_id); + int dest; + unpack (dest); + WORKER_ID worker_id; + unpack (worker_id); + + /* Going back ... */ + initMessage (); + pack (worker_id); + pack (serv_id); + serv -> packData (); + serv -> notifySendingData (); + sendMessage (dest, TASK_DATA_TAG); + break; + } + + case TASK_DATA_TAG: + { + WORKER_ID worker_id; + unpack (worker_id); + Worker * worker = getWorker (worker_id); + worker -> setSource (src); + worker -> unpackData (); + worker -> wakeUp (); + break; + } + + case TASK_RESULT_TAG: + { + SERVICE_ID serv_id; + unpack (serv_id); + Service * serv = getService (serv_id); + serv -> unpackResult (); + break; + } + + case TASK_DONE_TAG: + unpackTaskDone (); + break; + + default: + ; + }; + } + + } while (! atLeastOneActiveThread () && atLeastOneActiveRunner () /*&& ! allResourcesFree ()*/); +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/recv.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/recv.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/recv.h b/trunk/paradiseo-peo/src/rmc/mpi/recv.h new file mode 100644 index 000000000..9787ca6f5 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/recv.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "recv.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __recv_h +#define __recv_h + +extern void receiveMessages (); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/recv.h: b/trunk/paradiseo-peo/src/rmc/mpi/recv.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp b/trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp new file mode 100644 index 000000000..5fd2e248c --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp @@ -0,0 +1,62 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; messent-column: 35; -*- + +// "rmc.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "send.h" +#include "worker.h" +#include "schema.h" +#include "comm.h" +#include "scheduler.h" +#include "../../core/peo_debug.h" + +static std :: vector ll_threads; /* Low level threads */ + +void runRMC () { + + /* Worker(s) ? */ + for (unsigned i = 0; i < my_node -> num_workers; i ++) + addThread (new Worker, ll_threads); + + wakeUpCommunicator (); +} + +void initRMC (int & __argc, char * * & __argv) { + + /* Communication */ + initCommunication (); + addThread (new Communicator (& __argc, & __argv), ll_threads); + waitNodeInitialization (); + initSending (); + + /* Scheduler */ + if (isScheduleNode ()) + initScheduler (); + + /// +} + +void finalizeRMC () { + + printDebugMessage ("before join threads RMC"); + joinThreads (ll_threads); + printDebugMessage ("after join threads RMC"); +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/rmc.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/runner.cpp b/trunk/paradiseo-peo/src/rmc/mpi/runner.cpp new file mode 100644 index 000000000..fdc6e680b --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/runner.cpp @@ -0,0 +1,48 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "runner.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "../../core/messaging.h" +#include "../../core/runner.h" +#include "node.h" +#include "send.h" +#include "tags.h" +#include "schema.h" + +bool Runner :: isLocal () { + + for (unsigned i = 0; i < my_node -> id_run.size (); i ++) + if (my_node -> id_run [i] == id) + return true; + return false; +} + +void Runner :: packTermination () { + + pack (id); +} + +void Runner :: terminate () { + + sendToAll (this, RUNNER_STOP_TAG); +} + diff --git a/trunk/paradiseo-peo/src/rmc/mpi/runner.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/runner.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp b/trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp new file mode 100644 index 000000000..2d5c55302 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp @@ -0,0 +1,93 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "sched_thread.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "scheduler.h" +#include "tags.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +static std :: queue resources; /* Free resources */ + +static std :: queue requests; /* Requests */ + +static unsigned initNumberOfRes = 0; + +void initScheduler () { + + for (unsigned i = 0; i < the_schema.size (); i ++) { + + const Node & node = the_schema [i]; + + if (node.rk_sched == my_node -> rk) + for (unsigned j = 0; j < node.num_workers; j ++) + resources.push (std :: pair (i, j + 1)); + } + initNumberOfRes = resources.size (); +} + +bool allResourcesFree () { + + return resources.size () == initNumberOfRes; +} + +static void update () { + + unsigned num_alloc = std :: min (resources.size (), requests.size ()); + + for (unsigned i = 0; i < num_alloc; i ++) { + + SCHED_REQUEST req = requests.front (); + requests.pop (); + + SCHED_RESOURCE res = resources.front (); + resources.pop (); + + printDebugMessage ("allocating a resource."); + initMessage (); + pack (req.second); + pack (res); + sendMessage (req.first, SCHED_RESULT_TAG); + } +} + +void unpackResourceRequest () { + + printDebugMessage ("queuing a resource request."); + SCHED_REQUEST req; + unpack (req); + requests.push (req); + update (); +} + +void unpackTaskDone () { + + printDebugMessage ("I'm notified a worker is now idle."); + SCHED_RESOURCE res; + unpack (res); + resources.push (res); + if (resources.size () == initNumberOfRes) + printDebugMessage ("all the resources are now free."); + update (); +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/scheduler.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/scheduler.h b/trunk/paradiseo-peo/src/rmc/mpi/scheduler.h new file mode 100644 index 000000000..9b8b022b0 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/scheduler.h @@ -0,0 +1,47 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "scheduler.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __scheduler_h +#define __scheduler_h + +#include + +#include "schema.h" +#include "worker.h" + +typedef std :: pair SCHED_RESOURCE; + +typedef std :: pair SCHED_REQUEST; + +/* Initializing the list of available workers */ +extern void initScheduler (); + +/* Processing a resource request from a service */ +extern void unpackResourceRequest (); + +/* Being known a worker is now idle :-) */ +extern void unpackTaskDone (); + +extern bool allResourcesFree (); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/scheduler.h: b/trunk/paradiseo-peo/src/rmc/mpi/scheduler.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/schema.cpp b/trunk/paradiseo-peo/src/rmc/mpi/schema.cpp new file mode 100644 index 000000000..dc7efcf5b --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/schema.cpp @@ -0,0 +1,150 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "schema.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include "schema.h" +#include "xml_parser.h" +#include "comm.h" +#include "node.h" +#include "../../core/peo_debug.h" + +std :: vector the_schema; + +Node * my_node; + +RANK_ID getRankOfRunner (RUNNER_ID __key) { + + for (unsigned i = 0; i < the_schema.size (); i ++) + for (unsigned j = 0; j < the_schema [i].id_run.size (); j ++) + if (the_schema [i].id_run [j] == __key) + return the_schema [i].rk; + assert (false); + return 0; +} + +static void loadNode (int __rk_sched) { + + Node node; + + node.rk_sched = __rk_sched; + + /* ATT: name*/ + node.rk = getRankFromName (getAttributeValue ("name")); + /* ATT: num_workers */ + node.num_workers = atoi (getAttributeValue ("num_workers").c_str ()); + + while (true) { + + /* TAG: | */ + std :: string name = getNextNode (); + assert (name == "runner" || name == "node"); + if (name == "runner") { + /* TAG: */ + node.id_run.push_back (atoi (getNextNode ().c_str ())); + /* TAG: */ + assert (getNextNode () == "runner"); + } + else { + /* TAG: */ + the_schema.push_back (node); + break; + } + } +} + +static void loadGroup () { + + std :: string name; + + /* ATT: scheduler*/ + int rk_sched = getRankFromName (getAttributeValue ("scheduler")); + + while (true) { + + /* TAG: | */ + name = getNextNode (); + assert (name == "node" || name == "group"); + if (name == "node") + /* TAG: */ + loadNode (rk_sched); + else + /* TAG: */ + break; + } +} + +bool isScheduleNode () { + + return my_node -> rk == my_node -> rk_sched; +} + +void loadSchema (const char * __filename) { + + openXMLDocument (__filename); + + std :: string name; + + /* TAG: */ + name = getNextNode (); + assert (name == "schema"); + + while (true) { + + /* TAG: | */ + name = getNextNode (); + assert (name == "group" || name == "schema"); + if (name == "group") + /* TAG: */ + loadGroup (); + else + /* TAG: */ + break; + } + + /* Looking for my node */ + for (unsigned i = 0; i < the_schema.size (); i ++) + if (the_schema [i].rk == getNodeRank ()) + my_node = & (the_schema [i]); + + /* About me */ + char mess [1000]; + + sprintf (mess, "my rank is %d", my_node -> rk); + printDebugMessage (mess); + if (isScheduleNode ()) + printDebugMessage ("I'am a scheduler"); + for (unsigned i = 0; i < my_node -> id_run.size (); i ++) { + sprintf (mess, "I manage the runner %d", my_node -> id_run [i]); + printDebugMessage (mess); + } + if (my_node -> num_workers) { + + sprintf (mess, "I manage %d worker(s)", my_node -> num_workers); + printDebugMessage (mess); + } + + closeXMLDocument (); +} + diff --git a/trunk/paradiseo-peo/src/rmc/mpi/schema.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/schema.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/schema.h b/trunk/paradiseo-peo/src/rmc/mpi/schema.h new file mode 100644 index 000000000..71f715cd7 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/schema.h @@ -0,0 +1,54 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "schema.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __schema_h +#define __schema_h + +#include +#include +#include + +#include "../../core/runner.h" + +typedef int RANK_ID; + +struct Node { + + RANK_ID rk; /* Rank */ + std :: string name; /* Host name */ + unsigned num_workers; /* Number of parallel workers */ + int rk_sched; /* rank of the scheduler */ + std :: vector id_run; /* List of runners */ +}; + +extern std :: vector the_schema; + +extern Node * my_node; + +extern void loadSchema (const char * __filename); + +extern RANK_ID getRankOfRunner (RUNNER_ID __key); + +extern bool isScheduleNode (); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/schema.h: b/trunk/paradiseo-peo/src/rmc/mpi/schema.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/send.cpp b/trunk/paradiseo-peo/src/rmc/mpi/send.cpp new file mode 100644 index 000000000..7238b42b1 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/send.cpp @@ -0,0 +1,131 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "send.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include + +#include "tags.h" +#include "comm.h" +#include "worker.h" +#include "scheduler.h" +#include "mess.h" +#include "node.h" +#include "../../core/cooperative.h" +#include "../../core/peo_debug.h" + +#define TO_ALL -1 + +typedef struct { + + Communicable * comm; + int to; + int tag; + +} SEND_REQUEST; + +static std :: queue mess; + +static sem_t sem_send; + +void initSending () { + + sem_init (& sem_send, 0, 1); +} + +void send (Communicable * __comm, int __to, int __tag) { + + SEND_REQUEST req; + req.comm = __comm; + req.to = __to; + req.tag = __tag; + + sem_wait (& sem_send); + mess.push (req); + sem_post (& sem_send); + wakeUpCommunicator (); +} + +void sendToAll (Communicable * __comm, int __tag) { + + send (__comm, TO_ALL, __tag); +} + +void sendMessages () { + + sem_wait (& sem_send); + + while (! mess.empty ()) { + + SEND_REQUEST req = mess.front (); + /* + char b [1000]; + sprintf (b, "traitement send %d\n", req.tag); + printDebugMessage (b); + */ + + Communicable * comm = req.comm; + + initMessage (); + + switch (req.tag) { + + case RUNNER_STOP_TAG: + dynamic_cast (comm) -> packTermination (); + dynamic_cast (comm) -> notifySendingTermination (); + break; + + case COOP_TAG: + dynamic_cast (comm) -> pack (); + dynamic_cast (comm) -> notifySending (); + break; + + case SCHED_REQUEST_TAG: + dynamic_cast (comm) -> packResourceRequest (); + dynamic_cast (comm) -> notifySendingResourceRequest (); + break; + + case TASK_RESULT_TAG: + dynamic_cast (comm) -> packResult (); + dynamic_cast (comm) -> notifySendingResult (); + break; + + case TASK_DONE_TAG: + dynamic_cast (comm) -> packTaskDone (); + dynamic_cast (comm) -> notifySendingTaskDone (); + break; + + default : + break; + + }; + + if (req.to == TO_ALL) + sendMessageToAll (req.tag); + else + sendMessage (req.to, req.tag); + mess.pop (); + } + + sem_post (& sem_send); +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/send.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/send.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/send.h b/trunk/paradiseo-peo/src/rmc/mpi/send.h new file mode 100644 index 000000000..a68787ae2 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/send.h @@ -0,0 +1,37 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "send.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __send_h +#define __send_h + +#include "../../core/communicable.h" + +extern void initSending (); + +extern void send (Communicable * __comm, int __to, int __tag); + +extern void sendToAll (Communicable * __comm, int __tag); + +extern void sendMessages (); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/send.h: b/trunk/paradiseo-peo/src/rmc/mpi/send.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/service.cpp b/trunk/paradiseo-peo/src/rmc/mpi/service.cpp new file mode 100644 index 000000000..8fe4d8277 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/service.cpp @@ -0,0 +1,45 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "service.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "../../core/service.h" +#include "../../core/messaging.h" +#include "node.h" +#include "tags.h" +#include "send.h" +#include "scheduler.h" + +void Service :: requestResourceRequest (unsigned __how_many) { + + num_sent_rr = __how_many; + for (unsigned i = 0; i < __how_many; i ++) + send (this, my_node -> rk_sched, SCHED_REQUEST_TAG); +} + +void Service :: packResourceRequest () { + + SCHED_REQUEST req; + req.first = getNodeRank (); + req.second = getKey (); + // printf ("demande de ressource pour %d\n", req.second); + :: pack (req); +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/service.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/service.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/tags.h b/trunk/paradiseo-peo/src/rmc/mpi/tags.h new file mode 100644 index 000000000..dc977fda5 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/tags.h @@ -0,0 +1,39 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "tags.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __tags_h +#define __tags_h + +#define RUNNER_STOP_TAG 13 + +#define COOP_TAG 14 + +#define SCHED_REQUEST_TAG 16 + +#define SCHED_RESULT_TAG 17 +#define TASK_DATA_TAG 18 + +#define TASK_RESULT_TAG 19 +#define TASK_DONE_TAG 20 + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/tags.h: b/trunk/paradiseo-peo/src/rmc/mpi/tags.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/worker.cpp b/trunk/paradiseo-peo/src/rmc/mpi/worker.cpp new file mode 100644 index 000000000..4d1b97c16 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/worker.cpp @@ -0,0 +1,109 @@ + +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "worker.cpp" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "tags.h" +#include "send.h" +#include "node.h" +#include "schema.h" +#include "worker.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +static std :: vector key_to_worker (1); /* Vector of registered workers */ + +Worker * getWorker (WORKER_ID __key) { + + return key_to_worker [__key]; +} + +Worker :: Worker () { + + toto = false; + id = key_to_worker.size (); + key_to_worker.push_back (this); +} + +void Worker :: packResult () { + + pack (serv_id); + serv -> packResult (); +} + +void Worker :: unpackData () { + + printDebugMessage ("unpacking the ID. of the service."); + unpack (serv_id); + serv = getService (serv_id); + printDebugMessage ("found the service."); + serv -> unpackData (); + printDebugMessage ("unpacking the data."); + setActive (); +} + +void Worker :: packTaskDone () { + + pack (getNodeRank ()); + pack (id); +} + +void Worker :: notifySendingResult () { + + /* Notifying the scheduler of the termination */ + toto = true; + wakeUp (); +} + +void Worker :: notifySendingTaskDone () { + + setPassive (); +} + +void Worker :: setSource (int __rank) { + + src = __rank; +} + +void Worker :: start () { + + while (true) { + + sleep (); + + if (! atLeastOneActiveRunner ()) + break; + + if (toto) { + send (this, my_node -> rk_sched, TASK_DONE_TAG); + toto = false; + } + else { + + printDebugMessage ("executing the task."); + serv -> execute (); + send (this, src, TASK_RESULT_TAG); + } + } +} diff --git a/trunk/paradiseo-peo/src/rmc/mpi/worker.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/worker.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/worker.h b/trunk/paradiseo-peo/src/rmc/mpi/worker.h new file mode 100644 index 000000000..000e3b7ae --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/worker.h @@ -0,0 +1,65 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "worker.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __worker_h +#define __worker_h + +#include "../../core/communicable.h" +#include "../../core/reac_thread.h" +#include "../../core/service.h" + +typedef unsigned WORKER_ID; + +class Worker : public Communicable, public ReactiveThread { + +public : + + Worker (); + + void start (); + + void packResult (); + + void unpackData (); + + void packTaskDone (); + + void notifySendingResult (); + + void notifySendingTaskDone (); + + void setSource (int __rank); + +private : + + WORKER_ID id; + SERVICE_ID serv_id; + Service * serv; + int src; + + bool toto; +}; + +extern Worker * getWorker (WORKER_ID __key); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/worker.h: b/trunk/paradiseo-peo/src/rmc/mpi/worker.h: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.cpp b/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.cpp new file mode 100644 index 000000000..f31cb0360 --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.cpp @@ -0,0 +1,90 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "xml_parser.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "xml_parser.h" + +static xmlTextReaderPtr reader; + +void openXMLDocument (const char * __filename) { + + reader = xmlNewTextReaderFilename (__filename); + + if (! reader) { + + fprintf (stderr, "unable to open '%s'.\n", __filename); + exit (1); + } +} + +void closeXMLDocument () { + + xmlFreeTextReader (reader); +} + +std :: string getAttributeValue (const std :: string & __attr) { + + xmlChar * value = xmlTextReaderGetAttribute (reader, (const xmlChar *) __attr.c_str ()); + + std :: string str ((const char *) value); + + xmlFree (value); + + return str; +} + +static bool isSep (const xmlChar * __text) { + + for (unsigned i = 0; i < strlen ((char *) __text); i ++) + if (__text [i] != ' ' && __text [i] != '\t' && __text [i] != '\n') + return false; + return true; +} + +std :: string getNextNode () { + + xmlChar * name, * value; + + do { + xmlTextReaderRead (reader); + name = xmlTextReaderName (reader); + value = xmlTextReaderValue (reader); + // printf ("value = %s\n", value); + } while (! strcmp ((char *) name, "#text") && isSep (value)); + + std :: string str; + + if (strcmp ((char *) name, "#text")) + str.assign ((char *) name); + else + str.assign ((char *) value); + + if (name) + xmlFree (name); + if (value) + xmlFree (value); + + return str; +} + diff --git a/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.cpp: b/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.cpp: new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h b/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h new file mode 100644 index 000000000..bdec1937d --- /dev/null +++ b/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h @@ -0,0 +1,37 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "xml_parser.h" + +// (c) OPAC Team, LIFL, August 2005 + +/* This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __xml_parser_h +#define __xml_parser_h + +#include + +extern void openXMLDocument (const char * __filename); + +extern void closeXMLDocument (); + +extern std :: string getAttributeValue (const std :: string & __attr); + +extern std :: string getNextNode (); + +#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h: b/trunk/paradiseo-peo/src/rmc/mpi/xml_parser.h: new file mode 100644 index 000000000..e69de29bb