]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
This commit was generated by cvs2git to create branch 'WPdev'.
authoradmin <salome-admin@opencascade.com>
Thu, 8 Jun 2006 10:49:43 +0000 (10:49 +0000)
committeradmin <salome-admin@opencascade.com>
Thu, 8 Jun 2006 10:49:43 +0000 (10:49 +0000)
Cherrypick from master 2006-06-08 10:49:38 UTC prascle <prascle> 'PR: typo':
    AUTHORS
    COPYING
    ChangeLog
    DEPRECATED/Makefile.in
    DEPRECATED/configure.in.base
    DEPRECATED/make_config.in
    KERNEL_version.h.in
    Makefile.am
    NEWS
    bin/Makefile.am
    bin/VERSION.in
    bin/appli_clean.sh
    bin/appli_install.sh
    bin/runIDLparser.in
    bin/runSalome.ksh
    bin/salome_session.py
    bin/virtual_salome.py
    clean_configure
    configure.ac
    doc/KERNEL_Services.txt
    doc/Makefile.am
    doc/index.txt
    doc/kernel_resources.txt
    doc/rst.css
    doc/salome/Batch.texi
    doc/salome/Makefile.am
    doc/salome/tui/KERNEL/doxydev.in
    doc/salome/tui/KERNEL/doxyfile.in
    doc/salome/tui/KERNEL/doxyuser.in
    doc/salome/tui/KERNEL/sources/doxygen.css
    doc/salome/tui/KERNEL/sources/footer.html
    doc/salome/tui/KERNEL/sources/html_comments.gif
    doc/salome/tui/KERNEL/sources/static/tree.js.in
    doc/salome/tui/Makefile.am
    doc/salome/version.texi
    doc/txt2html.sh
    doc/userguide.txt
    idl/Makefile.am
    resources/CatalogResources.xml.in
    resources/DEPRECATED/Plugin.in
    resources/KERNELCatalog.xml.in
    resources/Makefile.am
    salome_adm/Makefile.am
    salome_adm/unix/DEPRECATED/Doxyfile
    salome_adm/unix/DEPRECATED/F77config.h.in
    salome_adm/unix/DEPRECATED/config.h.in
    salome_adm/unix/DEPRECATED/depend.in
    salome_adm/unix/DEPRECATED/envScript.in
    salome_adm/unix/DEPRECATED/make_commence.in
    salome_adm/unix/DEPRECATED/make_conclude.in
    salome_adm/unix/DEPRECATED/make_module.in
    salome_adm/unix/DEPRECATED/make_omniorb.in
    salome_adm/unix/DEPRECATED/sstream.in
    salome_adm/unix/Makefile.am
    salome_adm/unix/SALOMEconfig.ref.in
    salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4
    salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4
    salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4
    salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4
    salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4
    salome_adm/unix/config_files/DEPRECATED/check_Salome.m4
    salome_adm/unix/config_files/DEPRECATED/check_java.m4
    salome_adm/unix/config_files/DEPRECATED/check_mico.m4
    salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4
    salome_adm/unix/config_files/DEPRECATED/config.guess
    salome_adm/unix/config_files/DEPRECATED/config.sub
    salome_adm/unix/config_files/DEPRECATED/install-sh
    salome_adm/unix/config_files/DEPRECATED/libtool.m4
    salome_adm/unix/config_files/DEPRECATED/ltconfig
    salome_adm/unix/config_files/DEPRECATED/ltmain.sh
    salome_adm/unix/config_files/DEPRECATED/missing
    salome_adm/unix/config_files/DEPRECATED/mkinstalldirs
    salome_adm/unix/config_files/Makefile.am
    salome_adm/unix/config_files/acx_pthread.m4
    salome_adm/unix/config_files/check_local.m4
    salome_adm/unix/make_common_starter.am
    src/Basics/Makefile.am
    src/Basics/Test/Makefile.am
    src/Batch/Batch_BatchManager_Local.cxx
    src/Batch/Batch_BatchManager_Local.hxx
    src/Batch/Batch_BatchManager_Local_RSH.cxx
    src/Batch/Batch_BatchManager_Local_RSH.hxx
    src/Batch/Batch_BatchManager_Local_SH.cxx
    src/Batch/Batch_BatchManager_Local_SH.hxx
    src/Batch/Batch_BatchManager_Local_SSH.cxx
    src/Batch/Batch_BatchManager_Local_SSH.hxx
    src/Batch/Batch_FactBatchManager_Local.cxx
    src/Batch/Batch_FactBatchManager_Local.hxx
    src/Batch/Batch_FactBatchManager_Local_RSH.cxx
    src/Batch/Batch_FactBatchManager_Local_RSH.hxx
    src/Batch/Batch_FactBatchManager_Local_SH.cxx
    src/Batch/Batch_FactBatchManager_Local_SH.hxx
    src/Batch/Batch_FactBatchManager_Local_SSH.cxx
    src/Batch/Batch_FactBatchManager_Local_SSH.hxx
    src/Batch/Batch_IOMutex.cxx
    src/Batch/Batch_IOMutex.hxx
    src/Batch/Batch_JobInfo_Local.cxx
    src/Batch/Batch_JobInfo_Local.hxx
    src/Batch/Batch_Job_Local.cxx
    src/Batch/Batch_Job_Local.hxx
    src/Batch/Makefile.am
    src/Batch_SWIG/Makefile.am
    src/CASCatch/CASCatch.hxx
    src/CASCatch/Makefile.am
    src/Communication/Makefile.am
    src/Communication/MatrixClient.cxx
    src/Communication/MatrixClient.hxx
    src/Communication/SALOME_Matrix_i.cxx
    src/Communication/SALOME_Matrix_i.hxx
    src/Communication_SWIG/Makefile.am
    src/Container/Makefile.am
    src/Container/SALOME_FileRef_i.cxx
    src/Container/SALOME_FileRef_i.hxx
    src/Container/SALOME_FileTransfer_i.cxx
    src/Container/SALOME_FileTransfer_i.hxx
    src/GenericObj/Makefile.am
    src/HDFPersist/Makefile.am
    src/KERNEL_PY/Makefile.am
    src/KERNEL_PY/iparameters.py
    src/KERNEL_PY/salome_version.py
    src/LifeCycleCORBA/Makefile.am
    src/LifeCycleCORBA/SALOME_FileTransferCORBA.cxx
    src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx
    src/LifeCycleCORBA/Test/Makefile.am
    src/LifeCycleCORBA_SWIG/Makefile.am
    src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py
    src/LifeCycleCORBA_SWIG/Test/Makefile.am
    src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py
    src/Logger/Makefile.am
    src/Logger/SALOME_Logger_Server_main.cxx
    src/Logger/Test/Makefile.am
    src/MPIContainer/Makefile.am
    src/Makefile.am
    src/ModuleCatalog/Makefile.am
    src/ModuleGenerator/Makefile.am
    src/NOTIFICATION_SWIG/Makefile.am
    src/NamingService/Makefile.am
    src/NamingService/Test/Makefile.am
    src/Notification/Makefile.am
    src/Registry/Makefile.am
    src/ResourcesManager/Makefile.am
    src/SALOMEDS/Makefile.am
    src/SALOMEDS/SALOMEDS_AttributeParameter.cxx
    src/SALOMEDS/SALOMEDS_AttributeParameter.hxx
    src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx
    src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx
    src/SALOMEDS/SALOMEDS_IParameters.cxx
    src/SALOMEDS/SALOMEDS_IParameters.hxx
    src/SALOMEDS/SALOMEDS_TMPFile_i.cxx
    src/SALOMEDS/SALOMEDS_TMPFile_i.hxx
    src/SALOMEDS/Test/Makefile.am
    src/SALOMEDS/Test/SALOMEDSTest.cxx
    src/SALOMEDS/Test/SALOMEDSTest.hxx
    src/SALOMEDS/Test/TestSALOMEDS.cxx
    src/SALOMEDS/Test/TestSALOMEDS.py
    src/SALOMEDSClient/Makefile.am
    src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx
    src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx
    src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx
    src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx
    src/SALOMEDSImpl/Makefile.am
    src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx
    src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx
    src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx
    src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx
    src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx
    src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx
    src/SALOMEDSImpl/Test/Makefile.am
    src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx
    src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx
    src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx
    src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py
    src/SALOMELocalTrace/Makefile.am
    src/SALOMELocalTrace/Test/Makefile.am
    src/SALOMETraceCollector/Makefile.am
    src/SALOMETraceCollector/Test/Makefile.am
    src/TOOLSDS/Makefile.am
    src/TestContainer/Makefile.am
    src/TestContainer/TestLogger.py
    src/TestMPIContainer/Makefile.am
    src/UnitTests/Makefile.am
    src/Utils/Makefile.am
    src/Utils/Test/Makefile.am

183 files changed:
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
DEPRECATED/Makefile.in [new file with mode: 0644]
DEPRECATED/configure.in.base [new file with mode: 0644]
DEPRECATED/make_config.in [new file with mode: 0755]
KERNEL_version.h.in [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
NEWS [new file with mode: 0644]
bin/Makefile.am [new file with mode: 0644]
bin/VERSION.in [new file with mode: 0755]
bin/appli_clean.sh [new file with mode: 0644]
bin/appli_install.sh [new file with mode: 0644]
bin/runIDLparser.in [new file with mode: 0644]
bin/runSalome.ksh [new file with mode: 0644]
bin/salome_session.py [new file with mode: 0644]
bin/virtual_salome.py [new file with mode: 0644]
clean_configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
doc/KERNEL_Services.txt [new file with mode: 0644]
doc/Makefile.am [new file with mode: 0644]
doc/index.txt [new file with mode: 0644]
doc/kernel_resources.txt [new file with mode: 0644]
doc/rst.css [new file with mode: 0644]
doc/salome/Batch.texi [new file with mode: 0755]
doc/salome/Makefile.am [new file with mode: 0644]
doc/salome/tui/KERNEL/doxydev.in [new file with mode: 0644]
doc/salome/tui/KERNEL/doxyfile.in [new file with mode: 0755]
doc/salome/tui/KERNEL/doxyuser.in [new file with mode: 0644]
doc/salome/tui/KERNEL/sources/doxygen.css [new file with mode: 0755]
doc/salome/tui/KERNEL/sources/footer.html [new file with mode: 0755]
doc/salome/tui/KERNEL/sources/html_comments.gif [new file with mode: 0755]
doc/salome/tui/KERNEL/sources/static/tree.js.in [new file with mode: 0755]
doc/salome/tui/Makefile.am [new file with mode: 0644]
doc/salome/version.texi [new file with mode: 0644]
doc/txt2html.sh [new file with mode: 0755]
doc/userguide.txt [new file with mode: 0644]
idl/Makefile.am [new file with mode: 0644]
resources/CatalogResources.xml.in [new file with mode: 0644]
resources/DEPRECATED/Plugin.in [new file with mode: 0755]
resources/KERNELCatalog.xml.in [new file with mode: 0644]
resources/Makefile.am [new file with mode: 0644]
salome_adm/Makefile.am [new file with mode: 0644]
salome_adm/unix/DEPRECATED/Doxyfile [new file with mode: 0644]
salome_adm/unix/DEPRECATED/F77config.h.in [new file with mode: 0644]
salome_adm/unix/DEPRECATED/config.h.in [new file with mode: 0755]
salome_adm/unix/DEPRECATED/depend.in [new file with mode: 0644]
salome_adm/unix/DEPRECATED/envScript.in [new file with mode: 0644]
salome_adm/unix/DEPRECATED/make_commence.in [new file with mode: 0644]
salome_adm/unix/DEPRECATED/make_conclude.in [new file with mode: 0644]
salome_adm/unix/DEPRECATED/make_module.in [new file with mode: 0644]
salome_adm/unix/DEPRECATED/make_omniorb.in [new file with mode: 0644]
salome_adm/unix/DEPRECATED/sstream.in [new file with mode: 0644]
salome_adm/unix/Makefile.am [new file with mode: 0644]
salome_adm/unix/SALOMEconfig.ref.in [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/check_Salome.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/check_java.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/check_mico.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/config.guess [new file with mode: 0755]
salome_adm/unix/config_files/DEPRECATED/config.sub [new file with mode: 0755]
salome_adm/unix/config_files/DEPRECATED/install-sh [new file with mode: 0755]
salome_adm/unix/config_files/DEPRECATED/libtool.m4 [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/ltconfig [new file with mode: 0755]
salome_adm/unix/config_files/DEPRECATED/ltmain.sh [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/missing [new file with mode: 0644]
salome_adm/unix/config_files/DEPRECATED/mkinstalldirs [new file with mode: 0755]
salome_adm/unix/config_files/Makefile.am [new file with mode: 0644]
salome_adm/unix/config_files/acx_pthread.m4 [new file with mode: 0644]
salome_adm/unix/config_files/check_local.m4 [new file with mode: 0755]
salome_adm/unix/make_common_starter.am [new file with mode: 0644]
src/Basics/Makefile.am [new file with mode: 0644]
src/Basics/Test/Makefile.am [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local.cxx [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local.hxx [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local_RSH.cxx [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local_RSH.hxx [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local_SH.cxx [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local_SH.hxx [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local_SSH.cxx [new file with mode: 0644]
src/Batch/Batch_BatchManager_Local_SSH.hxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local.cxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local.hxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local_RSH.cxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local_RSH.hxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local_SH.cxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local_SH.hxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local_SSH.cxx [new file with mode: 0644]
src/Batch/Batch_FactBatchManager_Local_SSH.hxx [new file with mode: 0644]
src/Batch/Batch_IOMutex.cxx [new file with mode: 0644]
src/Batch/Batch_IOMutex.hxx [new file with mode: 0644]
src/Batch/Batch_JobInfo_Local.cxx [new file with mode: 0644]
src/Batch/Batch_JobInfo_Local.hxx [new file with mode: 0644]
src/Batch/Batch_Job_Local.cxx [new file with mode: 0644]
src/Batch/Batch_Job_Local.hxx [new file with mode: 0644]
src/Batch/Makefile.am [new file with mode: 0644]
src/Batch_SWIG/Makefile.am [new file with mode: 0644]
src/CASCatch/CASCatch.hxx [new file with mode: 0644]
src/CASCatch/Makefile.am [new file with mode: 0644]
src/Communication/Makefile.am [new file with mode: 0644]
src/Communication/MatrixClient.cxx [new file with mode: 0644]
src/Communication/MatrixClient.hxx [new file with mode: 0644]
src/Communication/SALOME_Matrix_i.cxx [new file with mode: 0644]
src/Communication/SALOME_Matrix_i.hxx [new file with mode: 0644]
src/Communication_SWIG/Makefile.am [new file with mode: 0644]
src/Container/Makefile.am [new file with mode: 0644]
src/Container/SALOME_FileRef_i.cxx [new file with mode: 0644]
src/Container/SALOME_FileRef_i.hxx [new file with mode: 0644]
src/Container/SALOME_FileTransfer_i.cxx [new file with mode: 0644]
src/Container/SALOME_FileTransfer_i.hxx [new file with mode: 0644]
src/GenericObj/Makefile.am [new file with mode: 0644]
src/HDFPersist/Makefile.am [new file with mode: 0644]
src/KERNEL_PY/Makefile.am [new file with mode: 0755]
src/KERNEL_PY/iparameters.py [new file with mode: 0755]
src/KERNEL_PY/salome_version.py [new file with mode: 0644]
src/LifeCycleCORBA/Makefile.am [new file with mode: 0644]
src/LifeCycleCORBA/SALOME_FileTransferCORBA.cxx [new file with mode: 0644]
src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx [new file with mode: 0644]
src/LifeCycleCORBA/Test/Makefile.am [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/Makefile.am [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/Test/Makefile.am [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py [new file with mode: 0644]
src/Logger/Makefile.am [new file with mode: 0644]
src/Logger/SALOME_Logger_Server_main.cxx [new file with mode: 0644]
src/Logger/Test/Makefile.am [new file with mode: 0644]
src/MPIContainer/Makefile.am [new file with mode: 0644]
src/Makefile.am [new file with mode: 0644]
src/ModuleCatalog/Makefile.am [new file with mode: 0644]
src/ModuleGenerator/Makefile.am [new file with mode: 0644]
src/NOTIFICATION_SWIG/Makefile.am [new file with mode: 0644]
src/NamingService/Makefile.am [new file with mode: 0644]
src/NamingService/Test/Makefile.am [new file with mode: 0644]
src/Notification/Makefile.am [new file with mode: 0644]
src/Registry/Makefile.am [new file with mode: 0644]
src/ResourcesManager/Makefile.am [new file with mode: 0755]
src/SALOMEDS/Makefile.am [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeParameter.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeParameter.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_IParameters.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_IParameters.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_TMPFile_i.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_TMPFile_i.hxx [new file with mode: 0644]
src/SALOMEDS/Test/Makefile.am [new file with mode: 0644]
src/SALOMEDS/Test/SALOMEDSTest.cxx [new file with mode: 0644]
src/SALOMEDS/Test/SALOMEDSTest.hxx [new file with mode: 0644]
src/SALOMEDS/Test/TestSALOMEDS.cxx [new file with mode: 0644]
src/SALOMEDS/Test/TestSALOMEDS.py [new file with mode: 0644]
src/SALOMEDSClient/Makefile.am [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx [new file with mode: 0644]
src/SALOMEDSImpl/Makefile.am [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx [new file with mode: 0644]
src/SALOMEDSImpl/Test/Makefile.am [new file with mode: 0644]
src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx [new file with mode: 0644]
src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx [new file with mode: 0644]
src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx [new file with mode: 0644]
src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py [new file with mode: 0644]
src/SALOMELocalTrace/Makefile.am [new file with mode: 0644]
src/SALOMELocalTrace/Test/Makefile.am [new file with mode: 0644]
src/SALOMETraceCollector/Makefile.am [new file with mode: 0644]
src/SALOMETraceCollector/Test/Makefile.am [new file with mode: 0644]
src/TOOLSDS/Makefile.am [new file with mode: 0644]
src/TestContainer/Makefile.am [new file with mode: 0644]
src/TestContainer/TestLogger.py [new file with mode: 0644]
src/TestMPIContainer/Makefile.am [new file with mode: 0644]
src/UnitTests/Makefile.am [new file with mode: 0644]
src/Utils/Makefile.am [new file with mode: 0644]
src/Utils/Test/Makefile.am [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
+++ b/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.
+\f
+                   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.)
+\f
+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.
+\f
+  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.
+\f
+  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
+\f
+           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.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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.
+
+  <signature of Ty Coon>, 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/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/DEPRECATED/Makefile.in b/DEPRECATED/Makefile.in
new file mode 100644 (file)
index 0000000..3ec8c19
--- /dev/null
@@ -0,0 +1,151 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+ http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com# 
+# -* Makefile *- 
+#
+# Author : Patrick GOLDBRONN (CEA)
+# Date : 28/06/2001
+# $Header$
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=.
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+SUBDIRS = idl src doc salome_adm
+
+RESOURCES_FILES = \
+CatalogDataType.xml \
+KERNELCatalog.xml \
+CatalogResources.xml \
+close.png \
+config \
+channel.cfg \
+SALOMEDS_Resources
+
+BIN_SCRIPT= \
+runIDLparser \
+VERSION \
+orbmodule.py \
+runSalome.py \
+killSalome.py \
+killSalomeWithPort.py \
+runSalome \
+runSalome.csh \
+runNS.sh \
+createAppli.sh \
+launchConfigureParser.py \
+salome.launch \
+envSalome.py \
+salomeConsole.py \
+showNS.py \
+addToKillList.py
+
+# copy header files in common directory
+include_list=\
+       include/salome/SALOMEconfig.h
+
+inc: idl $(include_list)
+
+include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref
+       -$(RM) $@
+       $(LN_S) ../../$< $@
+
+# test if SALOMEconfig.h has changed (contents)
+salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
+       @if ! [ -a $@ ]; then \
+         cp -p $< $@;        \
+       fi;                   \
+       if ! cmp $< $@; then  \
+         cp -p $< $@;        \
+       fi;                   \
+
+depend: depend_idl
+
+depend_idl:
+       (cd idl ; $(MAKE) $@) || exit 1
+
+# doc is already build : if you want to had documents, go manually to doc and run 'make doc'
+
+
+DOCFILES=\
+       README.FIRST.html
+
+rstdoc: $(DOCFILES)
+       (cd doc && $(MAKE) $@) || exit 1
+
+
+# Install make_commence make_conclude ... for other modules
+install-make:
+       ($(INSTALL) -d  $(incmakedir) || exit 1);
+       (sed 's/^prefix=/#prefix=/' $(top_builddir)/salome_adm/unix/make_commence > $(incmakedir)/make_commence || exit 1);
+       (sed 's/^prefix=/#prefix=/' $(top_builddir)/salome_adm/unix/make_conclude > $(incmakedir)/make_conclude || exit 1);
+
+
+install-end:
+# finish libtool install
+#      @$(LT) --mode=finish $(libdir)
+
+install-include: $(include_list)
+       $(INSTALL) -d  $(includedir)
+       @for f in X $(include_list); do                         \
+          if test $$f != X; then                               \
+            (cp -p $$f $(includedir) || exit 1);               \
+          fi;                                                  \
+       done
+
+# install script in $(bindir) :
+install-appliskel:
+       $(INSTALL) -d  $(bindir)
+       if test -d $(top_builddir)/bin/salome/appliskel; then           \
+           cp -rp $(top_builddir)/bin/salome/appliskel $(bindir);      \
+       fi;
+
+install-bin: $(BIN_SCRIPT)
+       $(INSTALL) -d  $(bindir)
+       $(INSTALL_PROGRAM) $^ $(bindir)
+
+# install Plugin file
+install-plugin: $(top_builddir)/share/salome/resources/Plugin
+       ($(INSTALL_DATA) $^ $(datadir)/resources/. || exit 1); \
+
+uninstall: uninstall-idl
+
+uninstall-idl:
+       $(RM) $(idldir)/*.idl
+
+distclean: distclean-other
+
+distclean-other:
+       -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old
+       -$(RM) salome_adm/unix/make_* 
+       -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h 
+       -$(RM) config.cache config.log config.status 
+
+@MODULE@
+
+$(top_builddir)/share/salome/resources/Plugin: resources/Plugin
+       cp -f $< $@ ; \
+
+resources: $(top_builddir)/share/salome/resources/Plugin
+
+install: install-bin install-appliskel install-include install-make install-plugin install-end
diff --git a/DEPRECATED/configure.in.base b/DEPRECATED/configure.in.base
new file mode 100644 (file)
index 0000000..1567a63
--- /dev/null
@@ -0,0 +1,487 @@
+#
+#  PLEASE DO NOT MODIFY configure.in FILE
+#
+#  ALL CHANGES WILL BE DISCARDED BY THE NEXT
+#  build_configure COMMAND
+#
+#  CHANGES MUST BE MADE IN configure.in.base FILE
+#
+#
+# Author : Marc Tajchman (CEA)
+# Date : 28/06/2001
+# Modified by : Patrick GOLDBRONN (CEA)
+# Modified by : Marc Tajchman (CEA)
+#
+# Created from configure.in.base
+#
+AS_SHELL_SANITIZES
+AC_INIT(src)
+AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
+AC_CANONICAL_HOST
+
+PACKAGE=salome
+AC_SUBST(PACKAGE)
+
+VERSION=3.2.0
+AC_SUBST(VERSION)
+XVERSION=0x030200
+AC_SUBST(XVERSION)
+
+dnl
+dnl Initialize source and build root directories
+dnl
+
+ROOT_BUILDDIR=`pwd`
+ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+cd $ROOT_SRCDIR
+ROOT_SRCDIR=`pwd`
+cd $ROOT_BUILDDIR
+
+AC_SUBST(ROOT_SRCDIR)
+AC_SUBST(ROOT_BUILDDIR)
+dnl ##########################################################
+AC_SUBST(KERNEL_ROOT_DIR)
+dnl ##########################################################
+
+
+echo
+echo Source root directory : $ROOT_SRCDIR
+echo Build  root directory : $ROOT_BUILDDIR
+echo
+echo
+
+dnl Modification B. Secher portage sur osf
+AC_CHECK_PROG(SHELL,sh)
+AC_SUBST(SHELL)
+
+if test -z "$AR"; then
+   AC_CHECK_PROGS(AR,ar xar,:,$PATH)
+fi
+AC_SUBST(AR)
+
+dnl Export the AR macro so that it will be placed in the libtool file
+dnl correctly.
+export AR
+
+echo
+echo ---------------------------------------------
+echo testing make
+echo ---------------------------------------------
+echo
+
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+dnl 
+dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques !
+
+AC_ENABLE_DEBUG(yes)
+AC_DISABLE_PRODUCTION
+
+echo ---------------------------------------------
+echo testing libtool
+echo ---------------------------------------------
+
+dnl first, we set static to no!
+dnl if we want it, use --enable-static
+AC_ENABLE_STATIC(no)
+
+AC_LIBTOOL_DLOPEN
+AC_PROG_LIBTOOL
+
+dnl Fix up the INSTALL macro if it s a relative path. We want the
+dnl full-path to the binary instead.
+case "$INSTALL" in
+   *install-sh*)
+      INSTALL="${ROOT_SRCDIR}/salome_adm/unix/config_files/install-sh -c"
+      ;;
+esac
+
+echo
+echo ---------------------------------------------
+echo testing C/C++
+echo ---------------------------------------------
+echo
+
+cc_ok=no
+dnl inutil car libtool
+dnl AC_PROG_CC
+AC_PROG_CXX
+AC_CXX_WARNINGS
+AC_CXX_TEMPLATE_OPTIONS
+AC_DEPEND_FLAG
+# AC_CC_WARNINGS([ansi])
+cc_ok=yes
+
+dnl Library libdl :
+AC_CHECK_LIB(dl,dlopen)
+
+dnl Library librt : for alpha/osf
+AC_CHECK_LIB(rt,nanosleep)
+
+dnl add library libm :
+AC_CHECK_LIB(m,ceil)
+
+AC_CXX_USE_STD_IOSTREAM
+AC_CXX_HAVE_SSTREAM
+
+dnl
+dnl ---------------------------------------------
+dnl testing linker
+dnl ---------------------------------------------
+dnl
+
+AC_LINKER_OPTIONS
+
+echo
+echo ---------------------------------------------
+echo testing threads
+echo ---------------------------------------------
+echo
+
+ENABLE_PTHREADS
+
+dnl
+dnl ---------------------------------------------
+dnl testing WITHIHM
+dnl ---------------------------------------------
+dnl
+
+CHECK_WITHIHM
+
+echo
+echo ---------------------------------------------
+echo BOOST Library
+echo ---------------------------------------------
+echo
+
+CHECK_BOOST
+
+dnl
+dnl ---------------------------------------------
+dnl testing MPI
+dnl ---------------------------------------------
+dnl
+
+CHECK_MPI
+
+dnl
+dnl ---------------------------------------------
+dnl testing sockets
+dnl ---------------------------------------------
+dnl
+
+CHECK_SOCKETS
+
+dnl
+dnl ---------------------------------------------
+dnl testing OpenPBS
+dnl ---------------------------------------------
+dnl
+
+echo
+echo ---------------------------------------------
+echo testing OpenPBS
+echo ---------------------------------------------
+echo
+
+openpbs_ok=no
+CHECK_OPENPBS
+dnl openpbs_ok is set to yes by CHECK_OPENPBS
+
+dnl
+dnl ---------------------------------------------
+dnl testing LSF
+dnl ---------------------------------------------
+dnl
+
+echo
+echo ---------------------------------------------
+echo testing LSF
+echo ---------------------------------------------
+echo
+
+lsf_ok=no
+CHECK_LSF
+dnl lsf_ok is set to yes by CHECK_LSF
+
+dnl
+dnl ---------------------------------------------
+dnl testing Batch
+dnl ---------------------------------------------
+dnl
+
+WITH_BATCH=no
+test x$openpbs_ok = xyes || test x$lsf_ok = xyes && WITH_BATCH=yes
+AC_SUBST(WITH_BATCH)
+
+echo
+echo ---------------------------------------------
+echo testing LEX \& YACC
+echo ---------------------------------------------
+echo
+
+lex_yacc_ok=no
+AC_PROG_YACC
+AC_PROG_LEX
+lex_yacc_ok=yes
+
+echo
+echo ---------------------------------------------
+echo testing python
+echo ---------------------------------------------
+echo
+
+CHECK_PYTHON
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing java
+dnl echo ---------------------------------------------
+dnl echo
+
+dnl CHECK_JAVA
+
+echo
+echo ---------------------------------------------
+echo testing swig
+echo ---------------------------------------------
+echo
+
+CHECK_SWIG
+
+echo
+echo ---------------------------------------------
+echo testing omniORB
+echo ---------------------------------------------
+echo
+
+CHECK_OMNIORB
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing mico
+dnl echo ---------------------------------------------
+dnl echo
+
+dnl CHECK_MICO
+
+echo
+echo ---------------------------------------------
+echo default ORB : omniORB
+echo ---------------------------------------------
+echo
+
+DEFAULT_ORB=omniORB
+CHECK_CORBA
+
+AC_SUBST_FILE(CORBA)
+corba=make_$ORB
+CORBA=salome_adm/unix/$corba
+
+
+echo
+echo ---------------------------------------------
+echo testing QT
+echo ---------------------------------------------
+echo
+
+CHECK_QT
+
+echo
+echo ----------------------------------------------
+echo testing CPPUNIT only required for unit testing
+echo ----------------------------------------------
+echo
+
+CHECK_CPPUNIT
+
+if test "X$WITHIHM" = "Xyes"; then
+       echo
+       echo ---------------------------------------------
+       echo Testing sip
+       echo ---------------------------------------------
+       echo
+
+       CHECK_SIP
+
+       echo
+       echo ---------------------------------------------
+       echo testing openGL
+       echo ---------------------------------------------
+       echo
+
+       CHECK_OPENGL
+
+       echo
+       echo ---------------------------------------------
+       echo testing VTK
+       echo ---------------------------------------------
+       echo
+
+       CHECK_VTK
+
+       echo
+       echo ---------------------------------------------
+       echo Testing pyqt
+       echo ---------------------------------------------
+       echo
+
+       CHECK_PYQT
+
+       echo
+       echo ---------------------------------------------
+       echo Testing qwt
+       echo ---------------------------------------------
+       echo
+
+       CHECK_QWT
+fi
+
+echo
+echo ---------------------------------------------
+echo testing HDF5
+echo ---------------------------------------------
+echo
+
+CHECK_HDF5
+
+echo
+echo ---------------------------------------------
+echo Testing OpenCascade
+echo ---------------------------------------------
+echo
+
+CHECK_CAS
+
+echo
+echo ---------------------------------------------
+echo Testing html generators
+echo ---------------------------------------------
+echo
+
+CHECK_HTML_GENERATORS
+
+echo
+echo ---------------------------------------------
+echo Summary
+echo ---------------------------------------------
+echo
+
+echo Configure
+variables="cc_ok boost_ok lex_yacc_ok mpi_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok"
+for var in $variables
+do
+   eval toto=\$$var
+   if test x$toto != "x"; then
+     printf "   %10s : " `echo \$var | sed -e "s,_ok,,"`
+     eval echo \$$var
+   fi
+done
+echo "---Optional:"
+variables="cppunit_ok openpbs_ok lsf_ok"
+for var in $variables
+do
+   eval toto=\$$var
+   if test x$toto != "x"; then
+     printf "   %10s : " `echo \$var | sed -e "s,_ok,,"`
+     eval echo \$$var
+   fi
+done
+
+echo
+echo "Default ORB   : $DEFAULT_ORB"
+echo
+
+dnl generals files which could be included in every makefile
+
+AC_SUBST_FILE(COMMENCE) COMMENCE=salome_adm/unix/make_commence
+AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
+AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
+
+dnl les dependences
+AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
+
+dnl We don t need to say when we re entering directories if we re using
+dnl GNU make becuase make does it for us.
+if test "X$GMAKE" = "Xyes"; then
+   AC_SUBST(SETX) SETX=":"
+else
+   AC_SUBST(SETX) SETX="set -x"
+fi
+
+# make other build directories
+for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl
+do
+#   if test ! -d $rep ; then
+#      eval mkdir $rep
+#   fi
+    $INSTALL -d $rep
+done
+
+echo 
+echo ---------------------------------------------
+echo copying resource files, shell scripts, and 
+echo xml files
+echo ---------------------------------------------
+echo
+
+
+dnl copy resources directories
+
+#for i in `find $ROOT_SRCDIR -name 'resources' -print`
+#do
+#  local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+#  local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+#  mkdir -p $local_res_dir
+#  cd $local_res_dir
+#  ln -fs $i
+#  echo $local_res
+#  cd $ROOT_BUILDDIR
+#done
+
+dnl copy shells and utilities contained in the bin directory
+dnl excluding .in files (treated in AC-OUTPUT below) and CVS 
+dnl directory
+
+mkdir -p bin/salome
+cd bin/salome
+for i in  `find $ROOT_SRCDIR/bin`
+do
+  local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR/bin,.,"`
+  case "$local_bin" in
+        *.in | *~) ;;
+        . | */CVS | */CVS/* | ./salome) ;;
+        ./appliskel |./appliskel/env.d) $INSTALL -d $local_bin ; echo $local_bin ;;
+        *) $INSTALL $i $local_bin; echo $local_bin ;;
+  esac
+done
+cd $ROOT_BUILDDIR
+
+AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript
+
+dnl copy xml files to the build tree (lib directory)
+dnl pourquoi ????
+
+#cd lib
+#for i in `find $ROOT_SRCDIR -name "*.xml" -print`
+#do
+#  ln -fs $i
+#  echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+#done
+#cd $ROOT_BUILDDIR
+
+echo
+echo ---------------------------------------------
+echo generating Makefiles and configure files
+echo ---------------------------------------------
+echo
+
+AC_OUTPUT_COMMANDS([ \
+       chmod +x ./bin/*; \
+       chmod +x ./bin/salome/* \
+])
+
+## do not delete this line
+
diff --git a/DEPRECATED/make_config.in b/DEPRECATED/make_config.in
new file mode 100755 (executable)
index 0000000..64b47c3
--- /dev/null
@@ -0,0 +1,75 @@
+# make_config.in: template for make_config script
+# make_config is used by check_cas.m4 to generate 
+# config.h file in case it cannot be found in OCC
+# and SALOME include paths
+#=================================================
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT(salome_adm/unix)
+AC_CONFIG_SRCDIR(salome_adm/unix/config.h.in)
+AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
+AC_CANONICAL_HOST
+
+AC_CONFIG_HEADERS(./salome_adm/unix/config.h)
+
+AC_ISC_POSIX
+AC_C_BIGENDIAN
+
+dnl Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC_C_O
+
+AC_PROG_AWK
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_YACC
+AC_PROG_MAKE_SET
+
+dnl Replace `main' with a function in -le:
+AC_CHECK_LIB(e, main)
+
+dnl Replace `main' with a function in -links:
+AC_CHECK_LIB(inks, main)
+
+dnl Checks for X window system directories.
+AC_PATH_X
+if test "x$ac_x_includes" = "x"; then
+  X_INCLUDE=""
+else
+  X_INCLUDE="-I$ac_x_includes"
+fi
+if test "x$ac_x_libraries" = "x"; then
+  X_LIBS="-lXt -lX11"
+else
+  X_LIBS="-L$ac_x_libraries -lXt -lX11"
+fi
+
+dnl Checks for header files.
+
+AC_HEADER_STDC
+AC_LANG([C])
+AC_MSG_CHECKING([ for C header files ])
+AC_CHECK_HEADERS(dlfcn.h dl.h ieeefp.h time.h sys/time.h pwd.h)
+AC_CHECK_HEADERS(sys/statvfs.h sys/vfs.h sys/param.h osfcn.h netdb.h)
+AC_CHECK_HEADERS(sys/ioctl.h net/if.h sys/systeminfo.h sys/utsname.h)
+AC_CHECK_HEADERS(sysent.h unistd.h sys/unistd.h sys/socket.h)
+AC_CHECK_HEADERS(ndir.h sys/ndir.h sys/dir.h signal.h sys/signal.h)
+AC_CHECK_HEADERS(sigfpe.h floatingpoint.h sys/machsig.h sys/siginfo.h)
+AC_CHECK_HEADERS(malloc.h strings.h sys/stat.h sys/sem.h sys/ipc.h)
+AC_CHECK_HEADERS(sys/times.h dirent.h getopt.h sys/vnode.h)
+
+
+AC_LANG([C++])
+AC_MSG_CHECKING([ for C++ header files ])
+AC_CHECK_HEADERS(istream ostream istream fstream ios iomanip iostream )
+AC_CHECK_HEADERS(stream.h strstream.h istream.h ostream.h fstream.h stdlib.h ios.h iostream.h)
+AC_CHECK_HEADERS(iomanip.h limits.h values.h float.h)
+AC_CHECK_HEADERS(siginfo.h bits/sigset.h bstring.h sys/types.h sys/select.h)
+AC_CHECK_HEADERS(X11/extensions/transovl.h X11/extensions/readdisplay.h)
+AC_CHECK_HEADERS(X11/extensions/multibuf.h)
+AC_CHECK_HEADERS(sys/filio.h sys/mman.h libc.h)
+
+dnl Checks for library functions.
+AC_TYPE_SIGNAL
+
+AC_OUTPUT()
diff --git a/KERNEL_version.h.in b/KERNEL_version.h.in
new file mode 100644 (file)
index 0000000..8ca1291
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/
+//
+//  File   : KERNEL_version.h
+//  Author : Vadim SANDLER
+//  Module : SALOME
+
+#if !defined(__KERNEL_VERSION_H__)
+#define __KERNEL_VERSION_H__
+
+/*
+  KERNEL_VERSION is (major << 16) + (minor << 8) + patch.
+*/
+
+#define KERNEL_VERSION_STR "@VERSION@"
+#define KERNEL_VERSION     @XVERSION@
+
+#endif // __KERNEL_VERSION_H__
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..7b025f0
--- /dev/null
@@ -0,0 +1,55 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# -* Makefile *- 
+#
+# Author : Guillaume BOULANT (CSSI)
+# Date : 09/11/2005
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+if CORBA_GEN
+  IDLDIR = idl
+endif
+
+SUBDIRS = $(IDLDIR) salome_adm src doc bin resources
+
+DIST_SUBDIRS=   idl salome_adm src doc bin resources
+
+DISTCLEANFILES = a.out
+
+salomeinclude_DATA = KERNEL_version.h
+
+EXTRA_DIST = \
+       build_configure \
+       clean_configure \
+       LICENCE \
+       README.FIRST.txt \
+       DEPRECATED
+
+dist-hook:
+       rm -rf `find $(distdir) -name CVS`
+
+usr_docs:
+       (cd doc && $(MAKE) $(AM_MAKEFLAGS) usr_docs)
+
+docs:usr_docs
+
+dev_docs:
+       (cd doc && $(MAKE) $(AM_MAKEFLAGS) dev_docs)
\ No newline at end of file
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/bin/Makefile.am b/bin/Makefile.am
new file mode 100644 (file)
index 0000000..2120709
--- /dev/null
@@ -0,0 +1,81 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# -* Makefile *- 
+#
+# Author : Guillaume Boulant (CSSI)
+# Module : KERNEL
+# $Header$
+#
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# These files are data, module or lib files
+dist_salomescript_DATA= \
+       VERSION \
+       orbmodule.py \
+       salomeConsole.py \
+       salome_session.py
+
+# These files are executable scripts
+dist_salomescript_SCRIPTS=\
+       envSalome.py \
+       runIDLparser \
+       runSalome.py \
+       killSalome.py \
+       killSalomeWithPort.py \
+       runSalome \
+       runSalome.csh \
+       runNS.sh \
+       createAppli.sh \
+       appli_install.sh \
+       appli_clean.sh \
+       virtual_salome.py \
+       launchConfigureParser.py \
+       showNS.py \
+       addToKillList.py \
+       NSparam.py
+
+EXTRA_DIST = appliskel
+
+dist-hook:
+       rm -rf `find $(distdir)/appliskel -name CVS`
+
+DISTCLEANFILES = $(top_builddir)/bin/@PACKAGE@/Makefile.am
+
+clean-local:
+       rm -rf $(top_builddir)/bin/@PACKAGE@/appliskel
+       cd $(top_builddir)/bin/@PACKAGE@; \
+       rm -f $(dist_salomescript_DATA) $(dist_salomescript_SCRIPTS)
+
+# This is an ugly target to avoid exploring the appliskel subdirectory.
+install-exec-local:
+       $(INSTALL) -d $(salomescriptdir)
+       $(RM) -rf $(salomescriptdir)/appliskel 1> /dev/null 2>&1
+       cp -r $(srcdir)/appliskel $(salomescriptdir)
+       find $(salomescriptdir) -name CVS -prune -exec rm -rf {} \;
+
+uninstall-local:
+       find $(salomescriptdir)/appliskel -exec chmod +w {} \;
+       rm -rf $(salomescriptdir)/appliskel
diff --git a/bin/VERSION.in b/bin/VERSION.in
new file mode 100755 (executable)
index 0000000..bd8de56
--- /dev/null
@@ -0,0 +1 @@
+THIS IS SALOME - KERNEL VERSION: @VERSION@
diff --git a/bin/appli_clean.sh b/bin/appli_clean.sh
new file mode 100644 (file)
index 0000000..c8cadf9
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+#clean appli
+rm -rf bin lib share doc envd setAppliPath.sh searchFreePort.sh runAppli runConsole runSession env.d
diff --git a/bin/appli_install.sh b/bin/appli_install.sh
new file mode 100644 (file)
index 0000000..3e7c53f
--- /dev/null
@@ -0,0 +1,88 @@
+#!/bin/sh 
+
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+SALOME_ROOT=${HOME}/SALOME2
+INSTALL_ROOT=${SALOME_ROOT}/Install
+
+APPLI_ROOT=`pwd`
+
+# --- clean appli
+rm -rf bin lib share doc envd setAppliPath.sh searchFreePort.sh runAppli runConsole runSession env.d
+
+# --- install appli
+
+mkdir -p env.d
+ln -fs bin/salome/appliskel/envd .
+ln -fs bin/salome/appliskel/setAppliPath.sh .
+ln -fs bin/salome/appliskel/searchFreePort.sh .
+ln -fs bin/salome/appliskel/runRemote.sh .
+ln -fs bin/salome/appliskel/runAppli .
+ln -fs bin/salome/appliskel/runConsole .
+ln -fs bin/salome/appliskel/runSession .
+ln -fs bin/salome/appliskel/runTests .
+ln -fs bin/salome/appliskel/.bashrc .
+
+# --- prerequisites
+
+if [ x${PREREQUISITE_SH} != x ]; then
+  cp ${PREREQUISITE_SH} env.d/envProducts.sh;
+else
+  # --- unless PREREQUISITE_SH defines the prerequisite script, 
+  #     edit and uncomment the following line to set it, and comment the echo and exit lines
+  #ln -fs myPathForSalomePrerequisiteScriptToBeSourced env.d/envProducts.sh
+  echo "The file to source for SALOME prerequisite definition is not known:"
+  echo "--> Edit the corresponding line in " $0 ",Comment this message and the following exit command,"
+  exit 1;
+fi
+
+# --- symbolic links creation, from modules_root_dir
+
+VERSION=V3_2_0
+
+for module in KERNEL MED GUI GEOM SMESH VISU SUPERV LIGHT NETGENPLUGIN PYCALCULATOR; 
+do 
+    echo " ========= " ${module};
+    python virtual_salome.py -v --prefix="." --module=$INSTALL_ROOT/${module}_${VERSION}
+    echo "export ${module}_ROOT_DIR=$APPLI_ROOT" >> env.d/configSalome.sh
+done
+
+# --- HELLO module
+
+echo " =========  HELLO1";
+python virtual_salome.py -v --prefix="." --module=$INSTALL_ROOT/HELLO1_${VERSION}
+echo "export HELLO_ROOT_DIR=$APPLI_ROOT" >> env.d/configSalome.sh
+
+# --- PYHELLO module
+
+echo " ========= PYHELLO1";
+python virtual_salome.py -v --prefix="." --module=$INSTALL_ROOT/PYHELLO1_${VERSION}
+echo "export PYHELLO_ROOT_DIR=$APPLI_ROOT" >> env.d/configSalome.sh
+
+# --- GUI config
+
+echo "export config_var=$APPLI_ROOT:$APPLI_ROOT/share/salome/resources" >> env.d/configGUI.sh
+echo "export SUITRoot=$APPLI_ROOT/share/salome" >> env.d/configGUI.sh
+
+# --- SAMPLES directory
+
+echo "export DATA_DIR=$INSTALL_ROOT/SAMPLES/${VERSION}/SAMPLES_SRC" >> env.d/configSalome.sh
+
+# --- 
diff --git a/bin/runIDLparser.in b/bin/runIDLparser.in
new file mode 100644 (file)
index 0000000..cb41a74
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/sh
+
+# print the help message ====================================
+
+# test $@="-h" -o -z $@
+
+hh=0
+
+if test "$#" = "0";then
+    hh=1
+else
+    for a in $@; do
+       if test "$a" = "-h"; then
+           hh=1
+       fi
+    done
+fi
+
+if test "$hh" = "1" ; then
+    echo ""
+    echo "Usage : "
+    echo ""
+    echo "   to run IDLparser:"
+    echo ""
+    echo "        $0 -Wbcatalog=<my_catalog.xml>[,icon=<pngfile>][,version=<num>][,author=<name>][,name=<component_name>][,multistudy=<component_multistudy>][,remove=component_name] <file.idl>   "
+    echo ""
+    echo "   to have omniidl help:"
+    echo ""
+    echo "        $0 -u "
+    echo ""
+    exit 1
+fi
+#============================================================
+
+# omiidl ====================================================
+omniidl -bIDLparser -I ${KERNEL_ROOT_DIR}/idl/salome $@
+#============================================================
diff --git a/bin/runSalome.ksh b/bin/runSalome.ksh
new file mode 100644 (file)
index 0000000..cbee400
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/ksh
+
+searchFreePort() {
+    echo -n "Searching for a free port for naming service: "
+    NSPORT=2810
+    export NSPORT
+    local limit=$NSPORT
+    let limit=limit+100
+    while [ 1 ]
+    do
+        aRes=`netstat -ltn | grep -E :${NSPORT}`
+        if [ -z "$aRes" ]; then
+            echo ${NSPORT} - Ok
+           local myhost=`hostname`
+            OMNIORB_CONFIG=${HOME}/.omniORB_${myhost}_${NSPORT}.cfg
+            export OMNIORB_CONFIG
+           local initref="NameService=corbaname::"`hostname`":$NSPORT"
+           export NSPORT
+           if [[ `python -c "import CORBA; print CORBA.ORB_ID"` = "omniORB4" ]]; then
+                echo "InitRef = $initref" > $OMNIORB_CONFIG
+           else
+               echo "ORBInitRef $initref" > $OMNIORB_CONFIG
+           fi
+            break
+        fi
+        echo -n "${NSPORT} "
+        if [[ $NSPORT -eq $limit ]] ; then
+            echo
+            echo "Can't find a free port to launch omniNames"
+            echo "Try to kill the running servers and then launch SALOME again."
+            exit
+        fi
+        let NSPORT=NSPORT+1
+    done
+}
+
+searchFreePort
+
+if [[ "$*" = "-nothing" ]]; then
+    echo "port:$NSPORT"
+elif [ $# -ne 0 ] ; then
+    python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py $* 
+else
+    python ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py
+fi
+
+# -----------------------------------------------------------------------------
+# examples:
+# ---------
+#  $: ${KERNEL_ROOT_DIR}/bin/salome/runSalome
+#
+#     - parameters for launching are taken from SalomeApp.xml;
+#     - if the config file does not exist, it is created with default values.
+#
+#  
+#  $: ${KERNEL_ROOT_DIR}/bin/salome/runSalome --modules=GEOM,SMESH,VISU,SUPERV,MED --embedded=registry,study,moduleCatalog,cppContainer --standalone=pyContainer,supervContainer --xterm --killall
+#
+#     parameters from command line supersede those from SalomeApp.xml
+#
+# Some CORBA servers can be launched in the SALOME_Session_Server's process
+# (embedded = same process) or in a separate process (standalone):
+# --> registry,study,moduleCatalog,cppContainer
+# Other CORBA servers could only be launched in separate process (standalone):
+# --> pyContainer,supervContainer
+#
+# $: ${KERNEL_ROOT_DIR}/bin/salome/runSalome -h
+#    help
+# -----------------------------------------------------------------------------
+#
+# l'option -i permet de garder l'interpreteur python ouvert :
+# par defaut, les differents serveurs ouvrent des fenêtres xterm
+# (cf. runSalome.py)
+# le serveur Logger n'est pas obligatoire (commenté dans runSalome.py)
+# 
+# -----------------------------------------------------------------------------
+# Example on CCRT (without ihm) :
+# ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py --terminal --modules=MED,CALCULATOR,COMPONENT --standalone=registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer --killall
diff --git a/bin/salome_session.py b/bin/salome_session.py
new file mode 100644 (file)
index 0000000..d43e144
--- /dev/null
@@ -0,0 +1,106 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+import os
+import sys
+import string
+import socket
+
+_session = None
+
+def startSession(modules=[]):
+    global _session
+    if _session: return
+    searchFreePort()
+    _session = SalomeSession(modules)
+    return
+
+def getShortHostName():
+    """
+    gives Hostname without domain extension.
+    SALOME naming service needs short Hostnames (without domain extension).
+    HOSTNAME is not allways defined in environment,
+    socket.gethostname() gives short or complete Hostname, depending on
+    defined aliases.
+    """
+    return string.split(socket.gethostname(),'.')[0]
+
+def searchFreePort():
+    print "Searching a free port for naming service:",
+    NSPORT=2810
+    limit=NSPORT
+    limit=limit+100
+    while 1:
+        print "%s "%(NSPORT),
+        status = os.system("netstat -ltn | grep -E :%s"%(NSPORT))
+        if status:
+            home = os.environ['HOME']
+            appli=os.environ.get("APPLI")
+            if appli is None:
+                #Run outside application context
+                home=home
+            else:
+                home='%s/%s'%(home,appli)
+            hostname=getShortHostName()
+            omniorb_config = '%s/.omniORB_%s_%s.cfg'%(home,hostname, NSPORT)
+            os.environ['OMNIORB_CONFIG'] = omniorb_config
+            f = open(omniorb_config, "w")
+            f.write("ORBInitRef NameService=corbaname::%s:%s\n"%(hostname, NSPORT))
+            f.close()
+            last_running_config = '%s/.omniORB_%s_last.cfg'%(home, hostname)
+            os.environ['LAST_RUNNING_CONFIG'] = last_running_config
+            if os.access(last_running_config,os.F_OK):
+                os.unlink(last_running_config)
+                pass
+            os.symlink(omniorb_config,last_running_config)
+            #            LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+            print "- Ok"
+            break
+        if NSPORT == limit:
+            msg  = ""
+            msg += "I Can't find a free port to launch omniNames\n"
+            msg += "I suggest you to kill the running servers and try again.\n"
+            raise msg
+        NSPORT=NSPORT+1
+        pass
+    os.environ['NSHOST']=hostname
+    os.environ['NSPORT']=str(NSPORT)
+    return NSPORT
+
+
+class SalomeSession(object):
+    import runSalome
+    import killSalomeWithPort
+    import killSalome
+    def __init__(self, modules):
+        import runSalome
+        sys.argv  = ["dummy.py"]
+        sys.argv += ["--terminal"]
+        if modules:
+            sys.argv += ['--modules=%s'%(",".join(modules))]
+            pass
+        runSalome.clt, runSalome.args = runSalome.main()
+        import salome
+        salome.salome_init()
+        return
+    def __del__(self):
+        import runSalome
+        runSalome.killLocalPort()
+        return
+    pass
diff --git a/bin/virtual_salome.py b/bin/virtual_salome.py
new file mode 100644 (file)
index 0000000..edbfbe1
--- /dev/null
@@ -0,0 +1,199 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+"""Create a virtual Salome installation 
+
+Based on a script created by Ian Bicking.
+
+Typical use::
+
+  python virtual_salome.py -v --prefix="." --module=/local/chris/SALOME2/RELEASES/Install/KERNEL_V3_1_0b1
+
+install module KERNEL in the current directory
+"""
+
+import sys, os, optparse, shutil,glob,fnmatch
+py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1])
+
+def mkdir(path):
+    """Create a directory and all the intermediate directories if path does not exist"""
+    if not os.path.exists(path):
+        print 'Creating %s' % path
+        os.makedirs(path)
+    else:
+        if verbose:
+            print 'Directory %s already exists' % path
+            pass
+        pass
+
+def symlink(src, dest):
+    """Create a link if it does not exist"""
+    if not os.path.exists(dest):
+        if verbose:
+            print 'Creating symlink %s' % dest
+            pass
+        os.symlink(src, dest)
+    else:
+        print 'Symlink %s already exists' % dest
+        pass
+    pass
+
+def rmtree(dir):
+    """Remove (recursive) a directory if it exists"""
+    if os.path.exists(dir):
+        print 'Deleting tree %s' % dir
+        shutil.rmtree(dir)
+    else:
+        if verbose:
+            print 'Do not need to delete %s; already gone' % dir
+            pass
+        pass
+    pass
+
+def main():
+    usage="""usage: %prog [options]
+Typical use is:
+  python virtual_salome.py -v --prefix="." --module=/local/chris/SALOME2/RELEASES/Install/KERNEL_V3_1_0b1
+"""
+    parser = optparse.OptionParser(usage=usage)
+
+    parser.add_option('-v', '--verbose', action='count', dest='verbose',
+                      default=0, help="Increase verbosity")
+
+    parser.add_option('--prefix', dest="prefix", default='.',
+                      help="The base directory to install to (default .)")
+
+    parser.add_option('--module', dest="module", 
+                      help="The module directory to install in (mandatory)")
+
+    parser.add_option('--clear', dest='clear', action='store_true',
+        help="Clear out the install and start from scratch")
+
+    options, args = parser.parse_args()
+    global verbose
+
+    if not options.module:
+        print "Option module is mandatory"
+        return 
+   
+    module_dir=options.module
+    if not os.path.exists(module_dir):
+        print "Module %s does not exist" % module_dir
+        return
+
+    home_dir = os.path.expanduser(options.prefix)
+
+    #module_dir="/local/chris/SALOME2/RELEASES/Install/KERNEL_V3_1_0b1"
+    module_bin_dir=os.path.join(module_dir,'bin','salome')
+    module_lib_dir=os.path.join(module_dir,'lib','salome')
+    module_lib_py_dir=os.path.join(module_dir,'lib',py_version,'site-packages','salome')
+    module_lib_py_shared_dir=os.path.join(module_dir,'lib',py_version,
+                                          'site-packages','salome','shared_modules')
+    module_share_dir=os.path.join(module_dir,'share','salome','resources')
+    module_doc_gui_dir=os.path.join(module_dir,'doc','salome','gui')
+    module_doc_tui_dir=os.path.join(module_dir,'doc','salome','tui')
+    module_doc_dir=os.path.join(module_dir,'doc','salome')
+
+    if not os.path.exists(module_lib_py_dir):
+        print "Python directory %s does not exist" % module_lib_py_dir
+        return
+
+    bin_dir=os.path.join(home_dir,'bin','salome')
+    lib_dir=os.path.join(home_dir,'lib','salome')
+    lib_py_dir=os.path.join(home_dir,'lib',py_version,'site-packages','salome')
+    lib_py_shared_dir=os.path.join(home_dir,'lib',py_version,
+                                   'site-packages','salome','shared_modules')
+    share_dir=os.path.join(home_dir,'share','salome','resources')
+    doc_gui_dir=os.path.join(home_dir,'doc','salome','gui')
+    doc_tui_dir=os.path.join(home_dir,'doc','salome','tui')
+    doc_dir=os.path.join(home_dir,'doc','salome')
+
+    verbose = options.verbose
+
+    if options.clear:
+        rmtree(bin_dir)
+        rmtree(lib_dir)
+        rmtree(share_dir)
+        rmtree(doc_dir)
+        pass
+    
+    #directory bin/salome : create it and link content
+    mkdir(bin_dir)
+    for fn in os.listdir(module_bin_dir):
+        # if os.path.splitext(fn)[1] not in (".pyc",".pyo"): #Compiled python are excluded
+        symlink(os.path.join(module_bin_dir, fn), os.path.join(bin_dir, fn))
+        pass
+    
+    #directory lib/salome : create it and link content
+    mkdir(lib_dir)
+    for fn in os.listdir(module_lib_dir):
+        symlink(os.path.join(module_lib_dir, fn), os.path.join(lib_dir, fn))
+
+    #directory lib/py_version/site-packages/salome : create it and link content
+    mkdir(lib_py_shared_dir)
+    for fn in os.listdir(module_lib_py_dir):
+        # if os.path.splitext(fn)[1] not in (".pyc",".pyo"): #Compiled python are excluded
+        if os.path.split(fn)[1] != "shared_modules":
+            symlink(os.path.join(module_lib_py_dir, fn), os.path.join(lib_py_dir, fn))
+            pass
+        pass
+    if os.path.exists(module_lib_py_shared_dir):
+        for fn in os.listdir(module_lib_py_shared_dir):
+            # if os.path.splitext(fn)[1] not in (".pyc",".pyo"): #Compiled python are excluded
+            symlink(os.path.join(module_lib_py_shared_dir, fn), os.path.join(lib_py_shared_dir, fn))
+            pass
+        pass
+    else:
+        print module_lib_py_shared_dir, " doesn't exist"
+        pass    
+
+
+    #directory share/salome/resources : create it and link content
+    mkdir(share_dir)
+    for fn in os.listdir(module_share_dir):
+        symlink(os.path.join(module_share_dir, fn), os.path.join(share_dir, fn))
+
+    #html files in doc/salome directory
+    if os.path.exists(module_doc_dir):
+        mkdir(doc_dir)
+        for fn in os.listdir(module_doc_dir):
+            if fn == 'gui':continue
+            if fn == 'tui':continue
+            symlink(os.path.join(module_doc_dir, fn), os.path.join(doc_dir, fn))
+            pass
+        pass
+    
+    #directory doc/salome/gui : create it and link content
+    if os.path.exists(module_doc_gui_dir):
+        mkdir(doc_gui_dir)
+        for fn in os.listdir(module_doc_gui_dir):
+            symlink(os.path.join(module_doc_gui_dir, fn), os.path.join(doc_gui_dir, fn))
+            pass
+        pass
+    
+    #directory doc/salome/tui : create it and link content
+    if os.path.exists(module_doc_tui_dir):
+        mkdir(doc_tui_dir)
+        for fn in os.listdir(module_doc_tui_dir):
+            symlink(os.path.join(module_doc_tui_dir, fn), os.path.join(doc_tui_dir, fn))
+            pass
+        pass
+    
+if __name__ == '__main__':
+    main()
+    pass
diff --git a/clean_configure b/clean_configure
new file mode 100755 (executable)
index 0000000..a0073fb
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+rm -rf autom4te.cache aclocal.m4 configure make_config
+find . -name "*~" -print -exec rm {} \;
+find . -name "*.pyc" -print -exec rm {} \;
+#exit
+# ==================== ON SORT AVANT
+
+here=`pwd`
+libdir=salome_adm/unix/config_files
+cd $libdir
+# Files created by libtoolize
+rm -f config.guess config.sub ltmain.sh
+# Files created by automake
+rm -rf install-sh missing compile depcomp py-compile
+cd $here
+find bin -name Makefile.in | xargs rm -f
+find doc -name Makefile.in | xargs rm -f
+find idl -name Makefile.in | xargs rm -f
+find resources -name Makefile.in | xargs rm -f
+find salome_adm -name Makefile.in | xargs rm -f
+find src -name Makefile.in | xargs rm -f
+rm -f Makefile.in
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..0161290
--- /dev/null
@@ -0,0 +1,552 @@
+#
+# ================================================================
+# Process this file with autoconf to produce a configure script
+# ================================================================
+#
+#AC_PREREQ(2.59)
+#AC_INIT(src)
+AC_INIT([Salome2 Project], [3.2.0], [gboulant@CS], [salome])
+
+# AC_CONFIG_AUX_DIR defines an alternative directory where to find the auxiliary
+# scripts such as config.guess, install-sh, ...
+AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+AM_INIT_AUTOMAKE
+#AC_CONFIG_HEADER([config.h])
+
+PACKAGE=salome
+AC_SUBST(PACKAGE)
+
+VERSION=3.2.0
+XVERSION=0x030200
+AC_SUBST(VERSION)
+AC_SUBST(XVERSION)
+
+echo
+echo ---------------------------------------------
+echo Initialize source and build root directories
+echo ---------------------------------------------
+echo
+
+#
+# This function return on stdout the absolute path of the filename in
+# argument. Exemple:
+# $ filename="../KERNEL_SRC/configure
+# $ absfilename=`absolute_path $filename`
+function absolute_path {
+    filename=$1
+    here=`pwd`
+    apath=`dirname $filename`
+    cd $apath
+    apath=`pwd`
+    cd $here
+    echo $apath
+}
+
+# Build directory, where the configure script is executed.
+ROOT_BUILDDIR=`pwd`
+# Source directory, where the configure script is located.
+ROOT_SRCDIR=`absolute_path $0`
+
+AC_SUBST(ROOT_SRCDIR)
+AC_SUBST(ROOT_BUILDDIR)
+
+echo
+echo Source root directory : $ROOT_SRCDIR
+echo Build  root directory : $ROOT_BUILDDIR
+
+# ----------------------------------------------------------------------------
+# --- test options
+
+AC_ARG_ENABLE(corba_gen,
+  [AC_HELP_STRING([--enable-corba-gen],[Generate CORBA stuff [default=yes]])],
+  [case "${enableval}" in
+     yes) corba_gen=true ;;
+     no)  corba_gen=false ;;
+     *) AC_MSG_ERROR(bad value ${enableval} for --enable-corba-gen) ;;
+  esac],[corba_gen=true])
+AM_CONDITIONAL(CORBA_GEN, test x$corba_gen = xtrue)
+
+# ----------------------------------------------------------------------------
+
+echo
+echo
+echo ============================================================
+echo testing general mandatory products - for all configurations
+echo ============================================================
+echo
+
+dnl Modification B. Secher portage sur osf
+AC_CHECK_PROG(SHELL,sh)
+AC_SUBST(SHELL)
+
+if test -z "$AR"; then
+   AC_CHECK_PROGS(AR,ar xar,:,$PATH)
+fi
+AC_SUBST(AR)
+
+echo
+echo ---------------------------------------------
+echo testing make
+echo ---------------------------------------------
+echo
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+
+echo
+echo ---------------------------------------------
+echo Configuring production
+echo ---------------------------------------------
+echo
+# production.m4
+AC_ENABLE_DEBUG(yes)
+AC_DISABLE_PRODUCTION
+
+echo
+echo ---------------------------------------------
+echo testing libtool
+echo ---------------------------------------------
+echo
+
+dnl first, we set static to no!
+dnl if we want it, use --enable-static
+AC_ENABLE_STATIC(no)
+AC_LIBTOOL_DLOPEN
+AC_PROG_LIBTOOL
+
+echo
+echo ---------------------------------------------
+echo testing C/C++
+echo ---------------------------------------------
+echo
+
+cc_ok=no
+AC_PROG_CC
+AC_PROG_CXX
+AC_CXX_WARNINGS
+AC_CXX_TEMPLATE_OPTIONS
+AC_DEPEND_FLAG
+# AC_CC_WARNINGS([ansi])
+cc_ok=yes
+
+dnl Library libdl :
+AC_CHECK_LIB(dl,dlopen)
+
+dnl Library librt : for alpha/osf
+AC_CHECK_LIB(rt,nanosleep)
+
+dnl add library libm :
+AC_CHECK_LIB(m,ceil)
+
+# _CS_gbo We should add all dependent libraries
+
+AC_CXX_USE_STD_IOSTREAM
+
+AC_CXX_HAVE_SSTREAM
+
+# Testing linker
+AC_LINKER_OPTIONS
+
+echo
+echo ---------------------------------------------
+echo testing threads
+echo ---------------------------------------------
+echo
+
+ENABLE_PTHREADS
+
+echo
+echo ---------------------------------------------
+echo testing python
+echo ---------------------------------------------
+echo
+
+CHECK_PYTHON
+
+echo
+echo ---------------------------------------------
+echo testing swig
+echo ---------------------------------------------
+echo
+
+dnl _CS_gbo We should use here a variable given from the CHECK_PYTHON
+AM_PATH_PYTHON(2.3)
+CHECK_SWIG
+
+echo
+echo ---------------------------------------------
+echo testing HDF5
+echo ---------------------------------------------
+echo
+
+CHECK_HDF5
+
+echo
+echo ---------------------------------------------
+echo Testing OpenCascade
+echo ---------------------------------------------
+echo
+
+CHECK_CAS
+
+# ----------------------------------------------------------------------------
+# --- test corba
+
+if test x$corba_gen = xtrue; then
+
+echo
+echo ============================================================
+echo testing mandatory products for CORBA configurations
+echo ============================================================
+echo
+
+dnl
+dnl ---------------------------------------------
+dnl testing sockets
+dnl ---------------------------------------------
+dnl
+
+CHECK_SOCKETS
+
+echo
+echo ---------------------------------------------
+echo Configuration of the ORB
+echo ---------------------------------------------
+echo
+
+echo Testing OMNIORB ...
+CHECK_OMNIORB
+
+echo Selecting the default ORB
+DEFAULT_ORB=omniORB
+echo DEFAULT_ORB : $DEFAULT_ORB
+CHECK_CORBA
+
+CORBA=salome_adm/unix/make_$ORB
+AC_SUBST_FILE(CORBA)
+
+# _CS_gbo:
+# The CORBA variable defines the file name that
+# implements the building rules to be included by Makefile to process
+# idl files and CORBA specific dependencies (ex: the file
+# salome_adm/unix/make_omniorb is the default for SALOME). The value
+# of ORB is defined by CHECK_CORBA.
+
+# Note that this checking process is no longer relevant for SALOME
+# because the possibility of changing the ORB as a plugin is probably
+# deprecated. The software configuration is clearly omniorb for CORBA
+# communication. This could be simplify in a near futur.
+
+echo
+echo ---------------------------------------------
+echo Testing QT
+echo ---------------------------------------------
+echo
+# Qt must be kept because kernel makes use of qxml and some other
+# non-graphical stuff.
+CHECK_QT
+
+echo
+echo ---------------------------------------------
+echo BOOST Library
+echo ---------------------------------------------
+echo
+
+CHECK_BOOST
+
+fi 
+# --- end test corba
+# ----------------------------------------------------------------------------
+
+echo
+echo ============================================================
+echo testing optionnal products
+echo ============================================================
+echo
+
+echo
+echo ---------------------------------------------
+echo checking if MPI is requested by user
+echo ---------------------------------------------
+echo
+
+CHECK_MPI
+
+echo
+echo ---------------------------------------------
+echo Testing Batch
+echo ---------------------------------------------
+echo
+
+dnl Several batch systems (OpenPBS, LSF, ...) can be operated using
+dnl the Batch classes library integrated in the KERNEL module. The
+dnl checking process tests here the presence of underlying batch
+dnl softwares. If none is detected, the KERNEL is declared to be
+dnl "without batch". 
+
+echo testing OpenPBS
+echo ---------------
+openpbs_ok=no
+CHECK_OPENPBS
+dnl openpbs_ok is set to yes by CHECK_OPENPBS
+
+echo testing LSF
+echo -----------
+lsf_ok=no
+CHECK_LSF
+dnl lsf_ok is set to yes by CHECK_LSF
+echo lsf = $lsf_ok
+
+echo testing Local batch system
+echo --------------------------
+localbatch_ok=no
+CHECK_LOCAL
+dnl localbatch_ok is set to yes by CHECK_LOCAL
+
+WITH_BATCH=no
+test x$openpbs_ok = xyes || test x$lsf_ok = xyes || test x$localbatch_ok = xyes && WITH_BATCH=yes
+
+AC_ARG_ENABLE(batch,
+  [AC_HELP_STRING([--enable-batch],[Batch [default=yes]])],
+  [case "${enableval}" in
+     yes) test x$openpbs_ok = xyes || test x$lsf_ok = xyes || test x$localbatch_ok = xyes && WITH_BATCH=yes;;
+     no)  WITH_BATCH=no ;;
+     *) AC_MSG_ERROR(bad value ${enableval} for --enable-batch) ;;
+  esac],[test x$openpbs_ok = xyes || test x$lsf_ok = xyes || test x$localbatch_ok = xyes && WITH_BATCH=yes])
+
+echo Batch mode = $WITH_BATCH
+
+AC_SUBST(WITH_BATCH)
+AM_CONDITIONAL(WITH_BATCH, [test x"$WITH_BATCH" = xyes])
+
+echo
+echo ----------------------------------------------
+echo testing CPPUNIT only required for unit testing
+echo ----------------------------------------------
+echo
+CHECK_CPPUNIT
+
+echo
+echo ============================================================
+echo testing products required only for documentation generation
+echo ============================================================
+echo
+
+echo
+echo ---------------------------------------------
+echo Testing html generators
+echo ---------------------------------------------
+echo
+
+CHECK_HTML_GENERATORS
+
+echo
+echo ============================================================
+echo Summary
+echo ============================================================
+echo
+
+# This function displays the values of each variable given in arguments 
+function summary {
+  variables=$*
+  for var in $variables
+  do
+    eval toto=\$$var
+    if test x$toto != "x"; then
+      printf "   %10s : " `echo \$var | sed -e "s,_ok,,"`
+      eval echo \$$var
+    fi
+  done
+}
+
+# --------------------------------------
+
+function check_fatal_error {
+  variables=$*
+  for var in $variables
+  do
+    eval toto=\$$var
+    if test x$toto != "xyes"; then
+        echo "FATAL ERROR: some mandatory products are missing."
+       echo "Installing the missing products is required before running the configure script".
+       exit 1
+    fi
+  done  
+}
+
+# --------------------------------------
+
+if test x$corba_gen = xtrue; then
+  basic_mandatory_products="cc_ok threads_ok python_ok swig_ok hdf5_ok occ_ok"
+else
+  basic_mandatory_products="cc_ok threads_ok hdf5_ok occ_ok"
+fi
+
+echo --- General mandatory products - Light configuration:
+summary $basic_mandatory_products
+check_fatal_error $basic_mandatory_products
+echo
+
+corba_mandatory_products="omniORB_ok qt_ok boost_ok"
+if test x$corba_gen = xtrue; then
+  echo --- CORBA mandatory products - default configuration:
+  summary $corba_mandatory_products
+  check_fatal_error $corba_mandatory_products
+else
+  echo --- CORBA products not required - option --disable-corba-gen
+  if test x"$WITH_BATCH" = xyes; then
+    echo --- BATCH mode mandatory products - default configuration:
+    summary "python_ok"
+    check_fatal_error "python_ok"
+  else 
+    echo --- Python not required - option --enable-batch=no
+  fi
+fi
+echo
+
+if test x$MPIREQUESTED = xyes; then
+  requested_products="mpi_ok"
+  echo --- products requested by user
+  summary $requested_products
+  check_fatal_error $requested_products
+  echo
+fi
+
+optional_products="cppunit_ok openpbs_ok lsf_ok"
+echo --- Optional products:
+echo ["    These products are optional because the KERNEL functions"]
+echo ["    using them are built only if the products are detected."]
+summary $optional_products
+echo
+
+htmldoc_products="doxygen_ok graphviz_ok rst2html_ok"
+
+echo --- Html documentation products: only required for doc production
+summary $htmldoc_products
+echo
+
+echo
+echo "Default ORB   : $DEFAULT_ORB"
+echo
+
+dnl generals files which could be included in every makefile
+
+AC_SUBST_FILE(COMMENCE) COMMENCE=salome_adm/unix/make_commence
+AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
+AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
+
+dnl les dependences
+AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
+
+dnl We don t need to say when we re entering directories if we re using
+dnl GNU make becuase make does it for us.
+if test "X$GMAKE" = "Xyes"; then
+   AC_SUBST(SETX) SETX=":"
+else
+   AC_SUBST(SETX) SETX="set -x"
+fi
+
+echo 
+echo ---------------------------------------------
+echo copying resource files, shell scripts, and 
+echo xml files
+echo ---------------------------------------------
+echo
+
+
+mkdir -p bin/salome
+cd bin/salome
+for i in  `find $ROOT_SRCDIR/bin`
+do
+  local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR/bin,.,"`
+  case "$local_bin" in
+        *.in | *~) ;;
+        . | */CVS | */CVS/* | ./salome) ;;
+        ./appliskel |./appliskel/env.d) $INSTALL -d $local_bin ; echo $local_bin ;;
+        *) $INSTALL $i $local_bin; echo $local_bin ;;
+  esac
+done
+cd $ROOT_BUILDDIR
+
+echo
+echo ---------------------------------------------
+echo generating Makefiles and configure files
+echo ---------------------------------------------
+echo
+
+AC_OUTPUT_COMMANDS([ \
+       chmod +x ./bin/*; \
+       chmod +x ./bin/salome/* \
+])
+
+# This list is initiated using autoscan and must be updated manually
+# when adding a new file <filename>.in to manage. When you execute
+# autoscan, the Makefile list is generated in the output file configure.scan.
+# This could be helpfull to update de configuration.
+AC_OUTPUT([ \
+       ./KERNEL_version.h \
+       ./salome_adm/unix/SALOMEconfig.ref \
+       ./salome_adm/Makefile \
+       ./salome_adm/unix/Makefile \
+       ./salome_adm/unix/config_files/Makefile \
+       ./Makefile \
+       ./bin/Makefile \
+       ./bin/VERSION \
+       ./bin/runIDLparser \
+       ./doc/Makefile \
+       ./doc/salome/Makefile \
+       ./doc/salome/tui/Makefile \
+       ./doc/salome/tui/INPUT/doxyuser:./doc/salome/tui/KERNEL/doxyuser.in \
+       ./doc/salome/tui/INPUT/doxydev:./doc/salome/tui/KERNEL/doxydev.in \
+       ./doc/salome/tui/INPUT/sources/static/tree.js:./doc/salome/tui/KERNEL/sources/static/tree.js.in \
+       ./idl/Makefile \
+       ./resources/Makefile \
+       ./resources/KERNELCatalog.xml \
+       ./resources/CatalogResources.xml \
+       ./resources/DEPRECATED/Plugin \
+       ./src/Makefile \
+       ./src/Basics/Makefile \
+       ./src/Basics/Test/Makefile \
+       ./src/Batch/Makefile \
+       ./src/Batch_SWIG/Makefile \
+       ./src/CASCatch/Makefile \
+       ./src/Communication/Makefile \
+       ./src/Communication_SWIG/Makefile \
+       ./src/Container/Makefile \
+       ./src/GenericObj/Makefile \
+       ./src/HDFPersist/Makefile \
+       ./src/KERNEL_PY/Makefile \
+       ./src/LifeCycleCORBA/Makefile \
+       ./src/LifeCycleCORBA/Test/Makefile \
+       ./src/LifeCycleCORBA_SWIG/Makefile \
+       ./src/LifeCycleCORBA_SWIG/Test/Makefile \
+       ./src/Logger/Makefile \
+       ./src/Logger/Test/Makefile \
+       ./src/ModuleCatalog/Makefile \
+       ./src/ModuleGenerator/Makefile \
+       ./src/ModuleGenerator/testIDLparser \
+       ./src/MPIContainer/Makefile \
+       ./src/NamingService/Makefile \
+       ./src/NamingService/Test/Makefile \
+       ./src/Notification/Makefile \
+       ./src/NOTIFICATION_SWIG/Makefile \
+       ./src/Registry/Makefile \
+       ./src/ResourcesManager/Makefile \
+       ./src/SALOMEDS/Makefile \
+       ./src/SALOMEDS/Test/Makefile \
+       ./src/SALOMEDSClient/Makefile \
+       ./src/SALOMEDSImpl/Makefile \
+       ./src/SALOMEDSImpl/Test/Makefile \
+       ./src/SALOMELocalTrace/Makefile \
+       ./src/SALOMELocalTrace/Test/Makefile \
+       ./src/SALOMETraceCollector/Makefile \
+       ./src/SALOMETraceCollector/Test/Makefile \
+       ./src/TestContainer/Makefile \
+       ./src/TestMPIContainer/Makefile \
+       ./src/TOOLSDS/Makefile \
+       ./src/UnitTests/Makefile \
+       ./src/Utils/Makefile \
+       ./src/Utils/Test/Makefile \
+])
+
diff --git a/doc/KERNEL_Services.txt b/doc/KERNEL_Services.txt
new file mode 100644 (file)
index 0000000..b348fca
--- /dev/null
@@ -0,0 +1,305 @@
+=================================================================
+KERNEL Services for end user (Python interface)
+=================================================================
+
+*html version of this document is produced with docutils*::
+
+  rst2html < doc.txt > doc.html
+
+This document corresponds to SALOME2 3.2.0
+
+.. contents::
+.. sectnum::
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+-------------------------------------------------------------------------------
+
+In a SALOME application, distributed components, servers and clients use
+the CORBA middleware for comunication. CORBA interfaces are defined via idl
+files. All the different CORBA interfaces are available for users in Python,
+see CORBA interfaces below.
+
+For some general purpose services, CORBA interfaces have been encapsulated
+in order to provide a simple interface (encapsulation is generally done in
+C++ classes, and a Python SWIG interface is also generated from C++, to 
+ensure a consistent behavior between C++ modules and Python modules or user
+script).
+
+General purpose services
+========================
+
+SALOME services access from a Python shell
+------------------------------------------
+See SALOME_Application_ for detailed instructions to launch a Python
+interpreter with full acces to the SALOME environment and services.
+
+.. _SALOME_Application: ./SALOME_Application.html
+
+You can use the embedded Python interpreter in Grahic User Interface, or an
+external interpreter, with::
+
+   ./runSession
+   python
+
+In either cases, SALOME services access is done with::
+
+   import salome
+   salome.salome_init()
+
+In the embedded interpreter, it is already done, but there is no problem to
+do it several times, so it is preferable to add these instructions
+systematically in your scripts, to allow them to work in all configurations.
+
+Container and component instanciation
+-------------------------------------
+
+See LifeCycleCORBA_ for the C++ interface (Python interface obtained with SWIG
+is very similar).
+
+.. _LifeCycleCORBA: ./tui/KERNEL/classSALOME__LifeCycleCORBA.html
+
+
+In the following example, a test component provided in KERNEL is launched
+in the local container, "FactoryServer", created when SALOME starts::
+
+   import salome
+   salome.salome_init()
+   
+   import LifeCycleCORBA
+   lcc = LifeCycleCORBA.LifeCycleCORBA()
+   obj=lcc.FindOrLoad_Component("FactoryServer","SalomeTestComponent")
+   
+   import Engines
+   comp=obj._narrow(Engines.TestComponent)
+   
+   comp.Coucou(1)
+
+The answer is something like::
+
+   'TestComponent_i : L = 1'
+The _narrow() instruction is not always mandatory in Python, but sometimes 
+useful to be sure you have got the right type of object. Here, Testcomponent_
+interface is defined in CORBA module Engines. With this example, it works also
+without the _narrow() instruction::
+
+   obj.Coucou(1)
+
+.. _Testcomponent: ./tui/KERNEL/interfaceEngines_1_1TestComponent.html
+
+
+In the next example, a component instance is created in a specific Container
+defined by it's computer hostname and it's name. Here we use the local
+computer. Note that in Utils_Identity_, getShortHostName() gives the short
+hostname of the computer, without domain suffixes, which is used in SALOME.
+The container process is created here if it does not exists, and a new
+component instance is created::
+
+   import salome
+   salome.salome_init()
+   import LifeCycleCORBA
+   lcc = LifeCycleCORBA.LifeCycleCORBA()
+
+   import Utils_Identity
+   host  = Utils_Identity.getShortHostName()
+
+   import Engines
+   params={}
+   params['hostname']=host
+   params['container_name']='myContainer'
+   comp=lcc.LoadComponent(params,'SalomeTestComponent')
+   comp.Coucou(1)
+
+.. _Utils_Identity: ./tui/KERNEL/namespaceUtils__Identity.html
+
+If you want to get a list of containers and component instances, client object
+from orbmodule_ provides a list::
+
+   import orbmodule
+   clt=orbmodule.client()
+   clt.showNS()
+
+.. _orbmodule: ./tui/KERNEL/classorbmodule_1_1client.html
+
+The list looks like::
+
+   Logger.
+   ContainerManager.object
+   Containers.dir
+     cli70ac.dir
+       FactoryServerPy.object
+       SuperVisionContainer.object
+       FactoryServer.object
+       FactoryServer.dir
+         SalomeTestComponent_inst_1.object
+       myContainer.object
+       myContainer.dir
+         SalomeTestComponent_inst_1.object
+         SalomeTestComponent_inst_2.object
+   Registry.object
+   Kernel.dir
+     ModulCatalog.object
+     Session.object
+   Study.dir
+     Study2.object
+     extStudy_1.object
+     extStudy_2.object
+     extStudy_3.object
+   myStudyManager.object
+   SalomeAppEngine.object
+
+
+File transfer service
+---------------------
+
+See FileTransferCORBA_ for the C++ interface (Python interface obtained with
+SWIG is very similar).
+
+.. _FileTransferCORBA: ./tui/KERNEL/classSALOME__FileTransferCORBA.html
+
+The following example shows how to transfer a file from a remote host to the
+client computer. Remote hostname is 'cli76cc', we would like to copy
+'tkcvs_8_0_3.tar.gz' from remote to local computer. A full pathname is
+required. A container is created on remote computer if it does not exist,
+to handle the file transfer::
+
+   import salome
+   salome.salome_init()
+
+   import LifeCycleCORBA
+   remotefile="/home/prascle/tkcvs_8_0_3.tar.gz"
+   aFileTransfer=LifeCycleCORBA.SALOME_FileTransferCORBA('cli76cc',remotefile)
+   localFile=aFileTransfer.getLocalFile()
+
+
+CORBA Naming service access
+---------------------------
+
+See SALOME_NamingService_ for the C++ interface. The Python interface
+SALOME_NamingServicePy_ is not yet derived from the C++ interface and offers
+only the most useful functions.
+
+.. _SALOME_NamingService: ./tui/KERNEL/classSALOME__NamingService.html
+.. _SALOME_NamingServicePy: ./tui/KERNEL/classSALOME__NamingServicePy_1_1SALOME__NamingServicePy__i.html
+
+Batch services
+--------------
+
+See Batch_ documentation (in french only).
+
+.. _Batch: ./Batch.html/index.html
+
+All IDL Interfaces
+==================
+
+Containers and component life cycle, File transfer service
+----------------------------------------------------------
+
++-----------------------------+-----------------------------------------------+
+| Engines_                    | Engines CORBA module.                         |
++=============================+===============================================+
+| Component_                  | Generic component interface.                  |
+|                             | All SALOME components inherit this interface  |
++-----------------------------+-----------------------------------------------+
+| Container_                  | Container: host for C++ and Python components |
+|                             | components instances                          |
++-----------------------------+-----------------------------------------------+
+| FileTransfer_               | Agent for file transfer created by a container|
+|                             | copy a local file to a distent client         |
++-----------------------------+-----------------------------------------------+
+| FileRef_                    | Reference to a file, used by a container for  |
+|                             | file transfers                                |
++-----------------------------+-----------------------------------------------+
+| ContainerManager_           | Unique instance, in charge of container       |
+|                             | creation on remote computers                  |
++-----------------------------+-----------------------------------------------+
+| MPIContainer_               | An exemple of parallel implementation for     |
+|                             | containers and components                     |
++-----------------------------+-----------------------------------------------+
+| MPIObject_                  |                                               |
++-----------------------------+-----------------------------------------------+
+
+Study management
+----------------
+
++-----------------------------+-----------------------------------------------+
+| SALOMEDS_                   | SALOMEDS CORBA module                         |
++=============================+===============================================+
+| SALOMEDSidl_                |                                               |
++-----------------------------+-----------------------------------------------+
+| SALOMEDS_Attributes_        |                                               |
++-----------------------------+-----------------------------------------------+
+
+High speed transfer, object life cycle, exceptions, GUI interface...
+--------------------------------------------------------------------
+
++-----------------------------+-----------------------------------------------+
+| SALOME_                     | SALOME CORBA module                           |
++=============================+===============================================+
+| SALOME_Comm_                |                                               |
++-----------------------------+-----------------------------------------------+
+| SALOME_GenericObj_          |                                               |
++-----------------------------+-----------------------------------------------+
+| SALOME_Exception_           |                                               |
++-----------------------------+-----------------------------------------------+
+| SALOME_Session_             |                                               |
++-----------------------------+-----------------------------------------------+
+
+Miscelleanous
+-------------
++-----------------------------+-----------------------------------------------+
+|                             | other CORBA modules                           |
++=============================+===============================================+
+| SALOME_ModuleCatalog_       |                                               |
++-----------------------------+-----------------------------------------------+
+| SALOME_RessourcesCatalog_   |                                               |
++-----------------------------+-----------------------------------------------+
+| SALOME_Registry_            |                                               |
++-----------------------------+-----------------------------------------------+
+| Logger_                     |                                               |
++-----------------------------+-----------------------------------------------+
+
+**Other idl for test purposes**
+nstest.idl
+SALOME_TestComponent.idl
+SALOME_TestModuleCatalog.idl
+SALOME_TestMPIComponent.idl
+TestNotif.idl
+
+.. _Engines:           ./tui/KERNEL/namespaceEngines.html
+.. _Component:         ./tui/KERNEL/interfaceEngines_1_1Component.html
+.. _Container:         ./tui/KERNEL/interfaceEngines_1_1Container.html
+.. _fileTransfer:      ./tui/KERNEL/interfaceEngines_1_1fileTransfer.html
+.. _fileRef:           ./tui/KERNEL/interfaceEngines_1_1fileRef.html
+.. _ContainerManager:  ./tui/KERNEL/interfaceEngines_1_1ContainerManager.html
+.. _MPIContainer:      ./tui/KERNEL/interfaceEngines_1_1MPIContainer.html
+.. _MPIObject:         ./tui/KERNEL/interfaceEngines_1_1MPIObject.html
+.. _SALOME:                   ./tui/KERNEL/namespaceSALOME.html
+.. _SALOMEDS:                 ./tui/KERNEL/namespaceSALOMEDS.html
+.. _SALOME_Component:         ./tui/KERNEL/SALOME__Component_8idl.html
+.. _SALOME_ContainerManager:  ./tui/KERNEL/SALOME__ContainerManager_8idl.html
+.. _SALOMEDSidl:              ./tui/KERNEL/SALOMEDS_8idl.html
+.. _SALOMEDS_Attributes:      ./tui/KERNEL/SALOMEDS__Attributes_8idl.html
+.. _SALOME_ModuleCatalog:     ./tui/KERNEL/SALOME__ModuleCatalog_8idl.html
+.. _SALOME_RessourcesCatalog: ./tui/KERNEL/SALOME__RessourcesCatalog_8idl.html
+.. _SALOME_Registry:          ./tui/KERNEL/SALOME__Registry_8idl.html
+.. _Logger:                   ./tui/KERNEL/Logger_8idl.html
+.. _SALOME_Comm:              ./tui/KERNEL/SALOME__Comm_8idl.html
+.. _SALOME_GenericObj:        ./tui/KERNEL/SALOME__GenericObj_8idl.html
+.. _SALOME_Exception:         ./tui/KERNEL/SALOME__Exception_8idl.html
+.. _SALOME_Session:           ./tui/KERNEL/SALOME__Session_8idl.html
+.. _SALOME_MPIContainer:      ./tui/KERNEL/SALOME__MPIContainer_8idl.html
+.. _SALOME_MPIObject:         ./tui/KERNEL/SALOME__MPIObject_8idl.html
+
+
+-------------------------------------------------------------------------------
+
++----------------------------------+------------------------------------------+
+| `General KERNEL documentation`_  | `End User KERNEL Doxygen documentation`_ |
++----------------------------------+------------------------------------------+
+
+.. _`General KERNEL documentation`:           ./index.html
+.. _`End User KERNEL Doxygen documentation`:  ./tui/KERNEL/index.html
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644 (file)
index 0000000..c504425
--- /dev/null
@@ -0,0 +1,58 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+# -* Makefile *- 
+#
+# Author : Paul RASCLE (EDF)
+# Date : 06/02/2006
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+SUBDIRS = salome
+
+doc_DATA =
+
+if RST2HTML_IS_OK
+  doc_DATA += \
+       index.html \
+       UnitTests.html \
+       SALOME_Application.html \
+       INSTALL.html \
+       kernel_resources.html \
+       KERNEL_Services.html
+endif
+
+EXTRA_DIST=$(doc_DATA)
+
+
+# Building html from restructured text files
+STYLESHEET=$(srcdir)/rst.css
+RST2HTML=@RST2HTML@
+RSTOPTS=--output-encoding=latin1 --stylesheet=$(STYLESHEET)
+#RSTOPTS=--output-encoding=latin1
+
+%.html: $(srcdir)/%.txt
+       $(RST2HTML) $(RSTOPTS) $< $@
+
+usr_docs:
+       (cd salome && $(MAKE) $(AM_MAKEFLAGS) usr_docs)
+
+dev_docs:
+       (cd salome && $(MAKE) $(AM_MAKEFLAGS) dev_docs)
\ No newline at end of file
diff --git a/doc/index.txt b/doc/index.txt
new file mode 100644 (file)
index 0000000..0120b1d
--- /dev/null
@@ -0,0 +1,113 @@
+=================================================================
+KERNEL common Services
+=================================================================
+
+*html version of this document is produced with docutils*::
+
+  rst2html < doc.txt > doc.html
+
+*This document corresponds to SALOME2 3.2.0*
+
+.. contents::
+.. sectnum::
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+-------------------------------------------------------------------------------
+
+**General information, for users, integrators and developers**
+
+**Users, integrators and developers, which documentation ?**
+
+Following your kind of usage of SALOME, you will find some specific 
+introductory documentation, listed below.
+
+End user
+========
+
+How to configure a SALOME application
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The end user may have to configure his own SALOME application by selection of a
+subset of availables SALOME modules. He also may want to install his
+application on several computers. 
+
+See SALOME_Application_ to define your own configuration of SALOME and run it  
+on one or several computers. This is the recommended way of configuration.
+
+.. _SALOME_Application: ./SALOME_Application.html
+
+
+How to launch SALOME in a SALOME application
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+See SALOME_Application_.
+
+How to use KERNEL services in Python scripts
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The SALOME KERNEL offers offers a list of services available in Python.
+
+See KERNEL_Services_.
+
+.. _KERNEL_Services: ./KERNEL_Services.html
+
+Application Integrator
+======================
+
+Applications integrators are in charge of configuration and installation of
+specific SALOME applications over a local network. Application Integrators 
+built SALOME modules binaries from sources tarballs.
+
+How to install SALOME
+~~~~~~~~~~~~~~~~~~~~~
+
+See INSTALL_ for general information on required configuration and 
+prerequisites, compilation procedure, setting environment principles.
+
+.. _INSTALL: ./INSTALL.html
+
+How to configure a SALOME application
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+See SALOME_Application_ to define your own configuration of SALOME and run it  
+on one or several computers. This is the recommended way of configuration.
+
+.. _SALOME_Application: ./SALOME_Application.html
+
+
+Module maintainer
+=================
+
+Module maintainers are in charge of the development and debug of the SALOME
+modules. Each SALOME module is stored in a CVS base. CVS bases are organised
+in separate branches for developments and debug. All official or development
+releases are identified by a CVS tag.
+
+Source code structuration and Unit Tests
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+See UnitTests_ for general information on code directories structure,
+unit tests associated to the different kind of classes, and how to run
+the unit tests.
+
+.. _UnitTests: ./UnitTests.html
+
+Some development utilities
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+See kernel_resources_ for information on basic utilities for C++ and Python
+development, like trace and debug, exceptions, singleton.
+
+.. _kernel_resources: ./kernel_resources.html
+
+-------------------------------------------------------------------------------
+
++----------------------------------+------------------------------------------+
+| `General KERNEL documentation`_  | `End User KERNEL Doxygen documentation`_ |
++----------------------------------+------------------------------------------+
+
+.. _`General KERNEL documentation`:           ./index.html
+.. _`End User KERNEL Doxygen documentation`:  ./tui/KERNEL/index.html
diff --git a/doc/kernel_resources.txt b/doc/kernel_resources.txt
new file mode 100644 (file)
index 0000000..0bc9700
--- /dev/null
@@ -0,0 +1,507 @@
+======================================================================
+SALOME Kernel resources for developer
+======================================================================
+
+*html version of this document is produced with docutils*::
+
+  rst2html doc.txt > doc.html
+
+*This document corresponds to SALOME2 3.2.0*
+
+:Authors:
+   Antoine Yessayan,
+   Paul Rascle
+
+:Version:  0.3 - february 17, 2006
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+-------------------------------------------------------------------------------
+
+**Abstract**
+
+This document describes the development environment for 
+C++ and Python. Makefiles generation and usage are 
+introduced in another document: "using the SALOME 
+configuration and building system environment". 
+Development environment is intended here as: trace and 
+debug macros usage; SALOME exceptions usage, in C++ and 
+Python; user CORBA exceptions usage, in C++ and Python, 
+with and without Graphical User Interface; some general 
+purpose services such as singleton, used for CORBA 
+connection and disconnection.
+
+.. contents::
+.. sectnum::
+
+-------------------------------------------------------------------------------
+
+Trace and debug Utilities
+=========================
+
+During the development process, an execution log is 
+useful to identify problems. This log contains 
+messages, variables values, source files names and line 
+numbers. It is recommended to verify assertions on 
+variables values and if necessary, to stop the 
+execution at debug time, in order to validate all parts 
+of code.
+
+Two modes: debug and release
+----------------------------
+
+The goal of debug mode is to check as many features as 
+possible during the early stages of the development 
+process. The purpose of the utilities provided in 
+SALOME is to help the developer to add detailed traces 
+and check variables values, without writing a lot of code.
+
+When the code is assumed to be valid, the release mode 
+optimizes execution, in terms of speed, memory, and 
+display only user level messages.
+
+But, some informations must always be displayed in both 
+modes: especially messages concerning environment or 
+internal errors, with version identification. When an 
+end user is confronted to such a message, he may refer 
+to a configuration documentation or send the message to 
+the people in charge of SALOME installation, or to the 
+development team, following the kind of error.
+
+C++ Macros for trace and debug
+------------------------------
+
+SALOME provides C++ macros for trace and debug. These 
+macros are in::
+
+  KERNEL_SRC/src/SALOMELocalTrace/utilities.h
+
+This file must be included in C++ source. Some 
+macros are activated only in debug mode, others are 
+always activated. To activate the debug mode, ``_DEBUG_``
+must be defined, which is the case when SALOME 
+Makefiles are generated from configure, without 
+options. When ``_DEBUG_`` is undefined (release mode: 
+``configure --disable-debug --enable-production``), the 
+debug mode macros are defined empty (they do nothing). 
+So, when switching from debug to release, it is 
+possible (and recommended) to let the macro calls 
+unchanged in the source.
+
+All the macros generate trace messages, stored in a 
+circular buffer pool. A separate thread reads the 
+messages in the buffer pool, and, depending on options 
+given at SALOME start, writes the messages on the 
+standard output, a file, or send them via CORBA, in 
+case of a multi machine configuration.
+
+Three informations are systematically added in front of 
+the information displayed:
+
+* the thread number from which the message come from;
+
+* the name of the source file in which the macros is set;
+
+* the line number of the source file at which the macro 
+  is set.
+
+Macros defined in debug and release modes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+**INFOS_COMPILATION**
+   The C++ macro INFOS_COMPILATION writes on the trace 
+   buffer pool informations about the compiling process: 
+
+   * the name of the compiler : g++, KCC, CC, pgCC;
+
+   * the date and the time of the compiling processing process.
+
+   This macro INFOS_COMPILATION does not have any 
+   argument. Moreover, it is defined in both compiling 
+   mode : _DEBUG_ and _RELEASE_.
+
+   Example::
+
+     #include "utilities.h"
+     int main(int argc , char **argv) 
+     { 
+       INFOS_COMPILATION;
+       ...
+     }
+     INFOS(str)
+
+**INFOS**
+   In both compiling mode _DEBUG_ and _RELEASE_, The C++ 
+   macro INFOS writes on the trace buffer pool the string 
+   which has been passed in argument by the user.
+
+   Example:: 
+
+     #include "utilities.h"
+     int main(int argc , char **argv)
+     { 
+       ... 
+       INFOS("NORMAL END OF THE PROCESS"); 
+       return 0; 
+     }
+
+   displays::
+
+      main.cxx [5] : NORMAL END OF THE PROCESS
+
+
+**INTERRUPTION(str)**
+   In both compiling mode _DEBUG_ and _RELEASE_, The C++ 
+   macro INTERRUPTION writes on the trace buffer pool the 
+   string, with a special ABORT type. When the thread in 
+   charge of collecting messages finds this message, it 
+   terminates the application, after message treatment.
+
+**IMMEDIATE_ABORT(str)**
+   In both compiling mode _DEBUG_ and _RELEASE_, The C++ 
+   macro IMMEDIATE_ABORT writes the message str immediately on 
+   standard error and exits the application. Remaining 
+   messages not treated by the message collector thread 
+   are lost.
+
+Macros defined only in debug mode
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**MESSAGE(str)**
+   In _DEBUG_ compiling mode only, the C++ macro MESSAGE 
+   writes on the trace buffer pool the string which has 
+   been passed in argument by the user. In _RELEASE_ 
+   compiling mode, this macro is blank.
+
+   Example:: 
+
+     #include "utilities.h" 
+     #include <string> 
+
+     using namespace std; 
+
+     int main(int argc , char **argv) 
+     { 
+       ... 
+       const char *str = "Salome";
+       MESSAGE(str);
+       ... const string st; 
+       st = "Aster"; 
+       MESSAGE(c_str(st+" and CASTEM")); 
+       return 0;
+     }
+
+   displays::
+
+     - Trace main.cxx [8] : Salome
+     - Trace main.cxx [12] : Aster and CASTEM
+
+**BEGIN_OF(func_name)**
+   In _DEBUG_ compiling mode, The C++ macro BEGIN_OF 
+   appends the string "Begin of " to the one passed in 
+   argument by the user and displays the result on the 
+   trace buffer pool. In _RELEASE_ compiling mode, this 
+   macro is blank.
+
+   Example:: 
+
+      #include "utilities.h" 
+      int main(int argc , char **argv) 
+      { 
+        BEGIN_OF(argv[0]);
+        return 0;
+      }
+
+   displays:: 
+
+     - Trace main.cxx [3] : Begin of a.out
+
+
+**END_OF(func_name)**
+   In _DEBUG_ compiling mode, The C++ macro END_OF appends 
+   the string "Normal end of " to the one passed in 
+   argument by the user and displays the result on the 
+   trace buffer pool. In _RELEASE_ compiling mode, this 
+   macro is blank.
+
+   Example:: 
+
+      #include "utilities.h" 
+      int main(int argc , char **argv) 
+      { 
+        END_OF(argv[0]);
+        return 0; 
+      }
+
+   displays::
+
+      - Trace main.cxx [4] : Normal end of a.out
+
+**SCRUTE(var)**
+   In _DEBUG_ compiling mode, The C++ macro SCRUTE 
+   displays its argument which is an application variable 
+   followed by the value of the variable. In _RELEASE_ 
+   compiling mode, this macro is blank.
+
+   Example::
+
+      #include "utilities.h"
+      int main(int argc , char **argv) 
+      { 
+        const int i=999;
+        if( i > 0 ) SCRUTE(i) ; i=i+1;
+        return 0;
+      }
+
+   displays::
+
+      - Trace main.cxx [5] : i=999
+
+**ASSERT(condition)**
+   In _DEBUG_ compiling mode only, The C++ macro ASSERT 
+   checks the expression passed in argument to be not 
+   NULL. If it is NULL the condition is written with the 
+   macro INTERRUPTION (see above). The process exits after 
+   trace of this last message. In _RELEASE_ compiling 
+   mode, this macro is blank. N.B. : if ASSERT is already 
+   defined, this macro is ignored.
+
+   Example::
+
+      #include "utilities.h" 
+      ... 
+      const char *ptrS = fonc();
+      ASSERT(ptrS!=NULL); 
+      cout << strlen(ptrS); 
+      float table[10];
+      int k;
+      ... 
+      ASSERT(k<10);
+      cout << table[k];
+
+Exceptions
+==========
+
+C++ exceptions: class SALOME_Exception
+--------------------------------------
+
+definition
+~~~~~~~~~~
+
+The class SALOME_Exception provides a generic method to 
+send a message, with optional source file name and line 
+number. This class is intended to serve as a base class 
+for all kinds of exceptions SALOME code. All the 
+exceptions derived from SALOME_Exception could be 
+handled in a single catch, in which the message 
+associated to the exception is displayed, or sent to a 
+log file.
+
+The class SALOME_Exception inherits its behavior from 
+the STL class exception.
+
+usage
+~~~~~
+
+The header SALOME/src/utils/utils_SALOME_Exception.hxx 
+must be included in the C++ source, when raised or trapped::
+
+   #include "utils_SALOME_Exception.hxx"
+
+The SALOME_Exception constructor is::
+
+   SALOME_Exception( const char *text,
+                     const char *fileName=0, 
+                     const unsigned int lineNumber=0 );
+
+The exception is raised like this::
+
+   throw SALOME_Exception("my pertinent message");
+
+or like this::
+
+   throw SALOME_Exception(LOCALIZED("my pertinent message"));
+
+where LOCALIZED is a macro provided with 
+``utils_SALOME_Exception.hxx`` which gives file name and 
+line number.
+
+The exception is handled like this::
+
+   try
+     {
+       ...
+     }
+   catch (const SALOME_Exception &ex)
+     {
+       cerr << ex.what() <<endl;
+     }
+
+The what() method overrides the one defined in the STL 
+exception class.
+
+CORBA exceptions
+----------------
+
+definition
+~~~~~~~~~~
+
+The idl SALOME_Exception provides a generic CORBA 
+exception for SALOME, with an attribute that gives an 
+exception type,a message, plus optional source file 
+name and line number. 
+
+This idl is intended to serve for all user CORBA 
+exceptions raised in SALOME code, as IDL specification 
+does not support exception inheritance. So, all the 
+user CORBA exceptions from SALOME could be handled in a 
+single catch.
+
+The exception types defined in idl are:
+
+  - COMM CORBA communication problem,
+
+  - BAD_PARAM Bad User parameters,
+
+  - INTERNAL_ERROR application level problem (often irrecoverable).
+
+CORBA system and user exceptions already defined in the 
+packages used within SALOME, such as OmniORB 
+exceptions, must be handled separately.
+
+usage
+~~~~~
+
+CORBA servant, C++
+^^^^^^^^^^^^^^^^^^
+
+   The CORBA Server header for SALOME_Exception and a 
+   macro to throw the exception are provided with the 
+   header ``KERNEL_SRC/src/Utils/Utils_CorbaException.hxx``::
+
+      #include "Utils_CorbaException.hxx"
+
+   The exception is raised with a macro which appends file 
+   name and line number::
+
+      if (myStudyName.size() == 0)
+        THROW_SALOME_CORBA_EXCEPTION("No Study Name given", 
+                                     SALOME::BAD_PARAM);
+
+CORBA Client, GUI Qt C++
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+   **NO MORE AVAILABLE in SALOME 3.x**
+
+   The CORBA Client header for SALOME_Exception and a Qt 
+   function header that displays a message box are 
+   provided in:
+
+     ``KERNEL_SRC/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx``
+
+   ::
+
+     #include "SALOMEGUI_QtCatchCorbaException.hxx"
+
+   A typical exchange with a CORBA Servant will be::
+
+      try
+      {
+        ... // one ore more CORBA calls
+      }
+
+      catch (const SALOME::SALOME_Exception & S_ex)
+      {
+        QtCatchCorbaException(S_ex);
+      }
+
+
+
+CORBA Client, C++, without GUI
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+  Nothing specific has been provided to the developer 
+  yet. See the idl or the Qt function 
+  SALOMEGUI_QtCatchCorbaException.hxx to see how to get 
+  the information given by the exception object.
+
+Miscellaneous tools
+===================
+
+Singleton
+---------
+
+Definition
+~~~~~~~~~~
+
+A singleton is an application data which is created and 
+deleted only once at the end of the application 
+process. The C++ compiler allows the user to create a 
+static singleton data before the first executable 
+statement. They are deleted after the last statement execution.
+
+The ``SINGLETON_`` template class deals with dynamic 
+singleton. It is useful for functor objects. For 
+example, an object that connects the application to a 
+system at creation and disconnects the application at deletion.
+
+Usage
+~~~~~
+
+To create a single instance of a POINT object::
+
+  # include "Utils_SINGLETON.hxx"
+  ... 
+  POINT *ptrPoint=SINGLETON_<POINT>::Instance() ; 
+  assert(ptrPoint!=NULL) ;
+
+No need to delete ptrPoint. Deletion is achieved 
+automatically at exit. If the user tries to create more 
+than one singleton by using the class method 
+SINGLETON_<TYPE>::Instance(), the pointer is returned 
+with the same value even if this is done in different 
+functions (threads ?)::
+
+  POINT *p1=SINGLETON_<POINT>::Instance() ;
+  ... 
+  POINT *p2=SINGLETON_<POINT>::Instance() ; 
+
+  assert(p1==p2)
+
+Design description
+~~~~~~~~~~~~~~~~~~
+
+Here are the principles features of the singleton 
+design:
+
+* the user creates an object of class TYPE by using the 
+  class method ``SINGLETON_<TYPE>::Instance()`` which 
+  returns a pointer to the single object ;
+
+* to create an object, ``SINGLETON_<TYPE>::Instance()`` 
+  uses the default constructor of class TYPE ;
+
+* at the same time, this class method creates a 
+  destructor object which is added to the generic list 
+  of destructor objects to be executed at the end of 
+  the application (atexit) ;
+
+* at the end of the application process all the 
+  deletions are performed by the ``Nettoyage()`` C function 
+  which executes the destruction objects end then 
+  deletes the destructions objects themselves ;
+
+* the ``Nettoyage()`` C  function using ``atexit()`` C  function 
+  is embedded in a static single object ``ATEXIT_()``.
+
+
+-------------------------------------------------------------------------------
+
++----------------------------------+------------------------------------------+
+| `General KERNEL documentation`_  | `End User KERNEL Doxygen documentation`_ |
++----------------------------------+------------------------------------------+
+
+.. _`General KERNEL documentation`:           ./index.html
+.. _`End User KERNEL Doxygen documentation`:  ./tui/KERNEL/index.html
diff --git a/doc/rst.css b/doc/rst.css
new file mode 100644 (file)
index 0000000..38bd7dc
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+:Authors: David Goodger, David Abrahams
+:Contact: goodger@users.sourceforge.net, dave@boost-consulting.com
+:date: $Date$
+:version: $Revision$
+:copyright: This stylesheet has been placed in the public domain.
+
+This stylesheet is for the use of ReStructuredText in a Boost context.
+It is basically an agglomeration of boost.css and the default.css that
+comes from docutils.
+
+ */
+
+.first {
+  margin-top: 0 }
+
+.last {
+  margin-bottom: 0 }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: #00008B }
+
+dd {
+  margin-bottom: 0.5em }
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.attention, div.caution, div.danger, div.error, div.hint,
+div.important, div.note, div.tip, div.warning, div.admonition {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.hint p.admonition-title, div.important p.admonition-title,
+div.note p.admonition-title, div.tip p.admonition-title,
+div.admonition p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em }
+
+div.footer, div.header {
+  font-size: smaller }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 0em 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+H1.title
+{
+    FONT-SIZE: 150%;
+    COLOR: #00008B;
+    text-align: center
+}
+H1
+{
+    FONT-SIZE: 125%;
+}
+H2
+{
+    FONT-SIZE: 108%;
+}
+h2.subtitle {
+  text-align: center }
+H3
+{
+    FONT-SIZE: 100%;
+}
+BODY
+{
+    FONT-SIZE: 100%;
+    BACKGROUND-COLOR: #ffffff;
+}
+PRE
+{
+    MARGIN-LEFT: 2em;
+    FONT-FAMILY: Courier;
+}
+CODE
+{
+    FONT-FAMILY: Courier;
+    white-space: pre;
+}
+.pre
+{
+    FONT-FAMILY: Courier;
+    white-space: pre;
+}
+.index
+{
+    TEXT-ALIGN: left;
+}
+.page-index
+{
+    TEXT-ALIGN: left;
+}
+.definition
+{
+    TEXT-ALIGN: left;
+}
+.footnote
+{
+    FONT-SIZE: 66%;
+    VERTICAL-ALIGN: super;
+    TEXT-DECORATION: none;
+}
+.function-semantics
+{
+    CLEAR: left;
+}
+
+hr {
+  width: 75% }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.line-block {
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em ;
+  font-size: 80%;
+  border: solid thin gray ;
+  background-color: #eeeeee }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.option-argument {
+  font-style: italic }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+table {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.citation {
+  border-left: solid thin gray ;
+  padding-left: 0.5ex }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.footnote {
+  border-left: solid thin black ;
+  padding-left: 0.5ex }
+
+td, th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+th.docinfo-name, th.field-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap }
+
+/* 
+  dwa 2003/7/29 -- commented out so that it wouldn't override earlier
+  styles from boost.css
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+  font-size: 100% }
+*/
+
+ul.auto-toc {
+  list-style-type: none }
diff --git a/doc/salome/Batch.texi b/doc/salome/Batch.texi
new file mode 100755 (executable)
index 0000000..817e5b9
--- /dev/null
@@ -0,0 +1,4962 @@
+\input texinfo   @c -*-texinfo-*-
+@c %**start of header
+@setfilename Batch.info
+@settitle Documentation de Batch
+@setchapternewpage odd
+@iftex
+@afourpaper
+@end iftex
+
+@include version.texi
+
+@dircategory Bibliotheque de classes Batch
+@direntry
+* Batch: (Batch);       Documentation de la bibliotheque de classes Batch.
+@end direntry
+
+@c %**end of header
+
+
+
+@titlepage
+@sp 10
+@comment The title is printed in a large font.
+@title Bibliotheque de classes Batch
+@subtitle Documentation - version @value{VERSION}
+@subtitle @value{UPDATED}
+@author Ivan DUTKA-MALEN - EDF R&D
+
+@c The following two commands start the copyright page.
+@page
+@vskip 0pt plus 1filll
+Copyright @copyright{} 2003-2004 EDF R&D sous licence GPL
+@end titlepage
+
+@contents
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Top,       Description, Index   , (dir)
+@comment node-name, next,        previous,  up
+@ifinfo
+Copyright @copyright{} 2003-2004 EDF R&D sous licence GPL
+@end ifinfo
+
+@unnumbered Introduction
+
+Ceci est la documentation de la bibliotheque de classes Batch version
+@value{VERSION}.
+
+Ce manuel est normalement disponible sous la forme de fichiers
+@file{.info}, PostScript @file{.ps}, PDF @file{.pdf} et HTML
+@file{.html}. Merci a Texinfo. 
+
+
+@menu
+* Description::                         Le batch, c'est quoi ? Ca sert a quoi ?
+* Classes::                             Une description des classes internes.
+* Utilisation::                         Comment on s'en sert ? Quelques exemples.
+* Installation de la bibliotheque::     Comment ca s'installe ?
+* Divers::                              D'autres petits details.
+* Index::                               Index generaux.
+@end menu
+
+
+
+
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Description,   Classes,       Top,      Top
+@comment node-name,     next,          previous, up
+@chapter Description Generale
+@cindex  description
+
+Dans le domaine du batch, nombreux sont les gestionnaires qui sont
+apparus et se sont popularises en fonction des plates-formes et des
+constructeurs. On peut notamment citer NQS, le premier de tous, LSF,
+LoadLeveler, PBS (et ses derives OpenPBS et PBS Pro), etc. qui se
+prevalent tous d'une compatibilite avec NQS.
+
+Si l'ensemble de ces produits offrent les fonctionnalites de base de
+NQS, a savoir soumission, controle, destruction, modification, etc. de
+travaux batch, ils se distinguent tous par leur incompatibilite mutuelle
+et par les syntaxes de fichiers et les appels de fonction specifiques
+qu'ils ont developpes.
+
+Or il est interessant de pouvoir acceder d'une facon homogene et
+generique aux fonctionnalites de ces gestionnaires quitte a se
+restreindre a un sous-ensemble minimal mais essentiel de leurs
+possibilites.
+
+La bibliotheque de classes Batch fournit ce moyen de soumettre et
+controler des travaux batch depuis une machine cliente sans s'occuper du
+type de gestionnaire present sur le serveur sur lequel se deroule
+l'execution du travail. Seul doit etre precise le nom du serveur sur
+lequel sera soumis le travail batch et le type de gestionnaire qui s'y
+trouve. Tout le reste est generique et ne depend plus de l'implementation.
+
+
+
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Classes,    Terminologie,  Description, Top
+@comment  node-name,  next,          previous,    up
+@chapter  Classes Internes
+@cindex   classe
+
+Les classes de la bibliotheque reposent sur des concepts issus du monde
+de la gestion de batch, qui meritent d'etre reprecises pour ne pas
+introduire d'ambiguite semantique dans le discours.
+
+@menu
+* Terminologie::        Description des termes employes.
+* Classes generiques::  Les classes communes a tous les gestionnaires.
+* Classes specifiques:: Les classes d'implementation.
+@end menu
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Terminologie, Batch,  Classes,   Classes
+@comment  node-name,    next,   previous,  up
+@section  Terminologie
+@cindex   terminologie
+
+Pour les non-inities aux mysteres de la gestion de batch, un petit
+glossaire des termes employes dans cette documentation, assaisonne a la
+sauce de la bibliotheque de classes Batch.
+
+@menu
+* Batch::                Gestion par lots, execution differee.
+* BatchManager::         Gestionnaire de batch.
+* Job::                  Travail.
+* Parametre::            Configuration de l'execution.
+* Environnement::        Environnement d'execution.
+* JobId::                Identifiant de travail.
+* JobInfo::              Informations sur le travail.
+@end menu
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Batch,      BatchManager, Terminologie, Terminologie
+@comment  node-name,  next,          previous,     up
+@subsection Batch
+@cindex     batch
+
+Le traitement batch (batch processing en anglais), ou traitement par
+lot, fait reference au mode de sequencage et d'utilisation des
+ressources d'un calculateur tel qu'il a ete premierement employe dans
+les debuts de l'ere informatique. Mais il faut preciser que cette
+anteriorite ne condamne pas le traitement batch aux oubliettes au motif
+d'une quelconque obsolescence. Si le traitement par lot a vu le jour et
+existe encore aujourd'hui, c'est parce qu'il repond de maniere
+satisfaisante a une certaine utilisation des ressources d'un
+calculateur, et que cette utilisation est encore d'actualite. Present
+depuis plus de quarante ans, le batch est encore largement utilise sur
+les grands serveurs, et le sera vraisemblablement pour quelques annees
+encore.
+
+Le traitement par lot se distingue de l'execution interactive par le
+fait que les travaux a effectuer sont places dans une file d'attente
+avec une indication pour chaque lot des ressources dont il doit disposer
+pour aboutir correctement. Une fois les travaux inscrits dans la file,
+c'est au systeme de traitement batch (@xref{BatchManager}.) de veiller a
+leur bonne execution en leur fournissant les ressources demandees. Tout
+travail qui ne disposerait pas des ressources adequates ne peut pas etre
+active.
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     BatchManager, Job,   Batch,     Terminologie
+@comment  node-name,    next,  previous,  up
+@subsection Batch Manager
+@cindex     batch manager
+@cindex     gestionnaire
+
+Le role du gestionnaire de batch, ou batch manager en anglais, est
+d'executer et eventuellement d'ordonner les travaux places en file
+d'attente en leur allouant exclusivement les ressources necessaires a
+leur execution. Son objectif est d'optimiser les ressources du systeme
+dont il a la charge de maniere a ecouler le maximum de travaux en un
+minimum de temps et un minimum de ressources materielles.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Job,        Parametre, BatchManager, Terminologie
+@comment  node-name,  next,      previous,      up
+@subsection Job
+@cindex     Job
+@cindex     travail
+
+Le travail, ou job en anglais, est l'unite elementaire de traitement qui
+peut etre soumis au gestionnaire de batch. Il peut s'agir d'une simple
+commande systeme, comme d'une application ou bien meme de l'enchainement
+complexe mais indivisible de plusieurs applications ou commandes.
+
+Pour s'executer correctement, c'est-a-dire sans erreur, le job doit
+disposer de certaines ressources --- de la memoire, du temps, de
+l'espace disque @dots{} --- pendant toute la duree de son
+execution. C'est au gestionnaire de batch (@xref{BatchManager}.) de
+garantir au job la presence et la persistence de ces ressources pendant
+l'execution du job.
+
+Par contre c'est a l'utilisateur qui soumet le job d'informer le
+gestionnaire de batch des ressources necessaires au job. Pour des
+raisons evidentes de bonne gestion des ressources, le job ne peut
+consommer plus de ressources que celles qu'il a demande et obtenu du
+gestionnaire de batch sans etre arrete ou reclasse.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Parametre,  Environnement, Job,       Terminologie
+@comment  node-name,  next,          previous,  up
+@subsection Parametre
+@cindex     parametre
+
+Le premier type de ressource necessaire a un job concerne les elements
+materiels ou temporels, en un mot, physiques. Parmi ces ressources, on
+trouve le temps de calcul, le temps de presence en machine, l'espace
+disque, la quantite de memoire vive, l'architecture du calculateur, etc.
+
+Dans la terminologie de la bibliotheque de classes Batch, tous ces
+elements ont ete regroupes sous le terme de @emph{Parametre}.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Environnement, JobId, Parametre, Terminologie
+@comment  node-name,     next,  previous,  up
+@subsection Environnement
+@cindex     environnement
+
+Le second type de ressource necessaire a un job concerne les elements
+logiciels. Cela se traduit le plus souvent, et particulierement, dans
+les systemes Unix par la notion de variable d'environnement. Lorsque le
+job s'execute, il doit pouvoir trouver l'ensemble des commandes et des
+applications auquel il souhaite faire appel. Les variables
+d'environnement decrivent donc les localisations des ces
+programmes. Elles peuvent egalement contenir des informations influant
+sur le comportement des programmes.
+
+Dans la terminologie de la bibliotheque de classes Batch, tous ces
+elements on ete regroupes sous le terme de @emph{Environnement}.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     JobId,      JobInfo, Environnement, Terminologie
+@comment  node-name,  next,    previous,      up
+@subsection JobId
+@cindex     jobid
+@cindex     identifier
+
+Si un job (@xref{Job}.) decrit les actions qui doivent etre effectues
+par le systeme sous le controle du gestionnaire de batch, il est clair
+qu'il est possible de soumettre plusieurs fois de suite le meme job, et
+par la-meme d'executer plusieurs fois (et parfois simultanement) ces
+memes actions. On a donc plusieurs instances du meme job qui sont
+presentes en machine. Chaque instance peut etre distinguee des autres
+par un identifiant unique qui lui est propre : c'est le @emph{jobId}.
+
+Le JobId est determine par le gestionnaire de batch au moment de la
+soumission.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     JobInfo,    Classes generiques, JobId,     Terminologie
+@comment  node-name,  next,               previous,  up
+@subsection JobInfo
+@cindex     jobinfo
+
+
+Des qu'un job (@xref{Job}.) est soumis donc des qu'il dispose d'un
+JobId (@xref{JobId}.), il est possible d'interroger le gestionnaire de
+batch pour etre informe de son comportement, de son evolution au sein du
+systeme pendant son execution.
+
+On peut ainsi connaitre les parametres reellement consommes par rapport
+aux parametres alloues, ainsi que l'environnement d'execution du job.
+
+Le JobInfo est une structure qui collecte ses informations sur l'etat du
+job.
+
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Classes generiques, Namespace, JobInfo,   Classes
+@comment  node-name,          next,                previous,  up
+@section  Classes generiques
+@cindex   classes generiques
+
+Schematiquement, les classes composant la bibliotheque sont regroupees
+en trois categories. Celles appartenant au groupe @emph{Types de base}
+ne servent que de support au fonctionnement des classes de plus haut
+niveau, egalement appellees @emph{Classes utilisateur}. Seules ces
+dernieres sont vraiment interessantes pour l'utilisateur de la
+bibliotheque. Les exceptions sont regroupees dans une categorie qui leur
+est propre.
+
+@menu
+* Namespace::                   Espace de noms pour la bibliotheque.
+* Types de base::               Les classes elementaires.
+* Classes utilisateur::         Les classes de haut-niveau.
+* Exceptions::                  Les exceptions de la bibliotheque.
+@end menu
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node Namespace, Types de base, Classes generiques, Classes generiques
+@comment  node-name,  next,  previous,  up
+@subsection Namespace
+@cindex     namespace
+
+Toutes les classes de la bibliotheque sont regroupees dans un unique
+namespace nomme @emph{Batch} afin de ne pas introduire de conflit avec
+d'autres classes de meme nom.
+
+Ainsi lorsque par exemple on cite la classe @emph{BatchManager}, il
+faudra declarer un objet @emph{Batch::BatchManager} ou bien faire appel
+au namespace @emph{Batch} en C++. En Python, les objets sont regroupes
+dans un module nomme @emph{libBatch_Swig}.
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Types de base, Classe Couple, Namespace, Classes generiques
+@comment  node-name,  next,  previous,  up
+@subsection Types de base
+@cindex     types de base
+
+Les classes decrites ici sont toutes utilisees ou utilisables par les
+classes utilisateur de la bibliotheque, et en particulier par la classe
+Versatile. @xref{Classe Versatile}.
+
+Ces classes implementent sous forme d'objet les types de base du langage
+C++. Ainsi la classe @emph{Booltype} implemente le type de base
+@emph{bool}. Certains types de base n'existant pas dans le langage ont
+ete crees et encapsules dans une classe : c'est le cas notamment du type
+de base @emph{Date} et de la classe @emph{DateType}, et du type de base
+@emph{Couple} et de la classe @emph{CoupleType}.
+
+Tous les classes heritent de la classe generique @emph{GenericType}.
+
+@menu
+-- Types de base --
+
+* Classe Couple::               Association de fichiers.
+* Classe Date::                 Type elementaire de date.
+
+-- Classes d'implementation des types de base --
+
+* Classe GenericType::          Classe-mere de tous les types.
+* Classe BoolType::             Encapsulation du type bool.
+* Classe CharType::             Encapsulation du type char.
+* Classe CoupleType::           Encapsulation du type Couple.
+* Classe DateType::             Encapsulation du type Date.
+* Classe IntType::              Encapsulation du type int.
+* Classe LongType::             Encapsulation du type long.
+* Classe StringType::           Encapsulation du type string.
+
+@end menu
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe Couple, Classe Date, Types de base, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Couple
+@findex        Couple
+
+La classe @emph{Couple} implemente le comportement d'un couple de deux
+chaines de type @emph{string} qui sont respectivement nommees
+@emph{local} et @emph{remote}.
+
+Cette classe est utilisee essentiellement pour la designation des
+fichiers a transferer lors des soumissions de travaux, d'ou les noms
+employes.
+
+@cartouche
+Il faut toutefois faire attention a designer correctement ce qui est
+local ou distant. Ainsi dans la bibliotheque de classes Batch, on a
+adopte la convention qu'un fichier dit @emph{local} est celui present
+sur la machine qui execute la bibliotheque de classes Batch, alors qu'un
+fichier dit @emph{remote} (ou distant) est celui present sur le serveur
+du gestionnaire de batch. 
+L'approche est donc clairement orientee utilisateur plutot que serveur.
+@end cartouche
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class Couple
+@{
+  public:
+    // Constructeur standard
+    Couple(const string & local, const string & remote);
+
+    // Constructeur par recopie
+    Couple(const Couple & C);
+
+    // Operateur pour l'affichage sur un stream
+    friend ostream & operator << (ostream & os, const Couple & cp);
+
+    // Operateur d'affectation
+    virtual Couple & operator =(const Couple &);
+
+    // Conversion en chaine
+    virtual string str() const;
+
+    // Accesseurs
+    virtual string getLocal() const;
+    virtual string getRemote() const;
+
+  protected:
+    string _local;  // chemin d'acces au fichier local
+    string _remote; // chemin d'acees au fichier distant
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe Date, Classe GenericType, Classe Couple, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Date
+@findex        Date
+
+La classe @emph{Date} sert a stocker n'importe quelle information de
+temps et peut la representer sous une forme plus lisible a l'utilisateur
+que le traditionnel appel a la fonction @emph{ctime}. @xref{(*manpages*)ctime}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class Date
+@{
+  public:
+    // Constructeur standard (a partir d'une valeur epoch)
+    Date(const long l=0);
+
+    // Constructeur a partir d'une chaine hh:mm:ss
+    Date(const string s);
+
+    // Operateurs portant sur les Dates
+    virtual Date & operator =(long l);
+    virtual Date & operator +(long l);
+    virtual Date & operator -(long l);
+    virtual Date & operator +=(long l);
+    virtual Date & operator -=(long l);
+    virtual Date & operator =(const string & s);
+
+    // Conversions en types standards
+    virtual string str() const;
+    virtual long epoch() const;
+
+  protected:
+    int _day, _month, _year;
+    int _hour, _min, _sec;
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe GenericType, Classe BoolType, Classe Date, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection GenericType
+@findex        GenericType
+
+La classe @emph{GenericType} est la classe-mere de toutes les classes
+utilisees par la classe @emph{Versatile}. @xref{Classe Versatile}.
+
+Elle definit une interface que @emph{Versatile} utilise pour controler
+les objets : constructeur simple et destructeur, operateur sur
+@emph{ostream}, conversion en chaine et surtout methode @emph{clone}.
+
+La methode @emph{clone} permet de recuperer un nouvel objet identique au
+premier qui sera automatiquement alloue sur le tas par un appel a
+@emph{new}. Il est important de noter ici que le nouvel objet @strong{DEVRA}
+etre desalloue par un appel a @emph{delete}. Cette desallocation est a
+la charge de l'utilisateur de l'objet sans quoi une fuite memoire en
+resultera.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class GenericType
+@{
+  public:
+    // Constructeur et destructeur
+    GenericType();
+    virtual ~GenericType();
+
+    // Operateur pour l'affichage sur un stream
+    friend ostream & operator << (ostream & os, 
+                                  const GenericType & obj);
+
+    // Conversion en chaine
+    virtual string affiche() const;
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+    // Retourne le nombre d'objets GenericType et al.
+    static int getNb();
+
+    protected:
+
+    private:
+      static int _nb; // nombre total d'objets GenericType et al.
+
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe BoolType, Classe CharType, Classe GenericType, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection BoolType
+@findex        BoolType
+
+Cette classe encapsule le type C++ @emph{bool} dans un objet herite de
+@emph{GenericType} de maniere a pouvoir le stocker aisement dans un
+objet de classe @emph{Versatile}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class BoolType : public GenericType
+@{
+  public:
+    // Constructeur
+    BoolType(const bool b=false);
+
+    // Conversion en chaine
+    virtual string affiche() const;
+
+    // Operateur d'affectation
+    virtual BoolType & operator =(bool);
+
+    // Conversion en bool
+    virtual operator bool() const;
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+  protected:
+    bool _data;
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe CharType, Classe CoupleType, Classe BoolType, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection CharType
+@findex        CharType
+
+Cette classe encapsule le type C++ @emph{char} dans un objet herite de
+@emph{GenericType} de maniere a pouvoir le stocker aisement dans un
+objet de classe @emph{Versatile}.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class CharType : public GenericType
+@{
+  public:
+    // Constructeur
+    CharType(const char c=0);
+
+    // Conversion en chaine
+    virtual string affiche() const;
+
+    // Operateur d'affectation
+    virtual CharType & operator =(char);
+
+    // Conversion en char
+    virtual operator char() const;
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+  protected:
+    char _data;
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe CoupleType, Classe DateType, Classe CharType, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection CoupleType
+@findex        CoupleType
+
+Cette classe encapsule le type interne @emph{Couple} dans un objet herite de
+@emph{GenericType} de maniere a pouvoir le stocker aisement dans un
+objet de classe @emph{Versatile}.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class CoupleType : public GenericType
+@{
+  public:
+    // Constructeur
+    CoupleType(const Couple & C);
+
+    // Conversion en chaine
+    virtual string affiche() const;
+    virtual operator string() const;
+
+    // Operateur d'affectation
+    virtual CoupleType & operator =(const Couple & C);
+
+    // Conversion en char
+    virtual operator Couple() const;
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+  protected:
+    Couple _data;
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe DateType, Classe IntType, Classe CoupleType, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection DateType
+@findex        DateType
+
+Cette classe encapsule le type interne @emph{Date} dans un objet herite de
+@emph{GenericType} de maniere a pouvoir le stocker aisement dans un
+objet de classe @emph{Versatile}.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class DateType : public GenericType
+@{
+  public:
+    // Constructeur
+    DateType(const Date & d);
+
+    // Conversion en chaine
+    virtual string affiche() const;
+
+    // Operateur d'affectation
+    virtual DateType & operator =(const Date &);
+
+    // Conversion en Date
+    virtual operator Date() const;
+
+    // Conversion en long
+    virtual operator long() const;
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+  protected:
+    Date _data;
+
+  private:
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe IntType, Classe LongType, Classe DateType, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection IntType
+@findex        IntType
+
+Cette classe encapsule le type C++ @emph{int} dans un objet herite de
+@emph{GenericType} de maniere a pouvoir le stocker aisement dans un
+objet de classe @emph{Versatile}.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class IntType : public GenericType
+@{
+  public:
+    // Constructeur
+    IntType(const int i=0);
+
+    // Conversion en chaine
+    virtual string affiche() const;
+
+    // Operateur d'affectation
+    virtual IntType & operator =(int);
+
+    // Conversion en int
+    virtual operator int() const;
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+  protected:
+    int _data;
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe LongType, Classe StringType, Classe IntType, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection LongType
+@findex        LongType
+
+Cette classe encapsule le type C++ @emph{long} dans un objet herite de
+@emph{GenericType} de maniere a pouvoir le stocker aisement dans un
+objet de classe @emph{Versatile}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class LongType : public GenericType
+@{
+  public:
+    // Constructeur
+    LongType(const long l=0L);
+
+    // Conversion en chaine
+    virtual string affiche() const;
+
+    // Operateur d'affectation
+    virtual LongType & operator =(long);
+
+    // Conversion en long
+    virtual operator long() const;
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+  protected:
+    long _data;
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe StringType, Classes utilisateur, Classe LongType, Types de base
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection StringType
+@findex        StringType
+
+Cette classe encapsule le type C++ @emph{string} de la STL dans un objet
+herite de @emph{GenericType} de maniere a pouvoir le stocker aisement
+dans un objet de classe @emph{Versatile}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class StringType : public GenericType
+@{
+  public:
+    // Constructeur
+    StringType(const string & s="");
+
+    // Conversion en chaine
+    virtual string affiche() const;
+    virtual operator string() const;
+
+    // Operateur d'affectation
+    virtual StringType & operator =(string);
+
+    // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
+    // qu'il faudra detruire ensuite manuellement
+    virtual GenericType * clone() const;
+
+  protected:
+    string _data;
+
+  private:
+
+@};
+@end example
+@end itemize
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Classes utilisateur, Exemple, Classe StringType, Classes generiques
+@comment  node-name,  next,  previous,  up
+@page
+@subsection Classes utilisateur
+@cindex     classes utilisateur
+
+Les classes dites classes utilisateur sont en realite les classes de
+plus haut niveau de la biliotheque de classes Batch. Ces classes
+remplissent les unes avec les autres l'ensemble des fonctionnalites
+proposees par la bibliotheque. L'utilisateur trouvera donc dans cette
+section la description des possibilites de la bibliotheque et le moyen
+de les mettre en oeuvre.
+
+La premiere section montre un exemple complet de soumission et de
+controle d'un job soumis a travers les classes de la biliotheque. Les
+sections suivantes reprennent les elements de l'exemple pour le
+detailler et le completer.
+
+@menu
+* Exemple::                     Exemple simple mais complet d'utilisation.
+* Classe BatchManagerCatalog::  Description de la classe BatchManagerCatalog.
+* Classe FactBatchManager::     Description de la classe FactBatchManager.
+* Classe BatchManager::         Description de la classe BatchManager.
+* Classe Environnement::        Description de la classe Environnement.
+* Classe Job::                  Description de la classe Job.
+* Classe JobId::                Description de la classe JobId.
+* Classe JobInfo::              Description de la classe JobInfo.
+* Classe Parametre::            Description de la classe Parametre.
+* Classe Versatile::            Description de la classe Versatile.
+@end menu
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node Exemple, Classe BatchManagerCatalog, Classes utilisateur, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Exemple
+@cindex        exemple
+
+Cet exemple decrit le processus type de creation et de soumission d'un
+job a travers les classes de la bibliotheque.
+
+Il faut toutefois penser que les appels aux methodes peuvent lever des
+exceptions qu'il faudra intercepter et gerer. @xref{Exceptions}.
+
+@example
+  @dots{}
+
+  // On instancie le catalogue de gestionnaires de batch
+  Batch::BatchManagerCatalog cata;
+
+  // On cree un BatchManager qui se connecte au veritable gestionnaire
+  // de batch 
+  Batch::BatchManager & bm = (* cata("PBS"))("monserver.mondomaine.fr");
+
+  // Pour fabriquer un Job, on doit d'abord creer un objet Parametre et
+  // un objet Environnement qui contiennent respectivement la liste des
+  // parametres du job au sein du gestionnaire de batch et la liste des
+  // variables d'environnement necessaires au fonctionnement du job
+  Batch::Parametre param;
+
+  param[EXECUTABLE]  = "/home/user/mon_application/executable";
+  param[NAME]        = "MonJob";
+  param[ACCOUNT]     = "MonProjet"; // code d'imputation/facturation
+  param[MAXCPUTIME]  = 360L;        // 6min
+  param[MAXWALLTIME] = 480L;        // 8min
+  param[INFILE]      = Batch::Couple("/tmp/infich1",  rempath+"/infich1");
+  param[OUTFILE]     = Batch::Couple("/tmp/outfich1", rempath+"/outfich1");
+  param[OUTFILE]    += Batch::Couple("stderr", path + "/STDERR");
+  param[OUTFILE]    += Batch::Couple("stdout", path + "/STDOUT");
+  param[MAIL]        = "user@@domaine.fr";
+  param[USER]        = "user";
+
+  Batch::Environnement env;
+  env["DEBUG"]       = "3"; // un niveau de debug exige par l'application
+  env["MYAPP_FILE"]  = "/home/user/mon_application/data/mydatafile";
+
+  // Creation du job
+  Batch::Job job(param, env);
+
+  // On soumet le Job au BatchManager qui le relaie jusqu'au veritable
+  // gestionnaire de batch sur le serveur. En retour on obtient un
+  // identifiant unique de notre job (JobId). 
+  const Batch::JobId jobid = bm.submitJob(job);
+
+  // On interroge le BatchManager pour connaitre l'etat du Job
+  const Batch::JobInfo jinfo = jobid.queryJob();
+  cout << jinfo << endl;
+
+  // On detruit l'objet BatchManager
+  delete &bm;
+
+  @dots{}
+@end example
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe BatchManagerCatalog, Classe FactBatchManager, Exemple, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection BatchManagerCatalog
+@findex        BatchManagerCatalog
+
+La classe @emph{BatchManagerCatalog} definit une interface d'acces au
+catalogue de fabriques de BatchManager. @xref{Classe FactBatchManager}.
+
+Pourquoi utiliser une fabrique et ne pas instancier directement un objet
+@emph{BatchManager} en fonction de sa classe ? C'est l'option qui avait ete
+choisie dans la premiere version de la bibliotheque de classes
+Batch. Cette facon de proceder est simple, aussi bien pour le
+developpeur de la classe que pour l'utilisateur, mais elle se revele a
+terme penalisante dans la souplesse d'utilisation des classes. Elle
+permet aussi moins facilement de mettre en place une strategie de
+singleton pour les objets @emph{BatchManager}, ce qui peut se reveler utile non
+pas en termes de performance mais plutot en termes de genericite et
+toujours de souplesse.
+
+En resume, l'utilisation de fabiques permet d'acceder a la genericite,
+qui rappelons-le est l'objet de cette biliotheque, a la souplesse et a
+la performance au prix d'une legere complication pour le developpeur
+mais pas pour l'utilisateur.
+
+Le catalogue de fabriques est une @emph{map}, ou tableau associatif,
+auquel on passe le nom d'une fabrique et qui retourne un pointeur sur
+une instance de cette fabrique.
+
+Le catalogue est renseigne statiquement par les fabriques declarees
+elles-memes statiquement dans la biliotheque. Il est donc precharge avec
+les fabriques correspondant a chacune des API disponibles. Comme le
+catalogue n'est pas declare constant, il est possible de rajouter ou de
+supprimer des fabriques dans le catalogue dynamiquement.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class BatchManagerCatalog
+@{
+public:
+  // Constructeur
+  BatchManagerCatalog();
+  // Destructeur
+  virtual ~BatchManagerCatalog();
+
+  // Accesseurs
+  static FactBatchManager * getFactBatchManager(const char * type);
+  static void addFactBatchManager(const char * type,
+                                  FactBatchManager * pFBM);
+  virtual FactBatchManager * operator() (const char * type) const;
+
+  // Wrapping Python
+  virtual map<string, FactBatchManager *> * dict() const;
+  virtual string __repr__() const;
+
+protected:
+  // Le catalogue est gere en singleton et en multi-thread
+  static map<string, FactBatchManager *> * _p_catalog;
+  static pthread_mutex_t _mutex;
+
+private:
+
+@};
+@end example
+
+@item Exemple
+
+@example
+@dots{}
+
+// On instancie le catalogue de gestionnaires de batch
+Batch::BatchManagerCatalog cata;
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{BatchManagerCatalog()}
+
+Le constructeur par defaut permet d'obtenir une instance de
+@emph{BatchManagerCatalog} qui permet de manipuler un objet statique
+interne. Cet objet interne est le veritable catalogue et se trouve etre
+un singleton.
+
+
+@item
+@b{~BatchManagerCatalog()}
+
+Le destructeur n'a pas d'action particuliere.
+
+@item
+@b{static FactBatchManager * getFactBatchManager(const char * type)}
+
+Cet accesseur retourne un pointeur sur un objet de type
+@emph{FactBatchManager} en fonction du nom (le type) sous lequel il
+s'est enregistre dans le catalogue.
+
+Cette fonction est statique et peut donc etre utilisee pour interroger
+le catalogue depuis des objets statiques.
+
+@item
+@b{static void addFactBatchManager(const char * type, FactBatchManager * pFBM)}
+
+Cet accesseur enregistre dans le catalogue un pointeur sur un objet de type
+@emph{FactBatchManager} sous le nom (le type) passe en argument.
+
+Cette fonction est statique et peut donc etre utilisee pour enregistrer
+des objets statiques dans le catalogue.
+
+@item
+@b{FactBatchManager * operator() (const char * type) const}
+
+Cet accesseur retourne un pointeur sur un objet de type
+@emph{FactBatchManager} en fonction du nom (le type) sous lequel il
+s'est enregistre dans le catalogue.
+
+Cette fonction non statique est utilisable sur une instance de
+@emph{BatchManagerCatalog}. 
+
+@item
+@b{map<string, FactBatchManager *> * dict() const}
+
+Cette methode utilisable depuis Python permet de recuperer un
+dictionnaire decrivant le contenu du catalogue.
+
+@item
+@b{string __repr__() const}
+
+Cette methode utilisable depuis Python retourne une description de
+l'objet @emph{BatchManagerCatalog}.
+
+@end itemize
+
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe FactBatchManager, Classe BatchManager, Classe BatchManagerCatalog, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection FactBatchManager
+@findex        FactBatchManager
+
+La classe @emph{FactBatchManager} est abstraite. Elle definit une interface
+qui doit etre implementee par des classes specialisees en fonction du
+gestionnaire de batch et de son API de communication. @xref{Classes specifiques}.
+
+Les objets repondant a l'interface de @emph{FactBatchManager} sont
+automatiquement inseres dans le catalogue des fabriques de
+@emph{BatchManager} a la construction de l'objet. Il est ainsi possible
+de definir statiquement des objets de ce type qui enrichiront le
+catalogue des la compilation. @xref{Classe
+BatchManagerCatalog}. @xref{Classe BatchManager}.
+
+Les objets de la classe @emph{FactBatchManager} ou de ses derivees sont
+des functors et renvoient au moment de l'appel un pointeur sur un objet
+gestionnaire de batch @emph{BatchManager} associe a un
+serveur. L'allocation de l'objet est faite sur le tas et celui-ci doit
+donc etre desalloue manuellement par l'utilisateur de la bibliotheque au
+moment opportun.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class FactBatchManager
+@{
+public:
+  // Constructeur
+  FactBatchManager(const string & type);
+
+  // Destructeur
+  virtual ~FactBatchManager();
+
+  // Functor
+  virtual BatchManager * operator() (const char * hostname) const = 0;
+
+  // Accesseur au type interne
+  string getType() const;
+
+  // Wrapping Python
+  string __repr__() const;
+
+protected:
+  string type; // Le type interne
+
+private:
+
+@};
+@end example
+
+@item Exemple
+
+@example
+@dots{}
+
+// On instancie le catalogue de gestionnaires de batch
+Batch::BatchManagerCatalog cata;
+
+// On cree une fabrique de BatchManager de type PBS
+Batch::FactBatchManager & fbm = * cata("PBS");
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+
+@item
+@b{FactBatchManager(const string & type)}
+
+Le constructeur de la classe prend un type qui doit identifer de maniere
+unique la fabrique au sein du catalogue de fabrique. Ce type sert de cle au
+catalogue. @xref{Classe BatchManagerCatalog}.
+
+@item
+@b{~FactBatchManager()}
+
+Le destructeur de la classe n'a pas d'action particuliere.
+
+@item
+@b{BatchManager * operator() (const char * hostname) const}
+
+Cette methode est virtuelle pure. Elle doit etre surchargee dans les
+classes derivees et doit retourner un pointeur sur un objet de type
+@emph{BatchManager} correpondant au type de la classe et oeuvrant sur la
+machine passee en argument. Le @emph{hostname} est soit alphabetique
+soit numerique et doit etre soit un nom de machine valide soit une
+adresse IP valide. Aucun controle n'est a priori realise et cet argument
+est passe tel quel a l'API du gestionnaire de batch.
+
+Cet objet agit comme @emph{parent} vis-a-vis de l'objet
+@emph{BatchManager} qu'il retourne.
+
+@item
+@b{string getType() const}
+
+Cette methode renvoie le type interne de l'objet, c'est-a-dire la cle
+sous lequel il est enregistre dans le catalogue.
+
+@item
+@b{string __repr__() const}
+
+Cette methode utilisable depuis Python retourne une description de
+l'objet @emph{FactBatchManager}.
+
+@end itemize
+
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe BatchManager, Classe Environnement, Classe FactBatchManager, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection BatchManager
+@findex        BatchManager
+
+La classe @emph{BatchManager} est abstraite. Elle definit une interface
+qui doit etre implementee par des classes specialisees en fonction du
+gestionnaire de batch et de son API de communication. @xref{Classes
+specifiques}.
+
+Toute action a destination du gestionnaire de batch doit etre precedee
+de l'instanciation d'un objet derivant de la classe @emph{BatchManager}
+puisque c'est a travers cet objet que l'on aura acces a l'interface du
+gestionnaire.
+
+Cette instanciation est realisee par une fabrique de gestionnaire de
+batch, instance elle-meme derivee de la classe abstraite
+FactBatchManager. @xref{Classe FactBatchManager}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class BatchManager
+@{
+  public:
+    // Constructeur et destructeur
+    BatchManager(const FactBatchManager * parent,
+                 const char * host="localhost")
+      throw(InvalidArgumentException);
+    virtual ~BatchManager();
+
+    // Recupere l'identifiant d'un job deja soumis au BatchManager
+    virtual const JobId getJobIdByReference(const string & ref);
+
+    // Methodes pour le controle des jobs : virtuelles pures
+    // soumet un job au gestionnaire
+    virtual const JobId submitJob(const Job & job) = 0;
+
+    // retire un job du gestionnaire
+    virtual void deleteJob(const JobId & jobid) = 0;
+
+    // suspend un job en file d'attente
+    virtual void holdJob(const JobId & jobid) = 0;
+
+    // relache un job suspendu
+    virtual void releaseJob(const JobId & jobid) = 0;
+
+    // modifie un job en file d'attente
+    virtual void alterJob(const JobId & jobid,
+                          const Parametre & param,
+                          const Environnement & env) = 0;
+    virtual void alterJob(const JobId & jobid,
+                          const Parametre & param) = 0;
+    virtual void alterJob(const JobId & jobid,
+                          const Environnement & env) = 0;
+
+    // renvoie l'etat du job
+    virtual JobInfo queryJob(const JobId & jobid) = 0;
+
+    // wrapping Python
+    virtual string __repr__() const;
+
+  protected:
+    string _hostname; // serveur ou tourne le BatchManager
+    const FactBatchManager * _parent; // fabrique qui a produit l'instance
+
+  private:
+
+@};
+@end example
+
+@item Exemple
+
+@example
+@dots{}
+
+// On instancie le catalogue de gestionnaires de batch
+Batch::BatchManagerCatalog cata;
+
+// On cree un BatchManager qui se connecte au veritable gestionnaire
+// de batch 
+Batch::BatchManager & bm = (* cata("PBS"))("monserver.mondomaine.fr");
+
+// Maintenant, on peut utiliser toutes les fonctionnalites du
+// gestionnaire de batch a travers le variable myBM
+
+// On detruit l'objet BatchManager
+delete &bm;
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{BatchManager(const FactBatchManager * parent,$*
+const char * host="localhost") throw(InvalidArgumentException)}
+
+Excepte un pointeur sur la fabrique qui a produit l'objet, @xref{Classe FactBatchManager},
+ le constructeur accepte zero ou un argument de type
+@emph{string} decrivant soit le nom de domaine completement qualifie
+(FQDN, @i{fully qualified domain name}) du serveur de batch, soit son
+adresse IP dans un format decimal "aaa.bbb.ccc.ddd".
+
+Une resolution du nom ou de l'adresse peut etre realisee en fonction des
+capacites de la plate-forme pour s'assurer que le serveur est connu et
+joignable. En cas d'echec, une exception InvalidArgumentException est
+levee. @xref{Classe InvalidArgumentException}. A priori, aucune
+verification n'est faite par defaut.
+
+Ceci fait, une connexion est etablie avec le gestionnaire de batch qui
+est maintenue jusqu'a destruction de l'objet, si le gestionnaire le permet.
+
+@item 
+@b{~BatchManager()}
+
+Le destructeur supprime la connexion precedemment etablie par le
+constructeur lorsque celle-ci a reussi.
+
+@item
+@b{const JobId submitJob(const Job & job)}
+
+Cette methode soumet le job passe en argument au gestionnaire de
+batch. Etant donne que le job ne peut pas etre envoye tel quel puisqu'il
+a un format generique au sein de la bibliotheque de classes Batch, cette
+methode est chargee de le convertir dans un format adapte au
+gestionnaire de batch sous-jacent.
+
+Ce n'est que lorsque cette conversion est realisee que le job est soumis
+au gestionnaire a travers son API. L'identifiant propose par le
+gestionnaire est alors renvoye a l'appelant. Si la soumission echoue
+pour une raison ou une autre, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+@item
+@b{void deleteJob(const JobId & jobid)}
+
+Cette methode retire le job dont l'identifiant est passe en argument de
+la file d'attente du gestionnaire, ou bien l'arrete s'il est en cours
+d'execution. Cette methode est inoperante sur des travaux deja termines,
+auquel cas une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+
+@item
+@b{void holdJob(const JobId & jobid)}
+
+Cette methode suspend le job dont l'identifiant est passe en argument au
+sein de la file d'attente du gestionnaire. Cette methode est inoperante
+sur des travaux en cours d'execution ou deja termines, ainsi que sur des
+travaux deja suspendus.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+@item
+@b{void releaseJob(const JobId & jobid)}
+
+Cette methode relache un job precedemment suspendu en file
+d'attente dont l'identifiant est passe en argument. Elle est inoperante
+sur des travaux deja relaches, en cours d'execution ou termines.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+
+@item
+@b{void alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)@*
+void alterJob(const JobId & jobid, const Parametre & param)@*
+void alterJob(const JobId & jobid, const Environnement & env)}
+
+Ces methodes permettent de modifier les parametres d'execution et
+d'environnement d'un job dont l'identifiant est passe en
+argument. @xref{Classe Parametre}. @xref{Classe Environnement}. Il
+est important de noter que le job doit etre encore place en file
+d'attente sinon la methode est inoperante.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+@item
+@b{JobInfo queryJob(const JobId & jobid)}
+
+Cette methode permet de recuperer les informations concernant le job 
+dont l'identifiant est passe en argument dans un objet de classe
+@emph{JobInfo}. @xref{Classe JobInfo}. On y retrouve les parametres
+d'execution et d'environnement du job tels qu'ils ont ete passes au
+gestionnaire au moment de la soumission, ainsi que des informations
+concernant l'execution du job comme par exemple la machine d'execution,
+le temps consomme, la memoire consommee, etc.
+
+Il n'est pas toujours possible d'interroger un job deja termine.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+
+@item
+@b{const JobId getJobIdByReference(const string & ref)}
+
+Cette methode permet de recuperer au sein de la classe un identifiant de
+job a partir d'une chaine de caracteres obtenue par un biais
+externe. Cet identifiant pourra etre utilise par la suite au sein de la
+biliotheque de classes pour controler le job comme s'il avait ete cree
+et soumis depuis la biliotheque-meme.
+
+@end itemize
+
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe Environnement, Classe Job, Classe BatchManager, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Environnement
+@findex        Environnement
+
+La classe @emph{Environnement} permet de definir les variables
+d'environnement necessaires a l'execution d'un job. Ces variables seront
+creees automatiquement dans l'environnement du job lorsque celui-ci
+debutera son execution sur la machine.
+
+Une variable d'environnement est traditionnellement composee d'un nom et
+d'une valeur qui peut etre vide ou absente. L'ensemble des variables
+d'environnement peut ainsi etre represente sous la forme d'une table
+associative dans laquelle le nom de la variable correspond a la clef de la
+table, et la valeur de la variable correspond a la valeur de la table
+pour la clef donnee.
+
+Chaque objet de la classe @emph{Environnement} se comporte comme une
+table associative telle que decrite auparavant.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+typedef map < string, string > Environnement;
+@end example
+
+
+@item Exemple
+@example
+@dots{}
+
+Environnement env;
+env["MYAPP_ROOTDIR"]     = "/home/user/myapplication";
+env["MYAPP_LICENSEFILE"] = env["MYAPP_ROOTDIR"] + "/license.dat";
+env["CXX"]               = "g++";
+env["CXXFLAGS"]          = "-g -O2";
+
+@dots{}
+@end example
+
+@item Methodes
+
+Compte tenu de la definition actuelle de la classe @emph{Environnement}
+en tant que map STL, elle beneficie de toutes les fonctionnalites
+classiques des maps STL.
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe Job, Classe JobId, Classe Environnement, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Job
+@findex        Job
+
+La classe @emph{Job} represente la notion de travail, ou job, dans la
+bibliotheque de classes Batch. Elle se comporte essentiellement comme
+une collection de parametres et de variables necessaires a la
+description des actions qui doivent etre realisees dans des conditions
+precisees.
+
+Elle se repose sur deux autres classes qui distinguent la notion de
+parametre d'execution et celle de variable d'environnement : les classes
+@emph{Parametre} et @emph{Environnement}. @xref{Classe
+Parametre}. @xref{Classe Environnement}.
+
+Son role est de preparer la soumission qui aura lieu et qui concretisera
+l'incarnation du job dans le gestionnaire de batch. Tant que le job n'a
+pas ete soumis, on ne peut pas vraiment considerer son existence et de
+fait les interactions qu'on peut avoir avec l'objet sont tres limitees.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class Job
+@{
+  public:
+    // Constructeurs et destructeur
+    Job();
+    Job(Parametre param);
+    Job(Environnement env);
+    Job(Parametre param, Environnement env);
+    virtual ~Job();
+    
+    // Operateur pour l'affichage sur un stream
+    friend ostream & operator <<(ostream & os, const Job & job);
+
+    // Accesseurs
+    Parametre getParametre() const;
+    void setParametre(const Parametre &);
+    
+    // Accesseurs
+    Environnement getEnvironnement() const;
+    void setEnvironnement(const Environnement &);
+    
+    // Methodes pour l'interfacage avec Python (SWIG)
+    string  __repr__() const;
+
+  protected:
+    Parametre _param;   // table des parametres batch du job
+    Environnement _env; // table des variables d'environnement
+
+  private:
+
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{}
+
+@dots{} (ici on cree un BatchManager bm)
+Parametre param;
+Environnement env;
+
+@dots{} (ici on cree les parametres du job)
+
+Job job(param, env);
+JobId jobid = bm.sumbitJob(job);
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+
+@item
+@b{Job()$*
+Job(Parametre param)$*
+Job(Environnement env)$*
+Job(Parametre param, Environnement env)}
+
+Le constructeur, en plus de creer l'objet, peut faire des verifications
+sur la coherence des objets passes en argument s'il y en a.
+
+@item
+@b{~Job()}
+
+Le destructeur libere simplement les espaces alloues.
+
+@item
+@b{ostream & operator <<(ostream & os, const Job & job)}
+
+Cette methode permet a l'utilisateur d'afficher sur un stream le contenu
+d'un objet de classe @emph{Job}.
+
+@item
+@b{Parametre getParametre() const}
+
+Un accesseur pour recuperer l'objet Parametre passe en argument du
+constructeur.
+@item
+@b{void setParametre(const Parametre &)}
+
+Cette methode permet de positionner @i{a posteriori} l'objet
+@emph{Parametre}. Des tests complementaires peuvent etre faits pour
+verifier la coherence de l'objet.
+
+@item
+@b{Environnement getEnvironnement() const}
+
+Un accesseur pour recuperer l'objet Environnement passe en argument du constructeur.
+
+@item
+@b{void setEnvironnement(const Environnement &)}
+
+Cette methode permet de positionner @i{a posteriori} l'objet
+@emph{Environnement}. Des tests complementaires peuvent etre faits pour
+verifier la coherence de l'objet.
+
+@item
+@b{string  __repr__() const}
+
+Cette methode sert dans l'interfacage Python de l'objet et permet d'en
+realiser l'affichage a travers l'interpreteur Python.
+
+@end itemize
+@end itemize
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe JobId, Classe JobInfo, Classe Job, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection JobId
+@findex        JobId
+
+La classe @emph{JobId} represente l'incarnation d'un objet de classe
+@emph{Job} une fois soumis au travers du gestionnaire de batch. A chaque
+objet @emph{JobId} correspond une et une seule soumission d'un objet
+@emph{Job}. Ainsi un meme objet @emph{Job} peut etre soumis plusieurs
+fois de suite a un ou plusieurs gestionnaires de batch et produira
+autant d'objets @emph{JobId}.
+
+L'objet @emph{JobId} assure le controle et la gestion du job au travers
+du gestionnaire de batch. Chaque objet @emph{JobId} est associe a un
+gestionnaire particulier aupres duquel il relaie les actions qu'on lui
+soumet.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class JobId
+@{
+    friend class BatchManager;
+
+  public:
+    // Constructeur standard et destructeur
+    JobId();
+    virtual ~JobId();
+
+    // Constructeur avec le pointeur sur le BatchManager associe
+    // et avec une reference
+    JobId(BatchManager *, string ref);
+
+    // Operateur d'affectation entre objets
+    virtual JobId & operator =(const JobId &);
+
+    // Constructeur par recopie
+    JobId(const JobId &);
+
+    // Accesseur pour la reference interne
+    virtual string getReference() const;
+
+    // Methodes pour le controle du job
+    // retire un job du gestionnaire
+    virtual void deleteJob() const;
+
+    // suspend un job en file d'attente
+    virtual void holdJob() const;
+
+    // relache un job suspendu
+    virtual void releaseJob() const;
+
+    // modifie un job en file d'attente
+    virtual void alterJob(const Parametre & param,
+                          const Environnement & env) const;
+    virtual void alterJob(const Parametre & param) const;
+    virtual void alterJob(const Environnement & env) const;
+
+    // modifie un job en file d'attente
+    virtual void setParametre(const Parametre & param);
+    virtual void setEnvironnement(const Environnement & env);
+
+    // renvoie l'etat du job
+    virtual Batch::JobInfo queryJob() const;
+
+    // Methodes pour l'interfacage avec Python (SWIG)
+    string  __str__() const;  // SWIG : affichage en Python
+    string  __repr__() const; // SWIG : affichage en Python
+
+  protected:
+    BatchManager * _p_batchmanager; // pointeur sur le BatchManager
+                                    // qui controle le job
+    string _reference; // reference du job au sein du BatchManager
+
+  private:
+
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{} (ici on cree un BatchManager bm et un Job job)
+
+// On soumet le job et on recupere un identifiant
+JobId   jobid = bm.submitJob(job);
+
+// Ce qui permet d'interroger l'etat du job en cours
+JobInfo jinfo = jobid.queryJob();
+
+@dots{}
+@end example
+
+@item Methodes
+
+@itemize @minus{}
+@item
+@b{JobId()@*
+JobId(BatchManager *, string ref)}
+
+Le constructeur par defaut cree un @emph{JobId} qui devra etre complete
+par la suite. Ceci n'est pas directement realisable par l'utilisateur
+mais sert pour certaines classes amies de la classe @emph{JobId}.
+
+D'un point de vue utilisateur la construction d'un objet @emph{JobId}
+necessite un pointeur sur un gestionnaire de batch existant et une
+chaine de caractere representant une reference au sein de ce
+gestionnaire de batch.
+
+Ces parametres sont en general issus de la
+communication avec l'API du gestionnaire de batch et ne peuvent etre
+aisement deduits. C'est pourquoi il est recommande de passer par une
+classe d'implementation pour fabriquer un objet @emph{JobId}.
+
+
+@item
+@b{~JobId()}
+
+Le destructeur libere l'espace occupe par l'objet.
+
+@item
+@b{JobId & operator =(const JobId &)}
+
+L'affectation d'un objet @emph{JobId} duplique les donnees internes de
+l'objet passe en argument. Les deux objets sont totalement independants
+a l'issue de l'affectation et designent chacun la meme instance du job
+dans le meme gestionnaire de batch. Le controle du job peut etre realise
+avec l'un ou l'autre des objets.
+
+@item
+@b{JobId(const JobId &)}
+
+De meme que l'affectation le constructeur par recopie produit un objet
+@emph{JobId} totalement independant de l'objet passe en argument et qui
+designe le meme job dans le meme gestionnaire de batch. Le controle du
+job peut etre realise avec l'un ou l'autre des objets.
+
+@item
+@b{string getReference() const}
+
+Cet accesseur retourne la reference du job pour le gestionnaire de batch
+qui a produit l'objet.
+
+@item
+@b{void deleteJob() const}
+
+Cette methode relaie aupres au gestionnaire de batch qui a produit
+l'objet la demande d'arret du job.
+
+@item
+@b{void holdJob() const}
+
+Cette methode relaie aupres au gestionnaire de batch qui a produit
+l'objet la demande de suspension du job.
+
+@item
+@b{void releaseJob() const}
+
+Cette methode relaie aupres au gestionnaire de batch qui a produit
+l'objet la demande de liberation du job.
+
+@item
+@b{void alterJob(const Parametre & param, const Environnement & env) const@*
+void alterJob(const Parametre & param) const@*
+void alterJob(const Environnement & env) const}
+
+Ces methodes relaient aupres du gestionnaire de batch qui a produit
+l'objet la demande de modification des parametres et/ou des variables
+d'environnement du job.
+
+@item
+@b{void setParametre(const Parametre & param)}
+
+Cette methode n'est utile que pour l'interfacage avec Python, car Python
+ne sait pas gerer la surcharge de methode, et de fait leve des
+exceptions lors d'appels a de telles methodes.
+
+Elle est equivalente a la methode @samp{void alterJob(const Parametre & param) const}.
+
+
+@item
+@b{void setEnvironnement(const Environnement & env)}
+
+Cette methode n'est utile que pour l'interfacage avec Python, car Python
+ne sait pas gerer la surcharge de methode, et de fait leve des
+exceptions lors d'appels a de telles methodes.
+
+Elle est equivalente a la methode @samp{void alterJob(const Environnement & env) const}.
+
+@item
+@b{Batch::JobInfo queryJob() const}
+
+Cette methode relaie aupres du gestionnaire de batch qui a produit
+l'objet la demande d'interrogation de l'etat du job.
+
+@item
+@b{string  __str__() const}
+
+Cette methode n'est utile que pour l'interfacage avec Python. Elle
+permet d'afficher l'etat de l'objet @emph{JobId}.
+
+@item
+@b{string  __repr__() const}
+
+Cette methode n'est utile que pour l'interfacage avec Python. Elle
+permet d'afficher l'etat de l'objet @emph{JobId}.
+
+@end itemize
+@end itemize
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe JobInfo, Classe Parametre, Classe JobId, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection JobInfo
+@findex        JobInfo
+
+Un objet de classe @emph{JobInfo} represente l'ensemble des informations
+disponibles sur un travail actif, c'est-a-dire soumis au gestionnaire de
+batch, a un instant donne.
+
+Cet objet reprend des informations issues du job tel qu'il a ete soumis,
+@xref{Classe Job}, mais aussi des informations produites par le
+gestionnaire de batch a partir de la soumission et du transit du job en
+son sein : nom de la queue dans laquelle le job est inscrit, duree
+d'execution, date de soumission, etc.
+
+Ces informations sont disponibles aupres de l'utilisateur de la classe a
+travers les objets @emph{Parametre} et @emph{Environnement} que l'objet
+@emph{JobInfo} peut fournir.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class JobInfo
+@{
+  public:
+    // Constructeur standard et destructeur
+    JobInfo();
+    virtual ~JobInfo();
+
+    // Constructeur par recopie
+    JobInfo(const JobInfo & jinfo);
+
+    // Operateur pour l'affichage sur un stream
+    friend ostream & operator <<(ostream & os, const JobInfo & ji);
+
+    // Accesseurs
+    virtual Parametre getParametre() const;
+    virtual Environnement getEnvironnement() const; 
+
+    // Methodes pour l'interfacage avec Python (SWIG)
+    string  __str__() const;  // SWIG : affichage en Python
+    string  __repr__() const; // SWIG : affichage en Python
+
+  protected:
+    Parametre _param; // parametres du job
+    Environnement _env; // variables d'environnement du job
+
+  private:
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{} (ici on cree un BatchManager bm et un Job job)
+
+// On soumet le job et on recupere un identifiant
+JobId   jobid = bm.submitJob(job);
+
+// Ce qui permet d'interroger l'etat du job en cours
+JobInfo jinfo = jobid.queryJob();
+
+// On recupere l'objet Parametre interne modifie
+// par le gestionnaire de batch
+Parametre param = jinfo.getParametre();
+
+// On recupere l'objet Environnement interne modifie
+// par le gestionnaire de batch
+Environnement env = jinfo.getEnvironnement();
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{JobInfo()}
+
+Ce constructeur cree un objet @emph{JobInfo} vide.
+
+@item
+@b{~JobInfo()}
+
+Le destructeur libere l'espace memoire alloue par l'objet.
+
+@item
+@b{JobInfo(const JobInfo & jinfo)}
+
+Le constructeur par recopie produit un objet identique a celui passe en
+argument. Les deux objets sont totalement independants l'un de l'autre.
+
+@item
+@b{ostream & operator <<(ostream & os, const JobInfo & ji)}
+
+Cet operateur permet de voir le contenu de l'objet sur un flot de sortie.
+
+@item
+@b{Parametre getParametre() const}
+
+Cet accesseur retourne l'objet interne @emph{Parametre} modifie par le
+gestionnaire de batch. En particulier on y retrouve toutes les clefs et
+les valeurs correspondant aux informations produites dynamiquement par
+le gestionnaire (duree d'execution, machine d'execution, etc.).
+Il n'est pas garanti que les valeurs passees au moment de la soumission
+soient inchangees car des modifications ont pu etre apportees a ces
+valeurs pendant le traitement du job par le gestionnaire.
+
+@item
+@b{Environnement getEnvironnement() const}
+
+Cet accesseur retourne l'objet interne @emph{Environnement} modifie par le
+gestionnaire de batch. En particulier on y retrouve toutes les clefs et
+les valeurs correspondant aux informations produites dynamiquement par
+le gestionnaire (chemin d'acces, variables d'environnement specifiques a
+la machine d'execution, etc.).
+Il n'est pas garanti que les valeurs passees au moment de la soumission
+soient inchangees car des modifications ont pu etre apportees a ces
+valeurs pendant le traitement du job par le gestionnaire.
+
+@item
+@b{string  __str__() const}
+
+Cette methode n'est utile que pour l'interfacage avec Python. Elle
+permet d'afficher l'etat de l'objet @emph{JobInfo}.
+
+@item
+@b{string  __repr__() const}
+
+Cette methode n'est utile que pour l'interfacage avec Python. Elle
+permet d'afficher l'etat de l'objet @emph{JobInfo}.
+
+@end itemize
+
+@end itemize
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe Parametre, Classe Versatile, Classe JobInfo, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Parametre
+@findex        Parametre
+
+Les objets de la classe @emph{Parametre} se comportent comme des maps
+STL, dont ils ont les fonctionnalites, decrivant les parametres
+d'execution du job.
+
+Contrairement aux variables d'environnement qui sont decrites par les
+objets de la classe @emph{Environnement}, les parametres d'execution
+servent a preciser les contraintes qui pesent sur le job, comme par
+exemple la duree maximale d'execution autorisee, la quantite maximale de
+memoire utilisable ou la queue de soumission, ou bien a renseigner le
+job avec des informations specifiques a l'utilisateur, comme son
+username, son adresse email, le code d'imputation du job, etc.
+
+En raison du caractere tres specifique et precis des informations qui
+doivent etre fournies au gestionnaire de batch, une nomenclature est
+proposee par la classe @emph{Parametre} qu'il est vivement conseille de
+suivre. De plus tout a ete fait pour rendre cette ecriture naturelle et
+facile, donc il ne devrait pas y avoir de probleme pour l'utiliser.
+
+Ainsi, a titre d'exemple, pour preciser le temps maximal autorise pour
+un job, il faut creer une clef de nom @var{maxcputime} dans un objet de
+classe @emph{Parametre} qui sera ensuite passe au job. Et pour preciser
+le code d'imputation du job, il faut creer une clef de nom @var{account}.
+
+Mais cet exemple simple montre que la valeur associee a la clef
+@var{maxcputime} est semantiquement une duree, et que la valeur associee a
+la clef @var{account} est semantiquement un nom. On a donc un probleme de
+type puisque dans la definition d'une map STL le type de la valeur doit
+etre le meme, et ce meme si les valeurs doivent par la suite avoir des
+types semantiques differents. C'est pourquoi on a definit une classe
+@emph{Versatile} qui encapsule des types differents. @xref{Classe
+Versatile}.
+
+Quoiqu'il en soit toute la mecanique est cachee et seul importe pour
+l'utilisateur de savoir que les valeurs associees aux clefs sont typees
+et que ces types sont definis dans l'enumeration @emph{DiscriminatorType}.
+@xref{Classe Versatile}.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class Parametre : public map< string, Versatile >
+@{
+  public:
+    // Constructeur standard
+    Parametre();
+
+    // Constructeur par recopie
+    Parametre(const Parametre & PM);
+
+    // Operateur de recherche dans la map
+    Versatile & operator [] (const string &);
+    const Versatile & operator [] (const string &) const;
+
+    // Operateur d'affectation
+    Parametre & operator =(const Parametre & PM);
+
+    // Declarations statique des clefs de la map
+    static const string ACCOUNT;
+    static const string CHECKPOINT;
+    static const string CKPTINTERVAL;
+    static const string CREATIONTIME;
+    static const string EGROUP;
+    static const string ELIGIBLETIME;
+    static const string EUSER;
+    static const string EXECUTABLE;
+    static const string EXECUTIONHOST;
+    static const string HOLD;
+    static const string ID;
+    static const string INFILE;
+    static const string MAIL;
+    static const string MAXCPUTIME;
+    static const string MAXDISKSIZE;
+    static const string MAXRAMSIZE;
+    static const string MAXWALLTIME;
+    static const string MODIFICATIONTIME;
+    static const string NAME;
+    static const string OUTFILE;
+    static const string PID;
+    static const string QUEUE;
+    static const string QUEUEDTIME;
+    static const string SERVER;
+    static const string STARTDATE;
+    static const string STATE;
+    static const string TEXT;
+    static const string TMPDIR;
+    static const string USEDCPUTIME;
+    static const string USEDDISKSIZE;
+    static const string USEDRAMSIZE;
+    static const string USEDWALLTIME;
+    static const string USER;
+
+  protected:
+    // map interne servant a controler le type 
+    // de la valeur associee a chaque clef
+    map< string, TypeParam > TypeMap;
+
+  private:
+
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{}
+
+Parametre param;
+
+param[EXECUTABLE]  = "/home/user/mon_application/executable";
+param[NAME]        = "MonJob";
+param[ACCOUNT]     = "MonProjet"; // code d'imputation/facturation
+param[MAXCPUTIME]  = 360L;        // 6min
+param[MAXWALLTIME] = 480L;        // 8min
+param[INFILE]      = Couple("/tmp/infich1",  rempath + "/infich1");
+param[OUTFILE]     = Couple("/tmp/outfich1", rempath + "/outfich1");
+param[OUTFILE]    += Couple("stderr", path + "/STDERR");
+param[OUTFILE]    += Couple("stdout", path + "/STDOUT");
+param[MAIL]        = "user@@domaine.fr";
+param[USER]        = "user";
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+
+@item
+@b{Parametre()}
+
+Le constructeur par defaut initialise l'objet @emph{Parametre} et cree
+la table des types internes. Par contre l'objet ne contient aucune valeur.
+
+@item
+@b{Parametre(const Parametre & PM)}
+
+Le constructeur par recopie cree un objet @emph{Parametre} a l'image de
+celui qui lui est passe en argument. La table des types internes est
+dupliquee ainsi que tous les objets correspondant a chacune des clefs.
+
+@item
+@b{Versatile & operator [] (const string &)}
+
+Cet operateur permet de recuperer la valeur designee par la clef passee
+en argument. Cette valeur est de classe @emph{Versatile} qui encapsule
+tous les types de base utilisables dans la bibliotheque en tant que
+parametre. @xref{Classe Versatile}.
+
+
+@item
+@b{const Versatile & operator [] (const string &) const}
+
+A l'image de l'operateur precedent, cet operateur permet de recuperer la
+valeur designee par la clef passee en argument mais uniquement pour des
+objets constants.
+
+@item
+@b{Parametre & operator =(const Parametre & PM)}
+
+L'operateur d'affectation remplace l'ensemble du contenu de l'objet
+@emph{Parametre} par le contenu de l'objet passe en argument. Les
+valeurs sont dupliquees par rapport a l'objet @var{pm}.
+
+@end itemize
+
+@item Description des clefs
+
+Selon les gestionnaires de batch utilises, certaines clefs sont actives
+ou inactives. Une definition superflue ne pose pas de probleme et se
+trouve ignoree au moment de la soumission. Par contre l'absence d'un
+clef peut empecher la soumission d'aboutir et lever une exception.
+
+@itemize @minus{}
+@item ACCOUNT : type STRING
+
+Le code de facturation sur lequel le job doit s'imputer.
+
+@item CHECKPOINT : type LONG
+
+Une valeur non nulle indique au gestionnaire de batch que le job est
+@dfn{checkpointable}, c'est-a-dire interruptible pour une reprise
+ulterieure.
+
+@item CKPTINTERVAL : type LONG
+
+En liaison avec la clef @var{CHECKPOINT}, la clef @var{CKPTINTERVAL}
+indique l'intervalle en secondes entre deux interruptions du code
+(@dfn{checkpoint}).
+
+@item CREATIONTIME : type LONG
+
+La date a laquelle le job a ete cree (soumis) dans le gestionnaire de batch.
+
+@item EGROUP : type STRING
+
+Le groupe effectif au sens Unix du terme dans lequel le job s'execute.
+
+@item ELIGIBLETIME : type LONG
+
+La date a laquelle le job a pu disposer des ressources necessaires a son
+execution.
+
+@item EUSER : type STRING
+
+L'utilisateur effectif au sens Unix du terme pour lequel le job s'execute.
+
+@item EXECUTABLE : type STRING
+
+Le chemin d'acces absolu a l'executable sur la machine qui soumet le job.
+
+@item EXECUTIONHOST : type STRING
+
+Le nom de la machine qui execute le job.
+
+@item HOLD : type LONG
+
+Une valeur non nulle indique au gestionnaire de batch que le job doit
+etre place dans l'etat suspendu. Une valeur nulle libere le job.
+
+@item ID : type STRING
+
+L'identifiant unique du job pour le gestionnaire de batch.
+
+@item INFILE : type liste de COUPLE
+
+La clef @var{infile} liste les fichiers qui seront envoyes au job avant
+son execution. Chaque fichier peut avoir un nom different sur la machine
+cliente --- qui soumet le job --- et sur le serveur. C'est pourquoi
+chaque fichier a envoyer est represente par un couple dont le nom @var{local}
+est le chemin absolu du fichier sur la machine cliente et le nom
+@var{remote} est le chemin absolu du fichier sur le
+serveur. @xref{Classe Couple}.
+
+Si le nom @var{remote} vaut @samp{stdin}, alors le contenu du fichier
+designe par le nom @var{local} est envoye sur l'entree standard du job
+au moment de son execution.
+
+@item MAIL : type STRING
+
+L'adresse email de l'utilisateur ou lui seront envoyes les eventuels
+messages d'information et d'alerte du gestionnaire de batch.
+
+@item MAXCPUTIME : type LONG
+
+Le temps de calcul (@i{CPU time}) en secondes que ne devra pas depasser le job.
+
+@item MAXDISKSIZE : type LONG
+
+L'espace disque en octets que ne devra pas depasser le job.
+
+@item MAXRAMSIZE : type LONG
+
+La quantite de memoire vive en octets que ne devra pas depasser le job.
+
+@item MAXWALLTIME : type LONG
+
+Le temps reel (@i{elapsed time}) en secondes que ne devra pas depasser le job.
+
+@item MODIFICATIONTIME : type LONG
+
+La date a laquelle le job a ete modifie pour la derniere fois dans le
+gestionnaire de batch. Cette date correspond le plus souvent a la
+derniere operation realisee par le gestionnaire dans la gestion du job :
+routage au sein des files, suspension ou reprise, etc.
+
+@item NAME : type STRING
+
+Le nom du job tel qu'il apparait a l'utilisateur dans son dialogue avec
+le gestionnaire de batch. Ce nom n'a pas besoin d'etre unique et ne
+remplace pas l'identifiant (ID). Il n'est la que pour informer
+l'utilisateur de la nature de son job.
+
+@item OUTFILE : type liste de COUPLE
+
+La clef @var{outfile} liste les fichiers qui sont produits par le job et
+qui seront recuperes sur la machine locale de l'utilisateur apres
+son execution. Chaque fichier peut avoir un nom different sur la machine
+cliente --- qui soumet le job --- et sur le serveur. C'est pourquoi
+chaque fichier a recuperer est represente par un couple dont le nom @var{local}
+est le chemin absolu du fichier sur la machine cliente et le nom
+@var{remote} est le chemin absolu du fichier sur le
+serveur. @xref{Classe Couple}.
+
+Si le nom @var{local} vaut @samp{stdout}, alors le contenu du fichier
+designe par le nom @var{local} contient la sortie standard du job
+au moment de son execution.
+
+Si le nom @var{local} vaut @samp{stderr}, alors le contenu du fichier
+designe par le nom @var{local} contient la sortie d'erreur du job
+au moment de son execution.
+
+@item PID : type LONG
+
+La valeur du PID (@i{process identifier}) du job sur la machine sur
+lqsuelle il s'execute.
+
+@item QUEUE : type STRING
+
+Le nom de la queue, aussi appelee classe ou file suivant les
+terminologies, qui accueille le job.
+
+@item QUEUEDTIME : type LONG
+
+La date depuis laquelle le job a ete place en queue dans le gestionnaire
+de batch.
+
+@item SERVER : type STRING
+
+Le nom complet du serveur qui recoit les soumissions de job.
+
+@item STARTDATE : type LONG
+
+La date a partir de laquelle l'utilisateur desire que le job soit
+execute. L'execution ne demarrera qu'au dela de cette date et a
+condition que toutes les conditions de ressources soient remplies.
+
+@item STATE : type STRING
+
+L'etat actuel du job.
+
+ATTENTION : Ces valeurs ne sont pas encore normalisees.
+
+@item TEXT : type STRING
+
+Un texte d'information que le gestionnaire peut emettre a destination de
+l'utilisateur lorsque l'ensemble des parametres n'est pas suffisant pour
+traduire l'etat reel du job. Par exemple, ce message peut informer
+l'utilisateur de la raison qui maintient un job dans un etat suspendu ou
+qui l'empeche de s'executer.
+
+@item TMPDIR : type STRING
+
+Un chemin d'acces absolu a un repertoire qui sera cree au demarrage du
+job et qui isolera le job des autres travaux en cours d'execution sur la
+meme machine. 
+
+@item USEDCPUTIME : type LONG
+
+Le temps de calcul (@i{CPU time}) en secondes reellement consomme par le job.
+
+@item USEDDISKSIZE : type LONG
+
+L'espace disque en octets reellement consomme par le job.
+
+@item USEDRAMSIZE : type LONG
+
+L'espace disque en octets reellement consommee par le job.
+
+@item USEDWALLTIME : type LONG
+
+Le temps reel (@i{elapsed time}) en secondes reellement consomme par le job.
+
+@item USER : type STRING
+
+Le nom de l'utilisateur (@i{username}) sous lequel le job devra tourner
+sur la machine d'execution. Ce parametre est utile lorsque l'utilisateur
+possede des comptes differents sur les machines sur lequel il soumet et calcule.
+
+@end itemize
+
+
+@end itemize
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe Versatile, Exceptions, Classe Parametre, Classes utilisateur
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Versatile
+@findex        Versatile
+
+Cette classe est normalement invisible en tant que telle a l'utilsateur
+de la bibliotheque de classes Batch. Mais il est tout de meme utile de
+la presenter car son action est visible, notamment dans son interaction
+fine avec la classe @emph{Parametre}. @xref{Classe Parametre}.
+
+Comme il a ete precise dans la descrption de la classe @emph{Parametre},
+la classe @emph{Versatile} a ete concue pour encapsuler les valeurs de
+la map @emph{Parametre} qui peuvent etre de types effectifs differents.
+
+Ces types, decrits par l'enumeration @emph{DiscriminatorType}, sont
+actuellement au nombre de trois : @var{long}, @var{string} et
+@var{couple}. Ces types correpondent au types de base du langage C++ ou
+de la biliotheque de classes Batch. @xref{Types de base}.
+
+Le type special @var{undefined} ne sert que pour l'objet
+@emph{Versatile} juste cree mais non encore affecte d'une valeur et donc
+d'un type. La premiere affection d'une valeur a un objet
+@emph{Versatile} non encore affecte lui donne automatiquement le type de
+la valeur.
+
+Les objets de classe @emph{Versatile} peuvent se comporter soit comme
+des variables scalaires, c'est-a-dire ne contenant qu'une valeur unique,
+soit comme des listes, auquel cas elles utilisent l'interface des
+@emph{list} de la STL. Toutefois afin de faciliter l'ecriture pour
+l'utilisateur basique de la classe @emph{Versatile} --- et de la classe
+@emph{Parametre} ---, des operateurs de concatenation @samp{+=} et
+@samp{,} ont ete ajoutes.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+// Les types autorises
+enum DiscriminatorType @{ UNDEFINED, LONG, STRING, COUPLE @};
+
+typedef struct @{
+    DiscriminatorType type; // le type de l'element interne
+    int maxelem;            // le nombre d'elements autorises
+@} TypeParam;
+
+class Versatile : public list< GenericType * >
+@{
+  public:
+    // Constructeur standard et destructeur
+    Versatile();
+    virtual ~Versatile();
+
+    // Constructeur par recopie
+    Versatile(const Versatile & V);
+
+    // Constructeur depuis le type de "base"
+    Versatile(long   l);
+    Versatile(const string & s);
+    Versatile(const Couple & c);
+
+    // Operateur d'affectation et de concatenation 
+    // a partir d'un type de "base"
+    Versatile & operator = (const long     l)
+      throw(TypeMismatchException);
+    Versatile & operator = (const string & ch)   
+      throw(TypeMismatchException);
+    Versatile & operator +=(const string & ch)   
+      throw(TypeMismatchException,ListIsFullException);
+    Versatile & operator , (const string & ch)   
+      throw(TypeMismatchException,ListIsFullException);
+    Versatile & operator = (const Couple & cp)   
+      throw(TypeMismatchException);
+    Versatile & operator +=(const Couple & cp)   
+      throw(TypeMismatchException,ListIsFullException);
+    Versatile & operator , (const Couple & cp)   
+      throw(TypeMismatchException,ListIsFullException);
+
+    // Operateur d'affectation entre objets
+    Versatile & operator = (const Versatile & V)
+      throw(TypeMismatchException);
+
+    // Conversion de type vers un type de "base"
+    operator long() const throw(TypeMismatchException);
+    operator string() const throw(TypeMismatchException);
+    operator Couple() const throw(TypeMismatchException);
+    string str() const throw(TypeMismatchException);
+
+    // Operateur pour l'affichage sur un stream
+    friend ostream & operator << (ostream & os, const Versatile & );
+
+    // Positionnement et recuperation du type de l'element interne
+    void setType(DiscriminatorType) throw(TypeMismatchException);
+    DiscriminatorType getType() const;
+
+    // Positionnement et recuperation du nombre d'elements internes
+    void setMaxSize(int i);
+    int getMaxSize() const;
+
+    // Positionnement et recuperation du nom de l'objet
+    string getName() const;
+    void setName(const string & name);
+
+  protected:
+    // Efface tous les elements internes de l'objet
+    virtual void eraseAll();
+
+    DiscriminatorType _discriminator; // type de l'element interne
+    int _maxsize; // nombre max d'elements internes
+    string _name; // nom de l'objet (sert pour les exceptions)
+
+  private:
+
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{}
+
+// On cree un objet Versatile non encore affecte (scalaire)
+Versatile Vlong;
+
+// L'affectation d'un long lui donne le type LONG
+Vlong = 1024L * 1024L * 1024L;
+cout << "Versatile long  (must be 1073741824) : " << Vlong   << endl;
+
+// On cree un objet Versatile non encore affecte (scalaire)
+Versatile Vstring;
+
+// L'affectation d'une string (const char * promu en string)
+// lui donne le type STRING
+Vstring = "UneChaine";
+cout << "Versatile string (must be UneChaine) : " << Vstring << endl;
+
+try
+  @{
+    // L'affectation d'un autre type leve une exception.
+    // Il n'y a pas de retypage dynamique.
+    Vlong = "";
+    cout << "ERR : No TypeMismatchException catched for Versatile long"
+         << endl;
+  @}
+catch (TypeMismatchException & ex)
+  @{
+    cout << "OK : TypeMismatchException catched for Versatile long"
+         << endl;
+  @}
+
+// Reaffectation avec le meme type
+Vlong = 1024L * 1024L;
+cout << "Versatile long  (must be 1048576) : " << Vlong   << endl;
+
+// On cree un objet Versatile non encore affecte (scalaire) ...
+Versatile Vcat1;
+
+// ... que l'on transforme en liste (non limitee)
+Vcat1.setMaxSize(0);
+
+// On affecte la premiere valeur ...
+Vcat1  = "A";
+
+// ... puis les suivantes par concatenation
+Vcat1 += "B";
+Vcat1 += "C";
+Vcat1 += "D";
+Vcat1 += "E";
+cout << "Versatile string concatenation (must be A B C D E) : " 
+     << Vcat1 << endl;
+
+// Idem que pour Vcat1, mais avec une limite a 5 elements dans la liste
+Versatile Vcat2;
+Vcat2.setMaxSize(5);
+Vcat2 = "a", "b", "c", "d", "e";
+cout << "Versatile string concatenation (must be a b c d e) : " 
+     << Vcat2 << endl;
+
+// On tronque les 2 derniers elements de la liste (il en reste 3)
+Vcat2.setMaxSize(3);
+cout << "Versatile string concatenation (must be a b c) : "
+     << Vcat2 << endl;
+
+
+Versatile Vcopy2(Vcat2);
+cout << "Versatile copy  (must be a b c) : " << Vcopy2  << endl;
+
+Versatile Vaffect;
+Vaffect = Vcat1;
+cout << "Versatile affect (must be A B C D E) : " << Vaffect  << endl;
+Vaffect = Vcat2;
+cout << "Versatile affect (must be a b c) : " << Vaffect  << endl;
+
+try
+  @{
+    // Retypage dynamique interdit
+    Vaffect = Vlong;
+    cout << "ERR : No TypeMismatchException catched for Versatile" 
+         << endl;
+  @}
+catch (TypeMismatchException & ex)
+  @{
+    cout << "OK : TypeMismatchException catched for Versatile string"
+         << endl;
+  @}
+
+try
+  @{
+    // Concatenation au dela de la limite interdit
+    Vcat2 += "En trop";
+    cout << "ERR : No ListIsFullException catched for Versatile string"
+         << endl;
+  @}
+catch (ListIsFullException & ex)
+  @{
+    cout << "OK : ListIsFullException catched for Versatile string"
+         << endl;
+  @}
+
+// Les objets Versatile se comportent (presque) comme des objets
+// standards du langage
+long L = Vlong;
+cout << "Long value of Versatile long   (must be 1048576) : " 
+     << L << endl;
+
+string S = Vstring;
+cout << "String value of Versatile (must be EncoreUneAutreChaine):"
+     << S << endl;
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{Versatile()}
+
+Le constructeur par defaut fabrique un objet scalaire de type
+@var{undefined} et de nom @samp{undefined}.
+
+@item
+@b{~Versatile()}
+
+Le destructeur efface tout le contenu de l'objet si celui-ci avait ete affecte.
+
+@item
+@b{Versatile(const Versatile & V)}
+
+Le constructeur par recopie duplique l'objet passe en argument ainsi que
+les valeurs qu'il contient. Le nouvel objet est totalement independant
+de son geniteur.
+
+@item
+@b{Versatile(long l)@*
+Versatile(const string & s)@*
+Versatile(const Couple & c)}
+
+Ces constructeurs fabriquent des objets scalaires @emph{Versatile} a partir des
+types de base passes en argument. Chaque objet acquerera definitivement
+le type correspondant au type de base : @var{long} pour @samp{long},
+@var{string} pour @samp{string} et @var{couple} pour @samp{Couple}.
+
+@item
+@b{Versatile & operator = (const long l) throw(TypeMismatchException)@*
+Versatile & operator = (const string & ch) throw(TypeMismatchException)@*
+Versatile & operator = (const Couple & cp) throw(TypeMismatchException)}
+
+Ces operateurs affectent ou reaffectent la valeur passee en argument a
+l'objet. Le type de la valeur doit correspondre au type de l'objet si
+celui-ci a deja ete affecte, sinon une exception @emph{TypeMismatchException} est
+levee. @xref{Classe TypeMismatchException}.
+
+L'ancienne valeur de l'objet est perdue.
+
+@item
+@b{Versatile & operator += (const string & ch)
+  throw(TypeMismatchException, ListIsFullException)@*
+Versatile & operator ,  (const string & ch)
+  throw(TypeMismatchException, ListIsFullException)@*
+Versatile & operator += (const Couple & cp)
+  throw(TypeMismatchException, ListIsFullException)@*
+Versatile & operator ,  (const Couple & cp)
+  throw(TypeMismatchException, ListIsFullException)}
+
+Ces operateurs concatenent la valeur passee en argument a l'objet. Le
+type de la valeur doit correspondre au type interne de l'objet si
+celui-ci a deja ete affecte, sinon une exception @emph{TypeMismatchException} est
+levee. @xref{Classe TypeMismatchException}.
+
+Si la taille maximale de la liste est depasse, une exception @emph{ListIsFullException} est
+levee. @xref{Classe ListIsFullException}.
+
+@item
+@b{Versatile & operator = (const Versatile & V) throw(TypeMismatchException)}
+
+L'operateur d'affectation duplique l'objet passe en argument dans
+l'objet. Toutes les valeurs internes sont dupliquees de maniere a avoir
+une independance totale entre les deux objets a l'issue de
+l'affectation.
+
+Il est a noter qu'il est possible d'affecter a un objet un objet
+possedant un type different, auquel cas l'objet courant change de type
+pour acquerir celui de l'objet passe en argument. C'est le seul cas de
+changement de type autorise pour un objet.
+
+@item
+@b{operator long() const throw(TypeMismatchException)@*
+operator string() const throw(TypeMismatchException)@*
+operator Couple() const throw(TypeMismatchException)@*
+string str() const throw(TypeMismatchException)}
+
+Ces operateur de conversion dans les types de base permettent de
+recuperer la valeur interne de l'objet. Lorsque le type interne est
+incompatible avec la conversion une exception @emph{TypeMismatchException} est
+levee. @xref{Classe TypeMismatchException}.
+
+@item
+@b{ostream & operator << (ostream & os, const Versatile & )}
+
+Cet operateur permet de voir le contenu de l'objet sur un flot de sortie.
+
+@item
+@b{void setType(DiscriminatorType) throw(TypeMismatchException)}
+
+Cette methode change le type interne de l'objet en celui passe en
+argument. Ceci n'est possible que pour un objet non encore affecte. Si
+le nouveau type est different du type actuel une exception @emph{TypeMismatchException} est
+levee. @xref{Classe TypeMismatchException}.
+
+@item
+@b{DiscriminatorType getType() const}
+
+Cet accesseur renvoie le type interne de l'objet.
+
+@item
+@b{void setMaxSize(int i)}
+
+Cette methode permet de changer le nombre d'elements que l'objet est
+capable de stocker. Par defaut ce nombre est 1 a la construction de
+l'objet, signifiant qu'il ne peut contenir qu'une seule valeur a la fois
+(scalaire).
+
+Si ce nombre est superieur a 1 alors il represente une
+limite qui ne pourra etre depassee par l'objet sans lever d'exception 
+@emph{ListIsFullException}. @xref{Classe ListIsFullException}.
+
+Si ce nombre vaut 0 (zero) alors il n'y a aucune limite superieure au
+nombre d'element dans l'objet.
+
+@item
+@b{int getMaxSize() const}
+
+Cet accesseur renvoie la taille maximale admise par l'objet.
+
+@item
+@b{void setName(const string & name)}
+
+Cette methode permet de positionner le nom de l'objet. Par defaut ce nom
+vaut @samp{undefined} a la construction de l'objet.
+
+Il est interessant de positionner le nom a une valeur significative
+comme par exemple le nom de la variable contenant l'objet car lorsqu'une
+exception est levee ce nom apparait en clair et aide au debugging.
+
+@item
+@b{string getName() const}
+
+Cet accesseur renvoie le nom interne de l'objet.
+
+@end itemize
+
+@end itemize
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Exceptions, Classe APIInternalFailureException, Classe Versatile, Classes generiques
+@comment  node-name,  next,  previous,  up
+@page
+@subsection Exceptions
+@cindex     exceptions
+
+La bibliotheque de classes Batch definit un certain nombre d'exceptions
+qui sont levees par les classes lors d'evenements qui traduisent un
+comportement anormal de la bibliotheque.
+
+@menu
+* Classe APIInternalFailureException::  Erreur d'utilisation de l'API.
+* Classe ConnexionFailureException::    Probleme de connexion de l'API.
+* Classe GenericException::             Classe-mere de toutes les exceptions.
+* Classe InvalidArgumentException::     Parametre errone d'une methode.
+* Classe InvalidKeyException::          Clef erronee d'une map.
+* Classe ListIsFullException::          Debordement de taille d'une liste.
+* Classe NotYetImplementedException::   Methodes non encore implementee.
+* Classe RunTimeException::             Erreur d'execution imprevue.
+* Classe TypeMismatchException::        Probleme de conversion de type.
+@end menu
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe APIInternalFailureException, Classe ConnexionFailureException, Exceptions, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection APIInternalFailureException
+@findex        APIInternalFailureException
+
+Cette exception est levee par les classes d'implementation de la
+bibliotheque lorsqu'une erreur est detectee au moment de la
+communication avec l'API du gestionnaire de batch. En general l'erreur
+renvoyee par l'API est incluse dans le message de l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class APIInternalFailureException : public GenericException
+@{
+  public:
+    // Constructeur
+    APIInternalFailureException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{APIInternalFailureException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{APIInternalFailureException}.
+
+@end itemize
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe ConnexionFailureException, Classe GenericException, Classe APIInternalFailureException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection ConnexionFailureException
+@findex        ConnexionFailureException
+
+Cette exception est levee par les classes d'implementation de la
+bibliotheque lorsqu'une erreur est detectee au moment de la
+connexion au gestionnaire de batch. En general l'erreur
+renvoyee par l'API de connexion est incluse dans le message de l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class ConnexionFailureException : public GenericException
+@{
+  public:
+    // Constructeur
+    ConnexionFailureException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{ConnexionFailureException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{ConnexionFailureException}.
+
+@end itemize
+
+@end itemize
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe GenericException, Classe InvalidArgumentException, Classe ConnexionFailureException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection GenericException
+@findex        GenericException
+
+Cette classe est generique comme son nom l'indique et definit une
+interface commune pour toutes les exceptions de la 
+bibliotheque.
+
+Cette exception definit uniquement un constructeur et deux membres
+publics constants : @emph{type} et @emph{message}. @xref{Classe
+GenericException}.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class GenericException
+@{
+  public:
+    const string type;    // la nature de l'exception
+    const string message; // la raison de l'exception
+
+    // Constructeur
+    GenericException(const string tp = "GenericException",
+                     const string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{GenericException(const string tp = "GenericException", const string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le parametre
+@emph{tp} qui contient generalement le nom de la classe.
+
+@end itemize
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe InvalidArgumentException, Classe InvalidKeyException, Classe GenericException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection InvalidArgumentException
+@findex        InvalidArgumentException
+
+Cette exception est levee par les classes de la bibliotheque lorsqu'un
+parametre erronne est passe en argument a une methode. En general
+le nom de l'arguement erronne est inclus dans le message de
+l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class InvalidArgumentException : public GenericException
+@{
+  public:
+    // Constructeur
+    InvalidArgumentException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{InvalidArgumentException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{InvalidArgumentException}.
+
+@end itemize
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe InvalidKeyException, Classe ListIsFullException, Classe InvalidArgumentException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection InvalidKeyException
+@findex        InvalidKeyException
+
+
+Cette exception est levee par les methodes de la classe @emph{Parametre}
+lorsqu'une clef erronnee est utilisee. En general le nom de la clef
+erronnee est inclus dans le message de l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class InvalidKeyException : public GenericException
+@{
+  public:
+    // Constructeur
+    InvalidKeyException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{InvalidKeyException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{InvalidKeyException}.
+
+@end itemize
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe ListIsFullException, Classe NotYetImplementedException, Classe InvalidKeyException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection ListIsFullException
+@findex        ListIsFullException
+
+Cette exception est levee par les methodes de la classe @emph{Versatile}
+lorsque la taille maximale de la liste interne est depasse. En general
+le nom de l'objet en erreur est inclus dans le message de l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class ListIsFullException : public GenericException
+@{
+  public:
+    // Constructeur
+    ListIsFullException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{ListIsFullException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{ListIsFullException}.
+
+@end itemize
+
+@end itemize
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe NotYetImplementedException, Classe RunTimeException, Classe ListIsFullException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection NotYetImplementedException
+@findex        NotYetImplementedException
+
+Cette exception est levee par les classes de la bibliotheque lorsqu'une
+methode declaree mais non encore implementee est utilisee. En general
+le nom de l'objet en erreur est inclus dans le message de l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class NotYetImplementedException : public GenericException
+@{
+  public:
+    // Constructeur
+    NotYetImplementedException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{NotYetImplementedException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{NotYetImplementedException}.
+
+@end itemize
+
+@end itemize
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe RunTimeException, Classe TypeMismatchException, Classe NotYetImplementedException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection RunTimeException
+@findex        RunTimeException
+
+Cette exception est levee par les classes de la bibliotheque lorsqu'une
+erreur inconnue et imprevue apparait. Cette exception est le
+comportement par defaut que doit gerer le gestionnaire d'exception en ce
+qui concerne les classes de la bibliotheque. En general le nom de
+l'objet en erreur est inclus dans le message de l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class RunTimeException : public GenericException
+@{
+  public:
+    // Constructeur
+    RunTimeException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{RunTimeException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{RunTimeException}.
+
+@end itemize
+
+@end itemize
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Classe TypeMismatchException, Classes specifiques, Classe RunTimeException, Exceptions
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection TypeMismatchException
+@findex        TypeMismatchException
+
+Cette exception est levee par les methodes de la classe @emph{Versatile}
+lorsque qu'une erreur de type est rencontree dans un objet. Ce genre
+d'erreur survient lorsqu'on essaie d'affecter une valeur d'un type
+different du type interne de l'objet @emph{Versatile} a ce meme objet,
+ou bien lorsqu'on ajoute une valeur d'un type different a une liste. En
+general le nom de l'objet en erreur est inclus dans le message de
+l'exception.
+
+Cette exception herite de la classe @emph{GenericException} qui definit
+uniquement un constructeur et deux membres publics constants : @emph{type} et
+@emph{message}. @xref{Classe GenericException}.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class TypeMismatchException : public GenericException
+@{
+  public:
+    // Constructeur
+    TypeMismatchException(string msg = "undefined");
+@};
+@end example
+
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{TypeMismatchException(string msg = "undefined")}
+
+Ce contructeur prend la chaine @emph{msg} comme message d'erreur a
+renvoyer au gestionnaire d'exception. Cette valeur est stockee dans le
+membre public constant @emph{message}.
+
+Le membre public constant @emph{type} est initialise avec le nom de la
+classe, soit @emph{TypeMismatchException}.
+
+@end itemize
+
+@end itemize
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Classes specifiques, Classes PBS, Classe TypeMismatchException,   Classes
+@comment  node-name,           next,        previous,             up
+@page
+@section  Classes specifiques
+@cindex   classes specifiques
+
+Afin de pouvoir se connecter aux gestionnaires de batch reels a travers
+leurs API, les classes generiques ont ete derivees pour offrir une
+implementation correspondant a l'interface qu'elles definissent.
+
+Pour traduire a la fois le fait que les nouvelles classes derivent d'une
+classe generique et qu'elles sont une implementation d'une API
+particuliere, on adopte la convention de nom suivante : la classe se
+nomme comme sa classe generique mais est suffixee par le nom de l'API du
+gestionnaire de batch, les deux termes etant separes par un caractere
+@kbd{_} (souligne).
+
+Actuellement, seul le gestionnaire de batch OpenPBS, @xref{Prerequis}, est
+supporte. Mais ce catalogue devrait s'enrichir par la suite.
+
+Les classes de la bibliotheque sont egalement accessibles a travers un
+interpreteur Python, ce qui a necessite la creation de certaines classes
+d'interface avec l'interpreteur.
+
+@menu
+* Classes PBS::         Classes d'implementation pour OpenPBS
+* Classes Python::      Classes d'interfacage avec Python.
+@end menu
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Classes PBS, Classe FactBatchManager_PBS, Classes specifiques, Classes specifiques
+@comment  node-name,   next,           previous,            up
+@page
+@subsection Classes PBS
+@cindex     classes PBS
+
+Actuellement seules les classes @emph{BatchManager}, @emph{JobInfo} et
+@emph{Job} ont besoin d'etre derivees pour implementer la communication
+et l'interfacage avec l'API du gestionnaire de batch OpenPBS.
+
+
+@menu
+* Classe FactBatchManager_PBS::  Description de la classe FactBatchManager_PBS.
+* Classe BatchManager_PBS::      Description de la classe BatchManager_PBS.
+* Classe JobInfo_PBS::           Description de la classe JobInfo_PBS.
+* Classe Job_PBS::               Description de la classe Job_PBS.
+@end menu
+
+
+@node Classe FactBatchManager_PBS, Classe BatchManager_PBS, Classes PBS, Classes PBS
+@comment  node-name,  next,  previous,  up
+@subsubsection FactBatchManager_PBS
+@cindex        FactBatchManager_PBS
+
+Cette classe derive de la classe generique @emph{FactBatchManager},
+@xref{Classe FactBatchManager}.
+
+Les objets de la classe @emph{BatchManager_PBS} realisent l'interface de
+la bibliotheque avec l'API du gestionnaire de batch OpenPBS.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class FactBatchManager_PBS : public FactBatchManager
+@{
+public:
+  // Constructeur et destructeur
+  FactBatchManager_PBS();
+  virtual ~FactBatchManager_PBS();
+
+  virtual BatchManager_PBS * operator() (const char * hostname) const;
+
+protected:
+
+private:
+
+@};
+@end example
+
+@item Exemple
+
+@example
+@dots{}
+
+// On instancie le catalogue de gestionnaires de batch
+Batch::BatchManagerCatalog cata;
+
+// On cree une fabrique de BatchManager de type PBS
+Batch::FactBatchManager & fbm = * cata("PBS");
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{FactBatchManager_PBS()}
+
+Ce constructeur instancie un objet de la classe
+@emph{FactBatchManager_PBS} et l'enregistre automatiquement aupres du
+catalogue de fabrique. @xref{Classe BatchManagerCatalog}.
+
+Le type est positionne a la valeur PBS.
+
+@item
+@b{~FactBatchManager_PBS()}
+
+Le destructeur ne fait rien de particulier.
+
+@item
+@b{BatchManager_PBS * operator() (const char * hostname) const}
+
+Cet operateur renvoie un objet nouvellement cree de type
+@emph{BatchManager_PBS} derivant de @emph{BatchManager} et oeuvrant sur
+la machine @emph{hostname}. La destruction de l'objet est a la charge de
+l'appelant.
+
+@end itemize
+
+@end itemize
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node Classe BatchManager_PBS, Classe JobInfo_PBS, Classe FactBatchManager_PBS, Classes PBS
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection BatchManager_PBS
+@cindex        BatchManager_PBS
+
+Cette classe derive de la classe generique @emph{BatchManager},
+@xref{Classe BatchManager}.
+
+Les objets de la classe @emph{BatchManager_PBS} realisent l'interface de
+la bibliotheque avec l'API du gestionnaire de batch OpenPBS.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class BatchManager_PBS : public BatchManager
+@{
+  public:
+    // Constructeur et destructeur
+    BatchManager_PBS(FactBatchManager * parent, 
+                     const char * host) throw(InvalidArgumentException);
+    virtual ~BatchManager_PBS();
+
+    // Recupere le nom du serveur par defaut
+    static string getDefaultServer();
+
+    // Recupere le l'identifiant d'un job deja soumis au BatchManager
+    virtual const JobId getJobIdByReference(const string & ref);
+
+    // Methodes pour le controle des jobs : virtuelles pures
+    // soumet un job au gestionnaire
+    virtual const JobId submitJob(const Job & job);
+
+    // retire un job du gestionnaire
+    virtual void deleteJob(const JobId & jobid);
+
+    // suspend un job en file d'attente
+    virtual void holdJob(const JobId & jobid);
+
+    // relache un job suspendu
+    virtual void releaseJob(const JobId & jobid);
+
+    // modifie un job en file d'attente
+    virtual void alterJob(const JobId & jobid,
+                          const Parametre & param,
+                          const Environnement & env);
+    virtual void alterJob(const JobId & jobid,
+                          const Parametre & param);
+    virtual void alterJob(const JobId & jobid,
+                          const Environnement & env);
+
+    // renvoie l'etat du job
+    virtual JobInfo queryJob(const JobId & jobid);
+
+    // modifie un job en file d'attente
+    virtual void setParametre(const JobId & jobid,
+                              const Parametre & param);
+    virtual void setEnvironnement(const JobId & jobid,
+                                  const Environnement & env);
+
+  protected:
+    string _hostname; // serveur ou tourne le BatchManager
+
+  private:
+
+@};
+@end example
+
+@item Exemple
+
+@example
+@dots{}
+
+// On instancie le catalogue de gestionnaires de batch
+Batch::BatchManagerCatalog cata;
+
+// On cree une fabrique de BatchManager de type PBS
+Batch::BatchManager & myBM = (* cata("PBS"))("serveur.domaine.fr")
+
+// Maintenant, on peut utiliser toutes les fonctionnalites du
+// gestionnaire de batch a travers le variable myBM
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{BatchManager_PBS(FactBatchManager * parent,
+const char * host) throw(InvalidArgumentException)}
+
+Excepte un pointeur sur la fabrique qui a produit l'objet, le
+constructeur accepte zero ou un argument de type @emph{string} decrivant
+soit le nom de domaine completement qualifie (FQDN, @i{fully qualified
+domain name}) du serveur de batch, soit son adresse IP dans un format
+decimal "aaa.bbb.ccc.ddd".
+
+Si aucun parametre n'est passe au constructeur, celui-ci prend le
+serveur par defaut tel que renvoye par la methode @emph{getDefaultServer}.
+
+Une resolution du nom ou de l'adresse peut etre realisee en fonction des
+capacites de la plate-forme pour s'assurer que le serveur est connu et
+joignable. En cas d'echec, une exception InvalidArgumentException est
+levee. @xref{Classe InvalidArgumentException}.
+
+Ceci fait, une connexion est etablie avec le gestionnaire de batch qui
+est maintenue jusqu'a destruction de l'objet.
+
+@item 
+@b{~BatchManager()}
+
+Le destructeur supprime la connexion precedemment etablie par le
+constructeur lorsque celle-ci a reussi.
+
+@item
+@b{const JobId submitJob(const Job & job)}
+
+Cette methode soumet le job passe en argument au gestionnaire de
+batch. Etant donne que le job ne peut pas etre envoye tel quel puisqu'il
+a un format generique au sein de la bibliotheque de classes Batch, cette
+methode est chargee de le convertir dans un format adapte au
+gestionnaire de batch sous-jacent.
+
+La methode opere ici une conversion du job de la classe @emph{Job} en @emph{Job_PBS}.
+
+Ce n'est que lorsque cette conversion est realisee que le job est soumis
+au gestionnaire a travers son API. L'identifiant propose par le
+gestionnaire est alors renvoye a l'appelant. Si la soumission echoue
+pour une raison ou une autre, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+@item
+@b{void deleteJob(const JobId & jobid)}
+
+Cette methode retire le job dont l'identifiant est passe en argument de
+la file d'attente du gestionnaire, ou bien l'arrete en cours
+d'execution. Cette methode est inoperante sur des travaux deja termines,
+auquel cas une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+
+@item
+@b{void holdJob(const JobId & jobid)}
+
+Cette methode suspend le job dont l'identifiant est passe en argument au
+sein de la file d'attente du gestionnaire. Cette methode est inoperante
+sur des travaux en cours d'execution ou deja termines, ainsi que sur des
+travaux deja suspendus.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+@item
+@b{void releaseJob(const JobId & jobid)}
+
+Cette methode relache un job precedemment suspendu en file
+d'attente dont l'identifiant est passe en argument. Elle est inoperante
+sur des travaux deja reclaches, en cours d'execution ou termines.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+
+@item
+@b{void alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)@*
+void alterJob(const JobId & jobid, const Parametre & param)@*
+void alterJob(const JobId & jobid, const Environnement & env)}
+
+Ces methodes permettent de modifier les parametres d'execution et
+d'environnement d'un job dont l'identifiant est passe en
+argument. @xref{Classe Parametre}. @xref{Classe Environnement}. Il
+est important de noter que le job doit etre encore place en file
+d'attente sinon la methode est inoperante.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+@item
+@b{JobInfo queryJob(const JobId & jobid)}
+
+Cette methode permet de recuperer les informations concernant le job 
+dont l'identifiant est passe en argument dans un objet de classe
+@emph{JobInfo}. @xref{Classe JobInfo}. On y retrouve les parametres
+d'execution et d'environnement du job tels qu'ils ont ete passes au
+gestionnaire au moment de la soumission, ainsi que des informations
+concernant l'execution du job comme par exemple la machine d'execution,
+le temps consomme, la memoire consommee, etc.
+
+Il n'est pas toujours possible d'interroger un job deja termine.
+En cas de probleme, une exception APIInternalFailureException est
+levee. @xref{Classe APIInternalFailureException}.
+
+
+@item
+@b{const JobId getJobIdByReference(const string & ref)}
+
+Cette methode permet de recuperer au sein de la classe un identifiant de
+job a partir d'une chaine de caracteres obtenue par un biais
+externe. Cet identifiant pourra etre utilise par la suite au sein de la
+biliotheque de classes pour controler le job comme s'il avait ete cree
+et soumis depuis la biliotheque-meme.
+
+@item
+@b{void setParametre(const JobId & jobid, const Parametre & param)}
+
+Cette methode n'est utile que pour l'interfacage avec Python, car Python
+ne sait pas gerer la surcharge de methode, et de fait leve des
+exceptions lors d'appels a de telles methodes.
+
+Elle est equivalente a la methode @samp{void alterJob(const JobId & jobid, const Parametre & param)}.
+
+@item
+@b{void setEnvironnement(const JobId & jobid, const Environnement & env)}
+
+Cette methode n'est utile que pour l'interfacage avec Python, car Python
+ne sait pas gerer la surcharge de methode, et de fait leve des
+exceptions lors d'appels a de telles methodes.
+
+Elle est equivalente a la methode @samp{void alterJob(const JobId & jobid, const Environnement & env)}.
+
+@end itemize
+
+
+@end itemize
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+
+@node Classe JobInfo_PBS, Classe Job_PBS, Classe BatchManager_PBS, Classes PBS
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection JobInfo_PBS
+@cindex        JobInfo_PBS
+
+Un objet de classe @emph{JobInfo} represente l'ensemble des informations
+disponibles sur un travail actif, c'est-a-dire soumis au gestionnaire de
+batch, a un instant donne.
+
+Cet objet reprend des informations issues du job tel qu'il a ete soumis,
+@xref{Classe Job}, mais aussi des informations produites par le
+gestionnaire de batch a partir de la soumission et du transit du job en
+son sein : nom de la queue dans laquelle le job est inscrit, duree
+d'execution, date de soumission, etc.
+
+Ces informations sont disponibles aupres de l'utilisateur de la classe a
+travers les objets @emph{Parametre} et @emph{Environnement} que l'objet
+@emph{JobInfo} peut fournir.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class JobInfo_PBS : public JobInfo
+@{
+  public:
+    // Constructeur standard et destructeur
+    JobInfo_PBS();
+    JobInfo_PBS(struct batch_status * stat_list,
+                bool tobedeleted = false);
+    virtual ~JobInfo_PBS();
+
+    // Constructeur par recopie
+    JobInfo_PBS(const JobInfo_PBS & jinfo);
+
+    // Methodes pour l'interfacage avec Python (SWIG)
+    string  __str__() const;  // SWIG : affichage en Python
+    string  __repr__() const; // SWIG : affichage en Python
+
+  protected:
+    Parametre _param; // parametres du job
+    Environnement _env; // variables d'environnement du job
+
+  private:
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{} (ici on cree un BatchManager bm et un Job job)
+
+// On soumet le job et on recupere un identifiant
+JobId   jobid = bm.submitJob(job);
+
+// Ce qui permet d'interroger l'etat du job en cours
+// Nota : l'objet retourne est un JobInfo_PBS
+JobInfo jinfo = jobid.queryJob();
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+@item
+@b{JobInfo_PBS()}
+
+Ce constructeur cree un objet @emph{JobInfo_PBS} vide.
+
+@item
+@b{~JobInfo_PBS()}
+
+Le destructeur libere l'espace memoire alloue pour l'objet si la
+desollacation n'a pas eu deja lieu dans le constructeur.
+
+@item
+@b{JobInfo_PBS(const JobInfo_PBS & jinfo)}
+
+Le constructeur par recopie produit un objet identique a celui passe en
+argument. Les deux objets sont totalement independants l'un de l'autre.
+
+@item
+@b{JobInfo_PBS(struct batch_status * stat_list, bool tobedeleted = false)}
+
+Ce constructeur recupere une liste chainee du type interne OpenPBS
+@emph{struct batch_status *}, la parcoure et l'analyse pour en extraire
+les informations utilisables par la bibliotheque de classes et les
+stocker dans deux objets internes @emph{Parametre} et
+@emph{Environnement}.
+
+Si le parametre @emph{tobedeleted} vaut @emph{true} alors la liste
+chainee @emph{stat_list} sera desallouee a la fin du constructeur. Sinon
+elle sera desalloue dans le destructeur au plus tard.
+
+@item
+@b{string  __str__() const}
+
+Cette methode n'est utile que pour l'interfacage avec Python. Elle
+permet d'afficher l'etat de l'objet @emph{JobInfo}.
+
+@item
+@b{string  __repr__() const}
+
+Cette methode n'est utile que pour l'interfacage avec Python. Elle
+permet d'afficher l'etat de l'objet @emph{JobInfo}.
+
+@end itemize
+
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+
+@node Classe Job_PBS, Classes Python, Classe JobInfo_PBS, Classes PBS
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection Job_PBS
+@cindex        Job_PBS
+
+Un objet de classe @emph{Job} possede une structure generique
+potentiellement utilisable par tout gestionnaire de batch mais pas en
+l'etat. Une conversion dans un format lisible par le gestionnaire doit
+etre realisee.
+
+Ceci se fait en produisant a partir des donnees generiques de la classe
+@emph{Job} des structures de donnees specifiques qui peuvent etre
+directement passees a l'API du gestionnaire.
+
+La classe @emph{Job_PBS} se distingue donc de la classe @emph{Job} par son
+constructeur et par des accesseurs specifiques qui produisent des
+donnees lisibles par OpenPBS.
+
+Etant donnee la specificite de cette classe, elle ne devrait concerner
+que les developpeurs de la bibliotheque de classes Batch.
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class Job_PBS
+@{
+  public:
+    // Constructeurs et destructeur
+    Job_PBS(const Job & job);
+    virtual ~Job_PBS();
+    
+    // Accesseurs
+    struct attropl * getAttributesOP();
+    struct attrl   * getAttributes();
+    char *           getScript();
+    char *           getDestination();
+
+  protected:
+    struct attropl * _p_attropl; // liste d'attributs + operateur
+    struct attrl   * _p_attrl; // liste d'attributs
+    char * _script; // chemin d'acces au script du job
+    char * _destination; // queue dans laquelle le job est soumis
+
+  private:
+
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{}
+
+Parametre param;
+Environnement env;
+
+@dots{} (ici on cree les parametres du job)
+
+Job job(param, env);
+
+// On fabrique un job specifique a OpenPBS a partir du job generique
+// Ceci ne concerne en general pas l'utilisateur de la bibliotheque
+Job_PBS jobpbs(job);
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+
+@item
+@b{Job_PBS(const Job & job)}
+
+Le constructeur convertit les objets internes @emph{Parametre} et
+@emph{Environnement} de l'objet passe en argument en un ensemble de
+quatre structures C @emph{AttributesOP}, @emph{Attributes},
+@emph{Script} et @emph{Destination} directement utilisable par l'API de
+OpenPBS.
+
+@item
+@b{~Job_PBS()}
+
+Le destructeur libere simplement les espaces alloues pour les structures
+@emph{AttributesOP}, @emph{Attributes}, @emph{Script} et
+@emph{Destination}.
+
+@item
+@b{struct attropl * getAttributesOP()}
+
+Cet accesseur retourne un pointeur sur la structure interne
+@emph{AttributesOP} de l'objet. Cette structure n'est pas protogee
+contre les modifications accidentelles de l'utilisateur. Par consequent
+il est recommande d'eviter d'y apporter toute alteration sous peine de
+dysfonctionnement.
+
+Pour la definition de la structure @emph{AttributesOP}, voir la
+documentation OpenPBS.
+
+@item
+@b{struct attrl * getAttributes()}
+
+Cet accesseur retourne un pointeur sur la structure interne
+@emph{Attributes} de l'objet. Cette structure n'est pas protogee
+contre les modifications accidentelles de l'utilisateur. Par consequent
+il est recommande d'eviter d'y apporter toute alteration sous peine de
+dysfonctionnement.
+
+Pour la definition de la structure @emph{Attributes}, voir la
+documentation OpenPBS.
+
+@item
+@b{char * getScript()}
+
+Cet accesseur retourne un parametre @emph{Script} qui est une chaine de
+caracteres C contenant le chemin absolu (sur la machine d'execution) 
+du script a soumettre au gestionnaire de batch.
+
+Cette chaine n'est pas protegee contre les modifications accidentelles
+de l'utilisateur. Il est donc recommande de ne pas y apporter de modification.
+
+@item
+@b{char * getDestination()}
+
+Cet accesseur retourne un parametre @emph{Destination} qui est une chaine de
+caracteres C contenant le nom de la queue, ou classe ou file selon les terminologies, 
+du gestionnaire de batch dans laquelle le job doit etre soumis.
+
+Cette chaine n'est pas protegee contre les modifications accidentelles
+de l'utilisateur. Il est donc recommande de ne pas y apporter de modification.
+
+
+@end itemize
+@end itemize
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Classes Python, Classe PyVersatile, Classe Job_PBS, Classes specifiques
+@comment  node-name,      next,        previous,    up
+@page
+@subsection Classes Python
+@cindex     classes Python
+
+L'integration de la bibliotheque de classes Batch dans l'interpreteur
+Python a beaucoup progresse depuis la precedente version et se trouve
+etre quasiment iso-fonctionelle avec le C++.
+
+Actuellement, l'interface avec Python s'appuie a la fois sur les
+fonctionnalites de l'utilitaire SWIG, et sur la definition d'une classe
+specifique qui permet de voir en Python la classe @emph{Versatile}.
+
+Certaines classes ont de plus des methodes specifiques pour le wrapping
+Python qui simplifient grandement le developpement des classes
+d'interface au detriment, il est vrai, d'une bonne independance entre
+les langages. Ce choix n'est pas definitif et pourra etre revu si
+l'occasion s'en presente.
+
+Quoi qu'il en soit toutes les classes de haut niveau sont interfacees en
+Python sous le meme nom et proposent les memes methodes (sauf celles
+surchargees en C++ qui sot parfois renommees pour lever
+l'ambiguite). Pour ne pas refaire un expose detaille et fastidieux des
+fonctionnalites Python de la bibliotheque de classes, il est propose de
+retrouver les noms et la syntaxe de ces classe dans la partie
+Utilisation de ce document. @xref{Utilisation}.
+
+@menu
+* Classe PyVersatile::  Description de la classe PyVersatile.
+@end menu
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+
+@node Classe PyVersatile, Utilisation, Classes Python, Classes Python
+@comment  node-name,  next,  previous,  up
+@page
+@subsubsection PyVersatile
+@cindex        PyVersatile
+
+
+La classe @emph{PyVersatile} derive de la classe @emph{Versatile} et
+offre la possibilite de convertir un tel objet en objet Python et
+@i{vice versa}.
+
+
+@itemize @bullet{}
+@item Entete
+
+@example
+class PyVersatile : public Versatile
+@{
+  public:
+    // Constructeur a partir d'un objet Versatile
+    PyVersatile(const Versatile &);
+
+    // Constructeur a partir d'un PyObject
+    PyVersatile(const PyObject *) throw(TypeMismatchException,
+                                        ListIsFullException,
+                                        InvalidArgumentException);
+
+    // Conversion de type vers un PyObject
+    operator PyObject *() const;
+
+    // Operateur d'affectation a partir d'un objet Versatile
+    PyVersatile & operator =(const Versatile &);
+
+  protected:
+
+  private:
+
+@};
+@end example
+
+
+@item Exemple
+@example
+@dots{}
+
+// On cree un objet Versatile contenant 
+// une liste de chaine de caracteres
+Versatile V;
+V = "a", "b", "c";
+
+// On convertit cet objet Versatile en PyVersatile
+PyVersatile PyV(V);
+
+// De la on produit un objet Python 
+// qui est une liste de chaine de caracteres
+PyObject * PyO = PyV;
+
+@dots{}
+@end example
+
+@item Methodes
+@itemize @minus{}
+
+@item
+@b{PyVersatile(const Versatile &)}
+
+Ce constructeur convertit un objet @emph{Versatile} en objet @emph{PyVersatile}.
+
+@item
+@b{PyVersatile(const PyObject *) throw(TypeMismatchException, ListIsFullException, InvalidArgumentException)}
+
+Ce constructeur convertit un objet Python passe en argument en un objet
+@emph{PyVersatile}.
+
+Seuls certains objets Python peuvent etre convertis : les @emph{string}
+et les @emph{long}, ainsi que les listes homogenes de ces types, ce qui
+est coherent avec la nature de l'objet @emph{Versatile}. Si tel n'est
+pas le cas, une exception Python est renvoyee a l'interpreteur.
+
+
+@item
+@b{operator PyObject *() const}
+
+Cet operateur convertit l'objet en objet Python. Selon le cas, l'objet
+retourne est soit un scalaire soit une liste. L'objet retourne est
+alloue dynamiquement et doit donc etre pris en charge par l'interpreteur.
+
+@item
+@b{PyVersatile & operator =(const Versatile &)}
+
+L'affectation d'un objet @emph{Versatile} passe en argument est
+similaire a l'affectation entre objets @emph{Versatile}. Les structures
+de donnees internes initiales de l'objet sont effacees et remplacees par
+une copie des donnees internes de l'objet passe en argument. Les deux
+objets restent independants l'un de l'autre a l'issue de l'affectation.
+
+@end itemize
+@end itemize
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Utilisation, Connexion, Classe PyVersatile,   Top
+@comment  node-name,   next,      previous,         up
+@page
+@chapter  Utilisation
+@cindex   utilisation
+
+Ce chapitre presente les differentes actions qu'il est possible de
+realiser avec les classes de la bilbiotheque.
+
+On presente un cas hypothetique ou un utilisateur voudrait soumettre et
+controler un job depuis un code C++. Les sections suivantes decrivent
+les operations a faire ainsi que leur action sur le travail soumis.
+
+@menu
+* Connexion::           Creation d'un gestionnaire de batch.
+* Creation::            Declaration d'un job (travail).
+* Soumission::          Demande d'execution du job.
+* Interrogation::       Recuperation des informations sur le job.
+* Destruction::         Arret du job en cours.
+* Suspension::          Suspension du job en file d'attente.
+* Reprise::             Liberation du job en file d'attente.
+* Modification::        Modification d'un job en file d'attente.
+@end menu
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Connexion,  Creation, Utilisation, Utilisation
+@comment  node-name,  next,     previous,    up
+@section  Connexion
+@cindex   connexion
+@cindex   deconnexion
+
+La premiere etape avant toute utilisation pratique des classes de la
+bibliotheque consiste a se connecter a un gestionnaire de batch.
+
+Ce concept de connexion est purement interne a la bibliotheque car il
+est tout a fait possible d'imaginer le controle de jobs a travers l'API
+d'un gestionnaire sans jamais etablir ni maintenir une quelconque
+connexion avec celui-ci. D'autres par contre reclament l'etablissement
+d'une connexion.
+
+Quoiqu'il en soit ceci n'est pas genant et l'etablissement et le
+maintien de la connexion avec le gestionnaire de batch se fait par la
+creation d'un objet de classe @emph{BatchManager} ou d'une classe
+derivee.
+
+En pratique, la classe @emph{BatchManager} se comporte comme une
+interface et seules les classes d'implementation derivee doivent etre
+instanciees.
+
+Si l'on prend le cas d'un serveur @samp{serveur.domaine.fr} supportant
+un gestionnaire de batch OpenPBS, on peut s'y connecter de la maniere
+suivante :
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+BatchManagerCatalog cata;
+BatchManager_PBS & bm = * (* cata('PBS'))("serveur.domaine.fr");
+@end example
+
+@item Exemple Python:
+
+@example
+cata = BatchManagerCatalog()
+bm   = cata('PBS')('serveur.domaine.fr')
+@end example
+
+@end itemize
+
+Tant que l'objet @emph{bm} sera present --- tant que son destructeur
+n'aura pas ete appele --- la connexion sera maintenue. La deconnexion
+aura lieu a la destruction de l'objet.
+
+@xref{Classe BatchManager}.
+@xref{Classe BatchManager_PBS}.
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Creation,   Soumission, Connexion, Utilisation
+@comment  node-name,  next,       previous,  up
+@section  Creation
+@cindex   creation
+
+La creation du job est l'etape qui precede toute soumission. Elle
+necessite de decrire d'un maniere ou d'un autre ce que l'on va demander
+a la machine d'executer.
+
+Pour cela on passe par deux objets intermediaires qui sont l'objet
+@emph{Parametre} et l'objet @emph{Environnement}.
+
+Le minimum a preciser est en general le chemin absolu d'acces a
+l'executable, quoique ceci depende fortement de la configuration du
+gestionnaire auquel on se connecte. Celui-ci peut reclamer des
+parametres supplementaires.
+
+Pour connaitre l'ensemble des parametres disponibles : @xref{Classe
+Parametre}.
+
+On supposera dans cet exemple que l'application en question sait
+reconnaitre une variable d'environnement @var{myapp_loglevel} qui prend
+une valeur numerique correspondant au niveau d'information affiche en
+sortie.
+
+Cette application imaginaire utilise egalement trois fichiers :
+
+@itemize @bullet{}
+@item
+un fichier d'entree nomme @file{Cas1.data} sur la machine locale qu'il
+faudra renommer @file{fort.9} pour que l'application puisse le lire
+(notre application imaginaire est ecrite en FORTRAN et attend un fichier
+d'entree sur son descripteur 9);
+
+@item
+un fichier de sortie standard que l'on voudra recuperer sous le nom
+@file{Cas1.out};
+
+@item
+un fichier d'erreur standard que l'on voudra recuperer sous le nom
+@file{Cas1.err}.
+
+@end itemize
+
+Le job est ensuite cree simplement a l'aide des deux objets precedents.
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+Parametre param;
+param[EXECUTABLE] = "/home/user/my_app/bin/exec_app.sh";
+param[INFILE]     = Couple("/home/user/my_app/data/Cas1.data","fort.9");
+param[OUTFILE]    = Couple("/home/user/my_app/data/Cas1.out", "stdout"),
+                    Couple("/home/user/my_app/data/Cas1.err", "stderr");
+
+Environnement env;
+env["MYAPP_LOGLEVEL"] = "3";
+
+Job job(param, env);
+@end example
+
+@item Exemple Python:
+
+@example
+param = @{@}
+param["EXECUTABLE"] = "/home/user/my_app/bin/exec_app.sh"
+param["INFILE"]     = [ ("/home/user/my_app/data/Cas1.data","fort.9") ]
+param["OUTFILE"]    = [ ("/home/user/my_app/data/Cas1.out", "stdout"),
+                        ("/home/user/my_app/data/Cas1.err", "stderr") ]
+
+env = @{@}
+env["MYAPP_LOGLEVEL"] = "3"
+
+job = Job()
+job.setParametre(param)
+job.setEnvironnement(env)
+@end example
+
+@end itemize
+
+
+@xref{Classe Parametre}.
+@xref{Classe Environnement}.
+@xref{Classe Job}.
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Soumission, Interrogation, Creation,  Utilisation
+@comment  node-name,  next,          previous,  up
+@section  Soumission
+@cindex   soumission
+@findex   submitJob
+
+Une fois le job cree, il est alors tres simple de le soumettre au
+gestionnaire de batch en passant par l'intermediaire de l'objet
+@emph{BatchManager} cree precedemment.
+
+Cette soumission produira un objet @emph{JobId} qui servira a controler
+le job par la suite.
+
+Cependant des exceptions peuvent etre levees au moment de la soumission
+et il convient de fournir un gestionnaire d'exception pour gerer
+proprement ces incidents.
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  const JobId jobid = bm.submitJob(job);
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+try : 
+  jobid = bm.submitJob(job)
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+
+@xref{Classe Job}.
+@xref{Classe JobId}.
+@xref{Exceptions}.
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Interrogation, Destruction, Soumission, Utilisation
+@comment  node-name,     next,        previous,   up
+@section  Interrogation
+@cindex   interrogation
+@findex   queryJob
+
+La fourniture d'un objet @emph{JobId} permet d'avoir tout controle sur
+le job en cours. En particulier il est possible de l'interroger :
+ceci generera un objet @emph{JobInfo} qui donnera l'ensemble des
+informations disponibles sur l'etat du job aupres du gestionnaire de
+batch.
+
+Ces informations sont disponibles a travers deux objets internes de
+classes @emph{Parametre} et @emph{Environnement}, les memes que pour la
+classe @emph{Job}, mais modifies et completes avec les donnees les plus
+a jour du gestionnaire de batch.
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  const JobInfo jinfo = jobid.queryJob();
+
+  Parametre newparam   = jinfo.getParametre();
+  Environnement newenv = jinfo.getEnvironnement();
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+try : 
+  jobinfo = jobid.queryJob()
+
+  newparam   = jinfo.getParametre()
+  newenv = jinfo.getEnvironnement()
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+
+@xref{Classe JobId}.
+@xref{Classe JobInfo}.
+@xref{Exceptions}.
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Destruction, Suspension, Interrogation, Utilisation
+@comment  node-name,   next,       previous,      up
+@section  Destruction
+@cindex   destruction
+@cindex   suppression
+@findex   deleteJob
+
+
+Il est possible de detruire un job que celui-ci soit encore en file
+d'attente ou bien que son execution ait deja commence, auquel cas elle
+serait immediatement interrompue.
+
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  jobid.deleteJob();
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+try : 
+  jobid.deleteJob()
+
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+
+@xref{Classe JobId}.
+@xref{Exceptions}.
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Suspension, Reprise, Destruction, Utilisation
+@comment  node-name,  next,    previous,    up
+@section  Suspension
+@cindex   suspension
+@findex   holdJob
+
+La suspension consiste a figer en file d'attente un job qui n'aurait pas
+encore commence son execution. Il n'est pas possible de suspendre un job
+qui s'execute.
+
+Il y a deux manieres de suspendre un job en file d'attente :
+@itemize @bullet{}
+@item en utilisant la methode @samp{holdJob};
+@item en modifiant les parametres du job a l'aide de la methode @samp{alterJob}.
+@end itemize
+
+Exemple 1 :
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  jobid.holdJob();
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+try : 
+  jobid.holdJob()
+
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+Exemple 2 :
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  Parametre altparam;
+  altparam[HOLD] = 1;
+  jobid.alterJob(altparam);
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+// Compte tenu de la surcharge d'operateur, cet exemple peut ne pas
+// fonctionner encore
+try : 
+  altparam = @{@}
+  altparam["HOLD"] = 1
+  jobid.alterJob(altparam)
+
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+
+
+@xref{Classe JobId}.
+@xref{Exceptions}.
+@xref{Reprise}.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Reprise,    Modification, Suspension, Utilisation
+@comment  node-name,  next,         previous,   up
+@section  Reprise
+@cindex   reprise
+@findex   releaseJob
+
+La reprise est l'operation inverse de la suspension en ceci qu'elle
+libere un job precedemment suspendu en file d'attente. Le job continuera
+alors son cheminement normal au sein du gestionnaire de batch.
+
+Il y a deux manieres de suspendre un job en file d'attente :
+@itemize @bullet{}
+@item en utilisant la methode @samp{releaseJob};
+@item en modifiant les parametres du job a l'aide de la methode @samp{alterJob}.
+@end itemize
+
+Exemple 1 :
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  jobid.releaseJob();
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+try : 
+  jobid.releaseJob()
+
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+Exemple 2 :
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  Parametre altparam;
+  altparam[HOLD] = 0;
+  jobid.alterJob(altparam);
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+// Compte tenu de la surcharge d'operateur, cet exemple peut ne pas
+// fonctionner encore
+try : 
+  altparam = @{@}
+  altparam["HOLD"] = 0
+  jobid.alterJob(altparam)
+
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+
+@xref{Classe JobId}.
+@xref{Exceptions}.
+@xref{Suspension}.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Modification, Installation de la bibliotheque, Reprise,   Utilisation
+@comment  node-name,    next,                            previous,  up
+@section  Modification
+@cindex   modification
+@findex   alterJob
+
+Il est possible de modifier tout ou partie des parametres et des
+variables d'un job a condition que celui-ci soit encore en file
+d'attente. Un job dont l'execution a deja debute devient inalterable,
+sauf a l'arreter definitvement.
+
+La modification se fait en declarant un objet @emph{Parametre} et/ou un
+objet @emph{Environnement} contenant l'ensemble des alterations a
+apporter a la description du job. Ces alterations peuvent porter sur des
+parametres ou des variables deja definies ou non.
+
+En reprenant le cas du job imaginaire utilise jusqu'ici, on peut
+souhaiter changer le script qui tient lieu d'executable car le precedent
+etait incomplet, modifier le niveau d'affichage de la log et ajouter une
+variable nommee @var{myapp_debug} qui indique au code de passer en mode
+debug. Ceci pourrait se faire de la maniere suivante :
+
+@itemize @bullet{}
+@item Exemple C++ :
+
+@example
+try @{
+  Parametre altparam;
+  altparam[EXECUTABLE] = "/home/user/my_app/bin/exec_app.sh";
+
+  Environnement altenv;
+  altenv["MYAPP_LOGLEVEL"] = "4";
+  altenv["MYAPP_DEBUG"]    = "1";
+  jobid.alterJob(altparam, altenv);
+
+@} catch (GenericException & ex) @{
+  @dots{}
+@}
+@end example
+
+@item Exemple Python:
+
+@example
+// Compte tenu de la surcharge d'operateur, cet exemple peut ne pas
+// fonctionner encore
+try : 
+  altparam = @{@}
+  altparam["EXECUTABLE"] = "/home/user/my_app/bin/exec_app.sh"
+
+  altenv = @{@}
+  altenv["MYAPP_LOGLEVEL"] = "4";
+  altenv["MYAPP_DEBUG"]    = "1";
+
+  jobid.alterJob(altparam, altenv)
+
+except :
+  @dots{}
+@end example
+
+@end itemize
+
+
+@xref{Classe JobId}.
+@xref{Exceptions}.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Installation de la bibliotheque, Prerequis, Modification,  Top
+@comment  node-name,                       next,      previous,      up
+@chapter  Installation
+@cindex   installation
+
+Cette section montre comment installer l'ensemble de la bibliotheque de
+classes Batch sur une machine Unix.
+
+@menu
+* Prerequis::                           
+* Installation rapide::
+* Configuration::
+* Compilation::
+* Compilation de la documentation::
+* Tests::
+* Installation::
+@end menu
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Prerequis,  Installation rapide,  Installation de la bibliotheque, Installation de la bibliotheque
+@comment  node-name,  next,                 previous,                        up
+@section  Prerequis
+@cindex   prerequis
+
+@unnumberedsubsec GCC/G++
+
+A l'heure actuelle, la bibliotheque de classes Batch est developpee en
+C++ et necessite de fait un compilateur pour ce langage. GCC/G++
+version 2.95.3 (@inforef{Top, ,gcc} pour plus de detail) ou une version
+ulterieure est un choix judicieux.
+
+@unnumberedsubsec Gestionnaires de batch
+
+Comme la bibliotheque utilise les fonctionnalites de certains
+gestionnaires de batch, il est indispensable de pouvoir acceder aux
+bibliotheques et aux fichiers d'entete de ces produits, ou du moins des
+produits dont on se servira par la suite, ceci pour pouvoir communiquer
+a travers l'API qu'ils ont developpe.
+
+Le cas le plus simple est d'avoir le produit directement installe sur la
+machine sur laquelle sera compilee la bibliotheque de classes Batch.
+
+@unnumberedsubsubsec OpenPBS
+@cindex OpenPBS
+@cindex PBS
+
+A ce jour, seul le gestionnaire de batch PBS (OpenPBS et PBS Pro) est
+supporte (voir le site officiel @uref{http://www.openpbs.org}). Il doit
+avoir une version au moins egale a 2.3.16. 
+
+@unnumberedsubsubsec LSF
+@cindex LSF
+
+Il est prevu d'avoir un support de LSF dans les mois qui viennent.
+
+@unnumberedsubsubsec LoadLeveler
+@cindex LoadLeveler
+
+Il est prevu d'avoir un support de LoadLeveler mais dans un futur plus
+lointain en fonction de la disponibilite du produit mais surtout d'une
+machine sur lequel il serait installe.
+
+@unnumberedsubsubsec Sun Grid Engine
+
+Ce choix-la est beaucoup plus hypothetique, et risque bien de ne jamais
+etre mene a bien.
+
+@unnumberedsubsubsec Rsh/Ssh
+
+Il est prevu de simuler le fonctionnement d'un gestionnaire de batch a
+l'aide de commandes Unix Rsh et Ssh dans la mesure de leurs capacites
+lorsque qu'il n'est pas possible d'avoir un gestionnaire de batch sur
+certaines machines ou de s'y connecter (par exemple lorsqu'on traverse
+un coupe-feu).
+
+@unnumberedsubsec Python
+@cindex Python
+
+Les classes de haut-niveau de la bibliotheque de classes Batch disposent
+d'une interface en Python qui leur permet d'etre utilisables dans ce
+langage. L'usage de cette fonctionnalite necessite d'avoir a disposition
+une version de Python (voir le site officiel
+@uref{http://www.python.org}) au moins egale a 2.2.
+
+@unnumberedsubsec SWIG
+@cindex SWIG
+
+De plus l'interfacage avec Python est automatise a l'aide de
+l'utilitaire SWIG (voir le site officiel @uref{http://www.swig.org}) qui
+transcrit les definitions des classes C++ en classes Python. Il faut
+pour cela disposer de la version 1.3.17 ou ulterieure.
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Installation rapide, Configuration, Prerequis, Installation de la bibliotheque
+@comment  node-name,           next,          previous,  up
+@section  Installation rapide
+@cindex   installation rapide
+
+Il faut commencer par decompresser le fichier @file{.tar.gz} ou
+@file{.tgz} et descendre dans le repertoire qu'il a cree :
+
+@example
+$ tar -xzvf Batch-@value{VERSION}.tar.gz
+$ cd Batch-@value{VERSION}
+@end example
+
+Pour ceux qui sont vraiment presses, le minimum requis est :
+
+@example
+$ ./configure
+$ make
+$ make install
+@end example
+
+Pour ceux qui ont le temps de lire la suite, les sections suivantes
+decrivent plus en detail ces etapes et les differents tests que l'on
+peut mener.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Configuration, Compilation, Installation rapide, Installation de la bibliotheque
+@comment  node-name,     next,        previous,            up
+@section  Configuration
+@cindex   configuration
+
+La phase de configuration, tres classique dans le domaine des logiciels
+libres, est basee sur les produits autoconf (voir @inforef{Top,
+,autoconf}), automake (voir @inforef{Top, ,automake}) et libtool (voir
+@inforef{Top, ,libtool}).
+
+La configuration est faite a l'aide du programme @file{configure}
+present dans le repertoire racine de la bibliotheque de classes
+Batch. Ce programme analyse l'ensemble des elements du systeme sur
+lequel se deroulera la compilation pour determiner les parametres
+optimaux et la presence de tous les produits necessaires a la
+compilation.
+
+On n'oubliera pas de se referer a la documentation de @file{configure}
+notamment pour determiner l'emplacement definitif de l'installation :
+
+@example
+$ ./configure --help
+@end example
+
+C'est aussi au cours de cette phase de configuration qu'il est
+indispensable de preciser avec quelles options la bibliotheque doit etre
+generee. En particulier il est necessaire d'indiquer avec quel(s)
+gestionnaire(s) de batch doit se faire la compilation de maniere a avoir
+acces a l'API.
+
+Par exemple dans le cas de OpenPBS, il est necessaire de preciser :
+
+@example
+$ ./configure --with-openpbs=/path/to/PBS/root/dir
+@end example
+
+Le chemin @file{/path/to/PBS/root/dir} est optionnel si la variable
+d'environnement @var{openpbs} est definie avec cette meme valeur.
+
+De meme pour Python que l'on indique de la maniere suivante :
+
+@example
+$ ./configure --with-python=/path/to/Python/root/dir
+@end example
+
+ou bien a l'aide de la variable d'environnement @var{pythonhome}.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Compilation, Compilation de la documentation,  Configuration, Installation de la bibliotheque
+@comment  node-name,   next,  previous,      up
+@section  Compilation
+@cindex   compilation
+
+La compilation proprement dite n'appelle pas de remarque particuliere :
+
+@example
+$ make
+@end example
+
+On n'oubliera pas d'utiliser les focntionnalites de chaque @file{make},
+comme par exemple la compilation parallele pour reduire les temps de
+compilation (voir @inforef{Top, ,make}).
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Compilation de la documentation, Tests,  Compilation, Installation de la bibliotheque
+@comment  node-name,   next,  previous,      up
+@section  Compilation de la documentation
+@cindex   compilation de la documentation
+
+Normalement la documentation est automatiquement compilee lors de la
+compilation de la bibliotheque, mais uniquement sous la forme d'un
+fichier @file{.info}. Il est egalement possible d'obtenir un fichier
+@file{.dvi} qui permettra de generer d'autres formats comme le
+PostScript (fichier @file{.ps}) ou le PDF (fichier @file{.pdf}), ou bien
+une documentation sous forme HTML (fichier @file{.html}).
+
+Pour fabriquer le fichier @file{.dvi} il faut executer la commande
+suivante :
+
+@example
+$ make dvi
+@end example
+
+Il est alors possible de produire une documentation sous forme
+PostScript :
+
+@example
+$ cd doc
+$ dvips Batch.dvi -o Batch.ps
+@end example
+
+ou PDF :
+
+@example
+$ cd doc
+$ dvipdf Batch.dvi Batch.pdf
+@end example
+
+Pour la documentation HTML, on l'obtient a l'aide de le commande
+suivante :
+
+@example
+$ cd doc
+$ texi2html -split_node Batch.texi
+@end example
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Tests,       Installation, Compilation de la documentation, Installation de la bibliotheque
+@comment  node-name,   next,         previous,    up
+@section  Tests
+@cindex   tests
+
+@unnumberedsubsec Tests de pre-installation
+
+La bibliotheque de classes Batch dispose d'un ensemble de tests
+unitaires pour verifier le fonctionnement de chaque classe
+individuellement. Ces tests ne sont pas compiles lors de la compilation
+de la bibliotheque; ils ne le sont qu'au moment du test.
+
+Les tests sont executes de la maniere suivante :
+
+@example
+$ make check
+@end example
+
+A la fin des tests, un compte rendu est fait qui avertit l'utilisateur
+des tests reussis et des echecs rencontres. Chaque test peut etre rejoue
+individuellement en se placant dans le repertoire @file{test} et en
+executant les tests manuellement comme par exemple :
+
+@example
+$ cd test
+$ ./t_Versatile.sh
+@end example
+
+@unnumberedsubsec Tests de post-installation
+
+Certains tests ne sont pas executes lorsque la commande @file{make
+check} est lancee car ceux-ci necessitent l'installation prealable de
+certains fichiers qui ne l'ont pas encore ete, l'installation definitive
+n'ayant pas eu lieu encore. C'est pour cela que ces tests ne doivent et
+ne peuvent etre lances qu'une fois l'installation terminee. @xref{Installation}. 
+
+Il faut pour cela executer :
+
+@example
+$ make installcheck
+@end example
+
+De la meme maniere que pour les tests de pre-installation, une compte
+rendu est fait et les tests defaillants peuvent etre rejoues
+manuellement pour determiner le probleme.
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Installation, Divers, Tests,      Installation de la bibliotheque
+@comment  node-name,    next,   previous,  up
+@section  Installation
+@cindex   installation
+
+L'installation est la mise a disposition definitive dans le systeme de
+la bibliotheque de classes Batch. C'est la derniere etape de la
+procedure apres la configuration et la compilation.
+
+On l'execute de la maniere suivante :
+
+@example
+$ make install
+@end example
+
+Tous les fichiers compiles, la bibliotheque et les fichiers d'entete
+sont installes dans le repertoire definitif. Les fichiers de test de
+post-installation sont egalement copies (@xref{Tests}.) ainsi que la
+documentation. 
+
+
+
+
+
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node     Divers,     Index, Installation, Top
+@comment  node-name,  next,  previous,     up
+@chapter  Divers
+@cindex   divers
+
+
+
+
+
+@c ----------------------
+@c ----------------------
+@c ----------------------
+
+@node    Index, Top     ,  Divers,    Top
+@comment node-name, next,  previous,  up
+@unnumbered Index
+
+@heading Index des concepts
+@printindex cp
+
+@heading Index des fonctions et des methodes
+@printindex fn
+
+@bye
+
diff --git a/doc/salome/Makefile.am b/doc/salome/Makefile.am
new file mode 100644 (file)
index 0000000..b1075e0
--- /dev/null
@@ -0,0 +1,51 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+# -* Makefile *- 
+#
+# Author : Paul RASCLE (EDF)
+# Date : 16/02/2006
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+SUBDIRS= tui
+SUBDIRSGUI= tui
+SUBDIRSTUI= tui
+
+index_html:
+       $(INSTALL) -d $(docdir); 
+
+usr_docs: index_html
+       list='$(SUBDIRSGUI)'; for subdir in $$list; do \
+         echo "Making usr_docs in $$subdir"; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) usr_docs) \
+       done;
+
+dev_docs: index_html
+       list='$(SUBDIRSTUI)'; for subdir in $$list; do \
+         echo "Making dev_docs in $$subdir"; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) dev_docs) \
+       done;
+
+
+info_TEXINFOS = Batch.texi
+
+install-data-local:  html usr_docs
+       cp -rp $(top_builddir)/doc/salome/Batch.html $(docdir)
diff --git a/doc/salome/tui/KERNEL/doxydev.in b/doc/salome/tui/KERNEL/doxydev.in
new file mode 100644 (file)
index 0000000..168d1c5
--- /dev/null
@@ -0,0 +1,241 @@
+# Doxyfile 1.4.6
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "SALOME v.@VERSION@"
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ../
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = NO
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = YES
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = @top_builddir@ \
+                        @top_srcdir@
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 5
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = NO
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = YES
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 25
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = log.txt
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = \
+                      @top_srcdir@ 
+FILE_PATTERNS          = *.idl *.?xx *.h *.hh *.i *c *.cc python_extension_must_be_here
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = sources/
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 3
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = KERNEL
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = sources/myheader.html
+HTML_FOOTER            = sources/footer.html
+HTML_STYLESHEET        = sources/doxygen.css
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = NO
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = NO
+UML_LOOK               = YES
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = NO
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = jpg
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1200
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = NO
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
diff --git a/doc/salome/tui/KERNEL/doxyfile.in b/doc/salome/tui/KERNEL/doxyfile.in
new file mode 100755 (executable)
index 0000000..a4f54eb
--- /dev/null
@@ -0,0 +1,214 @@
+# Doxyfile 1.3-rc1
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "SALOME v.@VERSION@"
+PROJECT_NUMBER         = id#1.1
+OUTPUT_DIRECTORY       = ../
+OUTPUT_LANGUAGE        = English
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = YES
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+SHORT_NAMES            = NO
+HIDE_SCOPE_NAMES       = NO
+VERBATIM_HEADERS       = YES
+SHOW_INCLUDE_FILES     = YES
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = NO
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 5
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ALIASES                = 
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 25
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = YES
+SHOW_USED_FILES        = NO
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = log.txt
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = ../../../../share/salome/idl/SALOME_ModuleCatalog.idl \
+                       ../../../../share/salome/idl/SALOMEDS.idl \
+                       ../../../../share/salome/idl/SALOME_Exception.idl \
+                       ../../../../share/salome/idl/SALOMEDS_Attributes.idl \
+                       ../../../../share/salome/idl/SALOME_Component.idl \
+                       ../../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx \
+                       ../../../../share/salome/src/NamingService/SALOME_NamingService.hxx \
+                       ../../../../share/salome/src/NamingService/SALOME_NamingService.cxx \
+                       ../../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.cxx \
+                       ../../../../build/salome/bin/salome \
+                       ../../../../build/salome/src/Batch_SWIG \
+                       ../../../../build/salome/src/Communication_SWIG \
+                       ../../../../build/salome/src/LifeCycleCORBA_SWIG \
+                       ../../../../build/salome/src/LifeCycleCORBA_SWIG \
+                       ../../../../build/salome/src/NOTIFICATION_SWIG
+FILE_PATTERNS          = *.idl *.hxx *.cxx python_extension_must_be_here
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = sources/
+INPUT_FILTER           = 
+FILTER_SOURCE_FILES    = YES
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = KERNEL
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = sources/myheader.html
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_SCHEMA             = 
+XML_DTD                = 
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = NO
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = NO
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = NO
+GRAPHICAL_HIERARCHY    = YES
+DOT_IMAGE_FORMAT       = jpg
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1200
+GENERATE_LEGEND        = NO
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
+CGI_NAME               = search.cgi
+CGI_URL                = 
+DOC_URL                = 
+DOC_ABSPATH            = 
+BIN_ABSPATH            = /usr/local/bin/
+EXT_DOC_PATHS          = 
diff --git a/doc/salome/tui/KERNEL/doxyuser.in b/doc/salome/tui/KERNEL/doxyuser.in
new file mode 100644 (file)
index 0000000..0d95bda
--- /dev/null
@@ -0,0 +1,247 @@
+# Doxyfile 1.4.6
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "SALOME v.@VERSION@"
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ../
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = NO
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = YES
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = @top_builddir@ \
+                        @top_srcdir@
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 5
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = NO
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = YES
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 25
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = log.txt
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = \
+                      @top_srcdir@/bin \
+                      @top_srcdir@/idl \
+                      @top_srcdir@/src/Container \
+                      @top_srcdir@/src/LifeCycleCORBA \
+                      @top_srcdir@/src/NamingService \
+                      @top_srcdir@/src/Notification \
+                      @top_srcdir@/src/Utils
+FILE_PATTERNS          = *.idl *.hxx *.cxx python_extension_must_be_here
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = sources/
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 3
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = KERNEL
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = sources/myheader.html
+HTML_FOOTER            = sources/footer.html
+HTML_STYLESHEET        = sources/doxygen.css
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = NO
+HIDE_UNDOC_RELATIONS   = NO
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = NO
+GROUP_GRAPHS           = NO
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = NO
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = jpg
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1200
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = NO
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
diff --git a/doc/salome/tui/KERNEL/sources/doxygen.css b/doc/salome/tui/KERNEL/sources/doxygen.css
new file mode 100755 (executable)
index 0000000..88e613d
--- /dev/null
@@ -0,0 +1,170 @@
+H1 { 
+   text-align: center; 
+}
+
+CAPTION { 
+   font-weight: bold 
+}
+
+/* Link in the top navbar */
+A.qindex {}
+
+A.qindexRef {}
+
+/* Link to any cross-referenced Doxygen element */
+A.el { 
+   text-decoration: none; 
+   font-weight: bold 
+}
+
+A.elRef { 
+   font-weight: bold 
+}
+
+/* Link to any cross-referenced Doxygen element inside a code section 
+   (ex: header)
+*/
+A.code { 
+   text-decoration: none; 
+   font-weight: normal; 
+   color: #4444ee 
+}
+
+A.codeRef { 
+   font-weight: normal; 
+   color: #4444ee 
+}
+
+A:hover { 
+   text-decoration: none; 
+   background-color: lightblue 
+}
+
+DL.el { 
+   margin-left: -1cm 
+}
+
+/* A code fragment (ex: header) */
+DIV.fragment { 
+   width: 100%; 
+   border: none; 
+   background-color: #CCCCCC 
+}
+
+/* In the alpha list (coumpound index), style of an alphabetical index letter */
+DIV.ah { 
+   background-color: #CCCCCC; 
+   font-weight: bold; 
+   color: #ffffff; 
+   margin-bottom: 3px; 
+   margin-top: 3px 
+}
+
+/* Method name (+ type) */
+TD.md { 
+   background-color: lightblue; 
+   font-weight: bold; 
+}
+
+/* Method parameter (some of them) */
+TD.mdname1 { 
+   background-color: lightblue; 
+   font-weight: bold; color: #602020; 
+}
+
+/* Method parameter (some of them) */
+TD.mdname { 
+   background-color: lightblue; 
+   font-weight: bold; 
+   color: #602020; 
+   width: 600px; 
+}
+
+/* Separator between methods group (usually empty, seems not supported by IE) */
+DIV.groupHeader { 
+   margin-left: 16px; 
+   margin-top: 12px; 
+   margin-bottom: 6px; 
+   font-weight: bold 
+}
+
+DIV.groupText { 
+   margin-left: 16px; 
+   font-style: italic; 
+   font-size: smaller 
+}
+
+BODY { 
+   background: #FFFFFF;
+}
+
+/*div.div-page { 
+  background-color: #FFFFFF; 
+  margin-left: 1em;
+  margin-right: 1em;
+  margin-top: 1em;
+  margin-bottom: 0.1em;
+
+  padding-left: 1em;
+  padding-right: 1em;
+  padding-top: 0.5em;
+  padding-bottom: 0.5em;
+
+  border: 2px solid #0D299A; 
+  border-width: 2px;
+  border-color: #0D299A; 
+}*/
+
+div.tabs { 
+  text-align: justify; 
+  margin-left    : 2px;         
+  margin-right   : 2px;  
+  margin-top     : 2px; 
+  margin-bottom  : 2px
+  font-weight: bold;
+  color: #FFFFFF;
+}
+
+DIV.div-footer { 
+  margin-left: 1em;
+  margin-right: 1em;
+  margin-bottom: 0.2em;
+  text-align: right;
+  font-size: 9pt; 
+}
+
+/* In File List, Coumpound List, etc, 1st column of the index */
+TD.indexkey { 
+   background-color: #CCCCCC; 
+   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  
+}
+
+/* In File List, Coumpound List, etc, 2nd column of the index */
+TD.indexvalue { 
+   background-color: #CCCCCC; 
+   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  
+}
+
+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 }
diff --git a/doc/salome/tui/KERNEL/sources/footer.html b/doc/salome/tui/KERNEL/sources/footer.html
new file mode 100755 (executable)
index 0000000..8aa47df
--- /dev/null
@@ -0,0 +1,15 @@
+<DIV class="div-footer">
+</tr>
+<hr>
+<table cellspacing="2" align="center" bgcolor="#808080" frame="void">
+  <tbody align="center" valign="center" bgcolor="#D3D3D3">
+    <tr>
+      <td>&nbsp;&nbsp;<a href="../../index.html" target = _top>General KERNEL Documentation</a>&nbsp;&nbsp;</td>
+      <td>&nbsp;&nbsp;<a href="../../KERNEL_Services.html" target = _top>End User KERNEL Services</a>&nbsp;&nbsp;</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+Generated on $datetime for $projectname by&nbsp;<A href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></A> $doxygenversion</DIV>
+</BODY>
+</HTML>
diff --git a/doc/salome/tui/KERNEL/sources/html_comments.gif b/doc/salome/tui/KERNEL/sources/html_comments.gif
new file mode 100755 (executable)
index 0000000..f0c0f0b
Binary files /dev/null and b/doc/salome/tui/KERNEL/sources/html_comments.gif differ
diff --git a/doc/salome/tui/KERNEL/sources/static/tree.js.in b/doc/salome/tui/KERNEL/sources/static/tree.js.in
new file mode 100755 (executable)
index 0000000..b7422d7
--- /dev/null
@@ -0,0 +1,200 @@
+foldersTree = gFld("<b>SALOME v.@VERSION@ </b>", "", "")
+     insDoc(foldersTree, gLnk("Main Page", "", "main.html"))
+
+aux1 = insFld(foldersTree, gFld("TUI Reference Guide", ""))
+  aux2 = insFld(aux1, gFld("Modules", ""))
+    aux3 = insFld(aux2, gFld("SALOME STUDY module", ""))
+            insDoc(aux3, gLnk("Overview", "", "overview_Study.html"))
+      aux4 = insFld(aux3, gFld("Packages", ""))        
+               insDoc(aux4, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html"))
+            insDoc(aux3, gLnk("Examples", "", "examples_Study.html"))
+    aux3 = insFld(aux2, gFld("SALOME KERNEL module", ""))
+             insDoc(aux3, gLnk("Overview", "", "overview_Kernel.html"))
+      aux4 = insFld(aux3, gFld("Packages", "")) 
+               insDoc(aux4, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html"))
+               insDoc(aux4, gLnk("SALOME", "", "namespaceSALOME.html"))
+               insDoc(aux4, gLnk("Engines", "", "namespaceEngines.html"))
+             insDoc(aux3, gLnk("Examples", "", "examples_Kernel.html"))
+
+
+/*! Data structures
+*/
+         insDoc(aux1, gLnk("Data Structures", "", "annotated.html"))
+
+/*!    insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html"))
+       insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html"))
+       insDoc(aux1, gLnk("Engines::Component", "", "interfaceEngines_1_1Component.html"))
+       insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html"))
+       insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html"))
+       insDoc(aux1, gLnk("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html"))
+       insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html"))
+       insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html"))
+       insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html"))
+       insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html"))
+       insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html"))
+       insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html"))
+       insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html"))
+*/
+         insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html"))
+
+/*!    insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html"))
+       insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html"))
+  aux2 = insFld(aux1, gFld("Engines::Component", "", "interfaceEngines_1_1Component.html"))
+       insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html"))
+  aux2 = insFld(aux1, gFld("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html"))
+       insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html"))
+  aux2 = insFld(aux1, gFld("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html"))
+       insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html"))
+       insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html"))
+       insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html"))
+       insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html"))
+       insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html"))
+       insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html"))
+  aux2 = insFld(aux1, gFld("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html"))
+         insDoc(aux2, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html"))
+       insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html"))
+*/
+         insDoc(aux1, gLnk("Class methods list", "", "functions.html"))
+/*!
+aux1 = insFld(foldersTree, gFld("Namespace List", "", "namespaces.html"))
+       insDoc(aux1, gLnk("Engines", "", "namespaceEngines.html"))
+       insDoc(aux1, gLnk("SALOME", "", "namespaceSALOME.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html"))
+       insDoc(aux1, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html"))
+*/
+         insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html"))
+
+         insDoc(aux1, gLnk("File List", "", "files.html"))
+      
+/*!
+       insDoc(aux1, gLnk("SALOME_Component.idl", "", "SALOME__Component_8idl.html"))
+       insDoc(aux1, gLnk("SALOME_Exception.idl", "", "SALOME__Exception_8idl.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog.idl", "", "SALOME__ModuleCatalog_8idl.html"))
+       insDoc(aux1, gLnk("SALOME_Session.idl", "", "SALOME__Session_8idl.html"))
+       insDoc(aux1, gLnk("SALOMEDS.idl", "", "SALOMEDS_8idl.html"))
+       insDoc(aux1, gLnk("SALOMEDS_Attributes.idl", "", "SALOMEDS__Attributes_8idl.html"))
+*/
+
+aux1 = insFld(foldersTree, gFld("IDL/Python mapping", ""))
+         insDoc(aux1, gLnk("Mapping of IDL definitions to Python language", "", "mapping.html"))
+         insDoc(aux1, gLnk("Mapping of SALOME IDL definitions to Python language", "", "page2.html"))
+/*!  insDoc(foldersTree, gLnk("Graphical Class Hierarchy", "", "inherits.html"))
+*/
+aux1 = insFld(foldersTree, gFld("Naming service", ""))
+         insDoc(aux1, gLnk("Naming Service Description ", "", "overview_Naming.html"))
+         insDoc(aux1, gLnk("Salome_NamingService Class Reference", "", "classSALOME__NamingService.html"))
+         insDoc(aux1, gLnk("Examples", "", "examples_Naming.html"))
+aux1 = insFld(foldersTree, gFld("Life Cycle", ""))
+         insDoc(aux1, gLnk("Life Cycle Service Description ", "", "overview_Life_Cycle.html"))
+         insDoc(aux1, gLnk("Salome_LifeCycleCorba Class Reference", "", "classSALOME__LifeCycleCORBA.html"))
+         insDoc(aux1, gLnk("Examples", "", "examples_Life_cycle.html"))
+
+
diff --git a/doc/salome/tui/Makefile.am b/doc/salome/tui/Makefile.am
new file mode 100644 (file)
index 0000000..8d0902d
--- /dev/null
@@ -0,0 +1,81 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+# -* Makefile *- 
+#
+# Author : Paul RASCLE (EDF)
+# Date : 16/02/2006
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+EXTRA_DIST = $(srcdir)/KERNEL $(srcdir)/pythfilter.py
+
+dist-hook:
+       rm -rf `find $(distdir) -name CVS`
+
+usr_docs:
+       cp -fr $(srcdir)/KERNEL/* ./INPUT; \
+       cd ./INPUT; \
+        pwd; ls;\
+       echo "DOXYGEN SUPPORT PYTHON - $(DOXYGEN_WITH_PYTHON)"; \
+       if( test "x$(DOXYGEN_WITH_PYTHON)" = "xyes"); then \
+         sed 's|python_extension_must_be_here|*.py|' ./doxyuser > ./doxyuser1; \
+         $(DOXYGEN) -u ./doxyuser1; \
+       else \
+         sed 's|python_extension_must_be_here||' ./doxyuser > ./doxyuser1; \
+       fi; \
+       echo "DOXYGEN SUPPORT STL - $(DOXYGEN_WITH_STL)"; \
+       if( test "x$(DOXYGEN_WITH_STL)" = "xyes"); then \
+         sed -e 's|BUILTIN_STL_SUPPORT    = NO|BUILTIN_STL_SUPPORT    = YES|' ./doxyuser1 > ./doxyuser2; \
+         mv -f doxyuser2 doxyuser1; \
+       fi; \
+       $(DOXYGEN) ./doxyuser1; \
+       cd ..;
+       $(INSTALL) -d $(docdir)/tui/KERNEL;
+       cp -fr KERNEL $(docdir)/tui
+       cp -fr $(srcdir)/KERNEL/sources/static/*.* $(docdir)/tui/KERNEL;
+       cp -fr $(srcdir)/KERNEL/sources/ $(docdir)/tui/KERNEL;
+       cp -fr $(srcdir)/KERNEL/HTML/ $(docdir)/tui/KERNEL;
+       cp -f $(srcdir)/pythfilter.py $(docdir)/tui/KERNEL;
+
+dev_docs:
+       cp -fr $(srcdir)/KERNEL/* ./INPUT; \
+       cd ./INPUT; \
+        pwd; ls;\
+       echo "DOXYGEN SUPPORT PYTHON - $(DOXYGEN_WITH_PYTHON)"; \
+       if( test "x$(DOXYGEN_WITH_PYTHON)" = "xyes"); then \
+         sed 's|python_extension_must_be_here|*.py|' ./doxydev > ./doxydev1; \
+         $(DOXYGEN) -u ./doxydev1; \
+       else \
+         sed 's|python_extension_must_be_here||' ./doxydev > ./doxydev1; \
+       fi; \
+       echo "DOXYGEN SUPPORT STL - $(DOXYGEN_WITH_STL)"; \
+       if( test "x$(DOXYGEN_WITH_STL)" = "xyes"); then \
+         sed -e 's|BUILTIN_STL_SUPPORT    = NO|BUILTIN_STL_SUPPORT    = YES|' ./doxydev1 > ./doxydev2; \
+         mv -f doxydev2 doxydev1; \
+       fi; \
+       $(DOXYGEN) ./doxydev1; \
+       cd ..;
+       $(INSTALL) -d $(docdir)/tui/KERNEL;
+#      cp -fr KERNEL $(docdir)/tui
+#      cp -fr $(srcdir)/KERNEL/sources/static/*.* $(docdir)/tui/KERNEL;
+#      cp -fr $(srcdir)/KERNEL/sources/ $(docdir)/tui/KERNEL;
+#      cp -fr $(srcdir)/KERNEL/HTML/ $(docdir)/tui/KERNEL;
+#      cp -f $(srcdir)/pythfilter.py $(docdir)/tui/KERNEL;
diff --git a/doc/salome/version.texi b/doc/salome/version.texi
new file mode 100644 (file)
index 0000000..f9a8101
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 31 May 2006
+@set UPDATED-MONTH May 2006
+@set EDITION 3.2.0
+@set VERSION 3.2.0
diff --git a/doc/txt2html.sh b/doc/txt2html.sh
new file mode 100755 (executable)
index 0000000..66118fd
--- /dev/null
@@ -0,0 +1,56 @@
+#/bin/sh
+
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+# ===================================================================
+# This shell script is provided for generating the html files
+# from the txt files (restructured text) in the source directory.
+#
+# Usage: just execute the script where it stands in the source
+# directory. The file list has to be updated manually when adding
+# a new restructured text file.
+#
+# Note that the building process executes a target rstdoc that
+# generates the html documentation without need of this script.
+# The autoconficuration (check_htmlgen.m4) set the correct generator
+# rst2html by replacing the @RST2HTML@ tag.
+# ===================================================================
+# (CSSI - gboulant - 25/10/05)
+#
+
+# This must be updated manually in this script (for source usage only)
+RST2HTML=rst2html
+
+FILELIST="index
+         UnitTests
+         SALOME_Application
+         INSTALL
+         kernel_resources
+         userguide"
+
+STYLESHEET=rst.css
+RSTOPTS="--output-encoding=latin1 --stylesheet=$STYLESHEET"
+
+for file in $FILELIST; do
+    bfn=`basename $file .txt`
+    echo "Generating ${bfn}.html from ${bfn}.txt ..."
+    $RST2HTML $RSTOPTS ${bfn}.txt ${bfn}.html
+done
+
diff --git a/doc/userguide.txt b/doc/userguide.txt
new file mode 100644 (file)
index 0000000..b7134e8
--- /dev/null
@@ -0,0 +1,146 @@
+=================================================================
+User's guide, for developpers and users
+=================================================================
+
+*html version of this document is produced with docutils*::
+
+  rst2html < doc.txt > doc.html
+
+*This document corresponds to SALOME2 3.1.0*
+*NOT UP TO DATE with 3.2.0*
+
+.. contents::
+.. sectnum::
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+-------------------------------------------------------------------------------
+
+This guide provides you with some basic concepts for developing and
+using the SALOME platform. You will find some information on the
+general technical architecture ...
+
+Introduction
+============
+
+General information
+-------------------
+
+This document has been initialized by collecting and updating an existing
+documentation. The restructured text format has been selected for
+writing. This format can be read with a basic editor except for
+pictures and some hypertext links. You can build the html pages using
+the docutils scripts provided with python packages on most platform.
+
+Definitions
+-----------
+
+``WORK IN PROGRESS``
+
+Module
+   definition of a module and/or link to the definition
+
+Container
+   definition of a container
+  
+
+General concepts
+================
+modules et dépendances (s'inspirer de PYHELLO)
+
+
+Filesystem organisation
+========================
+
+Voir doc de JR "Organisation de la plate-forme"
+
+A typical source working directory
+----------------------------------
+organisation type des sources d'un module standard (spécifications techniques)
+
+A typical installation directory
+--------------------------------
+organisation type des produits installés
+
+
+Building process
+================
+Procédures de compilation (renvoie au install.sh)
+
+
+Developer's guide - basic concepts
+=========================================
+
+Guide du développeur: éléments de conception
+  - zoom sur certains éléments techniques bons à connaitre pour faire
+    évoluer le KERNEL sans tout casser.
+  - les ressources du kernel:
+    - trace, debug, exception (cf. kernel_ressources.tex)
+    - classes batch (présentation puis renvoi à la doc d'Ivan)
+  - développement de tests unitaires
+
+Developer's guide - managing the development space
+==================================================
+
+- Guide du développeur: gestion de l'espace de développement
+  - principe de mise en oeuvre (rôle des étapes: build_configure, ...)
+  - description des fichiers m4 et du principe de mise en oeuvre
+  - les Makefile.in, ... (cf. doc guide du développeur).
+  - évolution des procédures de construction
+  - personalisation des procédures de construction
+
+Developer' guide - integration tools
+==================================== 
+- Guide de l'intégrateur (développeur de nouveaux modules)
+(on lui montre ici le principe de construction et les ressources à
+disposition pour faire le travail)
+  - création d'un modules
+  - intégration code boîte noire (perfect, solver)
+  - intégration bibliothèque de fonctions (hxx2salome, voir avec
+    N.Crouzet)
+  - intégration de modèles de données (xdata) 
+
+
+End user's guide
+================
+- Guide de l'utilisateur
+  - concept d'application (renvoie doc Paul)
+  - commandes avancées (showNS, exemple de contact de la
+    session, d'un engine, utilisation du lifeCycle, du module salome,
+    des modules geompy et smesh)
+  - utilisation en mode distribué (doc de B. Sechet)
+  - GUI and TUI documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RST Exemples
+============
+
+See INSTALL_ for general information on required configuration and 
+prerequisites, compilation procedure, setting environment principles.
+
+.. _INSTALL: ./INSTALL.html
+
+
+-------------------------------------------------------------------------------
+
++----------------------------------+------------------------------------------+
+| `General KERNEL documentation`_  | `End User KERNEL Doxygen documentation`_ |
++----------------------------------+------------------------------------------+
+
+.. _`General KERNEL documentation`:           ./index.html
+.. _`End User KERNEL Doxygen documentation`:  ./tui/KERNEL/index.html
diff --git a/idl/Makefile.am b/idl/Makefile.am
new file mode 100644 (file)
index 0000000..a09c9c6
--- /dev/null
@@ -0,0 +1,147 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+#
+# This Makefile is responsible of generating the client and server
+# implementation of IDL interfaces for both C++ and python usage.
+# The building process of the C++ files is in charge of each source
+# package and then is not manage here.
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+BASEIDL_FILES = \
+  SALOME_Exception.idl \
+  SALOME_Comm.idl \
+  SALOME_ModuleCatalog.idl \
+  SALOME_RessourcesCatalog.idl \
+  SALOMEDS.idl \
+  SALOMEDS_Attributes.idl \
+  SALOME_Component.idl \
+  SALOME_ContainerManager.idl \
+  SALOME_TestComponent.idl \
+  SALOME_Registry.idl \
+  Logger.idl \
+  SALOME_GenericObj.idl \
+  SALOME_Session.idl \
+  SALOME_TestModuleCatalog.idl \
+  nstest.idl
+
+MPIIDL_FILES = \
+  SALOME_MPIObject.idl \
+  SALOME_MPIContainer.idl \
+  SALOME_TestMPIComponent.idl  
+
+IDL_FILES = $(BASEIDL_FILES)
+if MPI_IS_OK
+  IDL_FILES += $(MPIIDL_FILES)
+endif
+
+# all the idl files are needed for make dist
+EXTRA_DIST= $(BASEIDL_FILES) $(MPIIDL_FILES)
+
+# This variable defines the files to be installed
+salomeidl_DATA = $(IDL_FILES)
+
+# Sources built from idl files
+# BUILT_SOURCE = first thing done on make all
+# idl dependencies are checked and rebuilt first
+
+BASEIDL_SOURCES =\
+  SALOME_ExceptionSK.cc \
+  SALOME_CommSK.cc \
+  SALOME_ModuleCatalogSK.cc \
+  SALOME_RessourcesCatalogSK.cc \
+  SALOMEDSSK.cc \
+  SALOMEDS_AttributesSK.cc \
+  SALOME_ComponentSK.cc \
+  SALOME_ContainerManagerSK.cc \
+  SALOME_TestComponentSK.cc \
+  SALOME_RegistrySK.cc \
+  LoggerSK.cc \
+  SALOME_GenericObjSK.cc \
+  SALOME_SessionSK.cc \
+  SALOME_TestModuleCatalogSK.cc \
+  nstestSK.cc
+
+MPIIDL_SOURCES = \
+  SALOME_MPIObjectSK.cc \
+  SALOME_MPIContainerSK.cc \
+  SALOME_TestMPIComponentSK.cc  
+
+IDL_SOURCES = $(BASEIDL_SOURCES)
+if MPI_IS_OK
+  IDL_SOURCES += $(MPIIDL_SOURCES)
+endif
+
+BUILT_SOURCES = $(IDL_SOURCES)
+
+lib_LTLIBRARIES = libSalomeIDLKernel.la
+nodist_libSalomeIDLKernel_la_SOURCES = $(BUILT_SOURCES)
+libSalomeIDLKernel_la_CPPFLAGS =\
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+libSalomeIDLKernel_la_LDFLAGS = -no-undefined -version-info=0:0:0
+libSalomeIDLKernel_la_LIBADD  = @CORBA_LIBS@
+
+# These variables defines the building process of CORBA files
+OMNIORB_IDL         = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/salome/idl
+IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/salome/idl
+IDLPYFLAGS  = @IDLPYFLAGS@
+
+# potential problem on parallel make on the following - multiple outputs
+SUFFIXES = .idl .hh SK.cc
+.idlSK.cc:
+       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+.idl.hh:
+       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+
+install-exec-local: $(IDL_FILES:%=$(top_srcdir)/idl/%)
+       $(INSTALL) -d  $(pkgpythondir)
+       ls $^ | while read file; do \
+         $(OMNIORB_IDL) $(IDLPYFLAGS) -C$(pkgpythondir) $$file ; \
+       done
+
+# uninstall-local removes too much, but it works in distcheck
+uninstall-local:
+       rm -rf $(pkgpythondir)/*
+
+mostlyclean-local:
+       -rm -f *.hh *.cc .depidl
+
+# we use cpp to generate dependencies between idl files.
+# option x c tells the preprocessor to consider idl as a c file.
+# if an idl is modified, all idl dependencies are rebuilt
+
+.depidl: $(IDL_FILES)
+       @echo "" > $@
+       @for dep in $^ dummy; do \
+         if [ $$dep != "dummy" ]; then \
+           echo Building dependencies for $$dep; \
+           $(CPP) $(C_DEPEND_FLAG) -x c -I$(srcdir) $$dep 2>/dev/null | \
+           sed 's/\.o/\SK.cc/' >>$@; \
+         fi; \
+       done ;
+
+-include .depidl
+
diff --git a/resources/CatalogResources.xml.in b/resources/CatalogResources.xml.in
new file mode 100644 (file)
index 0000000..c83cafa
--- /dev/null
@@ -0,0 +1,48 @@
+<!DOCTYPE ResourcesCatalog>
+<resources>
+
+<machine hostname="is111790" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_@VERSION@" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_@VERSION@" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_@VERSION@" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_@VERSION@" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_@VERSION@" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+<machine hostname="is111915" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_@VERSION@" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_@VERSION@" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_@VERSION@" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_@VERSION@" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_@VERSION@" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+<machine hostname="is111918" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_@VERSION@" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_@VERSION@" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_@VERSION@" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_@VERSION@" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_@VERSION@" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+<machine hostname="is111996" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_@VERSION@" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_@VERSION@" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_@VERSION@" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_@VERSION@" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_@VERSION@" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+</resources>
diff --git a/resources/DEPRECATED/Plugin.in b/resources/DEPRECATED/Plugin.in
new file mode 100755 (executable)
index 0000000..3d4fad5
--- /dev/null
@@ -0,0 +1,10 @@
+! Description of available plugins
+! ********************************
+!
+a148e300-5740-11d1-a904-080036aaa103.Location: FWOSPlugin
+!
+! standard attribute drivers plugin
+!
+ad696000-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
+ad696001-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
+ad696002-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
diff --git a/resources/KERNELCatalog.xml.in b/resources/KERNELCatalog.xml.in
new file mode 100644 (file)
index 0000000..02afa40
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version='1.0' encoding='us-ascii' ?>
+<!-- XML component catalog -->
+<begin-catalog>
+
+<!-- Path prefix information -->
+
+<path-prefix-list>
+</path-prefix-list>
+
+<!-- Component list -->
+<component-list>
+       <component>
+               <!-- Component identification -->
+               <component-name>KERNEL</component-name>
+               <component-username>Salome</component-username>
+               <component-type>Other</component-type>
+               <component-author>NRI</component-author>
+               <component-version>@VERSION@</component-version>
+               <component-comment>GUI Neutral Context</component-comment>
+               <component-multistudy>1</component-multistudy>
+
+       <constraint>hostname = muna</constraint>
+       </component>
+       <component>
+               <component-name>SalomeTestComponent</component-name>
+               <component-username>SalomeTestComponent</component-username>
+               <component-type>Other</component-type>
+               <component-author>NRI</component-author>
+               <component-version>@VERSION@</component-version>
+               <component-comment>GUI Neutral Context</component-comment>
+               <component-multistudy>1</component-multistudy>
+               <constraint>'linux' ~ OS</constraint>
+       </component>
+       <component>
+               <component-name>SALOME_TestComponentPy</component-name>
+               <component-username>SALOME_TestComponentPy</component-username>
+               <component-type>Other</component-type>
+               <component-author>NRI</component-author>
+               <component-version>@VERSION@</component-version>
+               <component-comment>GUI Neutral Context</component-comment>
+               <component-multistudy>1</component-multistudy>
+               <constraint>'linux' ~ OS</constraint>
+       </component>
+</component-list>
+</begin-catalog>
diff --git a/resources/Makefile.am b/resources/Makefile.am
new file mode 100644 (file)
index 0000000..0c5dca9
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+# -* Makefile *- 
+#
+# Author : Guillaume Boulant (CSSI)
+# Module : KERNEL 
+# $Header$
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+DEPRECATED_FILES=\
+       DEPRECATED/Plugin
+
+dist_salomeres_DATA=\
+       CatalogResources.xml \
+       config \
+       channel.cfg \
+       KERNELCatalog.xml \
+       SALOMEDS_Resources \
+       $(DEPRECATED_FILES)
diff --git a/salome_adm/Makefile.am b/salome_adm/Makefile.am
new file mode 100644 (file)
index 0000000..7ae83a6
--- /dev/null
@@ -0,0 +1,19 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+SUBDIRS = unix
diff --git a/salome_adm/unix/DEPRECATED/Doxyfile b/salome_adm/unix/DEPRECATED/Doxyfile
new file mode 100644 (file)
index 0000000..df82af0
--- /dev/null
@@ -0,0 +1,829 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+
+# Doxyfile 1.2.8.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# General 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           = 
+
+# 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         = 
+
+# 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, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, 
+# German, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, 
+# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish.
+
+OUTPUT_LANGUAGE        = English
+
+# 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            = YES
+
+# 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 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 class will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = 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
+
+# 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 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.
+
+STRIP_FROM_PATH        = 
+
+# 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 CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a class diagram (in Html and LaTeX) for classes with base or 
+# super classes. Setting the tag to NO turns the diagrams off.
+
+CLASS_DIAGRAMS         = YES
+
+# 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.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = YES
+
+# 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 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 adviced to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# 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 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 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
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments  will behave just like the Qt-style comments (thus requiring an 
+# explict @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = 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 
+# reimplements.
+
+INHERIT_DOCS           = 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       = 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
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# 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
+
+# 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                = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consist 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 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 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                  = NO
+
+# 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
+
+# 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            = 
+
+# 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                  = /home01/prascle/devSalome/rootsrc
+
+# 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 all files are included.
+
+FILE_PATTERNS          = *idl *.cxx *.hxx *.hh *.h *.c *.cc *.py
+
+# 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                = 
+
+# 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       = 
+
+# 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 <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> 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.
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# 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     = NO
+
+# 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    = 5
+
+# 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          = 
+
+#---------------------------------------------------------------------------
+# 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            = /home01/prascle/devSalome/doc/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
+
+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 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 and frames is required (for instance Netscape 4.0+ 
+# or Internet explorer 4.0+).
+
+GENERATE_TREEVIEW      = NO
+
+# 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           = /home01/prascle/devSalome/doc/latex
+
+# 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
+
+#---------------------------------------------------------------------------
+# 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 optimised 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             = 
+
+# 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 assigments. 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           = NO
+
+# 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             = 
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = 
+
+# 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 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_PREDEF_ONLY 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      = 
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tagfiles.
+
+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       = 
+
+# 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
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# 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 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 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 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 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
+
+# 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 intermedate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions 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           = NO
+
+# The CGI_NAME tag should be the name of the CGI script that 
+# starts the search engine (doxysearch) with the correct parameters. 
+# A script with this name will be generated by doxygen.
+
+CGI_NAME               = 
+
+# The CGI_URL tag should be the absolute URL to the directory where the 
+# cgi binaries are located. See the documentation of your http daemon for 
+# details.
+
+CGI_URL                = 
+
+# The DOC_URL tag should be the absolute URL to the directory where the 
+# documentation is located. If left blank the absolute path to the 
+# documentation, with file:// prepended to it, will be used.
+
+DOC_URL                = 
+
+# The DOC_ABSPATH tag should be the absolute path to the directory where the 
+# documentation is located. If left blank the directory on the local machine 
+# will be used.
+
+DOC_ABSPATH            = 
+
+# The BIN_ABSPATH tag must point to the directory where the doxysearch binary 
+# is installed.
+
+BIN_ABSPATH            = 
+
+# The EXT_DOC_PATHS tag can be used to specify one or more paths to 
+# documentation generated for other projects. This allows doxysearch to search 
+# the documentation for these projects as well.
+
+EXT_DOC_PATHS          = 
diff --git a/salome_adm/unix/DEPRECATED/F77config.h.in b/salome_adm/unix/DEPRECATED/F77config.h.in
new file mode 100644 (file)
index 0000000..670ac57
--- /dev/null
@@ -0,0 +1,29 @@
+/*----------------------------------------------------------------------------------
+  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+  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.1 of the License. 
+  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 
+  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+------------------------------------------------------------------------------------*/
+
+
+#ifndef F77_FUNC
+
+#define F77_FUNC(name,NAME)  @F77_FUNC_NAME@
+#define F77_FUNC_(name,NAME) @F77_FUNC_NAME_@
+
+#endif
+
diff --git a/salome_adm/unix/DEPRECATED/config.h.in b/salome_adm/unix/DEPRECATED/config.h.in
new file mode 100755 (executable)
index 0000000..19d2851
--- /dev/null
@@ -0,0 +1,350 @@
+/* config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* define if the compiler allows redefinition of stream input and output */
+#undef DEF_IOS_OK
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <bits/sigset.h> header file. */
+#undef HAVE_BITS_SIGSET_H
+
+/* Define to 1 if you have the <bstring.h> header file. */
+#undef HAVE_BSTRING_H
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <dl.h> header file. */
+#undef HAVE_DL_H
+
+/* Define to 1 if you have the <DPS/dpsXclient.h> header file. */
+#undef HAVE_DPS_DPSXCLIENT_H
+
+/* Define if we have a function called "finite" in -lm. */
+#undef HAVE_FINITE
+
+/* Define to 1 if you have the <floatingpoint.h> header file. */
+#undef HAVE_FLOATINGPOINT_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the <fstream> header file. */
+#undef HAVE_FSTREAM
+
+/* Define to 1 if you have the <fstream.h> header file. */
+#undef HAVE_FSTREAM_H
+
+/* Define to 1 if you have the `gethostname' function. */
+#undef HAVE_GETHOSTNAME
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+#undef HAVE_IEEEFP_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <iomanip> header file. */
+#undef HAVE_IOMANIP
+
+/* Define to 1 if you have the <iomanip.h> header file. */
+#undef HAVE_IOMANIP_H
+
+/* Define to 1 if you have the <ios> header file. */
+#undef HAVE_IOS
+
+/* Define to 1 if you have the <iostream> header file. */
+#undef HAVE_IOSTREAM
+
+/* Define to 1 if you have the <iostream.h> header file. */
+#undef HAVE_IOSTREAM_H
+
+/* Define to 1 if you have the <ios.h> header file. */
+#undef HAVE_IOS_H
+
+/* Define to 1 if you have the <istream> header file. */
+#undef HAVE_ISTREAM
+
+/* Define to 1 if you have the <istream.h> header file. */
+#undef HAVE_ISTREAM_H
+
+/* Define to 1 if you have the <libc.h> header file. */
+#undef HAVE_LIBC_H
+
+/* Define to 1 if you have the `e' library (-le). */
+#undef HAVE_LIBE
+
+/* Define to 1 if you have the `inks' library (-links). */
+#undef HAVE_LIBINKS
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define if we have a function called "mallinfo" in -lmalloc. */
+#undef HAVE_MALLINFO
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <ndir.h> header file. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#undef HAVE_NET_IF_H
+
+/* Define to 1 if you have the <osfcn.h> header file. */
+#undef HAVE_OSFCN_H
+
+/* Define to 1 if you have the <ostream> header file. */
+#undef HAVE_OSTREAM
+
+/* Define to 1 if you have the <ostream.h> header file. */
+#undef HAVE_OSTREAM_H
+
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define to 1 if you have the `regcomp' function. */
+#undef HAVE_REGCOMP
+
+/* Define to 1 if you have the `re_comp' function. */
+#undef HAVE_RE_COMP
+
+/* Define to 1 if you have the <sigfpe.h> header file. */
+#undef HAVE_SIGFPE_H
+
+/* Define to 1 if you have the <siginfo.h> header file. */
+#undef HAVE_SIGINFO_H
+
+/* Define to 1 if you have the <signal.h> header file. */
+#undef HAVE_SIGNAL_H
+
+/* Define to 1 if you have the `statfs' function. */
+#undef HAVE_STATFS
+
+/* Define to 1 if you have the `statvfs' function. */
+#undef HAVE_STATVFS
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcspn' function. */
+#undef HAVE_STRCSPN
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the <stream.h> header file. */
+#undef HAVE_STREAM_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <strstream.h> header file. */
+#undef HAVE_STRSTREAM_H
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define if we have a function called "ieee_handler" in -lsunmath. */
+#undef HAVE_SUNMATH
+
+/* Define to 1 if you have the <sysent.h> header file. */
+#undef HAVE_SYSENT_H
+
+/* Define to 1 if you have the <sys/dir.h> header file. */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+#undef HAVE_SYS_FILIO_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+#undef HAVE_SYS_IPC_H
+
+/* Define to 1 if you have the <sys/machsig.h> header file. */
+#undef HAVE_SYS_MACHSIG_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file. */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/sem.h> header file. */
+#undef HAVE_SYS_SEM_H
+
+/* Define to 1 if you have the <sys/siginfo.h> header file. */
+#undef HAVE_SYS_SIGINFO_H
+
+/* Define to 1 if you have the <sys/signal.h> header file. */
+#undef HAVE_SYS_SIGNAL_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#undef HAVE_SYS_STATVFS_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/systeminfo.h> header file. */
+#undef HAVE_SYS_SYSTEMINFO_H
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#undef HAVE_SYS_TIMES_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/unistd.h> header file. */
+#undef HAVE_SYS_UNISTD_H
+
+/* Define to 1 if you have the <sys/utsname.h> header file. */
+#undef HAVE_SYS_UTSNAME_H
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+#undef HAVE_SYS_VFS_H
+
+/* Define to 1 if you have the <sys/vnode.h> header file. */
+#undef HAVE_SYS_VNODE_H
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the <values.h> header file. */
+#undef HAVE_VALUES_H
+
+/* Define to 1 if you have the <X11/extensions/multibuf.h> header file. */
+#undef HAVE_X11_EXTENSIONS_MULTIBUF_H
+
+/* Define to 1 if you have the <X11/extensions/readdisplay.h> header file. */
+#undef HAVE_X11_EXTENSIONS_READDISPLAY_H
+
+/* Define to 1 if you have the <X11/extensions/transovl.h> header file. */
+#undef HAVE_X11_EXTENSIONS_TRANSOVL_H
+
+/* Define to 1 if you have the <Xmu/Editres.h> header file. */
+#undef HAVE_XMU_EDITRES_H
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* define if the class ostream has member function form */
+#undef OSTREAM_FORM_OK
+
+/* 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 if compiler has function prototypes */
+#undef PROTOTYPES
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* define if the function semctl takes a value */
+#undef SEMCTL_NO_REFERENCE
+
+/* define if the function semop takes a value */
+#undef SEMOP_NO_REFERENCE
+
+/* define if semun has member __buf */
+#undef SEMUN_BUF_DEFINED
+
+/* define if the union semun is in sys/sem.h */
+#undef SEMUN_DEFINED
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at run-time.
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to 1 if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
diff --git a/salome_adm/unix/DEPRECATED/depend.in b/salome_adm/unix/DEPRECATED/depend.in
new file mode 100644 (file)
index 0000000..080bf9a
--- /dev/null
@@ -0,0 +1,88 @@
+##                                                             -*- makefile -*-
+
+## We keep a list of dependencies in `.depend' for each of the source
+## files on which it depends.  When one of the source files is modified
+## we remove its record from .depend and regenerate its dependencies,
+## tacking them onto the end of .depend.  By including the .depend file
+## into the makefile, we're telling make that the makefile depends on
+## the dependency list in the .depend file.
+##
+## This is as fast as the `.d' method described in the GNU make manual
+## for automatic dependencies, but has the added advantage that all
+## dependencies are stored in one place.  The advantage over the
+## `makedepend' program is that only those files that are out of date
+## have dependency information rebuilt, and the Makefile is not
+## modified.
+##
+## This is also where tracing information is updated.  The $(TRACE)
+## program is run on each source file to make sure that the H5TRACE()
+## macros are up to date.  If they are then the file is not modified,
+## otherwise the file is changed and a backup is saved by appending a
+## tilde to the file name.
+##
+$(srcdir)/Dependencies: .depend
+       @if test "$(srcdir)" != "."; then                                     \
+           echo '## This file is machine generated on GNU systems.' >$@;     \
+           echo '## Only temporary changes may be made here.' >>$@;          \
+           echo >>$@;                                                        \
+           perl -p $(top_srcdir)/bin/distdep .depend >>$@;                   \
+       else                                                                  \
+           echo 'Dependencies cannot be built when $$srcdir == $$builddir';  \
+       fi
+
+depend:.depend
+
+# when use the path as regexp, prevent taking "." for "any symbol"
+srcdir_re = $(subst .,[.],$(srcdir))
+top_srcdir_re = $(subst .,[.],$(top_srcdir))
+top_builddir_re = $(subst .,[.],$(top_builddir))
+
+# we had Makefile target, because we want Makefile rebuild before include .depend
+.depend: $(LIB_DEP) $(TEST_SRC) $(BIN_DEP)
+       @touch .depend
+       @for dep in X $? ; do                                                 \
+          if [ $$dep != "X" ]; then                                          \
+          if [ $$dep != "Makefile" ]; then                                   \
+             case "$$dep" in                                                 \
+                *.c)                                                         \
+                   echo Building dependencies for $$dep;                     \
+                   obj=`basename $$dep .c`.lo;                               \
+                   sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@;   \
+                   $(CC) $(C_DEPEND_FLAG) $(CPPFLAGS) $$dep 2>/dev/null |    \
+                        sed 's% $(srcdir_re)/% $$(srcdir)/%g' |                      \
+                        sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' |              \
+                        sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' |      \
+                       sed 's/\.o/.lo/' >>$@;                                \
+                   ;;                                                        \
+                *.cc)                                                        \
+                   echo Building dependencies for $$dep;                     \
+                   obj=`basename $$dep .cc`.lo;                              \
+                   sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@;   \
+                   $(CXX) $(CXX_DEPEND_FLAG) $(CXXFLAGS) $(CPPFLAGS) $$dep 2>/dev/null | \
+                        sed 's% $(srcdir_re)/% $$(srcdir)/%g' |                      \
+                        sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' |              \
+                        sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' |      \
+                       sed 's/\.o/.lo/' >>$@;                                \
+                   ;;                                                        \
+                *.cxx)                                                       \
+                   echo Building dependencies for $$dep;                     \
+                   obj=`basename $$dep .cxx`.lo;                             \
+                   sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@;   \
+                   $(CXX) $(CXX_DEPEND_FLAG) $(CXXFLAGS) $(CPPFLAGS) $$dep 2>/dev/null | \
+                        sed 's% $(srcdir_re)/% $$(srcdir)/%g' |                      \
+                        sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' |              \
+                        sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' |      \
+                       sed 's/\.o/.lo/' >>$@;                                \
+                   ;;                                                        \
+             esac;                                                           \
+          fi;                                                                \
+          fi;                                                                \
+       done;
+
+
+-include .depend
+
+# idl depend
+-include $(top_builddir)/idl/.depidl
+
+
diff --git a/salome_adm/unix/DEPRECATED/envScript.in b/salome_adm/unix/DEPRECATED/envScript.in
new file mode 100644 (file)
index 0000000..3a05743
--- /dev/null
@@ -0,0 +1,26 @@
+
+DIR=`pwd`
+EXEC_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"`
+cd $EXEC_DIR/..
+SALOME_HOME_DIR=`pwd`
+cd $EXEC_DIR
+
+export SALOME_HOME_DIR      
+SALOME_SRC_DIR=@ROOT_SRCDIR@
+export SALOME_SRC_DIR
+ORB_HOME_DIR=@CORBA_ROOT@
+export ORB_HOME_DIR
+
+LD_LIBRARY_PATH=${SALOME_HOME_DIR}/lib:${LD_LIBRARY_PATH}
+export LD_LIBRARY_PATH
+
+# echo $SALOME_HOME_DIR = SALOME_HOME_DIR
+# echo $SALOME_SRC_DIR = SALOME_SRC_DIR
+
+PYVTK_PATH=@VTKPY_MODULES@
+PYTHONPATH=${PYTHONPATH}:${SALOME_HOME_DIR}/idl:${SALOME_HOME_DIR}/bin:${SALOME_HOME_DIR}/lib:${PYVTK_PATH}:${EXEC_DIR}
+export PYTHONPATH
+
+MICORC=/dev/null
+export MICORC
+
diff --git a/salome_adm/unix/DEPRECATED/make_commence.in b/salome_adm/unix/DEPRECATED/make_commence.in
new file mode 100644 (file)
index 0000000..55199bf
--- /dev/null
@@ -0,0 +1,261 @@
+# common directories to put headerfiles
+inc_builddir=$(top_builddir)/include/salome
+
+@SET_MAKE@
+# Modifcation B. Secher portage sur osf
+SHELL=@SHELL@
+
+# header missing
+
+HAVE_SSTREAM=@HAVE_SSTREAM@
+
+
+LIBS=@LIBS@ 
+LIBSFORBIN=@LIBS@
+LDFLAGS=@LDFLAGS@  -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome
+LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome
+# add libstdc++ to link c++ library with libtool !
+LDFLAGS+= @STDLIB@
+LDFLAGSFORBIN+= @STDLIB@
+
+#CP=@CP@
+
+# CPP
+
+CPP=@CPP@
+CXXCPP=@CXXCPP@
+CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
+
+# C
+
+CC = @CC@
+CFLAGS = @CFLAGS@
+C_DEPEND_FLAG = @C_DEPEND_FLAG@
+
+# C++
+
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@
+CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
+
+# BOOST Library
+
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LIBSUFFIX = @BOOST_LIBSUFFIX@
+BOOST_LIBS = @BOOST_LIBS@
+
+# OpenPBS
+
+OPENPBS_INCLUDES = @OPENPBS_INCLUDES@
+OPENPBS_LIBDIR   = @OPENPBS_LIBDIR@
+OPENPBS_LIBS     = @OPENPBS_LIBS@
+
+# LSF
+
+LSF_INCLUDES = @LSF_INCLUDES@
+LSF_LIBDIR   = @LSF_LDFLAGS@
+LSF_LIBS     = @LSF_LIBS@
+
+# CPPUNIT
+
+CPPUNIT_INCLUDES = @CPPUNIT_INCLUDES@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+
+# PYTHON
+
+PYTHON = @PYTHON@
+PYTHONHOME = @PYTHONHOME@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_VERSION = @PYTHON_VERSION@
+PYTHON_SITE = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages
+PYTHON_SITE_INSTALL = $(prefix)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome
+
+# QT
+QT_ROOT = @QT_ROOT@
+QT_INCLUDES = @QT_INCLUDES@
+QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT
+QT_LIBS = @QT_LIBS@
+QT_MT_LIBS = @QT_MT_LIBS@
+QT_VERS = @QT_VERS@
+
+MOC = @MOC@
+UIC = @UIC@
+
+# msg2qm
+MSG2QM = @MSG2QM@
+
+#QWT
+
+QWT_INCLUDES=@QWT_INCLUDES@
+QWT_LIBS=@QWT_LIBS@
+
+# SIP
+SIP = @SIP@
+SIP_INCLUDES = @SIP_INCLUDES@
+SIP_LIBS = @SIP_LIBS@
+SIP_VERS = @SIP_VERS@
+
+# PYQT
+PYQT_SIPS = @PYQT_SIPS@
+PYQT_LIBS = @PYQT_LIBS@
+PYQT_INCLUDES = @PYQT_INCLUDES@
+PYUIC = @PYUIC@
+PYQT_SIPFLAGS = @PYQT_SIPFLAGS@
+
+# openGL
+OGL_INCLUDES=@OGL_INCLUDES@
+OGL_LIBS=@OGL_LIBS@
+
+# VTK
+VTK_INCLUDES=@VTK_INCLUDES@
+VTK_LIBS=@VTK_LIBS@
+
+# HDF5
+
+HDF5_INCLUDES=@HDF5_INCLUDES@
+HDF5_LIBS=@HDF5_LIBS@
+HDF5_MT_LIBS=@HDF5_MT_LIBS@
+
+# OpenCasCade
+
+OCC_INCLUDES=@CAS_CPPFLAGS@
+OCC_CXXFLAGS=@CAS_CXXFLAGS@
+
+CAS_KERNEL=@CAS_KERNEL@
+CAS_MATH=@CAS_MATH@
+CAS_OCAF=@CAS_OCAF@
+CAS_OCAFVIS=@CAS_OCAFVIS@
+CAS_TKTopAlgo=@CAS_TKTopAlgo@
+CAS_VIEWER=@CAS_VIEWER@
+CAS_MODELER=@CAS_MODELER@
+CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@
+CAS_LDPATH=@CAS_LDPATH@
+
+# MPI
+
+MPI_INCLUDES=@MPI_INCLUDES@
+MPI_LIBS=@MPI_LIBS@
+
+# Swig C++ Python
+
+SWIG       = @SWIG@
+SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
+
+# OMNIORB
+
+OMNIORB_ROOT        = @OMNIORB_ROOT@
+OMNIORB_INCLUDES    = @OMNIORB_INCLUDES@
+OMNIORB_LIBS        = @OMNIORB_LIBS@
+OMNIORB_CXXFLAGS    = @OMNIORB_CXXFLAGS@
+
+OMNIORB_IDL         = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/salome/idl
+
+OMNIORB_IDL_CLN_H   = @OMNIORB_IDL_CLN_H@
+OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
+OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@
+
+OMNIORB_IDL_SRV_H   = @OMNIORB_IDL_SRV_H@
+OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@
+OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@
+
+# Default ORB
+
+CORBA_ROOT        = @CORBA_ROOT@
+CORBA_INCLUDES    = @CORBA_INCLUDES@
+CORBA_LIBS        = @CORBA_LIBS@
+CORBA_CXXFLAGS    = @CORBA_CXXFLAGS@
+
+IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/salome/idl
+IDLPYFLAGS  = @IDLPYFLAGS@
+
+IDL = @IDL@
+
+IDL_CLN_H   = @IDL_CLN_H@
+IDL_CLN_CXX = @IDL_CLN_CXX@
+IDL_CLN_OBJ = @IDL_CLN_OBJ@
+
+IDL_SRV_H   = @IDL_SRV_H@
+IDL_SRV_CXX = @IDL_SRV_CXX@
+IDL_SRV_OBJ = @IDL_SRV_OBJ@
+
+CPPFLAGS+= $(CORBA_INCLUDES) 
+CXXFLAGS+= $(CORBA_CXXFLAGS)
+
+# add corba libs when link salome application ! 
+#LDFLAGS+= $(CORBA_LIBS)
+LIBS+=$(CORBA_LIBS)
+LIBSFORBIN+=$(CORBA_LIBS)
+
+DOXYGEN = @DOXYGEN@
+
+## Shared libraries
+#LT_STATIC_EXEC=@LT_STATIC_EXEC@
+#DYNAMIC_DIRS=@DYNAMIC_DIRS@
+LT_LIB=libtool
+LT=$(top_builddir)/libtool
+LT_COMPILE=$(LT) --mode=compile $(CC)
+LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir)
+LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS)
+LT_RUN=$(LT) --mode=execute
+LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM)
+LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA)
+LT_UNINSTALL=$(LT) --mode=uninstall $(RM)
+
+INSTALL=@INSTALL@
+INSTALL_PROGRAM=@INSTALL_PROGRAM@
+INSTALL_DATA=@INSTALL_DATA@
+
+# create a symbolic link (or a copie ?)
+LN_S=@LN_S@
+
+KERNEL_ROOT_DIR=@KERNEL_ROOT_DIR@
+KERNEL_SITE_DIR=@KERNEL_SITE_DIR@
+KERNEL_LDFLAGS=@KERNEL_LDFLAGS@
+KERNEL_CXXFLAGS=@KERNEL_CXXFLAGS@
+
+## Installation points
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@exec_prefix@/bin/salome
+libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome
+# warning : if user give this path in configure we could have salome/salome :-(
+includedir=@includedir@/salome
+datadir=@datadir@/salome
+idldir=${prefix}/idl/salome
+sharedpydir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+incmakedir=${prefix}/salome_adm/unix
+
+docdir=${prefix}/doc/salome
+
+#
+# begin of package rules
+#
+
+.PHONY: all lib bin inc resources data docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean
+
+.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm
+
+all:
+       $(MAKE) inc
+       $(MAKE) depend_idl
+       $(MAKE) depend
+       $(MAKE) lib
+       $(MAKE) bin
+       $(MAKE) resources
+       $(MAKE) data
+
+#
+# add target to build administrative files
+#
+
+# Building html from restructured text files
+STYLESHEET=rst.css
+RST2HTML=@RST2HTML@
+#RSTOPTS=--output-encoding=latin1 --stylesheet=$(STYLESHEET)
+RSTOPTS=--output-encoding=latin1
+
+%.html: $(srcdir)/%.txt
+       $(RST2HTML) $(RSTOPTS) $< $@
diff --git a/salome_adm/unix/DEPRECATED/make_conclude.in b/salome_adm/unix/DEPRECATED/make_conclude.in
new file mode 100644 (file)
index 0000000..9583f49
--- /dev/null
@@ -0,0 +1,399 @@
+#=======================================================================
+# This section of this makefile comes from the file 
+# 'adm/unix/make_conclude' which was generated with config.status
+# from file adm/unix/make_conclude.in
+#=======================================================================
+# -* Makefile *- 
+#
+# Authors : Patrick GOLDBRONN (CEA) - Marc Tajchman (CEA)
+# Date : 6/07/2001
+# $Header$
+#
+
+# ORB Specifics rules
+@CORBA@
+
+# transform idl reference in appropriate obj file
+LIB_CLIENT_SRC = $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_CXX))
+LIB_SERVER_SRC = $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_CXX))
+LIB_MOC_SRC = $(LIB_MOC:%.h=%_moc.cxx)
+LIB_SRC+=$(LIB_MOC_SRC)
+LIB_SWIG_SRC = $(SWIG_DEF:%.i=%_wrap.cxx)
+LIB_DEP= $(LIB_SRC) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(LIB_SWIG_SRC)
+LIB_CLIENT_OBJ = $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_OBJ))
+LIB_SERVER_OBJ = $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_OBJ))
+
+# transform c file in appropriate libtool obj file (.c, .cc and .cxx)
+LIB_OBJ_C   = $(patsubst %.c,   %.lo, $(filter %.c, $(LIB_SRC))) 
+LIB_OBJ_CC  = $(patsubst %.cc,  %.lo, $(filter %.cc, $(LIB_SRC))) 
+LIB_OBJ_CXX = $(patsubst %.cxx, %.lo, $(filter %.cxx, $(LIB_SRC))) 
+LIB_SWIG_OBJ = $(LIB_SWIG_SRC:%.cxx=%.lo)
+LIB_OBJ_F    = $(patsubst %.f,   %.lo, $(filter %.f, $(LIB_SRC))) 
+
+# all libtool obj file in library
+LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $(LIB_SERVER_OBJ:%.o=%.lo) $(LIB_SWIG_OBJ) $(LIB_OBJ_F)
+
+# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la)
+LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la, $(filter %.la, $(LIB)))
+LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a, $(filter %.a, $(LIB)))
+LIB_BUILD_SO = $(patsubst %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so, $(filter %.so, $(LIB)))
+
+ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),)
+LIB_SWIG = $(patsubst %cmodule.la,%.so, $(filter %.la, $(LIB)))
+else
+LIB_SWIG = 
+endif
+
+lib: $(LIB_BUILD) $(LIB_BUILD_SO) $(LIB_CLIENT_PY)
+# we don't build static library !
+
+$(LIB_BUILD): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.la: %.la
+       -$(RM) $@
+       -$(RM) $(patsubst %.la, %.so, $@)
+       -$(RM) $(patsubst %.la, %.a, $@)
+       ln -sf $(CURDIR)/$< $@ || true
+       ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<) \
+             $(patsubst %.la, %.so, $@) || true
+       ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<).0 \
+             $(patsubst %.la, %.so, $@).0 || true
+
+       if test "X$(LIB_SWIG)" != "X"; then \
+          ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/_$(LIB_SWIG) || true;\
+       fi;
+
+$(LIB_BUILD_A): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.a: %.a
+       -$(RM) $@
+       ln -sf $(CURDIR)/$< $@ || true
+
+$(LIB_BUILD_SO): $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/%.so: %.so
+       -$(RM) $@
+       ln -sf $(CURDIR)/$< $@ || true
+
+$(LIB): $(LIB_OBJ)
+       @$(LT) --mode=link $(CXX) -shared -rpath $(libdir) -o $@ $(CXXFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS)
+
+# transform idl reference in appropriate obj file
+BIN_CLIENT_SRC = $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_CXX))
+BIN_SERVER_SRC = $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_CXX))
+BIN_MOC_SRC = $(BIN_MOC:%.h=%_moc.cxx)
+BIN_SRC+=$(BIN_MOC_SRC)
+BIN_DEP=$(BIN:%=%.cxx) $(BIN_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC)
+
+BIN_CLIENT_OBJ = $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_OBJ))
+BIN_SERVER_OBJ = $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_OBJ)) 
+# transform c file in appropriate libtool obj file (.c)
+BIN_OBJ_C =  $(patsubst %.c,  %.o, $(filter %.c, $(BIN_SRC)))
+# transform c++ file in appropriate libtool obj file (.cc and .cxx)
+BIN_OBJ_CC = $(patsubst %.cc,  %.o, $(filter %.cc, $(BIN_SRC)))
+BIN_OBJ_CXX = $(patsubst %.cxx,  %.o, $(filter %.cxx, $(BIN_SRC)))
+# all obj file in bin target
+BIN_OBJ = $(BIN_OBJ_CC) $(BIN_OBJ_CXX) $(BIN_OBJ_C) $(BIN_CLIENT_OBJ) $(BIN_SERVER_OBJ) 
+
+bin: $(BIN:%=$(top_builddir)/bin/salome/%) $(BIN) $(LIB) pyscripts sharedpyscripts
+
+BIN_LIB=$(LIB:lib%.la=-l%)
+
+$(BIN:%=$(top_builddir)/bin/salome/%) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%): $(top_builddir)/bin/salome/%: %
+       -$(RM) $@
+       ln -sf $(CURDIR)/$< $@
+
+$(BIN) $(TEST_PROGS): %: %.lo $(BIN_OBJ)
+       $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $^ $(BIN_LIB) $(LDFLAGSFORBIN) $(LIBSFORBIN)
+
+# copy python scripts in $(top_builddir)/bin/salome
+#
+
+UI_FILES = $(notdir $(wildcard $(srcdir)/*.ui))
+UI_PY_FILES_PY = $(patsubst %.ui, %.py, $(UI_FILES))
+UI_PY_FILES = $(filter-out $(EXPORT_PYSCRIPTS) ,$(UI_PY_FILES_PY))
+
+DEST_PYSCRIPTS = $(EXPORT_PYSCRIPTS:%=$(top_builddir)/bin/salome/%)
+DEST_UI_PY_FILES = $(UI_PY_FILES:%=$(top_builddir)/bin/salome/%)
+pyscripts: $(DEST_PYSCRIPTS) $(UI_PY_FILES) $(DEST_UI_PY_FILES)
+$(DEST_PYSCRIPTS): $(top_builddir)/bin/salome/%: %
+       cp -f $< $@
+
+# generate generic python scripts from *.ui files
+#
+$(UI_PY_FILES): %.py: %.ui
+       $(PYUIC) $< -o $@
+
+# copy ui-generated python scripts in $(top_builddir)/bin
+#
+$(DEST_UI_PY_FILES): $(top_builddir)/bin/salome/%: %
+       cp -f $< $@
+
+# copy pyqt files in $(PYTHON_SHARED_SITE)
+#
+PYTHON_SHARED_SITE=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+
+$(PYTHON_SHARED_SITE):
+       $(INSTALL) -d  $@
+
+DEST_SHAREDPYSCRIPTS = $(EXPORT_SHAREDPYSCRIPTS:%=$(PYTHON_SHARED_SITE)/%)
+sharedpyscripts: $(PYTHON_SHARED_SITE) $(DEST_SHAREDPYSCRIPTS)
+$(DEST_SHAREDPYSCRIPTS): $(PYTHON_SHARED_SITE)/%: %
+       cp -f $< $@
+
+check: test
+
+tests: unittest
+
+test: $(LIB) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%) 
+
+unittest: 
+       @if test "x$(UNIT_TEST_PROG)" != "x"; then      \
+          $(top_builddir)/bin/salome/$(UNIT_TEST_PROG); \
+       fi;
+
+# copy header file in $(inc_builddir)
+#
+DEST_HEADERS = $(EXPORT_HEADERS:%=$(inc_builddir)/%)
+inc: $(DEST_HEADERS)
+$(DEST_HEADERS): $(inc_builddir)/%: %
+       cp -f $< $@
+
+# build resources file (icons and messages) : .qm file from .po file
+RESOURCES_FILES_ALL := $(notdir $(wildcard $(srcdir)/resources/*))
+RESOURCES_FILES_ALL := $(filter-out CVS, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES_ALL := $(filter-out %.po, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES_ALL := $(filter-out %.in, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES ?= $(RESOURCES_FILES_ALL)
+
+resources: resources-po resources-cp 
+
+resources-po: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+
+resources-cp: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
+
+$(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : %
+       cp -fr $< $@;
+
+# Make installation directories if they don't exist.
+$(libdir) $(includedir) $(bindir) $(datadir) $(idldir) $(sharedpydir):
+       $(INSTALL) -d $@ && chmod 755 $@
+
+# Install the library, the public header files, and programs.
+install: $(LIB) $(BIN) $(TEST_PROGS) $(libdir) $(includedir) $(bindir) $(datadir) $(idldir) install-python install-sharedpyqt install-qm install-res
+       @for f in X $(LIB); do                                                \
+          if test $$f != X; then                                             \
+             ($(LT_INSTALL_LIB) $$f $(libdir)/. || exit 1);                  \
+          fi;                                                                \
+       done
+       @if test "X$(LIB_SWIG)" != "X"; then                                  \
+         (cd $(libdir); ln -sf $(patsubst %.so, %cmodule.so, $(LIB_SWIG)) _$(LIB_SWIG)  || true); \
+        fi;                                                                  
+       @for f in X $(BIN); do                                                \
+          if test $$f != X; then                                             \
+            ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1);                  \
+          fi;                                                                \
+       done
+# Install tests programmes in bindir
+       @for f in X $(TEST_PROGS); do                                         \
+          if test $$f != X; then                                             \
+            ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1);                  \
+          fi;                                                                \
+       done
+# Install exported includes in includedir
+       @for f in X $(EXPORT_HEADERS:%=$(srcdir)/%); do                       \
+          if test $$f != X; then                                             \
+            (cp -p -f $$f $(includedir) || exit 1);                          \
+          fi;                                                                \
+       done
+
+# Install python script in $(bindir)
+install-python: $(bindir) $(EXPORT_PYSCRIPTS:%=install-%) $(UI_PY_FILES:%=install-%)
+
+$(UI_PY_FILES:%=install-%): install-%: %
+       $(INSTALL_PROGRAM) $< $(bindir)/.
+
+$(EXPORT_PYSCRIPTS:%=install-%): install-%: %
+       $(INSTALL_PROGRAM) $< $(bindir)/.
+
+#install-python: $(bindir) $(EXPORT_PYSCRIPTS)
+#      @for f in X $(EXPORT_PYSCRIPTS); do                           \
+#         if test $$f != X; then                                     \
+#           ($(INSTALL_PROGRAM) $$f $(bindir)/. || exit 1);          \
+#         fi;                                                        \
+#      done
+
+# Install pyqt script in $(install-sharedpyqt)
+install-sharedpyqt: $(sharedpydir) $(EXPORT_SHAREDPYSCRIPTS:%=install-%) 
+
+$(EXPORT_SHAREDPYSCRIPTS:%=install-%): install-%: %
+       $(INSTALL_PROGRAM) $< $(sharedpydir)/.
+
+
+# generic rule to install .qm files :
+install-qm: resources
+       $(INSTALL) -d $(datadir)/resources
+       @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm); do \
+          if test $$f != X; then                                                        \
+            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
+          fi;                                                                           \
+       done
+
+# generic rule to install resources files (png, ini ...):
+install-res: resources
+       $(INSTALL) -d $(datadir)/resources
+       @for f in X $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%); do \
+          if test $$f != X; then                                                        \
+            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
+          fi;                                                                           \
+       done  
+
+# Removes those things that `make install' (would have) installed.
+uninstall:
+       @if test "X$(LIB)" != X; then                                         \
+          for f in $(LIB); do                                                \
+             $(LT_UNINSTALL) $(libdir)/$$f;                                  \
+          done;                                                              \
+       fi
+       @if test "X$(BIN)" != X; then                                         \
+          for f in $(BIN); do                                                \
+             $(LT_UNINSTALL) $(bindir)/$$f;                                  \
+          done;                                                              \
+       fi
+       @for f in X $(TEST_PROGS); do                                         \
+          if test $$f != X; then                                             \
+            $(LT_UNINSTALL) $(bindir)/$$f;                                   \
+          fi;                                                                \
+       done
+# Uninstall exported includes in includedir
+       @for f in X $(EXPORT_HEADERS); do                                     \
+          if test $$f != X; then                                             \
+            $(LT_UNINSTALL) $(includedir)/$$f;                               \
+          fi;                                                                \
+       done
+# Uninstall python script in $(bindir)
+       @for f in X $(EXPORT_PYSCRIPTS); do                                   \
+          if test $$f != X; then                                             \
+            $(LT_UNINSTALL) $(bindir)/$$f ;                  \
+          fi;                                                                \
+       done
+
+# Uninstall python script in $(bindir)
+       @for f in X $(UI_PY_FILES); do                                        \
+          if test $$f != X; then                                             \
+            $(LT_UNINSTALL) $(bindir)/$$f ;                  \
+          fi;                                                                \
+       done
+
+# Uninstall pyqt script in $(sharedpydir)
+       @for f in X $(EXPORT_SHAREDPYSCRIPTS); do                                     \
+          if test $$f != X; then                                             \
+            $(LT_UNINSTALL) $(sharedpydir)/$$f ;                     \
+          fi;                                                                \
+       done
+
+# Uninstall qm files
+       @for f in X $(PO_FILES:%.po=%.qm); do         \
+          if test $$f != X; then                                             \
+            $(LT_UNINSTALL) $(datadir)/resources/$$f ;                       \
+          fi;                                                                \
+       done
+
+# remove all dependencies files
+#
+cleandep:
+       -$(RM) .dep*
+
+# Removes temporary files without removing the final target files.  That is,
+# remove things like object files but not libraries or executables.
+#
+mostlyclean: cleandep
+       -$(RM) $(LIB_OBJ) $(LIB_OBJ:.lo=.o)
+       -$(RM) $(BIN_OBJ) $(BIN:%=%.o)
+       -$(RM) $(TEST_OBJ) $(TEST_OBJ:.lo=.o)
+       -$(RM) $(PROG_OBJ) $(PROG_OBJ:.lo=.o) $(MOSTLYCLEAN)
+
+# Like `mostlyclean' except it also removes the final targets: things like
+# libraries and executables.  This target doesn't remove any file that
+# is part of the SALOME distribution.
+#
+clean: mostlyclean
+       -$(RM) $(LIB) $(TEST_PROGS) $(BIN) $(CLEAN)
+       -$(RM) TAGS *~ *# core *.core 
+       -$(RM) -r .libs
+       -$(RM) $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB)
+       -$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN))
+       -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB))
+       -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome/$(LIB))
+# remove idl generated files (sources)
+       -$(RM) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC)
+# remove idl generated files (headers)
+       -$(RM)  $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_H)) $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_H))
+       -$(RM)  $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_H)) $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_H))
+       -$(RM) $(LIB_MOC_SRC) $(BIN_MOC_SRC)
+       -$(RM) $(LIB_SWIG_SRC)
+
+# Like `clean' except it also removes files that were created by running
+# configure.  If you've unpacked the source and built without creating
+# any other files, then `make distclean' will leave only the files that were
+# in the distribution.
+#
+distclean: clean
+       #remove qm file !
+       -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+       #remove include files
+       -$(RM) $(DEST_HEADERS)
+       -$(RM) $(DISTCLEAN) *.bak *.old *.new .dep*
+       @if test -f $(srcdir)/Makefile.in; then                               \
+          (@SETX@; $(RM) Makefile);                                          \
+       fi
+
+
+#implicits rules
+.cc.o:
+       $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.cc.lo:
+       $(LT) --mode=compile $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.cxx.o:
+       $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.cxx.lo:
+       $(LT) --mode=compile $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.c.o:
+       $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
+
+.c.lo:
+       $(LT_COMPILE) $(CFLAGS) $(CPPFLAGS) -c $<
+
+.f.o:
+       $(FC) $(FFLAGS) -c $< -o $@
+
+.f.lo:
+       $(LT) --mode=compile $(FC) $(FFLAGS) -c $<
+
+.ui.h:
+       $(UIC) -o $@  $<
+
+.ui.cxx:
+       $(UIC) -o $@ -i $*.h $<
+
+#pattern rules
+%_moc.cxx : %.h
+       $(MOC) $< -o $@
+
+%_wrap.cxx : %.i
+       $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+$(top_builddir)/share/salome/resources/%.qm: %.po
+       $(MSG2QM) $< $@ ; \
+
+#------------------------------------------------------------------------------
+# The following section of this makefile contains dependencies between the
+# source files and the header files.  If GNU make and GCC are being used then
+# the dependencies are in the form of rules that cause the information to
+# be kept updated automatically.  Otherwise the dependencies are listed
+# explicitly and come from the `.distdep' files in the various directories.
+# These files are part of the distribution and are generated automatically on
+# GNU/GCC systems.
+#------------------------------------------------------------------------------
+
+@DEPEND@
diff --git a/salome_adm/unix/DEPRECATED/make_module.in b/salome_adm/unix/DEPRECATED/make_module.in
new file mode 100644 (file)
index 0000000..bb26129
--- /dev/null
@@ -0,0 +1,126 @@
+# generic rule to put in top module Makefile 
+# (for example with module SALOME, SALOME/Makefile.in and SALOME/src/Makefile.in)
+
+# build all lib in all subdir
+lib:$(SUBDIRS:%=lib_%)
+
+$(SUBDIRS:%=lib_%):lib_%:%
+       cd $< ; $(MAKE) lib
+
+# build all bin in all subdir
+bin:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+# launch check in all subdir
+check: tests
+tests:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+# copy all header files in common directory
+inc:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+exportinc:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+# copy all idl files in common directory
+idl:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+dep: depend
+
+depend:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+# copy all resources files in common directory
+RESOURCES_FILES_ALL := $(notdir $(wildcard $(srcdir)/resources/*))
+RESOURCES_FILES_ALL := $(filter-out CVS, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES_ALL := $(filter-out %.po, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES_ALL := $(filter-out %.in, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES ?= $(RESOURCES_FILES_ALL)
+
+resources: resources-cp
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+resources-cp: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
+
+$(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : %
+       cp -fr $< $@;
+
+#data:
+#      @if test "X$(top_builddir)" = "X."; then                                                         \
+#      ((cd examples && $(MAKE) $@) || exit 1);                         \
+#      fi;
+# Commented because we need not to make docs when we make BUILD        
+# docs:        
+#      @if test "X$(top_builddir)" = "X."; then \
+#      ((cd doc && $(MAKE) $@) || exit 1); \
+#      fi;     
+
+install: install-resources
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+       @if test "X$(top_builddir)" = "X."; then        \
+          $(LT) --mode=finish $(libdir) ;              \
+       fi
+
+uninstall: uninstall-resources
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+cleandep:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+mostlyclean:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+clean:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+       -$(RM) .depend *~ *% core *.core *.bak *.new *.old
+
+distclean: clean
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+       -$(RM) $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
+       -$(RM) Makefile
+
+install-resources: resources-cp
+# one resources directory for all salome modules
+       $(INSTALL) -d $(datadir)/resources
+       @for f in X $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%); do \
+          if test $$f != X; then                                                        \
+            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
+          fi;                                                                           \
+       done
+
+# Uninstall resources files
+uninstall-resources:
+       @for f in X $(RESOURCES_FILES); do            \
+          if test $$f != X; then                                             \
+            $(LT_UNINSTALL) $(datadir)/resources/$$f ;                       \
+          fi;                                                                \
+       done
+
diff --git a/salome_adm/unix/DEPRECATED/make_omniorb.in b/salome_adm/unix/DEPRECATED/make_omniorb.in
new file mode 100644 (file)
index 0000000..c92e682
--- /dev/null
@@ -0,0 +1,50 @@
+#=======================================================================
+# Begin specific part to omniorb 
+# (include from file adm/unix/make_omniorb generated by 
+# adm/unix/make_omniorb.in)
+#=======================================================================
+# -* Makefile *- 
+#
+# Author : Patrick GOLDBRONN (CEA)
+# Date : 29/06/2001
+# $Header$
+#
+
+# Client and server object are the same with omniorb
+# There are one header file and one source file generate
+
+#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ))
+
+# dependancies between idl and it's generated files
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/idl/%.idl
+       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+# dependncies between idl files
+depend_idl: .depidl
+
+# we use cpp to generate dependencies between idl files.
+# we change cpp output to keep only idl file and transform it to get a suitable rule
+.depidl: $(IDL_FILES)
+       @touch $@
+       @for dep in $? dummy; do \
+         if [ $$dep != "dummy" ]; then \
+           echo Building dependencies for $$dep; \
+           basedep=`basename $$dep .idl`; \
+           header="$$basedep"$(IDL_CLN_H); \
+           sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \
+           $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \
+           sed `echo "s%$$basedep\\.idl%$$header:%g"` | \
+           sed 's% $(srcdir)/% %g' | \
+           sed 's% $(top_srcdir)/% %g' | \
+           sed 's% $(top_builddir)/% %g' | \
+           sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \
+           sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \
+           echo ''  >>$@; \
+         fi; \
+       done ;
+
+-include .depidl
+
+#=======================================================================
+# End specific part to omniorb 
+#=======================================================================
diff --git a/salome_adm/unix/DEPRECATED/sstream.in b/salome_adm/unix/DEPRECATED/sstream.in
new file mode 100644 (file)
index 0000000..323bbed
--- /dev/null
@@ -0,0 +1,225 @@
+/* This is part of libio/iostream, providing -*- C++ -*- input/output.
+Copyright (C) 2000 Free Software Foundation
+
+This file is part of the GNU IO Library.  This library 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 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this library; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+As a special exception, if you link this library with files
+compiled with a GNU compiler to produce an executable, this does not cause
+the resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why
+the executable file might be covered by the GNU General Public License. */
+
+/* Written by Magnus Fromreide (magfr@lysator.liu.se). */
+
+#ifndef __SSTREAM__
+#define __SSTREAM__
+
+#include <string>
+#include <iostream.h>
+#include <streambuf.h>
+
+namespace std
+{
+  class stringbuf : public streambuf
+  {
+  public:
+    typedef char       char_type;
+    typedef int                int_type;
+    typedef streampos  pos_type;
+    typedef streamoff  off_type;
+
+    explicit stringbuf(int which=ios::in|ios::out) :
+      streambuf(which), buf(), mode(static_cast<ios::open_mode>(which)),
+      rpos(0), bufsize(1)
+    { }
+       
+    explicit stringbuf(const std::string &s, int which=ios::in|ios::out) :
+      streambuf(which), buf(s), mode(static_cast<ios::open_mode>(which)),
+      bufsize(1)
+    {
+      if(mode & ios::in)
+       {
+         setg(&defbuf, &defbuf + bufsize, &defbuf + bufsize);
+       }
+      if(mode & ios::out)
+       {
+         setp(&defbuf, &defbuf + bufsize);
+       }
+      rpos = (mode & ios::ate ? s.size() : 0);
+    }
+       
+    std::string str() const
+    {
+      const_cast<stringbuf*>(this)->sync();  // Sigh, really ugly hack
+      return buf;
+    };
+
+    void str(const std::string& s)
+    {
+      buf = s;
+      if(mode & ios::in)
+       {
+         gbump(egptr() - gptr());
+       }
+      if(mode & ios::out)
+       {
+         pbump(pbase() - pptr());
+       }
+      rpos = (mode & ios::ate ? s.size() : 0);
+    }
+
+  protected:
+    inline virtual int sync();
+    inline virtual int overflow(int = EOF);
+    inline virtual int underflow();
+  private:
+    std::string                        buf;
+    ios::open_mode             mode;
+    std::string::size_type     rpos;
+    streamsize                 bufsize;
+    char                       defbuf;
+  };
+
+  class stringstreambase : virtual public ios {
+  protected:
+    stringbuf __my_sb;
+  public:
+    std::string str() const
+    {
+      return dynamic_cast<stringbuf*>(_strbuf)->str();
+    }
+    void str(const std::string& s)
+    {
+      clear();
+      dynamic_cast<stringbuf*>(_strbuf)->str(s);
+    }
+       
+    stringbuf* rdbuf()
+    {
+      return &__my_sb;
+    }
+  protected:
+    stringstreambase(int which) :
+      __my_sb(which)
+    {
+      init (&__my_sb);
+    }
+       
+    stringstreambase(const std::string& s, int which) :
+      __my_sb(s, which)
+    {
+      init (&__my_sb);
+    }
+  };
+    
+  class istringstream : public stringstreambase, public istream {
+  public:
+    istringstream(int which=ios::in) :
+      stringstreambase(which)
+    { }
+       
+    istringstream(const std::string& s, int which=ios::in) :
+      stringstreambase(s, which)
+    { }
+  };
+    
+  class ostringstream : public stringstreambase, public ostream {
+  public:
+    ostringstream(int which=ios::out) :
+      stringstreambase(which)
+    { }
+       
+    ostringstream(const std::string& s, int which=ios::out) :
+      stringstreambase(s, which)
+    { }
+  };
+    
+  class stringstream : public stringstreambase, public iostream {
+  public:
+    stringstream(int which=ios::in|ios::out) :
+      stringstreambase(which)
+    { }
+    
+    stringstream(const std::string &s, int which=ios::in|ios::out) :
+      stringstreambase(s, which)
+    { }
+  };
+}
+
+inline int std::stringbuf::sync()
+{
+  if((mode & ios::out) == 0)
+    return EOF;
+
+  streamsize n = pptr() - pbase();
+  if(n)
+    {
+      buf.replace(rpos, std::string::npos, pbase(), n);
+      if(buf.size() - rpos != n)
+       return EOF;
+      rpos += n;
+      pbump(-n);
+      gbump(egptr() - gptr());
+    }
+  return 0;
+}
+
+inline int std::stringbuf::overflow(int ch)
+{
+  if((mode & ios::out) == 0)
+    return EOF;
+
+  streamsize n = pptr() - pbase();
+
+  if(n && sync())
+    return EOF;
+
+  if(ch != EOF)
+    {
+      std::string::size_type oldSize = buf.size();
+      
+      buf.replace(rpos, std::string::npos, ch);
+      if(buf.size() - oldSize != 1)
+       return EOF;
+      ++rpos;
+    }
+  return 0;
+}
+
+inline int std::stringbuf::underflow()
+{
+  sync();
+  if((mode & ios::in) == 0)
+    {
+      return EOF;
+    }
+  if(rpos >= buf.size())
+    {
+      return EOF;
+    }
+  
+  std::string::size_type n = egptr() - eback();
+  std::string::size_type s;
+
+  s = buf.copy(eback(), n, rpos);
+  pbump(pbase() - pptr());
+  gbump(eback() - gptr());
+  int res = (0377 & buf[rpos]);
+  rpos += s;
+  return res;
+}
+
+#endif /* not __STRSTREAM__ */
diff --git a/salome_adm/unix/Makefile.am b/salome_adm/unix/Makefile.am
new file mode 100644 (file)
index 0000000..195941b
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+SUBDIRS = config_files
+
+DEPRECATED_FILES=\
+       DEPRECATED/F77config.h.in \
+       DEPRECATED/sstream.in \
+       DEPRECATED/envScript.in \
+       DEPRECATED/depend.in \
+       DEPRECATED/make_commence.in \
+       DEPRECATED/make_conclude.in \
+       DEPRECATED/make_module.in \
+       DEPRECATED/make_omniorb.in
+
+# rules for install and build (see make_common_starter.am)
+salomeadmux_DATA = SALOMEconfig.h.in
+BUILT_SOURCES=SALOMEconfig.h SALOMEconfig.h.in
+
+mostlyclean-local:
+       -rm -rf SALOMEconfig.h SALOMEconfig.h.in
+
+SALOMEconfig.h.in : SALOMEconfig.ref.in
+       cp -p $< $@;
+
+# test if SALOMEconfig.ref has changed (contents), at build time
+SALOMEconfig.h: $(top_builddir)/salome_adm/unix/SALOMEconfig.ref
+       @if ! [ -a $@ ]; then \
+         cp -p $< $@;        \
+       fi;                   \
+       if ! cmp $< $@; then  \
+         cp -p $< $@;        \
+       fi;
+
+# The deprecated files are deprecated for the KERNEL but not for the
+# related modules (GUI, MED, ...), for now. Some files have to be installed.
+dist_salomeadmux_DATA=\
+       pythonbe.py \
+       $(DEPRECATED_FILES)
diff --git a/salome_adm/unix/SALOMEconfig.ref.in b/salome_adm/unix/SALOMEconfig.ref.in
new file mode 100644 (file)
index 0000000..22372e9
--- /dev/null
@@ -0,0 +1,57 @@
+/*----------------------------------------------------------------------------------
+  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+  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.1 of the License. 
+  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 
+  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+------------------------------------------------------------------------------------*/
+
+#ifndef SALOME_CONFIG_H
+#define SALOME_CONFIG_H
+
+#define DEBUG
+
+#define QUOTE(x)  #x
+#define CORBA_CLIENT_HEADER(x)  QUOTE(x@IDL_CLN_H@)
+#define CORBA_SERVER_HEADER(x)  QUOTE(x@IDL_SRV_H@)
+
+#ifndef @MACHINE@
+  #define @MACHINE@
+#endif
+
+
+/* A path to a rcp-like command */
+#define RCP "@RCP@"
+
+/* A path to a rm-like command */
+#define RM "@RM@"
+
+/* A path to a cp-like command */
+#define CP "@CP@"
+
+/* A path to a rsh-like command */
+#define RSH "@RSH@"
+
+/* A path to a scp-like command */
+#define SCP "@SCP@"
+
+/* A path to a sh-like command */
+#define SH "@SH@"
+
+/* A path to a ssh-like command */
+#define SSH "@SSH@"
+
+#endif
diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cc_warnings.m4
new file mode 100644 (file)
index 0000000..9f3aa1a
--- /dev/null
@@ -0,0 +1,119 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+dnl Synopsis :    AC_CC_WARNINGS([ANSI]) 
+dnl 
+dnl Version  :    1.1 (2000/12/31) 
+dnl 
+dnl Author   :    Ville Laurikari <vl@iki.fi> 
+dnl 
+dnl Description :
+dnl 
+dnl         Enables a reasonable set of warnings for the C compiler. 
+dnl         Optionally, if the first argument is nonempty, turns on 
+dnl         flags which enforce and/or enable proper ANSI C if such 
+dnl         flags are known to the compiler used. 
+dnl 
+dnl         Currently this macro knows about GCC, Solaris C compiler, 
+dnl         Digital Unix C compiler, C for AIX Compiler, HP-UX C
+dnl         compiler, and IRIX C compiler.
+
+AC_DEFUN([AC_CC_WARNINGS], [
+  ansi=$1
+  if test -z "$ansi"; then
+    msg="for C compiler warning flags"
+  else
+    msg="for C compiler warning and ANSI conformance flags"
+  fi
+  AC_CACHE_CHECK($msg, ac_cv_prog_cc_warnings, [
+    if test -n "$CC"; then
+      cat > conftest.c <<EOF
+int main(int argc, char **argv) { return 0; }
+EOF
+
+      dnl GCC
+      if test "$GCC" = "yes"; then
+        if test -z "$ansi"; then
+          ac_cv_prog_cc_warnings="-Wall"
+        else
+          ac_cv_prog_cc_warnings="-Wall -ansi -pedantic"
+        fi
+
+      dnl Solaris C compiler
+      elif $CC -flags 2>&1 | grep "Xc.*strict ANSI C" > /dev/null 2>&1 &&
+           $CC -c -v -Xc conftest.c > /dev/null 2>&1 &&
+           test -f conftest.o; then
+        if test -z "$ansi"; then
+          ac_cv_prog_cc_warnings="-v"
+        else
+          ac_cv_prog_cc_warnings="-v -Xc"
+        fi
+
+      dnl HP-UX C compiler
+      elif $CC > /dev/null 2>&1 &&
+           $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 &&
+           test -f conftest.o; then
+        if test -z "$ansi"; then
+          ac_cv_prog_cc_warnings="+w1"
+        else
+          ac_cv_prog_cc_warnings="+w1 -Aa"
+        fi
+
+      dnl Digital Unix C compiler
+      elif ! $CC > /dev/null 2>&1 &&
+           $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 &&
+           test -f conftest.o; then
+        if test -z "$ansi"; then
+          ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos"
+        else
+          ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1"
+        fi
+
+      dnl C for AIX Compiler
+      elif $CC > /dev/null 2>&1 | grep AIX > /dev/null 2>&1 &&
+           $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 &&
+           test -f conftest.o; then
+        if test -z "$ansi"; then
+          ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"
+        else
+          ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi"
+        fi
+
+      dnl IRIX C compiler
+      elif $CC -fullwarn -ansi -ansiE > /dev/null 2>&1 &&
+           test -f conftest.o; then
+        if test -z "$ansi"; then
+          ac_cv_prog_cc_warnings="-fullwarn"
+        else
+          ac_cv_prog_cc_warnings="-fullwarn -ansi -ansiE"
+        fi
+
+      fi
+      rm -f conftest.*
+    fi
+    if test -n "$ac_cv_prog_cc_warnings"; then
+      CFLAGS="$CFLAGS $ac_cv_prog_cc_warnings"
+      CXXFLAGS="$CXXFLAGS $ac_cv_prog_cc_warnings"
+    else
+      ac_cv_prog_cc_warnings="unknown"
+    fi
+  ])
+])
diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_bool.m4
new file mode 100644 (file)
index 0000000..69da63d
--- /dev/null
@@ -0,0 +1,48 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+dnl @synopsis AC_CXX_BOOL
+dnl
+dnl If the compiler recognizes bool as a separate built-in type,
+dnl define HAVE_BOOL. Note that a typedef is not a separate
+dnl type since you cannot overload a function such that it accepts either
+dnl the basic type or the typedef.
+dnl
+dnl @version $Id$
+dnl @author Luc Maisonobe
+dnl
+AC_DEFUN([AC_CXX_BOOL],
+[AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type,
+ac_cv_cxx_bool,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([
+int f(int  x){return 1;}
+int f(char x){return 1;}
+int f(bool x){return 1;}
+],[bool b = true; return f(b);],
+ ac_cv_cxx_bool=yes, ac_cv_cxx_bool=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_bool" = yes; then
+  AC_DEFINE(HAVE_BOOL,,[define if bool is a built-in type])
+fi
+])
diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_mutable.m4
new file mode 100644 (file)
index 0000000..3d87bac
--- /dev/null
@@ -0,0 +1,48 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+dnl @synopsis AC_CXX_MUTABLE
+dnl
+dnl If the compiler allows modifying class data members flagged with
+dnl the mutable keyword even in const objects (for example in the
+dnl body of a const member function), define HAVE_MUTABLE.
+dnl
+dnl @version $Id$
+dnl @author Luc Maisonobe
+dnl
+AC_DEFUN([AC_CXX_MUTABLE],
+[AC_CACHE_CHECK(whether the compiler supports the mutable keyword,
+ac_cv_cxx_mutable,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([
+class A { mutable int i;
+          public:
+          int f (int n) const { i = n; return i; }
+        };
+],[A a; return a.f (1);],
+ ac_cv_cxx_mutable=yes, ac_cv_cxx_mutable=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_mutable" = yes; then
+  AC_DEFINE(HAVE_MUTABLE,,[define if the compiler supports the mutable keyword])
+fi
+])
diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_partial_specialization.m4
new file mode 100644 (file)
index 0000000..634d3c6
--- /dev/null
@@ -0,0 +1,48 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+dnl @synopsis AC_CXX_PARTIAL_SPECIALIZATION
+dnl
+dnl If the compiler supports partial specialization,
+dnl define HAVE_PARTIAL_SPECIALIZATION.
+dnl
+dnl @version $Id$
+dnl @author Luc Maisonobe
+dnl
+
+AC_DEFUN([AC_CXX_PARTIAL_SPECIALIZATION],
+[AC_CACHE_CHECK(whether the compiler supports partial specialization,
+ac_cv_cxx_partial_specialization,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([
+template<class T, int N> class A            { public : enum e { z = 0 }; };
+template<int N>          class A<double, N> { public : enum e { z = 1 }; };
+template<class T>        class A<T, 2>      { public : enum e { z = 2 }; };
+],[return (A<int,3>::z == 0) && (A<double,3>::z == 1) && (A<float,2>::z == 2);],
+ ac_cv_cxx_partial_specialization=yes, ac_cv_cxx_partial_specialization=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_partial_specialization" = yes; then
+  AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION,,
+            [define if the compiler supports partial specialization])
+fi
+])
diff --git a/salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4 b/salome_adm/unix/config_files/DEPRECATED/ac_cxx_typename.m4
new file mode 100644 (file)
index 0000000..bb14246
--- /dev/null
@@ -0,0 +1,42 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+ddnl @synopsis AC_CXX_TYPENAME
+dnl
+dnl If the compiler recognizes the typename keyword, define HAVE_TYPENAME.
+dnl
+dnl @version $Id$
+dnl @author Luc Maisonobe
+dnl
+AC_DEFUN([AC_CXX_TYPENAME],
+[AC_CACHE_CHECK(whether the compiler recognizes typename,
+ac_cv_cxx_typename,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([template<typename T>class X {public:X(){}};],
+[X<float> z; return 0;],
+ ac_cv_cxx_typename=yes, ac_cv_cxx_typename=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_typename" = yes; then
+  AC_DEFINE(HAVE_TYPENAME,,[define if the compiler recognizes typename])
+fi
+])
diff --git a/salome_adm/unix/config_files/DEPRECATED/check_Salome.m4 b/salome_adm/unix/config_files/DEPRECATED/check_Salome.m4
new file mode 100644 (file)
index 0000000..d598c99
--- /dev/null
@@ -0,0 +1,78 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#------------------------------------------------------------
+#  Check availability of Salome binary distribution
+#
+#  Author : Marc Tajchman (CEA, 2002)
+#------------------------------------------------------------
+
+AC_DEFUN([CHECK_SALOME],[
+
+AC_CHECKING(for Salome)
+
+Salome_ok=no
+
+AC_ARG_WITH(salome,
+           --with-salome=DIR root directory path of SALOME installation,
+           SALOME_DIR="$withval",SALOME_DIR="")
+
+if test "x$SALOME_DIR" = "x" ; then
+
+# no --with-salome-dir option used
+
+   if test "x$SALOME_ROOT_DIR" != "x" ; then
+
+    # SALOME_ROOT_DIR environment variable defined
+      SALOME_DIR=$SALOME_ROOT_DIR
+
+   else
+
+    # search Salome binaries in PATH variable
+      AC_PATH_PROG(TEMP, libMEDMEM_Swig.py)
+      if test "x$TEMP" != "x" ; then
+         SALOME_BIN_DIR=`dirname $TEMP`
+         SALOME_DIR=`dirname $SALOME_BIN_DIR`
+      fi
+      
+   fi
+# 
+fi
+
+if test -f ${SALOME_DIR}/bin/libMEDMEM_Swig.py  ; then
+   Salome_ok=yes
+   AC_MSG_RESULT(Using Salome distribution in ${SALOME_DIR})
+
+   if test "x$SALOME_ROOT_DIR" = "x" ; then
+      SALOME_ROOT_DIR=${SALOME_DIR}
+   fi
+   if test "x$SALOME_SITE_DIR" = "x" ; then
+      SALOME_SITE_DIR=${SALOME_ROOT_DIR}
+   fi
+   AC_SUBST(SALOME_ROOT_DIR)
+   AC_SUBST(SALOME_SITE_DIR)
+
+else
+   AC_MSG_WARN("Cannot find compiled Salome distribution")
+fi
+  
+AC_MSG_RESULT(for Salome: $Salome_ok)
+])dnl
diff --git a/salome_adm/unix/config_files/DEPRECATED/check_java.m4 b/salome_adm/unix/config_files/DEPRECATED/check_java.m4
new file mode 100644 (file)
index 0000000..c03e9f7
--- /dev/null
@@ -0,0 +1,111 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+AC_DEFUN([CHECK_JAVA],[
+dnl AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl
+dnl AC_REQUIRE([AC_PROG_CPP])dnl
+
+AC_CHECKING(for JAVA)
+
+JAVA_INCLUDES=""
+JAVA_LIBS=""
+JAVA_LDPATH=""
+
+java_ok=no
+
+if test -z $JAVAHOME
+then
+   AC_MSG_WARN(define JAVAHOME variable to use Java)
+else
+   java_ok=yes
+fi
+
+if  test "x$java_ok" = "xyes"
+then
+   AC_EXEEXT
+   AC_CHECK_PROG(JAVA, java$EXEEXT,found)
+   if  test "x$JAVA" = "x"
+   then
+     java_ok=no
+   fi
+
+   AC_CHECK_PROG(JAVAC, javac$EXEEXT,found)
+   if  test "x$JAVAC" = "x"
+   then
+     java_ok=no
+   fi
+fi
+
+if  test "x$java_ok" = "xyes"
+then
+    version=`$JAVA -version 2>&1 | grep "java version"`
+    case "$version" in
+      *1.1.*)
+          AC_MSG_RESULT(using jdk1.1 version - jdk1.4 required)
+         java_ok=no;;
+      *1.2*)
+          AC_MSG_RESULT(using jdk1.2 version - jdk1.4 required)
+         java_ok=no;;
+      *1.3*)
+          AC_MSG_RESULT(using jdk1.3 version - jdk1.4 required)
+         java_ok=no;;
+      *1.4*)
+          AC_MSG_RESULT(using jdk1.4 version) ;;
+    esac
+fi
+
+if  test "x$java_ok" = "xyes"
+then
+dnl java headers
+  LOCAL_INCLUDES=" -I${JAVAHOME}/include  -I${JAVAHOME}/include/linux"
+  CPPFLAGS_old="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES"
+  AC_CHECK_HEADER(jni.h,java_ok=yes ,java_ok=no)
+
+  CPPFLAGS="$CPPFLAGS_old"
+fi
+
+if  test "x$java_ok" = "xyes"
+then
+dnl libjava library
+  LOCAL_LIBS="-L${JAVAHOME}/jre/lib/i386 -ljava -L${JAVAHOME}/jre/lib/i386/client -ljvm -lverify"
+  LIBS_old="$LIBS"
+  LIBS="$LIBS $LOCAL_LIBS"
+
+  AC_CHECK_LIB(jvm,JNI_CreateJavaVM,java_ok=yes,java_ok=no)
+
+  LIBS="$LIBS_old"
+fi
+
+if  test "x$java_ok" = "xyes"
+then
+  JAVA_INCLUDES="$LOCAL_INCLUDES"
+  JAVA_LIBS="$LOCAL_LIBS"
+fi
+
+AC_SUBST(JAVA_INCLUDES)
+AC_SUBST(JAVA_LIBS)
+AC_SUBST(JAVA_LDPATH)
+
+AC_MSG_RESULT(for java: $java_ok)
+
+])dnl
+dnl
diff --git a/salome_adm/unix/config_files/DEPRECATED/check_mico.m4 b/salome_adm/unix/config_files/DEPRECATED/check_mico.m4
new file mode 100644 (file)
index 0000000..5d97e2a
--- /dev/null
@@ -0,0 +1,159 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+
+AC_DEFUN([CHECK_MICO],[
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_CXX])dnl
+AC_REQUIRE([AC_PROG_CPP])dnl
+AC_REQUIRE([AC_PROG_CXXCPP])dnl
+
+AC_CHECKING(for mico)
+mico_ok=yes
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+AC_PATH_PROG(MICOD, micod)
+if test "x$MICOD" = "x"
+then
+  mico_ok=no
+  AC_MSG_RESULT(mico binaries not in PATH variable)
+else
+  mico_ok=yes
+fi
+
+if  test "x$mico_ok" = "xyes"
+then
+  AC_SUBST(MICO_IDL)
+
+  MICO_BIN=`echo ${MICOD} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+  MICO_LIB=`echo ${MICO_BIN} | sed -e "s,bin,lib,"`
+  MICO_ROOT=`echo ${MICO_BIN}  | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+  AC_SUBST(MICO_ROOT)
+
+  MICO_IDL=${MICO_BIN}/idl
+  AC_SUBST(MICO_IDL)
+
+  MICO_INCLUDES="-I$MICO_ROOT/include"
+  AC_SUBST(MICO_INCLUDES)
+
+  MICO_VERSION=`sed -n -e 's/.define *MICO_VERSION *\"\([[^\"]]*\)\"/\1/p' $MICO_ROOT/include/mico/version.h`
+  AC_SUBST(MICO_VERSION)
+  AC_MSG_RESULT(using mico version $MICO_VERSION)
+
+  MICO_CXXFLAGS="-ftemplate-depth-42 -fpermissive"
+  AC_SUBST(MICO_CXXFLAGS)
+
+  CXXFLAGS_old=$CXXFLAGS
+  CXXFLAGS="$CXXFLAGS $MICO_CXXFLAGS $MICO_INCLUDES"
+
+  AC_MSG_CHECKING(include of CORBA.h)
+  AC_TRY_COMPILE(
+#include "CORBA.h"
+, ,mico_ok=yes ,mico_ok=no)
+
+  if  test "x$mico_ok" = "xno"
+  then
+    AC_MSG_RESULT(CORBA.h not found in mico installation)
+  else
+    AC_MSG_RESULT(yes)
+  fi
+
+  CXXFLAGS=$CXXFLAGS_old
+
+fi
+
+if test "x$mico_ok" = "xyes" 
+then
+  if test "x$MICO_LIB" = "x/usr/lib"
+  then
+    MICO_LDFLAGS=""
+  else
+    MICO_LDFLAGS="-L$MICO_LIB"
+  fi
+
+  LIBS_old=$LIBS
+  MICO_LIBS="$MICO_LDFLAGS -lmico$MICO_VERSION -ldl"
+  AC_SUBST(MICO_LIBS)
+
+  LIBS="$MICO_LIBS $LIBS"
+  CXXFLAGS_old=$CXXFLAGS
+  CXXFLAGS="$CXXFLAGS $MICO_CXXFLAGS $MICO_INCLUDES"
+
+  AC_MSG_CHECKING(whether we can link with mico)
+  AC_TRY_LINK(
+#include "CORBA.h"
+,CORBA::ORB_var orb,
+    mico_ok=yes,mico_ok=no)
+
+  if test "x$mico_ok" = "xno" 
+  then
+    AC_MSG_RESULT(mico library linking failed)
+    mico_ok=no
+  else
+    AC_MSG_RESULT(yes)
+  fi
+
+  CXXFLAGS=$CXXFLAGS_old
+  LIBS=$LIBS_old
+fi
+
+
+if test "x$mico_ok" = "xyes" 
+then
+
+  MICO_IDLCXXFLAGS="-bcxx -I$MICO_ROOT/idl"
+  AC_SUBST(MICO_IDLCXXFLAGS)
+  AC_SUBST(MICO_IDLPYFLAGS)
+
+  MICO_IDL_CLN_H=.hh
+  MICO_IDL_CLN_CXX=SK.cc
+  MICO_IDL_CLN_OBJ=SK.o 
+  AC_SUBST(MICO_IDL_CLN_H)
+  AC_SUBST(MICO_IDL_CLN_CXX)
+  AC_SUBST(MICO_IDL_CLN_OBJ)
+
+  MICO_IDL_SRV_H=.hh
+  MICO_IDL_SRV_CXX=SK.cc
+  MICO_IDL_SRV_OBJ=SK.o
+  AC_SUBST(MICO_IDL_SRV_H)
+  AC_SUBST(MICO_IDL_SRV_CXX)
+  AC_SUBST(MICO_IDL_SRV_OBJ)
+
+  MICO_IDL_TIE_H=
+  MICO_IDL_TIE_CXX=
+  AC_SUBST(MICO_IDL_TIE_H)
+  AC_SUBST(MICO_IDL_TIE_CXX)
+  
+  AC_DEFINE(MICO)
+
+  CORBA_HAVE_POA=1
+  AC_DEFINE(CORBA_HAVE_POA)
+
+fi
+
+AC_LANG_RESTORE
+
+AC_MSG_RESULT(for mico: $mico_ok)
+
+])dnl
+dnl
diff --git a/salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4 b/salome_adm/unix/config_files/DEPRECATED/check_pthreads.m4
new file mode 100644 (file)
index 0000000..eb511ec
--- /dev/null
@@ -0,0 +1,56 @@
+dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+dnl 
+dnl  This library is free software; you can redistribute it and/or 
+dnl  modify it under the terms of the GNU Lesser General Public 
+dnl  License as published by the Free Software Foundation; either 
+dnl  version 2.1 of the License. 
+dnl 
+dnl  This library is distributed in the hope that it will be useful, 
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+dnl  Lesser General Public License for more details. 
+dnl 
+dnl  You should have received a copy of the GNU Lesser General Public 
+dnl  License along with this library; if not, write to the Free Software 
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+dnl 
+dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+dnl
+dnl
+dnl
+#@synonpsis CHECK_PTHREADS
+dnl  check for pthreads system interfaces.
+dnl  set CFLAGS_PTHREADS,  CXXFLAGS_PTHREADS and LIBS_PTHREADS to
+dnl  flags to compiler flags for multithread program compilation (if exists),
+dnl  and library, if one required.
+dnl
+dnl@author   (C) Ruslan Shevchenko <Ruslan@Shevchenko.Kiev.UA>, 1998
+dnl@id $Id$
+dnl ----------------------------------------------------------------
+dnl CHECK_PTHREADS
+AC_DEFUN([CHECK_PTHREADS],[
+AC_CXX_OPTION(-pthread,CPPFLAGS,flag=yes,flag=no)
+
+if test $flag = no; then
+  AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl
+  AC_CHECK_HEADER(pthread.h,AC_DEFINE(HAVE_PTHREAD_H))
+  AC_CHECK_LIB(posix4,nanosleep, LIBS_PTHREADS="-lposix4",LIBS_PTHREADS="")
+  AC_CHECK_LIB(pthread,pthread_mutex_lock, 
+               LIBS_PTHREADS="-lpthread $LIBS_PTHREADS",LIBS_PTHREADS="")
+else
+    case $host_os in
+      osf*)
+        LIBS_PTHREADS="-lpthread $LIBS_PTHREADS"
+        ;;
+    esac
+fi
+
+if test $flag = no && test x$LIBS_PTHREADS = x; then
+  threads_ok=no
+else
+  threads_ok=yes
+fi
+])dnl
+dnl
+dnl
diff --git a/salome_adm/unix/config_files/DEPRECATED/config.guess b/salome_adm/unix/config_files/DEPRECATED/config.guess
new file mode 100755 (executable)
index 0000000..0ce538b
--- /dev/null
@@ -0,0 +1,1183 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+#   Free Software Foundation, Inc.
+#
+# 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.
+
+# Written by Per Bothner <bothner@cygnus.com>.
+# Please send patches to <config-patches@gnu.org>.
+#
+# 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 system type (host/target name).
+#
+# Only a few systems have been added to this list; please add others
+# (but try to keep the structure clean).
+#
+
+# Use $HOST_CC if defined. $CC may point to a cross-compiler
+if test x"$CC_FOR_BUILD" = x; then
+  if test x"$HOST_CC" != x; then
+    CC_FOR_BUILD="$HOST_CC"
+  else
+    if test x"$CC" != x; then
+      CC_FOR_BUILD="$CC"
+    else
+      CC_FOR_BUILD=cc
+    fi
+  fi
+fi
+
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 8/24/94.)
+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
+
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
+
+# 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.
+       # Determine the machine/vendor (is the vendor relevant).
+       case "${UNAME_MACHINE}" in
+           amiga) machine=m68k-cbm ;;
+           arm32) machine=arm-unknown ;;
+           atari*) machine=m68k-atari ;;
+           sun3*) machine=m68k-sun ;;
+           mac68k) machine=m68k-apple ;;
+           macppc) machine=powerpc-apple ;;
+           hp3[0-9][05]) machine=m68k-hp ;;
+           ibmrt|romp-ibm) machine=romp-ibm ;;
+           *) machine=${UNAME_MACHINE}-unknown ;;
+       esac
+       # The Operating System including object format.
+       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
+       # The OS release
+       release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       # 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 ;;
+    alpha:OSF1:*:*)
+       if test $UNAME_RELEASE = "V4.0"; then
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+       fi
+       # 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.
+       cat <<EOF >$dummy.s
+       .data
+\$Lformat:
+       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+
+       .text
+       .globl main
+       .align 4
+       .ent main
+main:
+       .frame \$30,16,\$26,0
+       ldgp \$29,0(\$27)
+       .prologue 1
+       .long 0x47e03d80 # implver \$0
+       lda \$2,-1
+       .long 0x47e20c21 # amask \$2,\$1
+       lda \$16,\$Lformat
+       mov \$0,\$17
+       not \$1,\$18
+       jsr \$26,printf
+       ldgp \$29,0(\$26)
+       mov 0,\$16
+       jsr \$26,exit
+       .end main
+EOF
+       $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+       if test "$?" = 0 ; then
+               case `./$dummy` in
+                       0-0)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       1-0)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       1-1)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       1-101)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       2-303)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+                       2-307)
+                               UNAME_MACHINE="alphaev67"
+                               ;;
+               esac
+       fi
+       rm -f $dummy.s $dummy
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       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-cbm-sysv4
+       exit 0;;
+    amiga:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit 0 ;;
+    arc64:OpenBSD:*:*)
+       echo mips64el-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    arc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    hkmips:OpenBSD:*:*)
+       echo mips-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    pmax:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sgi:OpenBSD:*:*)
+       echo mips-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       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:*:*)
+       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 ;;
+    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=`(head -1 /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 ;;
+    atari*:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${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 ;;
+    sun3*:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mac68k:OpenBSD:*:*)
+       echo m68k-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 ;;
+    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)
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* 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 $dummy.c -o $dummy \
+         && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+         && rm $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
+       echo mips-mips-riscos${UNAME_RELEASE}
+       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 ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+               rm -f $dummy.c $dummy
+               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:*:4)
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -EHl ${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=4.${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:*:*)
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+              sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              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 $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+       rm -f $dummy.c $dummy
+       esac
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    3050*:HI-UX:*:*)
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       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 $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+       rm -f $dummy.c $dummy
+       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:*:*)
+       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 ;;
+    hppa*:OpenBSD:*:*)
+       echo hppa-unknown-openbsd
+       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*X-MP:*:*:*)
+       echo xmp-cray-unicos
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE}
+       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/
+       exit 0 ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY-2:*:*:*)
+       echo cray2-cray-unicos
+        exit 0 ;;
+    F300:UNIX_System_V:*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    F301:UNIX_System_V:*:*)
+       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
+       exit 0 ;;
+    hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       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:*:*)
+       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
+    *:OpenBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       exit 0 ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit 0 ;;
+    i*:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       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 i386-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 ;;
+    *: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.
+       ld_help_string=`cd /; ld --help 2>&1`
+       ld_supported_emulations=`echo $ld_help_string \
+                        | sed -ne '/supported emulations:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported emulations: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_emulations" in
+         *ia64)
+               echo "${UNAME_MACHINE}-unknown-linux"
+               exit 0
+               ;;
+         i?86linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit 0
+               ;;
+         elf_i?86)
+               echo "${UNAME_MACHINE}-pc-linux"
+               exit 0
+               ;;
+         i?86coff)
+               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+               exit 0
+               ;;
+         sparclinux)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+               exit 0
+               ;;
+         armlinux)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+               exit 0
+               ;;
+         elf32arm*)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuoldld"
+               exit 0
+               ;;
+         armelf_linux*)
+               echo "${UNAME_MACHINE}-unknown-linux-gnu"
+               exit 0
+               ;;
+         m68klinux)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+               exit 0
+               ;;
+         elf32ppc | elf32ppclinux)
+               # Determine Lib Version
+               cat >$dummy.c <<EOF
+#include <features.h>
+#if defined(__GLIBC__)
+extern char __libc_version[];
+extern char __libc_release[];
+#endif
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#if defined(__GLIBC__)
+  printf("%s %s\n", __libc_version, __libc_release);
+#else
+  printf("unkown\n");
+#endif
+  return 0;
+}
+EOF
+               LIBC=""
+               $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+               if test "$?" = 0 ; then
+                       ./$dummy | grep 1\.99 > /dev/null
+                       if test "$?" = 0 ; then
+                               LIBC="libc1"
+                       fi
+               fi
+               rm -f $dummy.c $dummy
+               echo powerpc-unknown-linux-gnu${LIBC}
+               exit 0
+               ;;
+       esac
+
+       if test "${UNAME_MACHINE}" = "alpha" ; then
+               cat <<EOF >$dummy.s
+                       .data
+               \$Lformat:
+                       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+
+                       .text
+                       .globl main
+                       .align 4
+                       .ent main
+               main:
+                       .frame \$30,16,\$26,0
+                       ldgp \$29,0(\$27)
+                       .prologue 1
+                       .long 0x47e03d80 # implver \$0
+                       lda \$2,-1
+                       .long 0x47e20c21 # amask \$2,\$1
+                       lda \$16,\$Lformat
+                       mov \$0,\$17
+                       not \$1,\$18
+                       jsr \$26,printf
+                       ldgp \$29,0(\$26)
+                       mov 0,\$16
+                       jsr \$26,exit
+                       .end main
+EOF
+               LIBC=""
+               $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+               if test "$?" = 0 ; then
+                       case `./$dummy` in
+                       0-0)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       1-0)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       1-1)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       1-101)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       2-303)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+                       2-307)
+                               UNAME_MACHINE="alphaev67"
+                               ;;
+                       esac
+
+                       objdump --private-headers $dummy | \
+                         grep ld.so.1 > /dev/null
+                       if test "$?" = 0 ; then
+                               LIBC="libc1"
+                       fi
+               fi
+               rm -f $dummy.s $dummy
+               echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
+       elif test "${UNAME_MACHINE}" = "mips" ; then
+         cat >$dummy.c <<EOF
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+#ifdef __MIPSEB__
+  printf ("%s-unknown-linux-gnu\n", argv[1]);
+#endif
+#ifdef __MIPSEL__
+  printf ("%sel-unknown-linux-gnu\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+         $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+         rm -f $dummy.c $dummy
+       elif test "${UNAME_MACHINE}" = "s390"; then
+         echo s390-ibm-linux && exit 0
+       else
+         # Either a pre-BFD a.out linker (linux-gnuoldld)
+         # or one that does not give us useful --help.
+         # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+         # If ld does not provide *any* "supported emulations:"
+         # that means it is gnuoldld.
+         echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
+         test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+
+         case "${UNAME_MACHINE}" in
+         i?86)
+           VENDOR=pc;
+           ;;
+         *)
+           VENDOR=unknown;
+           ;;
+         esac
+         # Determine whether the default compiler is a.out or elf
+         cat >$dummy.c <<EOF
+#include <features.h>
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+#ifdef __ELF__
+# ifdef __GLIBC__
+#  if __GLIBC__ >= 2
+    printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
+#  else
+    printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+#  endif
+# else
+   printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+# endif
+#else
+  printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+         $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+         rm -f $dummy.c $dummy
+       fi ;;
+# 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.
+    i?86:DYNIX/ptx:4*:*)
+       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:*: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:7*)
+        # Fixed at (any) Pentium or better
+        UNAME_MACHINE=i586
+        if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
+           echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
+       else
+           echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    i?86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit 0 ;;
+    i?86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       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 ;;
+    M68*:*:R3V[567]*:*)
+       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*: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.*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit 0 ;;
+    i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+       echo rs6000-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:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                           # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # 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 ;;
+    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 ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Darwin:*:*)
+       echo `uname -p`-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       if test "${UNAME_MACHINE}" = "x86pc"; then
+               UNAME_MACHINE=pc
+       fi
+       echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+       exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit 0 ;;
+    NSR-W:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${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
+
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  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)
+  printf ("vax-dec-bsd\n"); exit (0);
+#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 $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
+
+# 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
+
+#echo '(Unable to guess system type)' 1>&2
+
+exit 1
diff --git a/salome_adm/unix/config_files/DEPRECATED/config.sub b/salome_adm/unix/config_files/DEPRECATED/config.sub
new file mode 100755 (executable)
index 0000000..6218dd9
--- /dev/null
@@ -0,0 +1,1268 @@
+#! /bin/sh
+# Configuration validation subroutine script, version 1.1.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+#   Free Software Foundation, Inc.
+#
+# 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.
+
+# Written by Per Bothner <bothner@cygnus.com>.
+# Please send patches to <config-patches@gnu.org>.
+#
+# 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.
+
+if [ x$1 = x ]
+then
+       echo Configuration name missing. 1>&2
+       echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
+       echo "or     $0 ALIAS" 1>&2
+       echo where ALIAS is a recognized configuration type. 1>&2
+       exit 1
+fi
+
+# First pass through any local machine types.
+case $1 in
+       *local*)
+               echo $1
+               exit 0
+               ;;
+       *)
+       ;;
+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*)
+    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)
+               os=
+               basic_machine=$1
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               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.
+       tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+               | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
+               | 580 | i960 | h8300 \
+               | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
+               | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
+               | hppa64 \
+               | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
+               | alphaev6[78] \
+               | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
+               | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
+               | mips64orion | mips64orionel | mipstx39 | mipstx39el \
+               | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
+               | mips64vr5000 | miprs64vr5000el | mcore \
+               | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
+               | thumb | d10v | fr30 | avr)
+               basic_machine=$basic_machine-unknown
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
+               ;;
+
+       # 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[34567]86)
+         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.
+       # FIXME: clean up the formatting here.
+       vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
+             | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
+             | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
+             | xmp-* | ymp-* \
+             | x86-* | x86_64-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
+             | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
+             | hppa2.0n-* | hppa64-* \
+             | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
+             | alphaev6[78]-* \
+             | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
+             | clipper-* | orion-* \
+             | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+             | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
+             | mips64el-* | mips64orion-* | mips64orionel-* \
+             | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
+             | mipstx39-* | mipstx39el-* | mcore-* \
+             | f301-* | armv*-* | s390-* | sv1-* | t3e-* \
+             | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
+             | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
+             | bs2000-*)
+               ;;
+       # 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
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-cbm
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-cbm
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-cbm
+               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
+               ;;
+       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 | ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       cray2)
+               basic_machine=cray2-cray
+               os=-unicos
+               ;;
+       [ctj]90-cray)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       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
+               ;;
+       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[34567]86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i[34567]86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i[34567]86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i[34567]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
+               ;;
+       i386-go32 | go32)
+               basic_machine=i386-unknown
+               os=-go32
+               ;;
+       i386-mingw32 | mingw32)
+               basic_machine=i386-unknown
+               os=-mingw32
+               ;;
+       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
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mipsel*-linux*)
+               basic_machine=mipsel-unknown
+               os=-linux-gnu
+               ;;
+       mips*-linux*)
+               basic_machine=mips-unknown
+               os=-linux-gnu
+               ;;
+       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
+               ;;
+       msdos)
+               basic_machine=i386-unknown
+               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
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       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 | nexen)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexen-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=rs6000-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/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       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
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sparclite-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=t3e-cray
+               os=-unicos
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       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
+               ;;
+       xmp)
+               basic_machine=xmp-cray
+               os=-unicos
+               ;;
+        xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       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
+               ;;
+       mips)
+               if [ x$os = x-linux-gnu ]; then
+                       basic_machine=mips-unknown
+               else
+                       basic_machine=mips-mips
+               fi
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sparc | sparcv9)
+               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
+               ;;
+       c4x*)
+               basic_machine=c4x-none
+               os=-coff
+               ;;
+       *)
+               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* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i[34567]86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto*)
+               os=-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
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -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)
+               os=-mint
+               ;;
+       -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
+               ;;
+        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
+               ;;
+       *-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
+               ;;
+       f301-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*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -*MiNT)
+                               vendor=atari
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
diff --git a/salome_adm/unix/config_files/DEPRECATED/install-sh b/salome_adm/unix/config_files/DEPRECATED/install-sh
new file mode 100755 (executable)
index 0000000..51319e8
--- /dev/null
@@ -0,0 +1,54 @@
+#! /bin/sh
+
+chmodParams=""
+dirParams=""
+dirPath=""
+args=""
+
+while [ x"$1" != x ]; do
+if test $# != "1"; then
+case $1 in
+-c) shift;
+continue;;
+
+-d) dirParams="yes"
+shift;
+continue;;
+
+-m) shift;
+chmodParams=$1
+shift;
+continue;;
+
+*) args="$args $1"
+shift;
+continue;;
+esac
+else
+dirPath=$1
+fi
+shift;
+done
+
+if test x$dirParams = "xyes"; then
+mkdir -p $dirPath
+else
+cp -f $args $dirPath
+for arg in $args; do
+myArg=`basename $arg`
+if test x$chmodParams != x; then
+if test -d $dirPath; then
+chmod $chmodParams $dirPath/$myArg
+else
+chmod $chmodParams $dirPath
+fi
+else
+if test -d $dirPath; then
+chmod a+x $dirPath/$myArg
+else
+chmod a+x $dirPath
+fi
+fi
+done
+fi
+
diff --git a/salome_adm/unix/config_files/DEPRECATED/libtool.m4 b/salome_adm/unix/config_files/DEPRECATED/libtool.m4
new file mode 100644 (file)
index 0000000..f285453
--- /dev/null
@@ -0,0 +1,439 @@
+## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
+## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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., 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.
+
+# serial 40 AC_PROG_LIBTOOL
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+
+# Save cache, so that ltconfig can load it
+AC_CACHE_SAVE
+
+# Actually configure libtool.  ac_aux_dir is where install-sh is found.
+CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
+LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
+DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
+$libtool_flags $ac_aux_dir/ltmain.sh $lt_target \
+|| AC_MSG_ERROR([libtool configure failed])
+
+# Reload cache, that may have been modified by ltconfig
+AC_CACHE_LOAD
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Redirect the config.log output again, so that the ltconfig log is not
+# clobbered by the next message.
+exec 5>>./config.log
+])
+
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.13)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_RANLIB])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+dnl
+
+case "$target" in
+NONE) lt_target="$host" ;;
+*) lt_target="$target" ;;
+esac
+
+# Check for any special flags to pass to ltconfig.
+#
+# the following will cause an existing older ltconfig to fail, so
+# we ignore this at the expense of the cache file... Checking this 
+# will just take longer ... bummer!
+#libtool_flags="--cache-file=$cache_file"
+#
+test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
+test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
+test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
+test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
+test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
+[libtool_flags="$libtool_flags --enable-dlopen"])
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[libtool_flags="$libtool_flags --enable-win32-dll"])
+AC_ARG_ENABLE(libtool-lock,
+  [  --disable-libtool-lock  avoid locking (might break parallel builds)])
+test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case "$lt_target" in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+])
+esac
+])
+
+# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+
+# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+
+# AC_ENABLE_SHARED - implement the --enable-shared flag
+# Usage: AC_ENABLE_SHARED[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_SHARED], [dnl
+define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(shared,
+changequote(<<, >>)dnl
+<<  --enable-shared[=PKGS]  build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
+])
+
+# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)])
+
+# AC_ENABLE_STATIC - implement the --enable-static flag
+# Usage: AC_ENABLE_STATIC[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_STATIC], [dnl
+define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(static,
+changequote(<<, >>)dnl
+<<  --enable-static[=PKGS]  build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
+])
+
+# AC_DISABLE_STATIC - set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)])
+
+
+# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
+# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL], [dnl
+define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(fast-install,
+changequote(<<, >>)dnl
+<<  --enable-fast-install[=PKGS]  optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
+])
+
+# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)])
+
+# AC_PROG_LD - find the path to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$ac_cv_prog_gcc" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  ac_prog=`($CC -print-prog-name=ld) 2>&5`
+  case "$ac_prog" in
+    # Accept absolute paths.
+changequote(,)dnl
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+changequote([,])dnl
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(ac_cv_path_LD,
+[if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      ac_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+       test "$with_gnu_ld" != no && break
+      else
+       test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  ac_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$ac_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])
+
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  ac_cv_prog_gnu_ld=yes
+else
+  ac_cv_prog_gnu_ld=no
+fi])
+])
+
+# AC_PROG_NM - find the path to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_MSG_CHECKING([for BSD-compatible nm])
+AC_CACHE_VAL(ac_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  ac_cv_path_NM="$NM"
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       ac_cv_path_NM="$ac_dir/nm -B"
+       break
+      elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       ac_cv_path_NM="$ac_dir/nm -p"
+       break
+      else
+       ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+       continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
+fi])
+NM="$ac_cv_path_NM"
+AC_MSG_RESULT([$NM])
+])
+
+# AC_CHECK_LIBM - check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case "$lt_target" in
+*-*-beos* | *-*-cygwin*)
+  # These system don't have libm
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, main, LIBM="-lm")
+  ;;
+esac
+])
+
+# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl convenience library and INCLTDL to the include flags for
+# the libltdl header and adds --enable-ltdl-convenience to the
+# configure arguments.  Note that LIBLTDL and INCLTDL are not
+# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If DIR is not
+# provided, it is assumed to be `libltdl'.  LIBLTDL will be prefixed
+# with '${top_builddir}/' and INCLTDL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case "$enable_ltdl_convenience" in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+])
+
+# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl installable library and INCLTDL to the include flags for
+# the libltdl header and adds --enable-ltdl-install to the configure
+# arguments.  Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is
+# AC_CONFIG_SUBDIRS called.  If DIR is not provided and an installed
+# libltdl is not found, it is assumed to be `libltdl'.  LIBLTDL will
+# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed
+# with '${top_srcdir}/' (note the single quotes!).  If your package is
+# not flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, main,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    INCLTDL=
+  fi
+])
+
+dnl old names
+AC_DEFUN([AM_PROG_LIBTOOL], [indir([AC_PROG_LIBTOOL])])dnl
+AC_DEFUN([AM_ENABLE_SHARED], [indir([AC_ENABLE_SHARED], $@)])dnl
+AC_DEFUN([AM_ENABLE_STATIC], [indir([AC_ENABLE_STATIC], $@)])dnl
+AC_DEFUN([AM_DISABLE_SHARED], [indir([AC_DISABLE_SHARED], $@)])dnl
+AC_DEFUN([AM_DISABLE_STATIC], [indir([AC_DISABLE_STATIC], $@)])dnl
+AC_DEFUN([AM_PROG_LD], [indir([AC_PROG_LD])])dnl
+AC_DEFUN([AM_PROG_NM], [indir([AC_PROG_NM])])dnl
+
+dnl This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])dnl
diff --git a/salome_adm/unix/config_files/DEPRECATED/ltconfig b/salome_adm/unix/config_files/DEPRECATED/ltconfig
new file mode 100755 (executable)
index 0000000..c14d83c
--- /dev/null
@@ -0,0 +1,3114 @@
+#! /bin/sh
+
+# ltconfig - Create a system-specific libtool.
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# 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.
+
+# A lot of this script is taken from autoconf-2.10.
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+echo=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.
+  exec "$SHELL" "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) PATH_SEPARATOR=';' ;;
+    *)     PATH_SEPARATOR=':' ;;
+  esac
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test "X${echo_test_string+set}" != Xset; then
+  # find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
+   test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS=  }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+        test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running ltconfig again with it.
+      ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf "%s\n"'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+        test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+       # Cool, printf works
+       :
+      elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
+          test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+       CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
+       export CONFIG_SHELL
+       SHELL="$CONFIG_SHELL"
+       export SHELL
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
+          test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+       # maybe with a smaller string...
+       prev=:
+
+       for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+         if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
+           break
+         fi
+         prev="$cmd"
+       done
+
+       if test "$prev" != 'sed 50q "$0"'; then
+         echo_test_string=`eval $prev`
+         export echo_test_string
+         exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
+       else
+         # Oops.  We lost completely, so just stick with echo.
+         echo=echo
+       fi
+      fi
+    fi
+  fi
+fi
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# The name of this program.
+progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
+
+# Constants:
+PROGRAM=ltconfig
+PACKAGE=libtool
+VERSION=1.3.5
+TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+rm="rm -f"
+
+help="Try \`$progname --help' for more information."
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+enable_shared=yes
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+enable_static=yes
+enable_fast_install=yes
+enable_dlopen=unknown
+enable_win32_dll=no
+ltmain=
+silent=
+srcdir=
+ac_config_guess=
+ac_config_sub=
+host=
+nonopt=
+ofile="$default_ofile"
+verify_host=yes
+with_gcc=no
+with_gnu_ld=no
+need_locks=yes
+ac_ext=c
+objext=o
+libext=a
+exeext=
+cache_file=
+
+old_AR="$AR"
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+old_CPPFLAGS="$CPPFLAGS"
+old_LDFLAGS="$LDFLAGS"
+old_LD="$LD"
+old_LN_S="$LN_S"
+old_LIBS="$LIBS"
+old_NM="$NM"
+old_RANLIB="$RANLIB"
+old_DLLTOOL="$DLLTOOL"
+old_OBJDUMP="$OBJDUMP"
+old_AS="$AS"
+
+# Parse the command line options.
+args=
+prev=
+for option
+do
+  case "$option" in
+  -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    eval "$prev=\$option"
+    prev=
+    continue
+  fi
+
+  case "$option" in
+  --help) cat <<EOM
+Usage: $progname [OPTION]... [HOST [LTMAIN]]
+
+Generate a system-specific libtool script.
+
+    --debug                enable verbose shell tracing
+    --disable-shared       do not build shared libraries
+    --disable-static       do not build static libraries
+    --disable-fast-install do not optimize for fast installation
+    --enable-dlopen        enable dlopen support
+    --enable-win32-dll     enable building dlls on win32 hosts
+    --help                 display this help and exit
+    --no-verify            do not verify that HOST is a valid host type
+-o, --output=FILE          specify the output file [default=$default_ofile]
+    --quiet                same as \`--silent'
+    --silent               do not print informational messages
+    --srcdir=DIR           find \`config.guess' in DIR
+    --version              output version information and exit
+    --with-gcc             assume that the GNU C compiler will be used
+    --with-gnu-ld          assume that the C compiler uses the GNU linker
+    --disable-lock         disable file locking
+    --cache-file=FILE      configure cache file
+
+LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
+that provides basic libtool functionality.
+
+HOST is the canonical host system name [default=guessed].
+EOM
+  exit 0
+  ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --disable-shared) enable_shared=no ;;
+
+  --disable-static) enable_static=no ;;
+
+  --disable-fast-install) enable_fast_install=no ;;
+
+  --enable-dlopen) enable_dlopen=yes ;;
+
+  --enable-win32-dll) enable_win32_dll=yes ;;
+
+  --quiet | --silent) silent=yes ;;
+
+  --srcdir) prev=srcdir ;;
+  --srcdir=*) srcdir="$optarg" ;;
+
+  --no-verify) verify_host=no ;;
+
+  --output | -o) prev=ofile ;;
+  --output=*) ofile="$optarg" ;;
+
+  --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
+
+  --with-gcc) with_gcc=yes ;;
+  --with-gnu-ld) with_gnu_ld=yes ;;
+
+  --disable-lock) need_locks=no ;;
+
+  --cache-file=*) cache_file="$optarg" ;;
+
+  -*)
+    echo "$progname: unrecognized option \`$option'" 1>&2
+    echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    if test -z "$ltmain"; then
+      ltmain="$option"
+    elif test -z "$host"; then
+# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
+#      if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
+#        echo "$progname: warning \`$option' is not a valid host type" 1>&2
+#      fi
+      host="$option"
+    else
+      echo "$progname: too many arguments" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi ;;
+  esac
+done
+
+if test -z "$ltmain"; then
+  echo "$progname: you must specify a LTMAIN file" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+if test ! -f "$ltmain"; then
+  echo "$progname: \`$ltmain' does not exist" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+# Quote any args containing shell metacharacters.
+ltconfig_args=
+for arg
+do
+  case "$arg" in
+  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ltconfig_args="$ltconfig_args '$arg'" ;;
+  *) ltconfig_args="$ltconfig_args $arg" ;;
+  esac
+done
+
+# A relevant subset of AC_INIT.
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 5 compiler messages saved in config.log
+# 6 checking for... messages and results
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>>./config.log
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
+if test "X${LANG+set}"   = Xset; then LANG=C;   export LANG;   fi
+
+if test -n "$cache_file" && test -r "$cache_file"; then
+  echo "loading cache $cache_file within ltconfig"
+  . $cache_file
+fi
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='       '
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+if test -z "$srcdir"; then
+  # Assume the source directory is the same one as the path to LTMAIN.
+  srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
+  test "$srcdir" = "$ltmain" && srcdir=.
+fi
+
+trap "$rm conftest*; exit 1" 1 2 15
+if test "$verify_host" = yes; then
+  # Check for config.guess and config.sub.
+  ac_aux_dir=
+  for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+    if test -f $ac_dir/config.guess; then
+      ac_aux_dir=$ac_dir
+      break
+    fi
+  done
+  if test -z "$ac_aux_dir"; then
+    echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+  ac_config_guess=$ac_aux_dir/config.guess
+  ac_config_sub=$ac_aux_dir/config.sub
+
+  # Make sure we can run config.sub.
+  if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
+  else
+    echo "$progname: cannot run $ac_config_sub" 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+
+  host_alias=$host
+  case "$host_alias" in
+  "")
+    if host_alias=`$SHELL $ac_config_guess`; then :
+    else
+      echo "$progname: cannot guess host type; you must specify one" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi ;;
+  esac
+  host=`$SHELL $ac_config_sub $host_alias`
+  echo "$ac_t$host" 1>&6
+
+  # Make sure the host verified.
+  test -z "$host" && exit 1
+
+elif test -z "$host"; then
+  echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
+  echo "$help" 1>&2
+  exit 1
+else
+  host_alias=$host
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case "$host_os" in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+case "$host_os" in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR cru $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+# Set a sane default for `AR'.
+test -z "$AR" && AR=ar
+
+# Set a sane default for `OBJDUMP'.
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+# If RANLIB is not set, then run the test.
+if test "${RANLIB+set}" != "set"; then
+  result=no
+
+  echo $ac_n "checking for ranlib... $ac_c" 1>&6
+  IFS="${IFS=  }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then
+      RANLIB="ranlib"
+      result="ranlib"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  echo "$ac_t$result" 1>&6
+fi
+
+if test -n "$RANLIB"; then
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+fi
+
+# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin.
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$AS" && AS=as
+
+# Check to see if we are using GCC.
+if test "$with_gcc" != yes || test -z "$CC"; then
+  # If CC is not set, then try to find GCC or a usable CC.
+  if test -z "$CC"; then
+    echo $ac_n "checking for gcc... $ac_c" 1>&6
+    IFS="${IFS=        }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then
+       CC="gcc"
+       break
+      fi
+    done
+    IFS="$save_ifs"
+
+    if test -n "$CC"; then
+      echo "$ac_t$CC" 1>&6
+    else
+      echo "$ac_t"no 1>&6
+    fi
+  fi
+
+  # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
+  if test -z "$CC"; then
+    echo $ac_n "checking for cc... $ac_c" 1>&6
+    IFS="${IFS=        }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    cc_rejected=no
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/cc || test -f $dir/cc$ac_exeext; then
+       if test "$dir/cc" = "/usr/ucb/cc"; then
+         cc_rejected=yes
+         continue
+       fi
+       CC="cc"
+       break
+      fi
+    done
+    IFS="$save_ifs"
+    if test $cc_rejected = yes; then
+      # We found a bogon in the path, so make sure we never use it.
+      set dummy $CC
+      shift
+      if test $# -gt 0; then
+       # We chose a different compiler from the bogus one.
+       # However, it has the same name, so the bogon will be chosen
+       # first if we set CC to just the name; use the full file name.
+       shift
+       set dummy "$dir/cc" "$@"
+       shift
+       CC="$@"
+      fi
+    fi
+
+    if test -n "$CC"; then
+      echo "$ac_t$CC" 1>&6
+    else
+      echo "$ac_t"no 1>&6
+    fi
+
+    if test -z "$CC"; then
+      echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
+      exit 1
+    fi
+  fi
+
+  # Now see if the compiler is really GCC.
+  with_gcc=no
+  echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
+  echo "$progname:581: checking whether we are using GNU C" >&5
+
+  $rm conftest.c
+  cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+    with_gcc=yes
+  fi
+  $rm conftest.c
+  echo "$ac_t$with_gcc" 1>&6
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="$2"
+
+echo $ac_n "checking for object suffix... $ac_c" 1>&6
+$rm conftest*
+echo 'int i = 1;' > conftest.c
+echo "$progname:603: checking for object suffix" >& 5
+if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+  # Append any warnings to the config.log.
+  cat conftest.err 1>&5
+
+  for ac_file in conftest.*; do
+    case $ac_file in
+    *.c) ;;
+    *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
+    esac
+  done
+else
+  cat conftest.err 1>&5
+  echo "$progname: failed program was:" >&5
+  cat conftest.c >&5
+fi
+$rm conftest*
+echo "$ac_t$objext" 1>&6
+
+echo $ac_n "checking for executable suffix... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_cv_exeext="no"
+  $rm conftest*
+  echo 'main () { return 0; }' > conftest.c
+  echo "$progname:629: checking for executable suffix" >& 5
+  if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
+    # Append any warnings to the config.log.
+    cat conftest.err 1>&5
+
+    for ac_file in conftest.*; do
+      case $ac_file in
+      *.c | *.err | *.$objext ) ;;
+      *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
+      esac
+    done
+  else
+    cat conftest.err 1>&5
+    echo "$progname: failed program was:" >&5
+    cat conftest.c >&5
+  fi
+  $rm conftest*
+fi
+if test "X$ac_cv_exeext" = Xno; then
+  exeext=""
+else
+  exeext="$ac_cv_exeext"
+fi
+echo "$ac_t$ac_cv_exeext" 1>&6
+
+echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
+pic_flag=
+special_shlib_compile_flags=
+wl=
+link_static_flag=
+no_builtin_flag=
+
+if test "$with_gcc" = yes; then
+  wl='-Wl,'
+  link_static_flag='-static'
+
+  case "$host_os" in
+  beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+    # PIC is the default for these OSes.
+    ;;
+  aix*)
+    # Below there is a dirty hack to force normal static linking with -ldl
+    # The problem is because libdl dynamically linked with both libc and
+    # libC (AIX C++ library), which obviously doesn't included in libraries
+    # list by gcc. This cause undefined symbols with -static flags.
+    # This hack allows C programs to be linked with "-static -ldl", but
+    # we not sure about C++ programs.
+    link_static_flag="$link_static_flag ${wl}-lC"
+    ;;
+  cygwin* | mingw* | os2*)
+    # We can build DLLs from non-PIC.
+    ;;
+  amigaos*)
+    # FIXME: we need at least 68020 code to build shared libraries, but
+    # adding the `-m68020' flag to GCC prevents building anything better,
+    # like `-m68040'.
+    pic_flag='-m68020 -resident32 -malways-restore-a4'
+    ;;
+  sysv4*MP*)
+    if test -d /usr/nec; then
+       pic_flag=-Kconform_pic
+    fi
+    ;;
+  *)
+    pic_flag='-fPIC'
+    ;;
+  esac
+else
+  # PORTME Check for PIC flags for the system compiler.
+  case "$host_os" in
+  aix3* | aix4*)
+    # All AIX code is PIC.
+    link_static_flag='-bnso -bI:/lib/syscalls.exp'
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    # Is there a better link_static_flag that works with the bundled CC?
+    wl='-Wl,'
+    link_static_flag="${wl}-a ${wl}archive"
+    pic_flag='+Z'
+    ;;
+
+  irix5* | irix6*)
+    wl='-Wl,'
+    link_static_flag='-non_shared'
+    # PIC (with -KPIC) is the default.
+    ;;
+
+  cygwin* | mingw* | os2*)
+    # We can build DLLs from non-PIC.
+    ;;
+
+  osf3* | osf4* | osf5*)
+    # All OSF/1 code is PIC.
+    wl='-Wl,'
+    link_static_flag='-non_shared'
+    ;;
+
+  sco3.2v5*)
+    pic_flag='-Kpic'
+    link_static_flag='-dn'
+    special_shlib_compile_flags='-belf'
+    ;;
+
+  solaris*)
+    pic_flag='-KPIC'
+    link_static_flag='-Bstatic'
+    wl='-Wl,'
+    ;;
+
+  sunos4*)
+    pic_flag='-PIC'
+    link_static_flag='-Bstatic'
+    wl='-Qoption ld '
+    ;;
+
+  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    pic_flag='-KPIC'
+    link_static_flag='-Bstatic'
+    wl='-Wl,'
+    ;;
+
+  uts4*)
+    pic_flag='-pic'
+    link_static_flag='-Bstatic'
+    ;;
+  sysv4*MP*)
+    if test -d /usr/nec ;then
+      pic_flag='-Kconform_pic'
+      link_static_flag='-Bstatic'
+    fi
+    ;;
+  *)
+    can_build_shared=no
+    ;;
+  esac
+fi
+
+if test -n "$pic_flag"; then
+  echo "$ac_t$pic_flag" 1>&6
+
+  # Check to make sure the pic_flag actually works.
+  echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
+  $rm conftest*
+  echo "int some_variable = 0;" > conftest.c
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $pic_flag -DPIC"
+  echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
+  if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+    # Append any warnings to the config.log.
+    cat conftest.err 1>&5
+    
+    case "$host_os" in
+    hpux9* | hpux10* | hpux11*)
+      # On HP-UX, both CC and GCC only warn that PIC is supported... then they
+      # create non-PIC objects.  So, if there were any warnings, we assume that
+      # PIC is not supported.
+      if test -s conftest.err; then
+       echo "$ac_t"no 1>&6
+       can_build_shared=no
+       pic_flag=
+      else
+       echo "$ac_t"yes 1>&6
+       pic_flag=" $pic_flag"
+      fi
+      ;;
+    *)
+      echo "$ac_t"yes 1>&6
+      pic_flag=" $pic_flag"
+      ;;
+    esac
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    can_build_shared=no
+    pic_flag=
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+else
+  echo "$ac_t"none 1>&6
+fi
+
+# Check to see if options -o and -c are simultaneously supported by compiler
+echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
+$rm -r conftest 2>/dev/null
+mkdir conftest
+cd conftest
+$rm conftest*
+echo "int some_variable = 0;" > conftest.c
+mkdir out
+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+# that will create temporary files in the current directory regardless of
+# the output directory.  Thus, making CWD read-only will cause this test
+# to fail, enabling locking or at least warning the user not to do parallel
+# builds.
+chmod -w .
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -o out/conftest2.o"
+echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
+if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
+
+  # The compiler can only warn and ignore the option if not recognized
+  # So say no if there are warnings
+    if test -s out/conftest.err; then
+      echo "$ac_t"no 1>&6
+      compiler_c_o=no
+    else
+      echo "$ac_t"yes 1>&6
+      compiler_c_o=yes
+    fi
+else
+  # Append any errors to the config.log.
+  cat out/conftest.err 1>&5
+  compiler_c_o=no
+  echo "$ac_t"no 1>&6
+fi
+CFLAGS="$save_CFLAGS"
+chmod u+w .
+$rm conftest* out/*
+rmdir out
+cd ..
+rmdir conftest
+$rm -r conftest 2>/dev/null
+
+if test x"$compiler_c_o" = x"yes"; then
+  # Check to see if we can write to a .lo
+  echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6
+  $rm conftest*
+  echo "int some_variable = 0;" > conftest.c
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -c -o conftest.lo"
+  echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
+if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
+
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+      if test -s conftest.err; then
+       echo "$ac_t"no 1>&6
+       compiler_o_lo=no
+      else
+       echo "$ac_t"yes 1>&6
+       compiler_o_lo=yes
+      fi
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    compiler_o_lo=no
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+else
+  compiler_o_lo=no
+fi
+
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$ac_t$hard_links" 1>&6
+  $rm conftest*
+  if test "$hard_links" = no; then
+    echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+if test "$with_gcc" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
+  $rm conftest*
+  echo "int some_variable = 0;" > conftest.c
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
+  echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+      if test -s conftest.err; then
+       echo "$ac_t"no 1>&6
+       compiler_rtti_exceptions=no
+      else
+       echo "$ac_t"yes 1>&6
+       compiler_rtti_exceptions=yes
+      fi
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    compiler_rtti_exceptions=no
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+  
+fi
+
+# Check for any special shared library compilation flags.
+if test -n "$special_shlib_compile_flags"; then
+  echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[         ]$special_shlib_compile_flags[  ]" >/dev/null; then :
+  else
+    echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
+    can_build_shared=no
+  fi
+fi
+
+echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
+$rm conftest*
+echo 'main(){return(0);}' > conftest.c
+save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $link_static_flag"
+echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
+if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  echo "$ac_t$link_static_flag" 1>&6
+else
+  echo "$ac_t"none 1>&6
+  link_static_flag=
+fi
+LDFLAGS="$save_LDFLAGS"
+$rm conftest*
+
+if test -z "$LN_S"; then
+  # Check to see if we can use ln -s, or we need hard links.
+  echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
+  $rm conftest.dat
+  if ln -s X conftest.dat 2>/dev/null; then
+    $rm conftest.dat
+    LN_S="ln -s"
+  else
+    LN_S=ln
+  fi
+  if test "$LN_S" = "ln -s"; then
+    echo "$ac_t"yes 1>&6
+  else
+    echo "$ac_t"no 1>&6
+  fi
+fi
+
+# Make sure LD is an absolute path.
+if test -z "$LD"; then
+  ac_prog=ld
+  if test "$with_gcc" = yes; then
+    # Check if gcc -print-prog-name=ld gives a path.
+    echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
+    echo "$progname:991: checking for ld used by GCC" >&5
+    ac_prog=`($CC -print-prog-name=ld) 2>&5`
+    case "$ac_prog" in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+    "")
+      # If it fails, then pretend we are not using GCC.
+      ac_prog=ld
+      ;;
+    *)
+      # If it is relative, then search for the first ld in PATH.
+      with_gnu_ld=unknown
+      ;;
+    esac
+  elif test "$with_gnu_ld" = yes; then
+    echo $ac_n "checking for GNU ld... $ac_c" 1>&6
+    echo "$progname:1015: checking for GNU ld" >&5
+  else
+    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+    echo "$progname:1018: checking for non-GNU ld" >&5
+  fi
+
+  if test -z "$LD"; then
+    IFS="${IFS=        }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+       LD="$ac_dir/$ac_prog"
+       # Check to see if the program is GNU ld.  I'd rather use --version,
+       # but apparently some GNU ld's only accept -v.
+       # Break only if it was the GNU/non-GNU ld that we prefer.
+       if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+         test "$with_gnu_ld" != no && break
+       else
+         test "$with_gnu_ld" != yes && break
+       fi
+      fi
+    done
+    IFS="$ac_save_ifs"
+  fi
+
+  if test -n "$LD"; then
+    echo "$ac_t$LD" 1>&6
+  else
+    echo "$ac_t"no 1>&6
+  fi
+
+  if test -z "$LD"; then
+    echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
+    exit 1
+  fi
+fi
+
+# Check to see if it really is or is not GNU ld.
+echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
+# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+echo "$ac_t$with_gnu_ld" 1>&6
+
+# See if the linker supports building shared libraries.
+echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
+
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+
+case "$host_os" in
+cygwin* | mingw*)
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$with_gcc" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case "$host_os" in
+  aix3* | aix4*)
+    # On AIX, the GNU linker is very broken
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left by newer dlltools.
+    export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+      $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def  $objdir/$soname-ltdll.$objext $libobjs $convenience~
+      sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols'
+
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
+      _lt_hint=1;
+      cat $export_symbols | while read symbol; do
+        set dummy \$symbol;
+        case \$# in
+          2) echo "    \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;;
+          *) echo "     \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;;
+        esac;
+       _lt_hint=`expr 1 + \$_lt_hint`;
+      done~
+      test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+      $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
+      $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
+      $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
+
+      old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' 
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
+      # can we support soname and/or expsyms with a.out? -oliva
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;      
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+        whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+        whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case "$host_os" in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$with_gcc" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4*)
+    hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
+    hardcode_libdir_separator=':'
+    if test "$with_gcc" = yes; then
+      collect2name=`${CC} -print-prog-name=collect2`
+      if test -f "$collect2name" && \
+        strings "$collect2name" | grep resolve_lib_name >/dev/null
+      then
+       # We have reworked collect2
+       hardcode_direct=yes
+      else
+       # We have old collect2
+       hardcode_direct=unsupported
+       # It fails to find uninstalled libraries when the uninstalled
+       # path is not listed in the libpath.  Setting hardcode_minus_L
+       # to unsupported forces relinking
+       hardcode_minus_L=yes
+       hardcode_libdir_flag_spec='-L$libdir'
+       hardcode_libdir_separator=
+      fi
+      shared_flag='-shared'
+    else
+      shared_flag='${wl}-bM:SRE'
+      hardcode_direct=yes
+    fi
+    allow_undefined_flag=' ${wl}-berok'
+    archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
+    archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
+    case "$host_os" in aix4.[01]|aix4.[01].*)
+      # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
+      always_export_symbols=yes ;;
+    esac
+   ;;
+
+  amigaos*)
+    archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs'
+    fix_srcfile_path='`cygpath -w $srcfile`'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case "$host_os" in
+    hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+                        # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    if test "$with_gcc" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts'      # ELF
+    fi
+    hardcode_libdir_flag_spec='${wl}-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$with_gcc" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)  # As osf3* with the addition of the -msym flag
+    if test "$with_gcc" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+  rhapsody*)
+    archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flags_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+                                       
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    ;;
+
+  solaris*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case "$host_os" in
+    solaris2.[0-5] | solaris2.[0-5].*) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    if test "x$host_vendor" = xsequent; then
+      # Use $CC to link under sequent, because it throws in some extra .o 
+      # files that make .init and .fini sections work.
+      archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts'
+    else
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    hardcode_direct=no #Motorola manual says yes, but my tests say they lie 
+    ;;  
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  unixware7*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+echo "$ac_t$ld_shlibs" 1>&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+if test -z "$NM"; then
+  echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
+  case "$NM" in
+  [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path.
+  *)
+    IFS="${IFS=        }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+         NM="$ac_dir/nm -B"
+         break
+       elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+         NM="$ac_dir/nm -p"
+         break
+       else
+         NM=${NM="$ac_dir/nm"} # keep the first match, but
+         continue # so that we can try to find one that supports BSD flags
+       fi
+      fi
+    done
+    IFS="$ac_save_ifs"
+    test -z "$NM" && NM=nm
+    ;;
+  esac
+  echo "$ac_t$NM" 1>&6
+fi
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Define system-specific variables.
+case "$host_os" in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
+  ;;
+irix*)
+  symcode='[BCDEGRST]'
+  ;;
+solaris*)
+  symcode='[BDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[ABCDGISTW]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  global_symbol_pipe="sed -n -e 's/^.*[        ]\($symcode\)[  ][      ]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  $rm conftest*
+  cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  echo "$progname:1653: checking if global_symbol_pipe works" >&5
+  if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+       if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<EOF > conftest.c
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+         # Now generate the symbol file.
+         eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
+
+         cat <<EOF >> conftest.c
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+         sed 's/^. \(.*\) \(.*\)$/  {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
+         cat <<\EOF >> conftest.c
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+         # Now try linking the two files.
+         mv conftest.$objext conftstm.$objext
+         save_LIBS="$LIBS"
+         save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$objext"
+         CFLAGS="$CFLAGS$no_builtin_flag"
+         if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+           pipe_works=yes
+         else
+           echo "$progname: failed program was:" >&5
+           cat conftest.c >&5
+         fi
+         LIBS="$save_LIBS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.c >&5
+  fi
+  $rm conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    global_symbol_pipe=
+  fi
+done
+if test "$pipe_works" = yes; then
+  echo "${ac_t}ok" 1>&6
+else
+  echo "${ac_t}failed" 1>&6
+fi
+
+if test -z "$global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+fi
+
+# Check hardcoding attributes.
+echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$ac_t$hardcode_action" 1>&6
+
+
+reload_flag=
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
+# PORTME Some linkers may need a different reload flag.
+reload_flag='-r'
+echo "$ac_t$reload_flag" 1>&6
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+# PORTME Fill in your ld.so characteristics
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+file_magic_cmd=
+file_magic_test_file=
+deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [regex]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
+case "$host_os" in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4*)
+  version_type=linux
+  # AIX has no versioning support, so currently we can not hardcode correct
+  # soname into executable. Probably we can add versioning support to
+  # collect2, so additional links can be useful in future.
+  # We preserve .a as extension for shared libraries though AIX4.2
+  # and later linker supports .so
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
+  shlibpath_var=LIBPATH
+  deplibs_check_method=pass_all
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  deplibs_check_method=pass_all
+  lt_cv_dlopen="load_add_on"
+  lt_cv_dlopen_libs=
+  lt_cv_dlopen_self=yes
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=/shlib/libc.so
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  if test "$with_gcc" = yes; then
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
+  else
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+  fi
+  dynamic_linker='Win32 ld.exe'
+  deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  file_magic_cmd='${OBJDUMP} -f'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  lt_cv_dlopen="LoadLibrary"
+  lt_cv_dlopen_libs=
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+  
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case "$version_type" in
+    freebsd-elf*)
+      deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+      file_magic_cmd=/usr/bin/file
+      file_magic_test_file=`echo /usr/lib/libc.so*`
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      deplibs_check_method=unknown
+      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case "$host_os" in
+  freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  case "$host_os" in
+  hpux10.20*)
+    # TODO:  Does this work for hpux-11 too?
+    deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    file_magic_cmd=/usr/bin/file
+    file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6*)
+  version_type=irix
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so.$major'
+  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so'
+  case "$host_os" in
+  irix5*)
+    libsuff= shlibsuff=
+    # this will be overridden with pass_all, but let us keep it just in case
+    deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case "$LD" in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  deplibs_check_method='pass_all'
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  deplibs_check_method=pass_all
+
+  if test -f /lib/ld.so.1; then
+    dynamic_linker='GNU ld.so'
+  else
+    # Only the GNU ld.so supports shared libraries on MkLinux.
+    case "$host_cpu" in
+    powerpc*) dynamic_linker=no ;;
+    *) dynamic_linker='Linux ld.so' ;;
+    esac
+  fi
+  ;;
+
+netbsd*)
+  version_type=sunos
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+openbsd*)
+  version_type=sunos
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+    need_version=no
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  # this will be overridden with pass_all, but let us keep it just in case
+  deplibs_check_method='file_magic COFF format alpha shared library'
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=/shlib/libc.so
+  deplibs_check_method='pass_all'
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rhapsody*)
+  version_type=sunos
+  library_names_spec='${libname}.so'
+  soname_spec='${libname}.so'
+  shlibpath_var=DYLD_LIBRARY_PATH
+  deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=/lib/libc.so
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case "$host_vendor" in
+    sequent)
+      file_magic_cmd='/bin/file'
+      deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+      ;;
+    ncr)
+      deplibs_check_method='pass_all'
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+      file_magic_cmd=/usr/bin/file
+      file_magic_test_file=`echo /usr/lib/libc.so*`
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$ac_t$dynamic_linker" 1>&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+# Report the final consequences.
+echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
+
+# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
+# configure.in, otherwise build static only libraries.
+case "$host_os" in
+cygwin* | mingw* | os2*)
+  if test x$can_build_shared = xyes; then
+    test x$enable_win32_dll = xno && can_build_shared=no
+    echo "checking if package supports dlls... $can_build_shared" 1>&6
+  fi
+;;
+esac
+
+if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
+  case "$deplibs_check_method" in
+  "file_magic "*)
+    file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+    if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+       egrep "$file_magic_regex" > /dev/null; then
+      :
+    else
+      cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+    fi ;;
+  esac
+fi
+
+echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+
+echo "$ac_t$enable_shared" 1>&6
+
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+
+echo "checking whether to build static libraries... $enable_static" 1>&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+echo $ac_n "checking for objdir... $ac_c" 1>&6
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+echo "$ac_t$objdir" 1>&6
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
+  lt_cv_dlopen=no lt_cv_dlopen_libs=
+echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+echo "$progname:2248: checking for dlopen in -ldl" >&5
+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldl  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2256 "ltconfig"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo $progname:2269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+echo "$progname:2288: checking for dlopen" >&5
+if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2293 "ltconfig"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+dlopen();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_dlopen=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_dlopen=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
+echo "$progname:2335: checking for dld_link in -ldld" >&5
+ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2343 "ltconfig"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link();
+
+int main() {
+dld_link()
+; return 0; }
+EOF
+if { (eval echo $progname:2356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load""... $ac_c" 1>&6
+echo "$progname:2375: checking for shl_load" >&5
+if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2380 "ltconfig"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+shl_load();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_shl_load=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_shl_load=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="shl_load"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
+echo "$progname:2423: checking for shl_load in -ldld" >&5
+ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2431 "ltconfig"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load();
+
+int main() {
+shl_load()
+; return 0; }
+EOF
+if { (eval echo $progname:2445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+fi
+
+    
+fi
+
+  
+fi
+
+
+fi
+
+fi
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  fi
+
+  case "$lt_cv_dlopen" in
+  dlopen)
+for ac_hdr in dlfcn.h; do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "$progname:2488: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2493 "ltconfig"
+#include <$ac_hdr>
+int fnord = 0;
+EOF
+ac_try="$ac_compile >/dev/null 2>conftest.out"
+{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+    if test "x$ac_cv_header_dlfcn_h" = xyes; then
+      CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    fi
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+  echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
+echo "$progname:2526: checking whether a program can dlopen itself" >&5
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    lt_cv_dlopen_self=cross
+  else
+    cat > conftest.c <<EOF
+#line 2534 "ltconfig"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LTDL_GLOBAL   RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+#  define LTDL_GLOBAL  DL_GLOBAL
+# else
+#  define LTDL_GLOBAL  0
+# endif
+#endif
+
+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LTDL_LAZY_OR_NOW
+# ifdef RTLD_LAZY
+#  define LTDL_LAZY_OR_NOW     RTLD_LAZY
+# else
+#  ifdef DL_LAZY
+#   define LTDL_LAZY_OR_NOW    DL_LAZY
+#  else
+#   ifdef RTLD_NOW
+#    define LTDL_LAZY_OR_NOW   RTLD_NOW
+#   else
+#    ifdef DL_NOW
+#     define LTDL_LAZY_OR_NOW  DL_NOW
+#    else
+#     define LTDL_LAZY_OR_NOW  0
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+fnord() { int i=42;}
+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+              if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
+
+EOF
+if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  lt_cv_dlopen_self=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  lt_cv_dlopen_self=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self" 1>&6
+
+  if test "$lt_cv_dlopen_self" = yes; then
+    LDFLAGS="$LDFLAGS $link_static_flag"
+  echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
+echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    lt_cv_dlopen_self_static=cross
+  else
+    cat > conftest.c <<EOF
+#line 2607 "ltconfig"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LTDL_GLOBAL   RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+#  define LTDL_GLOBAL  DL_GLOBAL
+# else
+#  define LTDL_GLOBAL  0
+# endif
+#endif
+
+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LTDL_LAZY_OR_NOW
+# ifdef RTLD_LAZY
+#  define LTDL_LAZY_OR_NOW     RTLD_LAZY
+# else
+#  ifdef DL_LAZY
+#   define LTDL_LAZY_OR_NOW    DL_LAZY
+#  else
+#   ifdef RTLD_NOW
+#    define LTDL_LAZY_OR_NOW   RTLD_NOW
+#   else
+#    ifdef DL_NOW
+#     define LTDL_LAZY_OR_NOW  DL_NOW
+#    else
+#     define LTDL_LAZY_OR_NOW  0
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+fnord() { int i=42;}
+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+    if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
+
+EOF
+if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  lt_cv_dlopen_self_static=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  lt_cv_dlopen_self_static=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
+fi
+    ;;
+  esac
+
+  case "$lt_cv_dlopen_self" in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case "$lt_cv_dlopen_self_static" in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+# Copy echo and quote the copy, instead of the original, because it is
+# used later.
+ltecho="$echo"
+if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ltecho="$CONFIG_SHELL \$0 --fallback-echo"
+fi
+LTSHELL="$SHELL"
+
+LTCONFIG_VERSION="$VERSION"
+
+# Only quote variables if we're using ltmain.sh.
+case "$ltmain" in
+*.sh)
+  # Now quote all the things that may contain metacharacters.
+  for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \
+    old_LD old_LDFLAGS old_LIBS \
+    old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \
+    AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
+    file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+
+    case "$var" in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case "$ltecho" in
+  *'\$0 --fallback-echo"')
+    ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+  trap "$rm \"$ofile\"; exit 1" 1 2 15
+  echo "creating $ofile"
+  $rm "$ofile"
+  cat <<EOF > "$ofile"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
+#
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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., 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.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+### BEGIN LIBTOOL CONFIG
+EOF
+  cfgfile="$ofile"
+  ;;
+
+*)
+  # Double-quote the variables that need it (for aesthetics).
+  for var in old_CC old_CFLAGS old_CPPFLAGS \
+    old_LD old_LDFLAGS old_LIBS \
+    old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do
+    eval "$var=\\\"\$var\\\""
+  done
+
+  # Just create a config file.
+  cfgfile="$ofile.cfg"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  echo "creating $cfgfile"
+  $rm "$cfgfile"
+  cat <<EOF > "$cfgfile"
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+EOF
+  ;;
+esac
+
+cat <<EOF >> "$cfgfile"
+# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
+# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
+# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
+# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\
+#   $0$ltconfig_args
+#
+# Compiler and other test output produced by $progname, useful for
+# debugging $progname, is in ./config.log if it exists.
+
+# The version of $progname that generated this script.
+LTCONFIG_VERSION=$LTCONFIG_VERSION
+
+# Shell to use when invoking shell scripts.
+SHELL=$LTSHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$ltecho
+
+# The archiver.
+AR=$AR
+
+# The default C compiler.
+CC=$CC
+
+# The linker used to build libraries.
+LD=$LD
+
+# Whether we need hard or soft links.
+LN_S=$LN_S
+
+# A BSD-compatible nm program.
+NM=$NM
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$reload_flag
+reload_cmds=$reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$wl
+
+# Object file suffix (normally "o").
+objext="$objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$pic_flag
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$compiler_c_o
+
+# Can we write directly to a .lo ?
+compiler_o_lo=$compiler_o_lo
+
+# Must we lock files when doing compilation ?
+need_locks=$need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$RANLIB
+old_archive_cmds=$old_archive_cmds
+old_postinstall_cmds=$old_postinstall_cmds
+old_postuninstall_cmds=$old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$old_archive_from_new_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$archive_cmds
+archive_expsym_cmds=$archive_expsym_cmds
+postinstall_cmds=$postinstall_cmds
+postuninstall_cmds=$postuninstall_cmds
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$global_symbol_to_cdecl
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$include_expsyms
+
+EOF
+
+case "$ltmain" in
+*.sh)
+  echo '### END LIBTOOL CONFIG' >> "$ofile"
+  echo >> "$ofile"
+  case "$host_os" in
+  aix3*)
+    cat <<\EOF >> "$ofile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # Append the ltmain.sh script.
+  sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+
+  chmod +x "$ofile"
+  ;;
+
+*)
+  # Compile the libtool program.
+  echo "FIXME: would compile $ltmain"
+  ;;
+esac
+
+test -n "$cache_file" || exit 0
+
+# AC_CACHE_SAVE
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+  case `(ac_space=' '; set | grep ac_space) 2>&1` in
+  *ac_space=\ *)
+    # `set' does not quote correctly, so add quotes (double-quote substitution
+    # turns \\\\ into \\, and sed turns \\ into \).
+    sed -n \
+      -e "s/'/'\\\\''/g" \
+      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+    ;;
+  *)
+    # `set' quotes correctly as required by POSIX, so do not add quotes.
+    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+    ;;
+  esac >> confcache
+if cmp -s $cache_file confcache; then
+  :
+else
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/salome_adm/unix/config_files/DEPRECATED/ltmain.sh b/salome_adm/unix/config_files/DEPRECATED/ltmain.sh
new file mode 100644 (file)
index 0000000..251394b
--- /dev/null
@@ -0,0 +1,4028 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+#
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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., 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.
+
+# 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 "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.3.5
+TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# 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='s/\([\\`\\"$\\\\]\)/\\\1/g'
+SP2NL='tr \040 \012'
+NL2SP='tr \015\012 \040\040'
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+if test "$LTCONFIG_VERSION" != "$VERSION"; then
+  echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+# 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)
+      eval "$prev=\"\$$prev \$arg\""
+      ;;
+    *)
+      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"
+    exit 0
+    ;;
+
+  --config)
+    sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
+    exit 0
+    ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --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 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    case "$nonopt" in
+    *cc | *++ | gcc* | *-gcc*)
+      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 1
+  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=
+    lastarg=
+    srcfile="$nonopt"
+    suppress_output=
+
+    user_target=no
+    for arg
+    do
+      # Accept any command-line options.
+      case "$arg" in
+      -o)
+       if test "$user_target" != "no"; then
+         $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+         exit 1
+       fi
+       user_target=next
+       ;;
+
+      -static)
+       build_old_libs=yes
+       continue
+       ;;
+      esac
+
+      case "$user_target" in
+      next)
+       # The next one is the -o target name
+       user_target=yes
+       continue
+       ;;
+      yes)
+       # We got the output file
+       user_target=set
+       libobj="$arg"
+       continue
+       ;;
+      esac
+
+      # Accept the current argument as the source file.
+      lastarg="$srcfile"
+      srcfile="$arg"
+
+      # Aesthetically quote the previous argument.
+
+      # Backslashify any backslashes, double quotes, and dollar signs.
+      # These are the only characters that are still specially
+      # interpreted inside of double-quoted scrings.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly in scan
+      # sets, so we specify it separately.
+      case "$lastarg" in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       lastarg="\"$lastarg\""
+       ;;
+      esac
+
+      # Add the previous argument to base_compile.
+      if test -z "$base_compile"; then
+       base_compile="$lastarg"
+      else
+       base_compile="$base_compile $lastarg"
+      fi
+    done
+
+    case "$user_target" in
+    set)
+      ;;
+    no)
+      # Get the name of the library object.
+      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    *)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSfmso]'
+    case "$libobj" in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    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 1
+      ;;
+    esac
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $libobj"
+    else
+      removelist="$libobj"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # 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 1" 1 2 15
+    else
+      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 ln "$0" "$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 1
+      fi
+      echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      # All platforms use -DPIC, to notify preprocessed assembler code.
+      command="$base_compile $srcfile $pic_flag -DPIC"
+      if test "$build_old_libs" = yes; then
+       lo_libobj="$libobj"
+       dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+       if test "X$dir" = "X$libobj"; then
+         dir="$objdir"
+       else
+         dir="$dir/$objdir"
+       fi
+       libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+
+       if test -d "$dir"; then
+         $show "$rm $libobj"
+         $run $rm $libobj
+       else
+         $show "$mkdir $dir"
+         $run $mkdir $dir
+         status=$?
+         if test $status -ne 0 && test ! -d $dir; then
+           exit $status
+         fi
+       fi
+      fi
+      if test "$compiler_o_lo" = yes; then
+       output_obj="$libobj"
+       command="$command -o $output_obj"
+      elif test "$compiler_c_o" = yes; then
+       output_obj="$obj"
+       command="$command -o $output_obj"
+      fi
+
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       test -n "$output_obj" && $run $rm $removelist
+       exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+        test x"`cat $lockfile 2>/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 1
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test x"$output_obj" != x"$libobj"; then
+       $show "$mv $output_obj $libobj"
+       if $run $mv $output_obj $libobj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # If we have no pic_flag, then copy the object into place and finish.
+      if test -z "$pic_flag" && test "$build_old_libs" = yes; then
+       # Rename the .lo from within objdir to obj
+       if test -f $obj; then
+         $show $rm $obj
+         $run $rm $obj
+       fi
+
+       $show "$mv $libobj $obj"
+       if $run $mv $libobj $obj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+
+       xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+       if test "X$xdir" = "X$obj"; then
+         xdir="."
+       else
+         xdir="$xdir"
+       fi
+       baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
+       libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+       # Now arrange that obj and lo_libobj become the same file
+       $show "(cd $xdir && $LN_S $baseobj $libobj)"
+       if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
+         exit 0
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      command="$base_compile $srcfile"
+      if test "$compiler_c_o" = yes; then
+       command="$command -o $obj"
+       output_obj="$obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       $run $rm $removelist
+       exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+        test x"`cat $lockfile 2>/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 1
+      fi
+
+      # Just move the object if needed
+      if 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
+
+      # Create an invalid libtool object if no PIC, so that we do not
+      # accidentally link it into a program.
+      if test "$build_libtool_libs" != yes; then
+       $show "echo timestamp > $libobj"
+       $run eval "echo timestamp > \$libobj" || exit $?
+      else
+       # Move the .lo from within objdir
+       $show "$mv $libobj $lo_libobj"
+       if $run $mv $libobj $lo_libobj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+    fi
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $rm "$lockfile"
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link)
+    modename="$modename: link"
+    case "$host" in
+    *-*-cygwin* | *-*-mingw* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invokation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+      # This is a source program that is used to create import libraries
+      # on Windows for dlls which lack them. Don't remove nor modify the
+      # starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999 Free Software Foundation, Inc.
+# 
+#  This file is part of GNU libtool.
+# 
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+# 
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+# 
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+# 
+#  #include <stdio.h>          /* for printf() */
+#  #include <unistd.h>         /* for open(), lseek(), read() */
+#  #include <fcntl.h>          /* for O_RDONLY, O_BINARY */
+#  #include <string.h>         /* for strdup() */
+# 
+#  static unsigned int
+#  pe_get16 (fd, offset)
+#       int fd;
+#       int offset;
+#  {
+#    unsigned char b[2];
+#    lseek (fd, offset, SEEK_SET);
+#    read (fd, b, 2);
+#    return b[0] + (b[1]<<8);
+#  }
+# 
+#  static unsigned int
+#  pe_get32 (fd, offset)
+#      int fd;
+#      int offset;
+#  {
+#    unsigned char b[4];
+#    lseek (fd, offset, SEEK_SET);
+#    read (fd, b, 4);
+#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+#  }
+# 
+#  static unsigned int
+#  pe_as32 (ptr)
+#       void *ptr;
+#  {
+#    unsigned char *b = ptr;
+#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+#  }
+# 
+#  int
+#  main (argc, argv)
+#      int argc;
+#      char *argv[];
+#  {
+#      int dll;
+#      unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#      unsigned long export_rva, export_size, nsections, secptr, expptr;
+#      unsigned long name_rvas, nexp;
+#      unsigned char *expdata, *erva;
+#      char *filename, *dll_name;
+# 
+#      filename = argv[1];
+# 
+#      dll = open(filename, O_RDONLY|O_BINARY);
+#      if (!dll)
+#      return 1;
+# 
+#      dll_name = filename;
+#    
+#      for (i=0; filename[i]; i++)
+#      if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+#          dll_name = filename + i +1;
+# 
+#      pe_header_offset = pe_get32 (dll, 0x3c);
+#      opthdr_ofs = pe_header_offset + 4 + 20;
+#      num_entries = pe_get32 (dll, opthdr_ofs + 92);
+# 
+#      if (num_entries < 1) /* no exports */
+#      return 1;
+# 
+#      export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#      export_size = pe_get32 (dll, opthdr_ofs + 100);
+#      nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#      secptr = (pe_header_offset + 4 + 20 +
+#            pe_get16 (dll, pe_header_offset + 4 + 16));
+# 
+#      expptr = 0;
+#      for (i = 0; i < nsections; i++)
+#      {
+#      char sname[8];
+#      unsigned long secptr1 = secptr + 40 * i;
+#      unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+#      unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+#      unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+#      lseek(dll, secptr1, SEEK_SET);
+#      read(dll, sname, 8);
+#      if (vaddr <= export_rva && vaddr+vsize > export_rva)
+#      {
+#          expptr = fptr + (export_rva - vaddr);
+#          if (export_rva + export_size > vaddr + vsize)
+#              export_size = vsize - (export_rva - vaddr);
+#          break;
+#      }
+#      }
+# 
+#      expdata = (unsigned char*)malloc(export_size);
+#      lseek (dll, expptr, SEEK_SET);
+#      read (dll, expdata, export_size);
+#      erva = expdata - export_rva;
+# 
+#      nexp = pe_as32 (expdata+24);
+#      name_rvas = pe_as32 (expdata+32);
+# 
+#      printf ("EXPORTS\n");
+#      for (i = 0; i<nexp; i++)
+#      {
+#      unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+#      printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#      }
+# 
+#      return 0;
+#  }
+# /* impgen.c ends here */
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    linkopts=
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      lib_search_path=
+    fi
+    # now prepend the system-specific ones
+    eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+    
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    link_against_libtool_libs=
+    ltlibs=
+    module=no
+    objs=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case "$arg" in
+      -all-static | -static)
+       if test "X$arg" = "X-all-static"; then
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&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
+
+      # 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=
+           ;;
+         esac
+         ;;
+       expsyms)
+         export_symbols="$arg"
+         if test ! -f "$arg"; then
+           $echo "$modename: symbol file \`$arg' does not exist"
+           exit 1
+         fi
+         prev=
+         continue
+         ;;
+       expsyms_regex)
+         export_symbols_regex="$arg"
+         prev=
+         continue
+         ;;
+       release)
+         release="-$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 1
+           ;;
+         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
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi
+
+      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: not more than one -exported-symbols argument allowed"
+         exit 1
+       fi
+       if test "X$arg" = "X-export-symbols"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       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: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+           $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+           absdir="$dir"
+         fi
+         dir="$absdir"
+         ;;
+       esac
+       case " $deplibs " in
+       *" $arg "*) ;;
+       *) deplibs="$deplibs $arg";;
+       esac
+       case " $lib_search_path " in
+       *" $dir "*) ;;
+       *) lib_search_path="$lib_search_path $dir";;
+       esac
+       case "$host" in
+       *-*-cygwin* | *-*-mingw* | *-*-os2*)
+         dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
+         case ":$dllsearchpath:" in
+         ::) dllsearchpath="$dllsearchdir";;
+         *":$dllsearchdir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
+         esac
+         ;;
+       esac
+       ;;
+
+      -l*)
+       if test "$arg" = "-lc"; then
+         case "$host" in
+         *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
+           # These systems don't actually have c library (as such)
+           continue
+           ;;
+         esac
+       elif test "$arg" = "-lm"; then
+         case "$host" in
+         *-*-cygwin* | *-*-beos*)
+           # These systems don't actually have math library (as such)
+           continue
+           ;;
+         esac
+       fi
+       deplibs="$deplibs $arg"
+       ;;
+
+      -module)
+       module=yes
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -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 1
+         ;;
+       esac
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) xrpath="$xrpath $dir" ;;
+       esac
+       continue
+       ;;
+
+      -static)
+       # If we have no pic_flag, then this is the same as -all-static.
+       if test -z "$pic_flag" && test -n "$link_static_flag"; then
+         compile_command="$compile_command $link_static_flag"
+         finalize_command="$finalize_command $link_static_flag"
+       fi
+       continue
+       ;;
+
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
+
+      -version-info)
+       prev=vinfo
+       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
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*)
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+
+      *.o | *.obj | *.a | *.lib)
+       # A standard object.
+       objs="$objs $arg"
+       ;;
+
+      *.lo)
+       # A library object.
+       if test "$prev" = dlfiles; then
+         dlfiles="$dlfiles $arg"
+         if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
+           prev=
+           continue
+         else
+           # If libtool objects are unsupported, then we need to preload.
+           prev=dlprefiles
+         fi
+       fi
+
+       if test "$prev" = dlprefiles; then
+         # Preload the old-style object.
+         dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
+         prev=
+       fi
+       libobjs="$libobjs $arg"
+       ;;
+
+      *.la)
+       # A libtool-controlled library.
+
+       dlname=
+       libdir=
+       library_names=
+       old_library=
+
+       # Check to see that this really is a libtool archive.
+       if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
+         exit 1
+       fi
+
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variable installed.
+       installed=yes
+
+       # Read the .la file
+       # If there is no directory component, then add one.
+       case "$arg" in
+       */* | *\\*) . $arg ;;
+       *) . ./$arg ;;
+       esac
+
+       # 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 \`$arg'" 1>&2
+         exit 1
+       fi
+
+       # Find the relevant object directory and library name.
+       name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
+
+       if test "X$installed" = Xyes; then
+         dir="$libdir"
+       else
+         dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+         if test "X$dir" = "X$arg"; then
+           dir="$objdir"
+         else
+           dir="$dir/$objdir"
+         fi
+       fi
+
+       if test -n "$dependency_libs"; then
+         # Extract -R and -L from dependency_libs
+         temp_deplibs=
+         for deplib in $dependency_libs; do
+           case "$deplib" in
+           -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+                case " $rpath $xrpath " in
+                *" $temp_xrpath "*) ;;
+                *) xrpath="$xrpath $temp_xrpath";;
+                esac;;
+           -L*) case "$compile_command $temp_deplibs " in
+                *" $deplib "*) ;;
+                *) temp_deplibs="$temp_deplibs $deplib";;
+                esac
+                temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+                case " $lib_search_path " in
+                *" $temp_dir "*) ;;
+                *) lib_search_path="$lib_search_path $temp_dir";;
+                esac
+                ;;
+           *) temp_deplibs="$temp_deplibs $deplib";;
+           esac
+         done
+         dependency_libs="$temp_deplibs"
+       fi
+
+       if test -z "$libdir"; then
+         # It is a libtool convenience library, so add in its objects.
+         convenience="$convenience $dir/$old_library"
+         old_convenience="$old_convenience $dir/$old_library"
+         deplibs="$deplibs$dependency_libs"
+         compile_command="$compile_command $dir/$old_library$dependency_libs"
+         finalize_command="$finalize_command $dir/$old_library$dependency_libs"
+         continue
+       fi
+
+       # This library was specified with -dlopen.
+       if test "$prev" = dlfiles; then
+         dlfiles="$dlfiles $arg"
+         if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking statically,
+           # we need to preload.
+           prev=dlprefiles
+         else
+           # We should not create a dependency on this library, but we
+           # may need any libraries it requires.
+           compile_command="$compile_command$dependency_libs"
+           finalize_command="$finalize_command$dependency_libs"
+           prev=
+           continue
+         fi
+       fi
+
+       # The library was specified with -dlpreopen.
+       if test "$prev" = dlprefiles; then
+         # Prefer using a static library (so that no silly _DYNAMIC symbols
+         # are required to link).
+         if test -n "$old_library"; then
+           dlprefiles="$dlprefiles $dir/$old_library"
+         else
+           dlprefiles="$dlprefiles $dir/$linklib"
+         fi
+         prev=
+       fi
+
+       if test -n "$library_names" &&
+          { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+         link_against_libtool_libs="$link_against_libtool_libs $arg"
+         if test -n "$shlibpath_var"; then
+           # Make sure the rpath contains only unique directories.
+           case "$temp_rpath " in
+           *" $dir "*) ;;
+           *) temp_rpath="$temp_rpath $dir" ;;
+           esac
+         fi
+
+         # 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
+             $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+             absdir="$dir"
+           fi
+           ;;
+         esac
+         
+         # This is the magic to use -rpath.
+         # Skip directories that are in the system default run-time
+         # search path, unless they have been requested with -R.
+         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
+
+         lib_linked=yes
+         case "$hardcode_action" in
+         immediate | unsupported)
+           if test "$hardcode_direct" = no; then
+             compile_command="$compile_command $dir/$linklib"
+             deplibs="$deplibs $dir/$linklib"
+             case "$host" in
+             *-*-cygwin* | *-*-mingw* | *-*-os2*)
+               dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
+               if test -n "$dllsearchpath"; then
+                 dllsearchpath="$dllsearchpath:$dllsearchdir"
+               else
+                 dllsearchpath="$dllsearchdir"
+               fi
+               ;;
+             esac
+           elif test "$hardcode_minus_L" = no; then
+             case "$host" in
+             *-*-sunos*)
+               compile_shlibpath="$compile_shlibpath$dir:"
+               ;;
+             esac
+             case "$compile_command " in
+             *" -L$dir "*) ;;
+             *) compile_command="$compile_command -L$dir";;
+             esac
+             compile_command="$compile_command -l$name"
+             deplibs="$deplibs -L$dir -l$name"
+           elif test "$hardcode_shlibpath_var" = no; then
+             case ":$compile_shlibpath:" in
+             *":$dir:"*) ;;
+             *) compile_shlibpath="$compile_shlibpath$dir:";;
+             esac
+             compile_command="$compile_command -l$name"
+             deplibs="$deplibs -l$name"
+           else
+             lib_linked=no
+           fi
+           ;;
+
+         relink)
+           if test "$hardcode_direct" = yes; then
+             compile_command="$compile_command $absdir/$linklib"
+             deplibs="$deplibs $absdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             case "$compile_command " in
+             *" -L$absdir "*) ;;
+             *) compile_command="$compile_command -L$absdir";;
+             esac
+             compile_command="$compile_command -l$name"
+             deplibs="$deplibs -L$absdir -l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case ":$compile_shlibpath:" in
+             *":$absdir:"*) ;;
+             *) compile_shlibpath="$compile_shlibpath$absdir:";;
+             esac
+             compile_command="$compile_command -l$name"
+             deplibs="$deplibs -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 1
+         fi
+
+         # Finalize command for both is simple: just hardcode it.
+         if test "$hardcode_direct" = yes; then
+           finalize_command="$finalize_command $libdir/$linklib"
+         elif test "$hardcode_minus_L" = yes; then
+           case "$finalize_command " in
+           *" -L$libdir "*) ;;
+           *) finalize_command="$finalize_command -L$libdir";;
+           esac
+           finalize_command="$finalize_command -l$name"
+         elif test "$hardcode_shlibpath_var" = yes; then
+           case ":$finalize_shlibpath:" in
+           *":$libdir:"*) ;;
+           *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
+           esac
+           finalize_command="$finalize_command -l$name"
+         else
+           # We cannot seem to hardcode it, guess we'll fake it.
+           case "$finalize_command " in
+           *" -L$dir "*) ;;
+           *) finalize_command="$finalize_command -L$libdir";;
+           esac
+           finalize_command="$finalize_command -l$name"
+         fi
+       else
+         # Transform directly to old archives if we don't build new libraries.
+         if test -n "$pic_flag" && test -z "$old_library"; then
+           $echo "$modename: cannot find static library for \`$arg'" 1>&2
+           exit 1
+         fi
+
+         # 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_command="$compile_command $dir/$linklib"
+           finalize_command="$finalize_command $dir/$linklib"
+         else
+           case "$compile_command " in
+           *" -L$dir "*) ;;
+           *) compile_command="$compile_command -L$dir";;
+           esac
+           compile_command="$compile_command -l$name"
+           case "$finalize_command " in
+           *" -L$dir "*) ;;
+           *) finalize_command="$finalize_command -L$dir";;
+           esac
+           finalize_command="$finalize_command -l$name"
+         fi
+       fi
+
+       # Add in any libraries that this one depends upon.
+       compile_command="$compile_command$dependency_libs"
+       finalize_command="$finalize_command$dependency_libs"
+       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
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*)
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+      esac
+
+      # 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
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    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"
+
+    case "$output" in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+
+    *.a | *.lib)
+      if test -n "$link_against_libtool_libs"; then
+       $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
+       exit 1
+      fi
+
+      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' 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"
+      ;;
+
+    *.la)
+      # 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 libname=\"$libname_spec\"
+       ;;
+      *)
+       if test "$module" = no; then
+         $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       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 libname=\"$libname_spec\"
+       else
+         libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+       fi
+       ;;
+      esac
+
+      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
+
+      if test -n "$objs"; then
+       $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
+       exit 1
+      fi
+
+      # How the heck are we supposed to write a wrapper for a shared library?
+      if test -n "$link_against_libtool_libs"; then
+        $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
+        exit 1
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen' 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.
+         libext=al
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+       dependency_libs="$deplibs"
+
+       if test -n "$vinfo"; then
+         $echo "$modename: warning: \`-version-info' 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.
+       IFS="${IFS=     }"; 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 1
+       fi
+
+       current="$2"
+       revision="$3"
+       age="$4"
+
+       # Check that each of the things are valid numbers.
+       case "$current" in
+       [0-9]*) ;;
+       *)
+         $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       case "$revision" in
+       [0-9]*) ;;
+       *)
+         $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       case "$age" in
+       [0-9]*) ;;
+       *)
+         $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       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 1
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case "$version_type" in
+       none) ;;
+
+       irix)
+         major=`expr $current - $age + 1`
+         versuffix="$major.$revision"
+         verstring="sgi$major.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test $loop != 0; do
+           iface=`expr $revision - $loop`
+           loop=`expr $loop - 1`
+           verstring="sgi$major.$iface:$verstring"
+         done
+         ;;
+
+       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 != 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"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current";
+         ;;
+
+       windows)
+         # Like Linux, but with '-' rather than '.', since we only
+         # want one extension on Windows 95.
+         major=`expr $current - $age`
+         versuffix="-$major-$age-$revision"
+         ;;
+
+       *)
+         $echo "$modename: unknown library version type \`$version_type'" 1>&2
+         echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+         exit 1
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         verstring="0.0"
+         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
+
+       dependency_libs="$deplibs"
+       case "$host" in
+       *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
+         # these systems don't actually have a c library (as such)!
+         ;;
+        *-*-rhapsody*)
+         # rhapsody is a little odd...
+         deplibs="$deplibs -framework System"
+         ;;
+       *)
+         # Add libc to deplibs on all other systems.
+         deplibs="$deplibs -lc"
+         ;;
+       esac
+      fi
+
+      # Create the output directory, or remove our outputs if we need to.
+      if test -d $output_objdir; then
+       $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
+       $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
+      else
+       $show "$mkdir $output_objdir"
+       $run $mkdir $output_objdir
+       status=$?
+       if test $status -ne 0 && test ! -d $output_objdir; then
+         exit $status
+       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
+
+      if test "$build_libtool_libs" = yes; then
+       # 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 behaviour.
+         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 <<EOF
+         int main() { return 0; }
+EOF
+         $rm conftest
+         $CC -o conftest conftest.c $deplibs
+         if test $? -eq 0 ; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+             # If $name is empty we are operating on a -L argument.
+             if test "$name" != "" ; then
+               libname=`eval \\$echo \"$libname_spec\"`
+               deplib_matches=`eval \\$echo \"$library_names_spec\"`
+               set dummy $deplib_matches
+               deplib_match=$2
+               if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                 newdeplibs="$newdeplibs $i"
+               else
+                 droppeddeps=yes
+                 echo
+                 echo "*** Warning: This library needs some functionality provided by $i."
+                 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."
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         else
+           # Error occured in the first compile.  Let's try to salvage the situation:
+           # Compile a seperate program for each library.
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+            # If $name is empty we are operating on a -L argument.
+             if test "$name" != "" ; then
+               $rm conftest
+               $CC -o conftest conftest.c $i
+               # Did it work?
+               if test $? -eq 0 ; then
+                 ldd_output=`ldd conftest`
+                 libname=`eval \\$echo \"$libname_spec\"`
+                 deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                 set dummy $deplib_matches
+                 deplib_match=$2
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   newdeplibs="$newdeplibs $i"
+                 else
+                   droppeddeps=yes
+                   echo
+                   echo "*** Warning: This library needs some functionality provided by $i."
+                   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."
+                 fi
+               else
+                 droppeddeps=yes
+                 echo
+                 echo "*** Warning!  Library $i is needed by this library but I was not able to"
+                 echo "***  make it link in!  You will probably need to install it or some"
+                 echo "*** library that it depends on before this library will be fully"
+                 echo "*** functional.  Installing it before continuing would be even better."
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method
+         file_magic_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 "$name" != "" ; then
+             libname=`eval \\$echo \"$libname_spec\"`
+             for i in $lib_search_path; do
+                   potential_libs=`ls $i/$libname[.-]* 2>/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
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               echo "*** Warning: This library needs some functionality provided by $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."
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=""
+         if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+              -e 's/ -[LR][^ ]*//g' -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
+
+       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."
+         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
+       # Get the real and link names of the library.
+       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
+
+       lib="$output_objdir/$realname"
+       for link
+       do
+         linknames="$linknames $link"
+       done
+
+       # Ensure that we have .o objects for linkers which dislike .lo
+       # (e.g. aix) in case we are running --disable-static
+       for obj in $libobjs; do
+         xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+         if test "X$xdir" = "X$obj"; then
+           xdir="."
+         else
+           xdir="$xdir"
+         fi
+         baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+         oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+         if test ! -f $xdir/$oldobj; then
+           $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+           $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+         fi
+       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
+           eval cmds=\"$export_symbols_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS='~'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             $show "$cmd"
+             $run eval "$cmd" || exit $?
+           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
+
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         else
+           gentop="$output_objdir/${outputname}x"
+           $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
+           generated="$generated $gentop"
+
+           for xlib in $convenience; do
+             # Extract the objects.
+             case "$xlib" in
+             [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+             *) xabs=`pwd`"/$xlib" ;;
+             esac
+             xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+             xdir="$gentop/$xlib"
+
+             $show "${rm}r $xdir"
+             $run ${rm}r "$xdir"
+             $show "mkdir $xdir"
+             $run mkdir "$xdir"
+             status=$?
+             if test $status -ne 0 && test ! -d "$xdir"; then
+               exit $status
+             fi
+             $show "(cd $xdir && $AR x $xabs)"
+             $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+             libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+           done
+         fi
+       fi
+
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         linkopts="$linkopts $flag"
+       fi
+
+       # Do each of the archive commands.
+       if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+         eval cmds=\"$archive_expsym_cmds\"
+       else
+         eval cmds=\"$archive_cmds\"
+       fi
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
+
+       # 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
+      ;;
+
+    *.lo | *.o | *.obj)
+      if test -n "$link_against_libtool_libs"; then
+       $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
+       exit 1
+      fi
+
+      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"; then
+         $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+         exit 1
+       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"
+         $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
+         generated="$generated $gentop"
+
+         for xlib in $convenience; do
+           # Extract the objects.
+           case "$xlib" in
+           [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+           *) xabs=`pwd`"/$xlib" ;;
+           esac
+           xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+           xdir="$gentop/$xlib"
+
+           $show "${rm}r $xdir"
+           $run ${rm}r "$xdir"
+           $show "mkdir $xdir"
+           $run mkdir "$xdir"
+           status=$?
+           if test $status -ne 0 && test ! -d "$xdir"; then
+             exit $status
+           fi
+           $show "(cd $xdir && $AR x $xabs)"
+           $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+           reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+         done
+       fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $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 0
+      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 0
+      fi
+
+      if test -n "$pic_flag"; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output="$libobj"
+       eval cmds=\"$reload_cmds\"
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
+      else
+       # Just create a symlink.
+       $show $rm $libobj
+       $run $rm $libobj
+       xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+       if test "X$xdir" = "X$libobj"; then
+         xdir="."
+       else
+         xdir="$xdir"
+       fi
+       baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+       oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+       $show "(cd $xdir && $LN_S $oldobj $baseobj)"
+       $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+      fi
+
+      if test -n "$gentop"; then
+       $show "${rm}r $gentop"
+       $run ${rm}r $gentop
+      fi
+
+      exit 0
+      ;;
+
+    # Anything else should be a program.
+    *)
+      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" = 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
+    
+      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 "$compile_rpath " in
+         *" $libdir "*) ;;
+         *) compile_rpath="$compile_rpath $libdir" ;;
+         esac
+         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
+      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"
+
+      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 binary in the object directory, then wrap it.
+      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
+
+      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" | $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/$output.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/$output.exp"'
+             $run eval 'grep -f "$output_objdir/$output.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" | sort +2 | 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_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+           sed -n -e 's/^: \([^ ]*\) $/  {\"\1\", (lt_ptr_t) 0},/p' \
+               -e 's/^. \([^ ]*\) \([^ ]*\)$/  {"\2", (lt_ptr_t) \&\2},/p' \
+                 < "$nlist" >> "$output_objdir/$dlsyms"
+
+           $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr_t) 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 -DPIC -DFREEBSD_WORKAROUND";;
+           esac;;
+         *-*-hpux*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag -DPIC";;
+           esac
+         esac
+
+         # Now compile the dynamic symbol file.
+         $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+         $run eval '(cd $output_objdir && $CC -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 1
+         ;;
+       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 -z "$link_against_libtool_libs" || 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 "$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
+       relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+       case "$0" in
+       [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+       *) qecho="$SHELL `pwd`/$0 --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
+       $rm $output
+       trap "$rm $output; exit 1" 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.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  link_against_libtool_libs='$link_against_libtool_libs'
+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'
+  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 (cd \"\$thisdir\" && eval \$relink_command); then :
+      else
+       $rm \"\$progdir/\$file\"
+       exit 1
+      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
+         # win32 systems need to use the prog path for dll
+         # lookup to work
+       *-*-cygwin*)
+         $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+         ;;
+
+       # Backslashes separate directories on plain windows
+       *-*-mingw | *-*-os2*)
+         $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+         ;;
+
+       *)
+         $echo >> $output "\
+      # Export the path to the program.
+      PATH=\"\$progdir:\$PATH\"
+      export PATH
+
+      exec \$program \${1+\"\$@\"}
+"
+         ;;
+       esac
+       $echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    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 1
+  fi
+fi\
+"
+       chmod +x $output
+      fi
+      exit 0
+      ;;
+    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="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+       fi
+       addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+       gentop="$output_objdir/${outputname}x"
+       $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
+       generated="$generated $gentop"
+         
+       # Add in members from convenience archives.
+       for xlib in $addlibs; do
+         # Extract the objects.
+         case "$xlib" in
+         [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+         *) xabs=`pwd`"/$xlib" ;;
+         esac
+         xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+         xdir="$gentop/$xlib"
+
+         $show "${rm}r $xdir"
+         $run ${rm}r "$xdir"
+         $show "mkdir $xdir"
+         $run mkdir "$xdir"
+         status=$?
+         if test $status -ne 0 && test ! -d "$xdir"; then
+           exit $status
+         fi
+         $show "(cd $xdir && $AR x $xabs)"
+         $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+         oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+       done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       eval cmds=\"$old_archive_from_new_cmds\"
+      else
+       # Ensure that we have .o objects in place in case we decided
+       # not to build a shared library, and have fallen back to building
+       # static libs even though --disable-static was passed!
+       for oldobj in $oldobjs; do
+         if test ! -f $oldobj; then
+           xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+           if test "X$xdir" = "X$oldobj"; then
+             xdir="."
+           else
+             xdir="$xdir"
+           fi
+           baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+           obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+           $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+           $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+         fi
+       done
+
+       eval cmds=\"$old_archive_cmds\"
+      fi
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       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"
+
+      if test -n "$xrpath"; then
+       temp_xrpath=
+       for libdir in $xrpath; do
+         temp_xrpath="$temp_xrpath -R$libdir"
+       done
+       dependency_libs="$temp_xrpath $dependency_libs"
+      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
+         fi
+         $rm $output
+         $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='$dlname'
+
+# 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
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'\
+"
+       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 0
+    ;;
+
+  # 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; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case "$arg" in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       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
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \      ]*|*]*)
+      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
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       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 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    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 1
+    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 1
+      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 1
+         ;;
+       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
+      *.a | *.lib)
+       # Do the static libraries later.
+       staticlibs="$staticlibs $file"
+       ;;
+
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (sed -e '2q' $file | egrep "^# 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 1
+       fi
+
+       library_names=
+       old_library=
+       # 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"
+
+       # See the names of the shared library.
+       set dummy $library_names
+       if test -n "$2"; then
+         realname="$2"
+         shift
+         shift
+
+         # Install the shared library and build the symlinks.
+         $show "$install_prog $dir/$realname $destdir/$realname"
+         $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
+
+         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"
+         eval cmds=\"$postinstall_cmds\"
+         IFS="${IFS=   }"; save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           $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"`
+         ;;
+       *.o | *.obj)
+         staticdest="$destfile"
+         destfile=
+         ;;
+       *)
+         $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+         ;;
+       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 0
+       ;;
+
+      *)
+       # 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
+
+       # Do a test to see if this is really a libtool program.
+       if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         link_against_libtool_libs=
+         relink_command=
+
+         # If there is no directory component, then add one.
+         case "$file" in
+         */* | *\\*) . $file ;;
+         *) . ./$file ;;
+         esac
+
+         # Check the variables that should have been set.
+         if test -z "$link_against_libtool_libs"; then
+           $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+           exit 1
+         fi
+
+         finalize=yes
+         for lib in $link_against_libtool_libs; 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'`"
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+             finalize=no
+           fi
+         done
+
+         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=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null`
+              if test $? = 0 ; then :
+              else
+                tmpdir="$tmpdir/libtool-$$"
+              fi
+             if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+             else
+               $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+               continue
+             fi
+             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" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+         fi
+       fi
+
+       $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 $?
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $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 $SHELL $0 --finish$current_libdirs
+      exit 1
+    fi
+
+    exit 0
+    ;;
+
+  # 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.
+         eval cmds=\"$finish_cmds\"
+         IFS="${IFS=   }"; save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           $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 0
+
+    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 \`-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 0
+    ;;
+
+  # 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 1
+    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 1
+      fi
+
+      dir=
+      case "$file" in
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (sed -e '2q' $file | egrep "^# 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 1
+       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 1
+       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 | egrep "^# 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 enviroment 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 actually exec the command.
+      eval "exec \$cmd$args"
+
+      $echo "$modename: cannot exec \$cmd$args"
+      exit 1
+    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 0
+    fi
+    ;;
+
+  # libtool uninstall mode
+  uninstall)
+    modename="$modename: uninstall"
+    rm="$nonopt"
+    files=
+
+    for arg
+    do
+      case "$arg" in
+      -*) 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 1
+    fi
+
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$dir" = "X$file" && dir=.
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      rmfiles="$file"
+
+      case "$name" in
+      *.la)
+       # Possibly a libtool archive, so verify it.
+       if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         . $dir/$name
+
+         # Delete the libtool libraries and symlinks.
+         for n in $library_names; do
+           rmfiles="$rmfiles $dir/$n"
+         done
+         test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
+
+         $show "$rm $rmfiles"
+         $run $rm $rmfiles
+
+         if test -n "$library_names"; then
+           # Do each command in the postuninstall commands.
+           eval cmds=\"$postuninstall_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS='~'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             $show "$cmd"
+             $run eval "$cmd"
+           done
+           IFS="$save_ifs"
+         fi
+
+         if test -n "$old_library"; then
+           # Do each command in the old_postuninstall commands.
+           eval cmds=\"$old_postuninstall_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS='~'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             $show "$cmd"
+             $run eval "$cmd"
+           done
+           IFS="$save_ifs"
+         fi
+
+         # FIXME: should reinstall the best remaining shared library.
+       fi
+       ;;
+
+      *.lo)
+       if test "$build_old_libs" = yes; then
+         oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
+         rmfiles="$rmfiles $dir/$oldobj"
+       fi
+       $show "$rm $rmfiles"
+       $run $rm $rmfiles
+       ;;
+
+      *)
+       $show "$rm $rmfiles"
+       $run $rm $rmfiles
+       ;;
+      esac
+    done
+    exit 0
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$generic_help" 1>&2
+  exit 1
+fi # test -z "$show_help"
+
+# 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
+    --version         print version information
+
+MODE must be one of the following:
+
+      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."
+  exit 0
+  ;;
+
+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
+  -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-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -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 1
+  ;;
+esac
+
+echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/salome_adm/unix/config_files/DEPRECATED/missing b/salome_adm/unix/config_files/DEPRECATED/missing
new file mode 100644 (file)
index 0000000..7789652
--- /dev/null
@@ -0,0 +1,190 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+# Franc,ois Pinard <pinard@iro.umontreal.ca>, 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.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+case "$1" in
+
+  -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
+
+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
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing - GNU libit 0.0"
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+  aclocal)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acinclude.m4' or \`configure.in'.  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 missing on your system.  You should only need it if
+         you modified \`configure.in'.  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 missing on your system.  You should only need it if
+         you modified \`acconfig.h' or \`configure.in'.  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.in`
+    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 missing on your system.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
+         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
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  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 missing on your system.  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
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  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."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  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 prerequirements 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
diff --git a/salome_adm/unix/config_files/DEPRECATED/mkinstalldirs b/salome_adm/unix/config_files/DEPRECATED/mkinstalldirs
new file mode 100755 (executable)
index 0000000..6b3b5fc
--- /dev/null
@@ -0,0 +1,40 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+# $Id$
+
+errstatus=0
+
+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
+        fi
+     fi
+
+     pathcomp="$pathcomp/"
+   done
+done
+
+exit $errstatus
+
+# mkinstalldirs ends here
diff --git a/salome_adm/unix/config_files/Makefile.am b/salome_adm/unix/config_files/Makefile.am
new file mode 100644 (file)
index 0000000..3167528
--- /dev/null
@@ -0,0 +1,83 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+
+# The deprecated files are deprecated for the KERNEL but not for the
+# related modules (GUI, MED, ...). Some files have to be installed.
+DEPRECATED_FILES=\
+       DEPRECATED/ac_cc_warnings.m4 \
+       DEPRECATED/ac_cxx_bool.m4 \
+       DEPRECATED/ac_cxx_mutable.m4 \
+       DEPRECATED/ac_cxx_partial_specialization.m4 \
+       DEPRECATED/ac_cxx_typename.m4 \
+       DEPRECATED/check_mico.m4 \
+       DEPRECATED/check_pthreads.m4 \
+       DEPRECATED/config.sub \
+       DEPRECATED/config.guess \
+       DEPRECATED/install-sh \
+       DEPRECATED/libtool.m4 \
+       DEPRECATED/ltconfig \
+       DEPRECATED/ltmain.sh
+
+## The following scripts are required for modules not built with autotools
+#dist_salomem4_SCRIPTS=\
+#      compile \
+#      config.guess \
+#      config.sub \
+#      depcomp \
+#      install-sh \
+#      ltmain.sh \
+#      missing \
+#      py-compile
+
+dist_salomem4_DATA=\
+ac_cxx_depend_flag.m4 \
+ac_cxx_have_sstream.m4 \
+ac_cxx_namespaces.m4 \
+ac_cxx_option.m4 \
+ac_cxx_template_options.m4 \
+ac_cxx_use_std_iostream.m4 \
+ac_cxx_warnings.m4 \
+ac_linker_options.m4 \
+acx_pthread.m4 \
+check_Kernel.m4 \
+check_boost.m4 \
+check_cas.m4 \
+check_corba.m4 \
+check_cppunit.m4 \
+check_f77.m4 \
+check_hdf5.m4 \
+check_htmlgen.m4 \
+check_lam.m4 \
+check_lsf.m4 \
+check_mpi.m4 \
+check_mpich.m4 \
+check_omniorb.m4 \
+check_opengl.m4 \
+check_openpbs.m4 \
+check_qt.m4 \
+check_sockets.m4 \
+check_swig.m4 \
+check_withihm.m4 \
+enable_pthreads.m4 \
+production.m4 \
+pyembed.m4 \
+python.m4 \
+$(DEPRECATED_FILES)
diff --git a/salome_adm/unix/config_files/acx_pthread.m4 b/salome_adm/unix/config_files/acx_pthread.m4
new file mode 100644 (file)
index 0000000..87c8686
--- /dev/null
@@ -0,0 +1,207 @@
+dnl Paul RASCLE: modification for Linux: -pthread required by boost...
+dnl
+dnl Available from the GNU Autoconf Macro Archive at:
+dnl http://www.gnu.org/software/ac-archive/htmldoc/acx_pthread.html
+dnl
+AC_DEFUN([ACX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_SAVE
+AC_LANG_C
+acx_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
+        AC_MSG_RESULT($acx_pthread_ok)
+        if test x"$acx_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case "${host_cpu}-${host_os}" in
+        *linux*)
+
+        # On linux "none" works, but boost requires -pthread, so, try first "-pthread"
+acx_pthread_flags="-pthread pthreads none -Kthread -kthread lthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+        ;;
+
+        *solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthread or
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
+        ;;
+esac
+
+if test x"$acx_pthread_ok" = xno; then
+for flag in $acx_pthread_flags; do
+
+        case $flag in
+                none)
+                AC_MSG_CHECKING([whether pthreads work without any flags])
+                ;;
+
+                -*)
+                AC_MSG_CHECKING([whether pthreads work with $flag])
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+               pthread-config)
+               AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
+               if test x"$acx_pthread_config" = xno; then continue; fi
+               PTHREAD_CFLAGS="`pthread-config --cflags`"
+               PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+               ;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$flag])
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        AC_TRY_LINK([#include <pthread.h>],
+                    [pthread_t th; pthread_join(th, 0);
+                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
+                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+                    [acx_pthread_ok=yes])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        AC_MSG_RESULT($acx_pthread_ok)
+        if test "x$acx_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$acx_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: threads are created detached by default
+        # and the JOINABLE attribute has a nonstandard name (UNDETACHED).
+        AC_MSG_CHECKING([for joinable pthread attribute])
+        AC_TRY_LINK([#include <pthread.h>],
+                    [int attr=PTHREAD_CREATE_JOINABLE;],
+                    ok=PTHREAD_CREATE_JOINABLE, ok=unknown)
+        if test x"$ok" = xunknown; then
+                AC_TRY_LINK([#include <pthread.h>],
+                            [int attr=PTHREAD_CREATE_UNDETACHED;],
+                            ok=PTHREAD_CREATE_UNDETACHED, ok=unknown)
+        fi
+        if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
+                AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok,
+                          [Define to the necessary symbol if this constant
+                           uses a non-standard name on your system.])
+        fi
+        AC_MSG_RESULT(${ok})
+        if test x"$ok" = xunknown; then
+                AC_MSG_WARN([we do not know how to create joinable pthreads])
+        fi
+
+        AC_MSG_CHECKING([if more special flags are required for pthreads])
+        flag=no
+        case "${host_cpu}-${host_os}" in
+                *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+                *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        AC_MSG_RESULT(${flag})
+        if test "x$flag" != xno; then
+                PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with cc_r
+        AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
+else
+        PTHREAD_CC="$CC"
+fi
+
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$acx_pthread_ok" = xyes; then
+        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+        :
+else
+        acx_pthread_ok=no
+        $2
+fi
+AC_LANG_RESTORE
+])dnl ACX_PTHREAD
diff --git a/salome_adm/unix/config_files/check_local.m4 b/salome_adm/unix/config_files/check_local.m4
new file mode 100755 (executable)
index 0000000..6727408
--- /dev/null
@@ -0,0 +1,69 @@
+# Check for Local
+AC_DEFUN([CHECK_LOCAL],
+[
+ dnl AC_ARG_VAR([LOCAL], [])
+ AC_ARG_WITH([local], 
+             AC_HELP_STRING([--with-local],
+                            [tell configure script to use local submission. Default is --with-local.]),
+             [],
+             [withval=yes])
+
+ AC_MSG_CHECKING([for Local])
+
+ if test "x$withval" = "xyes"
+ then
+   WITH_LOCAL=yes
+
+   AC_MSG_RESULT([$withval])
+
+   AC_ARG_VAR([RM], [A path to a rm-like command])
+   AC_PATH_PROG([RM], [rm], [/bin/false])
+   AC_DEFINE_UNQUOTED(RM, "$RM", [A path to a rm-like command])
+
+   AC_ARG_VAR([SH], [A path to a sh-like command])
+   AC_PATH_PROG([SH], [sh], [/bin/false])
+   AC_DEFINE_UNQUOTED(SH, "$SH", [A path to a sh-like command])
+   AC_ARG_VAR([CP], [A path to a cp-like command])
+   AC_PATH_PROG([CP],  [cp],  [/bin/false])
+   AC_DEFINE_UNQUOTED(CP, "$CP", [A path to a cp-like command])
+
+   AC_ARG_VAR([RSH], [A path to a rsh-like command])
+   AC_PATH_PROG([RSH], [rsh], [/bin/false])
+   AC_DEFINE_UNQUOTED(RSH, "$RSH", [A path to a rsh-like command])
+   AC_ARG_VAR([RCP], [A path to a rcp-like command])
+   AC_PATH_PROG([RCP],  [rcp],  [/bin/false])
+   AC_DEFINE_UNQUOTED(RCP, "$RCP", [A path to a rcp-like command])
+
+   AC_ARG_VAR([SSH], [A path to a ssh-like command])
+   AC_PATH_PROG([SSH], [ssh], [/bin/false])
+   AC_DEFINE_UNQUOTED(SSH, "$SSH", [A path to a ssh-like command])
+   AC_ARG_VAR([SCP], [A path to a scp-like command])
+   AC_PATH_PROG([SCP],  [scp],  [/bin/false])
+   AC_DEFINE_UNQUOTED(SCP, "$SCP", [A path to a scp-like command])
+
+
+ else
+   WITH_LOCAL=no
+
+   AC_MSG_RESULT([no])
+
+ fi
+
+ AM_CONDITIONAL(WITH_LOCAL, test $WITH_LOCAL = yes)
+
+ localbatch_ok=$WITH_LOCAL
+ AC_SUBST(WITH_LOCAL)
+ AC_SUBST(RM)
+ AC_SUBST(SH)
+ AC_SUBST(CP)
+ AC_SUBST(RSH)
+ AC_SUBST(RCP)
+ AC_SUBST(SSH)
+ AC_SUBST(SCP)
+
+ dnl _CS_gbo Pour forcer l'utilisation du config.h, inclu
+ dnl par les fichiers Batch_BatchManager_Local_*.cxx 
+ dnl OWN_CONFIG_H=yes
+ dnl AC_SUBST(OWN_CONFIG_H)
+])
+
diff --git a/salome_adm/unix/make_common_starter.am b/salome_adm/unix/make_common_starter.am
new file mode 100644 (file)
index 0000000..220be3f
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# ============================================================
+# This file defines the common definitions used in several
+# Makefile. This file must be included, if needed, by the file
+# Makefile.am.
+# ============================================================
+#
+
+# Standard directory for installation
+salomeincludedir   = $(includedir)/@PACKAGE@
+libdir             = $(prefix)/lib@LIB_LOCATION_SUFFIX@/@PACKAGE@
+bindir             = $(prefix)/bin/@PACKAGE@
+salomescriptdir    = $(bindir)
+
+# Directory for installing idl files
+salomeidldir       = $(prefix)/idl/@PACKAGE@
+
+# Directory for installing resource files
+salomeresdir       = $(prefix)/share/@PACKAGE@/resources
+
+# Directories for installing admin files
+salomeadmdir       = $(prefix)/salome_adm
+salomeadmuxdir     = $(salomeadmdir)/unix
+salomem4dir        = $(salomeadmdir)/unix/config_files
+
+# Shared modules installation directory
+sharedpkgpythondir =$(pkgpythondir)/shared_modules
+
+# Documentation directory
+docdir             = $(datadir)/doc/@PACKAGE@
diff --git a/src/Basics/Makefile.am b/src/Basics/Makefile.am
new file mode 100644 (file)
index 0000000..02dc1f1
--- /dev/null
@@ -0,0 +1,38 @@
+#  Basics: General purpose C++ 
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+salomeinclude_HEADERS       = BasicsGenericDestructor.hxx
+
+lib_LTLIBRARIES             = libSALOMEBasics.la
+libSALOMEBasics_la_SOURCES  = \
+       BasicsGenericDestructor.cxx \
+       BasicsGenericDestructor.hxx
+libSALOMEBasics_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSALOMEBasics_la_CPPFLAGS = @CPPFLAGS@ 
diff --git a/src/Basics/Test/Makefile.am b/src/Basics/Test/Makefile.am
new file mode 100644 (file)
index 0000000..106dfbc
--- /dev/null
@@ -0,0 +1,39 @@
+#  Basics:  General purpose C++
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = BasicMainTest.hxx
+# This include file defines the minimal source file for all test
+# program. It provides the common main function. 
diff --git a/src/Batch/Batch_BatchManager_Local.cxx b/src/Batch/Batch_BatchManager_Local.cxx
new file mode 100644 (file)
index 0000000..5359c3d
--- /dev/null
@@ -0,0 +1,792 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <ctime>
+#include <unistd.h>
+#include <pthread.h>
+#include <signal.h>
+#include <errno.h>
+#include <string.h>
+#include "Batch_IOMutex.hxx"
+#include "Batch_BatchManager_Local.hxx"
+
+namespace Batch {
+
+
+  // Constructeur
+  BatchManager_Local::BatchManager_Local(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager(parent, host), _connect(0), _threads_mutex(), _threads(), _thread_id_id_association_mutex(), _thread_id_id_association_cond(), _thread_id_id_association()
+  {
+    pthread_mutex_init(&_threads_mutex, NULL);
+    pthread_mutex_init(&_thread_id_id_association_mutex, NULL);
+    pthread_cond_init(&_thread_id_id_association_cond, NULL);
+  }
+
+  // Destructeur
+  BatchManager_Local::~BatchManager_Local()
+  {
+    pthread_mutex_destroy(&_threads_mutex);
+    pthread_mutex_destroy(&_thread_id_id_association_mutex);
+    pthread_cond_destroy(&_thread_id_id_association_cond);
+  }
+
+  // Methode pour le controle des jobs : soumet un job au gestionnaire
+  const JobId BatchManager_Local::submitJob(const Job & job)
+  {
+    Job_Local jobLocal = job;
+
+    pthread_t thread_id = submit(jobLocal);
+
+    ostringstream oss;
+    oss << getIdByThread_id(thread_id);
+
+    JobId id(this, oss.str());
+
+    return id;
+  }
+
+  // Methode pour le controle des jobs : retire un job du gestionnaire
+  void BatchManager_Local::deleteJob(const JobId & jobid)
+  {
+    Id id;
+
+    istringstream iss(jobid.getReference());
+    iss >> id;
+
+    // On retrouve le thread_id du thread
+    pthread_t thread_id;
+
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_threads_mutex);
+    if (_threads.find(id) != _threads.end()) 
+      thread_id = _threads[id].thread_id;
+    pthread_mutex_unlock(&_threads_mutex);
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+
+    cancel(thread_id);
+  }
+   
+  // Methode pour le controle des jobs : suspend un job en file d'attente
+  void BatchManager_Local::holdJob(const JobId & jobid)
+  {
+    Id id;
+    istringstream iss(jobid.getReference());
+    iss >> id;
+
+    UNDER_LOCK( cout << "BatchManager is sending HOLD command to the thread " << id << endl );
+
+    // On introduit une commande dans la queue du thread
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_threads_mutex);
+    if (_threads.find(id) != _threads.end()) 
+      _threads[id].command_queue.push(HOLD);
+    pthread_mutex_unlock(&_threads_mutex);
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+  }
+
+  // Methode pour le controle des jobs : relache un job suspendu
+  void BatchManager_Local::releaseJob(const JobId & jobid)
+  {
+    Id id;
+    istringstream iss(jobid.getReference());
+    iss >> id;
+
+    UNDER_LOCK( cout << "BatchManager is sending RELEASE command to the thread " << id << endl );
+
+    // On introduit une commande dans la queue du thread
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_threads_mutex);
+    if (_threads.find(id) != _threads.end()) 
+      _threads[id].command_queue.push(RELEASE);
+    pthread_mutex_unlock(&_threads_mutex);
+     // @@@ --------> SECTION CRITIQUE <-------- @@@
+ }
+
+
+  // Methode pour le controle des jobs : modifie un job en file d'attente
+  void BatchManager_Local::alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)
+  {
+  }
+
+  // Methode pour le controle des jobs : modifie un job en file d'attente
+  void BatchManager_Local::alterJob(const JobId & jobid, const Parametre & param)
+  {
+    alterJob(jobid, param, Environnement());
+  }
+
+  // Methode pour le controle des jobs : modifie un job en file d'attente
+  void BatchManager_Local::alterJob(const JobId & jobid, const Environnement & env)
+  {
+    alterJob(jobid, Parametre(), env);
+  }
+
+
+
+  // Methode pour le controle des jobs : renvoie l'etat du job
+  JobInfo BatchManager_Local::queryJob(const JobId & jobid)
+  {
+    Id id;
+    istringstream iss(jobid.getReference());
+    iss >> id;
+
+    Parametre param;
+    Environnement env;
+
+    //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : AVANT section critique" << endl );
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_threads_mutex);
+    param = _threads[id].param;
+    env   = _threads[id].env;
+    pthread_mutex_unlock(&_threads_mutex);
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : APRES section critique" << endl );
+
+    JobInfo_Local ji(param, env);
+    return ji;
+  }
+
+
+
+  // Methode pour le controle des jobs : teste si un job est present en machine
+  bool BatchManager_Local::isRunning(const JobId & jobid)
+  {
+    Id id;
+    istringstream iss(jobid.getReference());
+    iss >> id;
+
+    Status status;
+
+    //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : AVANT section critique" << endl );
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_threads_mutex);
+    status = _threads[id].status;
+    pthread_mutex_unlock(&_threads_mutex);
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    //UNDER_LOCK( cout << "JobInfo BatchManager_Local::queryJob(const JobId & jobid) : APRES section critique" << endl );
+
+    return (status == RUNNING);
+  }
+
+
+  // Methode d'execution d'un job
+  pthread_t BatchManager_Local::submit(const Job_Local & job)
+  {
+    // L'id du thread a creer
+    pthread_t thread_id = 0;
+
+    // Les attributs du thread a sa creation
+    pthread_attr_t thread_attr;
+    pthread_attr_init(&thread_attr);
+    pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);
+
+    ThreadAdapter * p_ta = new ThreadAdapter(*this, job);
+
+    // Creation du thread qui va executer la commande systeme qu'on lui passe
+    int rc = pthread_create(&thread_id, 
+                           &thread_attr, 
+                           &ThreadAdapter::run, 
+                           static_cast<void *>(p_ta));
+    if (rc) {
+    }
+
+    // Liberation des zones memoire maintenant inutiles occupees par les attributs du thread
+    pthread_attr_destroy(&thread_attr);
+
+    return thread_id;
+  }
+
+
+  // Methode de destruction d'un job
+  void BatchManager_Local::cancel(pthread_t thread_id)
+  {
+    pthread_cancel(thread_id);
+  }
+
+
+  // Fabrique un identifiant unique pour les threads puisque le thread_id n'est pas unique 
+  // au cours du temps (il peut etre reutilise lorsqu'un thread se termine)
+  // ATTENTION : cette methode est uniquement protegee par la section critique de l'association
+  // Thread_id / Id (_thread_id_id_association_mutex)
+  BatchManager_Local::Id BatchManager_Local::nextId() 
+  {
+    static Id id = 0;
+    Id nextId = id++;
+    //UNDER_LOCK( cout << "BatchManager_Local::Id BatchManager_Local::nextId() : Id = " << nextId << endl );
+    return nextId;
+  }
+
+
+  // Retourne l'Id enregistre dans l'association Thread_id / Id et le detruit immediatement
+  BatchManager_Local::Id BatchManager_Local::getIdByThread_id(pthread_t thread_id)
+  {
+    Id id = -1;
+
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_thread_id_id_association_mutex);
+    while (_thread_id_id_association.find(thread_id) == _thread_id_id_association.end()) 
+      pthread_cond_wait(&_thread_id_id_association_cond, &_thread_id_id_association_mutex);
+
+    id = _thread_id_id_association[thread_id];
+    _thread_id_id_association.erase(thread_id);
+    
+    pthread_mutex_unlock(&_thread_id_id_association_mutex);
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+
+    //UNDER_LOCK( cout << "BatchManager_Local::Id BatchManager_Local::getIdByThread_id(pthread_t thread_id) : Id = " << id << " - thread_id = " << thread_id << endl );
+    return id;
+  }
+
+
+  // Associe un Thread_id a un Id nouvellement cree
+  BatchManager_Local::Id BatchManager_Local::registerThread_id(pthread_t thread_id) 
+  {
+    Id id = -1;
+
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_thread_id_id_association_mutex);
+    if (_thread_id_id_association.find(thread_id) == _thread_id_id_association.end()) {
+      id = _thread_id_id_association[thread_id] = nextId();
+      pthread_cond_signal(&_thread_id_id_association_cond);
+
+    } else {
+      UNDER_LOCK( cerr << "ERROR : Pthread Inconstency. Two threads own the same thread_id." << endl );
+    }
+    pthread_mutex_unlock(&_thread_id_id_association_mutex);
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+
+    //UNDER_LOCK( cout << "BatchManager_Local::Id BatchManager_Local::registerThread_id(pthread_t thread_id) : Id = " << id << " - thread_id = " << thread_id << endl );
+    return id;
+  }
+
+
+  // Constructeur de la classe ThreadAdapter
+  BatchManager_Local::ThreadAdapter::ThreadAdapter(BatchManager_Local & bm, const Job_Local & job) :
+    _bm(bm), _job(job)
+  {
+    // Nothing to do
+  }
+
+
+
+  // Methode d'execution du thread
+  void * BatchManager_Local::ThreadAdapter::run(void * arg)
+  {
+    // On bloque tous les signaux pour ce thread
+    sigset_t setmask;
+    sigfillset(&setmask);
+    pthread_sigmask(SIG_BLOCK, &setmask, NULL);
+
+    
+    // On autorise la terminaison differee du thread
+    // (ces valeurs sont les valeurs par defaut mais on les force par precaution)
+    pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,  NULL);
+    pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);
+
+    // On enregistre la fonction de suppression du fils en cas d'arret du thread
+    // Cette fontion sera automatiquement appelee lorsqu'une demande d'annulation
+    // sera prise en compte par pthread_testcancel()
+    pid_t child;
+    pthread_cleanup_push(BatchManager_Local::kill_child_on_exit, static_cast<void *> (&child));
+    pthread_cleanup_push(BatchManager_Local::delete_on_exit, arg);
+
+    ThreadAdapter * p_ta = static_cast<ThreadAdapter *>(arg);
+
+
+
+
+    // Le code retour cumule (ORed) de tous les appels
+    // Nul en cas de reussite de l'ensemble des operations
+    int rc = 0;
+
+    // Cette table contient la liste des fichiers a detruire a la fin du processus
+    std::vector<string> files_to_delete;
+
+
+
+    // On copie les fichiers d'entree pour le fils
+    const Parametre param   = p_ta->_job.getParametre();
+    Parametre::const_iterator it;
+
+    // On initialise la variable workdir a la valeur du Current Working Directory
+    char * cwd = new char [PATH_MAX];
+    getcwd(cwd, PATH_MAX);
+    string workdir = cwd;
+    delete [] cwd;
+
+    if ( (it = param.find(WORKDIR)) != param.end() ) {
+      workdir = static_cast<string>( (*it).second );
+    }
+
+    string executionhost = string(param[EXECUTIONHOST]);
+
+    if ( (it = param.find(INFILE)) != param.end() ) {
+      Versatile V = (*it).second;
+      Versatile::iterator Vit;
+
+      for(Vit=V.begin(); Vit!=V.end(); Vit++) {
+       CoupleType cpt  = *static_cast< CoupleType * >(*Vit);
+       Couple cp       = cpt;
+       string local    = cp.getLocal();
+       string remote   = cp.getRemote();
+
+       string copy_cmd = p_ta->getBatchManager().copy_command("", local, executionhost, workdir + "/" + remote);
+       UNDER_LOCK( cout << "Copying : " << copy_cmd << endl );
+
+       if (system(copy_cmd.c_str()) ) {
+         // Echec de la copie
+         rc |= 1;
+       } else {
+         // On enregistre le fichier comme etant a detruire
+         files_to_delete.push_back(workdir + "/" + remote);
+       }
+
+      }
+    }
+
+
+
+
+
+    // On forke/exec un nouveau process pour pouvoir controler le fils
+    // (plus finement qu'avec un appel system)
+    // int rc = system(commande.c_str());
+    child = fork();
+    if (child < 0) { // erreur
+      UNDER_LOCK( cerr << "Fork impossible (rc=" << child << ")" << endl );
+
+    } else if (child > 0) { // pere
+      p_ta->pere(child);
+
+    } else { // fils
+      p_ta->fils();
+    }
+
+
+
+
+    // On copie les fichiers de sortie du fils
+    if ( (it = param.find(OUTFILE)) != param.end() ) {
+      Versatile V = (*it).second;
+      Versatile::iterator Vit;
+
+      for(Vit=V.begin(); Vit!=V.end(); Vit++) {
+       CoupleType cpt  = *static_cast< CoupleType * >(*Vit);
+       Couple cp       = cpt;
+       string local    = cp.getLocal();
+       string remote   = cp.getRemote();
+
+       string copy_cmd = p_ta->getBatchManager().copy_command(executionhost, workdir + "/" + remote, "", local);
+       UNDER_LOCK( cout << "Copying : " << copy_cmd << endl );
+
+       if (system(copy_cmd.c_str()) ) {
+         // Echec de la copie
+         rc |= 1;
+       } else {
+         // On enregistre le fichier comme etant a detruire
+         files_to_delete.push_back(workdir + "/" + remote);
+       }
+
+      }
+    }
+
+
+
+
+    // On efface les fichiers d'entree et de sortie du fils si les copies precedentes ont reussi
+    // ou si la creation du fils n'a pu avoir lieu
+    if ( (rc == 0) || (child < 0) ) {
+      std::vector<string>::const_iterator it;
+      for(it=files_to_delete.begin(); it!=files_to_delete.end(); it++) {
+       string remove_cmd = p_ta->getBatchManager().remove_command(executionhost, *it);
+       UNDER_LOCK( cout << "Removing : " << remove_cmd << endl );
+       system(remove_cmd.c_str());
+      }
+    }
+
+
+
+    // On retire la fonction de nettoyage de la memoire
+    pthread_cleanup_pop(0);
+
+    // On retire la fonction de suppression du fils
+    pthread_cleanup_pop(0);
+
+
+
+    // On invoque la fonction de nettoyage de la memoire
+    delete_on_exit(arg);
+
+    UNDER_LOCK( cout << "Father is leaving" << endl );
+    pthread_exit(NULL);
+
+    return NULL;
+  }
+
+
+
+
+  void BatchManager_Local::ThreadAdapter::pere(pid_t child)
+  {
+    time_t child_starttime = time(NULL);
+
+    // On enregistre le fils dans la table des threads
+    pthread_t thread_id = pthread_self();
+    Id id = _bm.registerThread_id(thread_id);
+
+    Parametre param   = _job.getParametre();
+    Environnement env = _job.getEnvironnement();
+
+    ostringstream thread_id_sst;
+    thread_id_sst << id;
+    param[ID]         = thread_id_sst.str();
+    param[STATE]      = "Running";
+    param[PID]        = child;
+
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+    pthread_mutex_lock(&_bm._threads_mutex);
+    _bm._threads[id].thread_id = thread_id;
+    _bm._threads[id].pid       = child;
+    _bm._threads[id].status    = RUNNING;
+    _bm._threads[id].param     = param;
+    _bm._threads[id].env       = env;
+    _bm._threads[id].command_queue.push(NOP);
+    pthread_mutex_unlock(&_bm._threads_mutex);
+    // @@@ --------> SECTION CRITIQUE <-------- @@@
+
+
+
+
+
+    // on boucle en attendant que le fils ait termine
+    while (1) {
+      int child_rc = 0;
+      pid_t child_wait_rc = waitpid(child, &child_rc, WNOHANG /* | WUNTRACED */);
+      if (child_wait_rc > 0) {
+       if (WIFSTOPPED(child_rc)) {
+         // NOTA : pour rentrer dans cette section, il faut que le flag WUNTRACED 
+         // soit positionne dans l'appel a waitpid ci-dessus. Ce flag est couramment 
+         // desactive car s'il est possible de detecter l'arret d'un process, il est 
+         // plus difficile de detecter sa reprise.
+
+         // Le fils est simplement stoppe
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+         pthread_mutex_lock(&_bm._threads_mutex);
+         _bm._threads[id].status       = STOPPED;
+         _bm._threads[id].param[STATE] = "Stopped";
+         pthread_mutex_unlock(&_bm._threads_mutex);
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+         UNDER_LOCK( cout << "Father sees his child is STOPPED : " << child_wait_rc << endl );
+
+       } 
+       else {
+         // Le fils est termine, on sort de la boucle et du if englobant
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+         pthread_mutex_lock(&_bm._threads_mutex);
+         _bm._threads[id].status       = DONE;
+         _bm._threads[id].param[STATE] = "Done";
+         pthread_mutex_unlock(&_bm._threads_mutex);
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+         UNDER_LOCK( cout << "Father sees his child is DONE : " << child_wait_rc << " (child_rc=" << (WIFEXITED(child_rc) ? WEXITSTATUS(child_rc) : -1) << ")" << endl );
+         break;
+       }
+      }
+      else if (child_wait_rc == -1) {
+       // Le fils a disparu ...
+       // @@@ --------> SECTION CRITIQUE <-------- @@@
+       pthread_mutex_lock(&_bm._threads_mutex);
+       _bm._threads[id].status       = DEAD;
+       _bm._threads[id].param[STATE] = "Dead";
+       pthread_mutex_unlock(&_bm._threads_mutex);
+       // @@@ --------> SECTION CRITIQUE <-------- @@@
+       UNDER_LOCK( cout << "Father sees his child is DEAD : " << child_wait_rc << " (Reason : " << strerror(errno) << ")" << endl );
+       break;
+      }
+
+
+
+      // On teste si le thread doit etre detruit
+      pthread_testcancel();
+
+
+
+      // On regarde si le fils n'a pas depasse son temps (wallclock time)
+      time_t child_currenttime = time(NULL);
+      time_t child_elapsedtime = child_currenttime - child_starttime;
+      if (param.find(MAXWALLTIME) != param.end()) {
+       int maxwalltime = param[MAXWALLTIME];
+       //        cout << "child_starttime          = " << child_starttime        << endl
+       //             << "child_currenttime        = " << child_currenttime      << endl
+       //             << "child_elapsedtime        = " << child_elapsedtime      << endl
+       //             << "maxwalltime              = " << maxwalltime            << endl
+       //             << "int(maxwalltime * 1.1)   = " << int(maxwalltime * 1.1) << endl;
+       if (child_elapsedtime > int(maxwalltime * 1.1) ) { // On se donne 10% de marge avant le KILL
+         UNDER_LOCK( cout << "Father is sending KILL command to the thread " << id << endl );
+         // On introduit une commande dans la queue du thread
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+         pthread_mutex_lock(&_bm._threads_mutex);
+         if (_bm._threads.find(id) != _bm._threads.end()) 
+           _bm._threads[id].command_queue.push(KILL);
+         pthread_mutex_unlock(&_bm._threads_mutex);
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+
+
+       } else if (child_elapsedtime > maxwalltime ) {
+         UNDER_LOCK( cout << "Father is sending TERM command to the thread " << id << endl );
+         // On introduit une commande dans la queue du thread
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+         pthread_mutex_lock(&_bm._threads_mutex);
+         if (_bm._threads.find(id) != _bm._threads.end()) 
+           _bm._threads[id].command_queue.push(TERM);
+         pthread_mutex_unlock(&_bm._threads_mutex);
+         // @@@ --------> SECTION CRITIQUE <-------- @@@
+       }
+      }
+
+
+
+      // On regarde s'il y a quelque chose a faire dans la queue de commande
+      // @@@ --------> SECTION CRITIQUE <-------- @@@
+      pthread_mutex_lock(&_bm._threads_mutex);
+      if (_bm._threads.find(id) != _bm._threads.end()) {
+       while (_bm._threads[id].command_queue.size() > 0) {
+         Commande cmd = _bm._threads[id].command_queue.front();
+         _bm._threads[id].command_queue.pop();
+
+         switch (cmd) {
+         case NOP:
+           UNDER_LOCK( cout << "Father does nothing to his child" << endl );
+           break;
+
+         case HOLD:
+           UNDER_LOCK( cout << "Father is sending SIGSTOP signal to his child" << endl );
+           kill(child, SIGSTOP);
+           break;
+
+         case RELEASE:
+           UNDER_LOCK( cout << "Father is sending SIGCONT signal to his child" << endl );
+           kill(child, SIGCONT);
+           break;
+
+         case TERM:
+           UNDER_LOCK( cout << "Father is sending SIGTERM signal to his child" << endl );
+           kill(child, SIGTERM);
+           break;
+
+         case KILL:
+           UNDER_LOCK( cout << "Father is sending SIGKILL signal to his child" << endl );
+           kill(child, SIGKILL);
+           break;
+
+         case ALTER:
+           break;
+
+         default:
+           break;
+         }
+       }
+         
+      }
+      pthread_mutex_unlock(&_bm._threads_mutex);
+      // @@@ --------> SECTION CRITIQUE <-------- @@@
+
+      // On fait une petite pause pour ne pas surcharger inutilement le processeur
+      sleep(1);
+       
+    }
+
+
+  }
+
+
+
+
+  void BatchManager_Local::ThreadAdapter::fils()
+  {
+    Parametre param = _job.getParametre();
+    Parametre::iterator it;
+
+    try {
+
+    // On se place dans le repertoire de travail
+    if ( (it = param.find(WORKDIR)) != param.end() ) {
+      string workdir = static_cast<string>( (*it).second );
+      chdir(workdir.c_str());
+    }
+
+
+
+
+    // EXECUTABLE is MANDATORY, if missing, we exit with failure notification
+    char * execpath = NULL;
+    if (param.find(EXECUTABLE) != param.end()) {
+      string executable = _bm.exec_command(param);
+      execpath          = new char [executable.size() + 1];
+      strncpy(execpath, executable.c_str(), executable.size() + 1);
+    } else exit(1); 
+
+    string debug_command = execpath;
+
+    string name = (param.find(NAME) != param.end()) ? param[NAME] : param[EXECUTABLE];
+
+    char **  argv = NULL;
+    if (param.find(ARGUMENTS) != param.end()) {
+      Versatile V = param[ARGUMENTS];
+
+      argv = new char * [V.size() + 2]; // 1 pour name et 1 pour le NULL terminal
+
+      argv[0] = new char [name.size() + 1];
+      strncpy(argv[0], name.c_str(), name.size() + 1);
+
+      debug_command  += string(" # ") + argv[0];
+
+      int i = 1;
+      for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++, i++) {
+       StringType argt = * static_cast<StringType *>(*it);
+       string     arg  = argt;
+       argv[i]         = new char [arg.size() + 1];
+       strncpy(argv[i], arg.c_str(), arg.size() + 1);
+       debug_command  += string(" # ") + argv[i];
+      }
+
+      // assert (i == V.size() + 1)
+      argv[i] = NULL;
+    }
+
+
+    UNDER_LOCK( cout << "*** debug_command = " << debug_command << endl );
+
+
+
+    Environnement env = _job.getEnvironnement();
+
+
+    char ** envp = NULL;
+    if(env.size() > 0) {
+      envp = new char * [env.size() + 1]; // 1 pour le NULL terminal
+      int i = 0;
+      for(Environnement::const_iterator it=env.begin(); it!=env.end(); it++, i++) {
+       const string  & key   = (*it).first;
+       const string  & value = (*it).second;
+       ostringstream oss;
+       oss << key << "=" << value;
+       envp[i]         = new char [oss.str().size() + 1];
+       strncpy(envp[i], oss.str().c_str(), oss.str().size() + 1);
+      }
+
+      // assert (i == env.size())
+      envp[i] = NULL;
+    }
+
+
+
+
+    // On positionne les limites systeme imposees au fils
+    if (param.find(MAXCPUTIME) != param.end()) {
+      int maxcputime = param[MAXCPUTIME];
+      struct rlimit limit;
+      limit.rlim_cur = maxcputime;
+      limit.rlim_max = int(maxcputime * 1.1);
+      setrlimit(RLIMIT_CPU, &limit);
+    }
+
+    if (param.find(MAXDISKSIZE) != param.end()) {
+      int maxdisksize = param[MAXDISKSIZE];
+      struct rlimit limit;
+      limit.rlim_cur = maxdisksize * 1024;
+      limit.rlim_max = int(maxdisksize * 1.1) * 1024;
+      setrlimit(RLIMIT_FSIZE, &limit);
+    }
+
+    if (param.find(MAXRAMSIZE) != param.end()) {
+      int maxramsize = param[MAXRAMSIZE];
+      struct rlimit limit;
+      limit.rlim_cur = maxramsize * 1024;
+      limit.rlim_max = int(maxramsize * 1.1) * 1024;
+      setrlimit(RLIMIT_AS, &limit);
+    }
+
+
+
+    // On cree une session pour le fils de facon a ce qu'il ne soit pas
+    // detruit lorsque le shell se termine (le shell ouvre une session et
+    // tue tous les process appartenant a la session en quittant)
+    setsid();
+
+
+    // On ferme les descripteurs de fichiers standards
+    //close(STDIN_FILENO);
+    //close(STDOUT_FILENO);
+    //close(STDERR_FILENO);
+
+
+    // On execute la commande du fils
+    execve(execpath, argv, envp);
+
+    // No need to deallocate since nothing happens after a successful exec
+
+    // Normalement on ne devrait jamais arriver ici    
+    ofstream file_err("error.log");
+    UNDER_LOCK( file_err << "Echec de l'appel a execve" << endl );
+    
+    } catch (GenericException & e) {
+      
+      std::cerr << "Caught exception : " << e.type << " : " << e.message << std::endl;
+    }
+
+    exit(99);
+
+  }
+
+
+
+
+  void BatchManager_Local::kill_child_on_exit(void * p_pid)
+  {
+    pid_t child = * static_cast<pid_t *>(p_pid);
+
+    // On tue le fils
+    kill(child, SIGTERM);
+
+    // Nota : on pourrait aussi faire a la suite un kill(child, SIGKILL)
+    // mais cette option n'est pas implementee pour le moment, car il est 
+    // preferable de laisser le process fils se terminer normalement et seul.
+
+  }
+
+  void BatchManager_Local::delete_on_exit(void * arg)
+  {
+    ThreadAdapter * p_ta = static_cast<ThreadAdapter *>(arg);
+    delete p_ta;
+  }
+
+}
diff --git a/src/Batch/Batch_BatchManager_Local.hxx b/src/Batch/Batch_BatchManager_Local.hxx
new file mode 100644 (file)
index 0000000..53091ca
--- /dev/null
@@ -0,0 +1,164 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifndef _BATCHMANAGER_LOCAL_H_
+#define _BATCHMANAGER_LOCAL_H_
+
+
+#include <vector>
+#include <map>
+#include <queue>
+#include <deque>
+#include <pthread.h>
+#include "Batch_Job.hxx"
+#include "Batch_JobId.hxx"
+#include "Batch_JobInfo.hxx"
+#include "Batch_JobInfo_Local.hxx"
+#include "Batch_Job_Local.hxx"
+#include "Batch_InvalidArgumentException.hxx"
+#include "Batch_ConnexionFailureException.hxx"
+#include "Batch_APIInternalFailureException.hxx"
+#include "Batch_NotYetImplementedException.hxx"
+#include "Batch_BatchManager.hxx"
+
+namespace Batch {
+
+  class FactBatchManager;
+
+  class BatchManager_Local : public BatchManager
+  {
+  private:
+    friend class ThreadAdapter;
+    class ThreadAdapter{
+    public:
+      ThreadAdapter(BatchManager_Local & bm, const Job_Local & job);
+      static void * run(void * arg);
+      BatchManager_Local & getBatchManager() const { return _bm; };
+
+    protected:
+      BatchManager_Local & _bm;
+      const Job_Local _job;
+
+    private:
+      void pere(pid_t child);
+      void fils();
+
+    };
+
+    typedef int Id;
+
+    enum Commande {
+      NOP = 0,
+      HOLD,
+      RELEASE,
+      TERM,
+      KILL,
+      ALTER,
+    };
+
+    enum Status {
+      UNKNOWN = 0,
+      RUNNING,
+      STOPPED,
+      DONE,
+      DEAD,
+    };
+
+    struct Child {
+      pthread_t thread_id;
+      queue<Commande, deque<Commande> > command_queue;
+      pid_t pid;
+      int exit_code;
+      Status status;
+      Parametre param;
+      Environnement env;
+    };
+
+
+
+  public:
+    // Constructeur et destructeur
+    BatchManager_Local(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host
+    virtual ~BatchManager_Local();
+
+    // Recupere le nom du serveur par defaut
+    // static string BatchManager_Local::getDefaultServer();
+
+    // Methodes pour le controle des jobs
+    virtual const JobId submitJob(const Job & job); // soumet un job au gestionnaire
+    virtual void deleteJob(const JobId & jobid); // retire un job du gestionnaire
+    virtual void holdJob(const JobId & jobid); // suspend un job en file d'attente
+    virtual void releaseJob(const JobId & jobid); // relache un job suspendu
+    virtual void alterJob(const JobId & jobid, const Parametre & param, const Environnement & env); // modifie un job en file d'attente
+    virtual void alterJob(const JobId & jobid, const Parametre & param); // modifie un job en file d'attente
+    virtual void alterJob(const JobId & jobid, const Environnement & env); // modifie un job en file d'attente
+    virtual JobInfo queryJob(const JobId & jobid); // renvoie l'etat du job
+    virtual bool isRunning(const JobId & jobid); // teste si un job est present en machine
+
+    virtual void setParametre(const JobId & jobid, const Parametre & param) { return alterJob(jobid, param); } // modifie un job en file d'attente
+    virtual void setEnvironnement(const JobId & jobid, const Environnement & env) { return alterJob(jobid, env); } // modifie un job en file d'attente
+
+
+  protected:
+    int _connect; // Local connect id
+    pthread_mutex_t _threads_mutex;
+    map<Id, Child > _threads;
+
+    // Methode abstraite qui renvoie la commande de copie du fichier source en destination
+    virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const = 0;
+
+    // Methode abstraite qui renvoie la commande a executer
+    virtual string exec_command(Parametre & param) const = 0;
+
+    // Methode abstraite qui renvoie la commande d'effacement du fichier
+    virtual string remove_command(const string & host_destination, const string & destination) const = 0;
+
+  private:
+    virtual pthread_t submit(const Job_Local & job);
+    virtual void cancel(pthread_t thread_id);
+    static  void kill_child_on_exit(void * p_pid);
+    static  void delete_on_exit(void * arg);
+    Id nextId(); // Retourne un identifiant unique pour un thread (clef de la map)
+    Id getIdByThread_id(pthread_t thread_id);
+    Id registerThread_id(pthread_t thread_id);
+    pthread_mutex_t _thread_id_id_association_mutex;
+    pthread_cond_t  _thread_id_id_association_cond;
+    map<pthread_t, Id> _thread_id_id_association;
+
+#ifdef SWIG
+  public:
+    // Recupere le l'identifiant d'un job deja soumis au BatchManager
+    //virtual const JobId getJobIdByReference(const string & ref) { return BatchManager::getJobIdByReference(ref); }
+    virtual const JobId getJobIdByReference(const char * ref) { return BatchManager::getJobIdByReference(ref); }
+#endif
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_BatchManager_Local_RSH.cxx b/src/Batch/Batch_BatchManager_Local_RSH.cxx
new file mode 100644 (file)
index 0000000..e93ede6
--- /dev/null
@@ -0,0 +1,144 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local_RSH.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <SALOMEconfig.h>
+#endif
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <ctime>
+#include <unistd.h>
+#include <pthread.h>
+#include <signal.h>
+#include <errno.h>
+#include <string.h>
+#include "Batch_IOMutex.hxx"
+#include "Batch_BatchManager_Local_RSH.hxx"
+
+#ifndef RM
+#error "RM undefined. You must set RM to a valid path to a rm-like command."
+#endif
+
+#ifndef RCP
+#error "RCP undefined. You must set RCP to a valid path to a rcp-like command."
+#endif
+
+#ifndef RSH
+#error "RSH undefined. You must set RSH to a valid path to a rsh-like command."
+#endif
+
+namespace Batch {
+
+
+  // Constructeur
+  BatchManager_Local_RSH::BatchManager_Local_RSH(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager_Local(parent, host)
+  {
+  }
+
+  // Destructeur
+  BatchManager_Local_RSH::~BatchManager_Local_RSH()
+  {
+  }
+
+
+  // Methode abstraite qui renvoie la commande de copie du fichier source en destination
+  string BatchManager_Local_RSH::copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const
+  {
+    ostringstream fullsource;
+    if (host_source.size() == 0) {
+      fullsource << "localhost:";
+    } else {
+      fullsource << host_source << ":";
+    }
+    fullsource << source;
+
+    ostringstream fulldestination;
+    if (host_destination.size() == 0) {
+      fulldestination << "localhost:";
+    } else {
+      fulldestination << host_destination << ":";
+    }
+    fulldestination << destination;
+
+    ostringstream copy_cmd;
+    copy_cmd << RCP << " " << fullsource.str() << " " << fulldestination.str();
+    return copy_cmd.str();
+  }
+  
+  // Methode abstraite qui renvoie la commande a executer
+  string BatchManager_Local_RSH::exec_command(Parametre & param) const
+  {
+    ostringstream exec_sub_cmd;
+    exec_sub_cmd << param[EXECUTABLE];
+
+    if (param.find(ARGUMENTS) != param.end()) {
+      Versatile V = param[ARGUMENTS];
+      for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++) {
+       StringType argt = * static_cast<StringType *>(*it);
+       string     arg  = argt;
+       exec_sub_cmd << " " << arg;
+      }
+    }
+
+
+    Versatile new_arguments;
+    new_arguments.setMaxSize(0);
+    new_arguments = string(param[EXECUTIONHOST]);
+
+
+    if (param.find(USER) != param.end()) {
+      new_arguments += "-l";
+      new_arguments += string(param[USER]);
+    }
+
+    new_arguments += exec_sub_cmd.str();
+
+    param[ARGUMENTS] = new_arguments;
+
+    // Sous Linux on est oblige de modifier ces deux parametres pour faire fonctionner la commande rsh
+    param[EXECUTABLE] = RSH;
+    param.erase(NAME);
+
+    return RSH;
+  }
+
+  // Methode qui renvoie la commande d'effacement du fichier
+  string BatchManager_Local_RSH::remove_command(const string & host_destination, const string & destination) const
+  {
+    string host = (host_destination.size()) ? host_destination : "localhost:";
+
+    ostringstream remove_cmd;
+    remove_cmd << RSH << " " << host << " \"" << RM << " " << destination << "\"";
+    return remove_cmd.str();
+  }
+}
diff --git a/src/Batch/Batch_BatchManager_Local_RSH.hxx b/src/Batch/Batch_BatchManager_Local_RSH.hxx
new file mode 100644 (file)
index 0000000..be7a4a0
--- /dev/null
@@ -0,0 +1,74 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local_RSH.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifndef _BATCHMANAGER_LOCAL_RSH_H_
+#define _BATCHMANAGER_LOCAL_RSH_H_
+
+
+#include <vector>
+#include <map>
+#include <queue>
+#include <deque>
+#include <pthread.h>
+#include "Batch_Job.hxx"
+#include "Batch_JobId.hxx"
+#include "Batch_JobInfo.hxx"
+#include "Batch_JobInfo_Local.hxx"
+#include "Batch_Job_Local.hxx"
+#include "Batch_InvalidArgumentException.hxx"
+#include "Batch_ConnexionFailureException.hxx"
+#include "Batch_APIInternalFailureException.hxx"
+#include "Batch_NotYetImplementedException.hxx"
+#include "Batch_BatchManager_Local.hxx"
+
+namespace Batch {
+
+  class FactBatchManager;
+
+  class BatchManager_Local_RSH : public BatchManager_Local
+  {
+  public:
+    // Constructeur et destructeur
+    BatchManager_Local_RSH(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host
+    virtual ~BatchManager_Local_RSH();
+
+  protected:
+    // Methode abstraite qui renvoie la commande de copie du fichier source en destination
+    virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const;
+
+    // Methode abstraite qui renvoie la commande a executer
+    virtual string exec_command(Parametre & param) const;
+
+    // Methode qui renvoie la commande d'effacement du fichier
+    virtual string remove_command(const string & host_destination, const string & destination) const;
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_BatchManager_Local_SH.cxx b/src/Batch/Batch_BatchManager_Local_SH.cxx
new file mode 100644 (file)
index 0000000..be9b990
--- /dev/null
@@ -0,0 +1,111 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local_SH.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <SALOMEconfig.h>
+#endif
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <ctime>
+#include <unistd.h>
+#include <pthread.h>
+#include <signal.h>
+#include <errno.h>
+#include <string.h>
+#include "Batch_IOMutex.hxx"
+#include "Batch_BatchManager_Local_SH.hxx"
+
+#ifndef RM
+#error "RM undefined. You must set RM to a valid path to a rm-like command."
+#endif
+
+#ifndef CP
+#error "CP undefined. You must set CP to a valid path to a cp-like command."
+#endif
+
+#ifndef SH
+#error "SH undefined. You must set SH to a valid path to a sh-like command."
+#endif
+
+namespace Batch {
+
+
+  // Constructeur
+  BatchManager_Local_SH::BatchManager_Local_SH(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager_Local(parent, host)
+  {
+  }
+
+  // Destructeur
+  BatchManager_Local_SH::~BatchManager_Local_SH()
+  {
+  }
+
+
+  // Methode qui renvoie la commande de copie du fichier source en destination
+  string BatchManager_Local_SH::copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const
+  {
+    ostringstream copy_cmd;
+    copy_cmd << CP << " " << source << " " << destination;
+    return copy_cmd.str();
+  }
+  
+  // Methode qui renvoie la commande a executer
+  string BatchManager_Local_SH::exec_command(Parametre & param) const
+  {
+    ostringstream exec_sub_cmd;
+    exec_sub_cmd << param[EXECUTABLE];
+
+    if (param.find(ARGUMENTS) != param.end()) {
+      Versatile V = param[ARGUMENTS];
+      for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++) {
+       StringType argt = * static_cast<StringType *>(*it);
+       string     arg  = argt;
+       exec_sub_cmd << " " << arg;
+      }
+    }
+
+    param[ARGUMENTS]  = "-c";
+    param[ARGUMENTS] += exec_sub_cmd.str();
+
+    return SH;
+  }
+
+  // Methode qui renvoie la commande d'effacement du fichier
+  string BatchManager_Local_SH::remove_command(const string & host_destination, const string & destination) const
+  {
+    ostringstream remove_cmd;
+    remove_cmd << RM << " " << destination;
+    return remove_cmd.str();
+  }
+  
+}
diff --git a/src/Batch/Batch_BatchManager_Local_SH.hxx b/src/Batch/Batch_BatchManager_Local_SH.hxx
new file mode 100644 (file)
index 0000000..c3de1af
--- /dev/null
@@ -0,0 +1,74 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local_SH.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifndef _BATCHMANAGER_LOCAL_SH_H_
+#define _BATCHMANAGER_LOCAL_SH_H_
+
+
+#include <vector>
+#include <map>
+#include <queue>
+#include <deque>
+#include <pthread.h>
+#include "Batch_Job.hxx"
+#include "Batch_JobId.hxx"
+#include "Batch_JobInfo.hxx"
+#include "Batch_JobInfo_Local.hxx"
+#include "Batch_Job_Local.hxx"
+#include "Batch_InvalidArgumentException.hxx"
+#include "Batch_ConnexionFailureException.hxx"
+#include "Batch_APIInternalFailureException.hxx"
+#include "Batch_NotYetImplementedException.hxx"
+#include "Batch_BatchManager_Local.hxx"
+
+namespace Batch {
+
+  class FactBatchManager;
+
+  class BatchManager_Local_SH : public BatchManager_Local
+  {
+  public:
+    // Constructeur et destructeur
+    BatchManager_Local_SH(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host
+    virtual ~BatchManager_Local_SH();
+
+  protected:
+    // Methode qui renvoie la commande de copie du fichier source en destination
+    virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const;
+
+    // Methode qui renvoie la commande a executer
+    virtual string exec_command(Parametre & param) const;
+
+    // Methode qui renvoie la commande d'effacement du fichier
+    virtual string remove_command(const string & host_destination, const string & destination) const;
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_BatchManager_Local_SSH.cxx b/src/Batch/Batch_BatchManager_Local_SSH.cxx
new file mode 100644 (file)
index 0000000..696d747
--- /dev/null
@@ -0,0 +1,144 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local_SSH.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <SALOMEconfig.h>
+#endif
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <cstdlib>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <ctime>
+#include <unistd.h>
+#include <pthread.h>
+#include <signal.h>
+#include <errno.h>
+#include <string.h>
+#include "Batch_IOMutex.hxx"
+#include "Batch_BatchManager_Local_SSH.hxx"
+
+#ifndef RM
+#error "RM undefined. You must set RM to a valid path to a rm-like command."
+#endif
+
+#ifndef RCP
+#error "RCP undefined. You must set RCP to a valid path to a scp-like command."
+#endif
+
+#ifndef SSH
+#error "SSH undefined. You must set SSH to a valid path to a ssh-like command."
+#endif
+
+namespace Batch {
+
+
+  // Constructeur
+  BatchManager_Local_SSH::BatchManager_Local_SSH(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager_Local(parent, host)
+  {
+  }
+
+  // Destructeur
+  BatchManager_Local_SSH::~BatchManager_Local_SSH()
+  {
+  }
+
+
+  // Methode abstraite qui renvoie la commande de copie du fichier source en destination
+  string BatchManager_Local_SSH::copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const
+  {
+    ostringstream fullsource;
+    if (host_source.size() == 0) {
+      fullsource << "localhost:";
+    } else {
+      fullsource << host_source << ":";
+    }
+    fullsource << source;
+
+    ostringstream fulldestination;
+    if (host_destination.size() == 0) {
+      fulldestination << "localhost:";
+    } else {
+      fulldestination << host_destination << ":";
+    }
+    fulldestination << destination;
+
+    ostringstream copy_cmd;
+    copy_cmd << RCP << " " << fullsource.str() << " " << fulldestination.str();
+    return copy_cmd.str();
+  }
+  
+  // Methode abstraite qui renvoie la commande a executer
+  string BatchManager_Local_SSH::exec_command(Parametre & param) const
+  {
+    ostringstream exec_sub_cmd;
+    exec_sub_cmd << param[EXECUTABLE];
+
+    if (param.find(ARGUMENTS) != param.end()) {
+      Versatile V = param[ARGUMENTS];
+      for(Versatile::const_iterator it=V.begin(); it!=V.end(); it++) {
+       StringType argt = * static_cast<StringType *>(*it);
+       string     arg  = argt;
+       exec_sub_cmd << " " << arg;
+      }
+    }
+
+
+    Versatile new_arguments;
+    new_arguments.setMaxSize(0);
+    new_arguments = string(param[EXECUTIONHOST]);
+
+
+    if (param.find(USER) != param.end()) {
+      new_arguments += "-l";
+      new_arguments += string(param[USER]);
+    }
+
+    new_arguments += exec_sub_cmd.str();
+
+    param[ARGUMENTS] = new_arguments;
+
+    // Sous Linux on est oblige de modifier ces deux parametres pour faire fonctionner la commande rsh
+    param[EXECUTABLE] = SSH;
+    param.erase(NAME);
+
+    return SSH;
+  }
+
+  // Methode qui renvoie la commande d'effacement du fichier
+  string BatchManager_Local_SSH::remove_command(const string & host_destination, const string & destination) const
+  {
+    string host = (host_destination.size()) ? host_destination : "localhost:";
+
+    ostringstream remove_cmd;
+    remove_cmd << SSH << " " << host << " \"" << RM << " " << destination << "\"";
+    return remove_cmd.str();
+  }
+}
diff --git a/src/Batch/Batch_BatchManager_Local_SSH.hxx b/src/Batch/Batch_BatchManager_Local_SSH.hxx
new file mode 100644 (file)
index 0000000..b45314f
--- /dev/null
@@ -0,0 +1,74 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * BatchManager_Local_SSH.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Thu Nov  6 10:17:22 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifndef _BATCHMANAGER_LOCAL_SSH_H_
+#define _BATCHMANAGER_LOCAL_SSH_H_
+
+
+#include <vector>
+#include <map>
+#include <queue>
+#include <deque>
+#include <pthread.h>
+#include "Batch_Job.hxx"
+#include "Batch_JobId.hxx"
+#include "Batch_JobInfo.hxx"
+#include "Batch_JobInfo_Local.hxx"
+#include "Batch_Job_Local.hxx"
+#include "Batch_InvalidArgumentException.hxx"
+#include "Batch_ConnexionFailureException.hxx"
+#include "Batch_APIInternalFailureException.hxx"
+#include "Batch_NotYetImplementedException.hxx"
+#include "Batch_BatchManager_Local.hxx"
+
+namespace Batch {
+
+  class FactBatchManager;
+
+  class BatchManager_Local_SSH : public BatchManager_Local
+  {
+  public:
+    // Constructeur et destructeur
+    BatchManager_Local_SSH(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host
+    virtual ~BatchManager_Local_SSH();
+
+  protected:
+    // Methode abstraite qui renvoie la commande de copie du fichier source en destination
+    virtual string copy_command(const string & host_source, const string & source, const string & host_destination, const string & destination) const;
+
+    // Methode abstraite qui renvoie la commande a executer
+    virtual string exec_command(Parametre & param) const;
+
+    // Methode qui renvoie la commande d'effacement du fichier
+    virtual string remove_command(const string & host_destination, const string & destination) const;
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_FactBatchManager_Local.cxx b/src/Batch/Batch_FactBatchManager_Local.cxx
new file mode 100644 (file)
index 0000000..149e54f
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#include <string>
+#include "Batch_BatchManager_Local.hxx"
+#include "Batch_FactBatchManager_Local.hxx"
+//#include "utilities.h"
+
+namespace Batch {
+
+//   static FactBatchManager_Local sFBM_Local;
+
+  // Constructeur
+  FactBatchManager_Local::FactBatchManager_Local() : FactBatchManager("Local")
+  {
+    // Nothing to do
+  }
+
+  // Destructeur
+  FactBatchManager_Local::~FactBatchManager_Local()
+  {
+    // Nothing to do
+  }
+
+  // Functor
+//   BatchManager * FactBatchManager_Local::operator() (const char * hostname) const
+//   {
+//     // MESSAGE("Building new BatchManager_Local on host '" << hostname << "'");
+//     return new BatchManager_Local(this, hostname);
+//   }
+
+
+}
diff --git a/src/Batch/Batch_FactBatchManager_Local.hxx b/src/Batch/Batch_FactBatchManager_Local.hxx
new file mode 100644 (file)
index 0000000..77b5d11
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#ifndef _FACTBATCHMANAGER_LOCAL_H_
+#define _FACTBATCHMANAGER_LOCAL_H_
+
+using namespace std;
+#include <string>
+#include <map>
+#include "Batch_FactBatchManager.hxx"
+
+namespace Batch {
+  
+  class BatchManager_Local;
+
+  class FactBatchManager_Local : public FactBatchManager
+  {
+  public:
+    // Constructeur et destructeur
+    FactBatchManager_Local();
+    virtual ~FactBatchManager_Local();
+
+    virtual BatchManager * operator() (const char * hostname) const = 0;
+
+  protected:
+
+  private:
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_FactBatchManager_Local_RSH.cxx b/src/Batch/Batch_FactBatchManager_Local_RSH.cxx
new file mode 100644 (file)
index 0000000..985146e
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local_RSH.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#include <string>
+#include "Batch_BatchManager_Local_RSH.hxx"
+#include "Batch_FactBatchManager_Local_RSH.hxx"
+//#include "utilities.h"
+
+namespace Batch {
+
+  static FactBatchManager_Local_RSH sFBM_Local_RSH;
+
+  // Constructeur
+  FactBatchManager_Local_RSH::FactBatchManager_Local_RSH() : FactBatchManager("RSH")
+  {
+    // Nothing to do
+  }
+
+  // Destructeur
+  FactBatchManager_Local_RSH::~FactBatchManager_Local_RSH()
+  {
+    // Nothing to do
+  }
+
+  // Functor
+  BatchManager * FactBatchManager_Local_RSH::operator() (const char * hostname) const
+  {
+    // MESSAGE("Building new BatchManager_Local_RSH on host '" << hostname << "'");
+    return new BatchManager_Local_RSH(this, hostname);
+  }
+
+
+}
diff --git a/src/Batch/Batch_FactBatchManager_Local_RSH.hxx b/src/Batch/Batch_FactBatchManager_Local_RSH.hxx
new file mode 100644 (file)
index 0000000..bf10abd
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local_RSH.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#ifndef _FACTBATCHMANAGER_LOCAL_RSH_H_
+#define _FACTBATCHMANAGER_LOCAL_RSH_H_
+
+using namespace std;
+#include <string>
+#include <map>
+#include "Batch_FactBatchManager.hxx"
+
+namespace Batch {
+  
+  class BatchManager_Local_RSH;
+
+  class FactBatchManager_Local_RSH : public FactBatchManager
+  {
+  public:
+    // Constructeur et destructeur
+    FactBatchManager_Local_RSH();
+    virtual ~FactBatchManager_Local_RSH();
+
+    virtual BatchManager * operator() (const char * hostname) const;
+
+  protected:
+
+  private:
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_FactBatchManager_Local_SH.cxx b/src/Batch/Batch_FactBatchManager_Local_SH.cxx
new file mode 100644 (file)
index 0000000..03c7892
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local_SH.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#include <string>
+#include "Batch_BatchManager_Local_SH.hxx"
+#include "Batch_FactBatchManager_Local_SH.hxx"
+//#include "utilities.h"
+
+namespace Batch {
+
+  static FactBatchManager_Local_SH sFBM_Local_SH;
+
+  // Constructeur
+  FactBatchManager_Local_SH::FactBatchManager_Local_SH() : FactBatchManager("SH")
+  {
+    // Nothing to do
+  }
+
+  // Destructeur
+  FactBatchManager_Local_SH::~FactBatchManager_Local_SH()
+  {
+    // Nothing to do
+  }
+
+  // Functor
+  BatchManager * FactBatchManager_Local_SH::operator() (const char * hostname) const
+  {
+    // MESSAGE("Building new BatchManager_Local_SH on host '" << hostname << "'");
+    return new BatchManager_Local_SH(this, hostname);
+  }
+
+
+}
diff --git a/src/Batch/Batch_FactBatchManager_Local_SH.hxx b/src/Batch/Batch_FactBatchManager_Local_SH.hxx
new file mode 100644 (file)
index 0000000..8ac703a
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local_SH.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#ifndef _FACTBATCHMANAGER_LOCAL_SH_H_
+#define _FACTBATCHMANAGER_LOCAL_SH_H_
+
+using namespace std;
+#include <string>
+#include <map>
+#include "Batch_FactBatchManager.hxx"
+
+namespace Batch {
+  
+  class BatchManager_Local_SH;
+
+  class FactBatchManager_Local_SH : public FactBatchManager
+  {
+  public:
+    // Constructeur et destructeur
+    FactBatchManager_Local_SH();
+    virtual ~FactBatchManager_Local_SH();
+
+    virtual BatchManager * operator() (const char * hostname) const;
+
+  protected:
+
+  private:
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_FactBatchManager_Local_SSH.cxx b/src/Batch/Batch_FactBatchManager_Local_SSH.cxx
new file mode 100644 (file)
index 0000000..c26ebb9
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local_SSH.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#include <string>
+#include "Batch_BatchManager_Local_SSH.hxx"
+#include "Batch_FactBatchManager_Local_SSH.hxx"
+//#include "utilities.h"
+
+namespace Batch {
+
+  static FactBatchManager_Local_SSH sFBM_Local_SSH;
+
+  // Constructeur
+  FactBatchManager_Local_SSH::FactBatchManager_Local_SSH() : FactBatchManager("SSH")
+  {
+    // Nothing to do
+  }
+
+  // Destructeur
+  FactBatchManager_Local_SSH::~FactBatchManager_Local_SSH()
+  {
+    // Nothing to do
+  }
+
+  // Functor
+  BatchManager * FactBatchManager_Local_SSH::operator() (const char * hostname) const
+  {
+    // MESSAGE("Building new BatchManager_Local_SSH on host '" << hostname << "'");
+    return new BatchManager_Local_SSH(this, hostname);
+  }
+
+
+}
diff --git a/src/Batch/Batch_FactBatchManager_Local_SSH.hxx b/src/Batch/Batch_FactBatchManager_Local_SSH.hxx
new file mode 100644 (file)
index 0000000..2c3c14e
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * FactBatchManager_Local_SSH.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Date   : Septembre 2004
+ * Projet : SALOME 2
+ *
+ */
+
+#ifndef _FACTBATCHMANAGER_LOCAL_SSH_H_
+#define _FACTBATCHMANAGER_LOCAL_SSH_H_
+
+using namespace std;
+#include <string>
+#include <map>
+#include "Batch_FactBatchManager.hxx"
+
+namespace Batch {
+  
+  class BatchManager_Local_SSH;
+
+  class FactBatchManager_Local_SSH : public FactBatchManager
+  {
+  public:
+    // Constructeur et destructeur
+    FactBatchManager_Local_SSH();
+    virtual ~FactBatchManager_Local_SSH();
+
+    virtual BatchManager * operator() (const char * hostname) const;
+
+  protected:
+
+  private:
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_IOMutex.cxx b/src/Batch/Batch_IOMutex.cxx
new file mode 100644 (file)
index 0000000..4cf1918
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * IOMutex.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Fri Nov 14 11:00:39 2003
+ * Projet : Salome 2
+ *
+ */
+
+#include "Batch_IOMutex.hxx"
+
+namespace Batch {
+
+  pthread_mutex_t IOMutex = PTHREAD_MUTEX_INITIALIZER;
+
+}
diff --git a/src/Batch/Batch_IOMutex.hxx b/src/Batch/Batch_IOMutex.hxx
new file mode 100644 (file)
index 0000000..c4aaa0f
--- /dev/null
@@ -0,0 +1,44 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * IOMutex.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Fri Nov 14 11:00:39 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifndef _IOMUTEX_H_
+#define _IOMUTEX_H_
+
+#include <pthread.h>
+
+#define LOCK_IO               { pthread_mutex_lock(&Batch::IOMutex) ; }
+#define UNLOCK_IO             { pthread_mutex_unlock(&Batch::IOMutex) ; }
+#define UNDER_LOCK(statement) { LOCK_IO ; { statement ; } ; UNLOCK_IO ; }
+
+namespace Batch {
+
+  extern pthread_mutex_t IOMutex;
+  
+}
+
+#endif
diff --git a/src/Batch/Batch_JobInfo_Local.cxx b/src/Batch/Batch_JobInfo_Local.cxx
new file mode 100644 (file)
index 0000000..18a5939
--- /dev/null
@@ -0,0 +1,51 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * JobInfo_Local.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Fri Nov 21 09:42:06 2003
+ * Projet : Salome 2
+ *
+ */
+
+#include <cstdio>
+#include "Batch_Parametre.hxx"
+#include "Batch_Environnement.hxx"
+#include "Batch_JobInfo_Local.hxx"
+
+namespace Batch {
+
+  // Constructeurs
+  JobInfo_Local::JobInfo_Local(const Parametre & param, const Environnement & env) :
+    JobInfo(param, env)
+  {
+    // Nothing to do
+  }
+
+
+  // Destructeur
+  JobInfo_Local::~JobInfo_Local()
+  {
+    // Nothing to do
+  }
+  
+
+}
diff --git a/src/Batch/Batch_JobInfo_Local.hxx b/src/Batch/Batch_JobInfo_Local.hxx
new file mode 100644 (file)
index 0000000..98cd296
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * JobInfo_Local.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Fri Nov 21 09:42:05 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifndef _JOBINFO_LOCAL_H_
+#define _JOBINFO_LOCAL_H_
+
+#include <string>
+#include "Batch_JobInfo.hxx"
+
+namespace Batch {
+
+  class JobInfo_Local : public JobInfo
+  {
+  public:
+    // Constructeurs et destructeur
+    JobInfo_Local() {};
+    JobInfo_Local(const Parametre & param, const Environnement & env);
+    virtual ~JobInfo_Local();
+
+    // Constructeur par recopie
+    JobInfo_Local(const JobInfo_Local & jinfo) : JobInfo(jinfo) {};
+
+
+  protected:
+
+  private:
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Batch_Job_Local.cxx b/src/Batch/Batch_Job_Local.cxx
new file mode 100644 (file)
index 0000000..bc276f8
--- /dev/null
@@ -0,0 +1,99 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * Job_Local.cxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Fri Nov 14 11:00:39 2003
+ * Projet : Salome 2
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "Batch_Job_Local.hxx"
+
+namespace Batch {
+
+  // Constructeur
+  Job_Local::Job_Local(const Job & job) : 
+    _command(), _param(job.getParametre()), _env(job.getEnvironnement())
+  {
+    // On positionne le nom du EXECUTIONHOST a "localhost" s'il n'est pas precise
+    if ( _param.find(EXECUTIONHOST) == _param.end() ) {
+      _param[EXECUTIONHOST] = "localhost";
+    }
+
+    // On convertit les objets Parametre et Environnement en liste chainee d'attributs + operateur
+    addEnvironnement( _env   );
+    addParametre    ( _param );
+
+  }
+
+
+  // Destructeur
+  Job_Local::~Job_Local()
+  {
+  }
+
+
+  void Job_Local::addParametre(const Parametre & P)
+  {
+    // En dernier, on ajoute le chemin complet de la commande
+    _command += P[EXECUTABLE].str();
+  }
+
+
+  void Job_Local::addEnvironnement(const Environnement & E)
+  {
+    for(Environnement::const_iterator it=E.begin(); it != E.end(); it++) {
+      string variable = (*it).first;
+      string value    = (*it).second;
+
+      // On remplace toutes les occurences de single-quote par backslash-single-quote
+      for(int pos=0; pos < value.size(); pos++) {
+       pos = value.find("'", pos);
+       if ( (pos < 0) || (pos > value.size()) ) break;
+       value.replace(pos, 1, "\'");
+      }
+      _command += variable + "='" + value + "' ";
+    }
+  }
+
+  string Job_Local::getCommand(void) const {
+    return _command;
+  }
+
+
+  // Retourne l'objet Parametre
+  Parametre Job_Local::getParametre() const
+  {
+    return _param;
+  }
+
+  // Retourne l'objet Environnement
+  Environnement Job_Local::getEnvironnement() const
+  {
+    return _env;
+  }
+
+
+}
diff --git a/src/Batch/Batch_Job_Local.hxx b/src/Batch/Batch_Job_Local.hxx
new file mode 100644 (file)
index 0000000..dd8de8e
--- /dev/null
@@ -0,0 +1,68 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+/*
+ * Job_Local.hxx : 
+ *
+ * Auteur : Ivan DUTKA-MALEN - EDF R&D
+ * Mail   : mailto:ivan.dutka-malen@der.edf.fr
+ * Date   : Fri Nov 14 11:00:39 2003
+ * Projet : Salome 2
+ *
+ */
+
+#ifndef _JOB_LOCAL_H_
+#define _JOB_LOCAL_H_
+
+#include "Batch_Parametre.hxx"
+#include "Batch_Environnement.hxx"
+#include "Batch_Job.hxx"
+
+namespace Batch {
+
+  class Job_Local
+  {
+  public:
+    // Constructeur et destructeur
+    Job_Local(const Job & job);
+    virtual ~Job_Local();
+
+    // Retourne la commande _command
+    virtual std::string getCommand(void) const;
+
+    // Retourne l'objet Parametre
+    virtual Parametre getParametre() const;
+
+    // Retourne l'objet Environnement
+    virtual Environnement getEnvironnement() const;
+
+
+  protected:
+    std::string _command;
+    Parametre _param;
+    Environnement _env;
+
+  private:
+    void addParametre(const Parametre & P);
+    void addEnvironnement(const Environnement & E);
+
+  };
+
+}
+
+#endif
diff --git a/src/Batch/Makefile.am b/src/Batch/Makefile.am
new file mode 100644 (file)
index 0000000..095173c
--- /dev/null
@@ -0,0 +1,213 @@
+####################################### library
+#  SALOME Container : implementation of container and engine for Kernel
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : EDF
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# header files  
+LIB_INCLUDES = \
+       Batch_APIInternalFailureException.hxx \
+       Batch_BatchManager.hxx \
+       Batch_BatchManagerCatalog.hxx \
+       Batch_BoolType.hxx \
+       Batch_CharType.hxx \
+       Batch_ConnexionFailureException.hxx \
+       Batch_Couple.hxx \
+       Batch_CoupleType.hxx \
+       Batch_Date.hxx \
+       Batch_DateType.hxx \
+       Batch_Environnement.hxx \
+       Batch_FactBatchManager.hxx \
+       Batch_GenericException.hxx \
+       Batch_GenericType.hxx \
+       Batch_IntType.hxx \
+       Batch_InvalidArgumentException.hxx \
+       Batch_InvalidKeyException.hxx \
+       Batch_Job.hxx \
+       Batch_JobId.hxx \
+       Batch_JobInfo.hxx \
+       Batch_ListIsFullException.hxx \
+       Batch_LongType.hxx \
+       Batch_MapKey.hxx \
+       Batch_NotYetImplementedException.hxx \
+       Batch_Parametre.hxx \
+       Batch_PyVersatile.hxx \
+       Batch_RunTimeException.hxx \
+       Batch_StringType.hxx \
+       Batch_TypeMismatchException.hxx
+
+
+LIB_SRC = \
+       Batch_APIInternalFailureException.cxx \
+       Batch_BatchManager.cxx \
+       Batch_BatchManagerCatalog.cxx \
+       Batch_BoolType.cxx \
+       Batch_CharType.cxx \
+       Batch_ConnexionFailureException.cxx \
+       Batch_Couple.cxx \
+       Batch_CoupleType.cxx \
+       Batch_Date.cxx \
+       Batch_DateType.cxx \
+       Batch_Environnement.cxx \
+       Batch_FactBatchManager.cxx \
+       Batch_GenericException.cxx \
+       Batch_GenericType.cxx \
+       Batch_IntType.cxx \
+       Batch_InvalidArgumentException.cxx \
+       Batch_InvalidKeyException.cxx \
+       Batch_Job.cxx \
+       Batch_JobId.cxx \
+       Batch_JobInfo.cxx \
+       Batch_ListIsFullException.cxx \
+       Batch_LongType.cxx \
+       Batch_MapKey.cxx \
+       Batch_NotYetImplementedException.cxx \
+       Batch_Parametre.cxx \
+       Batch_PyVersatile.cxx \
+       Batch_RunTimeException.cxx \
+       Batch_StringType.cxx \
+       Batch_TypeMismatchException.cxx
+
+
+LIB_CPPFLAGS = \
+       @PYTHON_INCLUDES@ \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace
+
+LIB_LIBADD   = \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la
+
+
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Special add for local batch system
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+if WITH_LOCAL
+LIB_INCLUDES +=\
+       Batch_Versatile.hxx \
+       Batch_BatchManager_Local.hxx \
+       Batch_BatchManager_Local_RSH.hxx \
+       Batch_BatchManager_Local_SH.hxx \
+       Batch_BatchManager_Local_SSH.hxx \
+       Batch_FactBatchManager_Local.hxx \
+       Batch_FactBatchManager_Local_RSH.hxx \
+       Batch_FactBatchManager_Local_SH.hxx \
+       Batch_FactBatchManager_Local_SSH.hxx \
+       Batch_JobInfo_Local.hxx \
+       Batch_Job_Local.hxx \
+       Batch_IOMutex.hxx
+
+LIB_SRC +=\
+       Batch_Versatile.cxx \
+       Batch_BatchManager_Local.cxx \
+       Batch_BatchManager_Local_RSH.cxx \
+       Batch_BatchManager_Local_SH.cxx \
+       Batch_BatchManager_Local_SSH.cxx \
+       Batch_FactBatchManager_Local.cxx \
+       Batch_FactBatchManager_Local_RSH.cxx \
+       Batch_FactBatchManager_Local_SH.cxx \
+       Batch_FactBatchManager_Local_SSH.cxx \
+       Batch_JobInfo_Local.cxx \
+       Batch_Job_Local.cxx \
+       Batch_IOMutex.cxx
+
+LIB_CPPFLAGS += -DHAVE_CONFIG_H
+
+endif
+
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Special add for openpbs batch system
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+if WITH_OPENPBS
+LIB_INCLUDES += \
+       Batch_BatchManager_PBS.hxx \
+       Batch_FactBatchManager_PBS.hxx \
+       Batch_JobInfo_PBS.hxx \
+       Batch_Job_PBS.hxx
+
+LIB_SRC +=\
+       Batch_BatchManager_PBS.cxx \
+       Batch_FactBatchManager_PBS.cxx \
+       Batch_JobInfo_PBS.cxx \
+       Batch_Job_PBS.cxx
+
+LIB_CPPFLAGS += @OPENPBS_INCLUDES@
+LIB_LIBADD   += @OPENPBS_LIBDIR@ @OPENPBS_LIBS@
+
+endif
+
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Special add for lsf batch system
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+if WITH_LSF
+LIB_INCLUDES += \
+       Batch_BatchManager_LSF.hxx \
+       Batch_FactBatchManager_LSF.hxx \
+       Batch_JobInfo_LSF.hxx \
+       Batch_Job_LSF.hxx
+
+LIB_SRC += \
+       Batch_BatchManager_LSF.cxx \
+       Batch_FactBatchManager_LSF.cxx \
+       Batch_JobInfo_LSF.cxx \
+       Batch_Job_LSF.cxx
+
+LIB_CPPFLAGS += @LSF_INCLUDES@
+LIB_LIBADD   += @LSF_LIBDIR@ @LSF_LIBS@
+endif
+
+
+
+
+salomeinclude_HEADERS = $(LIB_INCLUDES)
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeBatch.la 
+libSalomeBatch_la_SOURCES = $(LIB_SRC)
+libSalomeBatch_la_CPPFLAGS = \
+       @PYTHON_INCLUDES@ \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(top_builddir)/salome_adm/unix \
+       $(LIB_CPPFLAGS)
+
+libSalomeBatch_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSalomeBatch_la_LIBADD   = \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       $(LIB_LIBADD)
diff --git a/src/Batch_SWIG/Makefile.am b/src/Batch_SWIG/Makefile.am
new file mode 100644 (file)
index 0000000..71154d5
--- /dev/null
@@ -0,0 +1,86 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Swig targets
+# ===============================================================
+# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm)
+#
+# Step 1: build the wrapping source files with swig
+#
+# libBatch_Swig.i -- swig --> swig_wrap.cpp
+#                             libBatch_Swig.py
+#
+# Step 2: build the dynamic library from cpp built source files and
+#         dependant libraries.
+#
+# swig_wrap.cpp -- gcc --> swig_wrap.o    |-- link --> _libBatch_Swig.la
+#                          +              |
+#                          dependant libs |
+#
+# The file libBatch_Swig.py will be installed in
+# <prefix>/lib/python<version>/site-package/salome.
+# The library will be installed in the common place.
+#
+
+BUILT_SOURCES = swig_wrap.cpp
+
+SWIG_FLAGS    = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../Batch
+SWIG_SOURCES  = libBatch_Swig.i libBatch_Swig_exception.i libBatch_Swig_typemap.i
+
+pkgpython_PYTHON           = libBatch_Swig.py
+pkgpyexec_LTLIBRARIES      = _libBatch_Swig.la
+_libBatch_Swig_la_SOURCES  = $(BUILT_SOURCES) $(SWIG_SOURCES)
+_libBatch_Swig_la_CPPFLAGS = @PYTHON_INCLUDES@ -I$(srcdir) -I$(srcdir)/../Batch
+_libBatch_Swig_la_LDFLAGS  = -module
+_libBatch_Swig_la_LIBADD   = ../Batch/libSalomeBatch.la @PYTHON_LIBS@
+
+if WITH_OPENPBS
+_libBatch_Swig_la_CPPFLAGS += @OPENPBS_INCLUDES@
+_libBatch_Swig_la_LIBADD   += @OPENPBS_LIBDIR@ @OPENPBS_LIBS@
+endif
+
+swig_wrap.cpp : $(SWIG_SOURCES)
+       $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+CLEANFILES = swig_wrap.cpp
+
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# Scripts to be installed.
+dist_salomescript_SCRIPTS = Batch_test.py
+
+# You don't need to specify libBatch_Swig.py. It is automatically
+# installed by means of the swig target pkgpython_PYTHON.
diff --git a/src/CASCatch/CASCatch.hxx b/src/CASCatch/CASCatch.hxx
new file mode 100644 (file)
index 0000000..03541f9
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _CASCatch_HeaderFile
+#define _CASCatch_HeaderFile
+
+#include <Standard_Failure.hxx>
+#include <Standard_ErrorHandler.hxx>
+
+
+#ifdef try
+#  undef try
+#endif
+
+#ifdef catch
+#  undef catch
+#endif
+
+#ifdef NO_CXX_EXCEPTION
+#  if defined(DO_ABORT)
+#    define CASCatch_TRY \
+       Standard_ErrorHandler _Function; \
+       K_SETJMP = 1 ; \
+       if(DoesNotAbort(_Function))
+#   else  //If DO_ABORT is not defined
+#     define CASCatch_TRY \
+        Standard_ErrorHandler _Function; \
+        if(DoesNotAbort(_Function))
+#   endif //DO_ABORT
+#   define CASCatch_CATCH(Error)   \
+      else if(_Function.Catches(STANDARD_TYPE(Error)))
+#else
+#  define CASCatch_TRY try
+#  define CASCatch_CATCH catch
+#endif //NO_CXX_EXCEPTION
+
+
+#endif
diff --git a/src/CASCatch/Makefile.am b/src/CASCatch/Makefile.am
new file mode 100644 (file)
index 0000000..23fc4c7
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+#  File   : Makefile.in
+#  Author : Sergey RUIN (OCN)
+#  Module : SALOME
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+
+salomeinclude_HEADERS   = CASCatch.hxx \
+                       CASCatch_CatchSignals.hxx \
+                       CASCatch_ErrorHandler.hxx \
+                       CASCatch_Failure.hxx
+
+lib_LTLIBRARIES             = libCASCatch.la
+libCASCatch_la_SOURCES  = \
+                       CASCatch_CatchSignals.cxx \
+                       CASCatch_ErrorHandler.cxx \
+                       CASCatch_Failure.cxx
+
+COMMON_CPPFLAGS = \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@
+
+libCASCatch_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libCASCatch_la_LIBADD  = $(CAS_KERNEL)
diff --git a/src/Communication/Makefile.am b/src/Communication/Makefile.am
new file mode 100644 (file)
index 0000000..61024dc
--- /dev/null
@@ -0,0 +1,102 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = \
+       ReceiverFactory.hxx \
+       SenderFactory.hxx \
+       SALOMEMultiComm.hxx \
+       MultiCommException.hxx \
+       SALOME_Comm_i.hxx \
+       MatrixClient.hxx \
+       SALOME_Matrix_i.hxx
+
+# Scripts to be installed
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS = \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+# _CS_gbo The need for these flags depends on wether the swig
+# interface is generated and if MPI is activated.
+OPT_CPPFLAGS = @PYTHON_INCLUDES@  @MPI_INCLUDES@
+OPT_LIBS     = @PYTHON_LIBS@ @MPI_LIBS@
+OPT_LDFLAGS  = -Xlinker -export-dynamic
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeCommunication.la 
+libSalomeCommunication_la_SOURCES =\
+       SALOME_Comm_i.cxx \
+       SALOME_Matrix_i.cxx \
+       SenderFactory.cxx \
+       MultiCommException.cxx \
+       SALOMEMultiComm.cxx \
+       ReceiverFactory.cxx \
+       MatrixClient.cxx \
+       \
+       MultiCommException.hxx \
+       SALOME_Comm_i.hxx \
+       SALOME_Matrix_i.hxx \
+       SenderFactory.hxx \
+       ReceiverFactory.hxx \
+        MatrixClient.hxx \
+       SALOMEMultiComm.hxx \
+       Receivers.hxx \
+       Receiver.hxx
+
+# the following file is needed by an include file (VERY DIRTY!)
+EXTRA_DIST = Receivers.cxx
+
+libSalomeCommunication_la_CPPFLAGS = $(COMMON_CPPFLAGS) $(OPT_CPPFLAGS)
+libSalomeCommunication_la_LDFLAGS  = -no-undefined -version-info=0:0:0 $(OPT_LDFLAGS)
+libSalomeCommunication_la_LIBADD    = $(COMMON_LIBS) $(OPT_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+# Nothing to build
diff --git a/src/Communication/MatrixClient.cxx b/src/Communication/MatrixClient.cxx
new file mode 100644 (file)
index 0000000..94c5e68
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+#include "MatrixClient.hxx"
+#include "ReceiverFactory.hxx"
+
+double *MatrixClient::getValue(SALOME::Matrix_ptr distMat, int& columnSize, int& rowSize)
+{
+  long totalSize;
+  double *ret=ReceiverFactory::getValue(distMat->getData(),totalSize);
+  columnSize=distMat->getSizeOfColumn();
+  distMat->release();
+  rowSize=totalSize/columnSize;
+  return ret;
+}
diff --git a/src/Communication/MatrixClient.hxx b/src/Communication/MatrixClient.hxx
new file mode 100644 (file)
index 0000000..2d4a742
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+#ifndef __MATRIXCLIENT_HXX__
+#define __MATRIXCLIENT_HXX__
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Comm)
+
+class MatrixClient
+{
+public:
+  static double *getValue(SALOME::Matrix_ptr distMat, int& columnSize, int& rowSize);
+};
+
+#endif
diff --git a/src/Communication/SALOME_Matrix_i.cxx b/src/Communication/SALOME_Matrix_i.cxx
new file mode 100644 (file)
index 0000000..49271c0
--- /dev/null
@@ -0,0 +1,51 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+#include "SALOME_Matrix_i.hxx"
+#include "SenderFactory.hxx"
+
+SALOME_Matrix_i::SALOME_Matrix_i(const SALOMEMultiComm& multiCommunicator,const double *tabToSend,int nbOfRow,int nbOfColumn,bool ownTabToSend):_tabToSend(tabToSend),
+                                                                                                                                               _nbOfRow(nbOfRow),
+                                                                                                                                               _nbOfColumn(nbOfColumn),
+                                                                                                                                               _ownTabToSend(ownTabToSend),
+                                                                                                                                               _type(multiCommunicator)
+{
+}
+
+SALOME_Matrix_i::~SALOME_Matrix_i()
+{
+  if(_ownTabToSend)
+    delete [] _tabToSend;
+}
+
+SALOME::SenderDouble_ptr SALOME_Matrix_i::getData()
+{
+  return SenderFactory::buildSender(_type,_tabToSend,_nbOfRow*_nbOfColumn,_ownTabToSend);
+}
+
+CORBA::Long SALOME_Matrix_i::getSizeOfColumn()
+{
+  return _nbOfColumn;
+}
+
+void SALOME_Matrix_i::release()
+{
+  PortableServer::ObjectId_var oid = _default_POA()->servant_to_id(this);
+  _default_POA()->deactivate_object(oid);
+  _remove_ref();
+}
diff --git a/src/Communication/SALOME_Matrix_i.hxx b/src/Communication/SALOME_Matrix_i.hxx
new file mode 100644 (file)
index 0000000..3b3d33a
--- /dev/null
@@ -0,0 +1,44 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+#ifndef __SALOME_MATRIX_I_HXX__
+#define __SALOME_MATRIX_I_HXX__
+
+#include <string>
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Comm)
+#include "SALOMEMultiComm.hxx"
+
+class SALOME_Matrix_i : public virtual POA_SALOME::Matrix,
+                       public PortableServer::RefCountServantBase {
+private:
+  const double *_tabToSend;
+  int _nbOfRow;
+  int _nbOfColumn;
+  bool _ownTabToSend;
+  SALOMEMultiComm _type;
+protected:
+  ~SALOME_Matrix_i();
+public:
+  SALOME_Matrix_i(const SALOMEMultiComm& multiCommunicator,const double *tabToSend,int nbOfRow,int nbOfColumn,bool ownTabToSend=false);
+  SALOME::SenderDouble_ptr getData();
+  CORBA::Long getSizeOfColumn();
+  void release();
+};
+
+#endif
diff --git a/src/Communication_SWIG/Makefile.am b/src/Communication_SWIG/Makefile.am
new file mode 100644 (file)
index 0000000..30907c8
--- /dev/null
@@ -0,0 +1,100 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Swig targets
+# ===============================================================
+# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm)
+#
+# Step 1: build the wrapping source files with swig
+#
+# libSALOME_Comm.i -- swig --> swig_wrap.cpp
+#                              libSALOME_Comm.py
+#
+# Step 2: build the dynamic library from cpp built source files and
+#         dependant libraries.
+#
+# swig_wrap.cpp -- gcc --> swig_wrap.o    |-- link --> _libSALOME_Comm.la
+#                          +              |
+#                          dependant libs |
+#
+# The file libSALOME_Comm.py will be installed in
+# <prefix>/lib/python<version>/site-package/salome.
+# The library will be installed in the common place.
+#
+
+BUILT_SOURCES = swig_wrap.cpp
+
+SWIG_FLAGS    = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../Communication
+SWIG_SOURCES  = libSALOME_Comm.i
+
+
+pkgpython_PYTHON = libSALOME_Comm.py
+pkgpyexec_LTLIBRARIES = _libSALOME_Comm.la
+_libSALOME_Comm_la_SOURCES  = $(BUILT_SOURCES) $(SWIG_SOURCES)
+_libSALOME_Comm_la_CPPFLAGS =\
+       @PYTHON_INCLUDES@ \
+       -I$(srcdir) -I$(srcdir)/../Communication \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+_libSALOME_Comm_la_LDFLAGS  = -module
+_libSALOME_Comm_la_LIBADD   = \
+       ../Communication/libSalomeCommunication.la \
+       @PYTHON_LIBS@
+
+# _CS_gbo Actually, there's no need to get these flags optional. If
+# the check mpi is not ok, the variables will be simply null.
+if MPI_IS_OK
+_libSALOME_Comm_la_CPPFLAGS+=@MPI_INCLUDES@
+_libSALOME_Comm_la_LIBADD+=@MPI_LIBS@
+endif
+
+
+swig_wrap.cpp : $(SWIG_SOURCES)
+       $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+CLEANFILES = swig_wrap.cpp
+
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# (see LifeCycleCORBA_SWIG for an example)
+
+# It's not needed to specify libSALOME_Comm.py. It is
+# automaticaly installed through the swig target pkgpython_PYTHON.
diff --git a/src/Container/Makefile.am b/src/Container/Makefile.am
new file mode 100644 (file)
index 0000000..1241d4a
--- /dev/null
@@ -0,0 +1,146 @@
+#  SALOME Container : implementation of container and engine for Kernel
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Header to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = \
+       SALOME_Component_i.hxx \
+       SALOME_Container_i.hxx \
+       SALOME_FileTransfer_i.hxx \
+       SALOME_FileRef_i.hxx \
+       SALOME_ContainerManager.hxx \
+       Container_init_python.hxx
+
+# Scripts to be installed
+dist_salomescript_DATA =\
+       SALOME_ComponentPy.py \
+       SALOME_Container.py
+
+# These files are executable scripts
+dist_salomescript_SCRIPTS=\
+       SALOME_ContainerPy.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @PYTHON_INCLUDES@ \
+       @MPI_INCLUDES@ \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
+       @QT_MT_INCLUDES@ \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(srcdir)/../Registry \
+       -I$(srcdir)/../Notification \
+       -I$(srcdir)/../ResourcesManager \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../Registry/libRegistry.la \
+       ../Notification/libSalomeNotification.la \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @PYTHON_LIBS@ \
+       @MPI_LIBS@ \
+       @CORBA_LIBS@
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeContainer.la
+libSalomeContainer_la_SOURCES=\
+       Component_i.cxx \
+       Container_i.cxx \
+       SALOME_FileTransfer_i.cxx \
+       SALOME_FileRef_i.cxx \
+       SALOME_ContainerManager.cxx \
+       Container_init_python.cxx 
+
+libSalomeContainer_la_CPPFLAGS =\
+       $(COMMON_CPPFLAGS)
+
+libSalomeContainer_la_LDFLAGS  =\
+       -no-undefined -version-info=0:0:0 \
+       @LDEXPDYNFLAGS@
+
+libSalomeContainer_la_LIBADD =\
+       $(COMMON_LIBS)
+
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = SALOME_Container SALOME_ContainerManagerServer
+SALOME_Container_SOURCES =\
+       SALOME_Container.cxx \
+       SALOME_Container_SignalsHandler.cxx
+
+SALOME_Container_CPPFLAGS =\
+       $(COMMON_CPPFLAGS)
+
+
+SALOME_Container_LDADD =\
+       libSalomeContainer.la \
+       $(COMMON_LIBS) \
+       ../Basics/libSALOMEBasics.la
+
+
+SALOME_ContainerManagerServer_SOURCES =\
+       SALOME_ContainerManagerServer.cxx
+
+SALOME_ContainerManagerServer_CPPFLAGS=\
+       $(COMMON_CPPFLAGS)
+
+SALOME_ContainerManagerServer_LDADD =\
+       libSalomeContainer.la \
+       $(COMMON_LIBS) \
+       ../Basics/libSALOMEBasics.la
diff --git a/src/Container/SALOME_FileRef_i.cxx b/src/Container/SALOME_FileRef_i.cxx
new file mode 100644 (file)
index 0000000..7dfa311
--- /dev/null
@@ -0,0 +1,180 @@
+// Copyright (C) 2006  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+//  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.1 of the License. 
+// 
+//  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 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SALOME_FileRef_i.cxx
+//  Author : Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+#include "SALOME_FileRef_i.hxx"
+#include "utilities.h"
+#include "OpUtil.hxx"
+#include <string>
+
+using namespace std;
+
+//=============================================================================
+/*! 
+ *  Default constructor, not for use
+ */
+//=============================================================================
+
+fileRef_i::fileRef_i()
+{
+  ASSERT(0);
+}
+//=============================================================================
+/*! 
+ *  Constructor to use
+ */
+//=============================================================================
+
+fileRef_i::fileRef_i(Engines::Container_ptr container,
+                    const char* origFileName)
+{
+  MESSAGE("fileRef_i::fileRef_i "<< origFileName);
+  _container =  Engines::Container::_duplicate(container);
+  _origFileName = origFileName;
+  _machine = GetHostname();
+  int OK = addRef(_machine.c_str(), _origFileName.c_str());
+  SCRUTE(OK);
+}
+
+
+//=============================================================================
+/*! 
+ *  Destructor
+ */
+//=============================================================================
+
+fileRef_i::~fileRef_i()
+{
+  MESSAGE("fileRef_i::~fileRef_i");
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: 
+ *  \return the file name (absolute path) on the computer which runs the
+ *          container server
+ */
+//=============================================================================
+
+char* fileRef_i::origFileName()
+{
+  MESSAGE("fileRef_i::origFileName " << _origFileName);
+  return CORBA::string_dup(_origFileName.c_str());
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: 
+ *  \return the hostname of the computer which runs the container server
+ */
+//=============================================================================
+
+char* fileRef_i::refMachine()
+{
+  MESSAGE("fileRef_i::refMachine " << _machine);
+  return CORBA::string_dup(_machine.c_str());
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: 
+ *  \return the container reference
+ */
+//=============================================================================
+
+Engines::Container_ptr fileRef_i::getContainer()
+{
+  MESSAGE("fileRef_i::getContainer");
+ Engines::Container_var theContainer = 
+   Engines::Container::_duplicate(_container);
+ return theContainer._retn();
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: after a file transfer on a client computer, registers 
+ *  hostname of client and file path of the copied file.
+ *  \param machine client hostname
+ *  \param fileName asolute path of the transfered file on client computer
+ */
+//=============================================================================
+
+CORBA::Boolean fileRef_i::addRef(const char* machine,
+                                const char* fileName)
+{
+  MESSAGE("fileRef_i::addRef " << machine << " " << fileName);
+  string theMachine = machine;
+  string theFileName = fileName;
+
+  if (theFileName[0] != '/')
+    {
+      INFOS("destination file path must be absolute, begining with '/'");
+      return 0;
+    }
+
+  if (theMachine.empty())
+    {
+      INFOS("provide a hostname for the copy destination");
+      return 0;
+    }
+
+  if (! _copies[theMachine].empty())
+    {
+      INFOS("there is already a copy on " << theMachine << " under the path "
+           <<  _copies[theMachine] << " new ref not added! ");
+      return 0;
+    }
+
+  _copies[theMachine] = theFileName;
+  return 1;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: check if a copy of the file referenced by fileRef is
+ *  available on the client computer.
+ *  \param  machine hostname of the client computer
+ *  \return path of the copy on the client computer, if the copy exists,
+ *          else empty string
+ */
+//=============================================================================
+
+char* fileRef_i::getRef(const char* machine)
+{
+  MESSAGE("fileRef_i::getRef "<< machine);
+  string theMachine = machine;
+  string theFileName = _copies[theMachine];
+  if (_copies[theMachine].empty())
+    {
+      MESSAGE("no copy of " << _machine << _origFileName << " available on "
+             << theMachine);
+    }
+  else
+    {
+      MESSAGE("a copy of " << _machine << _origFileName << "is available on "
+             << theMachine << _copies[theMachine]);
+    }
+  return CORBA::string_dup(_copies[theMachine].c_str());
+}
+
diff --git a/src/Container/SALOME_FileRef_i.hxx b/src/Container/SALOME_FileRef_i.hxx
new file mode 100644 (file)
index 0000000..0856bb1
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2006  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+//  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.1 of the License. 
+// 
+//  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 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SALOME_FileRef_i.hxx
+//  Author : Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+#ifndef _SALOME_FILEREF_I_HXX_
+#define _SALOME_FILEREF_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Component)
+
+#include <string>
+#include <map>
+
+class fileRef_i:
+  public virtual POA_Engines::fileRef,
+  public virtual PortableServer::RefCountServantBase
+{
+public:
+  fileRef_i();
+  fileRef_i(Engines::Container_ptr container,
+           const char* origFileName);
+  virtual ~fileRef_i();
+
+  char* origFileName();
+
+  char* refMachine();
+
+  Engines::Container_ptr getContainer();
+
+  CORBA::Boolean addRef(const char* machine,
+                       const char* fileName);
+
+  char* getRef(const char* machine);
+
+protected:
+  Engines::Container_var _container;
+  std::string _origFileName;
+  std::string _machine;
+  std::map<std::string, std::string> _copies;
+};
+
+#endif
diff --git a/src/Container/SALOME_FileTransfer_i.cxx b/src/Container/SALOME_FileTransfer_i.cxx
new file mode 100644 (file)
index 0000000..036fc5b
--- /dev/null
@@ -0,0 +1,129 @@
+
+// Copyright (C) 2006  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+//  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.1 of the License. 
+// 
+//  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 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SALOME_FileTransfer_i.cxx
+//  Author : Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+#include "SALOME_FileTransfer_i.hxx"
+#include "utilities.h"
+
+//=============================================================================
+/*! 
+ *  Default constructor,
+ */
+//=============================================================================
+
+fileTransfer_i::fileTransfer_i()
+{
+  MESSAGE("fileTransfer_i::fileTransfer_i");
+  _fileKey=1;
+}
+
+//=============================================================================
+/*! 
+ *  Destructor
+ */
+//=============================================================================
+
+fileTransfer_i::~fileTransfer_i()
+{
+  MESSAGE("fileTransfer_i::~fileTransfer_i");
+}
+
+
+//=============================================================================
+/*! 
+ *  CORBA method: try to open the file given. If the file is readable, return
+ *  a positive integer else return 0;
+ *  \param  fileName path to the file to be transfered
+ *  \return fileId = positive integer > 0 if open OK.
+ */
+//=============================================================================
+
+CORBA::Long fileTransfer_i::open(const char* fileName)
+{
+  MESSAGE(" fileTransfer_i::open " << fileName);
+  int aKey = _fileKey++;
+  _ctr=0;
+  FILE* fp;
+  if ((fp = fopen(fileName,"rb")) == NULL)
+    {
+      INFOS("file " << fileName << " is not readable");
+      return 0;
+    }
+  _fileAccess[aKey] = fp;
+  return aKey;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: close the file associated to the fileId given at open.
+ *  \param fileId got in return from open method
+ */
+//=============================================================================
+
+void fileTransfer_i::close(CORBA::Long fileId)
+{
+  MESSAGE("fileTransfer_i::close");
+  FILE* fp;
+  if (! (fp = _fileAccess[fileId]) )
+    {
+      INFOS(" no FILE structure associated to fileId " <<fileId);
+    }
+  else fclose(fp);
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: get a block of data from the file associated to the fileId
+ *  given at open.
+ *  \param fileId got in return from open method
+ *  \return an octet sequence. Last one is empty.
+ */
+//=============================================================================
+
+#define FILEBLOCK_SIZE 256*1024
+
+Engines::fileBlock* fileTransfer_i::getBlock(CORBA::Long fileId)
+{
+  MESSAGE("fileTransfer_i::getBlock");
+  Engines::fileBlock* aBlock = new Engines::fileBlock;
+
+  FILE* fp;
+  if (! (fp = _fileAccess[fileId]) )
+    {
+      INFOS(" no FILE structure associated to fileId " <<fileId);
+      return aBlock;
+    }
+
+  // use replace member function for sequence to avoid copy
+  // see Advanced CORBA Programming with C++ pp 187-194
+  
+  CORBA::Octet *buf;
+  buf = Engines::fileBlock::allocbuf(FILEBLOCK_SIZE);
+  int nbRed = fread(buf, sizeof(CORBA::Octet), FILEBLOCK_SIZE, fp);
+  SCRUTE(nbRed);
+  aBlock->replace(nbRed, nbRed, buf, 1); // 1 means give ownership
+  return aBlock;
+}
+
diff --git a/src/Container/SALOME_FileTransfer_i.hxx b/src/Container/SALOME_FileTransfer_i.hxx
new file mode 100644 (file)
index 0000000..8141bbc
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright (C) 2006  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+//  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.1 of the License. 
+// 
+//  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 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SALOME_FileTransfer_i.hxx
+//  Author : Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+
+#ifndef _SALOME_FILETRANSFER_I_HXX_
+#define _SALOME_FILETRANSFER_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Component)
+#include <map>
+#include <cstdio>
+
+class fileTransfer_i:
+  public virtual POA_Engines::fileTransfer,
+  public virtual PortableServer::RefCountServantBase
+{
+public:
+  fileTransfer_i();
+  virtual ~fileTransfer_i();
+
+  CORBA::Long open(const char* fileName);
+
+  void close(CORBA::Long fileId);
+
+  Engines::fileBlock* getBlock(CORBA::Long fileId);
+
+protected:
+  int _fileKey;
+  std::map<int, FILE*> _fileAccess;
+  int _ctr;
+};
+
+#endif
diff --git a/src/GenericObj/Makefile.am b/src/GenericObj/Makefile.am
new file mode 100644 (file)
index 0000000..20cfa0d
--- /dev/null
@@ -0,0 +1,28 @@
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$ 
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# header files  
+salomeinclude_HEADERS =\
+       SALOME_GenericObj_i.hh
+
+# Libraries targets
+lib_LTLIBRARIES = libSalomeGenericObj.la
+libSalomeGenericObj_la_SOURCES =\
+       SALOME_GenericObj_i.cc
+
+libSalomeGenericObj_la_LDFLAGS = -no-undefined -version-info=0:0:0
+libSalomeGenericObj_la_CPPFLAGS = \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+libSalomeGenericObj_la_LIBADD  = \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
diff --git a/src/HDFPersist/Makefile.am b/src/HDFPersist/Makefile.am
new file mode 100644 (file)
index 0000000..b65ea9a
--- /dev/null
@@ -0,0 +1,106 @@
+#  SALOME HDFPersist : implementation of HDF persitent ( save/ restore )
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+salomeinclude_HEADERS      = \
+       HDFattribute.hxx \
+       HDFcontainerObject.hxx \
+       HDFdataset.hxx \
+       HDFexplorer.hxx \
+       HDFexception.hxx \
+       HDFfile.hxx \
+       HDFgroup.hxx \
+       HDFinternalObject.hxx \
+       HDFobject.hxx \
+       HDFOI.hxx \
+       HDFtypes.h \
+       HDFconvert.hxx \
+       hdfi.h \
+       HDFascii.hxx
+
+# Libraries targets
+lib_LTLIBRARIES                 = libSalomeHDFPersist.la
+libSalomeHDFPersist_la_SOURCES  =\
+       HDFfileCreate.c \
+       HDFfileClose.c \
+       HDFfileOpen.c \
+       HDFfileMount.c \
+       HDFfileUmount.c \
+       HDFgroupCreate.c \
+       HDFgroupOpen.c \
+       HDFgroupClose.c \
+       HDFdatasetOpen.c \
+       HDFdatasetClose.c \
+       HDFdatasetCreate.c \
+       HDFdatasetWrite.c \
+       HDFdatasetRead.c \
+       HDFdatasetGetDim.c \
+       HDFdatasetGetSize.c \
+       HDFdatasetGetType.c \
+       HDFdatasetGetnDim.c \
+       HDFdatasetGetOrder.c \
+       HDFattrOpen.c \
+       HDFattrClose.c \
+       HDFattrWrite.c \
+       HDFattrCreate.c \
+       HDFattrRead.c \
+       HDFattrGetType.c \
+       HDFattrGetSize.c \
+       HDFerrorModeLock.c \
+       HDFnObjects.c \
+       HDFobjectIdentify.c \
+       HDFobjectType.c \
+       HDFobject.cc \
+       HDFinternalObject.cc \
+       HDFattribute.cc \
+       HDFcontainerObject.cc \
+       HDFdataset.cc \
+       HDFfile.cc \
+       HDFgroup.cc \
+       HDFexplorer.cc \
+       HDFconvert.cc \
+       HDFascii.cc
+
+libSalomeHDFPersist_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSalomeHDFPersist_la_CPPFLAGS = @CAS_CPPFLAGS@ @HDF5_INCLUDES@ -DPCLINUX \
+                                  -I$(srcdir)/../SALOMELocalTrace \
+                                  -I$(srcdir)/../Basics
+libSalomeHDFPersist_la_LIBADD   = @CAS_KERNEL@ @HDF5_LIBS@
+
+
+EXTRA_DIST = \
+  test1.c \
+  test2.c \
+  test3.cxx \
+  test4.cxx \
+  test5.cxx \
+  test6.cxx \
+  test7.cxx \
+  test8.cxx \
+  test9.cxx
diff --git a/src/KERNEL_PY/Makefile.am b/src/KERNEL_PY/Makefile.am
new file mode 100755 (executable)
index 0000000..bd5ab0a
--- /dev/null
@@ -0,0 +1,46 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# Scripts to be installed (pkgpython is an automake keyword for python targets)
+pkgpython_PYTHON = \
+       Help.py \
+       PyInterp.py \
+       salome.py \
+       salome_shared_modules.py \
+       batchmode_salome.py \
+       import_hook.py \
+       salome_test.py \
+       salome_kernel.py \
+       salome_study.py \
+       salome_iapp.py \
+       salome_ComponentGUI.py \
+       omnipatch.py \
+       iparameters.py \
+       salome_version.py
+
+sharedpkgpython_PYTHON = kernel_shared_modules.py
+
diff --git a/src/KERNEL_PY/iparameters.py b/src/KERNEL_PY/iparameters.py
new file mode 100755 (executable)
index 0000000..fab464f
--- /dev/null
@@ -0,0 +1,245 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+import salome
+import string
+import SALOME
+import SALOMEDS
+import SALOME_Session_idl
+
+PT_INTEGER = 0
+PT_REAL = 1
+PT_BOOLEAN = 2
+PT_STRING = 3
+PT_REALARRAY = 4
+PT_INTARRAY = 5
+PT_STRARRAY = 6
+
+_AP_LISTS_LIST_ = "AP_LISTS_LIST"
+_AP_ENTRIES_LIST_ = "AP_ENTRIES_LIST"
+_AP_PROPERTIES_LIST_ = "AP_PROPERTIES_LIST"
+_AP_DUMP_PYTHON_ = "AP_DUMP_PYTHON"
+
+vp_session = None
+
+def getSession():
+    global vp_session
+    if vp_session is None:
+        vp_session = salome.naming_service.Resolve("/Kernel/Session")
+        vp_session = vp_session._narrow(SALOME.Session)
+        pass
+    return vp_session 
+
+class IParameters:
+    """
+    Interface IParameters was designed to provide a common way to set up
+    named parameters. The interface is initialized by AttributeParameter that
+    is used as a container of stored data.
+    The interface supports 3 types of named parameters:
+    1. Named list - a named list consists of string values.
+       One can append value to list (method 'append'), get a number of values
+       in the list (method 'nbValues'), get all values of the given list
+       (method 'getValues') and get names of all created named lists.
+    2. Parameters - that is a set of named string values associated with some named
+       entity. Parameter consists of tree elements: entity name, a parameter name
+       and a parameter value. Thus for one named entity there are an arbitrary number
+       of pair 'name parameter : value'.
+       One can add a new parameter to entry (method 'setParameter'), get a value of
+       a given named parameter of the given entry (method 'getParameter'), get a number
+       of parameters of the given entry (method 'getNbParameters'), get all names of
+       parameters for the given entry (method 'getAllParameterNames'), get all
+       values of parameters for the entry (method 'getAllParameterValues') and get all
+       stored entries (method 'getEntries')
+    3. Property - a property has a name and a string value.
+       One can set property (method 'setProperty'), getProperty (method 'getProperty') and
+       get a list of all stored properties (method 'getProperties').
+
+    Note:   
+          Methods not mentioned above are private and is not supposed to be used
+          by module's developers.   
+       
+    """
+    def __init__(self, attributeParameter):
+        """Initializes the instance"""
+        self._ap = attributeParameter
+        pass
+
+    def append(self, listName, value):
+        """Appends a value to the named list"""
+        if self._ap is None: return -1
+        v = []
+        if self._ap.IsSet(listName, PT_STRARRAY) == 0:
+            if self._ap.IsSet(_AP_LISTS_LIST_, PT_STRARRAY) == 0: self._ap.SetStrArray(_AP_LISTS_LIST_, v);
+            if listName != _AP_ENTRIES_LIST_ and listName != _AP_PROPERTIES_LIST_:
+                self.append(_AP_LISTS_LIST_, listName)
+                pass
+            self._ap.SetStrArray(listName, v)
+            pass
+        
+        v = self._ap.GetStrArray(listName)
+        v.append(value)
+        self._ap.SetStrArray(listName, v)
+        return (len(v)-1)
+    
+    def nbValues(self, listName):
+        """Returns a number of values in the named list"""
+        if self._ap is None: return -1
+        if self._ap.IsSet(listName, PT_STRARRAY) == 0: return 0
+        v = self._ap.GetStrArray(listName)
+        return len(v)
+
+    def getValues(self, listName):
+        """Returns a list of values in the named list"""
+        v = []
+        if self._ap is None: return v
+        if self._ap.IsSet(listName, PT_STRARRAY) == 0: return v
+        return self._ap.GetStrArray(listName)
+
+    def getLists(self):
+        """Returns a list of named lists' names"""
+        v = []
+        if self._ap is None: return v
+        if self._ap.IsSet(_AP_LISTS_LIST_, PT_STRARRAY) == 0: return v
+        return self._ap.GetStrArray(_AP_LISTS_LIST_)
+
+    def setParameter(self, entry, parameterName, value):
+        """Sets a value of the named parameter for the entry"""
+        if self._ap is None: return
+        v = []
+        if self._ap.IsSet(entry, PT_STRARRAY) ==0: 
+            self.append(_AP_ENTRIES_LIST_, entry) #Add the entry to the internal list of entries
+            self._ap.SetStrArray(entry, v)
+            pass
+        
+        v = self._ap.GetStrArray(entry)
+        v.append(parameterName)
+        v.append(value)
+        self._ap.SetStrArray(entry, v)
+        pass
+
+    def getParameter(self, entry, parameterName):
+        """Returns a value of the named parameter for the entry"""
+        if self._ap is None: return ""
+        if self._ap.IsSet(entry, PT_STRARRAY) == 0: return ""
+        v = self._ap.GetStrArray(entry)
+        length = len(v);
+        i = 0
+        while i<length:
+            if v[i] == parameterName: return v[i+1]
+            i+=1
+            pass
+        
+        return ""
+
+    def getAllParameterNames(self, entry):
+        """Returns all parameter names of the given entry"""
+        v = []
+        names = []
+        if self._ap is None: return v
+        if self._ap.IsSet(entry, PT_STRARRAY) == 0: return v
+        v = self._ap.GetStrArray(entry)
+        length = len(v)
+        i = 0
+        while i<length:
+            names.append(v[i])
+            i+=2
+            pass
+        
+        return names
+
+    def getAllParameterValues(self, entry):
+        """Returns all parameter values of the given entry"""
+        v = []
+        values = []
+        if self._ap is None: return v
+        if self._ap.IsSet(entry, PT_STRARRAY) == 0: return v
+        v = self._ap.GetStrArray(entry)
+        length = len(v)
+        i = 1
+        while i<length:
+            values.append(v[i]+1)
+            i+=2
+            pass
+        
+        return values
+
+    def getNbParameters(self, entry):
+        """Returns a number of parameters of the entry"""
+        if self._ap is None: return -1
+        if self._ap.IsSet(entry, PT_STRARRAY) == 0: return -1
+        return len(self._ap.GetStrArray(entry))/2
+
+    def getEntries(self):
+        """Returns all entries"""
+        v = []
+        if self._ap is None: return v
+        if self._ap.IsSet(_AP_ENTRIES_LIST_, PT_STRARRAY) == 0: return v
+        return self._ap.GetStrArray(_AP_ENTRIES_LIST_)
+
+    def setProperty(self, name, value):
+        """Sets a property value"""
+        if self._ap is None: return
+        if self._ap.IsSet(name, PT_STRING) == 0: 
+            self.append(_AP_PROPERTIES_LIST_, name) #Add the property to the internal list of properties
+            pass
+        self._ap.SetString(name, value)
+        pass
+
+    def getProperty(self, name):
+        """Returns a value of the named property"""
+        if self._ap is None: return ""
+        if self._ap.IsSet(name, PT_STRING) == 0: return ""
+        return self._ap.GetString(name)
+
+    def getProperties(self):
+        """Returns all propetries"""
+        v = []
+        if self._ap is None: return v
+        if self._ap.IsSet(_AP_PROPERTIES_LIST_, PT_STRARRAY) == 0: return v
+        return self._ap.GetStrArray(_AP_PROPERTIES_LIST_)
+
+    def parseValue(self, value, separator, fromEnd):
+        """Breaks a value string in two parts which is divided by separator."""
+        v = []
+        pos = - 1
+        if fromEnd == 1: pos = value.rfind(separator)
+        else: pos = value.find(separator)
+
+        if pos < 0: 
+            v.append(value)
+            return v
+        
+        part1 = value[0:pos]
+        part2 = value[pos+1:len(value)]
+        v.append(part1)
+        v.append(part2)
+        return v
+
+    def setDumpPython(self, isDumping):
+        """Enables/Disables the dumping to Python"""
+        if self._ap is None: return
+        _ap.SetBool(_AP_DUMP_PYTHON_, isDumping)
+        pass
+
+    def isDumpPython(self):
+        """Returns whether there is the dumping to Python"""
+        if self._ap is None: return 0
+        if self._ap.IsSet(_AP_DUMP_PYTHON_, PT_BOOLEAN) == 0: return 0
+        return self._ap.GetBool(_AP_DUMP_PYTHON_)
+
+    pass
diff --git a/src/KERNEL_PY/salome_version.py b/src/KERNEL_PY/salome_version.py
new file mode 100644 (file)
index 0000000..97e9076
--- /dev/null
@@ -0,0 +1,84 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+#  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.1 of the License.
+#
+#  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
+#
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+#
+#  File   : salome_version.py
+#  Author : Vadim SANDLER
+#  Module : SALOME
+
+_salome_versions = {}
+
+def getVersion( mod = "KERNEL" ):
+    """
+    Get SALOME module version number
+    Returns: version number string or None if VERSION file is not found
+    """
+    global _salome_versions
+    mod = mod.upper()
+    if not _salome_versions.has_key( mod ):
+        _salome_versions[ mod ] = None
+        import os
+        root_dir = os.getenv( "%s_ROOT_DIR" % mod )
+        if root_dir:
+            try:
+                filename = root_dir + "/bin/salome/VERSION"
+                if not os.path.exists( filename ):
+                    filename = root_dir + "/bin/VERSION"
+                file = open( filename )
+                ver = file.readline()
+                file.close()
+                _salome_versions[ mod ] = ver.split( ":" )[ -1 ].strip()
+            except:
+                pass
+    return _salome_versions[ mod ]
+
+def getVersionMajor( mod = "KERNEL" ):
+    """
+    Get SALOME module major version number
+    Returns: version major number string or None if VERSION file is not found
+    """
+    ver = getVersion( mod )
+    try:
+        return ver.split( "." )[ 0 ]
+    except:
+        pass
+    return None
+
+def getVersionMinor( mod = "KERNEL" ):
+    """
+    Get SALOME module minor version number
+    Returns: version minor number string or None if VERSION file is not found
+    """
+    ver = getVersion( mod )
+    try:
+        return ver.split( "." )[ 1 ]
+    except:
+        pass
+    return None
+
+def getVersionRelease( mod = "KERNEL" ):
+    """
+    Get SALOME module release version number
+    Returns: version release number string or None if VERSION file is not found
+    """
+    ver = getVersion( mod )
+    try:
+        return ver.split( "." )[ 2 ]
+    except:
+        pass
+    return None
diff --git a/src/LifeCycleCORBA/Makefile.am b/src/LifeCycleCORBA/Makefile.am
new file mode 100644 (file)
index 0000000..6bee2cf
--- /dev/null
@@ -0,0 +1,119 @@
+#  SALOME LifeCycleCORBA : implementation of containers and engines life cycle both in Python and C++
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = \
+       SALOME_LifeCycleCORBA.hxx \
+       SALOME_FileTransferCORBA.hxx
+
+# Scripts to be installed
+#dist_salomescript_DATA =\
+#      Launchers.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../SALOMETraceCollector \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(srcdir)/../ResourcesManager \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../Container/libSalomeContainer.la \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeLifeCycleCORBA.la
+libSalomeLifeCycleCORBA_la_SOURCES  = \
+       SALOME_LifeCycleCORBA.cxx \
+       SALOME_FileTransferCORBA.cxx
+libSalomeLifeCycleCORBA_la_CPPFLAGS = \
+       $(COMMON_CPPFLAGS) \
+       @PYTHON_INCLUDES@ \
+       @QT_MT_INCLUDES@ \
+       -I$(srcdir)/../Container \
+       -I$(srcdir)/../Notification
+
+libSalomeLifeCycleCORBA_la_LIBADD   = $(COMMON_LIBS)
+# _CS_gbo Check whether Python lib or Qt lib is not required here.
+# For better understanding, it could be better to specified
+# explicitely all libraries even those that are implicitly given
+# throught a library mentionned in COMMON_LIBS.
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = Test_LifeCycleCORBA
+Test_LifeCycleCORBA_SOURCES  = Test_LifeCycleCORBA.cxx
+Test_LifeCycleCORBA_CPPFLAGS =\
+       -I$(srcdir)/../Registry \
+       -I$(srcdir)/../Notification \
+       $(COMMON_CPPFLAGS)
+
+Test_LifeCycleCORBA_LDADD    = \
+       libSalomeLifeCycleCORBA.la \
+       ../Registry/libRegistry.la \
+       ../Notification/libSalomeNotification.la \
+       ../Container/libSalomeContainer.la \
+       $(COMMON_LIBS) \
+       @CORBA_LIBS@
+
+#CPPFLAGS += $(PYTHON_INCLUDES) $(QT_MT_INCLUDES)
+
+#LDFLAGS += -lSalomeNS -lOpUtil -lSALOMELocalTrace -lSalomeContainer -lSalomeResourcesManager
+#LDFLAGSFORBIN= $(LDFLAGS) -lRegistry -lSalomeNotification -lSALOMEBasics
+#LIBS += $(PYTHON_LIBS)
diff --git a/src/LifeCycleCORBA/SALOME_FileTransferCORBA.cxx b/src/LifeCycleCORBA/SALOME_FileTransferCORBA.cxx
new file mode 100644 (file)
index 0000000..a608f21
--- /dev/null
@@ -0,0 +1,201 @@
+// Copyright (C) 2006  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+//  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.1 of the License. 
+// 
+//  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 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SALOME_FileTransferCORBA.cxx
+//  Author : Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+#include "SALOME_FileTransferCORBA.hxx"
+#include "SALOME_LifeCycleCORBA.hxx"
+#include "utilities.h"
+#include "OpUtil.hxx"
+
+using namespace std;
+
+//=============================================================================
+/*! 
+ *  Default constructor, not for use.
+ */
+//=============================================================================
+
+SALOME_FileTransferCORBA::SALOME_FileTransferCORBA()
+{
+  ASSERT(0);
+}
+
+//=============================================================================
+/*! 
+ *  Constructor to use when we get a fileRef CORBA object from a component.
+ *  \param aFileRef file reference CORBA object
+ */
+//=============================================================================
+
+SALOME_FileTransferCORBA::SALOME_FileTransferCORBA(Engines::fileRef_ptr
+                                                  aFileRef)
+{
+  MESSAGE("SALOME_FileTransferCORBA::SALOME_FileTransferCORBA(aFileRef)");
+  _theFileRef = aFileRef;
+}
+
+//=============================================================================
+/*! 
+ *  Constructor to use when we have the file name and machine from which to
+ *  copy, plus an optional Container name on the machine.
+ *  \param refMachine    the machine on which is the file to transfer
+ *  \param origFileName  abolute file path on refMachine
+ *  \param containerName default container name used (FactoryServer) if empty
+ */
+//=============================================================================
+
+SALOME_FileTransferCORBA::SALOME_FileTransferCORBA(string refMachine,
+                                                  string origFileName,
+                                                  string containerName)
+{
+  MESSAGE("SALOME_FileTransferCORBA::SALOME_FileTransferCORBA"
+         << refMachine << " " << origFileName  << " " << containerName);
+  _refMachine = refMachine;
+  _origFileName = origFileName;
+  _containerName = containerName;
+  if (_refMachine.empty() or _origFileName.empty())
+    {
+      INFOS("bad parameters: machine and file name must be given");
+    } 
+}
+
+//=============================================================================
+/*! 
+ *  Destructor
+ */
+//=============================================================================
+
+SALOME_FileTransferCORBA::~SALOME_FileTransferCORBA()
+{
+  MESSAGE("SALOME_FileTransferCORBA::~SALOME_FileTransferCORBA");
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: get a local copy of the reference file.
+ *  \param  localFile optional absolute path to store the copy
+ *  \return the file name (absolute path) of the copy, may be different from
+ *          localFile parameter if the copy was already done before the call
+ */
+//=============================================================================
+
+string SALOME_FileTransferCORBA::getLocalFile(string localFile)
+{
+  MESSAGE("SALOME_FileTransferCORBA::getLocalFile " << localFile);
+
+  Engines::Container_var container;
+
+  if (CORBA::is_nil(_theFileRef))
+    {
+      if (_refMachine.empty() or _origFileName.empty())
+       {
+         INFOS("not enough parameters: machine and file name must be given");
+         return "";
+       }
+
+      SALOME_LifeCycleCORBA LCC;
+      Engines::ContainerManager_var contManager = LCC.getContainerManager();
+
+      Engines::MachineParameters params;
+      LCC.preSet(params);
+      params.container_name = _containerName.c_str();
+      params.hostname = _refMachine.c_str();
+
+      Engines::MachineList_var listOfMachines =
+       contManager->GetFittingResources(params, "");
+
+      container = contManager->FindOrStartContainer(params,
+                                                   listOfMachines);
+      if (CORBA::is_nil(container))
+       {
+         INFOS("machine " << _refMachine << " unreachable");
+         return "";
+       }
+
+      _theFileRef = container->createFileRef(_origFileName.c_str());
+      if (CORBA::is_nil(_theFileRef))
+       {
+         INFOS("imposssible to create fileRef on " << _refMachine);
+         return "";
+       }
+    }
+
+  container = _theFileRef->getContainer();
+  ASSERT(! CORBA::is_nil(container));
+
+  string myMachine = GetHostname();
+  string localCopy = _theFileRef->getRef(myMachine.c_str());
+
+  if (localCopy.empty()) // no existing copy available
+    {
+      if (localFile.empty()) // no name provided for local copy
+       {
+         char bufName[256];
+         localCopy = tmpnam(bufName);
+         localFile = bufName;
+         SCRUTE(localFile);
+       }
+
+      FILE* fp;
+      if ((fp = fopen(localFile.c_str(),"wb")) == NULL)
+       {
+         INFOS("file " << localFile << " cannot be open for writing");
+         return "";
+       }
+
+      Engines::fileTransfer_var fileTransfer = container->getFileTransfer();
+      ASSERT(! CORBA::is_nil(fileTransfer));
+
+      CORBA::Long fileId = fileTransfer->open(_origFileName.c_str());
+      if (fileId > 0)
+       {
+         Engines::fileBlock* aBlock;
+         int toFollow = 1;
+         int ctr=0;
+         while (toFollow)
+           {
+             ctr++;
+             SCRUTE(ctr);
+             aBlock = fileTransfer->getBlock(fileId);
+             toFollow = aBlock->length();
+             SCRUTE(toFollow);
+             CORBA::Octet *buf = aBlock->get_buffer();
+             int nbWri = fwrite(buf, sizeof(CORBA::Octet), toFollow, fp);
+             ASSERT(nbWri == toFollow);
+           }
+         MESSAGE("end of transfer");
+         fileTransfer->close(fileId);
+         _theFileRef->addRef(myMachine.c_str(), localFile.c_str());
+         localCopy = localFile;
+       }
+      else
+       {
+         INFOS("open reference file for copy impossible");
+         return "";
+       }
+      
+    }
+  SCRUTE(localCopy);
+  return localCopy;
+}
diff --git a/src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx b/src/LifeCycleCORBA/SALOME_FileTransferCORBA.hxx
new file mode 100644 (file)
index 0000000..871e0aa
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright (C) 2006  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+//  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.1 of the License. 
+// 
+//  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 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SALOME_FileTransferCORBA.hxx
+//  Author : Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+#ifndef _SALOME_FILETRANSFERCORBA_HXX_
+#define _SALOME_FILETRANSFERCORBA_HXX_
+
+
+#include <SALOMEconfig.h>
+#include <Utils_SALOME_Exception.hxx>
+
+#include CORBA_CLIENT_HEADER(SALOME_Component)
+
+#include <string>
+
+class SALOME_FileTransferCORBA
+{
+public:
+  SALOME_FileTransferCORBA();
+  SALOME_FileTransferCORBA(Engines::fileRef_ptr aFileRef);
+  SALOME_FileTransferCORBA(std::string refMachine,
+                          std::string origFileName,
+                          std::string containerName="");
+
+  virtual ~SALOME_FileTransferCORBA();
+
+  std::string getLocalFile(std::string localFile = "");
+
+protected:
+  Engines::fileRef_var _theFileRef;
+  std::string _refMachine;
+  std::string _origFileName;
+  std::string _containerName;
+};
+
+#endif
diff --git a/src/LifeCycleCORBA/Test/Makefile.am b/src/LifeCycleCORBA/Test/Makefile.am
new file mode 100644 (file)
index 0000000..9df7b5c
--- /dev/null
@@ -0,0 +1,103 @@
+####################################### library
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS= LifeCycleCORBATest.hxx
+
+# Scripts to be installed
+dist_salomescript_SCRIPTS = TestLifeCycleCORBA.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This directory defines the subdirectory src in the top source directory.
+RPATH=../..
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CPPUNIT_INCLUDES@ \
+       -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \
+       -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \
+       -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \
+       -I$(srcdir)/$(RPATH)/NamingService -I$(srcdir)/$(RPATH)/NamingService/Test \
+       -I$(srcdir)/$(RPATH)/Utils -I$(srcdir)/$(RPATH)/Utils/Test \
+       -I$(srcdir)/$(RPATH)/ResourcesManager \
+       -I$(srcdir)/$(RPATH)/LifeCycleCORBA \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       @CPPUNIT_LIBS@ \
+       $(RPATH)/Basics/libSALOMEBasics.la \
+       $(RPATH)/ResourcesManager/libSalomeResourcesManager.la \
+       $(RPATH)/Container/libSalomeContainer.la \
+       $(RPATH)/NamingService/libSalomeNS.la \
+       $(RPATH)/Registry/libRegistry.la \
+       $(RPATH)/Notification/libSalomeNotification.la \
+       $(RPATH)/Utils/Test/libUtilsTest.la $(RPATH)/Utils/libOpUtil.la \
+       $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libLifeCycleCORBATest.la 
+libLifeCycleCORBATest_la_SOURCES = LifeCycleCORBATest.cxx
+libLifeCycleCORBATest_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libLifeCycleCORBATest_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libLifeCycleCORBATest_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestLifeCycleCORBA
+TestLifeCycleCORBA_SOURCES  = TestLifeCycleCORBA.cxx
+TestLifeCycleCORBA_CPPFLAGS = $(COMMON_CPPFLAGS)
+TestLifeCycleCORBA_LDADD    = \
+       libLifeCycleCORBATest.la ../libSalomeLifeCycleCORBA.la \
+       $(RPATH)/NamingService/Test/libNamingServiceTest.la \
+       $(COMMON_LIBS)
+
diff --git a/src/LifeCycleCORBA_SWIG/Makefile.am b/src/LifeCycleCORBA_SWIG/Makefile.am
new file mode 100644 (file)
index 0000000..0a1b1d8
--- /dev/null
@@ -0,0 +1,96 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Swig targets
+# ===============================================================
+# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm)
+#
+# Step 1: build the wrapping source files with swig
+#
+# libSALOME_LifeCycleCORBA.i -- swig --> swig_wrap.cpp
+#                                        libSALOME_LifeCycleCORBA.py
+#
+# Step 2: build the dynamic library from cpp built source files and
+#         dependant libraries.
+#
+# swig_wrap.cpp -- gcc --> swig_wrap.o    |-- link --> _libSALOME_LifeCycleCORBA.la
+#                          +              |
+#                          dependant libs |
+#
+# The file libSALOME_LifeCycleCORBA.py will be installed in
+# <prefix>/lib/python<version>/site-package/salome.
+# The library will be installed in the same place.
+#
+
+BUILT_SOURCES = swig_wrap.cpp
+
+SWIG_FLAGS    = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../LifeCycleCORBA
+SWIG_SOURCES  = libSALOME_LifeCycleCORBA.i
+
+pkgpython_PYTHON = libSALOME_LifeCycleCORBA.py
+pkgpyexec_LTLIBRARIES = _libSALOME_LifeCycleCORBA.la
+_libSALOME_LifeCycleCORBA_la_SOURCES  = $(BUILT_SOURCES) $(SWIG_SOURCES)
+_libSALOME_LifeCycleCORBA_la_CPPFLAGS =\
+       @PYTHON_INCLUDES@ \
+       -I$(srcdir) \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../LifeCycleCORBA \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+_libSALOME_LifeCycleCORBA_la_LDFLAGS  = -module
+_libSALOME_LifeCycleCORBA_la_LIBADD   = \
+       ../LifeCycleCORBA/libSalomeLifeCycleCORBA.la \
+       @PYTHON_LIBS@
+
+swig_wrap.cpp : $(SWIG_SOURCES)
+       $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+CLEANFILES = swig_wrap.cpp
+
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# Scripts to be installed.
+dist_salomescript_DATA =\
+       LifeCycleCORBA.py \
+       TestLifeCycleCORBA.py
+
+# It's not needed to specify libSALOME_LifeCycleCORBA.py. It is
+# automaticaly installed through the swig target pkgpython_PYTHON.
diff --git a/src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py b/src/LifeCycleCORBA_SWIG/Test/LifeCycleCORBA_SWIGTest.py
new file mode 100644 (file)
index 0000000..3475243
--- /dev/null
@@ -0,0 +1,192 @@
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : LifeCycleCORBA_SWIGTest.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+import sys
+import unittest
+from omniORB import CORBA
+import PYHELLO_ORB
+import HELLO_ORB
+import Utils_Identity
+import Engines
+
+class LifeCycleCORBA_SWIGTest(unittest.TestCase):
+    def setUp(self):
+        import LifeCycleCORBA
+        self.lcc = LifeCycleCORBA.LifeCycleCORBA()
+        pass
+
+    def tearDown(self):
+        pass
+    
+    def test001_FindOrLoad_Component_LaunchContainer(self):
+        """
+        get a local container (no hostname given),
+        load an engine, check that the CORBA object is not null.
+        check narrow        
+        """
+        containerName = "swMyContainer"
+        comp=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent")
+        self.assertNotEqual(comp,None)
+        testComp=comp._narrow(Engines.TestComponent)
+        self.assertNotEqual(testComp,None)
+        pass
+
+    def test002_FindOrLoad_Component_SameInstance(self):
+        """
+        Check FindOrLoad_Component.
+        Call 2 times FindOrLoad_Component with the same parameters,
+        check if we get the same engine      
+        """
+        containerName = "swMyContainer"
+        cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent")
+        self.assertNotEqual(cp1,None)
+        cp2=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent")
+        self.assertNotEqual(cp2,None)
+        m1=cp1._narrow(Engines.TestComponent)
+        self.assertNotEqual(m1,None)
+        m2=cp2._narrow(Engines.TestComponent)
+        self.assertNotEqual(m2,None)
+        name1=m1._get_instanceName()
+        name2=m2._get_instanceName()
+        self.assertEqual(name1,name2)
+        pass
+
+    def test003_FindOrLoad_Component_PythonInCppContainer(self):
+        """
+        Check FindOrLoad_Component with Python Component on C++ Container,
+        load an engine, check that the CORBA object is not null.
+        check narrow
+        """
+        containerName = "swMyContainer"
+        cp1=self.lcc.FindOrLoad_Component(containerName,"SALOME_TestComponentPy")
+        self.assertNotEqual(cp1,None)
+        m1=cp1._narrow(Engines.TestComponent)
+        self.assertNotEqual(m1,None)
+        pass        
+
+    def test004_FindOrLoad_Component_PythonSameInstance(self):
+        """
+        Check FindOrLoad_Component with Python Component on C++ Container,
+        Call 2 times FindOrLoad_Component with the same parameters,
+        check if we get the same engine,
+        """
+        containerName = "swMyContainer"
+        cp1=self.lcc.FindOrLoad_Component(containerName,"SALOME_TestComponentPy")
+        self.assertNotEqual(cp1,None)
+        cp2=self.lcc.FindOrLoad_Component(containerName,"SALOME_TestComponentPy")
+        self.assertNotEqual(cp2,None)
+        m1=cp1._narrow(Engines.TestComponent)
+        self.assertNotEqual(m1,None)
+        m2=cp2._narrow(Engines.TestComponent)
+        self.assertNotEqual(m2,None)
+        name1=m1._get_instanceName()
+        name2=m2._get_instanceName()
+        self.assertEqual(name1,name2)
+        pass
+
+    def test005_FindOrLoad_Component_UnknownInCatalog(self):
+        """
+        Check FindOrLoad_Component with a component name not in catalog.
+        See list of catalog given to module catalog server.
+        Here, we work with KERNEL_SRC/resources/KERNELCatalog.xml that contains 
+        only KERNEL, SalomeTestComponent and SALOME_TestComponentPy
+        """
+        containerName = "swMyContainer"
+        cp1=self.lcc.FindOrLoad_Component(containerName,"MyNewComponent")
+        self.assertEqual(cp1,None)
+        pass
+
+    def test006_FindOrLoad_Component_LaunchContainerHostname(self):
+        """
+        Check FindOrLoad_Component with hostname given.
+        get a local container : getHostName()/componentName,
+        load an engine, check that the CORBA object is not null.
+        check narrow
+        """
+        containerName = Utils_Identity.getShortHostName()
+        containerName += "/swTheContainer"
+        cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent")
+        self.assertNotEqual(cp1,None)
+        m1=cp1._narrow(Engines.TestComponent)
+        self.assertNotEqual(m1,None)
+        pass
+
+    def test007_FindOrLoad_Component_SameContainer(self):
+        """
+        Check FindOrLoad_Component with and without local hostname given.
+        We must get the same container, the same instance of component
+        """
+        containerName = "swAContainer"
+        cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent")
+        self.assertNotEqual(cp1,None)
+        containerName = Utils_Identity.getShortHostName()
+        containerName += "/swAContainer"
+        cp2=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent")
+        self.assertNotEqual(cp2,None)
+        m1=cp1._narrow(Engines.TestComponent)
+        self.assertNotEqual(m1,None)
+        m2=cp2._narrow(Engines.TestComponent)
+        self.assertNotEqual(m2,None)
+        name1=m1._get_instanceName()
+        name2=m2._get_instanceName()
+        self.assertEqual(name1,name2)
+        c1=m1.GetContainerRef()
+        self.assertNotEqual(c1,None)
+        c2=m2.GetContainerRef()
+        self.assertNotEqual(c2,None)
+        cname1=c1._get_name()
+        cname2=c2._get_name()
+        self.assertEqual(cname1,cname2)
+        hostname1=c1.getHostName()
+        hostname2=c2.getHostName()
+        self.assertEqual(hostname1,hostname2)
+        pidc1=c1.getPID()
+        pidc2=c2.getPID()
+        self.assertEqual(pidc1,pidc2)        
+        pass
+    
+    def test008_FindOrLoad_Component_UnknownMachine(self):
+        """
+        Check FindOrLoad_Component: check behaviour when ask for an unknown
+        computer. We must catch a Salome Exception with "unknown host" message
+        """
+        containerName = "aFarAwayContainer"
+        containerName += "/swTheContainer"
+        cp1=self.lcc.FindOrLoad_Component(containerName,"SalomeTestComponent")
+        pass
+       
+    
+def suite():
+    return unittest.makeSuite(LifeCycleCORBA_SWIGTest,'test')
+
+def main():
+    return unittest.TextTestRunner().run(suite())
+
+if __name__ == '__main__':
+    unittest.TextTestRunner(verbosity=2).run(suite())
+    pass
+
diff --git a/src/LifeCycleCORBA_SWIG/Test/Makefile.am b/src/LifeCycleCORBA_SWIG/Test/Makefile.am
new file mode 100644 (file)
index 0000000..1892f6f
--- /dev/null
@@ -0,0 +1,71 @@
+#######################################
+#  
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Paul RASCLE (EDF)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS=
+
+# Scripts to be installed
+dist_salomescript_SCRIPTS = \
+       LifeCycleCORBA_SWIGTest.py \
+       TestLifeCycleCORBA_SWIG.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This directory defines the subdirectory src in the top source directory.
+RPATH=../..
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = 
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS =
diff --git a/src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py b/src/LifeCycleCORBA_SWIG/Test/TestLifeCycleCORBA_SWIG.py
new file mode 100644 (file)
index 0000000..2157e8d
--- /dev/null
@@ -0,0 +1,101 @@
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : TestLifeCycleCORBA_SWIG.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+
+import sys, os,signal,string,commands
+import runSalome
+import orbmodule
+import TestKiller
+import addToKillList
+
+# get SALOME environment :
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# set environment for trace in logger
+# (with file, servers may be killed before the write to the file...)
+
+#os.environ["SALOME_trace"] = "file:/tmp/traceUnitTest.log"
+#os.environ["SALOME_trace"] = "local"
+os.environ["SALOME_trace"] = "with_logger"
+
+# launch CORBA naming server
+
+clt=orbmodule.client()
+
+# launch CORBA logger server
+
+myServer=runSalome.LoggerServer(args)
+myServer.run()
+clt.waitLogger("Logger")
+
+# launch notify server
+
+myServer=runSalome.NotifyServer(args,modules_root_dir)
+myServer.run()
+
+# launch registry server
+
+myServer=runSalome.RegistryServer(args)
+myServer.run()
+clt.waitNS("/Registry")
+
+# launch module catalog server
+
+cataServer=runSalome.CatalogServer(args)
+cataServer.setpath(modules_list,modules_root_dir)
+cataServer.run()
+clt.waitNS("/Kernel/ModulCatalog")
+
+# launch container manager server
+
+myCmServer = runSalome.ContainerManagerServer(args)
+myCmServer.setpath(modules_list,modules_root_dir)
+myCmServer.run()
+clt.waitNS("/ContainerManager")
+
+# execute Unit Test
+
+command = ['TestLifeCycleCORBA']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+import LifeCycleCORBA_SWIGTest
+import unittest
+unittest.TextTestRunner(verbosity=2).run(LifeCycleCORBA_SWIGTest.suite())
+
+# kill containers created by the Container Manager
+
+import Engines
+containerManager = clt.waitNS("/ContainerManager",Engines.ContainerManager)
+containerManager.Shutdown()
+
+# kill Test process
+
+addToKillList.killList()
+
+TestKiller.killProcess(runSalome.process_id)
diff --git a/src/Logger/Makefile.am b/src/Logger/Makefile.am
new file mode 100644 (file)
index 0000000..94fcc6a
--- /dev/null
@@ -0,0 +1,52 @@
+#  SALOME Logger : CORBA server managing trace output
+#
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#  File   : Makefile.am
+#  Author : Guillaume BOULANT, CSSI
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# header files  
+salomeinclude_HEADERS = \
+       SALOME_Trace.hxx
+
+#
+# This makefile defines a executable target (SALOME_Logger_Server) and
+# a library target (libSalomeLoggerServer.la). The executable depends
+# on the library.
+#
+
+# Program files
+bin_PROGRAMS = SALOME_Logger_Server
+SALOME_Logger_Server_SOURCES = \
+       SALOME_Logger_Server_main.cxx \
+       SALOME_Logger_Server.hxx
+
+SALOME_Logger_Server_LDADD   = libSalomeLoggerServer.la
+SALOME_Logger_Server_CPPFLAGS =\
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# Libraries targets
+lib_LTLIBRARIES = libSalomeLoggerServer.la
+libSalomeLoggerServer_la_SOURCES =\
+       SALOME_Trace.cxx \
+       SALOME_Logger_Server.cxx 
+
+libSalomeLoggerServer_la_CPPFLAGS =\
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+libSalomeLoggerServer_la_LDFLAGS = -no-undefined -version-info=0:0:0
+
+libSalomeLoggerServer_la_LIBADD  = \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CORBA_LIBS@
+
+# Scripts target
+dist_salomescript_DATA = SALOME_Trace.py
diff --git a/src/Logger/SALOME_Logger_Server_main.cxx b/src/Logger/SALOME_Logger_Server_main.cxx
new file mode 100644 (file)
index 0000000..a15d854
--- /dev/null
@@ -0,0 +1,121 @@
+//  SALOME Logger : CORBA server managing trace output
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOME_Logger_Server.cxx
+//  Author : Vasily Rusyaev
+//  Module : SALOME
+
+#include <iostream>
+#include "SALOME_Logger_Server.hxx"
+#include <SALOMEconfig.h>
+#include <sys/types.h>
+#ifndef __WIN32__
+# include <unistd.h>
+#endif
+
+int main(int argc, char **argv)
+{
+  if (argc > 2)
+    {
+      std::cout << "usage: SALOME_Logger_Server [output_file]" << std::endl;
+      exit(1);
+    }
+  try
+    {
+      //Initialize the ORB
+      const long TIMESleep = 250000000;
+      const int NumberOfTries = 40;
+      int i;
+      timespec ts_req = {0, TIMESleep};
+      timespec ts_rem = {0, 0};
+      CosNaming::NamingContext_var inc;
+      SALOME_Logger::Logger_var myLoggerRef;
+      CORBA::Object_var theObj;
+      Logger* myLogger;
+      CORBA::Object_var obj;
+      PortableServer::POA_var poa;
+      PortableServer::POAManager_var pman;   
+
+      CORBA::ORB_var orb = CORBA::ORB_init(argc, argv) ;
+
+      for (i = 1; i <= NumberOfTries; i++)
+         {
+#ifndef WNT
+                 if (i != 1) nanosleep(&ts_req, &ts_rem);
+#else
+                 if (i != 1) Sleep(TIMESleep / 1000000);
+#endif
+                 try 
+                 {
+                         obj = orb->resolve_initial_references("RootPOA") ;
+                         if(!CORBA::is_nil(obj))
+                                 poa = PortableServer::POA::_narrow(obj) ;
+                         pman = poa->the_POAManager();
+                         // NB. You can activate the POA before or after
+                         // activating objects in that POA.
+                         
+                         // This activates the object in the root POA (by default), and
+                         // returns a reference to it.
+                         //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
+                         //Otherwise, you will get segmentation fault.   
+                         //Get initial naming context
+                         if(!CORBA::is_nil(orb)) 
+                                 theObj = orb->resolve_initial_references("NameService");
+                         //Narrow to NamingContext
+                         if (!CORBA::is_nil(theObj))
+                                 inc = CosNaming::NamingContext::_narrow(theObj);
+                 } catch(CORBA::COMM_FAILURE&) {
+                         //cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<<endl;
+                 } catch(...) {
+                         //cout<<"Logger Server: Unknown exception dealed with Naming Service" <<endl;
+                 }
+                 
+                 if (!CORBA::is_nil(inc)) {
+                         //      cout<<"Logger Server: Naming Service was found"<<endl; 
+                         break;
+                 }
+      }
+      if (argc == 1)
+                 myLogger = new Logger();
+      else
+                 myLogger = new Logger(argv[1]);
+
+      myLoggerRef = myLogger->_this();
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id = CORBA::string_dup("Logger");
+      inc->bind(name,myLoggerRef);
+      myLogger->_remove_ref();
+      pman->activate();   
+      orb->run() ;
+      orb->destroy() ;
+    }  
+  catch(CORBA::COMM_FAILURE& ex)
+       {
+      std::cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
+          << "object." << std::endl;
+    }
+  catch(CORBA::SystemException&) 
+    {
+      std::cerr << "Caught CORBA::SystemException." << std::endl;
+    }
+  catch(CORBA::Exception&) 
+    {
+      std::cerr << "Caught CORBA::Exception." << std::endl;
+    }
+  catch(omniORB::fatalException& fe) 
+    {
+      std::cerr << "Caught omniORB::fatalException:" << std::endl;
+      std::cerr << "  file: " << fe.file() << std::endl;
+      std::cerr << "  line: " << fe.line() << std::endl;
+      std::cerr << "  mesg: " << fe.errmsg() << std::endl;
+    }
+  catch(...) 
+    {
+      std::cerr << "Caught unknown exception." << std::endl;
+    }
+  return 0;
+}
diff --git a/src/Logger/Test/Makefile.am b/src/Logger/Test/Makefile.am
new file mode 100644 (file)
index 0000000..50ed74c
--- /dev/null
@@ -0,0 +1,39 @@
+#  Logger: CORBA Logger Server
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# Executable scripts to be installed
+dist_salomescript_SCRIPTS = TestKiller.py 
diff --git a/src/MPIContainer/Makefile.am b/src/MPIContainer/Makefile.am
new file mode 100644 (file)
index 0000000..68dd931
--- /dev/null
@@ -0,0 +1,109 @@
+#  SALOME MPIContainer : implemenation of container based on MPI libraries
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : SALOME
+#  $Header$
+
+
+
+#
+# ===============================================================
+# _CS_gbo Caution !! This package may not work. I didn't test it
+# because no mpi soft is installed on my computer. To be checked.
+# ===============================================================
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Header to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = \
+       MPIObject_i.hxx \
+       MPIContainer_i.hxx
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+# _CS_gbo See wether it can be shared by all packages in a common include!!
+COMMON_CPPFLAGS=\
+       @PYTHON_INCLUDES@ \
+       @MPI_INCLUDES@ \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(srcdir)/../Registry \
+       -I$(srcdir)/../Notification \
+       -I$(srcdir)/../ResourcesManager \
+       -I$(srcdir)/../Container \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../Registry/libRegistry.la \
+       ../Notification/libSalomeNotification.la \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       ../Container/libSalomeContainer.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CORBA_LIBS@
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeMPIContainer.la
+libSalomeMPIContainer_la_SOURCES = MPIObject_i.cxx  MPIContainer_i.cxx
+libSalomeMPIContainer_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSalomeMPIContainer_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSalomeMPIContainer_la_LIBADD   = $(COMMON_LIBS)
+
+
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = SALOME_MPIContainer
+SALOME_MPIContainer_SOURCES = SALOME_MPIContainer.cxx
+SALOME_MPIContainer_LDADD   = libSalomeMPIContainer.la @PYTHON_LIBS@ @MPI_LIBS@
+SALOME_MPIContainer_CPPFLAGS = $(COMMON_CPPFLAGS)
+
+
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..8d6b7fa
--- /dev/null
@@ -0,0 +1,123 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+# $Header$
+
+SUBDIR_BASE = \
+  Basics \
+  SALOMELocalTrace \
+  CASCatch \
+  HDFPersist
+
+SUBDIR_CORBA = \
+  Logger \
+  SALOMETraceCollector \
+  Utils \
+  NamingService \
+  GenericObj \
+  Registry \
+  ModuleCatalog \
+  ResourcesManager \
+  Notification \
+  NOTIFICATION_SWIG \
+  Container \
+  TestContainer \
+  LifeCycleCORBA \
+  LifeCycleCORBA_SWIG \
+  SALOMEDSClient \
+  TOOLSDS \
+  SALOMEDSImpl \
+  SALOMEDS \
+  KERNEL_PY \
+  ModuleGenerator \
+  Communication \
+  Communication_SWIG
+
+SUBDIR_CPPUNIT_BASE= \
+  Basics/Test \
+  SALOMELocalTrace/Test
+
+SUBDIR_CPPUNIT_CORBA = \
+  Logger/Test \
+  SALOMETraceCollector/Test \
+  Utils/Test \
+  NamingService/Test \
+  LifeCycleCORBA/Test \
+  LifeCycleCORBA_SWIG/Test \
+  SALOMEDSImpl/Test \
+  SALOMEDS/Test
+
+SUBDIR_CPPUNIT_GENERAL = \
+  UnitTests
+
+SUBDIR_MPI = \
+  MPIContainer \
+  TestMPIContainer
+
+SUBDIR_BATCH= \
+  Batch \
+  Batch_SWIG
+
+DIST_SUBDIRS = \
+  $(SUBDIR_BASE) \
+  $(SUBDIR_CORBA) \
+  $(SUBDIR_MPI) \
+  $(SUBDIR_BATCH) \
+  $(SUBDIR_CPPUNIT_BASE) \
+  $(SUBDIR_CPPUNIT_CORBA) \
+  $(SUBDIR_CPPUNIT_GENERAL)
+
+#
+# The following packages are built under conditions.
+# A condition is defined using the macro AM_CONDITIONAL (see the
+# check_cppunit for example with CPPUNIT_IS_OK.
+#
+
+SUBDIRS = $(SUBDIR_BASE)
+
+if CORBA_GEN
+  SUBDIRS += $(SUBDIR_CORBA)
+endif
+
+if MPI_IS_OK
+  SUBDIRS += $(SUBDIR_MPI)
+endif
+
+if WITH_BATCH
+  SUBDIRS += $(SUBDIR_BATCH)
+endif
+
+if CPPUNIT_IS_OK
+if CORBA_GEN
+  SUBDIRS += \
+       $(SUBDIR_CPPUNIT_BASE)   \
+       $(SUBDIR_CPPUNIT_CORBA)  \
+       $(SUBDIR_CPPUNIT_GENERAL)
+else
+  SUBDIRS += \
+       $(SUBDIR_CPPUNIT_BASE)   \
+       $(SUBDIR_CPPUNIT_GENERAL)
+endif
+endif
+
diff --git a/src/ModuleCatalog/Makefile.am b/src/ModuleCatalog/Makefile.am
new file mode 100644 (file)
index 0000000..f4d06ac
--- /dev/null
@@ -0,0 +1,116 @@
+#  SALOME ModuleCatalog : implementation of ModuleCatalog server which parsers xml description of modules
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Header an scripts to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = \
+               SALOME_ModuleCatalog_impl.hxx \
+               SALOME_ModuleCatalog_Acomponent_impl.hxx \
+               PathPrefix.hxx \
+               SALOME_ModuleCatalog_Parser.hxx \
+               SALOME_ModuleCatalog_Parser_IO.hxx \
+                SALOME_ModuleCatalog_Handler.hxx 
+
+# Scripts to be installed
+dist_salomescript_DATA = SALOME_TestModuleCatalog.py
+
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeCatalog.la
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \
+       @QT_MT_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+libSalomeCatalog_la_SOURCES =\
+       SALOME_ModuleCatalog_Handler.cxx  \
+       SALOME_ModuleCatalog_Parser_IO.cxx \
+       SALOME_ModuleCatalog_impl.cxx \
+       SALOME_ModuleCatalog_Acomponent_impl.cxx
+
+libSalomeCatalog_la_CPPFLAGS =\
+       $(COMMON_CPPFLAGS)
+
+libSalomeCatalog_la_LDFLAGS = -no-undefined -version-info=0:0:0
+
+libSalomeCatalog_la_LIBADD  =\
+       $(COMMON_LIBS) \
+       @QT_MT_LIBS@
+
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = SALOME_ModuleCatalog_Server SALOME_ModuleCatalog_Client
+
+# SALOME_ModuleCatalog_Server
+SALOME_ModuleCatalog_Server_SOURCES  = SALOME_ModuleCatalog_Server.cxx
+SALOME_ModuleCatalog_Server_CPPFLAGS =\
+       $(COMMON_CPPFLAGS) 
+
+SALOME_ModuleCatalog_Server_LDADD   =\
+       libSalomeCatalog.la \
+       $(COMMON_LIBS) \
+       @CORBA_LIBS@
+
+# SALOME_ModuleCatalog_Client
+SALOME_ModuleCatalog_Client_SOURCES  = SALOME_ModuleCatalog_Client.cxx
+SALOME_ModuleCatalog_Client_CPPFLAGS =\
+       $(COMMON_CPPFLAGS)
+
+SALOME_ModuleCatalog_Client_LDADD   =\
+       libSalomeCatalog.la \
+       $(COMMON_LIBS) \
+       @CORBA_LIBS@
diff --git a/src/ModuleGenerator/Makefile.am b/src/ModuleGenerator/Makefile.am
new file mode 100644 (file)
index 0000000..eb59132
--- /dev/null
@@ -0,0 +1,29 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+dist_salomescript_DATA = IDLparser.py
diff --git a/src/NOTIFICATION_SWIG/Makefile.am b/src/NOTIFICATION_SWIG/Makefile.am
new file mode 100644 (file)
index 0000000..beb83ff
--- /dev/null
@@ -0,0 +1,62 @@
+#  SALOME NOTIFICATION_SWIG : wrapping of Notification sevices in order to be available in Python
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Swig targets
+# ===============================================================
+# (cf. http://www.geocities.com/foetsch/python/swig_linux.htm)
+# see also LifeCycleCORBA_SWIG 
+#
+BUILT_SOURCES = swig_wrap.cpp
+
+SWIG_FLAGS    = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../Notification
+SWIG_SOURCES  = NOTIFICATION.i
+
+pkgpython_PYTHON = libNOTIFICATION.py
+pkgpyexec_LTLIBRARIES = _libNOTIFICATION.la
+_libNOTIFICATION_la_SOURCES  = $(BUILT_SOURCES) $(SWIG_SOURCES) \
+       NOTIFICATION_Swig.cxx NOTIFICATION_Swig.hxx
+_libNOTIFICATION_la_CPPFLAGS =\
+       @PYTHON_INCLUDES@ -DHAVE_CONFIG_H \
+       -I$(srcdir)/../Notification \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+
+_libNOTIFICATION_la_LDFLAGS  = -module
+_libNOTIFICATION_la_LIBADD   = ../Notification/libSalomeNotification.la \
+       @PYTHON_LIBS@
+
+swig_wrap.cpp : $(SWIG_SOURCES)
+       $(SWIG) $(SWIG_FLAGS) -o $@ $<
+
+CLEANFILES = swig_wrap.cpp
diff --git a/src/NamingService/Makefile.am b/src/NamingService/Makefile.am
new file mode 100644 (file)
index 0000000..a371d7e
--- /dev/null
@@ -0,0 +1,59 @@
+#  SALOME NamingService : wrapping NamingService services
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# header files  
+salomeinclude_HEADERS =\
+       SALOME_NamingService.hxx \
+       ServiceUnreachable.hxx \
+       NamingService_WaitForServerReadiness.hxx
+
+# Scripts to be exported
+dist_salomescript_DATA =\
+       SALOME_NamingServicePy.py
+
+
+# Libraries targets
+lib_LTLIBRARIES        = libSalomeNS.la
+libSalomeNS_la_SOURCES =\
+       SALOME_NamingService.cxx \
+       ServiceUnreachable.cxx \
+       NamingService_WaitForServerReadiness.cxx
+
+libSalomeNS_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+
+libSalomeNS_la_CPPFLAGS = \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+libSalomeNS_la_LIBADD = ../Utils/libOpUtil.la
diff --git a/src/NamingService/Test/Makefile.am b/src/NamingService/Test/Makefile.am
new file mode 100644 (file)
index 0000000..2effcec
--- /dev/null
@@ -0,0 +1,95 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume BOULANT (CSSI)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS= NamingServiceTest.hxx
+
+# Scripts to be installed
+dist_salomescript_SCRIPTS = TestNamingService.py
+
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This directory defines the subdirectory src in the top source directory.
+RPATH=../..
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CPPUNIT_INCLUDES@ -I$(srcdir)/$(RPATH)/NamingService \
+       -I$(srcdir)/$(RPATH)/Basics \
+       -I$(srcdir)/$(RPATH)/SALOMELocalTrace \
+       -I$(srcdir)/$(RPATH)/Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libNamingServiceTest.la
+libNamingServiceTest_la_SOURCES = NamingServiceTest.cxx
+libNamingServiceTest_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libNamingServiceTest_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libNamingServiceTest_la_LIBADD   = @CPPUNIT_LIBS@
+
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestNamingService
+TestNamingService_SOURCES  = TestNamingService.cxx
+TestNamingService_CPPFLAGS = \
+       $(COMMON_CPPFLAGS) \
+       -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \
+       -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \
+       -I$(srcdir)/$(RPATH)/Utils/Test \
+       -I$(srcdir)/$(RPATH)/Basics/Test
+
+
+TestNamingService_LDADD    = \
+       libNamingServiceTest.la ../libSalomeNS.la \
+       $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \
+       $(RPATH)/Utils/Test/libUtilsTest.la $(RPATH)/Utils/libOpUtil.la \
+       $(RPATH)/Basics/libSALOMEBasics.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
diff --git a/src/Notification/Makefile.am b/src/Notification/Makefile.am
new file mode 100644 (file)
index 0000000..b5b5bbb
--- /dev/null
@@ -0,0 +1,72 @@
+#  SALOME Notification : wrapping of Notification service services
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Header to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = \
+       NOTIFICATION.hxx          \
+       NOTIFICATION_Supplier.hxx \
+       NOTIFICATION_Consumer.hxx \
+       CosNotifyShorthands.h
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+
+lib_LTLIBRARIES = libSalomeNotification.la
+libSalomeNotification_la_SOURCES =\
+       NOTIFICATION.cxx          \
+       NOTIFICATION_Supplier.cxx \
+       NOTIFICATION_Consumer.cxx
+
+libSalomeNotification_la_CPPFLAGS =\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../Utils \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+
+libSalomeNotification_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+
+libSalomeNotification_la_LIBADD =\
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       @CORBA_LIBS@
+
+
+#LDFLAGS+= -lOpUtil -lSALOMELocalTrace
+#OMNIORB_IDLCXXFLAGS+= -Wbtp
diff --git a/src/Registry/Makefile.am b/src/Registry/Makefile.am
new file mode 100644 (file)
index 0000000..6258de8
--- /dev/null
@@ -0,0 +1,73 @@
+#  SALOME Registry : Registry server implementation
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# header files  
+salomeinclude_HEADERS =\
+       RegistryConnexion.hxx \
+       RegistryService.hxx
+
+# Libraries targets
+lib_LTLIBRARIES = libRegistry.la
+libRegistry_la_SOURCES =\
+       RegistryConnexion.cxx \
+       RegistryService.cxx 
+
+libRegistry_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libRegistry_la_CPPFLAGS =\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+libRegistry_la_LIBADD   =\
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+
+# Executables targets
+bin_PROGRAMS = SALOME_Registry_Server
+SALOME_Registry_Server_SOURCES  = SALOME_Registry_Server.cxx
+SALOME_Registry_Server_LDADD    =\
+       libRegistry.la \
+       ../Basics/libSALOMEBasics.la \
+       @CORBA_LIBS@
+SALOME_Registry_Server_CPPFLAGS =\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
diff --git a/src/ResourcesManager/Makefile.am b/src/ResourcesManager/Makefile.am
new file mode 100755 (executable)
index 0000000..eaa49f9
--- /dev/null
@@ -0,0 +1,84 @@
+#  SALOME ResourcesManager
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Header to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = \
+               SALOME_ResourcesCatalog_Parser.hxx \
+               SALOME_ResourcesManager.hxx \
+                SALOME_ResourcesCatalog_Handler.hxx \
+               SALOME_LoadRateManager.hxx
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeResourcesManager.la
+libSalomeResourcesManager_la_SOURCES =\
+       SALOME_ResourcesCatalog_Parser.cxx \
+       SALOME_ResourcesCatalog_Handler.cxx  \
+       SALOME_LoadRateManager.cxx \
+       SALOME_ResourcesManager.cxx
+
+libSalomeResourcesManager_la_CPPFLAGS =\
+       $(COMMON_CPPFLAGS) \
+       @QT_MT_INCLUDES@
+
+libSalomeResourcesManager_la_LDFLAGS = -no-undefined -version-info=0:0:0
+libSalomeResourcesManager_la_LIBADD  =\
+       $(COMMON_LIBS) \
+       @QT_MT_LIBS@
diff --git a/src/SALOMEDS/Makefile.am b/src/SALOMEDS/Makefile.am
new file mode 100644 (file)
index 0000000..00ead57
--- /dev/null
@@ -0,0 +1,353 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS= \
+       SALOMEDS_StudyManager_i.hxx \
+       SALOMEDS_Driver_i.hxx \
+       SALOMEDS_StudyManager.hxx \
+       SALOMEDS_Study_i.hxx \
+       SALOMEDS_Study.hxx \
+       SALOMEDS_SObject_i.hxx \
+       SALOMEDS_SObject.hxx \
+       SALOMEDS_SComponent_i.hxx \
+       SALOMEDS_SComponent.hxx \
+       SALOMEDS_GenericAttribute_i.hxx \
+       SALOMEDS_GenericAttribute.hxx \
+       SALOMEDS_IParameters.hxx
+
+# Scripts to be installed
+dist_salomescript_DATA = SALOME_DriverPy.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
+       @BOOST_CPPFLAGS@ \
+       -I$(srcdir)/../HDFPersist \
+       @HDF5_INCLUDES@ \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../Utils \
+       -I$(srcdir)/../SALOMEDSImpl \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../GenericObj \
+       -I$(srcdir)/../SALOMEDSClient \
+       -I$(srcdir)/../LifeCycleCORBA \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This flag is used to resolve the dependencies of OCC libraries.
+LDXMUFLAGS = -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lXmu
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../TOOLSDS/libTOOLSDS.la \
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       ../HDFPersist/libSalomeHDFPersist.la \
+       ../SALOMEDSImpl/libSalomeDSImpl.la \
+       ../GenericObj/libSalomeGenericObj.la \
+       ../LifeCycleCORBA/libSalomeLifeCycleCORBA.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CAS_KERNEL@ \
+       @HDF5_LIBS@ \
+       $(LDXMUFLAGS)
+
+
+#LDFLAGS+=  -lSalomeGenericObj -lSalomeLifeCycleCORBA
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeDS.la
+libSalomeDS_la_SOURCES =       \
+       SALOMEDS.cxx \
+       SALOMEDS_Driver_i.cxx \
+       SALOMEDS_StudyManager_i.cxx \
+       SALOMEDS_UseCaseBuilder_i.cxx \
+       SALOMEDS_UseCaseIterator_i.cxx \
+       SALOMEDS_ChildIterator_i.cxx \
+       SALOMEDS_SComponentIterator_i.cxx \
+       SALOMEDS_Study_i.cxx \
+       SALOMEDS_StudyBuilder_i.cxx \
+       SALOMEDS_SObject_i.cxx \
+       SALOMEDS_SComponent_i.cxx \
+       SALOMEDS_GenericAttribute_i.cxx \
+       SALOMEDS_AttributeComment_i.cxx \
+       SALOMEDS_AttributeExternalFileDef_i.cxx \
+       SALOMEDS_AttributeFileType_i.cxx \
+       SALOMEDS_AttributeIOR_i.cxx \
+       SALOMEDS_AttributeInteger_i.cxx \
+       SALOMEDS_AttributeName_i.cxx \
+       SALOMEDS_AttributePersistentRef_i.cxx \
+       SALOMEDS_AttributeReal_i.cxx \
+       SALOMEDS_AttributeSequenceOfReal_i.cxx \
+       SALOMEDS_AttributeSequenceOfInteger_i.cxx \
+       SALOMEDS_AttributeDrawable_i.cxx \
+       SALOMEDS_AttributeSelectable_i.cxx \
+       SALOMEDS_AttributeOpened_i.cxx \
+       SALOMEDS_AttributeFlags_i.cxx \
+       SALOMEDS_AttributeGraphic_i.cxx \
+       SALOMEDS_AttributeExpandable_i.cxx \
+       SALOMEDS_AttributeTextColor_i.cxx  \
+       SALOMEDS_AttributeTextHighlightColor_i.cxx  \
+       SALOMEDS_AttributePixMap_i.cxx  \
+       SALOMEDS_AttributeTreeNode_i.cxx \
+       SALOMEDS_AttributeLocalID_i.cxx \
+       SALOMEDS_AttributeUserID_i.cxx \
+       SALOMEDS_AttributeTarget_i.cxx \
+       SALOMEDS_AttributeTableOfInteger_i.cxx \
+       SALOMEDS_AttributeTableOfReal_i.cxx \
+       SALOMEDS_AttributeTableOfString_i.cxx \
+       SALOMEDS_AttributeStudyProperties_i.cxx \
+       SALOMEDS_AttributePythonObject_i.cxx \
+       SALOMEDS_AttributeParameter_i.cxx \
+       SALOMEDS_SObject.cxx \
+       SALOMEDS_SComponent.cxx \
+       SALOMEDS_GenericAttribute.cxx \
+       SALOMEDS_ChildIterator.cxx \
+       SALOMEDS_SComponentIterator.cxx \
+       SALOMEDS_UseCaseIterator.cxx \
+       SALOMEDS_UseCaseBuilder.cxx \
+       SALOMEDS_StudyBuilder.cxx \
+       SALOMEDS_Study.cxx \
+       SALOMEDS_StudyManager.cxx \
+       SALOMEDS_AttributeStudyProperties.cxx \
+       SALOMEDS_AttributeComment.cxx \
+       SALOMEDS_AttributeDrawable.cxx \
+       SALOMEDS_AttributeExpandable.cxx \
+       SALOMEDS_AttributeExternalFileDef.cxx \
+       SALOMEDS_AttributeFileType.cxx \
+       SALOMEDS_AttributeFlags.cxx \
+       SALOMEDS_AttributeGraphic.cxx \
+       SALOMEDS_AttributeIOR.cxx \
+       SALOMEDS_AttributeInteger.cxx \
+       SALOMEDS_AttributeLocalID.cxx \
+       SALOMEDS_AttributeName.cxx \
+       SALOMEDS_AttributeOpened.cxx \
+       SALOMEDS_AttributePythonObject.cxx \
+       SALOMEDS_AttributeReal.cxx \
+       SALOMEDS_AttributeSelectable.cxx \
+       SALOMEDS_AttributeSequenceOfInteger.cxx \
+       SALOMEDS_AttributePersistentRef.cxx \
+       SALOMEDS_AttributePixMap.cxx \
+       SALOMEDS_AttributeSequenceOfReal.cxx \
+       SALOMEDS_AttributeTableOfInteger.cxx \
+       SALOMEDS_AttributeTableOfReal.cxx \
+       SALOMEDS_AttributeTableOfString.cxx \
+       SALOMEDS_AttributeTarget.cxx \
+       SALOMEDS_AttributeTextColor.cxx \
+       SALOMEDS_AttributeTextHighlightColor.cxx \
+       SALOMEDS_AttributeTreeNode.cxx \
+       SALOMEDS_AttributeUserID.cxx \
+       SALOMEDS_TMPFile_i.cxx \
+       SALOMEDS_AttributeParameter.cxx \
+       SALOMEDS_IParameters.cxx \
+       \
+       Handle_SALOMEDS_DataMapNodeOfDataMapOfIntegerString.hxx \
+       Handle_SALOMEDS_DataMapNodeOfDataMapStringLabel.hxx \
+       Handle_SALOMEDS_DrawableAttribute.hxx \
+       Handle_SALOMEDS_ExpandableAttribute.hxx \
+       Handle_SALOMEDS_ExternalFileDef.hxx \
+       Handle_SALOMEDS_FileType.hxx \
+       Handle_SALOMEDS_IORAttribute.hxx \
+       Handle_SALOMEDS_LocalIDAttribute.hxx \
+       Handle_SALOMEDS_OCAFApplication.hxx \
+       Handle_SALOMEDS_OpenedAttribute.hxx \
+       Handle_SALOMEDS_PersRefAttribute.hxx \
+       Handle_SALOMEDS_PixMapAttribute.hxx \
+       Handle_SALOMEDS_PythonObjectAttribute.hxx \
+       Handle_SALOMEDS_SelectableAttribute.hxx \
+       Handle_SALOMEDS_SequenceOfIntegerAttribute.hxx \
+       Handle_SALOMEDS_SequenceOfRealAttribute.hxx \
+       Handle_SALOMEDS_StudyPropertiesAttribute.hxx \
+       Handle_SALOMEDS_TableOfIntegerAttribute.hxx \
+       Handle_SALOMEDS_TableOfRealAttribute.hxx \
+       Handle_SALOMEDS_TableOfStringAttribute.hxx \
+       Handle_SALOMEDS_TargetAttribute.hxx \
+       Handle_SALOMEDS_TextColorAttribute.hxx \
+       Handle_SALOMEDS_TextHighlightColorAttribute.hxx \
+       SALOMEDS_AttLong_i.hxx \
+       SALOMEDS_AttReal_i.hxx \
+       SALOMEDS_AttributeComment.hxx \
+       SALOMEDS_AttributeComment_i.hxx \
+       SALOMEDS_AttributeDrawable.hxx \
+       SALOMEDS_AttributeDrawable_i.hxx \
+       SALOMEDS_AttributeExpandable.hxx \
+       SALOMEDS_AttributeExpandable_i.hxx \
+       SALOMEDS_AttributeExternalFileDef.hxx \
+       SALOMEDS_AttributeExternalFileDef_i.hxx \
+       SALOMEDS_AttributeFileType.hxx \
+       SALOMEDS_AttributeFileType_i.hxx \
+       SALOMEDS_AttributeFlags.hxx \
+       SALOMEDS_AttributeFlags_i.hxx \
+       SALOMEDS_AttributeGraphic.hxx \
+       SALOMEDS_AttributeGraphic_i.hxx \
+       SALOMEDS_AttributeInteger.hxx \
+       SALOMEDS_AttributeInteger_i.hxx \
+       SALOMEDS_AttributeIOR.hxx \
+       SALOMEDS_AttributeIOR_i.hxx \
+       SALOMEDS_AttributeLocalID.hxx \
+       SALOMEDS_AttributeLocalID_i.hxx \
+       SALOMEDS_AttributeName.hxx \
+       SALOMEDS_AttributeName_i.hxx \
+       SALOMEDS_AttributeOpened.hxx \
+       SALOMEDS_AttributeOpened_i.hxx \
+       SALOMEDS_AttributePersistentRef.hxx \
+       SALOMEDS_AttributePersistentRef_i.hxx \
+       SALOMEDS_AttributePixMap.hxx \
+       SALOMEDS_AttributePixMap_i.hxx \
+       SALOMEDS_AttributePythonObject.hxx \
+       SALOMEDS_AttributePythonObject_i.hxx \
+       SALOMEDS_AttributeReal.hxx \
+       SALOMEDS_AttributeReal_i.hxx \
+       SALOMEDS_AttributeSelectable.hxx \
+       SALOMEDS_AttributeSelectable_i.hxx \
+       SALOMEDS_AttributeSequenceOfInteger.hxx \
+       SALOMEDS_AttributeSequenceOfInteger_i.hxx \
+       SALOMEDS_AttributeSequenceOfReal.hxx \
+       SALOMEDS_AttributeSequenceOfReal_i.hxx \
+       SALOMEDS_Attributes.hxx \
+       SALOMEDS_AttributeStudyProperties.hxx \
+       SALOMEDS_AttributeStudyProperties_i.hxx \
+       SALOMEDS_AttributeTableOfInteger.hxx \
+       SALOMEDS_AttributeTableOfInteger_i.hxx \
+       SALOMEDS_AttributeTableOfReal.hxx \
+       SALOMEDS_AttributeTableOfReal_i.hxx \
+       SALOMEDS_AttributeTableOfString.hxx \
+       SALOMEDS_AttributeTableOfString_i.hxx \
+       SALOMEDS_AttributeTarget.hxx \
+       SALOMEDS_AttributeTarget_i.hxx \
+       SALOMEDS_AttributeTextColor.hxx \
+       SALOMEDS_AttributeTextColor_i.hxx \
+       SALOMEDS_AttributeTextHighlightColor.hxx \
+       SALOMEDS_AttributeTextHighlightColor_i.hxx \
+       SALOMEDS_AttributeTreeNode.hxx \
+       SALOMEDS_AttributeTreeNode_i.hxx \
+       SALOMEDS_AttributeUserID.hxx \
+       SALOMEDS_AttributeUserID_i.hxx \
+       SALOMEDS_BasicAttributeFactory.hxx \
+       SALOMEDS_BasicAttribute_i.hxx \
+       SALOMEDS_Callback_i.hxx \
+       SALOMEDS_ChildIterator.hxx \
+       SALOMEDS_ChildIterator_i.hxx \
+       SALOMEDS_ClientAttributes.hxx \
+       SALOMEDS_DataMapIteratorOfDataMapOfIntegerString.hxx \
+       SALOMEDS_DataMapIteratorOfDataMapStringLabel.hxx \
+       SALOMEDS_DataMapNodeOfDataMapOfIntegerString.hxx \
+       SALOMEDS_DataMapNodeOfDataMapStringLabel.hxx \
+       SALOMEDS_DataMapOfIntegerString.hxx \
+       SALOMEDS_DataMapStringLabel.hxx \
+       SALOMEDS_DrawableAttribute.hxx \
+       SALOMEDS_Driver_i.hxx \
+       SALOMEDS_ExpandableAttribute.hxx \
+       SALOMEDS_ExternalFileDef.hxx \
+       SALOMEDS_FileType.hxx \
+       SALOMEDS_FlagsAttribute.hxx \
+       SALOMEDS_GenericAttribute.hxx \
+       SALOMEDS_GenericAttribute_i.hxx \
+       SALOMEDS_GraphicAttribute.hxx \
+       SALOMEDS.hxx \
+       SALOMEDS_IORAttribute.hxx \
+       SALOMEDS_LocalIDAttribute.hxx \
+       SALOMEDS_OCAFApplication.hxx \
+       SALOMEDS_OpenedAttribute.hxx \
+       SALOMEDS_PersRefAttribute.hxx \
+       SALOMEDS_PixMapAttribute.hxx \
+       SALOMEDS_PythonObjectAttribute.hxx \
+       SALOMEDS_SAttribute_i.hxx \
+       SALOMEDS_SComponent.hxx \
+       SALOMEDS_SComponent_i.hxx \
+       SALOMEDS_SComponentIterator.hxx \
+       SALOMEDS_SComponentIterator_i.hxx \
+       SALOMEDS_SelectableAttribute.hxx \
+       SALOMEDS_SequenceOfIntegerAttribute.hxx \
+       SALOMEDS_SequenceOfRealAttribute.hxx \
+       SALOMEDS_SObject.hxx \
+       SALOMEDS_SObject_i.hxx \
+       SALOMEDS_StudyBuilder.hxx \
+       SALOMEDS_StudyBuilder_i.hxx \
+       SALOMEDS_Study.hxx \
+       SALOMEDS_Study_i.hxx \
+       SALOMEDS_StudyManager.hxx \
+       SALOMEDS_StudyManager_i.hxx \
+       SALOMEDS_StudyPropertiesAttribute.hxx \
+       SALOMEDS_TableOfIntegerAttribute.hxx \
+       SALOMEDS_TableOfRealAttribute.hxx \
+       SALOMEDS_TableOfStringAttribute.hxx \
+       SALOMEDS_TargetAttribute.hxx \
+       SALOMEDS_TextColorAttribute.hxx \
+       SALOMEDS_TextHighlightColorAttribute.hxx \
+       SALOMEDS_UseCaseBuilder.hxx \
+       SALOMEDS_UseCaseBuilder_i.hxx \
+       SALOMEDS_UseCaseIterator.hxx \
+       SALOMEDS_UseCaseIterator_i.hxx \
+       SALOMEDS_AttributeParameter.hxx \
+       SALOMEDS_AttributeParameter_i.hxx \
+       SALOMEDS_TMPFile_i.hxx
+
+libSalomeDS_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSalomeDS_la_LDFLAGS  = -Wl,-E -no-undefined -version-info=0:0:0 @LDEXPDYNFLAGS@
+libSalomeDS_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = SALOMEDS_Server SALOMEDS_Client
+
+SALOMEDS_Server_SOURCES  = SALOMEDS_Server.cxx
+SALOMEDS_Server_CPPFLAGS = $(COMMON_CPPFLAGS)
+SALOMEDS_Server_LDADD    = \
+       libSalomeDS.la $(COMMON_LIBS) \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       @CAS_OCAF@ \
+       @CORBA_LIBS@
+
+SALOMEDS_Client_SOURCES  = SALOMEDS_Client.cxx
+SALOMEDS_Client_CPPFLAGS = $(COMMON_CPPFLAGS)
+SALOMEDS_Client_LDADD    = \
+       libSalomeDS.la $(COMMON_LIBS) \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       -lTKLCAF -lTKMath \
+       @CORBA_LIBS@
+
diff --git a/src/SALOMEDS/SALOMEDS_AttributeParameter.cxx b/src/SALOMEDS/SALOMEDS_AttributeParameter.cxx
new file mode 100644 (file)
index 0000000..dd6c188
--- /dev/null
@@ -0,0 +1,481 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDS_AttributeParameter.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeParameter.hxx"
+#include "SALOMEDS.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+
+//=======================================================================
+/*!
+ * Function : Constructor
+ * Purpose  : Creates a new instance of SALOMEDS_AttributeParameter
+ */
+//=======================================================================
+SALOMEDS_AttributeParameter::SALOMEDS_AttributeParameter(const Handle(SALOMEDSImpl_AttributeParameter)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+//=======================================================================
+/*!
+ * Function : Constructor
+ * Purpose  : Creates a new instance of SALOMEDS_AttributeParameter
+ */
+//=======================================================================
+SALOMEDS_AttributeParameter::SALOMEDS_AttributeParameter(SALOMEDS::AttributeParameter_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+//=======================================================================
+/*!
+ * Function : Destructor
+ * Purpose  : Destroys the instance of SALOMEDS_AttributeParameter
+ */
+//=======================================================================
+SALOMEDS_AttributeParameter::~SALOMEDS_AttributeParameter()
+{}
+
+//=======================================================================
+/*!
+ * Function : SetInt
+ * Purpose  : Associates a integer value with the ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter::SetInt(const string& theID, const int theValue) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetInt(theID, theValue);
+  }
+  else
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetInt(theID.c_str(), theValue);
+}
+
+//=======================================================================
+/*!
+ * Function : GetInt
+ * Purpose  : Returns a int value associated with the given ID
+ */
+//=======================================================================
+int SALOMEDS_AttributeParameter::GetInt(const string& theID) 
+{
+  int aValue;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    aValue = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetInt(theID);
+  }
+  else
+    aValue = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetInt(theID.c_str());
+  return aValue;
+}
+
+//=======================================================================
+/*!
+ * Function : SetReal
+ * Purpose  : Associates a double value with the ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter::SetReal(const string& theID, const double& theValue) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetReal(theID, theValue);
+  }
+  else
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetReal(theID.c_str(), theValue);
+}
+//=======================================================================
+/*!
+ * Function : GetReal
+ * Purpose  : Returns a double value associated with the given ID
+ */
+//=======================================================================
+double SALOMEDS_AttributeParameter::GetReal(const string& theID) 
+{
+  double aValue;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    aValue = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetReal(theID);
+  }
+  else
+    aValue = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetReal(theID.c_str());
+  return aValue;
+}
+
+//=======================================================================
+/*!
+ * Function : SetString
+ * Purpose  : Associates a string with the ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter::SetString(const string& theID, const string& theValue) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetString(theID, theValue);
+  }
+  else
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetString(theID.c_str(), theValue.c_str());
+}
+//=======================================================================
+/*!
+ * Function : GetString
+ * Purpose  : Returns a string associated with the given ID
+ */
+//=======================================================================
+string SALOMEDS_AttributeParameter::GetString(const string& theID) 
+{
+  string aValue;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    aValue = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetString(theID);
+  }
+  else
+    aValue = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetString(theID.c_str());
+  return aValue;
+}
+  
+//=======================================================================
+/*!
+ * Function : SetBool
+ * Purpose  : Associates a bool value with the ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter::SetBool(const string& theID, const bool& theValue) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetBool(theID, theValue);
+  }
+  else
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetBool(theID.c_str(), theValue);
+}
+
+//=======================================================================
+/*!
+ * Function : GetBool
+ * Purpose  : Returns a bool value associated with the ID
+ */
+//=======================================================================
+bool SALOMEDS_AttributeParameter::GetBool(const string& theID) 
+{
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetBool(theID);
+  }
+  else
+    return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetBool(theID.c_str());
+}
+  
+//=======================================================================
+/*!
+ * Function : SetRealArray
+ * Purpose  : Associates an array of double values with the given ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter::SetRealArray(const string& theID, const vector<double>& theArray) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetRealArray(theID, theArray);
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq;
+    int length = theArray.size();
+    if(length) {
+      aSeq->length(length);
+      for(int i = 0; i<length; i++) aSeq[i] = theArray[i];
+    }
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetRealArray(theID.c_str(), aSeq);
+  }
+}
+//=======================================================================
+/*!
+ * Function : GetRealArray
+ * Purpose  : Returns an array of double values associated with the ID
+ */
+//=======================================================================
+vector<double> SALOMEDS_AttributeParameter::GetRealArray(const string& theID) 
+{
+  vector<double> v;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetRealArray(theID);
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aSeq = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetRealArray(theID.c_str());    
+    int length = aSeq->length();
+    if(length) {
+      v.resize(length);
+      for(int i = 0; i < length; i++) v[i] = aSeq[i];
+    }
+  }
+  return v;
+}
+
+//=======================================================================
+/*!
+ * Function : SetIntArray
+ * Purpose  : Associates an array of int values with the given ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter::SetIntArray(const string& theID, const vector<int>& theArray) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetIntArray(theID, theArray);
+  }
+  else {
+    SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq;
+    int length = theArray.size();
+    if(length) {
+      aSeq->length(length);
+      for(int i = 0; i<length; i++) aSeq[i] = theArray[i];
+    }
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetIntArray(theID.c_str(), aSeq);
+  }
+}
+//=======================================================================
+/*!
+ * Function : GetIntArray
+ * Purpose  : Returns an array of int values associated with the ID
+ */
+//=======================================================================
+vector<int> SALOMEDS_AttributeParameter::GetIntArray(const string& theID) 
+{
+  vector<int> v;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetIntArray(theID);
+  }
+  else {
+    SALOMEDS::LongSeq_var aSeq = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetIntArray(theID.c_str());    
+    int length = aSeq->length();
+    if(length) {
+      v.resize(length);
+      for(int i = 0; i < length; i++) v[i] = aSeq[i];
+    }
+  }
+  return v;
+}
+
+//=======================================================================
+/*!
+ * Function : SetStrArray
+ * Purpose  : Associates an array of string values with the given ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter::SetStrArray(const string& theID, const vector<string>& theArray) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->SetStrArray(theID, theArray);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq;
+    int length = theArray.size();
+    if(length) {
+      aSeq->length(length);
+      for(int i = 0; i<length; i++) aSeq[i] = CORBA::string_dup(theArray[i].c_str());
+    }
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->SetStrArray(theID.c_str(), aSeq);
+  }
+}
+//=======================================================================
+/*!
+ * Function : GetStrArray
+ * Purpose  : Returns an array of string values associated with the ID
+ */
+//=======================================================================
+vector<string> SALOMEDS_AttributeParameter::GetStrArray(const string& theID) 
+{
+  vector<string> v;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetStrArray(theID);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetStrArray(theID.c_str());    
+    int length = aSeq->length();
+    if(length) {
+      v.resize(length);
+      for(int i = 0; i < length; i++) v[i] = string(aSeq[i].in());
+    }
+  }
+  return v;
+}
+
+
+//=======================================================================
+/*!
+ * Function : IsSet
+ * Purpose  : Returns true if for the ID of given type was assigned \n
+ *            a value in the attribute
+ */
+//======================================================================= 
+bool SALOMEDS_AttributeParameter::IsSet(const string& theID, const int theType) 
+{
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->IsSet(theID, (Parameter_Types)theType);
+  }
+  else 
+    return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->IsSet(theID.c_str(), theType);
+}
+
+//=======================================================================
+/*!
+ * Function : RemoveID
+ * Purpose  : Removes a parameter with given ID
+ */
+//======================================================================= 
+bool SALOMEDS_AttributeParameter::RemoveID(const string& theID, const int theType) 
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->RemoveID(theID, (Parameter_Types)theType);
+  }
+  else
+    return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->RemoveID(theID.c_str(), theType);
+}
+
+//=======================================================================
+/*!
+ * Function : GetFather
+ * Purpose  : Returns a father attribute for this attribute
+ */
+//=======================================================================
+_PTR(AttributeParameter) SALOMEDS_AttributeParameter::GetFather() 
+{
+  SALOMEDSClient_AttributeParameter* AP = NULL;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter) AP_impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->GetFather();
+    if(AP_impl.IsNull()) return _PTR(AttributeParameter)(AP);
+    AP = new SALOMEDS_AttributeParameter(AP_impl);
+  }
+  else {
+    SALOMEDS::AttributeParameter_var AP_impl = SALOMEDS::AttributeParameter::_narrow(_corba_impl)->GetFather();
+    if(CORBA::is_nil(AP_impl)) return _PTR(AttributeParameter)(AP);
+    AP = new SALOMEDS_AttributeParameter(AP_impl);
+  }
+  
+  return _PTR(AttributeParameter)(AP);
+}
+
+//=======================================================================
+/*!
+ * Function : HasFather
+ * Purpose  : Returns True if the attribute has a father attribute
+ */
+//======================================================================= 
+bool SALOMEDS_AttributeParameter::HasFather() 
+{
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->HasFather();
+  }
+  else 
+    return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->HasFather();
+}
+
+//=======================================================================
+/*!
+ * Function : IsRoot
+ * Purpose  : Returns True is the attribute is highest in an hierachy
+ */
+//=======================================================================
+bool SALOMEDS_AttributeParameter::IsRoot()
+{
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->IsRoot();
+  }
+  else 
+    return SALOMEDS::AttributeParameter::_narrow(_corba_impl)->IsRoot();
+}
+
+//=======================================================================
+/*!
+ * Function : Clear
+ * Purpose  : Clears the content of the attribute
+ */
+//======================================================================= 
+void SALOMEDS_AttributeParameter::Clear() 
+{
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl)->Clear();
+  }
+  else 
+    SALOMEDS::AttributeParameter::_narrow(_corba_impl)->Clear();
+}
+
+//=======================================================================
+/*!
+ * Function : GetIDs
+ * Purpose  : Returns an array of all ID's of the given type
+ */
+//=======================================================================
+vector<string> SALOMEDS_AttributeParameter::GetIDs(const int theType)
+{
+  vector<string> v;
+  if(_isLocal) {
+    SALOMEDS::Locker lock; 
+    Handle(SALOMEDSImpl_AttributeParameter) AP_impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_local_impl);
+    return AP_impl->GetIDs((Parameter_Types)theType);
+  }
+  else {
+    SALOMEDS::AttributeParameter_var AP_impl = SALOMEDS::AttributeParameter::_narrow(_corba_impl);
+    SALOMEDS::StringSeq_var CorbaSeq = AP_impl->GetIDs(theType);
+    int length = CorbaSeq->length();
+    if(length) {
+      v.resize(length);
+      for(int i = 0; i <length; i++) v[i] = string(CorbaSeq[i].in());
+    }
+  }
+
+  return v;
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeParameter.hxx b/src/SALOMEDS/SALOMEDS_AttributeParameter.hxx
new file mode 100644 (file)
index 0000000..e2eaca6
--- /dev/null
@@ -0,0 +1,77 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDS_AttributeParameter.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeParameter_HeaderFile
+#define SALOMEDS_AttributeParameter_HeaderFile
+
+#include "SALOMEDSClient_AttributeParameter.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeParameter.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeParameter: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeParameter
+{
+public:  
+  SALOMEDS_AttributeParameter(const Handle(SALOMEDSImpl_AttributeParameter)& theAttr);
+  SALOMEDS_AttributeParameter(SALOMEDS::AttributeParameter_ptr theAttr);
+  ~SALOMEDS_AttributeParameter();
+
+  virtual void SetInt(const std::string& theID, const int theValue);
+  virtual int GetInt(const std::string& theID);
+
+  virtual void SetReal(const std::string& theID, const double& theValue);
+  virtual double GetReal(const std::string& theID);
+
+  virtual void SetString(const std::string& theID, const std::string& theValue);
+  virtual std::string GetString(const std::string& theID);
+  
+  virtual void SetBool(const std::string& theID, const bool& theValue);
+  virtual bool GetBool(const std::string& theID);
+  
+  virtual void SetRealArray(const std::string& theID, const std::vector<double>& theArray);
+  virtual std::vector<double> GetRealArray(const std::string& theID);
+  
+  virtual void SetIntArray(const std::string& theID, const std::vector<int>& theArray);
+  virtual std::vector<int> GetIntArray(const std::string& theID);
+
+  virtual void SetStrArray(const std::string& theID, const std::vector<std::string>& theArray);
+  virtual std::vector<std::string> GetStrArray(const std::string& theID);
+
+  virtual bool IsSet(const std::string& theID, const int theType);
+  
+  virtual bool RemoveID(const std::string& theID, const int theType);
+
+  virtual _PTR(AttributeParameter) GetFather();
+  virtual bool HasFather();
+  virtual bool IsRoot();
+  
+  virtual void Clear();
+
+  virtual std::vector<std::string> GetIDs(const int theType);
+};
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx b/src/SALOMEDS/SALOMEDS_AttributeParameter_i.cxx
new file mode 100644 (file)
index 0000000..e1f9767
--- /dev/null
@@ -0,0 +1,347 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDS_AttributeParameter_i.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDS_AttributeParameter_i.hxx"
+#include "SALOMEDS.hxx"
+#include <TCollection_AsciiString.hxx>
+
+#include <vector>
+
+using namespace std;
+
+//=======================================================================
+/*!
+ * Function : SetInt
+ * Purpose  : Associates a integer value with the ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter_i::SetInt(const char* theID, CORBA::Long theValue)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetInt(theID, theValue);
+}
+
+//=======================================================================
+/*!
+ * Function : GetInt
+ * Purpose  : Returns a int value associated with the given ID
+ */
+//=======================================================================
+CORBA::Long SALOMEDS_AttributeParameter_i::GetInt(const char* theID)
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetInt(theID);
+}
+
+//=======================================================================
+/*!
+ * Function : SetReal
+ * Purpose  : Associates a double value with the ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter_i::SetReal(const char* theID, const CORBA::Double theValue)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetReal(theID, theValue);
+}
+
+//=======================================================================
+/*!
+ * Function : GetReal
+ * Purpose  : Returns a double value associated with the given ID
+ */
+//=======================================================================
+CORBA::Double SALOMEDS_AttributeParameter_i::GetReal(const char* theID)
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetReal(theID);
+}
+
+//=======================================================================
+/*!
+ * Function : SetString
+ * Purpose  : Associates a string with the ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter_i::SetString(const char* theID, const char* theValue)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  Handle(SALOMEDSImpl_AttributeParameter) impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl);
+  impl->SetString(theID, theValue);
+}
+
+//=======================================================================
+/*!
+ * Function : GetString
+ * Purpose  : Returns a string associated with the given ID
+ */
+//=======================================================================
+char* SALOMEDS_AttributeParameter_i::GetString(const char* theID)
+{
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeParameter) impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl);
+  CORBA::String_var c_s = CORBA::string_dup(impl->GetString(theID).c_str());
+  return c_s._retn();
+}
+
+//=======================================================================
+/*!
+ * Function : SetBool
+ * Purpose  : Associates a bool value with the ID
+ */
+//=======================================================================  
+void SALOMEDS_AttributeParameter_i::SetBool(const char* theID, CORBA::Boolean theValue)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetBool(theID, theValue);
+}
+
+//=======================================================================
+/*!
+ * Function : GetBool
+ * Purpose  : Returns a bool value associated with the ID
+ */
+//=======================================================================
+CORBA::Boolean SALOMEDS_AttributeParameter_i::GetBool(const char* theID)
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetBool(theID);
+}
+  
+//=======================================================================
+/*!
+ * Function : SetRealArray
+ * Purpose  : Associates an array of double values with the given ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter_i::SetRealArray(const char* theID, const SALOMEDS::DoubleSeq& theArray)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  vector<double> v;
+  int length = theArray.length();
+  if(length) {
+    v.resize(length);
+    for(int i = 0; i<length; i++) v[i] = theArray[i];
+  }
+  Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetRealArray(theID, v);
+}
+
+//=======================================================================
+/*!
+ * Function : GetRealArray
+ * Purpose  : Returns an array of double values associated with the ID
+ */
+//=======================================================================
+SALOMEDS::DoubleSeq* SALOMEDS_AttributeParameter_i::GetRealArray(const char* theID)
+{
+  SALOMEDS::Locker lock; 
+  SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq;
+  vector<double> v = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetRealArray(theID);
+  int length = v.size();
+  if(length) {
+    aSeq->length(length);
+    for(int i = 0; i<length; i++) aSeq[i] = v[i];
+  }
+  return aSeq._retn();
+}
+//=======================================================================
+/*!
+ * Function : SetIntArray
+ * Purpose  : Associates an array of int values with the given ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter_i::SetIntArray(const char* theID, const SALOMEDS::LongSeq& theArray)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  vector<int> v;
+  int length = theArray.length();
+  if(length) {
+    v.resize(length);
+    for(int i = 0; i<length; i++) v[i] = theArray[i];
+  }
+  Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetIntArray(theID, v);
+}
+
+//=======================================================================
+/*!
+ * Function : GetIntArray
+ * Purpose  : Returns an array of int values associated with the ID
+ */
+//=======================================================================
+SALOMEDS::LongSeq* SALOMEDS_AttributeParameter_i::GetIntArray(const char* theID)
+{
+  SALOMEDS::Locker lock; 
+  SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq;
+  vector<int> v = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetIntArray(theID);
+  int length = v.size();
+  if(length) {
+    aSeq->length(length);
+    for(int i = 0; i<length; i++) aSeq[i] = v[i];
+  }
+  return aSeq._retn();
+}
+  
+//=======================================================================
+/*!
+ * Function : SetStrArray
+ * Purpose  : Associates an array of string values with the given ID
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter_i::SetStrArray(const char* theID, const SALOMEDS::StringSeq& theArray)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  vector<string> v;
+  int length = theArray.length();
+  if(length) {
+    v.resize(length);
+    for(int i = 0; i<length; i++) v[i] = string(theArray[i].in());
+  }
+  Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->SetStrArray(theID, v);
+}
+
+//=======================================================================
+/*!
+ * Function : GetStrArray
+ * Purpose  : Returns an array of string values associated with the ID
+ */
+//=======================================================================
+SALOMEDS::StringSeq* SALOMEDS_AttributeParameter_i::GetStrArray(const char* theID)
+{
+  SALOMEDS::Locker lock; 
+  SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq;
+  vector<string> v = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetStrArray(theID);
+  int length = v.size();
+  if(length) {
+    aSeq->length(length);
+    for(int i = 0; i<length; i++) aSeq[i] = CORBA::string_dup(v[i].c_str());
+  }
+  return aSeq._retn();
+}
+  
+//=======================================================================
+/*!
+ * Function : IsSet
+ * Purpose  : Returns true if for the ID of given type was assigned \n
+ *            a value in the attribute
+ */
+//=======================================================================
+CORBA::Boolean SALOMEDS_AttributeParameter_i::IsSet(const char* theID, CORBA::Long theType)
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->IsSet(theID, (Parameter_Types)theType);
+}
+
+//=======================================================================
+/*!
+ * Function : RemoveID
+ * Purpose  : Removes a parameter with given ID
+ */
+//=======================================================================  
+CORBA::Boolean SALOMEDS_AttributeParameter_i::RemoveID(const char* theID, CORBA::Long theType)
+{
+  SALOMEDS::Locker lock; 
+  CheckLocked();
+  return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->RemoveID(theID, (Parameter_Types)theType);
+}
+
+//=======================================================================
+/*!
+ * Function : GetFather
+ * Purpose  : Returns a father attribute for this attribute
+ */
+//=======================================================================
+SALOMEDS::AttributeParameter_ptr SALOMEDS_AttributeParameter_i::GetFather()
+{
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeParameter) impl = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl);
+  SALOMEDS_AttributeParameter_i* attr = new SALOMEDS_AttributeParameter_i(impl, _orb);
+  return attr->AttributeParameter::_this();
+}
+
+//=======================================================================
+/*!
+ * Function : HasFather
+ * Purpose  : Returns True if the attribute has a father attribute
+ */
+//=======================================================================
+CORBA::Boolean SALOMEDS_AttributeParameter_i::HasFather()
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->HasFather();
+}
+
+//=======================================================================
+/*!
+ * Function : IsRoot
+ * Purpose  : Returns True is the attribute is highest in an hierachy
+ */
+//=======================================================================
+CORBA::Boolean SALOMEDS_AttributeParameter_i::IsRoot()
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->IsRoot();
+}
+
+//=======================================================================
+/*!
+ * Function : IsRoot
+ * Purpose  : Clears the content of the attribute
+ */
+//=======================================================================
+void SALOMEDS_AttributeParameter_i::Clear()
+{
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->Clear();
+}
+
+
+//=======================================================================
+/*!
+ * Function : GetIDs
+ * Purpose  : Returns an array of all ID's of the given type
+ */
+//=======================================================================
+SALOMEDS::StringSeq* SALOMEDS_AttributeParameter_i::GetIDs(CORBA::Long theType)
+{
+  SALOMEDS::Locker lock; 
+  SALOMEDS::StringSeq_var CorbaSeq = new SALOMEDS::StringSeq;
+  vector<string> A = Handle(SALOMEDSImpl_AttributeParameter)::DownCast(_impl)->GetIDs((Parameter_Types)theType);
+
+  if(A.size()) {
+    int length = A.size();
+    CorbaSeq->length(length);
+    for (int i = 0; i < length; i++) CorbaSeq[i] = CORBA::string_dup(A[i].c_str());;
+  }
+
+  return CorbaSeq._retn();
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx b/src/SALOMEDS/SALOMEDS_AttributeParameter_i.hxx
new file mode 100644 (file)
index 0000000..df1ba29
--- /dev/null
@@ -0,0 +1,89 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDS_AttributeParameter_i.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDS_AttributeParameter_i_HeaderFile
+#define SALOMEDS_AttributeParameter_i_HeaderFile
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeParameter.hxx"
+
+/*!
+ Class: SALOMEDS_AttributeParameter
+ Description : AttributeParameter is a universal container of basic types 
+*/
+
+class SALOMEDS_AttributeParameter_i: public virtual POA_SALOMEDS::AttributeParameter,
+                                    public virtual SALOMEDS_GenericAttribute_i 
+{
+public:
+  
+  SALOMEDS_AttributeParameter_i(const Handle(SALOMEDSImpl_AttributeParameter)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeParameter_i() {};
+
+
+  virtual void SetInt(const char* theID, CORBA::Long theValue);
+  virtual CORBA::Long GetInt(const char* theID);
+
+  virtual void SetReal(const char* theID, const CORBA::Double theValue);
+  virtual CORBA::Double GetReal(const char* theID);
+
+  virtual void SetString(const char* theID, const char* theValue);
+  virtual char* GetString(const char* theID);
+  
+  virtual void SetBool(const char* theID, CORBA::Boolean theValue);
+  virtual CORBA::Boolean GetBool(const char* theID);
+  
+  virtual void SetRealArray(const char* theID, const SALOMEDS::DoubleSeq& theArray);
+  virtual SALOMEDS::DoubleSeq* GetRealArray(const char* theID);
+
+  virtual void SetIntArray(const char* theID, const SALOMEDS::LongSeq& theArray);
+  virtual SALOMEDS::LongSeq* GetIntArray(const char* theID);
+
+  virtual void SetStrArray(const char* theID, const SALOMEDS::StringSeq& theArray);
+  virtual SALOMEDS::StringSeq* GetStrArray(const char* theID);
+  
+  virtual CORBA::Boolean IsSet(const char* theID, CORBA::Long theType);
+  
+  virtual CORBA::Boolean RemoveID(const char* theID, CORBA::Long theType);
+
+  virtual SALOMEDS::AttributeParameter_ptr GetFather();
+  virtual CORBA::Boolean HasFather();
+  virtual CORBA::Boolean IsRoot();
+
+  virtual void Clear();
+
+  virtual SALOMEDS::StringSeq* GetIDs(CORBA::Long theType);
+
+};
+
+
+
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_IParameters.cxx b/src/SALOMEDS/SALOMEDS_IParameters.cxx
new file mode 100644 (file)
index 0000000..78d4ff8
--- /dev/null
@@ -0,0 +1,279 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#include "SALOMEDS_IParameters.hxx"
+#include <utilities.h>
+
+#include <TCollection_AsciiString.hxx>
+
+using namespace std;
+
+#define PT_INTEGER   0
+#define PT_REAL      1
+#define PT_BOOLEAN   2
+#define PT_STRING    3
+#define PT_REALARRAY 4
+#define PT_INTARRAY  5
+#define PT_STRARRAY  6
+
+#define _AP_LISTS_LIST_ "AP_LISTS_LIST"
+#define _AP_ENTRIES_LIST_ "AP_ENTRIES_LIST"
+#define _AP_PROPERTIES_LIST_ "AP_PROPERTIES_LIST"
+#define _AP_DUMP_PYTHON_ "AP_DUMP_PYTHON"
+
+/*!
+  Constructor
+*/
+SALOMEDS_IParameters::SALOMEDS_IParameters(const _PTR(AttributeParameter)& ap)
+{
+  if(!ap) return;
+  _ap = ap;
+  _PTR(SObject) so = _ap->GetSObject();
+  _study = so->GetStudy();
+}
+
+SALOMEDS_IParameters::~SALOMEDS_IParameters()
+{
+  _compNames.clear();
+}
+
+int SALOMEDS_IParameters::append(const string& listName, const string& value)
+{
+  if(!_ap) return -1;
+  vector<string> v;
+  if(!_ap->IsSet(listName, PT_STRARRAY)) {
+    if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) _ap->SetStrArray(_AP_LISTS_LIST_, v);
+    if(listName != _AP_ENTRIES_LIST_ && 
+       listName != _AP_PROPERTIES_LIST_) {
+      append(_AP_LISTS_LIST_, listName);
+    }
+    _ap->SetStrArray(listName, v);
+  }
+  v = _ap->GetStrArray(listName);
+  v.push_back(value);
+  _ap->SetStrArray(listName, v);
+  return (v.size()-1);
+}
+
+int SALOMEDS_IParameters::nbValues(const string& listName)
+{
+  if(!_ap) return -1;
+  if(!_ap->IsSet(listName, PT_STRARRAY)) return 0;
+  vector<string> v = _ap->GetStrArray(listName);
+  return v.size();
+}
+
+vector<string> SALOMEDS_IParameters::getValues(const string& listName)
+{
+  vector<string> v;
+  if(!_ap) return v;
+  if(!_ap->IsSet(listName, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(listName);
+}
+
+
+string SALOMEDS_IParameters::getValue(const string& listName, int index)
+{
+  if(!_ap) return "";
+  if(!_ap->IsSet(listName, PT_STRARRAY)) return "";
+  vector<string> v = _ap->GetStrArray(listName);
+  if(index >= v.size()) return ""; 
+  return v[index];
+}
+
+vector<string> SALOMEDS_IParameters::getLists()
+{
+  vector<string> v;
+  if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(_AP_LISTS_LIST_);
+}
+
+void SALOMEDS_IParameters::setParameter(const string& entry, const string& parameterName, const string& value)
+{
+  if(!_ap) return;
+  vector<string> v;
+  if(!_ap->IsSet(entry, PT_STRARRAY)) {
+    append(_AP_ENTRIES_LIST_, entry); //Add the entry to the internal list of entries
+    _ap->SetStrArray(entry, v);
+  }
+  v = _ap->GetStrArray(entry);
+  v.push_back(parameterName);
+  v.push_back(value);
+  _ap->SetStrArray(entry, v);
+}
+
+
+string SALOMEDS_IParameters::getParameter(const string& entry, const string& parameterName)
+{
+  if(!_ap) return "";
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return "";
+  vector<string> v = _ap->GetStrArray(entry);
+  int length = v.size();
+  for(int i = 0; i<length; i+=1) {
+    if(v[i] == parameterName) return v[i+1];
+  }
+  return "";
+}
+
+
+vector<string> SALOMEDS_IParameters::getAllParameterNames(const string& entry)
+{
+  vector<string> v, names;
+  if(!_ap) return v; 
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return v;
+  v = _ap->GetStrArray(entry);
+  int length = v.size();
+  for(int i = 0; i<length; i+=2) {
+    names.push_back(v[i]);
+  }
+  return names;
+}
+
+vector<string> SALOMEDS_IParameters::getAllParameterValues(const string& entry)
+{
+  vector<string> v, values;
+  if(!_ap) return v; 
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return v;
+  v = _ap->GetStrArray(entry);
+  int length = v.size();
+  for(int i = 1; i<length; i+=2) {
+    values.push_back(v[i]);
+  }
+  return values; 
+}
+
+int SALOMEDS_IParameters::getNbParameters(const string& entry)
+{
+  if(!_ap) return -1;
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return -1;
+  return  _ap->GetStrArray(entry).size()/2;
+}
+
+vector<string> SALOMEDS_IParameters::getEntries()
+{
+  vector<string> v;
+  if(!_ap) return v;
+  if(!_ap->IsSet(_AP_ENTRIES_LIST_, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(_AP_ENTRIES_LIST_);
+}
+
+void SALOMEDS_IParameters::setProperty(const string& name, const std::string& value)
+{
+  if(!_ap) return;
+  if(!_ap->IsSet(name, PT_STRING)) {
+    append(_AP_PROPERTIES_LIST_, name); //Add the property to the internal list of properties
+  }
+  _ap->SetString(name, value);
+}
+
+string SALOMEDS_IParameters::getProperty(const string& name)
+{
+  if(!_ap) return "";
+  if(!_ap->IsSet(name, PT_STRING)) return "";
+  return _ap->GetString(name);
+}
+
+vector<string> SALOMEDS_IParameters::getProperties()
+{
+  vector<string> v;
+  if(!_ap) return v;
+  if(!_ap->IsSet(_AP_PROPERTIES_LIST_, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(_AP_PROPERTIES_LIST_);
+}
+
+
+vector<string> SALOMEDS_IParameters::parseValue(const string& value, const char separator, bool fromEnd)
+{
+  TCollection_AsciiString val((char*)value.c_str());
+  vector<string> v;
+  int pos;
+  if(fromEnd) pos = val.SearchFromEnd(separator);
+  else pos = val.Search(separator);
+
+  if(pos < 0) {
+    v.push_back(value);
+    return v;
+  }
+
+  TCollection_AsciiString part1, part2;
+  part1 = val.SubString(1, pos-1);
+  part2 = val.SubString(pos+1, val.Length());
+  v.push_back(part1.ToCString());
+  v.push_back(part2.ToCString());
+  return v;
+}
+
+string SALOMEDS_IParameters::encodeEntry(const string& entry, const string& compName)
+{
+  string tail(entry, 6, entry.length()-1);
+  string newEntry(compName);
+  newEntry+=("_"+tail);
+  return newEntry;
+}
+
+string SALOMEDS_IParameters::decodeEntry(const string& entry)
+{
+  if(!_study) return entry;
+  int pos = entry.rfind("_");
+  if(pos < 0 || pos >= entry.length()) return entry;
+
+  string compName(entry, 0, pos), compID, tail(entry, pos+1, entry.length()-1);
+  
+  if(_compNames.find(compName) == _compNames.end()) {
+    _PTR(SObject) so = _study->FindComponent(compName);
+    if(!so) return entry;
+    compID = so->GetID();
+    _compNames[compName] = compID;
+  }
+  else compID = _compNames[compName];
+  string newEntry(compID);
+  newEntry += (":"+tail);
+  
+  return newEntry;
+}
+
+void SALOMEDS_IParameters::setDumpPython(_PTR(Study) study, const string& theID)
+{
+  string anID;
+  if(theID == "") anID = getDefaultVisualComponent();
+  else anID = theID;
+
+  _PTR(AttributeParameter) ap = study->GetCommonParameters(anID, 0);
+  ap->SetBool(_AP_DUMP_PYTHON_, !isDumpPython(study, theID));
+}
+
+bool SALOMEDS_IParameters::isDumpPython(_PTR(Study) study, const string& theID)
+{
+  string anID;
+  if(theID == "") anID = getDefaultVisualComponent();
+  else anID = theID;
+
+  _PTR(AttributeParameter) ap = study->GetCommonParameters(anID, 0);
+  if(!ap) return false;
+  if(!ap->IsSet(_AP_DUMP_PYTHON_, PT_BOOLEAN)) return false;
+  return (bool)ap->GetBool(_AP_DUMP_PYTHON_);
+}
+
+string SALOMEDS_IParameters::getDefaultVisualComponent()
+{
+  return "Interface Applicative";
+}
+
+
+
diff --git a/src/SALOMEDS/SALOMEDS_IParameters.hxx b/src/SALOMEDS/SALOMEDS_IParameters.hxx
new file mode 100644 (file)
index 0000000..6aaaa2f
--- /dev/null
@@ -0,0 +1,150 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#ifndef SALOMEDS_IParameters_H
+#define SALOMEDS_IParameters_H
+
+#include <string>
+#include <vector>
+#include <map>
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSClient_IParameters.hxx"
+
+/*! 
+  Class which an interface to store the parameters of the objects
+*/
+class SALOMEDS_IParameters: public SALOMEDSClient_IParameters
+{
+public:
+  SALOMEDS_IParameters(const _PTR(AttributeParameter)& ap); 
+
+  virtual ~SALOMEDS_IParameters();
+
+  /*!
+    Appends a string value to a named list. 
+    Returns a number of the added value.
+    Note: the name of the list MUST be unique
+   */
+  virtual int append(const std::string& listName, const std::string& value); 
+
+  /*!
+    Returns a number elements in the list
+   */
+  virtual int nbValues(const std::string& listName);
+
+  /*!
+    Returns a list of values in the list
+   */
+  virtual std::vector<std::string> getValues(const std::string& listName);
+
+  /*!
+    Returns a value with given %index, where %index is in range [0:nbValues-1]
+   */
+  virtual std::string getValue(const std::string& listName, int index);
+
+  /*!
+    Returns a list all entries lists
+   */
+  virtual std::vector<std::string> getLists();
+
+  /*!
+    Sets a new named parameter value for the given entry
+   */
+  virtual void setParameter(const std::string& entry, const std::string& parameterName, const std::string& value);
+
+  /*!
+    Gets a named parameter value for the given entry
+   */
+  virtual std::string getParameter(const std::string& entry, const std::string& parameterName);
+
+  /*!
+    Returns all parameter names of the given entry
+   */
+  virtual std::vector<std::string> getAllParameterNames(const std::string& entry);
+
+  /*!
+    Returns all parameter  values of the given entry
+   */
+  virtual std::vector<std::string> getAllParameterValues(const std::string& entry);
+
+  /*!
+    Returns a number of parameters of the given entry
+   */
+  virtual int getNbParameters(const std::string& entry);
+
+  /*!
+    Returns a list all entries 
+   */
+  virtual std::vector<std::string> getEntries();
+
+  /*!
+    Sets a global named property value
+   */
+  virtual void setProperty(const std::string& name, const std::string& value);
+
+  /*!
+    Gets a value of global named property
+   */
+  virtual std::string getProperty(const std::string& name);
+
+  /*!
+    Returns a list all properties 
+   */
+  virtual std::vector<std::string> getProperties();
+
+  /*!
+    Breaks a value string in two parts which is divided by %separator.
+    If fromEnd is True the search of separator starts from the end of the string
+   */
+  virtual std::vector<std::string> parseValue(const std::string& value, const char separator, bool fromEnd = true);
+
+
+  /*!
+    Returns encoded entry that is a relative entry for the component
+   */
+  virtual std::string encodeEntry(const std::string& entry, const std::string& compName);
+
+  /*!
+    Returns decoded entry that is an absolute entry
+   */
+  virtual std::string decodeEntry(const std::string& entry);
+
+  /*!
+    Enables/Disables the dumping visual parameters
+   */
+  virtual void setDumpPython(_PTR(Study) study, const std::string& theID = "");
+
+  /*!
+    Returns whether there is the dumping visual parameters
+   */
+  virtual bool isDumpPython(_PTR(Study) study, const std::string& theID = "");  
+
+  /*!
+    Returns a default name of the component where the visula parameters are stored.
+  */
+  virtual std::string getDefaultVisualComponent();
+
+private:
+  _PTR(AttributeParameter) _ap;
+  _PTR(Study) _study;
+  std::map<std::string, std::string> _compNames;
+};
+
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_TMPFile_i.cxx b/src/SALOMEDS/SALOMEDS_TMPFile_i.cxx
new file mode 100644 (file)
index 0000000..b3d5c50
--- /dev/null
@@ -0,0 +1,96 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//  File   : SALOMEDSImpl_SObject.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDS_TMPFile_i.hxx"
+
+#include <Handle_Standard_Type.hxx>
+#include <Standard_Transient.hxx>
+
+#include <stdexcept>
+
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDS_TMPFile_i, SALOMEDSImpl_TMPFile )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDS_TMPFile_i, SALOMEDSImpl_TMPFile )
+
+SALOMEDS_TMPFile_i
+::SALOMEDS_TMPFile_i(SALOMEDS::TMPFile* theStream):
+  myStream(theStream)
+{}
+
+size_t
+SALOMEDS_TMPFile_i
+::Size()
+{
+  if(!&myStream.in())
+    return 0;
+
+  return myStream->length();
+}
+
+SALOMEDSImpl_TMPFile::TOctet&
+SALOMEDS_TMPFile_i
+::Get(size_t theIndex)
+{
+  if(!&myStream.in())
+    throw std::out_of_range("SALOMEDS_TMPFile_i::Get(size_t) const - !&myStream.in()");
+
+  if(theIndex < 0 || theIndex >= myStream->length())
+    throw std::out_of_range("SALOMEDS_TMPFile_i::Get(size_t) const - theIndex < 0 || theIndex >= myStream->length()");
+
+  return myStream[theIndex];
+}
+
+
+//-----------------------------------------------------------------------------
+IMPLEMENT_STANDARD_HANDLE( Engines_TMPFile_i, SALOMEDSImpl_TMPFile )
+IMPLEMENT_STANDARD_RTTIEXT( Engines_TMPFile_i, SALOMEDSImpl_TMPFile )
+
+Engines_TMPFile_i
+::Engines_TMPFile_i(Engines::TMPFile* theStream):
+  myStream(theStream)
+{}
+
+size_t
+Engines_TMPFile_i
+::Size()
+{
+  if(!&myStream.in())
+    return 0;
+
+  return myStream->length();
+}
+
+SALOMEDSImpl_TMPFile::TOctet&
+Engines_TMPFile_i
+::Get(size_t theIndex)
+{
+  if(!&myStream.in())
+    throw std::out_of_range("Engines_TMPFile_i::Get(size_t) const - !&myStream.in()");
+
+  if(theIndex < 0 || theIndex >= myStream->length())
+    throw std::out_of_range("Engines_TMPFile_i::Get(size_t) const - theIndex < 0 || theIndex >= myStream->length()");
+
+  return myStream[theIndex];
+}
diff --git a/src/SALOMEDS/SALOMEDS_TMPFile_i.hxx b/src/SALOMEDS/SALOMEDS_TMPFile_i.hxx
new file mode 100644 (file)
index 0000000..1885341
--- /dev/null
@@ -0,0 +1,70 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef __SALOMEDSIMPL_TMPFILE_I_H__
+#define __SALOMEDSIMPL_TMPFILE_I_H__
+
+// IDL headers
+#include "SALOMEconfig.h"
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOME_Component)
+
+#include "SALOMEDSImpl_TMPFile.hxx"
+
+
+//-----------------------------------------------------------------------------
+DEFINE_STANDARD_HANDLE( SALOMEDS_TMPFile_i, SALOMEDSImpl_TMPFile );
+
+class SALOMEDS_TMPFile_i : public SALOMEDSImpl_TMPFile
+{
+public:
+  SALOMEDS_TMPFile_i(SALOMEDS::TMPFile* theStream);
+
+  virtual size_t Size();
+
+  virtual TOctet& Get(size_t);
+
+  DEFINE_STANDARD_RTTI( SALOMEDS_TMPFile_i );
+
+protected:
+  SALOMEDS::TMPFile_var myStream;
+};
+
+
+//-----------------------------------------------------------------------------
+DEFINE_STANDARD_HANDLE( Engines_TMPFile_i, SALOMEDSImpl_TMPFile );
+
+class Engines_TMPFile_i : public SALOMEDSImpl_TMPFile
+{
+public:
+  Engines_TMPFile_i(Engines::TMPFile* theStream);
+
+  virtual size_t Size();
+
+  virtual TOctet& Get(size_t);
+
+  DEFINE_STANDARD_RTTI( Engines_TMPFile_i );
+
+protected:
+  Engines::TMPFile_var myStream;
+};
+
+
+#endif
diff --git a/src/SALOMEDS/Test/Makefile.am b/src/SALOMEDS/Test/Makefile.am
new file mode 100644 (file)
index 0000000..6b1bc5f
--- /dev/null
@@ -0,0 +1,110 @@
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Paul RASCLE
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS= SALOMEDSTest.hxx
+
+# Scripts to be installed
+dist_salomescript_SCRIPTS = TestSALOMEDS.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This directory defines the subdirectory src in the top source directory.
+RPATH=../..
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CPPUNIT_INCLUDES@ \
+       -I$(srcdir)/$(RPATH)/Basics               -I$(srcdir)/$(RPATH)/Basics/Test \
+       -I$(srcdir)/$(RPATH)/SALOMELocalTrace     -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \
+       -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \
+       -I$(srcdir)/$(RPATH)/NamingService        -I$(srcdir)/$(RPATH)/NamingService/Test \
+       -I$(srcdir)/$(RPATH)/Utils                -I$(srcdir)/$(RPATH)/Utils/Test \
+       -I$(srcdir)/$(RPATH)/ResourcesManager \
+       -I$(srcdir)/$(RPATH)/LifeCycleCORBA \
+       -I$(srcdir)/$(RPATH)/SALOMEDSClient \
+       -I$(srcdir)/$(RPATH)/SALOMEDSImpl         -I$(srcdir)/$(RPATH)/SALOMEDSImpl/Test \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       @CPPUNIT_LIBS@ \
+       $(RPATH)/Basics/libSALOMEBasics.la \
+       $(RPATH)/ResourcesManager/libSalomeResourcesManager.la \
+       $(RPATH)/Container/libSalomeContainer.la \
+       $(RPATH)/NamingService/libSalomeNS.la \
+       $(RPATH)/Registry/libRegistry.la \
+       $(RPATH)/Notification/libSalomeNotification.la \
+       $(RPATH)/Utils/Test/libUtilsTest.la \
+       $(RPATH)/Utils/libOpUtil.la \
+       $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la \
+       $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \
+       $(RPATH)/SALOMEDSImpl/Test/libSALOMEDSImplTest.la \
+       $(RPATH)/SALOMEDSImpl/libSalomeDSImpl.la \
+       $(RPATH)/SALOMEDSClient/libSalomeDSClient.la \
+       $(RPATH)/SALOMEDS/libSalomeDS.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSALOMEDSTest.la 
+libSALOMEDSTest_la_SOURCES = SALOMEDSTest.cxx
+libSALOMEDSTest_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSALOMEDSTest_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSALOMEDSTest_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestSALOMEDS
+TestSALOMEDS_SOURCES  = TestSALOMEDS.cxx
+TestSALOMEDS_CPPFLAGS = $(COMMON_CPPFLAGS)
+TestSALOMEDS_LDADD    = \
+       libSALOMEDSTest.la ../libSalomeDS.la \
+       $(RPATH)/NamingService/Test/libNamingServiceTest.la \
+       $(COMMON_LIBS)
+
diff --git a/src/SALOMEDS/Test/SALOMEDSTest.cxx b/src/SALOMEDS/Test/SALOMEDSTest.cxx
new file mode 100644 (file)
index 0000000..6221e9b
--- /dev/null
@@ -0,0 +1,190 @@
+// Copyright (C) 2006  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SALOMEDSTest.hxx"
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <vector>
+#include <cstdlib>
+#include "utilities.h"
+#include "Utils_SALOME_Exception.hxx"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "OpUtil.hxx"
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSClient_ClientFactory.hxx"
+
+#include <TCollection_AsciiString.hxx>
+
+using namespace std;
+
+#define PT_INTEGER 0
+#define PT_REAL    1
+#define PT_BOOLEAN 2
+#define PT_STRING  3
+#define PT_REALARRAY 4
+#define PT_INTARRAY  5
+#define PT_STRARRAY  6
+
+
+#define TRACEFILE "/tmp/traceUnitTest.log"
+
+// ============================================================================
+/*!
+ * Set up the environment
+ */
+// ============================================================================
+
+void SALOMEDSTest::setUp()
+{
+  TCollection_AsciiString kernel(getenv("KERNEL_ROOT_DIR"));
+  TCollection_AsciiString subPath("/share/salome/resources");
+  TCollection_AsciiString csf_var = (kernel+subPath);
+  setenv("CSF_PluginDefaults", csf_var.ToCString(), 0);
+  setenv("CSF_SALOMEDS_ResourcesDefaults", csf_var.ToCString(), 0);
+
+  // --- trace on file
+  char *theFileName = TRACEFILE;
+
+  string s = "file:";
+  s += theFileName;
+  CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
+
+  ofstream traceFile;
+  traceFile.open(theFileName, ios::out | ios::app);
+  CPPUNIT_ASSERT(traceFile); // file created empty, then closed
+  traceFile.close();
+
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+
+  // --- Get or initialize the orb
+
+  int _argc = 1;
+  char* _argv[] = {""};
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
+  _orb = init(_argc , _argv ) ;
+
+  sleep(2);
+
+  // --- Create a SALOME_NamingService instance
+
+  _NS = new SALOME_NamingService;
+
+  sleep(2);
+
+  _NS->init_orb(_orb) ;
+}
+
+// ============================================================================
+/*!
+ *  - delete trace classes
+ */
+// ============================================================================
+
+void 
+SALOMEDSTest::tearDown()
+{
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+
+  delete _NS;
+}
+
+// ============================================================================
+/*!
+ * Check AttributeParameter
+ */
+// ============================================================================
+void SALOMEDSTest::testAttributeParameter()
+{
+  CORBA::Object_var obj = _orb->resolve_initial_references( "RootPOA" );
+  PortableServer::POA_var poa = PortableServer::POA::_narrow( obj );
+
+  PortableServer::POAManager_var pman = poa->the_POAManager();
+  pman->activate() ;
+
+  _PTR(StudyManager) sm = ClientFactory::createStudyManager(_orb, poa);
+
+  CPPUNIT_ASSERT(sm);
+
+  _PTR(Study) study = sm->NewStudy("Test");
+
+  CPPUNIT_ASSERT(study);
+
+  _PTR(AttributeParameter) _ap = study->GetCommonParameters("TestComp", 0);
+
+  CPPUNIT_ASSERT(_ap);
+
+  _ap->SetInt("IntValue", 1);
+  CPPUNIT_ASSERT(_ap->IsSet("IntValue", PT_INTEGER));
+  CPPUNIT_ASSERT(_ap->GetInt("IntValue") == 1);
+
+  _ap->SetReal("RealValue", 1.2);
+  CPPUNIT_ASSERT(_ap->IsSet("RealValue", PT_REAL));
+  CPPUNIT_ASSERT(_ap->GetReal("RealValue") == 1.2);
+
+  _ap->SetString("StringValue", "hello");
+  CPPUNIT_ASSERT(_ap->IsSet("StringValue", PT_STRING));
+  CPPUNIT_ASSERT(_ap->GetString("StringValue") == "hello");
+
+  _ap->SetBool("BoolValue", 0);
+  CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN));
+  CPPUNIT_ASSERT(!_ap->GetBool("BoolValue"));
+
+  _ap->SetBool("BoolValue", 0);
+  CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN));
+  CPPUNIT_ASSERT(!_ap->GetBool("BoolValue"));
+
+  vector<int> intArray;
+  intArray.push_back(0);
+  intArray.push_back(1);
+
+  _ap->SetIntArray("IntArray", intArray);
+  CPPUNIT_ASSERT(_ap->IsSet("IntArray", PT_INTARRAY));
+  CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[0] == 0);
+  CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[1] == 1); 
+
+  vector<double> realArray;
+  realArray.push_back(0.0);
+  realArray.push_back(1.1);
+  
+  _ap->SetRealArray("RealArray", realArray);
+  CPPUNIT_ASSERT(_ap->IsSet("RealArray", PT_REALARRAY));
+  CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[0] == 0.0);
+  CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[1] == 1.1); 
+
+  vector<string> strArray;
+  strArray.push_back("hello");
+  strArray.push_back("world");
+  
+  _ap->SetStrArray("StrArray", strArray);
+  CPPUNIT_ASSERT(_ap->IsSet("StrArray", PT_STRARRAY));
+  CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[0] == "hello");
+  CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[1] == "world"); 
+}
+
+
+
diff --git a/src/SALOMEDS/Test/SALOMEDSTest.hxx b/src/SALOMEDS/Test/SALOMEDSTest.hxx
new file mode 100644 (file)
index 0000000..83c4deb
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright (C) 2006  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _SALOMEDSTEST_HXX_
+#define _SALOMEDSTEST_HXX_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <CORBA.h>
+
+#include <SALOMEconfig.h>
+#include "SALOME_NamingService.hxx"
+
+class SALOMEDSTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( SALOMEDSTest );
+  CPPUNIT_TEST( testAttributeParameter );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+
+  void setUp();
+  void tearDown();
+  void testAttributeParameter();
+
+protected:
+  CORBA::ORB_var _orb;
+  SALOME_NamingService* _NS;
+};
+
+#endif
diff --git a/src/SALOMEDS/Test/TestSALOMEDS.cxx b/src/SALOMEDS/Test/TestSALOMEDS.cxx
new file mode 100644 (file)
index 0000000..68c94b2
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// --- include all SALOMEDS Test from basics until the present directory
+
+#include "SALOMELocalTraceTest.hxx"
+#include "SALOMEDSImplTest.hxx"
+#include "SALOMEDSTest.hxx"
+
+// --- Registers the fixture into the 'registry'
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMEDSImplTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMEDSTest );
+
+// --- generic Main program from Basic/Test
+
+#include "BasicMainTest.hxx"
diff --git a/src/SALOMEDS/Test/TestSALOMEDS.py b/src/SALOMEDS/Test/TestSALOMEDS.py
new file mode 100644 (file)
index 0000000..d2c1626
--- /dev/null
@@ -0,0 +1,47 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+import sys, os,signal,string,commands
+import runSalome
+import orbmodule
+import TestKiller
+
+# get SALOME environment :
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# launch CORBA naming server
+
+clt=orbmodule.client()
+
+# launch CORBA logger server
+
+myServer=runSalome.LoggerServer(args)
+myServer.run()
+clt.waitLogger("Logger")
+
+# execute Unit Test
+
+command = ['TestSALOMEDS']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+# kill Test process 
+
+TestKiller.killProcess(runSalome.process_id)
diff --git a/src/SALOMEDSClient/Makefile.am b/src/SALOMEDSClient/Makefile.am
new file mode 100644 (file)
index 0000000..4895488
--- /dev/null
@@ -0,0 +1,102 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+#  SALOMEDSClient: client interface of SALOMEDS
+# 
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+salomeinclude_HEADERS=\
+               SALOMEDSClient_definitions.hxx \
+                SALOMEDSClient_AttributeComment.hxx \
+               SALOMEDSClient_AttributeDrawable.hxx \
+                SALOMEDSClient_AttributeExpandable.hxx \
+                SALOMEDSClient_AttributeExternalFileDef.hxx \
+                SALOMEDSClient_AttributeFileType.hxx \
+                SALOMEDSClient_AttributeFlags.hxx \
+                SALOMEDSClient_AttributeGraphic.hxx \
+                SALOMEDSClient_AttributeIOR.hxx \
+                SALOMEDSClient_AttributeInteger.hxx \
+                SALOMEDSClient_AttributeLocalID.hxx \
+                SALOMEDSClient_AttributeName.hxx \
+                SALOMEDSClient_AttributeOpened.hxx \
+                SALOMEDSClient_AttributePersistentRef.hxx \
+                SALOMEDSClient_AttributePixMap.hxx \
+                SALOMEDSClient_AttributePythonObject.hxx \
+                SALOMEDSClient_AttributeReal.hxx \
+                SALOMEDSClient_AttributeSelectable.hxx \
+                SALOMEDSClient_AttributeSequenceOfInteger.hxx \
+                SALOMEDSClient_AttributeSequenceOfReal.hxx \
+                SALOMEDSClient_AttributeStudyProperties.hxx \
+                SALOMEDSClient_AttributeTableOfInteger.hxx \
+                SALOMEDSClient_AttributeTableOfReal.hxx \
+                SALOMEDSClient_AttributeTableOfString.hxx \
+                SALOMEDSClient_AttributeTarget.hxx \
+                SALOMEDSClient_AttributeTextColor.hxx \
+                SALOMEDSClient_AttributeTextHighlightColor.hxx \
+                SALOMEDSClient_AttributeTreeNode.hxx \
+                SALOMEDSClient_AttributeUserID.hxx \
+               SALOMEDSClient_AttributeParameter.hxx \
+                SALOMEDSClient_ChildIterator.hxx \
+                SALOMEDSClient_GenericAttribute.hxx \
+                SALOMEDSClient_SComponent.hxx \
+                SALOMEDSClient_SComponentIterator.hxx \
+                SALOMEDSClient_SObject.hxx \
+                SALOMEDSClient_Study.hxx \
+                SALOMEDSClient_StudyBuilder.hxx \
+                SALOMEDSClient_StudyManager.hxx \
+                SALOMEDSClient_UseCaseBuilder.hxx \
+                SALOMEDSClient_UseCaseIterator.hxx \
+               SALOMEDSClient_ClientFactory.hxx \
+               SALOMEDSClient_IParameters.hxx \
+               SALOMEDSClient.hxx
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS= \
+       @BOOST_CPPFLAGS@ \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeDSClient.la
+libSalomeDSClient_la_SOURCES =         \
+       SALOMEDSClient_ClientFactory.cxx
+
+
+libSalomeDSClient_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSalomeDSClient_la_LDFLAGS  = -Wl,-E -no-undefined -version-info=0:0:0
+libSalomeDSClient_la_LIBADD   = $(COMMON_LIBS)
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeParameter.hxx
new file mode 100644 (file)
index 0000000..e1f5bbd
--- /dev/null
@@ -0,0 +1,71 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDSImpl_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSClient_AttributeParameter_HeaderFile
+#define _SALOMEDSClient_AttributeParameter_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string>
+#include <vector>
+
+class SALOMEDSClient_AttributeParameter : public virtual SALOMEDSClient_GenericAttribute 
+{
+
+public:
+
+  virtual void SetInt(const std::string& theID, const int theValue) = 0;
+  virtual int GetInt(const std::string& theID) = 0;
+
+  virtual void SetReal(const std::string& theID, const double& theValue) = 0;
+  virtual double GetReal(const std::string& theID) = 0;
+
+  virtual void SetString(const std::string& theID, const std::string& theValue) = 0;
+  virtual std::string GetString(const std::string& theID) = 0;
+  
+  virtual void SetBool(const std::string& theID, const bool& theValue) = 0;
+  virtual bool GetBool(const std::string& theID) = 0;
+  
+  virtual void SetRealArray(const std::string& theID, const std::vector<double>& theArray) = 0;
+  virtual std::vector<double> GetRealArray(const std::string& theID) = 0;
+  
+  virtual void SetIntArray(const std::string& theID, const std::vector<int>& theArray) = 0;
+  virtual std::vector<int> GetIntArray(const std::string& theID) = 0;
+
+  virtual void SetStrArray(const std::string& theID, const std::vector<std::string>& theArray) = 0;
+  virtual std::vector<std::string> GetStrArray(const std::string& theID) = 0;
+
+  virtual bool IsSet(const std::string& theID, const int theType) = 0;
+  
+  virtual bool RemoveID(const std::string& theID, const int theType) = 0;
+
+  virtual _PTR(AttributeParameter) GetFather() = 0;
+  virtual bool HasFather() = 0;
+  virtual bool IsRoot() = 0;
+  
+  virtual void Clear() = 0;
+
+  virtual std::vector<std::string> GetIDs(const int theType) = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx b/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx
new file mode 100644 (file)
index 0000000..3c83287
--- /dev/null
@@ -0,0 +1,232 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+//           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+// 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.1 of the License.
+// 
+// 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
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// 
+#include "SALOMEDSClient_ClientFactory.hxx"
+
+#ifdef WIN32
+#include <windows.h>
+static HMODULE _libHandle = 0;
+#define SALOMEDS_LIB_NAME "SalomeDS.dll"
+#else
+#include <dlfcn.h>
+static void* _libHandle = NULL;
+#define SALOMEDS_LIB_NAME "libSalomeDS.so"
+#endif
+
+#define SOBJECT_FACTORY      "SObjectFactory"
+#define SCOMPONENT_FACTORY   "SComponentFactory"
+#define STUDY_FACTORY        "StudyFactory"
+#define BUILDER_FACTORY      "BuilderFactory"
+#define STUDYMANAGER_FACTORY "StudyManagerFactory"
+#define STUDYMANAGER_CREATE  "CreateStudyManager"
+#define GET_PARAMETERS       "GetIParameters"
+#define CONVERT_SOBJECT      "ConvertSObject"
+#define CONVERT_STUDY        "ConvertStudy"
+#define CONVERT_BUILDER      "ConvertBuilder"
+
+typedef SALOMEDSClient_SObject* (*SOBJECT_FACTORY_FUNCTION) (SALOMEDS::SObject_ptr);
+typedef SALOMEDSClient_SComponent* (*SCOMPONENT_FACTORY_FUNCTION) (SALOMEDS::SComponent_ptr);
+typedef SALOMEDSClient_Study* (*STUDY_FACTORY_FUNCTION) (SALOMEDS::Study_ptr);
+typedef SALOMEDSClient_StudyManager* (*STUDYMANAGER_FACTORY_FUNCTION) ();
+typedef SALOMEDSClient_StudyBuilder* (*BUILDER_FACTORY_FUNCTION) (SALOMEDS::StudyBuilder_ptr);
+typedef SALOMEDSClient_StudyManager* (*STUDYMANAGER_CREATE_FUNCTION) (CORBA::ORB_ptr, PortableServer::POA_ptr);
+typedef SALOMEDSClient_IParameters* (*GET_PARAMETERS_FACTORY) (const _PTR(AttributeParameter)&);
+typedef SALOMEDS::SObject_ptr (*CONVERT_SOBJECT_FUNCTION) (const _PTR(SObject)&);
+typedef SALOMEDS::Study_ptr (*CONVERT_STUDY_FUNCTION) (const _PTR(Study)&);
+typedef SALOMEDS::StudyBuilder_ptr (*CONVERT_BUILDER_FUNCTION) (const _PTR(StudyBuilder)&);
+
+
+static SOBJECT_FACTORY_FUNCTION aSObjectFactory = NULL;
+static SCOMPONENT_FACTORY_FUNCTION aSComponentFactory = NULL;
+static STUDY_FACTORY_FUNCTION aStudyFactory = NULL;
+static BUILDER_FACTORY_FUNCTION aBuilderFactory = NULL;
+static STUDYMANAGER_FACTORY_FUNCTION aManagerFactory = NULL;
+static STUDYMANAGER_CREATE_FUNCTION aCreateFactory = NULL;
+static GET_PARAMETERS_FACTORY aGetIParameters = NULL;
+static CONVERT_SOBJECT_FUNCTION aConvertSObject = NULL;
+static CONVERT_STUDY_FUNCTION aConvertStudy = NULL;
+static CONVERT_BUILDER_FUNCTION aConvertBuilder = NULL;
+
+using namespace std;
+
+_PTR(SObject) ClientFactory::SObject(SALOMEDS::SObject_ptr theSObject)
+{
+  SALOMEDSClient_SObject* so = NULL;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aSObjectFactory) aSObjectFactory = (SOBJECT_FACTORY_FUNCTION)::GetProcAddress(_libHandle, SOBJECT_FACTORY);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aSObjectFactory) aSObjectFactory = (SOBJECT_FACTORY_FUNCTION) dlsym(_libHandle, SOBJECT_FACTORY);
+#endif
+
+  if(aSObjectFactory) so = aSObjectFactory(theSObject); 
+  return _PTR(SObject)(so);
+}
+
+_PTR(SComponent) ClientFactory::SComponent(SALOMEDS::SComponent_ptr theSComponent)
+{
+  SALOMEDSClient_SComponent* sco = NULL; 
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aSComponentFactory) aSComponentFactory = (SCOMPONENT_FACTORY_FUNCTION)::GetProcAddress(_libHandle, SCOMPONENT_FACTORY);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aSComponentFactory) aSComponentFactory = (SCOMPONENT_FACTORY_FUNCTION) dlsym(_libHandle, SCOMPONENT_FACTORY);
+#endif
+
+  if(aSComponentFactory) sco = aSComponentFactory(theSComponent); 
+  return _PTR(SComponent)(sco);
+}
+
+_PTR(Study) ClientFactory::Study(SALOMEDS::Study_ptr theStudy)
+{
+  SALOMEDSClient_Study* study = NULL;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aStudyFactory) aStudyFactory = (STUDY_FACTORY_FUNCTION)::GetProcAddress(_libHandle, STUDY_FACTORY);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aStudyFactory) aStudyFactory = (STUDY_FACTORY_FUNCTION) dlsym(_libHandle, STUDY_FACTORY);
+#endif
+
+  if(aStudyFactory) study = aStudyFactory(theStudy); 
+  return _PTR(Study)(study);
+}
+
+_PTR(StudyBuilder) ClientFactory::StudyBuilder(SALOMEDS::StudyBuilder_ptr theStudyBuilder)
+{
+  SALOMEDSClient_StudyBuilder* studyBuilder = NULL;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aBuilderFactory) aBuilderFactory = (BUILDER_FACTORY_FUNCTION)::GetProcAddress(_libHandle, BUILDER_FACTORY);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aBuilderFactory) aBuilderFactory = (BUILDER_FACTORY_FUNCTION) dlsym(_libHandle, BUILDER_FACTORY);
+#endif
+
+  if(aBuilderFactory) studyBuilder = aBuilderFactory(theStudyBuilder); 
+  return _PTR(StudyBuilder)(studyBuilder);
+}
+
+_PTR(StudyManager) ClientFactory::StudyManager()
+{
+  SALOMEDSClient_StudyManager* manager = NULL;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aManagerFactory) aManagerFactory = (STUDYMANAGER_FACTORY_FUNCTION)::GetProcAddress(_libHandle, STUDYMANAGER_FACTORY);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aManagerFactory) aManagerFactory = (STUDYMANAGER_FACTORY_FUNCTION) dlsym(_libHandle, STUDYMANAGER_FACTORY);
+#endif
+
+  if(aManagerFactory) manager = aManagerFactory(); 
+  return _PTR(StudyManager)(manager);
+}
+
+_PTR(StudyManager) ClientFactory::createStudyManager(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
+{
+  SALOMEDSClient_StudyManager* manager = NULL;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aCreateFactory) aCreateFactory = (STUDYMANAGER_CREATE_FUNCTION)::GetProcAddress(_libHandle, STUDYMANAGER_CREATE);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aCreateFactory) aCreateFactory = (STUDYMANAGER_CREATE_FUNCTION) dlsym(_libHandle, STUDYMANAGER_CREATE);
+#endif
+
+  if(aCreateFactory)  manager = aCreateFactory(orb, poa);
+  return _PTR(StudyManager)(manager);
+}
+
+_PTR(IParameters) ClientFactory::getIParameters(const _PTR(AttributeParameter)& ap)
+{
+  SALOMEDSClient_IParameters* interface = NULL;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aGetIParameters) aGetIParameters = (GET_PARAMETERS_FACTORY)::GetProcAddress(_libHandle, GET_PARAMETERS);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aGetIParameters) aGetIParameters = (GET_PARAMETERS_FACTORY) dlsym(_libHandle, GET_PARAMETERS);
+#endif
+
+  if(aGetIParameters) interface = aGetIParameters(ap); 
+  return _PTR(IParameters)(interface);
+}
+
+SALOMEDS::SObject_ptr ClientFactory::crbSObject(const _PTR(SObject)& theSObject)
+{
+  SALOMEDS::SObject_var so;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aConvertSObject) aConvertSObject = (CONVERT_SOBJECT_FUNCTION)::GetProcAddress(_libHandle, CONVERT_SOBJECT);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aConvertSObject) aConvertSObject = (CONVERT_SOBJECT_FUNCTION) dlsym(_libHandle, CONVERT_SOBJECT);
+#endif
+
+  if(aConvertSObject) so = aConvertSObject(theSObject); 
+
+  if(CORBA::is_nil(so)) return SALOMEDS::SObject::_nil();
+  return so._retn();
+}
+
+
+SALOMEDS::Study_ptr ClientFactory::crbStudy(const _PTR(Study)& theStudy)
+{
+  SALOMEDS::Study_var study;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aConvertStudy) aConvertStudy = (CONVERT_STUDY_FUNCTION)::GetProcAddress(_libHandle, CONVERT_STUDY);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aConvertStudy) aConvertStudy = (CONVERT_STUDY_FUNCTION) dlsym(_libHandle, CONVERT_STUDY);
+#endif
+
+  if(aConvertStudy) study = aConvertStudy(theStudy); 
+  
+  if(CORBA::is_nil(study)) return SALOMEDS::Study::_nil();
+  return study._retn();
+}
+
+SALOMEDS::StudyBuilder_ptr ClientFactory::crbStudyBuilder(const _PTR(StudyBuilder)& theStudyBuilder)
+{
+  SALOMEDS::StudyBuilder_var studyBuilder;
+
+#ifdef WIN32
+  if(!_libHandle) _libHandle = ::LoadLibrary(SALOMEDS_LIB_NAME);
+  if(!aConvertBuilder)aConvertBuilder  = (CONVERT_BUILDER_FUNCTION)::GetProcAddress(_libHandle, CONVERT_BUILDER);
+#else
+  if(!_libHandle) _libHandle = dlopen(SALOMEDS_LIB_NAME, RTLD_LAZY | RTLD_GLOBAL);
+  if(!aConvertBuilder) aConvertBuilder = (CONVERT_BUILDER_FUNCTION) dlsym(_libHandle, CONVERT_BUILDER);
+#endif
+
+  if(aConvertBuilder) studyBuilder = aConvertBuilder(theStudyBuilder); 
+  
+  if(CORBA::is_nil(studyBuilder)) return SALOMEDS::StudyBuilder::_nil();
+  return studyBuilder._retn();
+}
diff --git a/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx b/src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx
new file mode 100644 (file)
index 0000000..6c226d4
--- /dev/null
@@ -0,0 +1,97 @@
+// Copyright (C) 2006  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDSClient_ClientFactory.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDSClient_ClientFactory_HeaderFile
+#define SALOMEDSClient_ClientFactory_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_SObject.hxx"
+#include "SALOMEDSClient_SComponent.hxx"
+#include "SALOMEDSClient_Study.hxx"
+#include "SALOMEDSClient_StudyManager.hxx"
+#include "SALOMEDSClient_IParameters.hxx"
+
+#include <string>
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+
+class ClientFactory {
+
+public:
+  /*!
+   *  Returns a client SObject wrapper that corresponds %theSObject
+   */
+  static _PTR(SObject) SObject(SALOMEDS::SObject_ptr theSObject);
+
+  /*!
+   *  Returns a client SComponent wrapper that corresponds %theSComponent
+   */
+  static _PTR(SComponent) SComponent(SALOMEDS::SComponent_ptr theSComponent);
+
+  /*!
+   *  Returns a client Study wrapper that corresponds %theStudy
+   */
+  static _PTR(Study) Study(SALOMEDS::Study_ptr theStudy);
+
+  /*!
+   *  Returns a client StudyBuilder wrapper that corresponds %theStudy
+   */
+  static _PTR(StudyBuilder) StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder);
+
+  /*!
+   *  Returns a client StudyManager wrapper
+   */
+  static _PTR(StudyManager) StudyManager();
+
+  /*!
+   *  Creates and returns a client StudyManager wrapper
+   */
+  static _PTR(StudyManager) createStudyManager(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa);
+
+  /*!
+   * Returns an IParameters interface
+   */
+  static _PTR(IParameters) getIParameters(const _PTR(AttributeParameter)& ap);
+    
+
+  /*!
+   *  Returns a CORBA SObject that corresponds %theStudy
+   */
+  static SALOMEDS::SObject_ptr crbSObject(const _PTR(SObject)& theSObject);
+
+  /*!
+   *  Returns a CORBA Study that corresponds %theStudy
+   */
+  static SALOMEDS::Study_ptr crbStudy(const _PTR(Study)& theStudy);  
+
+  /*!
+   *  Returns a CORBA StudyBuilder that corresponds %theStudyBuilder
+   */
+  static SALOMEDS::StudyBuilder_ptr crbStudyBuilder(const _PTR(StudyBuilder)& theStudyBuilder);  
+
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx b/src/SALOMEDSClient/SALOMEDSClient_IParameters.hxx
new file mode 100644 (file)
index 0000000..c372364
--- /dev/null
@@ -0,0 +1,146 @@
+// Copyright (C) 2006  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#ifndef SALOMEDSClient_IParameters_H
+#define SALOMEDSClient_IParameters_H
+
+#include <string>
+#include <vector>
+#include <map>
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_AttributeParameter.hxx"
+
+/*! 
+  Class which an interface to store the parameters of the objects
+*/
+class SALOMEDSClient_IParameters
+{
+public:
+  
+   virtual ~SALOMEDSClient_IParameters() {}
+
+  /*!
+    Appends a string value to a named list. 
+    Returns a number of the added value.
+    Note: the name of the list MUST be unique
+   */
+  virtual int append(const std::string& listName, const std::string& value) = 0; 
+
+  /*!
+    Returns a number elements in the list
+   */
+  virtual int nbValues(const std::string& listName) = 0;
+
+  /*!
+    Returns a list of values in the list
+   */
+  virtual std::vector<std::string> getValues(const std::string& listName) = 0;
+
+  /*!
+    Returns a value with given %index, where %index is in range [0:nbValues-1]
+   */
+  virtual std::string getValue(const std::string& listName, int index) = 0;
+
+  /*!
+    Returns a list all entries lists
+   */
+  virtual std::vector<std::string> getLists() = 0;
+
+  /*!
+    Sets a new named parameter value for the given entry
+   */
+  virtual void setParameter(const std::string& entry, const std::string& parameterName, const std::string& value) = 0;
+
+  /*!
+    Gets a named parameter value for the given entry
+   */
+  virtual std::string getParameter(const std::string& entry, const std::string& parameterName) = 0;
+
+  /*!
+    Returns all parameter names of the given entry
+   */
+  virtual std::vector<std::string> getAllParameterNames(const std::string& entry) = 0;
+
+  /*!
+    Returns all parameter  values of the given entry
+   */
+  virtual std::vector<std::string> getAllParameterValues(const std::string& entry) = 0;
+
+  /*!
+    Returns a number of parameters of the given entry
+   */
+  virtual int getNbParameters(const std::string& entry) = 0;
+
+  /*!
+    Returns a list all entries 
+   */
+  virtual std::vector<std::string> getEntries() = 0;
+
+  /*!
+    Sets a global named property value
+   */
+  virtual void setProperty(const std::string& name, const std::string& value) = 0;
+
+  /*!
+    Gets a value of global named property
+   */
+  virtual std::string getProperty(const std::string& name) = 0;
+
+  /*!
+    Returns a list all properties 
+   */
+  virtual std::vector<std::string> getProperties() = 0;
+
+  /*!
+    Breaks a value string in two parts which is divided by %separator.
+    If fromEnd is True the search of separator starts from the end of the string
+   */
+  virtual std::vector<std::string> parseValue(const std::string& value, const char separator, bool fromEnd = true) = 0;
+
+
+  /*!
+    Returns encoded entry that is a relative entry for the component
+   */
+  virtual std::string encodeEntry(const std::string& entry, const std::string& compName) = 0;
+
+  /*!
+    Returns decoded entry that is an absolute entry
+   */
+  virtual std::string decodeEntry(const std::string& entry) = 0;
+
+  /*!
+    Enables/Disables the dumping visual parameters, static implementation is supposed
+   */
+  virtual void setDumpPython(_PTR(Study) study, const std::string& theID = "") = 0;
+
+  /*!
+    Returns whether there is the dumping visual parameters, static implementation is supposed
+   */
+  virtual bool isDumpPython(_PTR(Study) study, const std::string& theID = "") = 0;  
+
+  /*!
+    Returns a default name of the component where the visula parameters are stored.
+    Static implementation is supposed
+  */
+  virtual std::string getDefaultVisualComponent() = 0;
+
+};
+
+
+#endif
diff --git a/src/SALOMEDSImpl/Makefile.am b/src/SALOMEDSImpl/Makefile.am
new file mode 100644 (file)
index 0000000..ca9352a
--- /dev/null
@@ -0,0 +1,219 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS= \
+       SALOMEDSImpl_Attributes.hxx \
+       SALOMEDSImpl_SObject.hxx \
+       SALOMEDSImpl_SComponent.hxx \
+       SALOMEDSImpl_Driver.hxx \
+       SALOMEDSImpl_Callback.hxx \
+       SALOMEDSImpl_ChildIterator.hxx \
+       SALOMEDSImpl_GenericAttribute.hxx \
+       SALOMEDSImpl_AttributeIOR.hxx \
+       SALOMEDSImpl_AttributeExternalFileDef.hxx \
+       SALOMEDSImpl_AttributeFileType.hxx \
+       SALOMEDSImpl_AttributePersistentRef.hxx \
+       SALOMEDSImpl_AttributeSequenceOfReal.hxx \
+       SALOMEDSImpl_AttributeSequenceOfInteger.hxx \
+       SALOMEDSImpl_AttributeDrawable.hxx \
+       SALOMEDSImpl_AttributeSelectable.hxx \
+       SALOMEDSImpl_AttributeExpandable.hxx  \
+       SALOMEDSImpl_AttributeOpened.hxx \
+       SALOMEDSImpl_AttributeFlags.hxx \
+       SALOMEDSImpl_AttributeGraphic.hxx \
+       SALOMEDSImpl_AttributeTextColor.hxx \
+       SALOMEDSImpl_AttributeTextHighlightColor.hxx \
+       SALOMEDSImpl_AttributePixMap.hxx \
+       SALOMEDSImpl_AttributeLocalID.hxx \
+       SALOMEDSImpl_AttributeTarget.hxx \
+       SALOMEDSImpl_AttributeTableOfInteger.hxx \
+       SALOMEDSImpl_AttributeTableOfReal.hxx \
+       SALOMEDSImpl_AttributeTableOfString.hxx \
+       SALOMEDSImpl_AttributeStudyProperties.hxx \
+       SALOMEDSImpl_AttributePythonObject.hxx \
+       SALOMEDSImpl_AttributeReal.hxx \
+       SALOMEDSImpl_AttributeInteger.hxx \
+       SALOMEDSImpl_AttributeUserID.hxx \
+       SALOMEDSImpl_AttributeTreeNode.hxx \
+       SALOMEDSImpl_AttributeName.hxx \
+       SALOMEDSImpl_AttributeComment.hxx \
+       SALOMEDSImpl_AttributeReference.hxx \
+       SALOMEDSImpl_AttributeParameter.hxx \
+       SALOMEDSImpl_UseCaseBuilder.hxx \
+       SALOMEDSImpl_UseCaseIterator.hxx \
+       SALOMEDSImpl_SComponentIterator.hxx \
+       SALOMEDSImpl_StudyBuilder.hxx \
+       SALOMEDSImpl_Study.hxx \
+       SALOMEDSImpl_StudyManager.hxx \
+       SALOMEDSImpl_OCAFApplication.hxx \
+       SALOMEDSImpl_ChildNodeIterator.hxx \
+       SALOMEDSImpl_IParameters.hxx \
+       SALOMEDSImpl_TMPFile.hxx
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../HDFPersist \
+       @HDF5_INCLUDES@
+
+# This flag is used to resolve the dependencies of OCC libraries.
+LDXMUFLAGS = -L/usr/X11R6/lib@LIB_LOCATION_SUFFIX@ -lXmu
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../HDFPersist/libSalomeHDFPersist.la \
+       @CAS_OCAF@ \
+       @HDF5_LIBS@ \
+       $(LDXMUFLAGS)
+
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeDSImpl.la
+libSalomeDSImpl_la_SOURCES =\
+       SALOMEDSImpl_Tool.cxx \
+       SALOMEDSImpl_Callback.cxx \
+       SALOMEDSImpl_StudyHandle.cxx \
+       SALOMEDSImpl_GenericAttribute.cxx \
+       SALOMEDSImpl_SObject.cxx \
+       SALOMEDSImpl_SComponent.cxx \
+       SALOMEDSImpl_ChildIterator.cxx \
+       SALOMEDSImpl_OCAFApplication.cxx \
+       SALOMEDSImpl_AttributeIOR.cxx \
+       SALOMEDSImpl_AttributeExternalFileDef.cxx \
+       SALOMEDSImpl_AttributeFileType.cxx \
+       SALOMEDSImpl_AttributePersistentRef.cxx \
+       SALOMEDSImpl_AttributeSequenceOfReal.cxx \
+       SALOMEDSImpl_AttributeSequenceOfInteger.cxx \
+       SALOMEDSImpl_AttributeDrawable.cxx \
+       SALOMEDSImpl_AttributeSelectable.cxx \
+       SALOMEDSImpl_AttributeExpandable.cxx  \
+       SALOMEDSImpl_AttributeOpened.cxx \
+       SALOMEDSImpl_AttributeFlags.cxx \
+       SALOMEDSImpl_AttributeGraphic.cxx \
+       SALOMEDSImpl_AttributeTextColor.cxx \
+       SALOMEDSImpl_AttributeTextHighlightColor.cxx \
+       SALOMEDSImpl_AttributePixMap.cxx \
+       SALOMEDSImpl_AttributeLocalID.cxx \
+       SALOMEDSImpl_AttributeTarget.cxx \
+       SALOMEDSImpl_AttributeTableOfInteger.cxx \
+       SALOMEDSImpl_AttributeTableOfReal.cxx \
+       SALOMEDSImpl_AttributeTableOfString.cxx \
+       SALOMEDSImpl_AttributeStudyProperties.cxx \
+       SALOMEDSImpl_AttributePythonObject.cxx \
+       SALOMEDSImpl_AttributeReal.cxx \
+       SALOMEDSImpl_AttributeInteger.cxx \
+       SALOMEDSImpl_AttributeUserID.cxx \
+       SALOMEDSImpl_AttributeTreeNode.cxx \
+       SALOMEDSImpl_AttributeName.cxx \
+       SALOMEDSImpl_AttributeComment.cxx \
+       SALOMEDSImpl_AttributeReference.cxx \
+       SALOMEDSImpl_AttributeParameter.cxx \
+       SALOMEDSImpl_ChildNodeIterator.cxx \
+       SALOMEDSImpl_UseCaseBuilder.cxx \
+       SALOMEDSImpl_UseCaseIterator.cxx \
+       SALOMEDSImpl_SComponentIterator.cxx \
+       SALOMEDSImpl_StudyBuilder.cxx \
+       SALOMEDSImpl_Study.cxx \
+       SALOMEDSImpl_StudyManager.cxx \
+       SALOMEDSImpl_IParameters.cxx \
+       SALOMEDSImpl_TMPFile.cxx \
+       \
+       SALOMEDSImpl_AttributeComment.hxx \
+       SALOMEDSImpl_AttributeDrawable.hxx \
+       SALOMEDSImpl_AttributeExpandable.hxx \
+       SALOMEDSImpl_AttributeExternalFileDef.hxx \
+       SALOMEDSImpl_AttributeFileType.hxx \
+       SALOMEDSImpl_AttributeFlags.hxx \
+       SALOMEDSImpl_AttributeGraphic.hxx \
+       SALOMEDSImpl_AttributeInteger.hxx \
+       SALOMEDSImpl_AttributeIOR.hxx \
+       SALOMEDSImpl_AttributeLocalID.hxx \
+       SALOMEDSImpl_AttributeName.hxx \
+       SALOMEDSImpl_AttributeOpened.hxx \
+       SALOMEDSImpl_AttributePersistentRef.hxx \
+       SALOMEDSImpl_AttributePixMap.hxx \
+       SALOMEDSImpl_AttributePythonObject.hxx \
+       SALOMEDSImpl_AttributeReal.hxx \
+       SALOMEDSImpl_AttributeReference.hxx \
+       SALOMEDSImpl_AttributeSelectable.hxx \
+       SALOMEDSImpl_AttributeSequenceOfInteger.hxx \
+       SALOMEDSImpl_AttributeSequenceOfReal.hxx \
+       SALOMEDSImpl_Attributes.hxx \
+       SALOMEDSImpl_AttributeStudyProperties.hxx \
+       SALOMEDSImpl_AttributeTableOfInteger.hxx \
+       SALOMEDSImpl_AttributeTableOfReal.hxx \
+       SALOMEDSImpl_AttributeTableOfString.hxx \
+       SALOMEDSImpl_AttributeTarget.hxx \
+       SALOMEDSImpl_AttributeTextColor.hxx \
+       SALOMEDSImpl_AttributeTextHighlightColor.hxx \
+       SALOMEDSImpl_AttributeTreeNode.hxx \
+       SALOMEDSImpl_AttributeUserID.hxx \
+       SALOMEDSImpl_Callback.hxx \
+       SALOMEDSImpl_ChildIterator.hxx \
+       SALOMEDSImpl_ChildNodeIterator.hxx \
+       SALOMEDSImpl_Driver.hxx \
+       SALOMEDSImpl_GenericAttribute.hxx \
+       SALOMEDSImpl_OCAFApplication.hxx \
+       SALOMEDSImpl_SComponent.hxx \
+       SALOMEDSImpl_SComponentIterator.hxx \
+       SALOMEDSImpl_SObject.hxx \
+       SALOMEDSImpl_StudyBuilder.hxx \
+       SALOMEDSImpl_StudyHandle.hxx \
+       SALOMEDSImpl_Study.hxx \
+       SALOMEDSImpl_StudyManager.hxx \
+       SALOMEDSImpl_Tool.hxx \
+       SALOMEDSImpl_UseCaseBuilder.hxx \
+       SALOMEDSImpl_UseCaseIterator.hxx
+
+libSalomeDSImpl_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSalomeDSImpl_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSalomeDSImpl_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = testDS
+testDS_SOURCES  = testDS.cxx
+testDS_CPPFLAGS = $(COMMON_CPPFLAGS)
+testDS_LDADD    = libSalomeDSImpl.la $(COMMON_LIBS)
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.cxx
new file mode 100644 (file)
index 0000000..1eea12d
--- /dev/null
@@ -0,0 +1,765 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDSImpl_AttributeParameter.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeParameter.hxx"
+#include <Standard_Failure.hxx>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <strstream>
+
+using namespace std;
+
+
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeParameter, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeParameter, SALOMEDSImpl_GenericAttribute )
+
+
+// Purpose: Each character in the string is replaced by 3 characters: '%' and hex number 
+//          of the character (2 characters)
+string convertString(const string& S)
+{
+  int length = S.size();
+  const char *s = S.c_str();
+  char *c = new char[3], *buffer = new char[length*3+1];
+  buffer[length*3] = (char)0;
+  for(int i = 0, pos = 0; i<length; i++, pos+=3) {
+    int val = (int)s[i];
+    buffer[pos] = '%';
+    sprintf(c, "%x", val);
+    buffer[pos+1] = c[0]; 
+    buffer[pos+2] = c[1];
+  }
+
+  string RS(buffer); 
+  delete c;
+  delete buffer;
+  return RS;
+}
+
+//Restors a string converted by the function convertString
+string restoreString(const string& S)
+{
+  int length = S.size();
+  char *c = new char[3], *buffer = new char[length/3+1];
+  buffer[length/3] = (char)0;
+  const char *s = S.c_str();
+  for(int i = 0, pos = 0; i<length; i+=3, pos++) {
+    c[0] = s[i+1];
+    c[1] = s[i+2];
+    c[2] = (char)0;
+    int val = strtol(c, NULL, 16);
+    buffer[pos] = (char)val;
+  }
+
+  string RS(buffer); 
+  delete c;
+  delete buffer;
+  return RS;
+}
+
+//=======================================================================
+/*!
+ * Function : GetID
+ * Purpose  : Returns GUID of the attribute
+ */
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeParameter::GetID ()
+{
+  static Standard_GUID ParemeterID ("BA75F3A1-E40B-46b8-8D24-B1D3C3BB1A8C");
+  return ParemeterID;
+}   
+
+//=======================================================================
+/*!
+ * Function : Set
+ * Purpose  : Adds an attribute to the label
+ */
+//=======================================================================
+Handle(SALOMEDSImpl_AttributeParameter) SALOMEDSImpl_AttributeParameter::Set (const TDF_Label& L) 
+{
+  Handle(SALOMEDSImpl_AttributeParameter) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeParameter::GetID(), A)) {
+    A = new  SALOMEDSImpl_AttributeParameter(); 
+    L.AddAttribute(A);
+  }
+
+  return A;
+}
+
+//=======================================================================
+/*!
+ * Function : SetInt
+ * Purpose  : Associates a integer value with the ID
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::SetInt(const string& theID, const int& theValue)
+{
+  CheckLocked();
+
+  Backup();
+
+  _ints[theID] = theValue;
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetInt
+ * Purpose  : Returns a int value associated with the given ID
+ */
+//=======================================================================
+int SALOMEDSImpl_AttributeParameter::GetInt(const string& theID)
+{
+  if(!IsSet(theID, PT_INTEGER)) Standard_Failure::Raise("Invalid ID");
+  return _ints[theID];
+}
+
+//=======================================================================
+/*!
+ * Function : SetReal
+ * Purpose  : Associates a double value with the ID
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::SetReal(const string& theID, const double& theValue)
+{
+  CheckLocked();
+
+  Backup();
+
+  _reals[theID] = theValue;
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetReal
+ * Purpose  : Returns a double value associated with the given ID
+ */
+//=======================================================================
+double SALOMEDSImpl_AttributeParameter::GetReal(const string& theID)
+{
+  if(!IsSet(theID, PT_REAL)) Standard_Failure::Raise("Invalid ID");
+  return _reals[theID];
+}
+
+//=======================================================================
+/*!
+ * Function : SetString
+ * Purpose  : Associates a string with the ID
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::SetString(const string& theID, const string& theValue)
+{
+  CheckLocked();
+
+  Backup();
+
+  _strings[theID] = theValue;
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetString
+ * Purpose  : Returns a string associated with the given ID
+ */
+//=======================================================================
+string SALOMEDSImpl_AttributeParameter::GetString(const string& theID)
+{
+  if(!IsSet(theID, PT_STRING)) Standard_Failure::Raise("Invalid ID");
+  return _strings[theID];
+}
+
+//=======================================================================
+/*!
+ * Function : SetBool
+ * Purpose  : Associates a bool value with the ID
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::SetBool(const string& theID, const bool& theValue)
+{
+  CheckLocked();
+
+  Backup();
+
+  _bools[theID] = theValue;
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetBool
+ * Purpose  : Returns a bool value associated with the ID
+ */
+//=======================================================================
+bool SALOMEDSImpl_AttributeParameter::GetBool(const string& theID)
+{
+  if(!IsSet(theID, PT_BOOLEAN)) Standard_Failure::Raise("Invalid ID");
+  return _bools[theID];
+}
+
+//=======================================================================
+/*!
+ * Function : SetRealArray
+ * Purpose  : Associates an array of double values with the given ID
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::SetRealArray(const string& theID, const vector<double>& theArray)
+{
+  CheckLocked();
+
+  Backup();
+
+  _realarrays[theID] = theArray;
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetRealArray
+ * Purpose  : Returns double values associated with the ID
+ */
+//=======================================================================
+vector<double> SALOMEDSImpl_AttributeParameter::GetRealArray(const string& theID)
+{
+  if(!IsSet(theID, PT_REALARRAY)) Standard_Failure::Raise("Invalid ID");
+  return _realarrays[theID];
+}
+
+//=======================================================================
+/*!
+ * Function : SetIntArray
+ * Purpose  : Associates an array of int values with the given ID
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::SetIntArray(const string& theID, const vector<int>& theArray)
+{
+  CheckLocked();
+
+  Backup();
+
+  _intarrays[theID] = theArray;
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetIntArray
+ * Purpose  : Returns int values associated with the ID
+ */
+//=======================================================================
+vector<int> SALOMEDSImpl_AttributeParameter::GetIntArray(const string& theID)
+{
+  if(!IsSet(theID, PT_INTARRAY)) Standard_Failure::Raise("Invalid ID");
+  return _intarrays[theID];
+}
+
+//=======================================================================
+/*!
+ * Function : SetStrArray
+ * Purpose  : Associates an array of string values with the given ID
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::SetStrArray(const string& theID, const vector<string>& theArray)
+{
+  CheckLocked();
+
+  Backup();
+
+  _strarrays[theID] = theArray;
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetStrArray
+ * Purpose  : Returns string values associated with the ID
+ */
+//=======================================================================
+vector<string> SALOMEDSImpl_AttributeParameter::GetStrArray(const string& theID)
+{
+  if(!IsSet(theID, PT_STRARRAY)) Standard_Failure::Raise("Invalid ID");
+  return _strarrays[theID];
+}
+
+//=======================================================================
+/*!
+ * Function : IsSet
+ * Purpose  : Returns true if for the ID of given type was assigned \n
+ *            a value in the attribute
+ */
+//=======================================================================
+bool SALOMEDSImpl_AttributeParameter::IsSet(const string& theID, const Parameter_Types theType)
+{
+  switch(theType) {
+  case PT_INTEGER: {
+    if(_ints.find(theID) != _ints.end()) return true;
+    break;
+  }
+  case PT_REAL: {
+    if(_reals.find(theID) != _reals.end()) return true;
+    break;
+  }
+  case PT_BOOLEAN: {
+    if(_bools.find(theID) != _bools.end()) return true;
+    break;
+  }
+  case PT_STRING: {
+    if(_strings.find(theID) != _strings.end()) return true;
+    break;
+  }
+  case PT_REALARRAY: {
+    if(_realarrays.find(theID) != _realarrays.end()) return true;
+    break;
+  }
+  case PT_INTARRAY: {
+    if(_intarrays.find(theID) != _intarrays.end()) return true;
+    break;
+  }
+  case PT_STRARRAY: {
+    if(_strarrays.find(theID) != _strarrays.end()) return true;
+    break;
+  }
+  default: return false;
+  }
+
+  return false;
+}
+
+//=======================================================================
+/*!
+ * Function : RemoveID
+ * Purpose  : Removes a parameter with given ID
+ */
+//=======================================================================
+bool SALOMEDSImpl_AttributeParameter::RemoveID(const string& theID, const Parameter_Types theType)
+{
+  Backup();
+  SetModifyFlag(); 
+
+  switch(theType) {
+  case PT_INTEGER: {
+    if(_ints.erase(theID)) return true;
+    break;
+  }
+  case PT_REAL: {
+    if(_reals.erase(theID)) return true;
+    break;
+  }
+  case PT_BOOLEAN: {
+    if(_bools.erase(theID)) return true;
+    break;
+  }
+  case PT_STRING: {
+    if(_strings.erase(theID)) return true;
+    break;
+  }
+  case PT_REALARRAY: {
+    if(_realarrays.erase(theID)) return true;
+    break;
+  }
+  case PT_INTARRAY: {
+    if(_intarrays.erase(theID)) return true;
+    break;
+  }
+  case PT_STRARRAY: {
+    if(_strarrays.erase(theID)) return true;
+    break;
+  }
+  default: return false;
+  }
+
+
+  return false;
+}
+
+
+//=======================================================================
+/*!
+ * Function : GetFather
+ * Purpose  : Returns a father attribute for this attribute
+ */
+//=======================================================================
+Handle(SALOMEDSImpl_AttributeParameter) SALOMEDSImpl_AttributeParameter::GetFather()
+{
+  Handle(SALOMEDSImpl_AttributeParameter) aFather;
+  TDF_Label L = Label();
+  if(L.IsRoot()) return aFather;
+
+  while(!L.IsRoot()) {
+    L = L.Father();
+    if(L.FindAttribute(SALOMEDSImpl_AttributeParameter::GetID(), aFather)) break; 
+  }
+
+  return aFather;
+}
+
+//=======================================================================
+/*!
+ * Function : HasFather
+ * Purpose  : Returns True if the attribute has a father attribute
+ */
+//=======================================================================
+bool SALOMEDSImpl_AttributeParameter::HasFather()
+{
+  TDF_Label L = Label();
+  if(L.IsRoot()) return false;
+  while(!L.IsRoot()) {
+    L = L.Father();
+    if(L.IsAttribute(SALOMEDSImpl_AttributeParameter::GetID())) return true; 
+  }
+
+  return false;
+}
+
+//=======================================================================
+/*!
+ * Function : IsRoot
+ * Purpose  : Returns True is the attribute is highest in an hierachy
+ */
+//=======================================================================
+bool SALOMEDSImpl_AttributeParameter::IsRoot()
+{
+  return ((HasFather())?false:true);
+}           
+
+//=======================================================================
+/*!
+ * Function : Clear
+ * Purpose  : Clears the content of the attribute
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::Clear()
+{
+  Backup();
+
+  _ints.clear();
+  _reals.clear();
+  _bools.clear();
+  _strings.clear();
+  _realarrays.clear();
+  _intarrays.clear();
+  _strarrays.clear();
+
+  SetModifyFlag(); 
+}
+
+//=======================================================================
+/*!
+ * Function : GetIDs
+ * Purpose  : Returns an array of all ID's of the given type
+ */
+//=======================================================================
+vector<string> SALOMEDSImpl_AttributeParameter::GetIDs(const Parameter_Types theType)
+{
+  
+  vector<string> anArray;
+  int i = 0;
+
+  switch(theType) {
+  case PT_INTEGER: {
+    if(_ints.size()) {
+      anArray.resize(_ints.size());
+      for(map<string,int>::const_iterator p = _ints.begin(); p != _ints.end(); p++, i++) 
+       anArray[i] =  p->first;
+    }
+    break;
+  }
+  case PT_REAL: {
+    if(_reals.size()) {
+      anArray.resize(_reals.size());
+      for(map<string,double>::const_iterator p = _reals.begin(); p != _reals.end(); p++, i++) 
+       anArray[i] = p->first;
+    }
+    break;
+  }
+  case PT_BOOLEAN: {
+    if(_bools.size()) {
+      anArray.resize(_bools.size());
+      for(map<string,bool>::const_iterator p = _bools.begin(); p != _bools.end(); p++, i++) 
+       anArray[i] = p->first;
+    }
+    break;
+  }
+  case PT_STRING: {
+    if(_strings.size()) {
+      anArray.resize(_strings.size());
+      for(map<string,string>::const_iterator p = _strings.begin(); p!= _strings.end(); p++) 
+       anArray[i] = p->first;
+    }
+    break;
+  }
+  case PT_REALARRAY: {
+    if(_realarrays.size()) {
+      anArray.resize(_realarrays.size());
+      for(map< string, vector<double> >::const_iterator p = _realarrays.begin(); p!= _realarrays.end(); p++) 
+       anArray[i] = p->first;
+    }
+    break;
+  }
+  case PT_INTARRAY: {
+    if(_intarrays.size()) {
+      anArray.resize(_intarrays.size());
+      for(map< string, vector<int> >::const_iterator p = _intarrays.begin(); p!= _intarrays.end(); p++) 
+       anArray[i] = p->first;
+    }
+    break;
+  }
+  case PT_STRARRAY: {
+    if(_strarrays.size()) {
+      anArray.resize(_strarrays.size());
+      for(map< string, vector<string> >::const_iterator p = _strarrays.begin(); p!= _strarrays.end(); p++) 
+       anArray[i] = p->first;
+    }
+    break;
+  }
+  default: return anArray;
+  }
+
+  return anArray;
+}
+
+//=======================================================================
+/*!
+ * Function : ID
+ * Purpose  : Rteurns an GUID of the attribute
+ */
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeParameter::ID () const { return GetID(); } 
+
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeParameter::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeParameter(); 
+}
+
+//=======================================================================
+/*!
+ * Function : Restore
+ * Purpose  : Restors the content of the attribute from another
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Handle(SALOMEDSImpl_AttributeParameter) A = Handle(SALOMEDSImpl_AttributeParameter)::DownCast (with);
+  _ints.clear();
+  _reals.clear();
+  _bools.clear();
+  _strings.clear();
+  _realarrays.clear();
+  _intarrays.clear();
+  _strarrays.clear();
+  
+  for(map<string,int>::const_iterator p = A->_ints.begin(); p!= A->_ints.end(); p++) _ints[p->first] = p->second;
+  for(map<string,double>::const_iterator p = A->_reals.begin(); p!= A->_reals.end(); p++) _reals[p->first] = p->second;
+  for(map<string,bool>::const_iterator p = A->_bools.begin(); p!= A->_bools.end(); p++) _bools[p->first] = p->second;
+  for(map<string,string>::const_iterator p = A->_strings.begin(); p!= A->_strings.end(); p++) 
+    _strings[p->first] = p->second;
+  for(map< string,vector<double> >::const_iterator p = A->_realarrays.begin(); p!= A->_realarrays.end(); p++) 
+    _realarrays[p->first] = p->second;  
+  for(map< string,vector<int> >::const_iterator p = A->_intarrays.begin(); p!= A->_intarrays.end(); p++) 
+    _intarrays[p->first] = p->second;  
+  for(map< string,vector<string> >::const_iterator p = A->_strarrays.begin(); p!= A->_strarrays.end(); p++) 
+    _strarrays[p->first] = p->second; 
+}
+
+//=======================================================================
+/*!
+ * Function : Paste
+ * Purpose  : Pastes the content of attribute to another
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::Paste (const Handle(TDF_Attribute)& into,
+                                            const Handle(TDF_RelocationTable)& RT) const
+{
+  into->Restore(this);
+}
+
+//=======================================================================
+/*!
+ * Function : Save
+ * Purpose  : Saves a content of the attribute as a string
+ */
+//=======================================================================
+TCollection_AsciiString SALOMEDSImpl_AttributeParameter::Save() 
+{ 
+  ostrstream buffer;
+  char *tmpBuffer = new char[255];
+
+  buffer << _ints.size() << " ";
+
+  for(map<string,int>::const_iterator p = _ints.begin(); p != _ints.end(); p++) {
+    buffer << convertString(p->first) << " " << p->second << " ";
+  }
+
+  buffer << _reals.size() << " ";
+  for(map<string,double>::const_iterator p =_reals.begin(); p != _reals.end(); p++) {
+    sprintf(tmpBuffer, "%.64e", p->second);
+    buffer << convertString(p->first) << " " << tmpBuffer << " ";
+  }
+
+  buffer << _bools.size() << " ";
+  for(map<string,bool>::const_iterator p = _bools.begin(); p != _bools.end(); p++) {
+     buffer << convertString(p->first) << " " << p->second << " ";
+  }
+
+  buffer << _strings.size() << " ";
+  for(map<string,string>::const_iterator p = _strings.begin(); p != _strings.end(); p++) {
+    buffer << convertString(p->first) << " " <<  convertString(p->second) << " ";
+  }
+
+  buffer << _realarrays.size() << " ";
+  for(map< string,vector<double> >::const_iterator p = _realarrays.begin(); p != _realarrays.end(); p++) {
+    vector<double> v(p->second);
+    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size());
+    buffer << tmpBuffer;
+    for(int i = 0; i<v.size(); i++) {
+      sprintf(tmpBuffer, " %.64e ", v[i]);
+      buffer << tmpBuffer;
+    }
+  }
+
+  buffer << _intarrays.size() << " ";
+  for(map< string,vector<int> >::const_iterator p = _intarrays.begin(); p != _intarrays.end(); p++) {
+    vector<int> v(p->second);
+    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size());
+    buffer << tmpBuffer;
+    for(int i = 0; i<v.size(); i++) {
+      sprintf(tmpBuffer, " %d ", v[i]);
+      buffer << tmpBuffer;
+    }
+  }
+
+  buffer << _strarrays.size() << " ";
+  for(map< string,vector<string> >::const_iterator p = _strarrays.begin(); p != _strarrays.end(); p++) {
+    vector<string> v(p->second);
+    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size());
+    buffer << tmpBuffer;
+    for(int i = 0; i<v.size(); i++) {
+      buffer << " " << convertString(v[i]) << " ";
+    }
+  }
+
+  delete tmpBuffer;
+
+  TCollection_AsciiString AS((char*)buffer.rdbuf()->str());
+
+  return AS; 
+}
+
+//=======================================================================
+/*!
+ * Function : Load
+ * Purpose  : Restores the attribute from the string
+ */
+//=======================================================================
+void SALOMEDSImpl_AttributeParameter::Load(const TCollection_AsciiString& theValue) 
+{ 
+  Backup();
+
+  _ints.clear();
+  _reals.clear();
+  _bools.clear();
+  _strings.clear();
+  _realarrays.clear();
+  _intarrays.clear();
+
+  istrstream buffer(theValue.ToCString(), strlen(theValue.ToCString()));
+
+  int size, val, ival;
+  double val2;
+  string s, id;
+
+  buffer >> size;
+  for(int i = 1; i<=size; i++) {
+    buffer >> id >> val;
+    _ints[restoreString(id)] = val;
+  }
+
+  buffer >> size;
+  for(int i = 1; i<=size; i++) {
+    buffer >> id >> val2;
+    _reals[restoreString(id)] = val2;
+  }
+
+  buffer >> size;
+  for(int i = 1; i<=size; i++) {
+    buffer >> id >> val;
+    _bools[restoreString(id)] = val;
+  }
+
+  buffer >> size;
+  for(int i = 1; i<=size; i++) {
+    buffer >> id >> s;
+    _strings[restoreString(id)] = restoreString(s);
+  }
+  
+  buffer >> size;
+  for(int i = 1; i<=size; i++) {
+    buffer >> id >> val;
+    vector<double> v;
+    v.resize(val);
+    for(int j = 0; j<val; j++) {
+      buffer >> val2;
+      v[j] = val2;
+    }
+    _realarrays[restoreString(id)] = v;
+  }
+
+  buffer >> size;
+  for(int i = 1; i<=size; i++) {
+    buffer >> id >> val;
+    vector<int> v;
+    v.resize(val);
+    for(int j = 0; j<val; j++) {
+      buffer >> ival;
+      v[j] = ival;
+    }
+    _intarrays[restoreString(id)] = v;
+  }
+  
+  buffer >> size;
+  for(int i = 1; i<=size; i++) {
+    buffer >> id >> val;
+    vector<string> v;
+    v.resize(val);
+    for(int j = 0; j<val; j++) {
+      buffer >> s;
+      v[j] = restoreString(s);
+    }
+    _strarrays[restoreString(id)] = v;
+  }
+} 
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeParameter.hxx
new file mode 100644 (file)
index 0000000..8ac7116
--- /dev/null
@@ -0,0 +1,119 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SALOMEDSImpl_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeParameter_HeaderFile
+#define _SALOMEDSImpl_AttributeParameter_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TDF_Label.hxx> 
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+#include <vector>
+#include <string>
+#include <map>
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeParameter, SALOMEDSImpl_GenericAttribute )
+
+enum Parameter_Types {PT_INTEGER, PT_REAL, PT_BOOLEAN, PT_STRING, PT_REALARRAY, PT_INTARRAY, PT_STRARRAY};
+
+/*!
+ Class: SALOMEDSImpl_AttributeParameter
+ Description : AttributeParameter is a universal container of basic types 
+*/
+
+class SALOMEDSImpl_AttributeParameter : public SALOMEDSImpl_GenericAttribute 
+{
+
+private:
+  
+  std::map<std::string, int>                     _ints;
+  std::map<std::string, double>                  _reals;
+  std::map<std::string, std::string>             _strings;
+  std::map<std::string, bool>                    _bools;
+  std::map< std::string, vector<double> >        _realarrays;
+  std::map< std::string, vector<int> >           _intarrays;
+  std::map< std::string, vector<std::string> >   _strarrays;
+
+public:
+  Standard_EXPORT static const Standard_GUID& GetID() ;
+
+  Standard_EXPORT  SALOMEDSImpl_AttributeParameter():SALOMEDSImpl_GenericAttribute("AttributeParameter") {}
+  Standard_EXPORT  static Handle(SALOMEDSImpl_AttributeParameter) Set (const TDF_Label& L);
+
+
+  Standard_EXPORT void SetInt(const std::string& theID, const int& theValue);
+  Standard_EXPORT int GetInt(const std::string& theID);
+
+  Standard_EXPORT void SetReal(const std::string& theID, const double& theValue);
+  Standard_EXPORT double GetReal(const std::string& theID);
+
+  Standard_EXPORT void SetString(const std::string& theID, const std::string& theValue);
+  Standard_EXPORT std::string GetString(const std::string& theID);
+  
+  Standard_EXPORT void SetBool(const std::string& theID, const bool& theValue);
+  Standard_EXPORT bool GetBool(const std::string& theID);
+  
+  Standard_EXPORT void SetRealArray(const std::string& theID, const std::vector<double>& theArray);
+  Standard_EXPORT std::vector<double> GetRealArray(const std::string& theID);
+  
+  Standard_EXPORT void SetIntArray(const std::string& theID, const std::vector<int>& theArray);
+  Standard_EXPORT std::vector<int> GetIntArray(const std::string& theID);
+
+  Standard_EXPORT void SetStrArray(const std::string& theID, const std::vector<std::string>& theArray);
+  Standard_EXPORT std::vector<std::string> GetStrArray(const std::string& theID);
+
+  Standard_EXPORT bool IsSet(const std::string& theID, const Parameter_Types theType);
+  
+  Standard_EXPORT bool RemoveID(const std::string& theID, const Parameter_Types theType);
+
+  Standard_EXPORT Handle(SALOMEDSImpl_AttributeParameter) GetFather();
+  Standard_EXPORT bool HasFather();
+  Standard_EXPORT bool IsRoot();
+
+  Standard_EXPORT std::vector<std::string> GetIDs(const Parameter_Types theType);
+
+  Standard_EXPORT void Clear();
+
+  Standard_EXPORT  virtual TCollection_AsciiString Save();
+  Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue); 
+
+  Standard_EXPORT  const Standard_GUID& ID() const;
+  Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+  Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+  Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+  
+  Standard_EXPORT ~SALOMEDSImpl_AttributeParameter() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeParameter )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.cxx
new file mode 100644 (file)
index 0000000..b632481
--- /dev/null
@@ -0,0 +1,361 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#include "SALOMEDSImpl_IParameters.hxx"
+#include <utilities.h>
+
+#include <TCollection_AsciiString.hxx>
+
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_ChildIterator.hxx"
+
+using namespace std;
+
+#define _AP_LISTS_LIST_ "AP_LISTS_LIST"
+#define _AP_ENTRIES_LIST_ "AP_ENTRIES_LIST"
+#define _AP_PROPERTIES_LIST_ "AP_PROPERTIES_LIST"
+#define _AP_DUMP_PYTHON_ "AP_DUMP_PYTHON"
+
+/*!
+  Constructor
+*/
+SALOMEDSImpl_IParameters::SALOMEDSImpl_IParameters(const Handle(SALOMEDSImpl_AttributeParameter)& ap)
+{
+  if(ap.IsNull()) return;
+  _ap = ap;
+  Handle(SALOMEDSImpl_SObject) so = _ap->GetSObject();
+  _study = so->GetStudy();
+}
+
+SALOMEDSImpl_IParameters::~SALOMEDSImpl_IParameters()
+{
+  _compNames.clear();
+}
+
+int SALOMEDSImpl_IParameters::append(const string& listName, const string& value)
+{
+  if(_ap.IsNull()) return -1;
+  vector<string> v;
+  if(!_ap->IsSet(listName, PT_STRARRAY)) {
+    if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) _ap->SetStrArray(_AP_LISTS_LIST_, v);
+    if(listName != _AP_ENTRIES_LIST_ && 
+       listName != _AP_PROPERTIES_LIST_) {
+      append(_AP_LISTS_LIST_, listName);
+    }
+    _ap->SetStrArray(listName, v);
+  }
+  v = _ap->GetStrArray(listName);
+  v.push_back(value);
+  _ap->SetStrArray(listName, v);
+  return (v.size()-1);
+}
+
+int SALOMEDSImpl_IParameters::nbValues(const string& listName)
+{
+  if(_ap.IsNull()) return -1;
+  if(!_ap->IsSet(listName, PT_STRARRAY)) return 0;
+  vector<string> v = _ap->GetStrArray(listName);
+  return v.size();
+}
+
+vector<string> SALOMEDSImpl_IParameters::getValues(const string& listName)
+{
+  vector<string> v;
+  if(_ap.IsNull()) return v;
+  if(!_ap->IsSet(listName, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(listName);
+}
+
+
+string SALOMEDSImpl_IParameters::getValue(const string& listName, int index)
+{
+  if(_ap.IsNull()) return "";
+  if(!_ap->IsSet(listName, PT_STRARRAY)) return "";
+  vector<string> v = _ap->GetStrArray(listName);
+  if(index >= v.size()) return ""; 
+  return v[index];
+}
+
+vector<string> SALOMEDSImpl_IParameters::getLists()
+{
+  vector<string> v;
+  if(!_ap->IsSet(_AP_LISTS_LIST_, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(_AP_LISTS_LIST_);
+}
+
+void SALOMEDSImpl_IParameters::setParameter(const string& entry, const string& parameterName, const string& value)
+{
+  if(_ap.IsNull()) return;
+  vector<string> v;
+  if(!_ap->IsSet(entry, PT_STRARRAY)) {
+    append(_AP_ENTRIES_LIST_, entry); //Add the entry to the internal list of entries
+    _ap->SetStrArray(entry, v);
+  }
+  v = _ap->GetStrArray(entry);
+  v.push_back(parameterName);
+  v.push_back(value);
+  _ap->SetStrArray(entry, v);
+}
+
+
+string SALOMEDSImpl_IParameters::getParameter(const string& entry, const string& parameterName)
+{
+  if(_ap.IsNull()) return "";
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return "";
+  vector<string> v = _ap->GetStrArray(entry);
+  int length = v.size();
+  for(int i = 0; i<length; i+=1) {
+    if(v[i] == parameterName) return v[i+1];
+  }
+  return "";
+}
+
+
+vector<string> SALOMEDSImpl_IParameters::getAllParameterNames(const string& entry)
+{
+  vector<string> v, names;
+  if(_ap.IsNull()) return v; 
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return v;
+  v = _ap->GetStrArray(entry);
+  int length = v.size();
+  for(int i = 0; i<length; i+=2) {
+    names.push_back(v[i]);
+  }
+  return names;
+}
+
+vector<string> SALOMEDSImpl_IParameters::getAllParameterValues(const string& entry)
+{
+  vector<string> v, values;
+  if(_ap.IsNull()) return v; 
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return v;
+  v = _ap->GetStrArray(entry);
+  int length = v.size();
+  for(int i = 1; i<length; i+=2) {
+    values.push_back(v[i]);
+  }
+  return values; 
+}
+
+int SALOMEDSImpl_IParameters::getNbParameters(const string& entry)
+{
+  if(_ap.IsNull()) return -1;
+  if(!_ap->IsSet(entry, PT_STRARRAY)) return -1;
+  return  _ap->GetStrArray(entry).size()/2;
+}
+
+vector<string> SALOMEDSImpl_IParameters::getEntries()
+{
+  vector<string> v;
+  if(_ap.IsNull()) return v;
+  if(!_ap->IsSet(_AP_ENTRIES_LIST_, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(_AP_ENTRIES_LIST_);
+}
+
+void SALOMEDSImpl_IParameters::setProperty(const string& name, const std::string& value)
+{
+  if(_ap.IsNull()) return;
+  if(!_ap->IsSet(name, PT_STRING)) {
+    append(_AP_PROPERTIES_LIST_, name); //Add the property to the internal list of properties
+  }
+  _ap->SetString(name, value);
+}
+
+string SALOMEDSImpl_IParameters::getProperty(const string& name)
+{
+  if(_ap.IsNull()) return "";
+  if(!_ap->IsSet(name, PT_STRING)) return "";
+  return _ap->GetString(name);
+}
+
+vector<string> SALOMEDSImpl_IParameters::getProperties()
+{
+  vector<string> v;
+  if(_ap.IsNull()) return v;
+  if(!_ap->IsSet(_AP_PROPERTIES_LIST_, PT_STRARRAY)) return v;
+  return _ap->GetStrArray(_AP_PROPERTIES_LIST_);
+}
+
+string SALOMEDSImpl_IParameters::decodeEntry(const string& entry)
+{
+  if(!_study) return entry;
+  int pos = entry.rfind("_");
+  if(pos < 0 || pos >= entry.length()) return entry;
+
+  string compName(entry, 0, pos), compID, tail(entry, pos+1, entry.length()-1);
+  
+  if(_compNames.find(compName) == _compNames.end()) {
+    Handle(SALOMEDSImpl_SObject) so = _study->FindComponent((char*)compName.c_str());
+    if(so.IsNull()) return entry;
+    compID = so->GetID().ToCString();
+    _compNames[compName] = compID;
+  }
+  else compID = _compNames[compName];
+  string newEntry(compID);
+  newEntry += (":"+tail);
+  
+  return newEntry;
+}
+
+
+bool SALOMEDSImpl_IParameters::isDumpPython(const Handle(SALOMEDSImpl_Study)& study, const string& theID)
+{
+  string anID;
+  if(theID == "") anID = getDefaultVisualComponent();
+  else anID = theID;
+
+  Handle(SALOMEDSImpl_AttributeParameter) ap = study->GetCommonParameters((char*)anID.c_str(), 0);
+  if(ap.IsNull()) return false;
+  if(!ap->IsSet(_AP_DUMP_PYTHON_, PT_BOOLEAN)) return false;
+  return (bool)ap->GetBool(_AP_DUMP_PYTHON_);
+}
+
+
+int SALOMEDSImpl_IParameters::getLastSavePoint(const Handle(SALOMEDSImpl_Study)& study, const string& theID)
+{
+  string anID;
+  if(theID == "") anID = getDefaultVisualComponent();
+  else anID = theID;
+
+
+  Handle(SALOMEDSImpl_SObject) so = study->FindComponent((char*)anID.c_str());
+  if(so.IsNull()) return -1;
+
+  Handle(SALOMEDSImpl_StudyBuilder) builder = study->NewBuilder();
+  Handle(SALOMEDSImpl_ChildIterator) anIter ( study->NewChildIterator( so ) );
+  int tag = -1;
+  for(; anIter->More(); anIter->Next())
+  {
+    Handle(SALOMEDSImpl_SObject) val( anIter->Value() );
+    Handle(SALOMEDSImpl_GenericAttribute) genAttr;
+    if(builder->FindAttribute(val, genAttr, "AttributeParameter")) tag = val->Tag();
+  }
+
+  return tag;
+}
+
+
+
+string SALOMEDSImpl_IParameters::getStudyScript(const Handle(SALOMEDSImpl_Study)& study, int savePoint, const std::string& theID)
+{
+  string anID;
+  if(theID == "") anID = getDefaultVisualComponent();
+  else anID = theID;
+
+  Handle(SALOMEDSImpl_AttributeParameter) ap = study->GetCommonParameters((char*)anID.c_str(), savePoint);
+  SALOMEDSImpl_IParameters ip(ap);
+
+  string dump("");
+
+  dump += "import iparameters\n";
+  dump += "ipar = iparameters.IParameters(salome.myStudy.GetCommonParameters(\""+anID+"\", 1))\n\n";
+  
+  
+  vector<string> v = ip.getProperties();
+  if(v.size() > 0) {
+    dump += "#Set up visual properties:\n";
+    for(int i = 0; i<v.size(); i++) {
+      string prp = ip.getProperty(v[i]);
+      dump += "ipar.setProperty(\""+v[i]+"\", \""+prp+"\")\n";
+    }
+  }
+
+  v = ip.getLists();
+  if(v.size() > 0) {
+    dump += "#Set up lists:\n";
+    for(int i = 0; i<v.size(); i++) {
+      vector<string> lst = ip.getValues(v[i]);
+      dump += "# fill list "+v[i]+"\n";
+      for(int j = 0; j < lst.size(); j++)
+       dump += "ipar.append(\""+v[i]+"\", \""+lst[j]+"\")\n";
+    }
+  }
+
+  return dump;
+}
+
+string SALOMEDSImpl_IParameters::getDefaultScript(const Handle(SALOMEDSImpl_Study)& study, 
+                                             const string& moduleName, 
+                                             const string& shift, 
+                                             const string& theID)
+{
+  string anID;
+  if(theID == "") anID = getDefaultVisualComponent();
+  else anID = theID;
+
+  string dump("");
+
+  int savePoint = SALOMEDSImpl_IParameters::getLastSavePoint(study, anID);
+  if(savePoint < 0) return dump;
+  SALOMEDSImpl_IParameters ip = SALOMEDSImpl_IParameters(study->GetCommonParameters(anID.c_str(), savePoint));
+  if(!isDumpPython(study)) return dump;
+
+  Handle(SALOMEDSImpl_AttributeParameter) ap = study->GetModuleParameters(anID.c_str(), moduleName.c_str(), savePoint);
+  ip = SALOMEDSImpl_IParameters(ap);
+
+
+  dump += shift +"import iparameters\n";
+  dump += shift + "ipar = iparameters.IParameters(theStudy.GetModuleParameters(\""+anID+"\", \""+moduleName+"\", 1))\n\n";
+  
+  vector<string> v = ip.getProperties();
+  if(v.size() > 0) {
+    dump += shift +"#Set up visual properties:\n";
+    for(int i = 0; i<v.size(); i++) {
+      string prp = ip.getProperty(v[i]);
+      dump += shift +"ipar.setProperty(\""+v[i]+"\", \""+prp+"\")\n";
+    }
+  }
+
+  v = ip.getLists();
+  if(v.size() > 0) {
+    dump +=  shift +"#Set up lists:\n";
+    for(int i = 0; i<v.size(); i++) {
+      vector<string> lst = ip.getValues(v[i]);
+      dump += shift +"# fill list "+v[i]+"\n";
+      for(int j = 0; j < lst.size(); j++)
+       dump += shift +"ipar.append(\""+v[i]+"\", \""+lst[j]+"\")\n";
+    }
+  }
+
+  v = ip.getEntries();
+  if(v.size() > 0) {
+    dump += shift + "#Set up entries:\n";
+    for(int i = 0; i<v.size(); i++) {
+      vector<string> names = ip.getAllParameterNames(v[i]);
+      vector<string> values = ip.getAllParameterValues(v[i]);
+      string decodedEntry = ip.decodeEntry(v[i]);
+      Handle(SALOMEDSImpl_SObject) so = study->FindObjectID((char*)decodedEntry.c_str());
+      string so_name("");
+      if(!so.IsNull()) so_name = so->GetName().ToCString();
+      dump += shift + "# set up entry " + v[i] +" ("+so_name+")" + " parameters" + "\n";
+      for(int j = 0; j < names.size() && j < values.size(); j++)
+       dump += shift + "ipar.setParameter(\"" + v[i] + "\", \"" + names[j] + "\", \"" + values[j] + "\")\n";
+    }
+  }
+  
+  return dump;  
+}
+
+
+string SALOMEDSImpl_IParameters::getDefaultVisualComponent()
+{
+  return "Interface Applicative";
+}
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_IParameters.hxx
new file mode 100644 (file)
index 0000000..8965e8f
--- /dev/null
@@ -0,0 +1,153 @@
+// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+#ifndef SALOMEDSImpl_IParameters_H
+#define SALOMEDSImpl_IParameters_H
+
+#include <string>
+#include <vector>
+#include <map>
+
+#include "SALOMEDSImpl_AttributeParameter.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+/*! 
+  Class which an interface to store the parameters of the objects
+*/
+class SALOMEDSImpl_IParameters
+{
+public:
+  SALOMEDSImpl_IParameters(const Handle(SALOMEDSImpl_AttributeParameter)& ap); 
+
+  virtual ~SALOMEDSImpl_IParameters();
+
+  /*!
+    Appends a string value to a named list. 
+    Returns a number of the added value.
+    Note: the name of the list MUST be unique
+   */
+  virtual int append(const std::string& listName, const std::string& value); 
+
+  /*!
+    Returns a number elements in the list
+   */
+  virtual int nbValues(const std::string& listName);
+
+  /*!
+    Returns a list of values in the list
+   */
+  virtual std::vector<std::string> getValues(const std::string& listName);
+
+  /*!
+    Returns a value with given %index, where %index is in range [0:nbValues-1]
+   */
+  virtual std::string getValue(const std::string& listName, int index);
+
+  /*!
+    Returns a list all entries lists
+   */
+  virtual std::vector<std::string> getLists();
+
+  /*!
+    Sets a new named parameter value for the given entry
+   */
+  virtual void setParameter(const std::string& entry, const std::string& parameterName, const std::string& value);
+
+  /*!
+    Gets a named parameter value for the given entry
+   */
+  virtual std::string getParameter(const std::string& entry, const std::string& parameterName);
+
+  /*!
+    Returns all parameter names of the given entry
+   */
+  virtual std::vector<std::string> SALOMEDSImpl_IParameters::getAllParameterNames(const std::string& entry);
+
+  /*!
+    Returns all parameter  values of the given entry
+   */
+  virtual std::vector<std::string> SALOMEDSImpl_IParameters::getAllParameterValues(const std::string& entry);
+
+  /*!
+    Returns a number of parameters of the given entry
+   */
+  virtual int getNbParameters(const std::string& entry);
+
+  /*!
+    Returns a list all entries 
+   */
+  virtual std::vector<std::string> getEntries();
+
+  /*!
+    Sets a global named property value
+   */
+  virtual void setProperty(const std::string& name, const std::string& value);
+
+  /*!
+    Gets a value of global named property
+   */
+  virtual std::string getProperty(const std::string& name);
+
+  /*!
+    Returns a list all properties 
+   */
+  virtual std::vector<std::string> getProperties();
+
+  /*!
+    Returns decoded entry that is an absolute entry
+   */
+  virtual std::string decodeEntry(const std::string& entry);
+
+
+  /*!
+    Returns whether there is the dumping visual parameters
+   */
+  static bool isDumpPython(const Handle(SALOMEDSImpl_Study)& study, const string& theID = "");  
+
+  /*!
+    Returns an ID of the last save point
+  */
+  static int getLastSavePoint(const Handle(SALOMEDSImpl_Study)& study, const std::string& theID = "");
+
+  /*!
+    Returns a Python script for the study, which sets up visual parameters
+  */
+  static std::string getStudyScript(const Handle(SALOMEDSImpl_Study)& study, int savePoint, const std::string& theID = "");
+
+  /*!
+    Returns a default Python script that set ups visual parameters for the given module
+    shift is a string that contain spaces to make valid Python script indentaion
+  */
+  static std::string getDefaultScript(const Handle(SALOMEDSImpl_Study)& study, 
+                                     const std::string& moduleName, 
+                                     const std::string& shift,
+                                     const std::string& theID = "");
+
+  /*!
+    Returns a default name of the component where the visula parameters are stored.
+  */
+  static std::string getDefaultVisualComponent();
+
+private:
+  Handle(SALOMEDSImpl_AttributeParameter) _ap;
+  Handle(SALOMEDSImpl_Study) _study;
+  std::map<std::string, std::string> _compNames;
+};
+
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.cxx
new file mode 100644 (file)
index 0000000..7b0c2e2
--- /dev/null
@@ -0,0 +1,40 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//  File   : SALOMEDSImpl_SObject.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_TMPFile.hxx"
+
+#include <Handle_Standard_Type.hxx>
+#include <Standard_Transient.hxx>
+
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_TMPFile, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_TMPFile, MMgt_TShared )
+
+SALOMEDSImpl_TMPFile::TOctet*
+SALOMEDSImpl_TMPFile
+::Data()
+{
+  return &Get(0);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_TMPFile.hxx
new file mode 100644 (file)
index 0000000..b59e168
--- /dev/null
@@ -0,0 +1,47 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef __SALOMEDSIMPL_TMPFILE_H__
+#define __SALOMEDSIMPL_TMPFILE_H__
+
+//Handle definition
+#include <MMgt_TShared.hxx>
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_TMPFile, MMgt_TShared );
+
+
+struct SALOMEDSImpl_TMPFile : public MMgt_TShared
+{
+  typedef unsigned char TOctet;
+
+  virtual size_t Size() = 0;
+
+  virtual TOctet* Data();
+
+  virtual TOctet& Get(size_t) = 0;
+
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_TMPFile );
+};
+
+
+#endif 
diff --git a/src/SALOMEDSImpl/Test/Makefile.am b/src/SALOMEDSImpl/Test/Makefile.am
new file mode 100644 (file)
index 0000000..014064c
--- /dev/null
@@ -0,0 +1,106 @@
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Paul RASCLE
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS= SALOMEDSImplTest.hxx
+
+# Scripts to be installed
+dist_salomescript_SCRIPTS = TestSALOMEDSImpl.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This directory defines the subdirectory src in the top source directory.
+RPATH=../..
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CPPUNIT_INCLUDES@ \
+       -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \
+       -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \
+       -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \
+       -I$(srcdir)/$(RPATH)/NamingService -I$(srcdir)/$(RPATH)/NamingService/Test \
+       -I$(srcdir)/$(RPATH)/Utils -I$(srcdir)/$(RPATH)/Utils/Test \
+       -I$(srcdir)/$(RPATH)/ResourcesManager \
+       -I$(srcdir)/$(RPATH)/LifeCycleCORBA \
+       -I$(srcdir)/$(RPATH)/SALOMEDSImpl \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       @CPPUNIT_LIBS@ \
+       $(RPATH)/Basics/libSALOMEBasics.la \
+       $(RPATH)/ResourcesManager/libSalomeResourcesManager.la \
+       $(RPATH)/Container/libSalomeContainer.la \
+       $(RPATH)/NamingService/libSalomeNS.la \
+       $(RPATH)/Registry/libRegistry.la \
+       $(RPATH)/Notification/libSalomeNotification.la \
+       $(RPATH)/Utils/Test/libUtilsTest.la \
+       $(RPATH)/Utils/libOpUtil.la \
+       $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la \
+       $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \
+       $(RPATH)/SALOMEDSImpl/libSalomeDSImpl.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSALOMEDSImplTest.la 
+libSALOMEDSImplTest_la_SOURCES = SALOMEDSImplTest.cxx
+libSALOMEDSImplTest_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSALOMEDSImplTest_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSALOMEDSImplTest_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestSALOMEDSImpl
+TestSALOMEDSImpl_SOURCES  = TestSALOMEDSImpl.cxx
+TestSALOMEDSImpl_CPPFLAGS = $(COMMON_CPPFLAGS)
+TestSALOMEDSImpl_LDADD    = \
+       libSALOMEDSImplTest.la ../libSalomeDSImpl.la \
+       $(RPATH)/NamingService/Test/libNamingServiceTest.la \
+       $(COMMON_LIBS)
+
diff --git a/src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx b/src/SALOMEDSImpl/Test/SALOMEDSImplTest.cxx
new file mode 100644 (file)
index 0000000..de90a0a
--- /dev/null
@@ -0,0 +1,129 @@
+// Copyright (C) 2006  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SALOMEDSImplTest.hxx"
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <vector>
+#include <cstdlib>
+#include "utilities.h"
+
+#include "SALOMEDSImpl_AttributeParameter.hxx"
+#include "SALOMEDSImpl_StudyManager.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+#include <TCollection_AsciiString.hxx>
+
+using namespace std;
+
+// ============================================================================
+/*!
+ * Set up the environment
+ */
+// ============================================================================
+
+void SALOMEDSImplTest::setUp()
+{
+  TCollection_AsciiString kernel(getenv("KERNEL_ROOT_DIR"));
+  TCollection_AsciiString subPath("/share/salome/resources");
+  TCollection_AsciiString csf_var = (kernel+subPath);
+  setenv("CSF_PluginDefaults", csf_var.ToCString(), 0);
+  setenv("CSF_SALOMEDS_ResourcesDefaults", csf_var.ToCString(), 0);
+}
+
+// ============================================================================
+/*!
+ *  - delete trace classes
+ */
+// ============================================================================
+
+void 
+SALOMEDSImplTest::tearDown()
+{
+}
+
+// ============================================================================
+/*!
+ * Check setting int value
+ */
+// ============================================================================
+void SALOMEDSImplTest::testAttributeParameter()
+{
+  Handle(SALOMEDSImpl_StudyManager) sm = new SALOMEDSImpl_StudyManager();
+  Handle(SALOMEDSImpl_Study) study = sm->NewStudy("Test");
+  Handle(SALOMEDSImpl_AttributeParameter) _ap = study->GetCommonParameters("TestComp", 0);
+
+  CPPUNIT_ASSERT(!_ap.IsNull());
+
+  _ap->SetInt("IntValue", 1);
+  CPPUNIT_ASSERT(_ap->IsSet("IntValue", PT_INTEGER));
+  CPPUNIT_ASSERT(_ap->GetInt("IntValue") == 1);
+
+  _ap->SetReal("RealValue", 1.2);
+  CPPUNIT_ASSERT(_ap->IsSet("RealValue", PT_REAL));
+  CPPUNIT_ASSERT(_ap->GetReal("RealValue") == 1.2);
+
+  _ap->SetString("StringValue", "hello");
+  CPPUNIT_ASSERT(_ap->IsSet("StringValue", PT_STRING));
+  CPPUNIT_ASSERT(_ap->GetString("StringValue") == "hello");
+
+  _ap->SetBool("BoolValue", 0);
+  CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN));
+  CPPUNIT_ASSERT(!_ap->GetBool("BoolValue"));
+
+  _ap->SetBool("BoolValue", 0);
+  CPPUNIT_ASSERT(_ap->IsSet("BoolValue", PT_BOOLEAN));
+  CPPUNIT_ASSERT(!_ap->GetBool("BoolValue"));
+
+  vector<int> intArray;
+  intArray.push_back(0);
+  intArray.push_back(1);
+
+  _ap->SetIntArray("IntArray", intArray);
+  CPPUNIT_ASSERT(_ap->IsSet("IntArray", PT_INTARRAY));
+  CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[0] == 0);
+  CPPUNIT_ASSERT(_ap->GetIntArray("IntArray")[1] == 1); 
+
+  vector<double> realArray;
+  realArray.push_back(0.0);
+  realArray.push_back(1.1);
+  
+  _ap->SetRealArray("RealArray", realArray);
+  CPPUNIT_ASSERT(_ap->IsSet("RealArray", PT_REALARRAY));
+  CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[0] == 0.0);
+  CPPUNIT_ASSERT(_ap->GetRealArray("RealArray")[1] == 1.1); 
+
+  vector<string> strArray;
+  strArray.push_back("hello");
+  strArray.push_back("world");
+  
+  _ap->SetStrArray("StrArray", strArray);
+  CPPUNIT_ASSERT(_ap->IsSet("StrArray", PT_STRARRAY));
+  CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[0] == "hello");
+  CPPUNIT_ASSERT(_ap->GetStrArray("StrArray")[1] == "world"); 
+
+}
+
+
+
diff --git a/src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx b/src/SALOMEDSImpl/Test/SALOMEDSImplTest.hxx
new file mode 100644 (file)
index 0000000..77c9e1e
--- /dev/null
@@ -0,0 +1,39 @@
+// Copyright (C) 2006  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _SALOMEDSImplTEST_HXX_
+#define _SALOMEDSImplTEST_HXX_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class SALOMEDSImplTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( SALOMEDSImplTest );
+  CPPUNIT_TEST( testAttributeParameter );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+
+  void setUp();
+  void tearDown();
+  void testAttributeParameter();
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx b/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.cxx
new file mode 100644 (file)
index 0000000..f33c545
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// 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.1 of the License.
+// 
+// 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
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// --- include all SALOMEDSImpl Test from basics until the present directory
+
+#include "SALOMEDSImplTest.hxx"
+
+// --- Registers the fixture into the 'registry'
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMEDSImplTest );
+
+// --- generic Main program from Basic/Test
+
+#include "BasicMainTest.hxx"
diff --git a/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py b/src/SALOMEDSImpl/Test/TestSALOMEDSImpl.py
new file mode 100644 (file)
index 0000000..77456b6
--- /dev/null
@@ -0,0 +1,47 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+import sys, os,signal,string,commands
+import runSalome
+import orbmodule
+import TestKiller
+
+# get SALOME environment :
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# launch CORBA naming server
+
+clt=orbmodule.client()
+
+# launch CORBA logger server
+
+myServer=runSalome.LoggerServer(args)
+myServer.run()
+clt.waitLogger("Logger")
+
+# execute Unit Test
+
+command = ['TestSALOMEDSImpl']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+# kill Test process 
+
+TestKiller.killProcess(runSalome.process_id)
diff --git a/src/SALOMELocalTrace/Makefile.am b/src/SALOMELocalTrace/Makefile.am
new file mode 100644 (file)
index 0000000..658fa22
--- /dev/null
@@ -0,0 +1,50 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume BOULANT (CSSI)
+#  Module : SALOME
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+salomeinclude_HEADERS = \
+       utilities.h \
+       LocalTraceBufferPool.hxx \
+       BaseTraceCollector.hxx
+
+lib_LTLIBRARIES = libSALOMELocalTrace.la
+
+libSALOMELocalTrace_la_SOURCES = \
+       BaseTraceCollector.cxx \
+       BaseTraceCollector.hxx \
+        LocalTraceCollector.cxx \
+       LocalTraceCollector.hxx \
+       FileTraceCollector.cxx \
+       FileTraceCollector.hxx \
+       LocalTraceBufferPool.cxx \
+       LocalTraceBufferPool.hxx
+
+libSALOMELocalTrace_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSALOMELocalTrace_la_CPPFLAGS = -I$(srcdir)/../Basics
+libSALOMELocalTrace_la_LIBADD   = ../Basics/libSALOMEBasics.la
diff --git a/src/SALOMELocalTrace/Test/Makefile.am b/src/SALOMELocalTrace/Test/Makefile.am
new file mode 100644 (file)
index 0000000..79b6fd7
--- /dev/null
@@ -0,0 +1,78 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# This directory defines the subdirectory src in the top source directory.
+SRCROOT=$(srcdir)/../..
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = SALOMELocalTraceTest.hxx
+
+# Executable scripts to be installed
+dist_salomescript_SCRIPTS = TestSALOMELocalTrace.py
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+
+lib_LTLIBRARIES = libSALOMELocalTraceTest.la
+libSALOMELocalTraceTest_la_SOURCES  = SALOMELocalTraceTest.cxx
+libSALOMELocalTraceTest_la_CPPFLAGS = \
+       @CPPUNIT_INCLUDES@ \
+       -I$(SRCROOT)/SALOMELocalTrace \
+       -I$(SRCROOT)/Basics
+
+libSALOMELocalTraceTest_la_LIBADD = \
+       @CPPUNIT_LIBS@ \
+       ../../SALOMELocalTrace/libSALOMELocalTrace.la
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestSALOMELocalTrace
+TestSALOMELocalTrace_SOURCES  = TestSALOMELocalTrace.cxx
+TestSALOMELocalTrace_CPPFLAGS = \
+       @CPPUNIT_INCLUDES@ \
+       -I$(SRCROOT)/Basics/Test
+
+TestSALOMELocalTrace_LDADD = \
+       @CPPUNIT_LIBS@ \
+       libSALOMELocalTraceTest.la \
+       ../../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../../Basics/libSALOMEBasics.la
diff --git a/src/SALOMETraceCollector/Makefile.am b/src/SALOMETraceCollector/Makefile.am
new file mode 100644 (file)
index 0000000..5beb8a7
--- /dev/null
@@ -0,0 +1,37 @@
+#  SALOMETraceCollector
+#
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#
+#  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#  File   : Makefile.am
+#  Author : Guillaume BOULANT, CSSI
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# header files  
+salomeinclude_HEADERS = \
+       SALOMETraceCollector.hxx \
+       TraceCollector_WaitForServerReadiness.hxx
+
+# Libraries targets
+lib_LTLIBRARIES = libwith_loggerTraceCollector.la
+
+libwith_loggerTraceCollector_la_SOURCES  =\
+       SALOMETraceCollector.cxx \
+       TraceCollector_WaitForServerReadiness.cxx 
+
+libwith_loggerTraceCollector_la_CPPFLAGS =\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+libwith_loggerTraceCollector_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libwith_loggerTraceCollector_la_LIBADD   = \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CORBA_LIBS@
diff --git a/src/SALOMETraceCollector/Test/Makefile.am b/src/SALOMETraceCollector/Test/Makefile.am
new file mode 100644 (file)
index 0000000..a04b771
--- /dev/null
@@ -0,0 +1,90 @@
+####################################### library
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# header files  
+salomeinclude_HEADERS= SALOMETraceCollectorTest.hxx
+
+# Scripts to be installed
+dist_salomescript_SCRIPTS = TestSALOMETraceCollector.py
+
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This directory defines the subdirectory src in the top source directory.
+RPATH=../..
+
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CPPUNIT_INCLUDES@ \
+       -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \
+       -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test\
+       -I$(srcdir)/$(RPATH)/SALOMETraceCollector \
+       -I$(top_builddir)/salome_adm/unix
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       @CPPUNIT_LIBS@ \
+       $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(RPATH)/Basics/libSALOMEBasics.la
+
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSALOMETraceCollectorTest.la 
+libSALOMETraceCollectorTest_la_SOURCES = SALOMETraceCollectorTest.cxx
+libSALOMETraceCollectorTest_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSALOMETraceCollectorTest_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSALOMETraceCollectorTest_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestSALOMETraceCollector
+TestSALOMETraceCollector_SOURCES  = TestSALOMETraceCollector.cxx
+TestSALOMETraceCollector_CPPFLAGS = $(COMMON_CPPFLAGS)
+TestSALOMETraceCollector_LDADD    = libSALOMETraceCollectorTest.la $(COMMON_LIBS)
diff --git a/src/TOOLSDS/Makefile.am b/src/TOOLSDS/Makefile.am
new file mode 100644 (file)
index 0000000..e015ae9
--- /dev/null
@@ -0,0 +1,73 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = SALOMEDS_Tool.hxx 
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../Utils \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ \
+       @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \
+       @HDF5_INCLUDES@ \
+       @BOOST_CPPFLAGS@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../Utils/libOpUtil.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CAS_KERNEL@
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libTOOLSDS.la
+libTOOLSDS_la_SOURCES =        \
+       SALOMEDS_Tool.cxx
+
+libTOOLSDS_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libTOOLSDS_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libTOOLSDS_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+# Nothing to build
+
+
diff --git a/src/TestContainer/Makefile.am b/src/TestContainer/Makefile.am
new file mode 100644 (file)
index 0000000..aca3e40
--- /dev/null
@@ -0,0 +1,104 @@
+#  SALOME TestContainer : test of container creation and its life cycle
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA
+#  Module : SALOME
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+# Scripts to be installed
+dist_salomescript_DATA = \
+       SALOME_TestComponentPy.py \
+       TestComponentPy.py \
+       TestLogger.py
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(srcdir)/../Registry \
+       -I$(srcdir)/../Notification \
+       -I$(srcdir)/../ResourcesManager \
+       -I$(srcdir)/../Container \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../Container/libSalomeContainer.la \
+       ../Registry/libRegistry.la \
+       ../Notification/libSalomeNotification.la \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeTestComponentEngine.la
+libSalomeTestComponentEngine_la_SOURCES  = \
+       SALOME_TestComponent_i.cxx \
+       SALOME_TestComponent_i.hxx
+
+libSalomeTestComponentEngine_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSalomeTestComponentEngine_la_LIBADD   = $(COMMON_LIBS)
+
+#LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl SALOME_Exception.idl
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestContainer TestLogger
+TestContainer_SOURCES  = TestContainer.cxx
+TestContainer_CPPFLAGS = $(COMMON_CPPFLAGS)
+TestContainer_LDADD    = $(COMMON_LIBS) libSalomeTestComponentEngine.la
+
+TestLogger_SOURCES     = TestLogger.cxx
+TestLogger_CPPFLAGS    = $(COMMON_CPPFLAGS)
+TestLogger_LDADD       = $(COMMON_LIBS) libSalomeTestComponentEngine.la
diff --git a/src/TestContainer/TestLogger.py b/src/TestContainer/TestLogger.py
new file mode 100644 (file)
index 0000000..2b5bbb6
--- /dev/null
@@ -0,0 +1,23 @@
+# Copyright (C) 2005  OPEN CASCADE, CEA, EDF R&D, LEG
+#           PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT
+# 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.1 of the License.
+# 
+# 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
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+# 
+
+from SALOME_utilities import *
+
+MESSAGE("TestLogger.py : It's OK")
+
diff --git a/src/TestMPIContainer/Makefile.am b/src/TestMPIContainer/Makefile.am
new file mode 100644 (file)
index 0000000..fc84cd0
--- /dev/null
@@ -0,0 +1,106 @@
+#  SALOME MPIContainer : implemenation of container based on MPI libraries
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : SALOME
+#  $Header$
+
+
+
+#
+# ===============================================================
+# _CS_gbo Caution !! This package may not work. I didn't test it
+# because no mpi soft is installed on my computer. To be checked.
+# ===============================================================
+#
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Header to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS = TestMPIComponentEngine.hxx
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+# _CS_gbo See wether it can be shared by all packages in a common include!!
+COMMON_CPPFLAGS=\
+       @MPI_INCLUDES@ \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(srcdir)/../NamingService \
+       -I$(srcdir)/../Utils \
+       -I$(srcdir)/../Registry \
+       -I$(srcdir)/../Notification \
+       -I$(srcdir)/../ResourcesManager \
+       -I$(srcdir)/../Container \
+       -I$(srcdir)/../MPIContainer \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       ../Registry/libRegistry.la \
+       ../Notification/libSalomeNotification.la \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       ../NamingService/libSalomeNS.la \
+       ../Utils/libOpUtil.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       ../Basics/libSALOMEBasics.la \
+       ../Container/libSalomeContainer.la \
+       ../MPIContainer/libSalomeMPIContainer.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CORBA_LIBS@
+
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libSalomeTestMPIComponentEngine.la
+libSalomeTestMPIComponentEngine_la_SOURCES = TestMPIComponentEngine.cxx
+libSalomeTestMPIComponentEngine_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libSalomeTestMPIComponentEngine_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libSalomeTestMPIComponentEngine_la_LIBADD   = $(COMMON_LIBS)
+
+
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestMPIContainer
+TestMPIContainer_SOURCES = TestMPIContainer.cxx
+TestMPIContainer_LDADD   = libSalomeTestMPIComponentEngine.la $(COMMON_LIBS) @MPI_LIBS@
+TestMPIContainer_CPPFLAGS = $(COMMON_CPPFLAGS)
diff --git a/src/UnitTests/Makefile.am b/src/UnitTests/Makefile.am
new file mode 100644 (file)
index 0000000..b55f3b8
--- /dev/null
@@ -0,0 +1,89 @@
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+
+# Executable scripts to be installed
+dist_salomescript_SCRIPTS = UnitTests.py
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+
+bin_PROGRAMS = UnitTests
+UnitTests_SOURCES  = UnitTests.cxx
+UnitTests_CPPFLAGS =\
+       @CPPUNIT_INCLUDES@ \
+       -I$(srcdir)/../Basics -I$(srcdir)/../Basics/Test \
+       -I$(srcdir)/../SALOMELocalTrace -I$(srcdir)/../SALOMELocalTrace/Test \
+       -I$(top_builddir)/salome_adm/unix
+
+if CORBA_GEN
+  UnitTests_CPPFLAGS +=\
+       -DWITH_CORBA \
+       -I$(srcdir)/../SALOMETraceCollector -I$(srcdir)/../SALOMETraceCollector/Test \
+       -I$(srcdir)/../NamingService -I$(srcdir)/../NamingService/Test \
+       -I$(srcdir)/../Utils -I$(srcdir)/../Utils/Test \
+       -I$(srcdir)/../LifeCycleCORBA -I$(srcdir)/../LifeCycleCORBA/Test \
+       -I$(srcdir)/../SALOMDESImpl -I$(srcdir)/../SALOMEDSImpl/Test \
+       -I$(srcdir)/../SALOMDES -I$(srcdir)/../SALOMEDS/Test \
+       -I$(top_builddir)/idl \
+       -I$(srcdir)/../Registry \
+       -I$(srcdir)/../Notification \
+       -I$(srcdir)/../ResourcesManager \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+endif
+
+UnitTests_LDADD    =\
+       @CPPUNIT_LIBS@ \
+       ../Basics/libSALOMEBasics.la \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la ../SALOMELocalTrace/Test/libSALOMELocalTraceTest.la
+
+if CORBA_GEN
+  UnitTests_LDADD    +=\
+       ../Registry/libRegistry.la \
+       ../Notification/libSalomeNotification.la \
+       ../ResourcesManager/libSalomeResourcesManager.la \
+       ../NamingService/libSalomeNS.la ../NamingService/Test/libNamingServiceTest.la \
+       ../Container/libSalomeContainer.la \
+       ../SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \
+       ../Utils/libOpUtil.la ../Utils/Test/libUtilsTest.la \
+       ../LifeCycleCORBA/libSalomeLifeCycleCORBA.la ../LifeCycleCORBA/Test/libLifeCycleCORBATest.la \
+       ../SALOMEDSImpl/libSalomeDSImpl.la ../SALOMEDSImpl/Test/libSALOMEDSImplTest.la \
+       ../SALOMEDS/libSalomeDS.la ../SALOMEDS/Test/libSALOMEDSTest.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CORBA_LIBS@
+endif
diff --git a/src/Utils/Makefile.am b/src/Utils/Makefile.am
new file mode 100644 (file)
index 0000000..aac6dea
--- /dev/null
@@ -0,0 +1,77 @@
+#  SALOME Utils : general SALOME's definitions and tools
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : SALOME
+#  $Header$
+
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+# header files  
+salomeinclude_HEADERS =\
+       OpUtil.hxx \
+       Utils_Timer.hxx \
+       Utils_CorbaException.hxx \
+       Utils_CommException.hxx \
+       Utils_SALOME_Exception.hxx \
+       Utils_ORB_INIT.hxx \
+       Utils_Identity.hxx \
+       Utils_SINGLETON.hxx \
+       Utils_DESTRUCTEUR_GENERIQUE.hxx \
+       Utils_ExceptHandlers.hxx \
+       Utils_Mutex.hxx
+
+# Scripts to be exported
+dist_salomescript_DATA =\
+       Utils_Identity.py \
+       SALOME_utilities.py
+
+# Libraries targets
+lib_LTLIBRARIES = libOpUtil.la
+libOpUtil_la_SOURCES =\
+       OpUtil.cxx Utils_Timer.cxx duplicate.cxx \
+       Utils_CommException.cxx \
+       Utils_SALOME_Exception.cxx \
+       Utils_Identity.cxx Utils_ORB_INIT.cxx \
+       Utils_DESTRUCTEUR_GENERIQUE.cxx \
+       Utils_ExceptHandlers.cxx \
+       Utils_Mutex.cxx
+
+libOpUtil_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+
+libOpUtil_la_CPPFLAGS = \
+       -I$(srcdir)/../Basics \
+       -I$(srcdir)/../SALOMELocalTrace \
+       -I$(top_builddir)/salome_adm/unix \
+       -I$(top_builddir)/idl \
+       @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+
+libOpUtil_la_LIBADD   = \
+       ../SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(top_builddir)/idl/libSalomeIDLKernel.la\
+       @CORBA_LIBS@
+
+
+
diff --git a/src/Utils/Test/Makefile.am b/src/Utils/Test/Makefile.am
new file mode 100644 (file)
index 0000000..682b4b4
--- /dev/null
@@ -0,0 +1,88 @@
+####################################### library
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  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.1 of the License. 
+# 
+#  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 
+# 
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+#
+#
+#  File   : Makefile.am
+#  Author : Guillaume Boulant (CSSI)
+#  Module : KERNEL
+#  $Header$
+
+include $(top_srcdir)/salome_adm/unix/make_common_starter.am
+
+#
+# ===============================================================
+# Files to be installed
+# ===============================================================
+#
+# header files  
+salomeinclude_HEADERS= UtilsTest.hxx
+
+# Scripts to be installed
+dist_salomescript_SCRIPTS = TestUtils.py
+
+
+#
+# ===============================================================
+# Local definitions
+# ===============================================================
+#
+# This directory defines the subdirectory src in the top source directory.
+RPATH=../..
+
+# This local variable defines the list of CPPFLAGS common to all target in this package.
+COMMON_CPPFLAGS=\
+       @CPPUNIT_INCLUDES@ \
+       -I$(srcdir)/$(RPATH)/Basics -I$(srcdir)/$(RPATH)/Basics/Test \
+       -I$(srcdir)/$(RPATH)/SALOMELocalTrace -I$(srcdir)/$(RPATH)/SALOMELocalTrace/Test \
+       -I$(srcdir)/$(RPATH)/SALOMETraceCollector -I$(srcdir)/$(RPATH)/SALOMETraceCollector/Test \
+       -I$(srcdir)/$(RPATH)/Utils -I$(srcdir)/$(RPATH)/Utils/Test \
+       -I$(top_builddir)/salome_adm/unix
+
+# This local variable defines the list of dependant libraries common to all target in this package.
+COMMON_LIBS =\
+       @CPPUNIT_LIBS@ \
+       $(RPATH)/Utils/libOpUtil.la \
+       $(RPATH)/SALOMELocalTrace/Test/libSALOMELocalTraceTest.la $(RPATH)/SALOMELocalTrace/libSALOMELocalTrace.la \
+       $(RPATH)/SALOMETraceCollector/Test/libSALOMETraceCollectorTest.la \
+       $(RPATH)/Basics/libSALOMEBasics.la
+#
+# ===============================================================
+# Libraries targets
+# ===============================================================
+#
+lib_LTLIBRARIES = libUtilsTest.la 
+libUtilsTest_la_SOURCES = UtilsTest.cxx
+libUtilsTest_la_CPPFLAGS = $(COMMON_CPPFLAGS)
+libUtilsTest_la_LDFLAGS  = -no-undefined -version-info=0:0:0
+libUtilsTest_la_LIBADD    = $(COMMON_LIBS)
+
+#
+# ===============================================================
+# Executables targets
+# ===============================================================
+#
+bin_PROGRAMS = TestUtils
+TestUtils_SOURCES  = TestUtils.cxx
+TestUtils_CPPFLAGS = $(COMMON_CPPFLAGS)
+TestUtils_LDADD    = libUtilsTest.la $(COMMON_LIBS)
+