Sprout from master 2005-10-18 15:07:13 UTC prascle <prascle> 'PR: merge from BR_UnitTests (tag mergeto_trunk_18oct05)'
Cherrypick from IMPORT 2003-07-09 16:13:48 UTC nri <nri@opencascade.com> 'sources v1.2':
idl/SALOME_Registry.idl
idl/TestNotif.idl
resources/CatalogDataType.xml
resources/CatalogModulePersonnel.xml_skel
resources/Tools_en.xml
resources/Tools_fr.xml
resources/back.xpm
resources/cascade.png
resources/channel.cfg
resources/close.png
resources/config
resources/copy.png
resources/default.png
resources/dl_delete.png
resources/dl_insert.png
resources/dl_movedown.png
resources/dl_moveup.png
resources/forward.xpm
resources/help.png
resources/home.xpm
resources/new.png
resources/open.png
resources/paste.png
resources/plot2d_dump.png
resources/plot2d_fitall.png
resources/plot2d_fitarea.png
resources/plot2d_legend.png
resources/plot2d_linear.png
resources/plot2d_linear_y.png
resources/plot2d_lines.png
resources/plot2d_log.png
resources/plot2d_log_y.png
resources/plot2d_pan.png
resources/plot2d_points.png
resources/plot2d_settings.png
resources/plot2d_splines.png
resources/plot2d_zoom.png
resources/print.png
resources/redo.png
resources/reset.png
resources/salomeCommonModel.spml
resources/save.png
resources/select1.png
resources/tile.png
resources/uc_add.png
resources/uc_clear.png
resources/uc_current.png
resources/uc_del.png
resources/uc_new.png
resources/undo.png
resources/view_back.png
resources/view_bottom.png
resources/view_camera_dump.png
resources/view_fitall.png
resources/view_fitarea.png
resources/view_front.png
resources/view_glpan.png
resources/view_left.png
resources/view_pan.png
resources/view_reset.png
resources/view_right.png
resources/view_rotate.png
resources/view_top.png
resources/view_triedre.png
resources/view_zoom.png
salome_adm/unix/Doxyfile
salome_adm/unix/F77config.h.in
salome_adm/unix/config_files/ac_cc_warnings.m4
salome_adm/unix/config_files/check_Salome.m4
salome_adm/unix/config_files/check_corba.m4
salome_adm/unix/config_files/check_f77.m4
salome_adm/unix/config_files/check_java.m4
salome_adm/unix/config_files/check_swig.m4
salome_adm/unix/config_files/config.guess
salome_adm/unix/config_files/config.sub
salome_adm/unix/config_files/ltconfig
salome_adm/unix/config_files/ltmain.sh
salome_adm/unix/config_files/missing
salome_adm/unix/sstream.in
src/HDFPersist/HDFOI.hxx
src/HDFPersist/HDFattrClose.c
src/HDFPersist/HDFattrGetSize.c
src/HDFPersist/HDFattrGetType.c
src/HDFPersist/HDFattrOpen.c
src/HDFPersist/HDFattribute.hxx
src/HDFPersist/HDFdatasetClose.c
src/HDFPersist/HDFdatasetGetDim.c
src/HDFPersist/HDFdatasetGetSize.c
src/HDFPersist/HDFdatasetGetnDim.c
src/HDFPersist/HDFdatasetOpen.c
src/HDFPersist/HDFerrorModeLock.c
src/HDFPersist/HDFexplorer.hxx
src/HDFPersist/HDFfileClose.c
src/HDFPersist/HDFfileCreate.c
src/HDFPersist/HDFfileMount.c
src/HDFPersist/HDFfileOpen.c
src/HDFPersist/HDFfileUmount.c
src/HDFPersist/HDFgroupClose.c
src/HDFPersist/HDFgroupCreate.c
src/HDFPersist/HDFgroupOpen.c
src/HDFPersist/HDFnObjects.c
src/HDFPersist/HDFobjectIdentify.c
src/HDFPersist/HDFobjectType.c
src/HDFPersist/test1.c
src/HDFPersist/test2.c
src/ModuleGenerator/tests/Truc2Component.idl
src/ModuleGenerator/tests/TrucComponent.idl
src/ModuleGenerator/tests/test1.sh
src/ModuleGenerator/tests/test1b.sh
src/ModuleGenerator/tests/test2.sh
src/ModuleGenerator/tests/test3.sh
src/ModuleGenerator/tests/test4.sh
src/ModuleGenerator/tests/test5.sh
src/NOTIFICATION_SWIG/NOTIFICATION.i
src/Notification/CosNotifyShorthands.h
src/SALOMEDS/Handle_SALOMEDS_DataMapNodeOfDataMapOfIntegerString.hxx
src/SALOMEDS/Handle_SALOMEDS_TableOfStringAttribute.hxx
src/SALOMEDS/SALOMEDS_DataMapIteratorOfDataMapOfIntegerString.hxx
src/SALOMEDS/SALOMEDS_DataMapNodeOfDataMapOfIntegerString.hxx
src/SALOMEDS/SALOMEDS_DataMapOfIntegerString.hxx
src/SALOMEDS/SALOMEDS_IORAttribute.jxx
src/SALOMEDS/SALOMEDS_OCAFApplication.jxx
src/SALOMEDS/SALOMEDS_PersRefAttribute.jxx
src/SALOMEDS/SALOMEDS_TableOfStringAttribute.hxx
src/SALOMEDS/SALOMEDS_TableOfStringAttribute.ixx
src/SALOMEDS/SALOMEDS_TableOfStringAttribute.jxx
src/Utils/SalomeString.hxx
Delete:
INSTALL
Makefile.in
bin/VERSION
bin/addToKillList.py
bin/appliskel/README
bin/appliskel/envd
bin/appliskel/runAppli
bin/appliskel/runConsole
bin/appliskel/runParam
bin/appliskel/runRemote.sh
bin/appliskel/runSession
bin/appliskel/runTests
bin/killSalome.py
bin/killSalomeWithPort.py
bin/launchConfigureParser.py
bin/orbmodule.py
bin/runSalome.py
doc/SALOME_Application.txt
doc/salome/tui/KERNEL/doxyfile
doc/salome/tui/KERNEL/sources/static/tree.js
examples/Carene.brep
examples/Makefile.in
examples/TimeStamps.med
examples/carre_en_quad4_seg2.med
examples/champ1.med
examples/clo.med
examples/clo2.med
examples/crank.igs
examples/cube_hexa8_quad4.med
examples/essaiminimail.med
examples/fedges.unv
examples/flocon.brep
examples/fra.med
examples/fra1.med
examples/freebord.med
examples/jurassique.med
examples/maill.0.med
examples/maill.1.med
examples/maill.2.med
examples/maillage_2D.med
examples/maillage_migr3d.med
examples/mer.brep
examples/mesh.med
examples/multicon_shell1.brep
examples/new_pointe.med
examples/pointe.med
examples/poupe.brep
examples/puitsinst.med
examples/resu.2.med
examples/sections.brep
examples/slots.brep
examples/test18.med
idl/SALOME_Comm.idl
idl/SALOME_ContainerManager.idl
idl/SALOME_TestMPIComponent.idl
resources/CatalogResources.xml
resources/KERNELCatalog.xml
salome_adm/unix/config_files/check_cas.m4
salome_adm/unix/config_files/check_lam.m4
salome_adm/unix/config_files/check_omniorb.m4
salome_adm/unix/config_files/check_qt.m4
salome_adm/unix/config_files/check_qwt.m4
salome_adm/unix/make_module.in
src/Basics/Test/BasicMainTest.hxx
src/Batch/Batch_APIInternalFailureException.cxx
src/Batch/Batch_APIInternalFailureException.hxx
src/Batch/Batch_BatchManager.cxx
src/Batch/Batch_BatchManager.hxx
src/Batch/Batch_BatchManagerCatalog.cxx
src/Batch/Batch_BatchManagerCatalog.hxx
src/Batch/Batch_BatchManager_LSF.cxx
src/Batch/Batch_BatchManager_LSF.hxx
src/Batch/Batch_BatchManager_PBS.cxx
src/Batch/Batch_BatchManager_PBS.hxx
src/Batch/Batch_BoolType.cxx
src/Batch/Batch_BoolType.hxx
src/Batch/Batch_CharType.cxx
src/Batch/Batch_CharType.hxx
src/Batch/Batch_ConnexionFailureException.cxx
src/Batch/Batch_ConnexionFailureException.hxx
src/Batch/Batch_Couple.cxx
src/Batch/Batch_Couple.hxx
src/Batch/Batch_CoupleType.cxx
src/Batch/Batch_CoupleType.hxx
src/Batch/Batch_Date.cxx
src/Batch/Batch_Date.hxx
src/Batch/Batch_DateType.cxx
src/Batch/Batch_DateType.hxx
src/Batch/Batch_Environnement.cxx
src/Batch/Batch_Environnement.hxx
src/Batch/Batch_FactBatchManager.cxx
src/Batch/Batch_FactBatchManager.hxx
src/Batch/Batch_FactBatchManager_LSF.cxx
src/Batch/Batch_FactBatchManager_LSF.hxx
src/Batch/Batch_FactBatchManager_PBS.cxx
src/Batch/Batch_FactBatchManager_PBS.hxx
src/Batch/Batch_GenericException.cxx
src/Batch/Batch_GenericException.hxx
src/Batch/Batch_GenericType.cxx
src/Batch/Batch_GenericType.hxx
src/Batch/Batch_IntType.cxx
src/Batch/Batch_IntType.hxx
src/Batch/Batch_InvalidArgumentException.cxx
src/Batch/Batch_InvalidArgumentException.hxx
src/Batch/Batch_InvalidKeyException.cxx
src/Batch/Batch_InvalidKeyException.hxx
src/Batch/Batch_Job.cxx
src/Batch/Batch_Job.hxx
src/Batch/Batch_JobId.cxx
src/Batch/Batch_JobId.hxx
src/Batch/Batch_JobInfo.cxx
src/Batch/Batch_JobInfo.hxx
src/Batch/Batch_JobInfo_LSF.cxx
src/Batch/Batch_JobInfo_LSF.hxx
src/Batch/Batch_JobInfo_PBS.cxx
src/Batch/Batch_JobInfo_PBS.hxx
src/Batch/Batch_Job_LSF.cxx
src/Batch/Batch_Job_LSF.hxx
src/Batch/Batch_Job_PBS.cxx
src/Batch/Batch_Job_PBS.hxx
src/Batch/Batch_ListIsFullException.cxx
src/Batch/Batch_ListIsFullException.hxx
src/Batch/Batch_LongType.cxx
src/Batch/Batch_LongType.hxx
src/Batch/Batch_MapKey.cxx
src/Batch/Batch_MapKey.hxx
src/Batch/Batch_NotYetImplementedException.cxx
src/Batch/Batch_NotYetImplementedException.hxx
src/Batch/Batch_Parametre.cxx
src/Batch/Batch_Parametre.hxx
src/Batch/Batch_PyVersatile.cxx
src/Batch/Batch_PyVersatile.hxx
src/Batch/Batch_RunTimeException.cxx
src/Batch/Batch_RunTimeException.hxx
src/Batch/Batch_StringType.cxx
src/Batch/Batch_StringType.hxx
src/Batch/Batch_TypeMismatchException.cxx
src/Batch/Batch_TypeMismatchException.hxx
src/Batch/Batch_Versatile.cxx
src/Batch/Batch_Versatile.hxx
src/Batch_SWIG/libBatch_Swig.i
src/Batch_SWIG/libBatch_Swig_exception.i
src/Batch_SWIG/libBatch_Swig_typemap.i
src/CASCatch/CASCatch_CatchSignals.cxx
src/CASCatch/CASCatch_CatchSignals.hxx
src/CASCatch/CASCatch_ErrorHandler.cxx
src/CASCatch/CASCatch_ErrorHandler.hxx
src/CASCatch/CASCatch_Failure.cxx
src/CASCatch/CASCatch_Failure.hxx
src/CASCatch/Makefile.in
src/Communication/Makefile.in
src/Communication/MultiCommException.cxx
src/Communication/MultiCommException.hxx
src/Communication/Receiver.cxx
src/Communication/Receiver.hxx
src/Communication/ReceiverFactory.cxx
src/Communication/ReceiverFactory.hxx
src/Communication/Receivers.cxx
src/Communication/Receivers.hxx
src/Communication/SALOMEMultiComm.cxx
src/Communication/SALOMEMultiComm.hxx
src/Communication/SALOME_Comm_i.cxx
src/Communication/SALOME_Comm_i.hxx
src/Communication/SenderFactory.cxx
src/Communication/SenderFactory.hxx
src/Communication/libSALOME_Comm.i
src/Container/Component_i.cxx
src/Container/Container_i.cxx
src/Container/Makefile.in
src/Container/SALOME_Container.cxx
src/Container/SALOME_ContainerManager.cxx
src/Container/SALOME_ContainerManager.hxx
src/Container/SALOME_ContainerManagerServer.cxx
src/Container/SALOME_ContainerPy.py
src/HDFPersist/HDFascii.cc
src/HDFPersist/HDFascii.hxx
src/HDFPersist/HDFdataset.cc
src/HDFPersist/HDFdataset.hxx
src/HDFPersist/HDFdatasetCreate.c
src/HDFPersist/HDFtypes.h
src/HDFPersist/Makefile.in
src/HDFPersist/hdfi.h
src/KERNEL_PY/Makefile.in
src/KERNEL_PY/kernel_shared_modules.py
src/KERNEL_PY/salome.py
src/KERNEL_PY/salome_shared_modules.py
src/KERNEL_PY/salome_test.py
src/LifeCycleCORBA/Launchers.cxx
src/LifeCycleCORBA/Launchers.hxx
src/LifeCycleCORBA/SALOME_LifeCycleCORBA.cxx
src/LifeCycleCORBA/Test/LifeCycleCORBATest.cxx
src/LifeCycleCORBA/Test/LifeCycleCORBATest.hxx
src/LifeCycleCORBA/Test/Makefile.in
src/LifeCycleCORBA/Test/TestLifeCycleCORBA.cxx
src/LifeCycleCORBA_SWIG/libSALOME_LifeCycleCORBA.i
src/MPIContainer/MPIContainer_i.cxx
src/MPIContainer/MPIObject_i.cxx
src/MPIContainer/Makefile.in
src/MPIContainer/SALOME_MPIContainer.cxx
src/Makefile.in
src/ModuleCatalog/SALOME_ModuleCatalog_impl.cxx
src/NamingService/SALOME_NamingService.cxx
src/NamingService/SALOME_NamingService.hxx
src/NamingService/SALOME_NamingServicePy.py
src/ResourcesManager/SALOME_LoadRateManager.cxx
src/ResourcesManager/SALOME_LoadRateManager.hxx
src/ResourcesManager/SALOME_ResourcesCatalog_Handler.cxx
src/ResourcesManager/SALOME_ResourcesCatalog_Parser.cxx
src/ResourcesManager/SALOME_ResourcesManager.cxx
src/ResourcesManager/SALOME_ResourcesManager.hxx
src/SALOMEDS/Makefile.in
src/SALOMEDS/SALOMEDS.cdl
src/SALOMEDS/SALOMEDS_AttributeComment.cxx
src/SALOMEDS/SALOMEDS_AttributeComment.hxx
src/SALOMEDS/SALOMEDS_AttributeComment_i.cxx
src/SALOMEDS/SALOMEDS_AttributeComment_i.hxx
src/SALOMEDS/SALOMEDS_AttributeDrawable.cxx
src/SALOMEDS/SALOMEDS_AttributeDrawable.hxx
src/SALOMEDS/SALOMEDS_AttributeDrawable_i.cxx
src/SALOMEDS/SALOMEDS_AttributeDrawable_i.hxx
src/SALOMEDS/SALOMEDS_AttributeExpandable.cxx
src/SALOMEDS/SALOMEDS_AttributeExpandable.hxx
src/SALOMEDS/SALOMEDS_AttributeExpandable_i.cxx
src/SALOMEDS/SALOMEDS_AttributeExpandable_i.hxx
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.cxx
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.hxx
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.cxx
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.hxx
src/SALOMEDS/SALOMEDS_AttributeFileType.cxx
src/SALOMEDS/SALOMEDS_AttributeFileType.hxx
src/SALOMEDS/SALOMEDS_AttributeFileType_i.cxx
src/SALOMEDS/SALOMEDS_AttributeFileType_i.hxx
src/SALOMEDS/SALOMEDS_AttributeFlags.cxx
src/SALOMEDS/SALOMEDS_AttributeFlags.hxx
src/SALOMEDS/SALOMEDS_AttributeFlags_i.cxx
src/SALOMEDS/SALOMEDS_AttributeFlags_i.hxx
src/SALOMEDS/SALOMEDS_AttributeGraphic.cxx
src/SALOMEDS/SALOMEDS_AttributeGraphic.hxx
src/SALOMEDS/SALOMEDS_AttributeGraphic_i.cxx
src/SALOMEDS/SALOMEDS_AttributeGraphic_i.hxx
src/SALOMEDS/SALOMEDS_AttributeIOR.cxx
src/SALOMEDS/SALOMEDS_AttributeIOR.hxx
src/SALOMEDS/SALOMEDS_AttributeIOR_i.cxx
src/SALOMEDS/SALOMEDS_AttributeIOR_i.hxx
src/SALOMEDS/SALOMEDS_AttributeInteger.cxx
src/SALOMEDS/SALOMEDS_AttributeInteger.hxx
src/SALOMEDS/SALOMEDS_AttributeInteger_i.cxx
src/SALOMEDS/SALOMEDS_AttributeInteger_i.hxx
src/SALOMEDS/SALOMEDS_AttributeLocalID.cxx
src/SALOMEDS/SALOMEDS_AttributeLocalID.hxx
src/SALOMEDS/SALOMEDS_AttributeLocalID_i.cxx
src/SALOMEDS/SALOMEDS_AttributeLocalID_i.hxx
src/SALOMEDS/SALOMEDS_AttributeName.cxx
src/SALOMEDS/SALOMEDS_AttributeName.hxx
src/SALOMEDS/SALOMEDS_AttributeName_i.cxx
src/SALOMEDS/SALOMEDS_AttributeName_i.hxx
src/SALOMEDS/SALOMEDS_AttributeOpened.cxx
src/SALOMEDS/SALOMEDS_AttributeOpened.hxx
src/SALOMEDS/SALOMEDS_AttributeOpened_i.cxx
src/SALOMEDS/SALOMEDS_AttributeOpened_i.hxx
src/SALOMEDS/SALOMEDS_AttributePersistentRef.cxx
src/SALOMEDS/SALOMEDS_AttributePersistentRef.hxx
src/SALOMEDS/SALOMEDS_AttributePersistentRef_i.cxx
src/SALOMEDS/SALOMEDS_AttributePersistentRef_i.hxx
src/SALOMEDS/SALOMEDS_AttributePixMap.cxx
src/SALOMEDS/SALOMEDS_AttributePixMap.hxx
src/SALOMEDS/SALOMEDS_AttributePixMap_i.cxx
src/SALOMEDS/SALOMEDS_AttributePixMap_i.hxx
src/SALOMEDS/SALOMEDS_AttributePythonObject.cxx
src/SALOMEDS/SALOMEDS_AttributePythonObject.hxx
src/SALOMEDS/SALOMEDS_AttributePythonObject_i.cxx
src/SALOMEDS/SALOMEDS_AttributePythonObject_i.hxx
src/SALOMEDS/SALOMEDS_AttributeReal.cxx
src/SALOMEDS/SALOMEDS_AttributeReal.hxx
src/SALOMEDS/SALOMEDS_AttributeReal_i.cxx
src/SALOMEDS/SALOMEDS_AttributeReal_i.hxx
src/SALOMEDS/SALOMEDS_AttributeSelectable.cxx
src/SALOMEDS/SALOMEDS_AttributeSelectable.hxx
src/SALOMEDS/SALOMEDS_AttributeSelectable_i.cxx
src/SALOMEDS/SALOMEDS_AttributeSelectable_i.hxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.cxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.hxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger_i.cxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger_i.hxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.cxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.hxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.cxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.hxx
src/SALOMEDS/SALOMEDS_AttributeStudyProperties.cxx
src/SALOMEDS/SALOMEDS_AttributeStudyProperties.hxx
src/SALOMEDS/SALOMEDS_AttributeStudyProperties_i.cxx
src/SALOMEDS/SALOMEDS_AttributeStudyProperties_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfReal.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfReal.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfReal_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfReal_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfString.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfString.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfString_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfString_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTarget.cxx
src/SALOMEDS/SALOMEDS_AttributeTarget.hxx
src/SALOMEDS/SALOMEDS_AttributeTarget_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTarget_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTextColor.cxx
src/SALOMEDS/SALOMEDS_AttributeTextColor.hxx
src/SALOMEDS/SALOMEDS_AttributeTextColor_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTextColor_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.cxx
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.hxx
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTreeNode.cxx
src/SALOMEDS/SALOMEDS_AttributeTreeNode.hxx
src/SALOMEDS/SALOMEDS_AttributeTreeNode_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTreeNode_i.hxx
src/SALOMEDS/SALOMEDS_AttributeUserID.cxx
src/SALOMEDS/SALOMEDS_AttributeUserID.hxx
src/SALOMEDS/SALOMEDS_AttributeUserID_i.cxx
src/SALOMEDS/SALOMEDS_AttributeUserID_i.hxx
src/SALOMEDS/SALOMEDS_Attributes.hxx
src/SALOMEDS/SALOMEDS_ChildIterator.cxx
src/SALOMEDS/SALOMEDS_ChildIterator.hxx
src/SALOMEDS/SALOMEDS_ChildIterator_i.cxx
src/SALOMEDS/SALOMEDS_ChildIterator_i.hxx
src/SALOMEDS/SALOMEDS_ClientAttributes.hxx
src/SALOMEDS/SALOMEDS_DrawableAttribute.cdl
src/SALOMEDS/SALOMEDS_Driver_i.cxx
src/SALOMEDS/SALOMEDS_Driver_i.hxx
src/SALOMEDS/SALOMEDS_ExpandableAttribute.cdl
src/SALOMEDS/SALOMEDS_ExternalFileDef.cdl
src/SALOMEDS/SALOMEDS_ExternalFileDef.jxx
src/SALOMEDS/SALOMEDS_FileType.cdl
src/SALOMEDS/SALOMEDS_FileType.jxx
src/SALOMEDS/SALOMEDS_GenericAttribute.cxx
src/SALOMEDS/SALOMEDS_GenericAttribute.hxx
src/SALOMEDS/SALOMEDS_GenericAttribute_i.cxx
src/SALOMEDS/SALOMEDS_GenericAttribute_i.hxx
src/SALOMEDS/SALOMEDS_IORAttribute.cdl
src/SALOMEDS/SALOMEDS_LocalIDAttribute.cdl
src/SALOMEDS/SALOMEDS_OCAFApplication.cdl
src/SALOMEDS/SALOMEDS_OpenedAttribute.cdl
src/SALOMEDS/SALOMEDS_PersRefAttribute.cdl
src/SALOMEDS/SALOMEDS_PixMapAttribute.cdl
src/SALOMEDS/SALOMEDS_PythonObjectAttribute.cdl
src/SALOMEDS/SALOMEDS_SComponent.cxx
src/SALOMEDS/SALOMEDS_SComponent.hxx
src/SALOMEDS/SALOMEDS_SComponentIterator.cxx
src/SALOMEDS/SALOMEDS_SComponentIterator.hxx
src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx
src/SALOMEDS/SALOMEDS_SComponentIterator_i.hxx
src/SALOMEDS/SALOMEDS_SComponent_i.cxx
src/SALOMEDS/SALOMEDS_SComponent_i.hxx
src/SALOMEDS/SALOMEDS_SObject.cxx
src/SALOMEDS/SALOMEDS_SObject.hxx
src/SALOMEDS/SALOMEDS_SObject_i.cxx
src/SALOMEDS/SALOMEDS_SObject_i.hxx
src/SALOMEDS/SALOMEDS_SelectableAttribute.cdl
src/SALOMEDS/SALOMEDS_SequenceOfIntegerAttribute.cdl
src/SALOMEDS/SALOMEDS_SequenceOfRealAttribute.cdl
src/SALOMEDS/SALOMEDS_Study.cxx
src/SALOMEDS/SALOMEDS_Study.hxx
src/SALOMEDS/SALOMEDS_StudyBuilder.cxx
src/SALOMEDS/SALOMEDS_StudyBuilder.hxx
src/SALOMEDS/SALOMEDS_StudyBuilder_i.cxx
src/SALOMEDS/SALOMEDS_StudyBuilder_i.hxx
src/SALOMEDS/SALOMEDS_StudyManager.cxx
src/SALOMEDS/SALOMEDS_StudyManager.hxx
src/SALOMEDS/SALOMEDS_StudyManager_i.cxx
src/SALOMEDS/SALOMEDS_StudyManager_i.hxx
src/SALOMEDS/SALOMEDS_StudyPropertiesAttribute.cdl
src/SALOMEDS/SALOMEDS_Study_i.cxx
src/SALOMEDS/SALOMEDS_Study_i.hxx
src/SALOMEDS/SALOMEDS_TargetAttribute.cdl
src/SALOMEDS/SALOMEDS_TextColorAttribute.cdl
src/SALOMEDS/SALOMEDS_TextHighlightColorAttribute.cdl
src/SALOMEDS/SALOMEDS_UseCaseBuilder.cxx
src/SALOMEDS/SALOMEDS_UseCaseBuilder.hxx
src/SALOMEDS/SALOMEDS_UseCaseBuilder_i.cxx
src/SALOMEDS/SALOMEDS_UseCaseBuilder_i.hxx
src/SALOMEDS/SALOMEDS_UseCaseIterator.cxx
src/SALOMEDS/SALOMEDS_UseCaseIterator.hxx
src/SALOMEDS/SALOMEDS_UseCaseIterator_i.cxx
src/SALOMEDS/SALOMEDS_UseCaseIterator_i.hxx
src/SALOMEDS/SALOME_DriverPy.py
src/SALOMEDSClient/SALOMEDSClient.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeComment.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeDrawable.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeExpandable.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeExternalFileDef.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeFileType.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeFlags.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeGraphic.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeIOR.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeInteger.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeLocalID.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeName.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeOpened.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributePersistentRef.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributePixMap.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributePythonObject.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeReal.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeSelectable.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfInteger.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfReal.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeStudyProperties.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfInteger.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfReal.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfString.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeTarget.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeTextColor.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeTextHighlightColor.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeTreeNode.hxx
src/SALOMEDSClient/SALOMEDSClient_AttributeUserID.hxx
src/SALOMEDSClient/SALOMEDSClient_ChildIterator.hxx
src/SALOMEDSClient/SALOMEDSClient_GenericAttribute.hxx
src/SALOMEDSClient/SALOMEDSClient_SComponent.hxx
src/SALOMEDSClient/SALOMEDSClient_SComponentIterator.hxx
src/SALOMEDSClient/SALOMEDSClient_SObject.hxx
src/SALOMEDSClient/SALOMEDSClient_Study.hxx
src/SALOMEDSClient/SALOMEDSClient_StudyBuilder.hxx
src/SALOMEDSClient/SALOMEDSClient_StudyManager.hxx
src/SALOMEDSClient/SALOMEDSClient_UseCaseBuilder.hxx
src/SALOMEDSClient/SALOMEDSClient_UseCaseIterator.hxx
src/SALOMEDSClient/SALOMEDSClient_definitions.hxx
src/SALOMEDSImpl/Makefile.in
src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfInteger.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfReal.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfString.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.hxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.cxx
src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.hxx
src/SALOMEDSImpl/SALOMEDSImpl_Attributes.hxx
src/SALOMEDSImpl/SALOMEDSImpl_Callback.cxx
src/SALOMEDSImpl/SALOMEDSImpl_Callback.hxx
src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.cxx
src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.hxx
src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.cxx
src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.hxx
src/SALOMEDSImpl/SALOMEDSImpl_Driver.hxx
src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.cxx
src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.hxx
src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.cxx
src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.hxx
src/SALOMEDSImpl/SALOMEDSImpl_SComponent.cxx
src/SALOMEDSImpl/SALOMEDSImpl_SComponent.hxx
src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.cxx
src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.hxx
src/SALOMEDSImpl/SALOMEDSImpl_SObject.cxx
src/SALOMEDSImpl/SALOMEDSImpl_SObject.hxx
src/SALOMEDSImpl/SALOMEDSImpl_Study.cxx
src/SALOMEDSImpl/SALOMEDSImpl_Study.hxx
src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx
src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.hxx
src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.cxx
src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.hxx
src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx
src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.hxx
src/SALOMEDSImpl/SALOMEDSImpl_Tool.cxx
src/SALOMEDSImpl/SALOMEDSImpl_Tool.hxx
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.cxx
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.hxx
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.cxx
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.hxx
src/SALOMEDSImpl/testDS.cxx
src/SALOMELocalTrace/FileTraceCollector.cxx
src/SALOMELocalTrace/LocalTraceBufferPool.cxx
src/SALOMELocalTrace/LocalTraceCollector.cxx
src/SALOMELocalTrace/Test/SALOMELocalTraceTest.cxx
src/SALOMELocalTrace/Test/SALOMELocalTraceTest.hxx
src/SALOMELocalTrace/Test/TestSALOMELocalTrace.cxx
src/SALOMETraceCollector/SALOMETraceCollector.cxx
src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.cxx
src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.hxx
src/SALOMETraceCollector/Test/TestSALOMETraceCollector.cxx
src/TOOLSDS/Makefile.in
src/TOOLSDS/SALOMEDS_Tool.cxx
src/TOOLSDS/SALOMEDS_Tool.hxx
src/TestMPIContainer/Makefile.in
src/TestMPIContainer/TestMPIComponentEngine.cxx
src/TestMPIContainer/TestMPIComponentEngine.hxx
src/TestMPIContainer/TestMPIContainer.cxx
src/UnitTests/Makefile.in
src/UnitTests/UnitTests.cxx
src/Utils/Test/TestUtils.cxx
src/Utils/Test/UtilsTest.cxx
src/Utils/Test/UtilsTest.hxx
src/Utils/Utils_ExceptHandlers.cxx
+++ /dev/null
-This is the version 3.1.0a of KERNEL
-Previous versions :
- - 3.0.0
- - 2.2.4
- - 2.2.3
- - 2.2.2
- - 2.2.1
- - 2.2.0
- - 2.1.1
- - 2.1.0
- - 2.0.0
- - 1.4.1
- - 1.3.0
- - 1.2.1
-
+++ /dev/null
-# -* 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 examples 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
-OWN_CONFIG_H=@OWN_CONFIG_H@
-
-ifeq ($(OWN_CONFIG_H),yes)
- ifeq ($(HAVE_SSTREAM),yes)
- include_list=include/salome/SALOMEconfig.h include/salome/config.h
- else
- include_list=include/salome/SALOMEconfig.h include/salome/config.h include/salome/sstream
- endif
-else
- ifeq ($(HAVE_SSTREAM),yes)
- include_list=include/salome/SALOMEconfig.h
- else
- include_list=include/salome/SALOMEconfig.h include/salome/sstream
- endif
-endif
-
-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; \
-
-include/salome/config.h: salome_adm/unix/config.h
- -$(RM) $@
- $(LN_S) ../../$< $@
-
-include/salome/sstream: salome_adm/unix/sstream
- -$(RM) $@
- $(LN_S) ../../$< $@
-
-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'
-#doc:
-# (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 salome_adm/unix/config.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
+++ /dev/null
-THIS IS SALOME - KERNEL VERSION: 3.1.0a2
+++ /dev/null
-#!/usr/bin/env python
-
-import os, sys, pickle, string, signal
-
-########## adds to the kill list of SALOME one more process ##########
-
-def findFileDict():
- if os.environ.has_key('NSPORT'):
- my_port = os.environ['NSPORT']
- pass
- else:
- my_port = 2809
- try:
- file = open(os.environ["OMNIORB_CONFIG"], "r")
- s = file.read()
- while len(s):
- l = string.split(s, ":")
- if string.split(l[0], " ")[0] == "ORBInitRef" or string.split(l[0], " ")[0] == "InitRef" :
- my_port = int(l[len(l)-1])
- pass
- s = file.read()
- pass
- pass
- except:
- pass
- pass
- print "myport = ", my_port
- return my_port
-
-def addToKillList(command_pid, command):
- my_port = findFileDict()
- filedict=os.getenv("HOME")+'/'+os.getenv('USER')+"_"+str(my_port)+'_SALOME_pidict'
- try:
- fpid=open(filedict, 'r')
- process_ids=pickle.load(fpid)
- fpid.close()
- except:
- process_ids=[{}]
- pass
-
- already_in=0
- for process_id in process_ids:
- print process_id
- for pid, cmd in process_id.items():
- #print "see process %s : %s"% (pid, cmd[0])
- if pid == command_pid:
- already_in=1
- pass
- pass
- pass
-
- command=(command.split(" "))[0]
- if already_in == 0:
- try:
- process_ids.append({command_pid: [command]})
- fpid=open(filedict,'w')
- pickle.dump(process_ids, fpid)
- fpid.close()
- except:
- print "addToKillList: can not add command %s to the kill list"% filedict
- pass
- pass
- pass
-
-def killList():
- my_port = findFileDict()
- filedict=os.getenv("HOME")+'/'+os.getenv('USER')+"_"+str(my_port)+'_SALOME_pidict'
- try:
- fpid=open(filedict, 'r')
- process_ids=pickle.load(fpid)
- fpid.close()
- except:
- process_ids=[{}]
- pass
-
- for process_id in process_ids:
- print process_id
- for pid, cmd in process_id.items():
- print "stop process %s : %s"% (pid, cmd[0])
- try:
- os.kill(int(pid),signal.SIGKILL)
- except:
- print " ------------------ process %s : %s inexistant"% (pid, cmd[0])
- pass
- pass
- pass
- os.remove(filedict)
- pass
-
-
-
-if __name__ == "__main__":
- print sys.argv
- addToKillList(sys.argv[1], sys.argv[2])
+++ /dev/null
-Set of scripts for a SALOME application
-=======================================
-
-# - A SALOME application distributed on several computers needs APPLI
-# directories on the same path ($APPLI) relative to $HOME directory
-# of the user, on each computer.
-
-user scripts:
--------------
-
-runAppli : SALOME launch (idem runSalome but different name to avoid
- confusion with ${KERNEL_ROOT_DIR}/bin/salome/runSalome
-
-runConsole : a python console in the current SALOME session environment
-
-runSession : a shell in SALOME environment, either interactive (without args)
- or used to run a program (defined by given args)
-
-internal application scripts:
------------------------------
-
-runRemote.sh : called from remote computer, via ssh, rsh...
- used for instance to create container
-
-envd : sets SALOME application environment
- sourced by other scripts
-
-The following files must be adapted to your environment and SALOME Application:
--------------------------------------------------------------------------------
-
-SalomeApp.xml - list of modules, options on server launch and resources...
-CatalogResources.xml - configuration of machines used in SALOME application
- (no need of modules list and path here)
-
-env.d directory must contain the necessary files to source, to define
-the SALOME Application environment :
- ( envd script source these files in alphanumeric order )
-
-For instance,
- atFirst.sh - general presets
- envProducts.sh - prerequisite SALOME environment
- envSalome.sh - list of MODULE_ROOT_DIR
+++ /dev/null
-#!/bin/bash
-
-for i in $1/env.d/*;do source ${i}; done
+++ /dev/null
-#!/bin/bash
-
-# --- retrieve APPLI path, relative to $HOME
-# on sarge, "which" gives not allways the absolute path...
-
-comName=`which $0`
-aa=${comName:0:1}
-if test x$aa == x\/; then
- mycom=${comName}
-elif test x$aa == x\.; then
- mycom=${PWD}/${comName:2}
-else
- mycom=${PWD}/${comName}
-fi
-APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
-#echo $APPLI
-export APPLI
-
-# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
-
-. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
-
-# --- define port for CORBA naming service
-
-searchFreePort() {
- echo -n "Searching for a free port for naming service: "
- export NSPORT=2810
- 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`
- export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
- export NSPORT
- export NSHOST=${myhost}
- local initref="NameService=corbaname::"`hostname`":$NSPORT"
- #echo "ORBInitRef $initref" > $OMNIORB_CONFIG
- echo "InitRef = $initref" > $OMNIORB_CONFIG
- export LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
- rm ${LAST_RUNNING_CONFIG}
- ln -s ${OMNIORB_CONFIG} ${LAST_RUNNING_CONFIG}
- 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
-}
-
-# --- run SALOME
-# (default arguments defined in local salome.launch could be completed
-# by arguments to this command)
-
-searchFreePort
-
-if [ $# -ne 0 ] ; then
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py $*
-else
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py python ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py
-fi
-
-rm ${OMNIORB_CONFIG}
-rm ${LAST_RUNNING_CONFIG}
+++ /dev/null
-#!/bin/bash
-
-# --- retrieve APPLI path, relative to $HOME
-# on sarge, "which" gives not allways the absolute path...
-
-comName=`which $0`
-aa=${comName:0:1}
-if test x$aa == x\/; then
- mycom=${comName}
-elif test x$aa == x\.; then
- mycom=${PWD}/${comName:2}
-else
- mycom=${PWD}/${comName}
-fi
-APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
-#echo $APPLI
-export APPLI
-
-# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
-
-. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
-
-# --- open a Python interpreter with SALOME environment
-
-${KERNEL_ROOT_DIR}/bin/salome/envSalome.py python -i ${KERNEL_ROOT_DIR}/bin/salome/salomeConsole.py $*
+++ /dev/null
-#!/bin/bash
-
-./runAppli --killall
-
-#./runSession killSalome.py
+++ /dev/null
-#!/bin/bash
-#
-# --- run command in SALOME environment from remote call, ssh or rsh
-# - SALOME configuration is defined by :
-# - list of MODULE_ROOT_DIR
-# - prerequisite environment
-# - specific configuration for a particular SALOME application
-# - These elements of configuration are defined locally on each computer
-# in the directory APPLI:
-# - A SALOME application distributed on several computers needs APPLI
-# directories on the same path ($APPLI) relative to $HOME directory
-# of the user, on each computer.
-#
-# --- call example (from cli76cd to cli76ce):
-# ssh cli76ce ${APPLI}/runRemote.sh cli76cd 2810 SALOME_Container myContainerName
-#
-# --- local arguments
-# $0 : ${APPLI}/runRemote.sh: from arg name, rebuild and export $APPLI variable
-# $1 : computer name for CORBA name service (where SALOME was launched)
-# $2 : port for CORBA name service
-# $3 and following : local command to execute, with args
-#
-
-# --- retrieve APPLI path, relative to $HOME
-# on sarge, "which" gives not allways the absolute path...
-
-comName=`which $0`
-aa=${comName:0:1}
-if test x$aa == x\/; then
- mycom=${comName}
-elif test x$aa == x\.; then
- mycom=${PWD}/${comName:2}
-else
- mycom=${PWD}/${comName}
-fi
-APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
-#echo $APPLI
-export APPLI
-
-# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
-
-. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
-
-# --- set the OMNIORB_CONFIG file and environment relative to this run of SALOME
-
-export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_$1_$2.cfg
-export NSHOST=$1
-export NSPORT=$2
-initref="NameService=corbaname::"$1":$2"
-echo "ORBInitRef $initref" > $OMNIORB_CONFIG
-
-# --- execute the command in the SALOME environment
-
-shift 2
-
-${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile $HOME/$APPLI/.bashrc -c "$*"
+++ /dev/null
-#!/bin/bash
-#
-# Useful shell to run executable progs or shells under Salome env
-# Use it with args to run a program : runSession python -i myprog.py
-# Use it without args to run an interactive shell under Salome env
-#
-
-# --- retrieve APPLI path, relative to $HOME
-# on sarge, "which" gives not allways the absolute path...
-
-comName=`which $0`
-aa=${comName:0:1}
-if test x$aa == x\/; then
- mycom=${comName}
-elif test x$aa == x\.; then
- mycom=${PWD}/${comName:2}
-else
- mycom=${PWD}/${comName}
-fi
-APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
-echo $APPLI
-export APPLI
-
-# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
-
-. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
-
-myhost=`hostname`
-export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
-
-# --- invoque shell with or without args
-
-if [ $# -ne 0 ] ; then
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
-else
-
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
-fi
+++ /dev/null
-#!/bin/bash
-
-# --- retrieve APPLI path, relative to $HOME
-# on sarge, "which" gives not allways the absolute path...
-
-comName=`which $0`
-aa=${comName:0:1}
-if test x$aa == x\/; then
- mycom=${comName}
-elif test x$aa == x\.; then
- mycom=${PWD}/${comName:2}
-else
- mycom=${PWD}/${comName}
-fi
-APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
-#echo $APPLI
-export APPLI
-
-# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
-
-. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
-
-# --- define port for CORBA naming service
-
-searchFreePort() {
- echo -n "Searching for a free port for naming service: "
- export NSPORT=2810
- 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`
- export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
- export NSPORT
- export NSHOST=${myhost}
- local initref="NameService=corbaname::"`hostname`":$NSPORT"
- #echo "ORBInitRef $initref" > $OMNIORB_CONFIG
- echo "InitRef = $initref" > $OMNIORB_CONFIG
- export LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_test.cfg
- rm ${LAST_RUNNING_CONFIG}
- ln -s ${OMNIORB_CONFIG} ${LAST_RUNNING_CONFIG}
- 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
-}
-
-# --- invoque shell with or without args
-
-searchFreePort
-
-if [ $# -ne 0 ] ; then
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
-else
-
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
-fi
-
-rm ${OMNIORB_CONFIG}
-rm ${LAST_RUNNING_CONFIG}
+++ /dev/null
-#!/usr/bin/env python
-import os, string, sys
-
-from killSalomeWithPort import killMyPort
-
-def killAllPorts():
- user = os.getenv('USER')
- for file in os.listdir(os.getenv("HOME")):
- l = string.split(file, "_")
- if len(l) >= 4:
- if file[:len(user)] == user:
- if l[len(l)-2] == "SALOME" and l[len(l)-1] == "pidict":
- killMyPort(l[len(l)-3])
- pass
-
-if __name__ == "__main__":
- killAllPorts()
+++ /dev/null
-#!/usr/bin/env python
-import os, sys, pickle, signal, commands
-
-########## kills all salome processes with the given port ##########
-def killMyPort(port):
- filedict=os.getenv("HOME")+'/'+os.getenv('USER')+"_"+port+'_SALOME_pidict'
- found = 0
- try:
- fpid=open(filedict, 'r')
- found = 1
- except:
- print "le fichier %s des process SALOME n'est pas accessible"% filedict
- pass
-
- if found:
- a = os.system("pid=`ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"`; kill -9 $pid >& /dev/null")
- try:
- process_ids=pickle.load(fpid)
- fpid.close()
- for process_id in process_ids:
-
- for pid, cmd in process_id.items():
- print "stop process %s : %s"% (pid, cmd[0])
- try:
- os.kill(int(pid),signal.SIGKILL)
- except:
- print " ------------------ process %s : %s inexistant"% (pid, cmd[0])
- pass
- pass
- except:
- pass
- os.remove(filedict)
- pid = commands.getoutput("ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"")
- a = ""
- while pid != "" and len(a.split(" ")) < 2:
- a = commands.getoutput("pid=`ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"`; kill -9 $pid")
- pid = commands.getoutput("ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"")
- print pid
-
-
-if __name__ == "__main__":
- for port in sys.argv[1:]:
- killMyPort(port)
+++ /dev/null
-import os, glob, string, sys, re
-import xml.sax
-
-# names of tags in XML configuration file
-doc_tag = "document"
-sec_tag = "section"
-par_tag = "parameter"
-
-# names of attributes in XML configuration file
-nam_att = "name"
-val_att = "value"
-
-# certain values in XML configuration file ("launch" section)
-lanch_nam = "launch"
-gui_nam = "gui"
-splash_nam = "splash"
-logger_nam = "logger"
-xterm_nam = "xterm"
-file_nam = "file"
-portkill_nam = "portkill"
-killall_nam = "killall"
-modules_nam = "modules"
-pyModules_nam = "pyModules"
-embedded_nam = "embedded"
-standalone_nam = "standalone"
-containers_nam = "containers"
-key_nam = "key"
-interp_nam = "interp"
-
-# values in XML configuration file giving specific module parameters (<module_name> section)
-# which are stored in opts with key <module_name>_<parameter> (eg SMESH_plugins)
-plugins_nam = "plugins"
-
-# values passed as arguments, NOT read from XML config file, but set from within this script
-appname_nam = "appname"
-port_nam = "port"
-appname = "SalomeApp"
-
-# values of boolean type (must be '0' or '1').
-# xml_parser.boolValue() is used for correct setting
-boolKeys = ( gui_nam, splash_nam, logger_nam, file_nam, xterm_nam, portkill_nam, killall_nam, interp_nam )
-
-# values of list type
-listKeys = ( containers_nam, embedded_nam, key_nam, modules_nam, standalone_nam, plugins_nam )
-
-# return application version (uses GUI_ROOT_DIR (or KERNEL_ROOT_DIR in batch mode) +/bin/salome/VERSION)
-def version():
- root_dir = os.environ.get( 'KERNEL_ROOT_DIR', '' ) # KERNEL_ROOT_DIR or "" if not found
- root_dir = os.environ.get( 'GUI_ROOT_DIR', root_dir ) # GUI_ROOT_DIR or KERNEL_ROOT_DIR or "" if both not found
- filename = root_dir+'/bin/salome/VERSION'
- str = open( filename, "r" ).readline() # str = "THIS IS SALOME - SALOMEGUI VERSION: 3.0.0"
- match = re.search( r':\s+([\d\.]+)\s*$', str )
- if match :
- return match.group( 1 )
- return ''
-
-# -----------------------------------------------------------------------------
-
-### xml reader for launch configuration file usage
-
-section_to_skip = ""
-
-class xml_parser:
- def __init__(self, fileName, _opts ):
- print "Processing ",fileName
- self.space = []
- self.opts = _opts
- self.section = section_to_skip
- parser = xml.sax.make_parser()
- parser.setContentHandler(self)
- parser.parse(fileName)
- pass
-
- def boolValue( self, str ):
- if str in ("yes", "y", "1"):
- return 1
- elif str in ("no", "n", "0"):
- return 0
- else:
- return str
- pass
-
- def startElement(self, name, attrs):
- self.space.append(name)
- self.current = None
-
- # if we are analyzing "section" element and its "name" attribute is
- # either "launch" or module name -- set section_name
- if self.space == [doc_tag, sec_tag] and nam_att in attrs.getNames():
- section_name = attrs.getValue( nam_att )
- if section_name == lanch_nam:
- self.section = section_name # launch section
- elif self.opts.has_key( modules_nam ) and \
- section_name in self.opts[ modules_nam ]:
- self.section = section_name # <module> section
- else:
- self.section = section_to_skip # any other section
- pass
-
- # if we are analyzing "parameter" elements - children of either
- # "section launch" or "section "<module>"" element, then store them
- # in self.opts assiciative array (key = [<module>_ + ] value of "name" attribute)
- elif self.section != section_to_skip and \
- self.space == [doc_tag, sec_tag, par_tag] and \
- nam_att in attrs.getNames() and \
- val_att in attrs.getNames():
- nam = attrs.getValue( nam_att )
- val = attrs.getValue( val_att )
- if self.section == lanch_nam: # key for launch section
- key = nam
- else: # key for <module> section
- key = self.section + "_" + nam
- if nam in boolKeys:
- self.opts[key] = self.boolValue( val ) # assign boolean value: 0 or 1
- elif nam in listKeys:
- self.opts[key] = val.split( ',' ) # assign list value: []
- else:
- self.opts[key] = val;
- pass
- pass
-
- def endElement(self, name):
- p = self.space.pop()
- self.current = None
- if self.section != section_to_skip and name == sec_tag:
- self.section = section_to_skip
- pass
-
- def characters(self, content):
- pass
-
- def processingInstruction(self, target, data):
- pass
-
- def setDocumentLocator(self, locator):
- pass
-
- def startDocument(self):
- self.read = None
- pass
-
- def endDocument(self):
- self.read = None
- pass
-
-# -----------------------------------------------------------------------------
-
-### searching for launch configuration files
-# the rule:
-# - environment variable {'appname'+'Config'} (SalomeAppConfig) contains list of directories (';' as devider)
-# - these directories contain 'appname'+'.xml' (SalomeApp.xml) configuration files
-# - these files are analyzed beginning with the last one (last directory in the list)
-# - if a key is found in next analyzed cofiguration file - it will be replaced
-# - the last configuration file to be analyzed - ~/.'appname'+'rc' (~/SalomeApprc) (if it exists)
-# - but anyway, if user specifies a certain option in a command line - it will replace the values
-# - specified in configuration file(s)
-# - once again the order of settings (next setting replaces the previous ones):
-# - SalomeApp.xml files in directories specified by SalomeAppConfig env variable
-# - .SalomeApprc file in user's catalogue
-# - command line
-
-config_var = appname+'Config'
-dirs = os.environ[config_var]
-dirs = dirs.split( ';' )
-dirs.reverse() # reverse order, like in "path" variable - FILO-style processing
-
-_opts = {} # assiciative array of options to be filled
-
-# SalomeApp.xml files in directories specified by SalomeAppConfig env variable
-for dir in dirs:
- filename = dir+'/'+appname+'.xml'
- try:
- p = xml_parser(filename, _opts)
- _opts = p.opts
- except:
- print 'Can not read launch configuration file ', filename
- continue
-
-# SalomeApprc file in user's catalogue
-filename = os.environ['HOME']+'/.'+appname+'rc.'+version()
-try:
- p = xml_parser(filename, _opts)
- _opts = p.opts
-except:
- print 'Can not read launch configuration file ', filename
-
-
-args = _opts
-
-# --- setting default values of keys if they were NOT set in config files ---
-for aKey in listKeys:
- if not args.has_key( aKey ):
- args[aKey]=[]
-
-for aKey in boolKeys:
- if not args.has_key( aKey ):
- args[aKey]=0
-
-if args[file_nam]:
- afile=args[file_nam]
- args[file_nam]=[afile]
-
-args[appname_nam] = appname
-
-### searching for my port
-
-my_port = 2809
-try:
- file = open(os.environ["OMNIORB_CONFIG"], "r")
- s = file.read()
- while len(s):
- l = string.split(s, ":")
- if string.split(l[0], " ")[0] == "ORBInitRef" or string.split(l[0], " ")[0] == "InitRef" :
- my_port = int(l[len(l)-1])
- pass
- s = file.read()
- pass
-except:
- pass
-
-args[port_nam] = my_port
-
-# -----------------------------------------------------------------------------
-
-### command line options reader
-
-def options_parser(line):
- source = line
- list = []
- for delimiter in [" ", ",", "="]:
- for o in source:
- list += string.split(o, delimiter)
- pass
- source = list
- list = []
- pass
-
- #print "source=",source
-
- result = {}
- i = 0
- while i < len(source):
- if source[i][0] != '-':
- key = None
- elif source[i][1] == '-':
- key = source[i][2]
- else:
- key = source[i][1]
- pass
-
- result[key] = []
- if key:
- i += 1
- pass
- while i < len(source) and source[i][0] != '-':
- result[key].append(source[i])
- i += 1
- pass
- pass
- return result
-
-# -----------------------------------------------------------------------------
-
-### read command-line options : each arg given in command line supersedes arg from xml config file
-cmd_opts = {}
-try:
- cmd_opts = options_parser(sys.argv[1:])
- #print "opts=",cmd_opts
- kernel_root_dir=os.environ["KERNEL_ROOT_DIR"]
-except:
- cmd_opts["h"] = 1
- pass
-
-### check all options are right
-
-opterror=0
-for opt in cmd_opts:
- if not opt in ("h","g","l","f","x","m","e","s","c","p","k","t","i"):
- print "command line error: -", opt
- opterror=1
-
-if opterror == 1:
- cmd_opts["h"] = 1
-
-if cmd_opts.has_key("h"):
- print """USAGE: runSalome.py [options]
- [command line options] :
- --help or -h : print this help
- --gui or -g : launching with GUI
- --terminal -t : launching without gui (to deny --gui)
- --logger or -l : redirect messages in a CORBA collector
- --file=filename or -f=filename: redirect messages in a log file
- --xterm or -x : execute servers in xterm console (messages appear in xterm windows)
- --modules=module1,module2,... : salome module list (modulen is the name of Salome module to load)
- or -m=module1,module2,...
- --embedded=registry,study,moduleCatalog,cppContainer
- or -e=registry,study,moduleCatalog,cppContainer
- : embedded CORBA servers (default: registry,study,moduleCatalog,cppContainer)
- : (logger,pyContainer,supervContainer can't be embedded
- --standalone=registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer
- or -s=registry,study,moduleCatalog,cppContainer,pyContainer,supervContainer
- : standalone CORBA servers (default: pyContainer,supervContainer)
- --containers=cpp,python,superv: (obsolete) launching of containers cpp, python and supervision
- or -c=cpp,python,superv : = get default from -e and -s
- --portkill or -p : kill the salome with current port
- --killall or -k : kill all salome sessions
- --interp=n or -i=n : number of additional xterm to open, with session environment
- -z : display splash screen
-
- For each Salome module, the environment variable <modulen>_ROOT_DIR must be set.
- The module name (<modulen>) must be uppercase.
- KERNEL_ROOT_DIR is mandatory.
- """
- sys.exit(1)
- pass
-
-### apply command-line options to the arguments
-for opt in cmd_opts:
- if opt == 'g':
- args[gui_nam] = 1
- elif opt == 'z':
- args[splash_nam] = 1
- elif opt == 'l':
- args[logger_nam] = 1
- elif opt == 'f':
- args[file_nam] = cmd_opts['f']
- elif opt == 'x':
- args[xterm_nam] = 1
- elif opt == 'i':
- args[interp_nam] = cmd_opts['i']
- elif opt == 'm':
- args[modules_nam] = cmd_opts['m']
- elif opt == 'e':
- args[embedded_nam] = cmd_opts['e']
- elif opt == 's':
- args[standalone_nam] = cmd_opts['s']
- elif opt == 'c':
- args[containers_nam] = cmd_opts['c']
- elif opt == 'p':
- args[portkill_nam] = 1
- elif opt == 'k':
- args[killall_nam] = 1
- pass
- pass
-
-# 'terminal' must be processed in the end: to deny any 'gui' options
-if 't' in cmd_opts:
- args[gui_nam] = 0
- pass
-
-#print "args=",args
+++ /dev/null
-import sys,os,time
-import string
-from omniORB import CORBA
-
-# Import the stubs for the Naming service
-import CosNaming
-
-# -----------------------------------------------------------------------------
-
-class Server:
- XTERM="/usr/bin/X11/xterm -iconic -e "
- CMD=""
-
- def run(self):
- commande=self.XTERM+self.CMD
- print commande
- ier=os.system(commande)
- if ier:print "Commande failed"
-
-# -----------------------------------------------------------------------------
-
-class NamingServer(Server):
- XTERM=""
- USER=os.getenv('USER')
- if USER is None:
- USER='anonymous'
- os.system("mkdir -m 777 -p /tmp/logs")
- LOGDIR="/tmp/logs/" + USER
- os.system("mkdir -m 777 -p " + LOGDIR)
- CMD="runNS.sh > " + LOGDIR + "/salomeNS.log 2>&1"
-
-# -----------------------------------------------------------------------------
-
-class client:
-
- def __init__(self):
- # Initialise the ORB
- self.orb=CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
- # Initialise the Naming Service
- self.initNS()
-
- # --------------------------------------------------------------------------
-
- def initNS(self):
- # Obtain a reference to the root naming context
- obj = self.orb.resolve_initial_references("NameService")
- try:
- self.rootContext = obj._narrow(CosNaming.NamingContext)
- return
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- self.rootContext = None
- print "Lancement du Naming Service",
-
- # On lance le Naming Server (doit etre dans le PATH)
- NamingServer().run()
- print "Searching Naming Service ",
- ncount=0
- delta=0.1
- while(ncount < 10):
- ncount += 1
- try:
- obj = self.orb.resolve_initial_references("NameService")
- self.rootContext = obj._narrow(CosNaming.NamingContext)
- break
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- self.rootContext = None
- sys.stdout.write('+')
- sys.stdout.flush()
- time.sleep(delta)
-
- if self.rootContext is None:
- print "Failed to narrow the root naming context"
- sys.exit(1)
- print " found in %s seconds " % ((ncount-1)*delta)
-
- # --------------------------------------------------------------------------
-
- def showNScontext(self,context,dec=''):
- bl,bi=context.list(0)
- if bi is not None:
- ok,b=bi.next_one()
- while(ok):
- for s in b.binding_name :
- print "%s%s.%s" %(dec,s.id,s.kind)
- if s.kind == "dir":
- obj=context.resolve([s])
- scontext = obj._narrow(CosNaming.NamingContext)
- self.showNScontext(scontext,dec=dec+' ')
- ok,b=bi.next_one()
-
- # --------------------------------------------------------------------------
-
- def showNS(self):
- """ Show the content of NS"""
- self.showNScontext(self.rootContext)
-
- # --------------------------------------------------------------------------
-
- def Resolve(self, Path):
- resolve_path=string.split(Path,'/')
- if resolve_path[0] == '': del resolve_path[0]
- dir_path=resolve_path[:-1]
- context_name=[]
- for e in dir_path:
- context_name.append(CosNaming.NameComponent(e,"dir"))
- context_name.append(CosNaming.NameComponent(resolve_path[-1],"object"))
-
- try:
- obj = self.rootContext.resolve(context_name)
- except CosNaming.NamingContext.NotFound, ex:
- obj = None
- except CosNaming.NamingContext.InvalidName, ex:
- obj = None
- except CosNaming.NamingContext.CannotProceed, ex:
- obj = None
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- obj = None
- return obj
-
- # --------------------------------------------------------------------------
-
- def waitNS(self,name,typobj=None,maxcount=60):
- count=0
- delta=0.5
- print "Searching %s in Naming Service " % name,
- while(1):
- count += 1
- if count > maxcount : raise "Impossible de trouver %s" % name
- obj=self.Resolve(name)
- if obj :
- print " found in %s seconds " % ((count-1)*delta)
- break
- else:
- sys.stdout.write('+')
- sys.stdout.flush()
- time.sleep(delta)
-
- if typobj is None:return obj
-
- nobj = obj._narrow(typobj)
- if nobj is None:
- print "%s exists but is not a %s" % (name,typobj)
- return nobj
-
- # --------------------------------------------------------------------------
-
- def ResolveLogger(self, name):
- context_name=[]
- context_name.append(CosNaming.NameComponent(name,""))
-
- try:
- obj = self.rootContext.resolve(context_name)
- except CosNaming.NamingContext.NotFound, ex:
- obj = None
- except CosNaming.NamingContext.InvalidName, ex:
- obj = None
- except CosNaming.NamingContext.CannotProceed, ex:
- obj = None
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- obj = None
- return obj
-
- # --------------------------------------------------------------------------
-
- def waitLogger(self,name,typobj=None,maxcount=40):
- count=0
- delta=0.5
- print "Searching %s in Naming Service " % name,
- while(1):
- count += 1
- if count > maxcount : raise "Impossible de trouver %s" % name
- obj=self.ResolveLogger(name)
- if obj :
- print " found in %s seconds " % ((count-1)*delta)
- break
- else:
- sys.stdout.write('+')
- sys.stdout.flush()
- time.sleep(delta)
-
- if typobj is None:return obj
-
- nobj = obj._narrow(typobj)
- if nobj is None:
- print "%s exists but is not a %s" % (name,typobj)
- return nobj
-
+++ /dev/null
-#!/usr/bin/env python
-
-import sys, os, string, glob, time, pickle
-import orbmodule
-
-process_id = {}
-
-# salome_subdir variable is used for composing paths like $KERNEL_ROOT_DIR/share/salome/resources, etc.
-# before moving to SUIT-based gui, instead of salome_subdir there was args['appname'] used.
-# but after - 'appname' = "SalomeApp", so using it in making the subdirectory is an error.
-salome_subdir = "salome"
-
-# -----------------------------------------------------------------------------
-
-def add_path(directory, variable_name):
- """Function helper to add environment variables"""
- if not os.environ.has_key(variable_name):
- os.environ[variable_name] = ""
- pass
- if os.path.exists(directory):
- newpath=[]
- for _dir in os.environ[variable_name].split(":"):
- if os.path.exists(_dir):
- if not os.path.samefile(_dir, directory):
- newpath.append(_dir)
- else:
- if os.path.abspath(_dir) != os.path.abspath(directory):
- newpath.append(_dir)
- pass
- import string
- newpath[:0] = [ directory ]
- newpath = string.join(newpath,":")
- os.environ[variable_name] = newpath
- if variable_name == "PYTHONPATH":
- sys.path[:0] = [directory]
-
-# -----------------------------------------------------------------------------
-
-def get_config():
- """
- Get list of modules, paths.
-
- Read args from launch configure xml file and command line options.
- Check variables <module>_ROOT_DIR and set list of used modules.
- Return args, modules_list, modules_root_dir
- """
-
- # read args from launch configure xml file and command line options
-
- import launchConfigureParser
- args = launchConfigureParser.args
-
- # Check variables <module>_ROOT_DIR
- # and set list of used modules (without KERNEL)
-
- modules_list = []
- if args.has_key("modules"):
- modules_list += args["modules"]
- # KERNEL must be last in the list to locate it at the first place in PATH
- modules_list[:0] = ["GUI"]
- modules_list[:0] = ["KERNEL"]
- modules_list.reverse()
-
- modules_root_dir = {}
-
- to_remove_list=[]
- for module in modules_list :
- module_variable=module.upper()+"_ROOT_DIR"
- if not os.environ.has_key(module_variable):
- print "*******************************************************"
- print "*"
- print "* Environment variable",module_variable,"must be set"
- print "* Module", module, "will be not available"
- print "*"
- print "********************************************************"
- to_remove_list.append(module)
- continue
- pass
- module_root_dir = os.environ[module_variable]
- modules_root_dir[module]=module_root_dir
-
- for to_remove in to_remove_list:
- modules_list.remove(to_remove)
-
- while "KERNEL" in modules_list:
- modules_list.remove("KERNEL")
- pass
-
- while "GUI" in modules_list:
- modules_list.remove("GUI")
- pass
-
- if "SUPERV" in modules_list and not 'superv' in args['standalone']:
- args['standalone'].append("superv")
- pass
-
- return args, modules_list, modules_root_dir
-
-# -----------------------------------------------------------------------------
-
-def set_env(args, modules_list, modules_root_dir):
- """Add to the PATH-variables modules specific paths"""
-
- python_version="python%d.%d" % sys.version_info[0:2]
- modules_root_dir_list = []
- modules_list = modules_list[:] + ["GUI"]
- modules_list = modules_list[:] + ["KERNEL"]
- for module in modules_list :
- module_root_dir = modules_root_dir[module]
- modules_root_dir_list[:0] = [module_root_dir]
- add_path(os.path.join(module_root_dir,"lib",salome_subdir),
- "LD_LIBRARY_PATH")
- add_path(os.path.join(module_root_dir,"bin",salome_subdir),
- "PATH")
- if os.path.exists(module_root_dir + "/examples") :
- add_path(os.path.join(module_root_dir,"examples"),
- "PYTHONPATH")
- add_path(os.path.join(module_root_dir,"bin",salome_subdir),
- "PYTHONPATH")
- add_path(os.path.join(module_root_dir,"lib",
- python_version,"site-packages",salome_subdir),
- "PYTHONPATH")
- add_path(os.path.join(module_root_dir,"lib",salome_subdir),
- "PYTHONPATH")
- add_path(os.path.join(module_root_dir,"lib",
- python_version,"site-packages",salome_subdir,
- "shared_modules"),
- "PYTHONPATH")
-
- os.environ["SALOMEPATH"]=":".join(modules_root_dir_list)
-
- # set trace environment variable
-
- if not os.environ.has_key("SALOME_trace"):
- os.environ["SALOME_trace"]="local"
- if args['file']:
- os.environ["SALOME_trace"]="file:"+args['file'][0]
- if args['logger']:
- os.environ["SALOME_trace"]="with_logger"
-
- # set environment for SMESH plugins
-
- if "SMESH" in modules_list:
- os.environ["SMESH_MeshersList"]="StdMeshers"
- if not os.environ.has_key("SALOME_StdMeshersResources"):
- os.environ["SALOME_StdMeshersResources"] \
- = modules_root_dir["SMESH"]+"/share/"+args["appname"]+"/resources"
- pass
- if args.has_key("SMESH_plugins"):
- for plugin in args["SMESH_plugins"]:
- if os.environ.has_key(plugin.upper()+"_ROOT_DIR"):
- os.environ["SMESH_MeshersList"] \
- = os.environ["SMESH_MeshersList"]+":"+plugin
- plugin_root = os.environ[plugin.upper()+"_ROOT_DIR"]
- if not os.environ.has_key("SALOME_"+plugin+"Resources"):
- os.environ["SALOME_"+plugin+"Resources"] \
- = plugin_root+"/share/"+args["appname"]+"/resources"
- add_path(os.path.join(plugin_root,"lib",python_version,
- "site-packages",salome_subdir),
- "PYTHONPATH")
- add_path(os.path.join(plugin_root,"lib",salome_subdir),
- "PYTHONPATH")
- add_path(os.path.join(plugin_root,"lib",salome_subdir),
- "LD_LIBRARY_PATH")
- add_path(os.path.join(plugin_root,"bin",salome_subdir),
- "PYTHONPATH")
- add_path(os.path.join(plugin_root,"bin",salome_subdir),
- "PATH")
- pass
- pass
-
- # set environment for SUPERV module
- os.environ["ENABLE_MACRO_NODE"]="1"
- # set resources variables if not yet set
- if os.getenv("GUI_ROOT_DIR"):
- if not os.getenv("SUITRoot"): os.environ["SUITRoot"] = os.getenv("GUI_ROOT_DIR") + "/share/salome"
- if not os.getenv("SalomeAppConfig"): os.environ["SalomeAppConfig"] = os.getenv("GUI_ROOT_DIR") + "/share/salome/resources"
- pass
-
- os.environ["CSF_PluginDefaults"] \
- = os.path.join(modules_root_dir["KERNEL"],"share",
- salome_subdir,"resources")
- os.environ["CSF_SALOMEDS_ResourcesDefaults"] \
- = os.path.join(modules_root_dir["KERNEL"],"share",
- salome_subdir,"resources")
-
- if "GEOM" in modules_list:
- print "GEOM OCAF Resources"
- os.environ["CSF_GEOMDS_ResourcesDefaults"] \
- = os.path.join(modules_root_dir["GEOM"],"share",
- salome_subdir,"resources")
- print "GEOM Shape Healing Resources"
- os.environ["CSF_ShHealingDefaults"] \
- = os.path.join(modules_root_dir["GEOM"],"share",
- salome_subdir,"resources")
-
-# -----------------------------------------------------------------------------
-
-from killSalome import killAllPorts
-
-def killLocalPort():
- """
- kill servers from a previous SALOME exection, if needed,
- on the CORBA port given in args of runSalome
- """
-
- from killSalomeWithPort import killMyPort
- my_port=str(args['port'])
- try:
- killMyPort(my_port)
- except:
- print "problem in killLocalPort()"
- pass
- pass
-
-def givenPortKill(port):
- """
- kill servers from a previous SALOME exection, if needed,
- on the same CORBA port
- """
-
- from killSalomeWithPort import killMyPort
- my_port=port
- try:
- killMyPort(my_port)
- except:
- print "problem in LocalPortKill(), killMyPort("<<port<<")"
- pass
- pass
-
-def kill_salome(args):
- """
- Kill servers from previous SALOME executions, if needed;
- depending on args 'killall' or 'portkill', kill all executions,
- or only execution on the same CORBA port
- """
-
- if args['killall']:
- killAllPorts()
- elif args['portkill']:
- givenPortKill(str(args['port']))
-
-# -----------------------------------------------------------------------------
-#
-# Definition des classes d'objets pour le lancement des Server CORBA
-#
-
-class Server:
- """Generic class for CORBA server launch"""
-
- def initArgs(self):
- self.CMD=[]
- self.ARGS=[]
- if self.args['xterm']:
- self.ARGS=['xterm', '-iconic', '-sb', '-sl', '500', '-hold']
-
- def __init__(self,args):
- self.args=args
- self.initArgs()
-
-
- def run(self):
- global process_id
- myargs=self.ARGS
- if self.args['xterm']:
- # (Debian) send LD_LIBRARY_PATH to children shells (xterm)
- env_ld_library_path=['env', 'LD_LIBRARY_PATH='
- + os.getenv("LD_LIBRARY_PATH")]
- myargs = myargs +['-T']+self.CMD[:1]+['-e'] + env_ld_library_path
- command = myargs + self.CMD
- print "command = ", command
- pid = os.spawnvp(os.P_NOWAIT, command[0], command)
- process_id[pid]=self.CMD
-
-
-class InterpServer(Server):
- def __init__(self,args):
- self.args=args
- env_ld_library_path=['env', 'LD_LIBRARY_PATH=' + os.getenv("LD_LIBRARY_PATH")]
- self.CMD=['xterm', '-e']+ env_ld_library_path + ['python']
- #self.CMD=['xterm', '-e', 'python']
-
- def run(self):
- global process_id
- command = self.CMD
- #print "command = ", command
- pid = os.spawnvp(os.P_NOWAIT, command[0], command)
- process_id[pid]=self.CMD
-
-# ---
-
-class CatalogServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.SCMD1=['SALOME_ModuleCatalog_Server','-common']
- self.SCMD2=[]
- home_dir=os.getenv('HOME')
- if home_dir is not None:
- self.SCMD2=['-personal',os.path.join(home_dir,'Salome/resources/CatalogModulePersonnel.xml')]
-
- def setpath(self,modules_list,modules_root_dir):
- cata_path=[]
- list_modules = modules_list[:]
- list_modules.reverse()
- for module in ["KERNEL", "GUI"] + list_modules:
- module_root_dir=modules_root_dir[module]
- module_cata=module+"Catalog.xml"
- #print " ", module_cata
- cata_path.extend(
- glob.glob(os.path.join(module_root_dir,
- "share",salome_subdir,
- "resources",module_cata)))
- self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
-
-# ---
-
-class SalomeDSServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.CMD=['SALOMEDS_Server']
-
-# ---
-
-class RegistryServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.CMD=['SALOME_Registry_Server', '--salome_session','theSession']
-
-# ---
-
-class ContainerCPPServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.CMD=['SALOME_Container','FactoryServer']
-
-# ---
-
-class ContainerPYServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.CMD=['SALOME_ContainerPy.py','FactoryServerPy']
-
-# ---
-
-class ContainerSUPERVServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.CMD=['SALOME_Container','SuperVisionContainer']
-
-# ---
-
-class LoggerServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.CMD=['SALOME_Logger_Server', 'logger.log']
-
-# ---
-
-class SessionServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.SCMD1=['SALOME_Session_Server']
- self.SCMD2=[]
- if 'registry' in self.args['embedded']:
- self.SCMD1+=['--with','Registry',
- '(','--salome_session','theSession',')']
- if 'moduleCatalog' in self.args['embedded']:
- self.SCMD1+=['--with','ModuleCatalog','(','-common']
- home_dir=os.getenv('HOME')
- if home_dir is not None:
- self.SCMD2+=['-personal',os.path.join(home_dir,'Salome/resources/CatalogModulePersonnel.xml')]
- self.SCMD2+=[')']
- if 'study' in self.args['embedded']:
- self.SCMD2+=['--with','SALOMEDS','(',')']
- if 'cppContainer' in self.args['embedded']:
- self.SCMD2+=['--with','Container','(','FactoryServer',')']
- if 'SalomeAppEngine' in self.args['embedded']:
- self.SCMD2+=['--with','SalomeAppEngine','(',')']
-
- if 'cppContainer' in self.args['standalone'] or 'cppContainer' in self.args['embedded']:
- self.SCMD2+=['CPP']
- if 'pyContainer' in self.args['standalone'] or 'pyContainer' in self.args['embedded']:
- self.SCMD2+=['PY']
- if 'supervContainer' in self.args['containers'] or 'supervContainer' in self.args['standalone']:
- self.SCMD2+=['SUPERV']
- if self.args['gui']:
- self.SCMD2+=['GUI']
- if self.args['splash']:
- self.SCMD2+=['SPLASH']
-
- def setpath(self,modules_list,modules_root_dir):
- cata_path=[]
- list_modules = modules_list[:]
- list_modules.reverse()
- for module in ["KERNEL", "GUI"] + list_modules:
- module_root_dir=modules_root_dir[module]
- module_cata=module+"Catalog.xml"
- #print " ", module_cata
- cata_path.extend(
- glob.glob(os.path.join(module_root_dir,"share",
- salome_subdir,"resources",
- module_cata)))
- if 'moduleCatalog' in self.args['embedded']:
- self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
- else:
- self.CMD=self.SCMD1 + self.SCMD2
-
-# ---
-
-class ContainerManagerServer(Server):
- def __init__(self,args):
- self.args=args
- self.initArgs()
- self.SCMD1=['SALOME_ContainerManagerServer']
- self.SCMD2=[]
- if 'registry' in self.args['embedded']:
- self.SCMD1+=['--with','Registry',
- '(','--salome_session','theSession',')']
- if 'moduleCatalog' in self.args['embedded']:
- self.SCMD1+=['--with','ModuleCatalog','(','-common']
- self.SCMD2+=['-personal',
- '${HOME}/Salome/resources/CatalogModulePersonnel.xml',')']
- if 'study' in self.args['embedded']:
- self.SCMD2+=['--with','SALOMEDS','(',')']
- if 'cppContainer' in self.args['embedded']:
- self.SCMD2+=['--with','Container','(','FactoryServer',')']
-
- def setpath(self,modules_list,modules_root_dir):
- cata_path=[]
- list_modules = modules_list[:]
- list_modules.reverse()
- for module in ["KERNEL", "GUI"] + list_modules:
- module_root_dir=modules_root_dir[module]
- module_cata=module+"Catalog.xml"
- #print " ", module_cata
- cata_path.extend(
- glob.glob(os.path.join(module_root_dir,"share",
- self.args['appname'],"resources",
- module_cata)))
- if 'moduleCatalog' in self.args['embedded']:
- self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
- else:
- self.CMD=self.SCMD1 + self.SCMD2
-
-class NotifyServer(Server):
- def __init__(self,args,modules_root_dir):
- self.args=args
- self.initArgs()
- self.modules_root_dir=modules_root_dir
- myLogName = os.environ["LOGNAME"]
- self.CMD=['notifd','-c',
- self.modules_root_dir["KERNEL"] +'/share/salome/resources/channel.cfg',
- '-DFactoryIORFileName=/tmp/'+myLogName+'_rdifact.ior',
- '-DChannelIORFileName=/tmp/'+myLogName+'_rdichan.ior',
- '-DReportLogFile=/tmp/'+myLogName+'_notifd.report',
- '-DDebugLogFile=/tmp/'+myLogName+'_notifd.debug',
- ]
-
-#
-# -----------------------------------------------------------------------------
-
-def startGUI():
- """Salome Session Graphic User Interface activation"""
- import SALOME
- import SALOME_Session_idl
- session=clt.waitNS("/Kernel/Session",SALOME.Session)
- session.GetInterface()
-
-# -----------------------------------------------------------------------------
-
-def startSalome(args, modules_list, modules_root_dir):
- """Launch all SALOME servers requested by args"""
- init_time = os.times()
-
- print "startSalome ", args
-
- #
- # Initialisation ORB et Naming Service
- #
-
- clt=orbmodule.client()
-
- # (non obligatoire) Lancement Logger Server
- # et attente de sa disponibilite dans le naming service
- #
-
- if args['logger']:
- myServer=LoggerServer(args)
- myServer.run()
- clt.waitLogger("Logger")
-
- # Notify Server launch
- #
-
- print "Notify Server to launch"
-
- myServer=NotifyServer(args,modules_root_dir)
- myServer.run()
-
- #
- # Lancement Registry Server,
- # attente de la disponibilite du Registry dans le Naming Service
- #
-
- if 'registry' not in args['embedded']:
- myServer=RegistryServer(args)
- myServer.run()
- clt.waitNS("/Registry")
-
- #
- # Lancement Catalog Server,
- # attente de la disponibilite du Catalog Server dans le Naming Service
- #
-
-
- if 'moduleCatalog' not in args['embedded']:
- cataServer=CatalogServer(args)
- cataServer.setpath(modules_list,modules_root_dir)
- cataServer.run()
- import SALOME_ModuleCatalog
- clt.waitNS("/Kernel/ModulCatalog",SALOME_ModuleCatalog.ModuleCatalog)
-
- #
- # Lancement SalomeDS Server,
- # attente de la disponibilite du SalomeDS dans le Naming Service
- #
-
- #print "ARGS = ",args
- if 'study' not in args['embedded']:
- print "RunStudy"
- myServer=SalomeDSServer(args)
- myServer.run()
- clt.waitNS("/myStudyManager")
-
- #
- # Lancement ContainerManagerServer
- #
-
- myCmServer = ContainerManagerServer(args)
- myCmServer.setpath(modules_list,modules_root_dir)
- myCmServer.run()
-
-
- from Utils_Identity import getShortHostName
-
- if os.getenv("HOSTNAME") == None:
- if os.getenv("HOST") == None:
- os.environ["HOSTNAME"]=getShortHostName()
- else:
- os.environ["HOSTNAME"]=os.getenv("HOST")
-
- theComputer = getShortHostName()
-
- #
- # Lancement Container C++ local,
- # attente de la disponibilite du Container C++ local dans le Naming Service
- #
-
- if 'cppContainer' in args['standalone']:
- myServer=ContainerCPPServer(args)
- myServer.run()
- clt.waitNS("/Containers/" + theComputer + "/FactoryServer")
-
- #
- # Lancement Container Python local,
- # attente de la disponibilite du Container Python local
- # dans le Naming Service
- #
-
- if 'pyContainer' in args['standalone']:
- myServer=ContainerPYServer(args)
- myServer.run()
- clt.waitNS("/Containers/" + theComputer + "/FactoryServerPy")
-
- #
- # Lancement Container Supervision local,
- # attente de la disponibilite du Container Supervision local
- # dans le Naming Service
- #
-
- if 'supervContainer' in args['standalone']:
- myServer=ContainerSUPERVServer(args)
- myServer.run()
- clt.waitNS("/Containers/" + theComputer + "/SuperVisionContainer")
-
- #
- # Lancement Session Server
- #
- mySessionServ = SessionServer(args)
- mySessionServ.setpath(modules_list,modules_root_dir)
- mySessionServ.run()
-##----------------
-
- # Attente de la disponibilite du Session Server dans le Naming Service
- #
-
- import SALOME
- import SALOME_Session_idl
- session=clt.waitNS("/Kernel/Session",SALOME.Session)
-
- end_time = os.times()
- print
- print "Start SALOME, elapsed time : %5.1f seconds"% (end_time[4]
- - init_time[4])
-
- # ASV start GUI without Loader
- #if args['gui']:
- # session.GetInterface()
-
- #
- # additionnal external python interpreters
- #
- nbaddi=0
-
- try:
- if 'interp' in args:
- if args['interp']:
- nbaddi = int(args['interp'][0])
- except:
- import traceback
- traceback.print_exc()
- print "-------------------------------------------------------------"
- print "-- to get an external python interpreter:runSalome --interp=1"
- print "-------------------------------------------------------------"
-
- print "additional external python interpreters: ", nbaddi
- if nbaddi:
- for i in range(nbaddi):
- print "i=",i
- anInterp=InterpServer(args)
- anInterp.run()
-
- return clt
-
-# -----------------------------------------------------------------------------
-
-def useSalome(args, modules_list, modules_root_dir):
- """
- Launch all SALOME servers requested by args,
- save list of process, give info to user,
- show registered objects in Naming Service.
- """
-
- clt=None
- try:
- clt = startSalome(args, modules_list, modules_root_dir)
- except:
- import traceback
- traceback.print_exc()
- print
- print
- print "--- erreur au lancement Salome ---"
-
- #print process_id
-
-# filedict = '/tmp/' + os.getenv('USER') + "_" + str(args['port']) \
-# + '_' + args['appname'].upper() + '_pidict'
-# replaced args['appname'] by "SALOME" because in killSalome.py use of 'SALOME' in file name is hardcoded.
- filedict = os.getenv("HOME") + '/' + os.getenv('USER') + "_" + str(args['port']) \
- + '_' + 'SALOME' + '_pidict'
- process_ids = []
- try:
- fpid=open(filedict, 'r')
- process_ids=pickle.load(fpid)
- fpid.close()
- except:
- pass
-
- fpid=open(filedict, 'w')
- process_ids.append(process_id)
- pickle.dump(process_ids,fpid)
- fpid.close()
-
- print """
- Saving of the dictionary of Salome processes in %s
- To kill SALOME processes from a console (kill all sessions from all ports):
- python killSalome.py
- To kill SALOME from the present interpreter, if it is not closed :
- killLocalPort() --> kill this session
- (use CORBA port from args of runSalome)
- givenPortKill(port) --> kill a specific session with given CORBA port
- killAllPorts() --> kill all sessions
-
- runSalome, with --killall option, starts with killing
- the processes resulting from the previous execution.
- """%filedict
-
- #
- # Impression arborescence Naming Service
- #
-
- if clt != None:
- print
- print " --- registered objects tree in Naming Service ---"
- clt.showNS()
-
- return clt
-
-# -----------------------------------------------------------------------------
-
-def registerEnv(args, modules_list, modules_root_dir):
- """
- Register args, modules_list, modules_root_dir in a file
- for further use, when SALOME is launched embedded in an other application.
- """
- fileEnv = '/tmp/' + os.getenv('USER') + "_" + str(args['port']) \
- + '_' + args['appname'].upper() + '_env'
- fenv=open(fileEnv,'w')
- pickle.dump((args, modules_list, modules_root_dir),fenv)
- fenv.close()
- os.environ["SALOME_LAUNCH_CONFIG"] = fileEnv
-
-# -----------------------------------------------------------------------------
-
-def no_main():
- """Salome Launch, when embedded in other application"""
- fileEnv = os.environ["SALOME_LAUNCH_CONFIG"]
- fenv=open(fileEnv,'r')
- args, modules_list, modules_root_dir = pickle.load(fenv)
- fenv.close()
- kill_salome(args)
- clt = useSalome(args, modules_list, modules_root_dir)
- return clt
-
-# -----------------------------------------------------------------------------
-
-def main():
- """Salome launch as a main application"""
- args, modules_list, modules_root_dir = get_config()
- kill_salome(args)
- set_env(args, modules_list, modules_root_dir)
- clt = useSalome(args, modules_list, modules_root_dir)
- return clt,args
-
-# -----------------------------------------------------------------------------
-
-if __name__ == "__main__":
- import user
- clt,args = main()
+++ /dev/null
-
-======================================================================
-SALOME Application Concept. Configuration for one or more computers
-======================================================================
-
-*html version of this document is produced with docutils*::
-
- rest2html < doc.txt > doc.html
-
-This document corresponds to SALOME2 3.1. (alpha version)
-
-+-------------------------------------------+
-| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
-+-------------------------------------------+
-
-The following explains how to configure your own application with your list of
-modules, how to define and run this application on one or more computers.
-
-Summary
--------
-
-`1. General principles`_
-
-`2. Application Directory`_
-
-`2.1 Proposal for env.d scripts`_
-
-`2.2 User run scripts`_
-
-`2.3 SALOME internal run script`_
-
-`2.4 Other configuration files`_
-
-1. General principles
----------------------
-
-A SALOME application is defined by a set of modules (GEOM, SMESH, ASTER...).
-
-A SALOME User can define several SALOME Applications. These applications are
-runnable from the same user account. These applications may share the same
-KERNEL and modules. Thus, the application configuration is independant of
-KERNEL and must not be put in KERNEL_ROOT_DIR.
-
-Furthermore, prerequisites may not be the same on all the applications.
-
-A SALOME Session can run on a several computers.
-
-Binary modules and prerequisites are installed on the different computers.
-There is no need to have all the modules on each computer (the minimum is
-KERNEL).
-
-There is no need of standardization or centralised information on the details
-of configuration on each computer (PATH, LD_LIBRARY_PATH, environment
-variables) provided the application modules are version - compatible. Details
-of configuration stay private to the computer, and are held by scripts on each
-computer.
-
-There is no hierarchy between the computers (for example only one master
-computer used to launch application).
-
-The SALOME user has an account on all the computers. Access between
-account@computer is via rsh or ssh and must be configured for use without
-password (key exchange for ssh). Account may be different on each
-computer.
-
-2. Application Directory
-------------------------
-
-The script createAppli.sh in ${KERNEL_ROOT_DIR}/bin/salome creates an
-application directory with the given path in parameter. ${APPLI} is a path
-relative to ${HOME}.
-
-The directory is only a skeleton, the user has to edit several files to
-configure his own application.
-
-Directory ${APPLI} must be created on each computer of the application.
-The easiest way is to use the same relative path (to ${HOME}) on each computer.
-(Sometimes it is not possible to use the same path everywhere, for instance
-when ${HOME} is shared with NFS, so it is possible to define different path
-following the computers).
-
-The ${APPLI} directory contains scripts for environment and runs. Environment
-scripts must be configured (by the user) on each computer. All the environment
-scripts are in the ${APPLI}/env.d directory.
-
-The script ${APPLI}/envd sources **all** the files in ${APPLI}/env.d in
-alphanumeric order (after edition, think to remove backup files). the envd
-script is used by run scripts.
-
-2.1 Proposal for env.d scripts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Each user can define his own configuration for these scripts, following the
-above rules. The following is only a proposal.
-
-atFirst.sh
- Sets the computer configuration not directly related to SALOME,
- like useful tools, default PATH.
-
-envProducts.sh
- Sets the SALOME prerequisites.
-
-envSALOME.sh
- Sets all the MODULE_ROOT_DIR that can be used in the SALOME application.
-
-2.2 User run scripts
-~~~~~~~~~~~~~~~~~~~~
-
-The SALOME user can use 4 scripts:
-
-runAppli
- Launches a SALOME Session
- (similar to ${KERNEL_ROOT_DIR}/bin/salome/runSalome but with a different
- name to avoid confusions).
-
-runSession
- Launches a shell script in the SALOME application environment, with access
- to the current SALOME session (naming service), if any.
- Without arguments, the script is interactive. With arguments, the script
- executes the command in the SALOME application environment.
-
-runConsole
- Gives a python console connected to the current SALOME Session.
- It is also possible to use runSession, then python.
-
-runTests
- Similar to runSession, used for unit testing. runSession tries to use an
- already existing naming service definition from a running session (hostname
- and port number), runTests defines a new configuration for naming service
- (new port number).
-
-2.3 SALOME internal run script
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For remote calls, SALOME uses one script.
-
-runRemote.sh
- This script is mainly used to launch containers. The first 2 arguments
- define the hostname and port userd for naming service, the remaining
- arguments define the command to execute.
-
-2.4 Other configuration files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-SalomeApp.xml
- This file is similar to the default given in $GUI_ROOT_DIR
-
-CatalogRessources.xml
- This files describes all the computer the application can use. The given
- example is minimal and suppose ${APPLI} is the same relative path
- to ${HOME}, on all the computers. A different directory can be set on a
- particular computer with a line::
-
- appliPath="my/specific/path/on/this/computer"
-
-
-
+++ /dev/null
-# Doxyfile 1.3-rc1
-
-#---------------------------------------------------------------------------
-# General configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "SALOME v.2.1.0"
-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
-FILE_PATTERNS =
-RECURSIVE = NO
-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 =
+++ /dev/null
-foldersTree = gFld("<b>SALOME v.2.1.0 </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"))
-
-
+++ /dev/null
-DBRep_DrawableShape
-
-CASCADE Topology V1, (c) Matra-Datavision
-Locations 6
-1
- 1 0 0 0
- 0 1.11022302462516e-16 -1 0
- 0 1 6.1257422745431e-17 0
-1
-6.1257422745431e-17 -1 0 0
- 1 1.11022302462516e-16 0 0
- 0 0 1 0
-1
- 1 0 0 6.505
- 0 1 0 0
- 0 0 1 0
-1
- 1 0 0 0
- 0 1 0 0
- 0 0 1 -0.2
-2 1 1 2 1 3 1 4 1 0
-2 4 -1 3 -1 2 -1 1 -1 0
-Curve2ds 8
-1 0 0 1 0
-1 0 0 1 0
-1 4 0 0 1
-1 11 0 0 1
-1 11 0 0 1
-1 0 1 1 0
-1 0 1 1 0
-1 4 0 0 1
-Curves 7
-7 0 0 5 36 8 -1.4336500000000001 0.64996799999999999 -6.5049999999999999 -1.4336605 0.64972076670000001 -6.5049999999999999 -1.4336178749999999 0.64945686670000002 -6.5049999999999999 -1.4336992083 0.6492221333 -6.5049999999999999 -1.4336128333 0.64895823330000002 -6.5049999999999999 -1.43364 0.64871100000000004 -6.5049999999999999 -1.4334536667 0.61781496670000002 -6.5049999999999999 -1.4338860833000002 0.58679560000000008 -6.5049999999999999 -1.4337184999999999 0.55586383750000001 -6.5049999999999999 -1.4339196667 0.52489728330000007 -6.5049999999999999 -1.4339999999999999 0.49393500000000001 -6.5049999999999999 -1.4203730000000001 0.44235658329999999 -6.5049999999999999 -1.4019439167000001 0.39482056250000003 -6.5049999999999999 -1.3786762917000002 0.35127068750000001 -6.5049999999999999 -1.3506378333 0.31178091669999997 -6.5049999999999999 -1.3177400000000001 0.27629500000000001 -6.5049999999999999 -1.2811151667 0.23680705000000002 -6.5049999999999999 -1.238647625 0.2022839958 -6.5049999999999999 -1.1916550832999999 0.172336775 -6.5049999999999999 -1.1423406667 0.1464565333 -6.5049999999999999 -1.0919700000000001 0.124249 -6.5049999999999999 -1.0352280833 0.099204750000000008 -6.5049999999999999 -0.97734481250000005 0.078821291700000004 -6.5049999999999999 -0.91855039580000009 0.062216593699999996 -6.5049999999999999 -0.85908024999999999 0.048575291700000002 -6.5049999999999999 -0.79917499999999997 0.037031500000000002 -6.5049999999999999 -0.71422663330000002 0.020663891799999997 -6.5049999999999999 -0.62839160000000005 0.0085204118000000006 -6.5049999999999999 -0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999 -0.4554365333 -0.0055199242999999995 -6.5049999999999999 -0.36900400000000005 -0.0092480200000000009 -6.5049999999999999 -0.29509078329999999 -0.012436537700000002 -6.5049999999999999 -0.2212840875 -0.014272503300000001 -6.5049999999999999 -0.1475632875 -0.0151237605 -6.5049999999999999 -0.073806716699999997 -0.015365757300000001 -6.5049999999999999 0 -0.0153654 -6.5049999999999999
- 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 36 8 1.4336500000000001 0.64996799999999999 -6.5049999999999999 1.4336605 0.64972076670000001 -6.5049999999999999 1.4336178749999999 0.64945686670000002 -6.5049999999999999 1.4336992083 0.6492221333 -6.5049999999999999 1.4336128333 0.64895823330000002 -6.5049999999999999 1.43364 0.64871100000000004 -6.5049999999999999 1.4334536667 0.61781496670000002 -6.5049999999999999 1.4338860833000002 0.58679560000000008 -6.5049999999999999 1.4337184999999999 0.55586383750000001 -6.5049999999999999 1.4339196667 0.52489728330000007 -6.5049999999999999 1.4339999999999999 0.49393500000000001 -6.5049999999999999 1.4203730000000001 0.44235658329999999 -6.5049999999999999 1.4019439167000001 0.39482056250000003 -6.5049999999999999 1.3786762917000002 0.35127068750000001 -6.5049999999999999 1.3506378333 0.31178091669999997 -6.5049999999999999 1.3177400000000001 0.27629500000000001 -6.5049999999999999 1.2811151667 0.23680705000000002 -6.5049999999999999 1.238647625 0.2022839958 -6.5049999999999999 1.1916550832999999 0.172336775 -6.5049999999999999 1.1423406667 0.1464565333 -6.5049999999999999 1.0919700000000001 0.124249 -6.5049999999999999 1.0352280833 0.099204750000000008 -6.5049999999999999 0.97734481250000005 0.078821291700000004 -6.5049999999999999 0.91855039580000009 0.062216593699999996 -6.5049999999999999 0.85908024999999999 0.048575291700000002 -6.5049999999999999 0.79917499999999997 0.037031500000000002 -6.5049999999999999 0.71422663330000002 0.020663891799999997 -6.5049999999999999 0.62839160000000005 0.0085204118000000006 -6.5049999999999999 0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999 0.4554365333 -0.0055199242999999995 -6.5049999999999999 0.36900400000000005 -0.0092480200000000009 -6.5049999999999999 0.29509078329999999 -0.012436537700000002 -6.5049999999999999 0.2212840875 -0.014272503300000001 -6.5049999999999999 0.1475632875 -0.0151237605 -6.5049999999999999 0.073806716699999997 -0.015365757300000001 -6.5049999999999999 0 -0.0153654 -6.5049999999999999
- 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-1 -1.4336500000000001 0.64996799999999999 -6.5049999999999999 1 0 0
-7 1 0 5 6 2 0 -1.4336500000000012 0.44996799999999954 1 1.6261605900786513 -1.6018359687478967 0.50133159091572177 0.99999999999999123 3.197537687201788 -1.3597569987336706 0.54529808698484217 1.00000000000002 3.163340737824532 -1.6307640784352895 0.54895174812063019 0.9999999999999809 5.6480191182691533 -0.70777342625966599 0.62409523622375362 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 1
- 0 6 1 6
-7 1 0 5 6 2 0 -1.2702642757100887e-15 -0.2153654000000004 1 1.6301107356496369 -1.0892856285694023e-15 -0.48063406919001683 0.99999999999999123 3.2616899716505454 -9.0814394513853924e-16 -0.34829923223785531 1.00000000000002 3.0108044478154201 -9.3599783364924434e-16 -0.51558946287975504 0.9999999999999809 5.8048915685398486 -6.2579184822554488e-16 -0.26361891182622504 1.0000000000000084 6.4756682999999997 -5.5132067106056179e-16 -0.17298380000000002 1
- 0 6 1 6
-7 0 0 5 36 8 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 6.5049999999999999 -5.48064198191422e-16 0.61282594999999995 6.5049999999999999 -5.48064198191422e-16 0.57565721250000013 6.5049999999999999 -5.48064198191422e-16 0.53847607920000007 6.5049999999999999 -5.48064198191422e-16 0.50131171670000008 6.5049999999999999 -5.48064198191422e-16 0.46413599999999994 6.5049999999999999 -5.48064198191422e-16 0.42103916670000002 6.5049999999999999 -5.48064198191422e-16 0.37789566670000002 6.5049999999999999 -5.48064198191422e-16 0.33463570830000006 6.5049999999999999 -5.48064198191422e-16 0.2913353333 6.5049999999999999 -5.48064198191422e-16 0.24795600000000001 6.5049999999999999 -5.48064198191422e-16 0.21525483329999995 6.5049999999999999 -5.48064198191422e-16 0.18255970830000001 6.5049999999999999 -5.48064198191422e-16 0.14975604170000001 6.5049999999999999 -5.48064198191422e-16 0.11698966669999999 6.5049999999999999 -5.48064198191422e-16 0.084145999999999999 6.5049999999999999 -5.48064198191422e-16 0.057401949999999979 6.5049999999999999 -5.48064198191422e-16 0.030663212499999981 6.5049999999999999 -5.48064198191422e-16 0.0039120791999999738 6.5049999999999999 -5.48064198191422e-16 -0.022822283300000024 6.5049999999999999 -5.48064198191422e-16 -0.049568000000000029 6.5049999999999999 -5.48064198191422e-16 -0.065376400000000001 6.5049999999999999 -5.48064198191422e-16 -0.081184800000000001 6.5049999999999999 -5.48064198191422e-16 -0.096993200000000016 6.5049999999999999 -5.48064198191422e-16 -0.1128016 6.5049999999999999 -5.48064198191422e-16 -0.12861 6.5049717682999999 -5.4806733253975843e-16 -0.14198959330000002 6.5022298991999996 -5.4837174116029129e-16 -0.15311614500000001 6.4962763716999996 -5.4903271549111519e-16 -0.1619915821 6.48749004 -5.5000819426664854e-16 -0.16861366500000002 6.4756682999999997 -5.5132067106056179e-16 -0.17298380000000002
- 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 1 0 5 6 2 0 1.4336500000000008 0.44996799999999954 1 1.6261605900786513 1.6018359687478962 0.50133159091572177 0.99999999999999123 3.197537687201788 1.3597569987336702 0.54529808698484217 1.00000000000002 3.163340737824532 1.630764078435289 0.54895174812063019 0.9999999999999809 5.6480191182691533 0.70777342625966544 0.62409523622375362 1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991 1
- 0 6 1 6
-Polygon3D 0
-PolygonOnTriangulations 11
-8 1 3 4 5 6 7 8 2
-p 0.28680002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11
-8 1 9 10 11 12 13 14 15
-p 0.65050002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11
-8 9 10 11 12 13 14 15 2
-p 0.28680002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11
-8 1 9 10 11 12 13 14 15
-p 0.65050002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11
-2 1 9
-p 0.28680002 1 0 2.8673
-8 1 3 4 5 6 7 8 2
-p 0.65050002 1 0 0.27 0.46683 0.6144525 0.7663275 0.9182025 0.95910125 1
-4 15 17 18 16
-p 0.65050002 1 0 0.333333333333333 0.666666666666667 1
-4 15 16 17 18
-p 0.761601513 1 0 0.333333333333333 0.666666666666667 1
-5 2 19 20 21 16
-p 0.3291936 1 4 7.11111111111111 10.2222222222222 10.6111111111111 11
-5 2 19 20 21 18
-p 0.65050002 1 4 7.11111111111111 10.2222222222222 10.6111111111111 11
-8 1 3 4 5 6 7 8 2
-p 0.65050002 1 0 0.27 0.46683 0.6144525 0.7663275 0.9182025 0.95910125 1
-Surfaces 3
-1 0 0 -6.5049999999999999 0 0 1 1 0 -0 -0 1 0
-9 1 0 0 0 5 5 36 6 8 2 0 -1.4336500000000012 0.44996799999999954 1 1.6261605900786513 -1.6018359687478967 0.50133159091572177 0.99999999999999123 3.197537687201788 -1.3597569987336706 0.54529808698484217 1.00000000000002 3.163340737824532 -1.6307640784352895 0.54895174812063019 0.9999999999999809 5.6480191182691533 -0.70777342625966599 0.62409523622375362 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 1
-0 -1.4336605000000011 0.44972076669999955 1 1.6400156548996869 -1.596515654739741 0.49680307239596166 0.99999999999999123 3.1655248440155725 -1.3924568269312445 0.59018855957463812 1.00000000000002 3.1808046621826938 -1.5532909396702321 0.41139589970412355 0.9999999999999809 5.654846610439936 -0.71753119566173762 0.64265549515955556 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 1
-0 -1.433617875000001 0.44945686669999957 1 1.6506584879977897 -1.5922532479624822 0.49177870525204603 0.99999999999999123 3.1411873334678044 -1.4188920682190418 0.63692979799464955 1.00000000000002 3.194328618841463 -1.492139575555754 0.27060102810993697 0.9999999999999809 5.6601234641615443 -0.72484600698083768 0.66143488236555736 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 1
-0 -1.4336992083000011 0.44922213329999955 1 1.6576040194166746 -1.5873960554461539 0.48630597029020578 0.99999999999999123 3.1243290671000779 -1.4407978495894476 0.68565925643462255 1.00000000000002 3.2044356421761373 -1.4467997269838779 0.12641574118463941 0.9999999999999809 5.6632372560436925 -0.72967269820712544 0.68044642465747673 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 1
-0 -1.4336128333000011 0.44895823329999957 1 1.661460468803355 -1.5837538230348516 0.48029503278954838 0.99999999999999123 3.1157743827622624 -1.4567026640898446 0.73625732176641601 1.00000000000002 3.2097596991925323 -1.4177336596546268 -0.020999411630545545 0.9999999999999809 5.6651076542439549 -0.73206850766754095 0.69967203886878782 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 1
-0 -1.4336400000000011 0.44871099999999958 1 1.6617199495650541 -1.580153159181267 0.47383155703797997 0.99999999999999123 3.1145446090069875 -1.4671701117791915 0.78877811687612887 1.00000000000002 3.2117648502985281 -1.4047569944934635 -0.17173786500016977 0.9999999999999809 5.6649275028909392 -0.73198055176979504 0.71912076249112344 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991 1
-0 -1.4334536667000011 0.41781496669999957 1 1.6585846326587925 -1.5873496118654769 0.44276327840713481 0.99999999999999123 3.1238627684672795 -1.436901258698742 0.70845138408142261 1.00000000000002 3.200691534143417 -1.4450909520432809 -0.069881705908850025 0.9999999999999809 5.6712707573050887 -0.70653745235000698 0.67022669391364287 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.61282594999999995 1
-0 -1.4338860833000013 0.38679559999999963 1 1.6595678374105531 -1.5935105282194739 0.41184681055280242 0.99999999999999123 3.1279079330880668 -1.4073680420109922 0.62790277079899581 1.00000000000002 3.1931656606434964 -1.4849597779038357 0.032247032264193502 0.9999999999999809 5.6763290500484702 -0.68134175331416669 0.62121033938316328 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.57565721250000013 1
-0 -1.433718500000001 0.35586383749999956 1 1.6562673519558917 -1.5989257401417531 0.38111319384492054 0.99999999999999123 3.1355009246239662 -1.3760091594904507 0.54695823996489745 1.00000000000002 3.1843861418390853 -1.5264086617504995 0.13481421887590461 0.9999999999999809 5.6815370619686911 -0.65574048327470236 0.57189117823854485 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.53847607920000007 1
-0 -1.4339196667000011 0.32489728329999962 1 1.6563823641089357 -1.5956038422640375 0.35130442637470416 0.99999999999999123 3.1404393442778584 -1.3579500750749196 0.46454694270028657 1.00000000000002 3.1768506331851296 -1.5580419941652228 0.23854962743965119 0.9999999999999809 5.6862198210563522 -0.63374786732810706 0.52215929713737808 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.50131171670000008 1
-0 -1.4340000000000011 0.29393499999999961 1 1.6549615753593554 -1.5830463167892219 0.32273366185676522 0.99999999999999123 3.1460611378467807 -1.3516439153948141 0.38041312976713093 1.00000000000002 3.1695626895920279 -1.5813337130453256 0.34359554092746541 0.9999999999999809 5.6906524727603918 -0.61488511446441096 0.47186993524852427 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.46413599999999994 1
-0 -1.4203730000000012 0.2423565832999996 1 1.6543010001077403 -1.5878646977942659 0.26866694328112467 0.99999999999999123 3.1514139096491514 -1.319176200135775 0.29492162054468651 1.00000000000002 3.1633116123061802 -1.6177118468824343 0.29727467040829747 0.9999999999999809 5.6955339521523092 -0.58208281977952747 0.42369275260883937 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.42103916670000002 1
-0 -1.4019439167000012 0.19482056249999963 1 1.6529544447898721 -1.5757951751485078 0.20738997531697517 0.99999999999999123 3.1581513603847027 -1.309221515999148 0.21690440791400878 1.00000000000002 3.1562571204977159 -1.6321216654491635 0.24661667123332054 0.9999999999999809 5.7001641661755968 -0.55484659535963288 0.3771188399210591 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.37789566670000002 1
-0 -1.3786762917000013 0.15127068749999961 1 1.6513939308634327 -1.5512129420956484 0.14423037418120646 0.99999999999999123 3.1648479458951071 -1.3106993214971123 0.14332111981541304 1.00000000000002 3.1494429169891927 -1.6287421029473848 0.19325025896208289 0.9999999999999809 5.7040934281434019 -0.53245635516036194 0.33211569582677336 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.33463570830000006 1
-0 -1.3506378333000011 0.11178091669999957 1 1.6495889183038299 -1.5153361784803252 0.083809016176971077 0.99999999999999123 3.1721147740355935 -1.3133602070342767 0.072812292976349433 1.00000000000002 3.1424309087803777 -1.6140695072311599 0.13803554405340746 0.9999999999999809 5.7078452140145055 -0.51245571560264769 0.28863532754181181 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.2913353333 1
-0 -1.3177400000000012 0.076294999999999613 1 1.6485877782998006 -1.47244327482729 0.031445616502008708 0.99999999999999123 3.1772036854590451 -1.3057907312814181 0.0022113386428762229 1.00000000000002 3.1372530970478119 -1.5927264448139689 0.082858098621042459 0.9999999999999809 5.7108181744699156 -0.49399606565377652 0.24649290312935487 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.24795600000000001 1
-0 -1.2811151667000011 0.036807049999999619 1 1.6479215232887923 -1.4481138556428514 -0.0034994963647348811 0.99999999999999123 3.1809789953420351 -1.2984903019296825 -0.0457928457522268 1.00000000000002 3.1334441910773672 -1.5752568959202087 0.034759734054665939 0.9999999999999809 5.7130192738963137 -0.4800079314307174 0.2139476736738174 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.21525483329999995 1
-0 -1.2386476250000011 0.0022839957999996052 1 1.6473025492318252 -1.4226122061336262 -0.035769638365498221 0.99999999999999123 3.1846854762215004 -1.2839957622221869 -0.09342962389256057 1.00000000000002 3.129708811905755 -1.5536449962363714 -0.012855623627513572 0.9999999999999809 5.7150670385870059 -0.46697828941107661 0.1818750704625462 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.18255970830000001 1
-0 -1.191655083300001 -0.027663225000000402 1 1.647347442976745 -1.3963140144476183 -0.066038995427979447 0.99999999999999123 3.1865489772697075 -1.2614172907843229 -0.13761261112971743 1.00000000000002 3.127735889142869 -1.528048309625252 -0.060263423193341832 0.9999999999999809 5.7165025871669242 -0.45419278287329146 0.15046818447744587 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.14975604170000001 1
-0 -1.1423406667000011 -0.053543466700000403 1 1.6475774673982779 -1.370604111802489 -0.094877881364486924 0.99999999999999123 3.1880576148411461 -1.2307317897625329 -0.17615568605734247 1.00000000000002 3.1255807663587865 -1.4947625153746946 -0.10553380430524842 0.9999999999999809 5.717968691823673 -0.44278516629992387 0.11847577837761357 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.11698966669999999 1
-0 -1.0919700000000012 -0.075751000000000415 1 1.6480023139640461 -1.3444320999488228 -0.12362866978542278 0.99999999999999123 3.1885134010722003 -1.1936918518813693 -0.20482326247385416 1.00000000000002 3.1246341193658602 -1.4560281673125137 -0.14826823786040147 0.9999999999999809 5.7189052827105282 -0.43053800840199119 0.085556435087671065 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.084145999999999999 1
-0 -1.0352280833000012 -0.10079525000000041 1 1.6490913169205279 -1.2749655484198994 -0.18298146793115833 0.99999999999999123 3.1883150231899009 -1.1628015026179599 -0.22955541537812463 1.00000000000002 3.1241794214772818 -1.4051825514982024 -0.21350942052349295 0.9999999999999809 5.7197360679734048 -0.42458641474270081 0.061984610291792329 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.057401949999999979 1
-0 -0.97734481250000138 -0.12117870830000041 1 1.6496855449783792 -1.2023944417340386 -0.23424379207629414 0.99999999999999123 3.1878088681107997 -1.1212928776316518 -0.24116178483719211 1.00000000000002 3.1237792237800042 -1.344826174344848 -0.27565819302906774 0.9999999999999809 5.7204919344010952 -0.42061941833535399 0.036330884320337174 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.030663212499999981 1
-0 -0.91855039580000142 -0.13778340630000041 1 1.6509024847804952 -1.12534436243289 -0.27947580143931228 0.99999999999999123 3.1871135887629252 -1.0738407105494425 -0.24270306234480629 1.00000000000002 3.123363208447222 -1.2801590008609163 -0.32939027481774275 0.9999999999999809 5.7214928671410936 -0.41442427512437563 0.0078552946102686382 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.0039120791999999738 1
-0 -0.85908025000000132 -0.1514247083000004 1 1.6514602330757429 -1.046060138107104 -0.31872905948094205 0.99999999999999123 3.18667973843873 -1.0249094414255635 -0.24049491850395333 1.00000000000002 3.1223307902143023 -1.2129119277871387 -0.37172468958898514 0.9999999999999809 5.722441859665591 -0.40365989959986359 -0.02267260671769409 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.022822283300000024 1
-0 -0.7991750000000013 -0.1629685000000004 1 1.6519135392646134 -0.96382482572027139 -0.34987705197804536 0.99999999999999123 3.1866547085711132 -0.97923623780916069 -0.24460115073122723 1.00000000000002 3.1212995352044639 -1.1458402899320621 -0.40215091141189735 0.9999999999999809 5.7234166955905161 -0.38520404523873769 -0.052585896625352013 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.049568000000000029 1
-0 -0.71422663330000136 -0.1793361082000004 1 1.6532142396598908 -0.87146009976235372 -0.38610470439916605 0.99999999999999123 3.1854904230160579 -0.8446779310542526 -0.27223886617574689 1.00000000000002 3.1203850557957349 -1.0505829071685253 -0.44838167077727331 0.9999999999999809 5.7245168752795514 -0.38064671977314096 -0.094033715039109275 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.065376400000000001 1
-0 -0.62839160000000138 -0.19147958820000041 1 1.65276556236214 -0.77264328213728506 -0.41149215631879033 0.99999999999999123 3.1878638208645604 -0.72093941709612885 -0.2973931091787978 1.00000000000002 3.1170662231573569 -0.94555049467549368 -0.4740559497120384 0.9999999999999809 5.7259815427224083 -0.36894436680991155 -0.13694212995821936 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.081184800000000001 1
-0 -0.54202406670000136 -0.1999395599000004 1 1.6537006487902617 -0.67128593549879101 -0.42920032205706654 0.99999999999999123 3.1865541762189493 -0.59952302374827615 -0.31822523274111397 1.00000000000002 3.1165914943536075 -0.83911789461617359 -0.48664338221706044 0.9999999999999809 5.7265595045316777 -0.34924188084883595 -0.1763952236106239 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.096993200000000016 1
-0 -0.45543653330000128 -0.20551992430000041 1 1.6532859898246155 -0.57072991871383538 -0.44168678900283492 0.99999999999999123 3.1889922534492792 -0.47187731874243499 -0.33473722304513903 1.00000000000002 3.113408698752695 -0.74107517023063907 -0.49192434676192703 0.9999999999999809 5.7279643163112564 -0.31967883265540986 -0.2080588414311749 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.1128016 1
-0 -0.36900400000000133 -0.20924802000000042 1 1.6535793351660395 -0.47617037434290554 -0.4509782640107739 0.99999999999999123 3.1886894664401888 -0.32679800642482215 -0.34646950335365834 1.00000000000002 3.1128337072765428 -0.6608873869721692 -0.49623379649899363 0.9999999999999809 5.7285586049778381 -0.27929861676234574 -0.22746335729925196 1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.12861 1
-0 -0.29509078330000127 -0.2124365377000004 1 1.6533430786054526 -0.37671583850670476 -0.46396505674457589 0.99999999999999123 3.1902895585564552 -0.27594462061656733 -0.34219343723599083 1.00000000000002 3.1104776588263099 -0.50749009570684289 -0.51075007568215924 0.9999999999999809 5.7294891659970224 -0.23921026685059071 -0.25242810944966859 1.0000000000000084 6.5049717682999999 -5.4806733253975843e-16 -0.14198959330000002 1
-0 -0.22128408750000128 -0.21427250330000042 1 1.6512550117906617 -0.28151063542080246 -0.46833765764586544 0.99999999999999123 3.1961115594321829 -0.21220986805640826 -0.35315295047567047 1.00000000000002 3.1025997536493417 -0.36904437927938805 -0.50514281738321021 0.9999999999999809 5.735304295172309 -0.18776020592975087 -0.27032296455033022 1.0000000000000084 6.5022298991999996 -5.4837174116029129e-16 -0.15311614500000001 1
-0 -0.14756328750000128 -0.2151237605000004 1 1.6475625206719269 -0.18878432519520197 -0.46909048659368391 0.99999999999999123 3.2089504030233806 -0.14032299201629181 -0.36658189825507032 1.00000000000002 3.0842817660168516 -0.24202588267923317 -0.49397776708614699 0.9999999999999809 5.7492010389608916 -0.12781701365559173 -0.27940640413322615 1.0000000000000084 6.4962763716999996 -5.4903271549111519e-16 -0.1619915821 1
-0 -0.07380671670000126 -0.2153657573000004 1 1.6406977747402305 -0.096338544669297796 -0.47140320111980222 0.99999999999999123 3.2291746811163033 -0.065888576133830257 -0.3693901671607549 1.00000000000002 3.0557613770603251 -0.12226349886069415 -0.49260494439257202 0.9999999999999809 5.7713707162768566 -0.063142140712637559 -0.27765152437508905 1.0000000000000084 6.48749004 -5.5000819426664854e-16 -0.16861366500000002 1
-0 -1.2702642757100887e-15 -0.2153654000000004 1 1.6301107356496369 -1.0892856285694023e-15 -0.48063406919001683 0.99999999999999123 3.2616899716505454 -9.0814394513853924e-16 -0.34829923223785531 1.00000000000002 3.0108044478154201 -9.3599783364924434e-16 -0.51558946287975504 0.9999999999999809 5.8048915685398486 -6.2579184822554488e-16 -0.26361891182622504 1.0000000000000084 6.4756682999999997 -5.5132067106056179e-16 -0.17298380000000002 1
-
-4 6
-5 5
-6 5
-7 5
-8 5
-9 5
-10 5
-11 6
-
-0 6
-1 6
-
-9 1 0 0 0 5 5 36 6 8 2 0 1.4336500000000008 0.44996799999999954 1 1.6261605900786513 1.6018359687478962 0.50133159091572177 0.99999999999999123 3.197537687201788 1.3597569987336702 0.54529808698484217 1.00000000000002 3.163340737824532 1.630764078435289 0.54895174812063019 0.9999999999999809 5.6480191182691533 0.70777342625966544 0.62409523622375362 1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991 1
-0 1.4336605000000007 0.44972076669999955 1 1.6400156548996869 1.5965156547397406 0.49680307239596166 0.99999999999999123 3.1655248440155725 1.3924568269312441 0.59018855957463812 1.00000000000002 3.1808046621826938 1.5532909396702317 0.41139589970412355 0.9999999999999809 5.654846610439936 0.71753119566173706 0.64265549515955556 1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991 1
-0 1.4336178750000006 0.44945686669999957 1 1.6506584879977897 1.5922532479624818 0.49177870525204603 0.99999999999999123 3.1411873334678044 1.4188920682190413 0.63692979799464955 1.00000000000002 3.194328618841463 1.4921395755557536 0.27060102810993697 0.9999999999999809 5.6601234641615443 0.72484600698083712 0.66143488236555736 1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991 1
-0 1.4336992083000006 0.44922213329999955 1 1.6576040194166746 1.5873960554461535 0.48630597029020578 0.99999999999999123 3.1243290671000779 1.4407978495894471 0.68565925643462255 1.00000000000002 3.2044356421761373 1.4467997269838775 0.12641574118463941 0.9999999999999809 5.6632372560436925 0.72967269820712488 0.68044642465747673 1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991 1
-0 1.4336128333000007 0.44895823329999957 1 1.661460468803355 1.5837538230348511 0.48029503278954838 0.99999999999999123 3.1157743827622624 1.4567026640898442 0.73625732176641601 1.00000000000002 3.2097596991925323 1.4177336596546264 -0.020999411630545545 0.9999999999999809 5.6651076542439549 0.73206850766754039 0.69967203886878782 1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991 1
-0 1.4336400000000007 0.44871099999999958 1 1.6617199495650541 1.5801531591812665 0.47383155703797997 0.99999999999999123 3.1145446090069875 1.4671701117791911 0.78877811687612887 1.00000000000002 3.2117648502985281 1.404756994493463 -0.17173786500016977 0.9999999999999809 5.6649275028909392 0.73198055176979449 0.71912076249112344 1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991 1
-0 1.4334536667000006 0.41781496669999957 1 1.6585846326587925 1.5873496118654764 0.44276327840713481 0.99999999999999123 3.1238627684672795 1.4369012586987415 0.70845138408142261 1.00000000000002 3.200691534143417 1.4450909520432804 -0.069881705908850025 0.9999999999999809 5.6712707573050887 0.70653745235000642 0.67022669391364287 1.0000000000000084 6.5049999999999999 1.0018853354752077e-32 0.61282594999999995 1
-0 1.4338860833000009 0.38679559999999963 1 1.6595678374105531 1.5935105282194735 0.41184681055280242 0.99999999999999123 3.1279079330880668 1.4073680420109917 0.62790277079899581 1.00000000000002 3.1931656606434964 1.4849597779038353 0.032247032264193502 0.9999999999999809 5.6763290500484702 0.68134175331416613 0.62121033938316328 1.0000000000000084 6.5049999999999999 9.5607132936556335e-33 0.57565721250000013 1
-0 1.4337185000000006 0.35586383749999956 1 1.6562673519558917 1.5989257401417527 0.38111319384492054 0.99999999999999123 3.1355009246239662 1.3760091594904502 0.54695823996489745 1.00000000000002 3.1843861418390853 1.5264086617504991 0.13481421887590461 0.9999999999999809 5.6815370619686911 0.6557404832747018 0.57189117823854485 1.0000000000000084 6.5049999999999999 9.1024204425278003e-33 0.53847607920000007 1
-0 1.4339196667000007 0.32489728329999962 1 1.6563823641089357 1.5956038422640371 0.35130442637470416 0.99999999999999123 3.1404393442778584 1.3579500750749192 0.46454694270028657 1.00000000000002 3.1768506331851296 1.5580419941652224 0.23854962743965119 0.9999999999999809 5.6862198210563522 0.63374786732810651 0.52215929713737808 1.0000000000000084 6.5049999999999999 8.6443343074698004e-33 0.50131171670000008 1
-0 1.4340000000000006 0.29393499999999961 1 1.6549615753593554 1.5830463167892215 0.32273366185676522 0.99999999999999123 3.1460611378467807 1.3516439153948137 0.38041312976713093 1.00000000000002 3.1695626895920279 1.5813337130453251 0.34359554092746541 0.9999999999999809 5.6906524727603918 0.61488511446441041 0.47186993524852427 1.0000000000000084 6.5049999999999999 8.1861082210916421e-33 0.46413599999999994 1
-0 1.4203730000000008 0.2423565832999996 1 1.6543010001077403 1.5878646977942654 0.26866694328112467 0.99999999999999123 3.1514139096491514 1.3191762001357745 0.29492162054468651 1.00000000000002 3.1633116123061802 1.6177118468824339 0.29727467040829747 0.9999999999999809 5.6955339521523092 0.58208281977952692 0.42369275260883937 1.0000000000000084 6.5049999999999999 7.6548987378229366e-33 0.42103916670000002 1
-0 1.4019439167000007 0.19482056249999963 1 1.6529544447898721 1.5757951751485073 0.20738997531697517 0.99999999999999123 3.1581513603847027 1.3092215159991476 0.21690440791400878 1.00000000000002 3.1562571204977159 1.632121665449163 0.24661667123332054 0.9999999999999809 5.7001641661755968 0.55484659535963232 0.3771188399210591 1.0000000000000084 6.5049999999999999 7.1231140430666399e-33 0.37789566670000002 1
-0 1.3786762917000008 0.15127068749999961 1 1.6513939308634327 1.551212942095648 0.14423037418120646 0.99999999999999123 3.1648479458951071 1.3106993214971119 0.14332111981541304 1.00000000000002 3.1494429169891927 1.6287421029473843 0.19325025896208289 0.9999999999999809 5.7040934281434019 0.53245635516036138 0.33211569582677336 1.0000000000000084 6.5049999999999999 6.5898938877033984e-33 0.33463570830000006 1
-0 1.3506378333000006 0.11178091669999957 1 1.6495889183038299 1.5153361784803248 0.083809016176971077 0.99999999999999123 3.1721147740355935 1.3133602070342763 0.072812292976349433 1.00000000000002 3.1424309087803777 1.6140695072311595 0.13803554405340746 0.9999999999999809 5.7078452140145055 0.51245571560264713 0.28863532754181181 1.0000000000000084 6.5049999999999999 6.0561755592829369e-33 0.2913353333 1
-0 1.3177400000000008 0.076294999999999613 1 1.6485877782998006 1.4724432748272895 0.031445616502008708 0.99999999999999123 3.1772036854590451 1.3057907312814176 0.0022113386428762229 1.00000000000002 3.1372530970478119 1.5927264448139684 0.082858098621042459 0.9999999999999809 5.7108181744699156 0.49399606565377596 0.24649290312935487 1.0000000000000084 6.5049999999999999 5.5214839946747777e-33 0.24795600000000001 1
-0 1.2811151667000007 0.036807049999999619 1 1.6479215232887923 1.448113855642851 -0.0034994963647348811 0.99999999999999123 3.1809789953420351 1.2984903019296821 -0.0457928457522268 1.00000000000002 3.1334441910773672 1.5752568959202082 0.034759734054665939 0.9999999999999809 5.7130192738963137 0.48000793143071685 0.2139476736738174 1.0000000000000084 6.5049999999999999 5.118410995225631e-33 0.21525483329999995 1
-0 1.2386476250000007 0.0022839957999996052 1 1.6473025492318252 1.4226122061336257 -0.035769638365498221 0.99999999999999123 3.1846854762215004 1.2839957622221865 -0.09342962389256057 1.00000000000002 3.129708811905755 1.553644996236371 -0.012855623627513572 0.9999999999999809 5.7150670385870059 0.46697828941107605 0.1818750704625462 1.0000000000000084 6.5049999999999999 4.7154124654785332e-33 0.18255970830000001 1
-0 1.1916550833000006 -0.027663225000000402 1 1.647347442976745 1.3963140144476178 -0.066038995427979447 0.99999999999999123 3.1865489772697075 1.2614172907843224 -0.13761261112971743 1.00000000000002 3.127735889142869 1.5280483096252515 -0.060263423193341832 0.9999999999999809 5.7165025871669242 0.4541927828732909 0.15046818447744587 1.0000000000000084 6.5049999999999999 4.3110760572184637e-33 0.14975604170000001 1
-0 1.1423406667000007 -0.053543466700000403 1 1.6475774673982779 1.3706041118024885 -0.094877881364486924 0.99999999999999123 3.1880576148411461 1.2307317897625325 -0.17615568605734247 1.00000000000002 3.1255807663587865 1.4947625153746942 -0.10553380430524842 0.9999999999999809 5.717968691823673 0.44278516629992332 0.11847577837761357 1.0000000000000084 6.5049999999999999 3.907199303416725e-33 0.11698966669999999 1
-0 1.0919700000000008 -0.075751000000000415 1 1.6480023139640461 1.3444320999488224 -0.12362866978542278 0.99999999999999123 3.1885134010722003 1.1936918518813688 -0.20482326247385416 1.00000000000002 3.1246341193658602 1.4560281673125133 -0.14826823786040147 0.9999999999999809 5.7189052827105282 0.43053800840199064 0.085556435087671065 1.0000000000000084 6.5049999999999999 3.5023698558582973e-33 0.084145999999999999 1
-0 1.0352280833000007 -0.10079525000000041 1 1.6490913169205279 1.274965548419899 -0.18298146793115833 0.99999999999999123 3.1883150231899009 1.1628015026179594 -0.22955541537812463 1.00000000000002 3.1241794214772818 1.4051825514982019 -0.21350942052349295 0.9999999999999809 5.7197360679734048 0.42458641474270026 0.061984610291792329 1.0000000000000084 6.5049999999999999 3.1727239887914825e-33 0.057401949999999979 1
-0 0.97734481250000083 -0.12117870830000041 1 1.6496855449783792 1.2023944417340382 -0.23424379207629414 0.99999999999999123 3.1878088681107997 1.1212928776316513 -0.24116178483719211 1.00000000000002 3.1237792237800042 1.3448261743448475 -0.27565819302906774 0.9999999999999809 5.7204919344010952 0.42061941833535343 0.036330884320337174 1.0000000000000084 6.5049999999999999 2.8431436033427772e-33 0.030663212499999981 1
-0 0.91855039580000086 -0.13778340630000041 1 1.6509024847804952 1.1253443624328896 -0.27947580143931228 0.99999999999999123 3.1871135887629252 1.0738407105494421 -0.24270306234480629 1.00000000000002 3.123363208447222 1.2801590008609158 -0.32939027481774275 0.9999999999999809 5.7214928671410936 0.41442427512437507 0.0078552946102686382 1.0000000000000084 6.5049999999999999 2.513410427862682e-33 0.0039120791999999738 1
-0 0.85908025000000077 -0.1514247083000004 1 1.6514602330757429 1.0460601381071035 -0.31872905948094205 0.99999999999999123 3.18667973843873 1.0249094414255631 -0.24049491850395333 1.00000000000002 3.1223307902143023 1.2129119277871383 -0.37172468958898514 0.9999999999999809 5.722441859665591 0.40365989959986304 -0.02267260671769409 1.0000000000000084 6.5049999999999999 2.1838839684524195e-33 -0.022822283300000024 1
-0 0.79917500000000075 -0.1629685000000004 1 1.6519135392646134 0.96382482572027084 -0.34987705197804536 0.99999999999999123 3.1866547085711132 0.97923623780916014 -0.24460115073122723 1.00000000000002 3.1212995352044639 1.1458402899320617 -0.40215091141189735 0.9999999999999809 5.7234166955905161 0.38520404523873714 -0.052585896625352013 1.0000000000000084 6.5049999999999999 1.8542175577219997e-33 -0.049568000000000029 1
-0 0.7142266333000008 -0.1793361082000004 1 1.6532142396598908 0.87146009976235317 -0.38610470439916605 0.99999999999999123 3.1854904230160579 0.84467793105425204 -0.27223886617574689 1.00000000000002 3.1203850557957349 1.0505829071685249 -0.44838167077727331 0.9999999999999809 5.7245168752795514 0.38064671977314041 -0.094033715039109275 1.0000000000000084 6.5049999999999999 1.6593639837517511e-33 -0.065376400000000001 1
-0 0.62839160000000083 -0.19147958820000041 1 1.65276556236214 0.7726432821372845 -0.41149215631879033 0.99999999999999123 3.1878638208645604 0.7209394170961283 -0.2973931091787978 1.00000000000002 3.1170662231573569 0.94555049467549313 -0.4740559497120384 0.9999999999999809 5.7259815427224083 0.368944366809911 -0.13694212995821936 1.0000000000000084 6.5049999999999999 1.4645104097815023e-33 -0.081184800000000001 1
-0 0.54202406670000081 -0.1999395599000004 1 1.6537006487902617 0.67128593549879045 -0.42920032205706654 0.99999999999999123 3.1865541762189493 0.5995230237482756 -0.31822523274111397 1.00000000000002 3.1165914943536075 0.83911789461617303 -0.48664338221706044 0.9999999999999809 5.7265595045316777 0.3492418808488354 -0.1763952236106239 1.0000000000000084 6.5049999999999999 1.2696568358112534e-33 -0.096993200000000016 1
-0 0.45543653330000072 -0.20551992430000041 1 1.6532859898246155 0.57072991871383483 -0.44168678900283492 0.99999999999999123 3.1889922534492792 0.47187731874243444 -0.33473722304513903 1.00000000000002 3.113408698752695 0.74107517023063851 -0.49192434676192703 0.9999999999999809 5.7279643163112564 0.31967883265540931 -0.2080588414311749 1.0000000000000084 6.5049999999999999 1.0748032618410048e-33 -0.1128016 1
-0 0.36900400000000078 -0.20924802000000042 1 1.6535793351660395 0.47617037434290499 -0.4509782640107739 0.99999999999999123 3.1886894664401888 0.3267980064248216 -0.34646950335365834 1.00000000000002 3.1128337072765428 0.66088738697216864 -0.49623379649899363 0.9999999999999809 5.7285586049778381 0.27929861676234519 -0.22746335729925196 1.0000000000000084 6.5049999999999999 8.7994968787075593e-34 -0.12861 1
-0 0.29509078330000071 -0.2124365377000004 1 1.6533430786054526 0.3767158385067042 -0.46396505674457589 0.99999999999999123 3.1902895585564552 0.27594462061656677 -0.34219343723599083 1.00000000000002 3.1104776588263099 0.50749009570684234 -0.51075007568215924 0.9999999999999809 5.7294891659970224 0.23921026685059016 -0.25242810944966859 1.0000000000000084 6.5049717682999999 3.134348336431728e-21 -0.14198959330000002 1
-0 0.22128408750000073 -0.21427250330000042 1 1.6512550117906617 0.2815106354208019 -0.46833765764586544 0.99999999999999123 3.1961115594321829 0.21220986805640771 -0.35315295047567047 1.00000000000002 3.1025997536493417 0.36904437927938749 -0.50514281738321021 0.9999999999999809 5.735304295172309 0.18776020592975032 -0.27032296455033022 1.0000000000000084 6.5022298991999996 3.0754296886925812e-19 -0.15311614500000001 1
-0 0.14756328750000072 -0.2151237605000004 1 1.6475625206719269 0.18878432519520141 -0.46909048659368391 0.99999999999999123 3.2089504030233806 0.14032299201629125 -0.36658189825507032 1.00000000000002 3.0842817660168516 0.24202588267923261 -0.49397776708614699 0.9999999999999809 5.7492010389608916 0.12781701365559117 -0.27940640413322615 1.0000000000000084 6.4962763716999996 9.6851729969316465e-19 -0.1619915821 1
-0 0.073806716700000718 -0.2153657573000004 1 1.6406977747402305 0.096338544669297255 -0.47140320111980222 0.99999999999999123 3.2291746811163033 0.065888576133829715 -0.3693901671607549 1.00000000000002 3.0557613770603251 0.12226349886069361 -0.49260494439257202 0.9999999999999809 5.7713707162768566 0.063142140712637018 -0.27765152437508905 1.0000000000000084 6.48749004 1.9439960752265573e-18 -0.16861366500000002 1
-0 7.2220007751866659e-16 -0.2153654000000004 1 1.6301107356496369 5.4122143037798042e-16 -0.48063406919001683 0.99999999999999123 3.2616899716505454 3.6007974694711714e-16 -0.34829923223785531 1.00000000000002 3.0108044478154201 3.8793363545782239e-16 -0.51558946287975504 0.9999999999999809 5.8048915685398486 7.772765003412293e-17 -0.26361891182622504 1.0000000000000084 6.4756682999999997 3.2564728691397811e-18 -0.17298380000000002 1
-
-4 6
-5 5
-6 5
-7 5
-8 5
-9 5
-10 5
-11 6
-
-0 6
-1 6
-
-Triangulations 3
-16 15 1 0.28680002
--1.43365 0.649968000000001 -6.505 2.6687712369883e-16 -0.0153653999999993 -6.505 -1.40594454048148 0.412448655683128 -6.505 -1.34785173795684 0.312258655741433 -6.505 -1.26992407550245 0.231133141238001 -6.505 -1.11714049207609 0.135773418207067 -6.505 -0.833870180340218 0.044025234731016 -6.505 -0.394082927009659 -0.00810213487881201 -6.505 1.43365 0.649968000000001 -6.505 1.40594454048148 0.412448655683128 -6.505 1.34785173795684 0.312258655741433 -6.505 1.26992407550245 0.231133141238001 -6.505 1.11714049207609 0.135773418207067 -6.505 0.833870180340219 0.044025234731016 -6.505 0.394082927009659 -0.00810213487881201 -6.505 -1.20368667290425e-16 0.317301300000001 -6.505 -1.43365 0.649968000000001 2.22044604925031e-16 -0.0153653999999993 -1.40594454048148 0.412448655683128 -1.34785173795684 0.312258655741432 -1.26992407550245 0.231133141238001 -1.11714049207609 0.135773418207066 -0.833870180340219 0.0440252347310157 -0.394082927009659 -0.00810213487881232 1.43365 0.649968000000001 1.40594454048148 0.412448655683128 1.34785173795684 0.312258655741432 1.26992407550245 0.231133141238001 1.11714049207609 0.135773418207066 0.833870180340218 0.0440252347310157 0.394082927009659 -0.00810213487881232 -4.44089209850063e-16 0.317301300000001 1 5 6 1 6 7 16 7 8 1 3 4 5 1 4 1 7 16 1 16 9 8 2 16 15 14 16 14 9 16 13 9 14 12 11 9 10 9 11 12 9 13 15 16 2
-21 19 1 0.570173415
-0 -1.43365 0.449968 6.505 -2.74032099095711e-16 0.649999999999999 1.98092892292892 -1.48171098275022 0.510741713120906 3.13707385249348 -1.37428305641704 0.546252356415255 4.01489342552515 -1.17201839635292 0.573584514791118 5.03045258162268 -0.807098423323603 0.605048480993933 6.06649267160459 -0.296834263216068 0.636720867352713 6.30524876905432 -0.147414068660439 0.643958400270071 0 -1.40594454048148 0.212448655683128 0 -1.34785173795684 0.112258655741432 0 -1.26992407550245 0.0311331412380007 0 -1.11714049207608 -0.0642265817929337 0 -0.833870180340217 -0.155974765268984 0 -0.394082927009658 -0.208102134878812 0 9.89077201217497e-16 -0.2153654 6.4756683 -3.46993823106302e-16 -0.1729838 2.37160830651042 -1.00696286098207e-15 -0.397691803899926 4.35903610341951 -7.8631405099122e-16 -0.35730792986787 6.505 -5.48064198191422e-16 0.229788048905756 6.50358381274824 -5.4822142656083e-16 -0.142363766539061 6.49413006455314 -5.49271003452351e-16 -0.16108011196234 4 0 4 1 4 0.27 4 0.46683 4 0.6144525 4 0.7663275 4 0.9182025 4 0.95910125 6.33333333333333 0 6.80583333333333 0 7.24333333333333 0 7.89958333333333 0 8.88395833333333 0 9.94197916666667 0 11 0 11 1 11 0.333333333333333 11 0.666666666666667 7.11111111111111 1 10.2222222222222 1 10.6111111111111 1 3 1 9 4 3 17 10 3 9 5 4 18 18 6 5 19 8 7 19 2 8 7 6 19 10 11 3 12 17 3 13 14 17 14 15 17 12 13 17 20 19 18 21 20 18 18 19 6 18 16 21 17 18 4 3 11 12
-21 19 1 0.67827539325
-0 1.43365 0.449968 6.505 -2.74032099095711e-16 0.649999999999999 1.98092892292892 1.48171098275022 0.510741713120906 3.13707385249348 1.37428305641704 0.546252356415255 4.01489342552515 1.17201839635292 0.573584514791118 5.03045258162268 0.807098423323603 0.605048480993933 6.06649267160459 0.296834263216068 0.636720867352713 6.30524876905432 0.14741406866044 0.643958400270071 0 1.40594454048148 0.212448655683128 0 1.34785173795684 0.112258655741432 0 1.26992407550245 0.0311331412380007 0 1.11714049207609 -0.0642265817929337 0 0.83387018034022 -0.155974765268984 0 0.39408292700966 -0.208102134878812 0 9.89077201217497e-16 -0.2153654 2.37160830651042 -1.00696286098207e-15 -0.397691803899926 4.35903610341951 -7.8631405099122e-16 -0.35730792986787 6.4756683 -3.46993823106302e-16 -0.1729838 6.505 -5.48064198191422e-16 0.229788048905756 6.50358381274824 -5.4822142656083e-16 -0.142363766539061 6.49413006455314 -5.49271003452351e-16 -0.16108011196234 4 0 4 1 4 0.27 4 0.46683 4 0.6144525 4 0.7663275 4 0.9182025 4 0.95910125 6.33333333333333 0 6.80583333333333 0 7.24333333333333 0 7.89958333333333 0 8.88395833333333 0 9.94197916666667 0 11 0 11 0.333333333333333 11 0.666666666666667 11 1 7.11111111111111 1 10.2222222222222 1 10.6111111111111 1 3 1 9 4 3 16 10 3 9 5 4 17 17 6 5 19 8 7 19 2 8 7 6 19 10 11 3 12 16 3 13 14 16 14 15 16 12 13 16 20 19 17 21 20 17 17 19 6 17 18 21 16 17 4 3 11 12
-
-TShapes 20
-Ve
-1.00000000800623e-07
-0 -1.43365 0.449968
-0 0
-
-0101100
-*
-Ve
-1.00000002000918e-07
-0 6.65356658657859e-16 -0.2153654
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 1 0 4 11
-2 1 2 6 4 11
-6 1 1 0
-6 2 2 6
-0
-
-0101000
-+20 6 -19 6 *
-Ve
-1.00000000800623e-07
-0 1.43365 0.449968
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 2 0 4 11
-2 2 3 6 4 11
-6 3 1 0
-6 4 3 6
-0
-
-0101000
-+17 6 -19 6 *
-Ed
- 1e-10 1 1 0
-1 3 0 0 2.8673
-6 5 1 0
-0
-
-0101000
-+20 6 -17 6 *
-Wi
-
-0101000
--18 0 +16 0 +15 0 *
-Fa
-0 1e-10 1 0
-2 1
-0101000
--14 0 *
-Ve
-1e-07
-6.505 -2.74032099095711e-16 0.649999999999999
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 4 0 0 1
-2 3 2 0 0 1
-6 6 2 0
-0
-
-0101000
-+20 0 -12 0 *
-Ve
-1.00000000145923e-07
-6.4756683 -3.46993823106302e-16 -0.1729838
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 5 0 0 1
-2 4 2 0 0 1
-2 5 3 0 0 1
-6 7 2 0
-6 8 3 0
-0
-
-0101000
-+19 0 -10 0 *
-Ed
- 1e-07 1 1 0
-1 6 0 4 11
-2 6 2 0 4 11
-2 7 3 0 4 11
-6 9 2 0
-6 10 3 0
-0
-
-0101000
-+12 0 -10 0 *
-Wi
-
-0101000
--11 0 +18 5 +9 0 -8 0 *
-Fa
-0 1e-07 2 0
-2 2
-0101000
-+7 0 *
-Ed
- 1e-07 1 1 0
-1 7 0 0 1
-2 8 3 0 0 1
-6 11 3 0
-0
-
-0101000
-+17 0 -12 0 *
-Wi
-
-0101000
--5 0 +16 5 +9 0 -8 0 *
-Fa
-0 1e-07 3 0
-2 3
-0101000
-+4 0 *
-Sh
-
-0101000
-+13 5 -6 0 +3 0 *
-Co
-
-1100000
-+2 0 *
-
-+1 0
\ No newline at end of file
+++ /dev/null
-# Copyright (C) 2003 CEA/DEN, EDF R&D
-#
-#
-#
-# File : Makefile.in
-# Author : Vasily Rusyaev (Open Cascade NN)
-# Module : doc
-# $Header:
-
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-curdir = $(shell pwd)
-instdatadir=${prefix}/examples
-
-SUBDIRS=.
-
-@COMMENCE@
-
-data:
- (cd $(srcdir) ; cp -fr `ls | grep -v "Makefile.in"` $(curdir))
-
-clean:
- rm -rf `ls | grep -v "Makefile"`
-
-install:
- rm -rf $(instdatadir)
- mkdir $(instdatadir)
- cp -rf `ls | grep -v "Makefile"` $(instdatadir)
-
-uninstall:
- rm -rf $(instdatadir)
+++ /dev/null
- S0000001
-,,,13HFilename.iges,31HMATRA-DATAVISION EUCLID-QUANTUM, G0000001
-45HOL-2.0D on SunOS 5.5.1 sparc Sun_Microsystems,32,308,15,308,15, G0000002
-7HUnknown,1.,2,2HMM,1,0.01,13H981223.100346,0.0001,160.525285,7Hcascade,G0000003
-16HMatra Datavision,9,0,13H981223.100346; G0000004
- 402 1 0 0 0 0 0 000000000D0000001
- 402 0 0 1 1 0D0000002
- 144 2 0 0 0 0 0 000020000D0000003
- 144 0 0 1 0 0D0000004
- 128 3 0 0 0 0 0 000010000D0000005
- 128 0 0 7 0 0D0000006
- 142 10 0 0 0 0 0 000010500D0000007
- 142 0 0 1 0 0D0000008
- 102 11 0 0 0 0 0 000010000D0000009
- 102 0 0 1 0 0D0000010
- 126 12 0 0 0 0 0 000010000D0000011
- 126 0 0 9 0 0D0000012
- 110 21 0 0 0 0 0 000010000D0000013
- 110 0 0 1 0 0D0000014
- 126 22 0 0 0 0 0 000010000D0000015
- 126 0 0 9 0 0D0000016
- 100 31 0 0 0 0 0 000010000D0000017
- 100 0 0 2 0 0D0000018
- 126 33 0 0 0 0 0 000010000D0000019
- 126 0 0 9 0 0D0000020
- 110 42 0 0 0 0 0 000010000D0000021
- 110 0 0 2 0 0D0000022
- 126 44 0 0 0 0 0 000010000D0000023
- 126 0 0 9 0 0D0000024
- 100 53 0 0 0 0 0 000010000D0000025
- 100 0 0 2 0 0D0000026
- 102 55 0 0 0 0 0 000010000D0000027
- 102 0 0 1 0 0D0000028
- 100 56 0 0 0 0 31 000010000D0000029
- 100 0 0 1 0 0D0000030
- 124 57 0 0 0 0 0 000000000D0000031
- 124 0 0 2 0 0D0000032
- 110 59 0 0 0 0 0 000010000D0000033
- 110 0 0 2 0 0D0000034
- 100 61 0 0 0 0 37 000010000D0000035
- 100 0 0 2 0 0D0000036
- 124 63 0 0 0 0 0 000000000D0000037
- 124 0 0 2 0 0D0000038
- 100 65 0 0 0 0 41 000010000D0000039
- 100 0 0 2 0 0D0000040
- 124 67 0 0 0 0 0 000000000D0000041
- 124 0 0 2 0 0D0000042
- 100 69 0 0 0 0 45 000010000D0000043
- 100 0 0 2 0 0D0000044
- 124 71 0 0 0 0 0 000000000D0000045
- 124 0 0 2 0 0D0000046
- 110 73 0 0 0 0 0 000010000D0000047
- 110 0 0 2 0 0D0000048
- 100 75 0 0 0 0 51 000010000D0000049
- 100 0 0 2 0 0D0000050
- 124 77 0 0 0 0 0 000000000D0000051
- 124 0 0 2 0 0D0000052
- 100 79 0 0 0 0 55 000010000D0000053
- 100 0 0 2 0 0D0000054
- 124 81 0 0 0 0 0 000000000D0000055
- 124 0 0 2 0 0D0000056
- 142 83 0 0 0 0 0 000010500D0000057
- 142 0 0 1 0 0D0000058
- 126 84 0 0 0 0 0 000010000D0000059
- 126 0 0 10 0 0D0000060
- 126 94 0 0 0 0 0 000010000D0000061
- 126 0 0 12 0 0D0000062
- 142 106 0 0 0 0 0 000010500D0000063
- 142 0 0 1 0 0D0000064
- 126 107 0 0 0 0 0 000010000D0000065
- 126 0 0 10 0 0D0000066
- 126 117 0 0 0 0 0 000010000D0000067
- 126 0 0 12 0 0D0000068
- 144 129 0 0 0 0 0 000020000D0000069
- 144 0 0 1 0 0D0000070
- 120 130 0 0 0 0 73 000010000D0000071
- 120 0 0 1 0 0D0000072
- 124 131 0 0 0 0 0 000000000D0000073
- 124 0 0 2 0 0D0000074
- 110 133 0 0 0 0 0 000010000D0000075
- 110 0 0 1 0 0D0000076
- 110 134 0 0 0 0 0 000010000D0000077
- 110 0 0 1 0 0D0000078
- 142 135 0 0 0 0 0 000010500D0000079
- 142 0 0 1 0 0D0000080
- 102 136 0 0 0 0 0 000010000D0000081
- 102 0 0 1 0 0D0000082
- 110 137 0 0 0 0 0 000010000D0000083
- 110 0 0 1 0 0D0000084
- 110 138 0 0 0 0 0 000010000D0000085
- 110 0 0 2 0 0D0000086
- 110 140 0 0 0 0 0 000010000D0000087
- 110 0 0 1 0 0D0000088
- 110 141 0 0 0 0 0 000010000D0000089
- 110 0 0 1 0 0D0000090
- 102 142 0 0 0 0 0 000010000D0000091
- 102 0 0 1 0 0D0000092
- 110 143 0 0 0 0 0 000010000D0000093
- 110 0 0 2 0 0D0000094
- 100 145 0 0 0 0 97 000010000D0000095
- 100 0 0 2 0 0D0000096
- 124 147 0 0 0 0 0 000000000D0000097
- 124 0 0 2 0 0D0000098
- 110 149 0 0 0 0 0 000010000D0000099
- 110 0 0 2 0 0D0000100
- 100 151 0 0 0 0 103 000010000D0000101
- 100 0 0 1 0 0D0000102
- 124 152 0 0 0 0 0 000000000D0000103
- 124 0 0 2 0 0D0000104
- 144 154 0 0 0 0 0 000020000D0000105
- 144 0 0 1 0 0D0000106
- 120 155 0 0 0 0 109 000010000D0000107
- 120 0 0 1 0 0D0000108
- 124 156 0 0 0 0 0 000000000D0000109
- 124 0 0 2 0 0D0000110
- 110 158 0 0 0 0 0 000010000D0000111
- 110 0 0 1 0 0D0000112
- 110 159 0 0 0 0 0 000010000D0000113
- 110 0 0 1 0 0D0000114
- 142 160 0 0 0 0 0 000010500D0000115
- 142 0 0 1 0 0D0000116
- 102 161 0 0 0 0 0 000010000D0000117
- 102 0 0 1 0 0D0000118
- 110 162 0 0 0 0 0 000010000D0000119
- 110 0 0 1 0 0D0000120
- 110 163 0 0 0 0 0 000010000D0000121
- 110 0 0 2 0 0D0000122
- 110 165 0 0 0 0 0 000010000D0000123
- 110 0 0 1 0 0D0000124
- 110 166 0 0 0 0 0 000010000D0000125
- 110 0 0 1 0 0D0000126
- 102 167 0 0 0 0 0 000010000D0000127
- 102 0 0 1 0 0D0000128
- 110 168 0 0 0 0 0 000010000D0000129
- 110 0 0 2 0 0D0000130
- 100 170 0 0 0 0 133 000010000D0000131
- 100 0 0 2 0 0D0000132
- 124 172 0 0 0 0 0 000000000D0000133
- 124 0 0 2 0 0D0000134
- 110 174 0 0 0 0 0 000010000D0000135
- 110 0 0 2 0 0D0000136
- 100 176 0 0 0 0 139 000010000D0000137
- 100 0 0 2 0 0D0000138
- 124 178 0 0 0 0 0 000000000D0000139
- 124 0 0 2 0 0D0000140
- 144 180 0 0 0 0 0 000020000D0000141
- 144 0 0 1 0 0D0000142
- 120 181 0 0 0 0 145 000010000D0000143
- 120 0 0 1 0 0D0000144
- 124 182 0 0 0 0 0 000000000D0000145
- 124 0 0 2 0 0D0000146
- 110 184 0 0 0 0 0 000010000D0000147
- 110 0 0 1 0 0D0000148
- 110 185 0 0 0 0 0 000010000D0000149
- 110 0 0 1 0 0D0000150
- 142 186 0 0 0 0 0 000010500D0000151
- 142 0 0 1 0 0D0000152
- 102 187 0 0 0 0 0 000010000D0000153
- 102 0 0 1 0 0D0000154
- 110 188 0 0 0 0 0 000010000D0000155
- 110 0 0 1 0 0D0000156
- 110 189 0 0 0 0 0 000010000D0000157
- 110 0 0 2 0 0D0000158
- 110 191 0 0 0 0 0 000010000D0000159
- 110 0 0 1 0 0D0000160
- 110 192 0 0 0 0 0 000010000D0000161
- 110 0 0 1 0 0D0000162
- 102 193 0 0 0 0 0 000010000D0000163
- 102 0 0 1 0 0D0000164
- 110 194 0 0 0 0 0 000010000D0000165
- 110 0 0 2 0 0D0000166
- 100 196 0 0 0 0 169 000010000D0000167
- 100 0 0 1 0 0D0000168
- 124 197 0 0 0 0 0 000000000D0000169
- 124 0 0 2 0 0D0000170
- 110 199 0 0 0 0 0 000010000D0000171
- 110 0 0 2 0 0D0000172
- 100 201 0 0 0 0 175 000010000D0000173
- 100 0 0 2 0 0D0000174
- 124 203 0 0 0 0 0 000000000D0000175
- 124 0 0 2 0 0D0000176
- 144 205 0 0 0 0 0 000020000D0000177
- 144 0 0 1 0 0D0000178
- 128 206 0 0 0 0 0 000010000D0000179
- 128 0 0 6 0 0D0000180
- 142 212 0 0 0 0 0 000010500D0000181
- 142 0 0 1 0 0D0000182
- 102 213 0 0 0 0 0 000010000D0000183
- 102 0 0 1 0 0D0000184
- 110 214 0 0 0 0 0 000010000D0000185
- 110 0 0 1 0 0D0000186
- 110 215 0 0 0 0 0 000010000D0000187
- 110 0 0 1 0 0D0000188
- 110 216 0 0 0 0 0 000010000D0000189
- 110 0 0 1 0 0D0000190
- 110 217 0 0 0 0 0 000010000D0000191
- 110 0 0 1 0 0D0000192
- 102 218 0 0 0 0 0 000010000D0000193
- 102 0 0 1 0 0D0000194
- 110 219 0 0 0 0 0 000010000D0000195
- 110 0 0 2 0 0D0000196
- 110 221 0 0 0 0 0 000010000D0000197
- 110 0 0 2 0 0D0000198
- 110 223 0 0 0 0 0 000010000D0000199
- 110 0 0 2 0 0D0000200
- 110 225 0 0 0 0 0 000010000D0000201
- 110 0 0 2 0 0D0000202
- 144 227 0 0 0 0 0 000020000D0000203
- 144 0 0 1 0 0D0000204
- 120 228 0 0 0 0 207 000010000D0000205
- 120 0 0 1 0 0D0000206
- 124 229 0 0 0 0 0 000000000D0000207
- 124 0 0 2 0 0D0000208
- 110 231 0 0 0 0 0 000010000D0000209
- 110 0 0 1 0 0D0000210
- 110 232 0 0 0 0 0 000010000D0000211
- 110 0 0 1 0 0D0000212
- 142 233 0 0 0 0 0 000010500D0000213
- 142 0 0 1 0 0D0000214
- 102 234 0 0 0 0 0 000010000D0000215
- 102 0 0 1 0 0D0000216
- 110 235 0 0 0 0 0 000010000D0000217
- 110 0 0 1 0 0D0000218
- 110 236 0 0 0 0 0 000010000D0000219
- 110 0 0 2 0 0D0000220
- 110 238 0 0 0 0 0 000010000D0000221
- 110 0 0 1 0 0D0000222
- 110 239 0 0 0 0 0 000010000D0000223
- 110 0 0 1 0 0D0000224
- 102 240 0 0 0 0 0 000010000D0000225
- 102 0 0 1 0 0D0000226
- 110 241 0 0 0 0 0 000010000D0000227
- 110 0 0 2 0 0D0000228
- 100 243 0 0 0 0 231 000010000D0000229
- 100 0 0 1 0 0D0000230
- 124 244 0 0 0 0 0 000000000D0000231
- 124 0 0 2 0 0D0000232
- 110 246 0 0 0 0 0 000010000D0000233
- 110 0 0 2 0 0D0000234
- 100 248 0 0 0 0 237 000010000D0000235
- 100 0 0 2 0 0D0000236
- 124 250 0 0 0 0 0 000000000D0000237
- 124 0 0 2 0 0D0000238
- 144 252 0 0 0 0 0 000020000D0000239
- 144 0 0 1 0 0D0000240
- 120 253 0 0 0 0 243 000010000D0000241
- 120 0 0 1 0 0D0000242
- 124 254 0 0 0 0 0 000000000D0000243
- 124 0 0 2 0 0D0000244
- 110 256 0 0 0 0 0 000010000D0000245
- 110 0 0 1 0 0D0000246
- 110 257 0 0 0 0 0 000010000D0000247
- 110 0 0 1 0 0D0000248
- 142 258 0 0 0 0 0 000010500D0000249
- 142 0 0 1 0 0D0000250
- 102 259 0 0 0 0 0 000010000D0000251
- 102 0 0 1 0 0D0000252
- 110 260 0 0 0 0 0 000010000D0000253
- 110 0 0 1 0 0D0000254
- 110 261 0 0 0 0 0 000010000D0000255
- 110 0 0 2 0 0D0000256
- 110 263 0 0 0 0 0 000010000D0000257
- 110 0 0 1 0 0D0000258
- 110 264 0 0 0 0 0 000010000D0000259
- 110 0 0 1 0 0D0000260
- 102 265 0 0 0 0 0 000010000D0000261
- 102 0 0 1 0 0D0000262
- 110 266 0 0 0 0 0 000010000D0000263
- 110 0 0 2 0 0D0000264
- 100 268 0 0 0 0 267 000010000D0000265
- 100 0 0 2 0 0D0000266
- 124 270 0 0 0 0 0 000000000D0000267
- 124 0 0 2 0 0D0000268
- 110 272 0 0 0 0 0 000010000D0000269
- 110 0 0 2 0 0D0000270
- 100 274 0 0 0 0 273 000010000D0000271
- 100 0 0 2 0 0D0000272
- 124 276 0 0 0 0 0 000000000D0000273
- 124 0 0 2 0 0D0000274
- 144 278 0 0 0 0 0 000020000D0000275
- 144 0 0 1 0 0D0000276
- 120 279 0 0 0 0 279 000010000D0000277
- 120 0 0 1 0 0D0000278
- 124 280 0 0 0 0 0 000000000D0000279
- 124 0 0 2 0 0D0000280
- 110 282 0 0 0 0 0 000010000D0000281
- 110 0 0 1 0 0D0000282
- 110 283 0 0 0 0 0 000010000D0000283
- 110 0 0 1 0 0D0000284
- 142 284 0 0 0 0 0 000010500D0000285
- 142 0 0 1 0 0D0000286
- 102 285 0 0 0 0 0 000010000D0000287
- 102 0 0 1 0 0D0000288
- 110 286 0 0 0 0 0 000010000D0000289
- 110 0 0 1 0 0D0000290
- 110 287 0 0 0 0 0 000010000D0000291
- 110 0 0 2 0 0D0000292
- 110 289 0 0 0 0 0 000010000D0000293
- 110 0 0 1 0 0D0000294
- 110 290 0 0 0 0 0 000010000D0000295
- 110 0 0 1 0 0D0000296
- 102 291 0 0 0 0 0 000010000D0000297
- 102 0 0 1 0 0D0000298
- 110 292 0 0 0 0 0 000010000D0000299
- 110 0 0 2 0 0D0000300
- 100 294 0 0 0 0 303 000010000D0000301
- 100 0 0 2 0 0D0000302
- 124 296 0 0 0 0 0 000000000D0000303
- 124 0 0 2 0 0D0000304
- 110 298 0 0 0 0 0 000010000D0000305
- 110 0 0 2 0 0D0000306
- 100 300 0 0 0 0 309 000010000D0000307
- 100 0 0 2 0 0D0000308
- 124 302 0 0 0 0 0 000000000D0000309
- 124 0 0 2 0 0D0000310
- 144 304 0 0 0 0 0 000020000D0000311
- 144 0 0 1 0 0D0000312
- 128 305 0 0 0 0 0 000010000D0000313
- 128 0 0 6 0 0D0000314
- 142 311 0 0 0 0 0 000010500D0000315
- 142 0 0 1 0 0D0000316
- 102 312 0 0 0 0 0 000010000D0000317
- 102 0 0 1 0 0D0000318
- 110 313 0 0 0 0 0 000010000D0000319
- 110 0 0 1 0 0D0000320
- 110 314 0 0 0 0 0 000010000D0000321
- 110 0 0 1 0 0D0000322
- 110 315 0 0 0 0 0 000010000D0000323
- 110 0 0 1 0 0D0000324
- 110 316 0 0 0 0 0 000010000D0000325
- 110 0 0 1 0 0D0000326
- 102 317 0 0 0 0 0 000010000D0000327
- 102 0 0 1 0 0D0000328
- 110 318 0 0 0 0 0 000010000D0000329
- 110 0 0 2 0 0D0000330
- 110 320 0 0 0 0 0 000010000D0000331
- 110 0 0 2 0 0D0000332
- 110 322 0 0 0 0 0 000010000D0000333
- 110 0 0 2 0 0D0000334
- 110 324 0 0 0 0 0 000010000D0000335
- 110 0 0 2 0 0D0000336
- 144 326 0 0 0 0 0 000020000D0000337
- 144 0 0 1 0 0D0000338
- 120 327 0 0 0 0 341 000010000D0000339
- 120 0 0 1 0 0D0000340
- 124 328 0 0 0 0 0 000000000D0000341
- 124 0 0 2 0 0D0000342
- 110 330 0 0 0 0 0 000010000D0000343
- 110 0 0 1 0 0D0000344
- 110 331 0 0 0 0 0 000010000D0000345
- 110 0 0 1 0 0D0000346
- 142 332 0 0 0 0 0 000010500D0000347
- 142 0 0 1 0 0D0000348
- 102 333 0 0 0 0 0 000010000D0000349
- 102 0 0 1 0 0D0000350
- 110 334 0 0 0 0 0 000010000D0000351
- 110 0 0 1 0 0D0000352
- 110 335 0 0 0 0 0 000010000D0000353
- 110 0 0 2 0 0D0000354
- 110 337 0 0 0 0 0 000010000D0000355
- 110 0 0 1 0 0D0000356
- 126 338 0 0 0 0 0 000010000D0000357
- 126 0 0 3 0 0D0000358
- 102 341 0 0 0 0 0 000010000D0000359
- 102 0 0 1 0 0D0000360
- 110 342 0 0 0 0 0 000010000D0000361
- 110 0 0 2 0 0D0000362
- 126 344 0 0 0 0 0 000010000D0000363
- 126 0 0 12 0 0D0000364
- 110 356 0 0 0 0 0 000010000D0000365
- 110 0 0 2 0 0D0000366
- 126 358 0 0 0 0 0 000010000D0000367
- 126 0 0 12 0 0D0000368
- 144 370 0 0 0 0 0 000020000D0000369
- 144 0 0 1 0 0D0000370
- 120 371 0 0 0 0 373 000010000D0000371
- 120 0 0 1 0 0D0000372
- 124 372 0 0 0 0 0 000000000D0000373
- 124 0 0 2 0 0D0000374
- 110 374 0 0 0 0 0 000010000D0000375
- 110 0 0 1 0 0D0000376
- 110 375 0 0 0 0 0 000010000D0000377
- 110 0 0 1 0 0D0000378
- 142 376 0 0 0 0 0 000010500D0000379
- 142 0 0 1 0 0D0000380
- 102 377 0 0 0 0 0 000010000D0000381
- 102 0 0 1 0 0D0000382
- 110 378 0 0 0 0 0 000010000D0000383
- 110 0 0 1 0 0D0000384
- 110 379 0 0 0 0 0 000010000D0000385
- 110 0 0 2 0 0D0000386
- 110 381 0 0 0 0 0 000010000D0000387
- 110 0 0 1 0 0D0000388
- 126 382 0 0 0 0 0 000010000D0000389
- 126 0 0 3 0 0D0000390
- 102 385 0 0 0 0 0 000010000D0000391
- 102 0 0 1 0 0D0000392
- 110 386 0 0 0 0 0 000010000D0000393
- 110 0 0 2 0 0D0000394
- 126 388 0 0 0 0 0 000010000D0000395
- 126 0 0 12 0 0D0000396
- 110 400 0 0 0 0 0 000010000D0000397
- 110 0 0 2 0 0D0000398
- 126 402 0 0 0 0 0 000010000D0000399
- 126 0 0 12 0 0D0000400
- 144 414 0 0 0 0 0 000020000D0000401
- 144 0 0 1 0 0D0000402
- 128 415 0 0 0 0 0 000010000D0000403
- 128 0 0 7 0 0D0000404
- 142 422 0 0 0 0 0 000010500D0000405
- 142 0 0 1 0 0D0000406
- 102 423 0 0 0 0 0 000010000D0000407
- 102 0 0 1 0 0D0000408
- 126 424 0 0 0 0 0 000010000D0000409
- 126 0 0 9 0 0D0000410
- 110 433 0 0 0 0 0 000010000D0000411
- 110 0 0 1 0 0D0000412
- 126 434 0 0 0 0 0 000010000D0000413
- 126 0 0 9 0 0D0000414
- 100 443 0 0 0 0 0 000010000D0000415
- 100 0 0 2 0 0D0000416
- 126 445 0 0 0 0 0 000010000D0000417
- 126 0 0 9 0 0D0000418
- 110 454 0 0 0 0 0 000010000D0000419
- 110 0 0 2 0 0D0000420
- 126 456 0 0 0 0 0 000010000D0000421
- 126 0 0 9 0 0D0000422
- 100 465 0 0 0 0 0 000010000D0000423
- 100 0 0 2 0 0D0000424
- 102 467 0 0 0 0 0 000010000D0000425
- 102 0 0 1 0 0D0000426
- 100 468 0 0 0 0 429 000010000D0000427
- 100 0 0 1 0 0D0000428
- 124 469 0 0 0 0 0 000000000D0000429
- 124 0 0 2 0 0D0000430
- 110 471 0 0 0 0 0 000010000D0000431
- 110 0 0 2 0 0D0000432
- 100 473 0 0 0 0 435 000010000D0000433
- 100 0 0 2 0 0D0000434
- 124 475 0 0 0 0 0 000000000D0000435
- 124 0 0 2 0 0D0000436
- 100 477 0 0 0 0 439 000010000D0000437
- 100 0 0 2 0 0D0000438
- 124 479 0 0 0 0 0 000000000D0000439
- 124 0 0 2 0 0D0000440
- 100 481 0 0 0 0 443 000010000D0000441
- 100 0 0 2 0 0D0000442
- 124 483 0 0 0 0 0 000000000D0000443
- 124 0 0 2 0 0D0000444
- 110 485 0 0 0 0 0 000010000D0000445
- 110 0 0 2 0 0D0000446
- 100 487 0 0 0 0 449 000010000D0000447
- 100 0 0 2 0 0D0000448
- 124 489 0 0 0 0 0 000000000D0000449
- 124 0 0 2 0 0D0000450
- 100 491 0 0 0 0 453 000010000D0000451
- 100 0 0 2 0 0D0000452
- 124 493 0 0 0 0 0 000000000D0000453
- 124 0 0 2 0 0D0000454
- 142 495 0 0 0 0 0 000010500D0000455
- 142 0 0 1 0 0D0000456
- 126 496 0 0 0 0 0 000010000D0000457
- 126 0 0 10 0 0D0000458
- 126 506 0 0 0 0 0 000010000D0000459
- 126 0 0 12 0 0D0000460
- 142 518 0 0 0 0 0 000010500D0000461
- 142 0 0 1 0 0D0000462
- 126 519 0 0 0 0 0 000010000D0000463
- 126 0 0 10 0 0D0000464
- 126 529 0 0 0 0 0 000010000D0000465
- 126 0 0 12 0 0D0000466
-402,12,3,69,105,141,177,203,239,275,311,337,369,401; 0000001P0000001
-144,5,1,2,7,57,63; 0000003P0000002
-128,1,1,1,1,0,0,1,0,0,-139.650442578,-139.650442578, 0000005P0000003
-164.864616815,164.864616815,-52.441943309,-52.441943309, 0000005P0000004
-47.40098106,47.40098106,1.,1.,1.,1.,-139.650442578, 0000005P0000005
--52.441943309,-19.999999553,164.864616815,-52.441943309, 0000005P0000006
--19.999999553,-139.650442578,47.40098106,-19.999999553, 0000005P0000007
-164.864616815,47.40098106,-19.999999553,-139.650442578, 0000005P0000008
-164.864616815,-52.441943309,47.40098106; 0000005P0000009
-142,0,5,9,27,3; 0000007P0000010
-102,8,11,13,15,17,19,21,23,25; 0000009P0000011
-126,7,4,0,0,0,0,1.073345169,1.073345169,1.073345169,1.073345169, 0000011P0000012
-1.073345169,1.284126135,1.284126135,1.284126135,1.494907102, 0000011P0000013
-1.494907102,1.494907102,1.494907102,1.494907102,1.011189921, 0000011P0000014
-1.011189921,1.011189931,1.011179532,1.011179532,1.011189931, 0000011P0000015
-1.011189921,1.011189921,93.497879803,36.745399237,0., 0000011P0000016
-90.049436422,34.872902929,0.,86.473696164,33.245011418,0., 0000011P0000017
-82.790432165,31.870724965,0.,75.248696652,29.647496417,0., 0000011P0000018
-71.408940021,28.804071284,0.,67.521947549,28.232023481,0., 0000011P0000019
-63.609212637,27.934517711,0.,1.073345169,1.494907102,0.,0.,1.; 0000011P0000020
-110,63.609212637,27.934517711,0.,-72.422526777,17.591310665,0.; 0000013P0000021
-126,7,4,0,0,0,0,1.367007434,1.367007434,1.367007434,1.367007434, 0000015P0000022
-1.367007434,1.781832767,1.781832767,1.781832767,2.1966581, 0000015P0000023
-2.1966581,2.1966581,2.1966581,2.1966581,1.044284595,1.044284595, 0000015P0000024
-1.044285207,1.044124006,1.044124006,1.044285207,1.044284595, 0000015P0000025
-1.044284595,-72.422526777,17.591310665,0.,-74.496301391, 0000015P0000026
-17.162749235,0.,-76.619336034,17.023005488,0.,-78.746721852, 0000015P0000027
-17.175011565,0.,-82.917772227,18.068559876,0.,-84.920732008, 0000015P0000028
-18.80138208,0.,-86.800206478,19.798568183,0.,-88.516429067, 0000015P0000029
-21.039046347,0.,1.367007434,2.1966581,0.,0.,1.; 0000015P0000030
-100,0.,-105.960486735,-3.095103428,-88.516429067,21.039046347, 0000017P0000031
--88.516429067,-27.229253203; 0000017P0000032
-126,7,4,0,0,0,0,4.086527207,4.086527207,4.086527207,4.086527207, 0000019P0000033
-4.086527207,4.434162711,4.434162711,4.434162711,4.781798214, 0000019P0000034
-4.781798214,4.781798214,4.781798214,4.781798214,1.03083173, 0000019P0000035
-1.03083173,1.03083194,1.030753477,1.030753477,1.03083194, 0000019P0000036
-1.03083173,1.03083173,-88.516429067,-27.229253203,0., 0000019P0000037
--86.786150795,-25.978615653,0.,-84.916794517,-24.932704109,0., 0000019P0000038
--82.936273839,-24.107124921,0.,-78.80986423,-22.928478295,0., 0000019P0000039
--76.69208436,-22.583439786,0.,-74.552323437,-22.484207509,0., 0000019P0000040
--72.422526777,-22.632272914,0.,4.086527207,4.781798214,0.,0.,1.; 0000019P0000041
-110,-72.422526777,-22.632272914,0.,59.138831837,-31.778538464, 0000021P0000042
-0.; 0000021P0000043
-126,7,4,0,0,0,0,4.781798214,4.781798214,4.781798214,4.781798214, 0000023P0000044
-4.781798214,4.995819176,4.995819176,4.995819176,5.209840139, 0000023P0000045
-5.209840139,5.209840139,5.209840139,5.209840139,1.011539234, 0000023P0000046
-1.011539234,1.011539246,1.011528189,1.011528189,1.011539246, 0000023P0000047
-1.011539234,1.011539234,59.138831837,-31.778538464,0., 0000023P0000048
-63.635671563,-32.09116286,0.,68.104473804,-32.724194555,0., 0000023P0000049
-72.519765903,-33.674023313,0.,81.191994379,-36.199999233,0., 0000023P0000050
-85.426740197,-37.76968291,0.,89.536511056,-39.635347961,0., 0000023P0000051
-93.497879803,-41.786361486,0.,4.781798214,5.209840139,0.,0.,1.; 0000023P0000052
-100,0.,114.819156639,-2.520481125,93.497879803,-41.786361486, 0000025P0000053
-93.497879803,36.745399237; 0000025P0000054
-102,8,29,33,35,39,43,47,49,53; 0000027P0000055
-100,0.,0.,0.,35.534447703,65.441267094,5.645780537,74.252148619; 0000029P0000056
-124,1.,0.,0.,57.9634321,0.,-1.,0.,102.18666633,0.,0.,-1., 0000031P0000057
--19.999999553; 0000031P0000058
-110,63.609212637,27.934517711,-19.999999553,-72.422526777, 0000033P0000059
-17.591310665,-19.999999553; 0000033P0000060
-100,0.,0.,0.,4.132451861,19.996605313,-11.961450429, 0000035P0000061
-16.548869631; 0000035P0000062
-124,1.,0.,0.,-76.554978638,0.,-1.,0.,37.587915978,0.,0.,-1., 0000037P0000063
--19.999999553; 0000037P0000064
-100,0.,0.,0.,17.444057668,24.134149775,17.444057668, 0000039P0000065
--24.134149775; 0000039P0000066
-124,1.,0.,-0.,-105.960486735,0.,1.,0.,-3.095103428,0.,0.,1., 0000041P0000067
--19.999999553; 0000041P0000068
-100,0.,0.,0.,-14.390216636,-19.90910889,1.703685653, 0000043P0000069
--24.506089179; 0000043P0000070
-124,1.,0.,0.,-74.12621243,0.,-1.,0.,-47.138362093,0.,0.,-1., 0000045P0000071
--19.999999553; 0000045P0000072
-110,-72.422526777,-22.632272914,-19.999999553,59.138831837, 0000047P0000073
--31.778538464,-19.999999553; 0000047P0000074
-100,0.,0.,0.,5.842874313,-84.04484635,40.201922279, 0000049P0000075
--74.037023328; 0000049P0000076
-124,1.,0.,0.,53.295957524,0.,-1.,0.,-115.823384813,0.,0.,-1., 0000051P0000077
--19.999999553; 0000051P0000078
-100,0.,0.,0.,-21.321276836,-39.265880361,-21.321276836, 0000053P0000079
-39.265880361; 0000053P0000080
-124,1.,0.,-0.,114.819156639,0.,1.,0.,-2.520481125,0.,0.,1., 0000055P0000081
--19.999999553; 0000055P0000082
-142,0,5,59,61,3; 0000057P0000083
-126,7,4,0,0,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000059P0000084
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000059P0000085
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000059P0000086
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000059P0000087
-4.129910647E+29,3.831440713E+29,3.831440713E+29,-91.414337225, 0000059P0000088
--2.809300087,0.,-91.414337225,-14.635572856,0.,-102.903753475, 0000059P0000089
--21.095273982,0.,-121.529693537,-21.981331368,0.,-121.529693537, 0000059P0000090
-16.362731193,0.,-102.903753475,15.476673808,0.,-91.414337225, 0000059P0000091
-9.016972681,0.,-91.414337225,-2.809300087,0.,1.570796327, 0000059P0000092
-7.853981634,0.,0.,1.; 0000059P0000093
-126,7,4,0,1,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000061P0000094
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000061P0000095
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000061P0000096
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000061P0000097
-4.129910647E+29,3.831440713E+29,3.831440713E+29,-91.414337225, 0000061P0000098
--2.809300087,-19.999999553,-91.414337225,-14.635572856, 0000061P0000099
--19.999999553,-102.903753475,-21.095273982,-19.999999553, 0000061P0000100
--121.529693537,-21.981331368,-19.999999553,-121.529693537, 0000061P0000101
-16.362731193,-19.999999553,-102.903753475,15.476673808, 0000061P0000102
--19.999999553,-91.414337225,9.016972681,-19.999999553, 0000061P0000103
--91.414337225,-2.809300087,-19.999999553,1.570796327, 0000061P0000104
-7.853981634,0.,0.,1.; 0000061P0000105
-142,0,5,65,67,3; 0000063P0000106
-126,7,4,0,0,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000065P0000107
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000065P0000108
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000065P0000109
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000065P0000110
-4.129910647E+29,3.831440713E+29,3.831440713E+29,141.976625459, 0000065P0000111
--4.606760107,0.,141.976625459,-22.988349754,0.,124.118612294, 0000065P0000112
--33.028670798,0.,95.168291791,-34.405870832,0.,95.168291791, 0000065P0000113
-25.192350618,0.,124.118612294,23.815150584,0.,141.976625459, 0000065P0000114
-13.77482954,0.,141.976625459,-4.606760107,0.,1.570796327, 0000065P0000115
-7.853981634,0.,0.,1.; 0000065P0000116
-126,7,4,0,1,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000067P0000117
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000067P0000118
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000067P0000119
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000067P0000120
-4.129910647E+29,3.831440713E+29,3.831440713E+29,141.976625459, 0000067P0000121
--4.606760107,-19.999999553,141.976625459,-22.988349754, 0000067P0000122
--19.999999553,124.118612294,-33.028670798,-19.999999553, 0000067P0000123
-95.168291791,-34.405870832,-19.999999553,95.168291791, 0000067P0000124
-25.192350618,-19.999999553,124.118612294,23.815150584, 0000067P0000125
--19.999999553,141.976625459,13.77482954,-19.999999553, 0000067P0000126
-141.976625459,-4.606760107,-19.999999553,1.570796327, 0000067P0000127
-7.853981634,0.,0.,1.; 0000067P0000128
-144,71,1,0,79; 0000069P0000129
-120,75,77,1.073345169,1.494907102; 0000071P0000130
-124,1.,0.,0.,57.9634321,0.,1.,0.,102.18666633,0.,0.,1., 0000073P0000131
--19.999999553; 0000073P0000132
-110,0.,0.,1.,0.,0.,0.; 0000075P0000133
-110,74.466478448,0.,0.,74.466478448,0.,39.999999106; 0000077P0000134
-142,0,71,81,91,3; 0000079P0000135
-102,4,83,85,87,89; 0000081P0000136
-110,1.,1.494907102,0.,-2.658028415E-17,1.494907102,0.; 0000083P0000137
-110,-2.658028415E-17,1.494907102,0.,-2.892042303E-17, 0000085P0000138
-1.073345169,0.; 0000085P0000139
-110,-2.892042303E-17,1.073345169,0.,1.,1.073345169,0.; 0000087P0000140
-110,1.,1.073345169,0.,1.,1.494907102,0.; 0000089P0000141
-102,4,93,95,99,101; 0000091P0000142
-110,63.609212637,27.934517711,19.999999553,63.609212637, 0000093P0000143
-27.934517711,-19.999999553; 0000093P0000144
-100,0.,0.,0.,5.645780537,-74.252148619,35.534447703, 0000095P0000145
--65.441267094; 0000095P0000146
-124,1.,0.,0.,57.9634321,0.,1.,0.,102.18666633,0.,0.,1., 0000097P0000147
--19.999999553; 0000097P0000148
-110,93.497879803,36.745399237,-19.999999553,93.497879803, 0000099P0000149
-36.745399237,19.999999553; 0000099P0000150
-100,0.,0.,0.,35.534447703,65.441267094,5.645780537,74.252148619; 0000101P0000151
-124,1.,0.,0.,57.9634321,0.,-1.,0.,102.18666633,0.,0.,-1., 0000103P0000152
-19.999999553; 0000103P0000153
-144,107,1,0,115; 0000105P0000154
-120,111,113,-2.068247485,2.068247485; 0000107P0000155
-124,1.,0.,0.,114.819156639,0.,-1.,0.,-2.520481125,0.,0.,-1., 0000109P0000156
--19.999999553; 0000109P0000157
-110,0.,0.,1.,0.,0.,0.; 0000111P0000158
-110,44.681161651,0.,-39.999999106,44.681161651,0.,0.; 0000113P0000159
-142,0,107,117,127,3; 0000115P0000160
-102,4,119,121,123,125; 0000117P0000161
-110,1.,2.068247485,0.,-2.220446049E-16,2.068247485,0.; 0000119P0000162
-110,-2.339760561E-17,2.068247485,0.,-4.635976591E-17, 0000121P0000163
--2.068247485,0.; 0000121P0000164
-110,-2.220446049E-16,-2.068247485,0.,1.,-2.068247485,0.; 0000123P0000165
-110,1.,-2.068247485,0.,1.,2.068247485,0.; 0000125P0000166
-102,4,129,131,135,137; 0000127P0000167
-110,93.497879803,36.745399237,-19.999999553,93.497879803, 0000129P0000168
-36.745399237,19.999999553; 0000129P0000169
-100,0.,0.,0.,-21.321276836,-39.265880361,-21.321276836, 0000131P0000170
-39.265880361; 0000131P0000171
-124,1.,0.,0.,114.819156639,0.,-1.,0.,-2.520481125,0.,0.,-1., 0000133P0000172
-19.999999553; 0000133P0000173
-110,93.497879803,-41.786361486,19.999999553,93.497879803, 0000135P0000174
--41.786361486,-19.999999553; 0000135P0000175
-100,0.,0.,0.,-21.321276836,-39.265880361,-21.321276836, 0000137P0000176
-39.265880361; 0000137P0000177
-124,1.,0.,-0.,114.819156639,0.,1.,0.,-2.520481125,0.,0.,1., 0000139P0000178
--19.999999553; 0000139P0000179
-144,143,1,0,151; 0000141P0000180
-120,147,149,4.781798214,5.209840139; 0000143P0000181
-124,1.,0.,0.,53.295957524,0.,1.,0.,-115.823384813,0.,0.,1., 0000145P0000182
--19.999999553; 0000145P0000183
-110,0.,0.,1.,0.,0.,0.; 0000147P0000184
-110,84.24770251,0.,0.,84.24770251,0.,39.999999106; 0000149P0000185
-142,0,143,153,163,3; 0000151P0000186
-102,4,155,157,159,161; 0000153P0000187
-110,1.,5.209840139,0.,-5.958262731E-18,5.209840139,0.; 0000155P0000188
-110,-5.958262731E-18,5.209840139,0.,-8.334372787E-18, 0000157P0000189
-4.781798214,0.; 0000157P0000190
-110,-8.334372787E-18,4.781798214,0.,1.,4.781798214,0.; 0000159P0000191
-110,1.,4.781798214,0.,1.,5.209840139,0.; 0000161P0000192
-102,4,165,167,171,173; 0000163P0000193
-110,93.497879803,-41.786361486,19.999999553,93.497879803, 0000165P0000194
--41.786361486,-19.999999553; 0000165P0000195
-100,0.,0.,0.,40.201922279,74.037023328,5.842874313,84.04484635; 0000167P0000196
-124,1.,0.,0.,53.295957524,0.,1.,0.,-115.823384813,0.,0.,1., 0000169P0000197
--19.999999553; 0000169P0000198
-110,59.138831837,-31.778538464,-19.999999553,59.138831837, 0000171P0000199
--31.778538464,19.999999553; 0000171P0000200
-100,0.,0.,0.,5.842874313,-84.04484635,40.201922279, 0000173P0000201
--74.037023328; 0000173P0000202
-124,1.,0.,0.,53.295957524,0.,-1.,0.,-115.823384813,0.,0.,-1., 0000175P0000203
-19.999999553; 0000175P0000204
-144,179,1,0,181; 0000177P0000205
-128,1,1,1,1,0,0,1,0,0,0.,0.,131.878903748,131.878903748, 0000179P0000206
--39.999999106,-39.999999106,0.,0.,1.,1.,1.,1.,59.138831837, 0000179P0000207
--31.778538464,19.999999553,-72.422526777,-22.632272914, 0000179P0000208
-19.999999553,59.138831837,-31.778538464,-19.999999553, 0000179P0000209
--72.422526777,-22.632272914,-19.999999553,0.,131.878903748, 0000179P0000210
--39.999999106,0.; 0000179P0000211
-142,0,179,183,193,3; 0000181P0000212
-102,4,185,187,189,191; 0000183P0000213
-110,0.,0.,0.,0.,-39.999999106,0.; 0000185P0000214
-110,0.,-39.999999106,0.,131.878903748,-39.999999106,0.; 0000187P0000215
-110,131.878903748,-39.999999106,0.,131.878903748,0.,0.; 0000189P0000216
-110,131.878903748,-3.552713679E-14,0.,0.,-3.552713679E-14,0.; 0000191P0000217
-102,4,195,197,199,201; 0000193P0000218
-110,59.138831837,-31.778538464,-19.999999553,59.138831837, 0000195P0000219
--31.778538464,19.999999553; 0000195P0000220
-110,59.138831837,-31.778538464,19.999999553,-72.422526777, 0000197P0000221
--22.632272914,19.999999553; 0000197P0000222
-110,-72.422526777,-22.632272914,19.999999553,-72.422526777, 0000199P0000223
--22.632272914,-19.999999553; 0000199P0000224
-110,-72.422526777,-22.632272914,-19.999999553,59.138831837, 0000201P0000225
--31.778538464,-19.999999553; 0000201P0000226
-144,205,1,0,213; 0000203P0000227
-120,209,211,4.086527207,4.781798214; 0000205P0000228
-124,1.,0.,0.,-74.12621243,0.,1.,0.,-47.138362093,0.,0.,1., 0000207P0000229
--19.999999553; 0000207P0000230
-110,0.,0.,1.,0.,0.,0.; 0000209P0000231
-110,24.565238685,0.,0.,24.565238685,0.,39.999999106; 0000211P0000232
-142,0,205,215,225,3; 0000213P0000233
-102,4,217,219,221,223; 0000215P0000234
-110,1.,4.781798214,0.,-8.334372787E-18,4.781798214,0.; 0000217P0000235
-110,-8.334372787E-18,4.781798214,0.,-1.219390227E-17, 0000219P0000236
-4.086527207,0.; 0000219P0000237
-110,-1.219390227E-17,4.086527207,0.,1.,4.086527207,0.; 0000221P0000238
-110,1.,4.086527207,0.,1.,4.781798214,0.; 0000223P0000239
-102,4,227,229,233,235; 0000225P0000240
-110,-72.422526777,-22.632272914,19.999999553,-72.422526777, 0000227P0000241
--22.632272914,-19.999999553; 0000227P0000242
-100,0.,0.,0.,1.703685653,24.506089179,-14.390216636,19.90910889; 0000229P0000243
-124,1.,0.,0.,-74.12621243,0.,1.,0.,-47.138362093,0.,0.,1., 0000231P0000244
--19.999999553; 0000231P0000245
-110,-88.516429067,-27.229253203,-19.999999553,-88.516429067, 0000233P0000246
--27.229253203,19.999999553; 0000233P0000247
-100,0.,0.,0.,-14.390216636,-19.90910889,1.703685653, 0000235P0000248
--24.506089179; 0000235P0000249
-124,1.,0.,0.,-74.12621243,0.,-1.,0.,-47.138362093,0.,0.,-1., 0000237P0000250
-19.999999553; 0000237P0000251
-144,241,1,0,249; 0000239P0000252
-120,245,247,0.944934554,5.338250753; 0000241P0000253
-124,1.,0.,0.,-105.960486735,0.,-1.,0.,-3.095103428,0.,0.,-1., 0000243P0000254
--19.999999553; 0000243P0000255
-110,0.,0.,1.,0.,0.,0.; 0000245P0000256
-110,29.778387016,0.,-39.999999106,29.778387016,0.,0.; 0000247P0000257
-142,0,241,251,261,3; 0000249P0000258
-102,4,253,255,257,259; 0000251P0000259
-110,1.,5.338250753,0.,-2.220446049E-16,5.338250753,0.; 0000253P0000260
-110,-5.245440609E-18,5.338250753,0.,-2.963324515E-17, 0000255P0000261
-0.944934554,0.; 0000255P0000262
-110,-2.220446049E-16,0.944934554,0.,1.,0.944934554,0.; 0000257P0000263
-110,1.,0.944934554,0.,1.,5.338250753,0.; 0000259P0000264
-102,4,263,265,269,271; 0000261P0000265
-110,-88.516429067,-27.229253203,-19.999999553,-88.516429067, 0000263P0000266
--27.229253203,19.999999553; 0000263P0000267
-100,0.,0.,0.,17.444057668,24.134149775,17.444057668, 0000265P0000268
--24.134149775; 0000265P0000269
-124,1.,0.,0.,-105.960486735,0.,-1.,0.,-3.095103428,0.,0.,-1., 0000267P0000270
-19.999999553; 0000267P0000271
-110,-88.516429067,21.039046347,19.999999553,-88.516429067, 0000269P0000272
-21.039046347,-19.999999553; 0000269P0000273
-100,0.,0.,0.,17.444057668,24.134149775,17.444057668, 0000271P0000274
--24.134149775; 0000271P0000275
-124,1.,0.,-0.,-105.960486735,0.,1.,0.,-3.095103428,0.,0.,1., 0000273P0000276
--19.999999553; 0000273P0000277
-144,277,1,0,285; 0000275P0000278
-120,281,283,1.367007434,2.1966581; 0000277P0000279
-124,1.,0.,0.,-76.554978638,0.,1.,0.,37.587915978,0.,0.,1., 0000279P0000280
--19.999999553; 0000279P0000281
-110,0.,0.,1.,0.,0.,0.; 0000281P0000282
-110,20.419142549,0.,0.,20.419142549,0.,39.999999106; 0000283P0000283
-142,0,277,287,297,3; 0000285P0000284
-102,4,289,291,293,295; 0000287P0000285
-110,1.,2.1966581,0.,-2.268478349E-17,2.1966581,0.; 0000289P0000286
-110,-2.268478349E-17,2.1966581,0.,-2.729026995E-17,1.367007434, 0000291P0000287
-0.; 0000291P0000288
-110,-2.729026995E-17,1.367007434,0.,1.,1.367007434,0.; 0000293P0000289
-110,1.,1.367007434,0.,1.,2.1966581,0.; 0000295P0000290
-102,4,299,301,305,307; 0000297P0000291
-110,-88.516429067,21.039046347,19.999999553,-88.516429067, 0000299P0000292
-21.039046347,-19.999999553; 0000299P0000293
-100,0.,0.,0.,-11.961450429,-16.548869631,4.132451861, 0000301P0000294
--19.996605313; 0000301P0000295
-124,1.,0.,0.,-76.554978638,0.,1.,0.,37.587915978,0.,0.,1., 0000303P0000296
--19.999999553; 0000303P0000297
-110,-72.422526777,17.591310665,-19.999999553,-72.422526777, 0000305P0000298
-17.591310665,19.999999553; 0000305P0000299
-100,0.,0.,0.,4.132451861,19.996605313,-11.961450429, 0000307P0000300
-16.548869631; 0000307P0000301
-124,1.,0.,0.,-76.554978638,0.,-1.,0.,37.587915978,0.,0.,-1., 0000309P0000302
-19.999999553; 0000309P0000303
-144,313,1,0,315; 0000311P0000304
-128,1,1,1,1,0,0,1,0,0,0.,0.,136.424396865,136.424396865, 0000313P0000305
--39.999999106,-39.999999106,0.,0.,1.,1.,1.,1.,-72.422526777, 0000313P0000306
-17.591310665,19.999999553,63.609212637,27.934517711, 0000313P0000307
-19.999999553,-72.422526777,17.591310665,-19.999999553, 0000313P0000308
-63.609212637,27.934517711,-19.999999553,0.,136.424396865, 0000313P0000309
--39.999999106,0.; 0000313P0000310
-142,0,313,317,327,3; 0000315P0000311
-102,4,319,321,323,325; 0000317P0000312
-110,0.,0.,0.,0.,-39.999999106,0.; 0000319P0000313
-110,0.,-39.999999106,0.,136.424396865,-39.999999106,0.; 0000321P0000314
-110,136.424396865,-39.999999106,0.,136.424396865,0.,0.; 0000323P0000315
-110,136.424396865,-3.552713679E-14,0.,0.,-3.552713679E-14,0.; 0000325P0000316
-102,4,329,331,333,335; 0000327P0000317
-110,-72.422526777,17.591310665,-19.999999553,-72.422526777, 0000329P0000318
-17.591310665,19.999999553; 0000329P0000319
-110,-72.422526777,17.591310665,19.999999553,63.609212637, 0000331P0000320
-27.934517711,19.999999553; 0000331P0000321
-110,63.609212637,27.934517711,19.999999553,63.609212637, 0000333P0000322
-27.934517711,-19.999999553; 0000333P0000323
-110,63.609212637,27.934517711,-19.999999553,-72.422526777, 0000335P0000324
-17.591310665,-19.999999553; 0000335P0000325
-144,339,1,0,347; 0000337P0000326
-120,343,345,-3.552713679E-15,6.283185307; 0000339P0000327
-124,1.,0.,0.,-106.472015381,0.,1.,0.,-2.809300087,0.,0.,1., 0000341P0000328
--40.000199106; 0000341P0000329
-110,0.,0.,1.,0.,0.,0.; 0000343P0000330
-110,15.057678156,0.,20.000199553,15.057678156,0.,60.000198659; 0000345P0000331
-142,0,339,349,359,3; 0000347P0000332
-102,4,351,353,355,357; 0000349P0000333
-110,1.,6.283185307,0.,8.881784396E-17,6.283185307,0.; 0000351P0000334
-110,1.232595164E-32,6.283185307,0.,-3.487868576E-17, 0000353P0000335
-7.993605777E-15,0.; 0000353P0000336
-110,8.881784396E-17,-1.77631253E-15,0.,1.,7.105471469E-15,0.; 0000355P0000337
-126,1,1,0,0,1,0,1.570796327,1.570796327,7.853981634,7.853981634, 0000357P0000338
-1.,1.,1.,1.687538997E-14,0.,1.,6.283185307,0.,1.570796327, 0000357P0000339
-7.853981634,0.,0.,1.; 0000357P0000340
-102,4,361,363,365,367; 0000359P0000341
-110,-91.414337225,-2.809300087,19.999999553,-91.414337225, 0000361P0000342
--2.809300087,-19.999999553; 0000361P0000343
-126,7,4,0,1,0,0,4.71238898,4.71238898,4.71238898,4.71238898, 0000363P0000344
-4.71238898,7.853981634,7.853981634,7.853981634,10.995574288, 0000363P0000345
-10.995574288,10.995574288,10.995574288,10.995574288, 0000363P0000346
-3.831440713E+29,3.831440713E+29,4.129910647E+29,2.363425258E+29, 0000363P0000347
-2.363425258E+29,4.129910647E+29,3.831440713E+29,3.831440713E+29, 0000363P0000348
--91.414337225,-2.809300087,-19.999999553,-91.414337225, 0000363P0000349
-9.016972681,-19.999999553,-102.903753475,15.476673808, 0000363P0000350
--19.999999553,-121.529693537,16.362731193,-19.999999553, 0000363P0000351
--121.529693537,-21.981331368,-19.999999553,-102.903753475, 0000363P0000352
--21.095273982,-19.999999553,-91.414337225,-14.635572856, 0000363P0000353
--19.999999553,-91.414337225,-2.809300087,-19.999999553, 0000363P0000354
-4.71238898,10.995574288,0.,0.,1.; 0000363P0000355
-110,-91.414337225,-2.809300087,-19.999999553,-91.414337225, 0000365P0000356
--2.809300087,19.999999553; 0000365P0000357
-126,7,4,0,1,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000367P0000358
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000367P0000359
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000367P0000360
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000367P0000361
-4.129910647E+29,3.831440713E+29,3.831440713E+29,-91.414337225, 0000367P0000362
--2.809300087,19.999999553,-91.414337225,-14.635572856, 0000367P0000363
-19.999999553,-102.903753475,-21.095273982,19.999999553, 0000367P0000364
--121.529693537,-21.981331368,19.999999553,-121.529693537, 0000367P0000365
-16.362731193,19.999999553,-102.903753475,15.476673808, 0000367P0000366
-19.999999553,-91.414337225,9.016972681,19.999999553, 0000367P0000367
--91.414337225,-2.809300087,19.999999553,1.570796327,7.853981634, 0000367P0000368
-0.,0.,1.; 0000367P0000369
-144,371,1,0,379; 0000369P0000370
-120,375,377,-3.552713679E-15,6.283185307; 0000371P0000371
-124,1.,0.,0.,118.572458625,0.,1.,0.,-4.606760107,0.,0.,1., 0000373P0000372
--40.000199106; 0000373P0000373
-110,0.,0.,1.,0.,0.,0.; 0000375P0000374
-110,23.404166834,0.,20.000199553,23.404166834,0.,60.000198659; 0000377P0000375
-142,0,371,381,391,3; 0000379P0000376
-102,4,383,385,387,389; 0000381P0000377
-110,1.,6.283185307,0.,8.881784396E-17,6.283185307,0.; 0000383P0000378
-110,1.232595164E-32,6.283185307,0.,-3.487868576E-17, 0000385P0000379
-7.993605777E-15,0.; 0000385P0000380
-110,8.881784396E-17,-1.77631253E-15,0.,1.,7.105471469E-15,0.; 0000387P0000381
-126,1,1,0,0,1,0,1.570796327,1.570796327,7.853981634,7.853981634, 0000389P0000382
-1.,1.,1.,1.687538997E-14,0.,1.,6.283185307,0.,1.570796327, 0000389P0000383
-7.853981634,0.,0.,1.; 0000389P0000384
-102,4,393,395,397,399; 0000391P0000385
-110,141.976625459,-4.606760107,19.999999553,141.976625459, 0000393P0000386
--4.606760107,-19.999999553; 0000393P0000387
-126,7,4,0,1,0,0,4.71238898,4.71238898,4.71238898,4.71238898, 0000395P0000388
-4.71238898,7.853981634,7.853981634,7.853981634,10.995574288, 0000395P0000389
-10.995574288,10.995574288,10.995574288,10.995574288, 0000395P0000390
-3.831440713E+29,3.831440713E+29,4.129910647E+29,2.363425258E+29, 0000395P0000391
-2.363425258E+29,4.129910647E+29,3.831440713E+29,3.831440713E+29, 0000395P0000392
-141.976625459,-4.606760107,-19.999999553,141.976625459, 0000395P0000393
-13.77482954,-19.999999553,124.118612294,23.815150584, 0000395P0000394
--19.999999553,95.168291791,25.192350618,-19.999999553, 0000395P0000395
-95.168291791,-34.405870832,-19.999999553,124.118612294, 0000395P0000396
--33.028670798,-19.999999553,141.976625459,-22.988349754, 0000395P0000397
--19.999999553,141.976625459,-4.606760107,-19.999999553, 0000395P0000398
-4.71238898,10.995574288,0.,0.,1.; 0000395P0000399
-110,141.976625459,-4.606760107,-19.999999553,141.976625459, 0000397P0000400
--4.606760107,19.999999553; 0000397P0000401
-126,7,4,0,1,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000399P0000402
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000399P0000403
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000399P0000404
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000399P0000405
-4.129910647E+29,3.831440713E+29,3.831440713E+29,141.976625459, 0000399P0000406
--4.606760107,19.999999553,141.976625459,-22.988349754, 0000399P0000407
-19.999999553,124.118612294,-33.028670798,19.999999553, 0000399P0000408
-95.168291791,-34.405870832,19.999999553,95.168291791, 0000399P0000409
-25.192350618,19.999999553,124.118612294,23.815150584, 0000399P0000410
-19.999999553,141.976625459,13.77482954,19.999999553, 0000399P0000411
-141.976625459,-4.606760107,19.999999553,1.570796327,7.853981634, 0000399P0000412
-0.,0.,1.; 0000399P0000413
-144,403,1,2,405,455,461; 0000401P0000414
-128,1,1,1,1,0,0,1,0,0,-139.650442578,-139.650442578, 0000403P0000415
-164.864616815,164.864616815,-52.441943309,-52.441943309, 0000403P0000416
-47.40098106,47.40098106,1.,1.,1.,1.,-139.650442578, 0000403P0000417
--52.441943309,19.999999553,164.864616815,-52.441943309, 0000403P0000418
-19.999999553,-139.650442578,47.40098106,19.999999553, 0000403P0000419
-164.864616815,47.40098106,19.999999553,-139.650442578, 0000403P0000420
-164.864616815,-52.441943309,47.40098106; 0000403P0000421
-142,0,403,407,425,3; 0000405P0000422
-102,8,409,411,413,415,417,419,421,423; 0000407P0000423
-126,7,4,0,0,0,0,1.073345169,1.073345169,1.073345169,1.073345169, 0000409P0000424
-1.073345169,1.284126135,1.284126135,1.284126135,1.494907102, 0000409P0000425
-1.494907102,1.494907102,1.494907102,1.494907102,1.011189921, 0000409P0000426
-1.011189921,1.011189931,1.011179532,1.011179532,1.011189931, 0000409P0000427
-1.011189921,1.011189921,93.497879803,36.745399237,0., 0000409P0000428
-90.049436422,34.872902929,0.,86.473696164,33.245011418,0., 0000409P0000429
-82.790432165,31.870724965,0.,75.248696652,29.647496417,0., 0000409P0000430
-71.408940021,28.804071284,0.,67.521947549,28.232023481,0., 0000409P0000431
-63.609212637,27.934517711,0.,1.073345169,1.494907102,0.,0.,1.; 0000409P0000432
-110,63.609212637,27.934517711,0.,-72.422526777,17.591310665,0.; 0000411P0000433
-126,7,4,0,0,0,0,1.367007434,1.367007434,1.367007434,1.367007434, 0000413P0000434
-1.367007434,1.781832767,1.781832767,1.781832767,2.1966581, 0000413P0000435
-2.1966581,2.1966581,2.1966581,2.1966581,1.044284595,1.044284595, 0000413P0000436
-1.044285207,1.044124006,1.044124006,1.044285207,1.044284595, 0000413P0000437
-1.044284595,-72.422526777,17.591310665,0.,-74.496301391, 0000413P0000438
-17.162749235,0.,-76.619336034,17.023005488,0.,-78.746721852, 0000413P0000439
-17.175011565,0.,-82.917772227,18.068559876,0.,-84.920732008, 0000413P0000440
-18.80138208,0.,-86.800206478,19.798568183,0.,-88.516429067, 0000413P0000441
-21.039046347,0.,1.367007434,2.1966581,0.,0.,1.; 0000413P0000442
-100,0.,-105.960486735,-3.095103428,-88.516429067,21.039046347, 0000415P0000443
--88.516429067,-27.229253203; 0000415P0000444
-126,7,4,0,0,0,0,4.086527207,4.086527207,4.086527207,4.086527207, 0000417P0000445
-4.086527207,4.434162711,4.434162711,4.434162711,4.781798214, 0000417P0000446
-4.781798214,4.781798214,4.781798214,4.781798214,1.03083173, 0000417P0000447
-1.03083173,1.03083194,1.030753477,1.030753477,1.03083194, 0000417P0000448
-1.03083173,1.03083173,-88.516429067,-27.229253203,0., 0000417P0000449
--86.786150795,-25.978615653,0.,-84.916794517,-24.932704109,0., 0000417P0000450
--82.936273839,-24.107124921,0.,-78.80986423,-22.928478295,0., 0000417P0000451
--76.69208436,-22.583439786,0.,-74.552323437,-22.484207509,0., 0000417P0000452
--72.422526777,-22.632272914,0.,4.086527207,4.781798214,0.,0.,1.; 0000417P0000453
-110,-72.422526777,-22.632272914,0.,59.138831837,-31.778538464, 0000419P0000454
-0.; 0000419P0000455
-126,7,4,0,0,0,0,4.781798214,4.781798214,4.781798214,4.781798214, 0000421P0000456
-4.781798214,4.995819176,4.995819176,4.995819176,5.209840139, 0000421P0000457
-5.209840139,5.209840139,5.209840139,5.209840139,1.011539234, 0000421P0000458
-1.011539234,1.011539246,1.011528189,1.011528189,1.011539246, 0000421P0000459
-1.011539234,1.011539234,59.138831837,-31.778538464,0., 0000421P0000460
-63.635671563,-32.09116286,0.,68.104473804,-32.724194555,0., 0000421P0000461
-72.519765903,-33.674023313,0.,81.191994379,-36.199999233,0., 0000421P0000462
-85.426740197,-37.76968291,0.,89.536511056,-39.635347961,0., 0000421P0000463
-93.497879803,-41.786361486,0.,4.781798214,5.209840139,0.,0.,1.; 0000421P0000464
-100,0.,114.819156639,-2.520481125,93.497879803,-41.786361486, 0000423P0000465
-93.497879803,36.745399237; 0000423P0000466
-102,8,427,431,433,437,441,445,447,451; 0000425P0000467
-100,0.,0.,0.,35.534447703,65.441267094,5.645780537,74.252148619; 0000427P0000468
-124,1.,0.,0.,57.9634321,0.,-1.,0.,102.18666633,0.,0.,-1., 0000429P0000469
-19.999999553; 0000429P0000470
-110,63.609212637,27.934517711,19.999999553,-72.422526777, 0000431P0000471
-17.591310665,19.999999553; 0000431P0000472
-100,0.,0.,0.,4.132451861,19.996605313,-11.961450429, 0000433P0000473
-16.548869631; 0000433P0000474
-124,1.,0.,0.,-76.554978638,0.,-1.,0.,37.587915978,0.,0.,-1., 0000435P0000475
-19.999999553; 0000435P0000476
-100,0.,0.,0.,17.444057668,24.134149775,17.444057668, 0000437P0000477
--24.134149775; 0000437P0000478
-124,1.,0.,-0.,-105.960486735,0.,1.,0.,-3.095103428,0.,0.,1., 0000439P0000479
-19.999999553; 0000439P0000480
-100,0.,0.,0.,-14.390216636,-19.90910889,1.703685653, 0000441P0000481
--24.506089179; 0000441P0000482
-124,1.,0.,0.,-74.12621243,0.,-1.,0.,-47.138362093,0.,0.,-1., 0000443P0000483
-19.999999553; 0000443P0000484
-110,-72.422526777,-22.632272914,19.999999553,59.138831837, 0000445P0000485
--31.778538464,19.999999553; 0000445P0000486
-100,0.,0.,0.,5.842874313,-84.04484635,40.201922279, 0000447P0000487
--74.037023328; 0000447P0000488
-124,1.,0.,0.,53.295957524,0.,-1.,0.,-115.823384813,0.,0.,-1., 0000449P0000489
-19.999999553; 0000449P0000490
-100,0.,0.,0.,-21.321276836,-39.265880361,-21.321276836, 0000451P0000491
-39.265880361; 0000451P0000492
-124,1.,0.,-0.,114.819156639,0.,1.,0.,-2.520481125,0.,0.,1., 0000453P0000493
-19.999999553; 0000453P0000494
-142,0,403,457,459,3; 0000455P0000495
-126,7,4,0,0,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000457P0000496
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000457P0000497
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000457P0000498
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000457P0000499
-4.129910647E+29,3.831440713E+29,3.831440713E+29,-91.414337225, 0000457P0000500
--2.809300087,0.,-91.414337225,-14.635572856,0.,-102.903753475, 0000457P0000501
--21.095273982,0.,-121.529693537,-21.981331368,0.,-121.529693537, 0000457P0000502
-16.362731193,0.,-102.903753475,15.476673808,0.,-91.414337225, 0000457P0000503
-9.016972681,0.,-91.414337225,-2.809300087,0.,1.570796327, 0000457P0000504
-7.853981634,0.,0.,1.; 0000457P0000505
-126,7,4,0,1,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000459P0000506
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000459P0000507
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000459P0000508
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000459P0000509
-4.129910647E+29,3.831440713E+29,3.831440713E+29,-91.414337225, 0000459P0000510
--2.809300087,19.999999553,-91.414337225,-14.635572856, 0000459P0000511
-19.999999553,-102.903753475,-21.095273982,19.999999553, 0000459P0000512
--121.529693537,-21.981331368,19.999999553,-121.529693537, 0000459P0000513
-16.362731193,19.999999553,-102.903753475,15.476673808, 0000459P0000514
-19.999999553,-91.414337225,9.016972681,19.999999553, 0000459P0000515
--91.414337225,-2.809300087,19.999999553,1.570796327,7.853981634, 0000459P0000516
-0.,0.,1.; 0000459P0000517
-142,0,403,463,465,3; 0000461P0000518
-126,7,4,0,0,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000463P0000519
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000463P0000520
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000463P0000521
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000463P0000522
-4.129910647E+29,3.831440713E+29,3.831440713E+29,141.976625459, 0000463P0000523
--4.606760107,0.,141.976625459,-22.988349754,0.,124.118612294, 0000463P0000524
--33.028670798,0.,95.168291791,-34.405870832,0.,95.168291791, 0000463P0000525
-25.192350618,0.,124.118612294,23.815150584,0.,141.976625459, 0000463P0000526
-13.77482954,0.,141.976625459,-4.606760107,0.,1.570796327, 0000463P0000527
-7.853981634,0.,0.,1.; 0000463P0000528
-126,7,4,0,1,0,0,1.570796327,1.570796327,1.570796327,1.570796327, 0000465P0000529
-1.570796327,4.71238898,4.71238898,4.71238898,7.853981634, 0000465P0000530
-7.853981634,7.853981634,7.853981634,7.853981634,3.831440713E+29, 0000465P0000531
-3.831440713E+29,4.129910647E+29,2.363425258E+29,2.363425258E+29, 0000465P0000532
-4.129910647E+29,3.831440713E+29,3.831440713E+29,141.976625459, 0000465P0000533
--4.606760107,19.999999553,141.976625459,-22.988349754, 0000465P0000534
-19.999999553,124.118612294,-33.028670798,19.999999553, 0000465P0000535
-95.168291791,-34.405870832,19.999999553,95.168291791, 0000465P0000536
-25.192350618,19.999999553,124.118612294,23.815150584, 0000465P0000537
-19.999999553,141.976625459,13.77482954,19.999999553, 0000465P0000538
-141.976625459,-4.606760107,19.999999553,1.570796327,7.853981634, 0000465P0000539
-0.,0.,1.; 0000465P0000540
-S 1G 4D 466P 540 T0000001
+++ /dev/null
- -1
- 2411
- 1 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 0.0000000000000000E+00
- 2 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 0.0000000000000000E+00
- 3 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 0.0000000000000000E+00
- 4 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 0.0000000000000000E+00
- 5 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 0.0000000000000000E+00
- 6 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 0.0000000000000000E+00
- 7 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 0.0000000000000000E+00
- 8 0 0 0
- 0.0000000000000000E+00 -1.4350000000000000E+01 0.0000000000000000E+00
- 9 0 0 0
- 0.0000000000000000E+00 -1.5500000000000000E+01 5.0000000000000000E-01
- 10 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 1.7000000000000000E+00
- 11 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 3.3500000000000001E+00
- 12 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 4.9500000000000002E+00
- 13 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 7.1550000000000002E+00
- 14 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 9.3599999999999994E+00
- 15 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 1.2359999999999999E+01
- 16 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 1.5359999999999999E+01
- 17 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 1.7609999999999999E+01
- 18 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 1.8969999999999999E+01
- 19 0 0 0
- 0.0000000000000000E+00 -1.6129999999999999E+01 2.0800000000000001E+01
- 20 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 2.1449999999999999E+01
- 21 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 2.1449999999999999E+01
- 22 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 2.1366000000000000E+01
- 23 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 2.1239000000000001E+01
- 24 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 2.1111999999999998E+01
- 25 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 2.1027999999999999E+01
- 26 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 2.0916000000000000E+01
- 27 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 2.0000000000000000E+00
- 28 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 1.8969999999999999E+01
- 29 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 2.0000000000000000E+00
- 30 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 2.0000000000000000E+00
- 31 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 2.0000000000000000E+00
- 32 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 2.0000000000000000E+00
- 33 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 2.0000000000000000E+00
- 34 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 2.0000000000000000E+00
- 35 0 0 0
- 0.0000000000000000E+00 -1.2877000000000001E+01 3.2160000000000002E+00
- 36 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 4.9500000000000002E+00
- 37 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 7.1550000000000002E+00
- 38 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 9.3599999999999994E+00
- 39 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 1.2359999999999999E+01
- 40 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 1.5359999999999999E+01
- 41 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 1.7609999999999999E+01
- 42 0 0 0
- 0.0000000000000000E+00 -1.4130000000000001E+01 1.8969999999999999E+01
- 43 0 0 0
- 0.0000000000000000E+00 -1.3600000000000000E+01 2.0000000000000000E+00
- 44 0 0 0
- 0.0000000000000000E+00 -1.5199999999999999E+01 3.8500000000000001E+00
- 45 0 0 0
- 0.0000000000000000E+00 -1.4500000000000000E+01 3.8500000000000001E+00
- 46 0 0 0
- 0.0000000000000000E+00 -1.4150000000000000E+01 3.1040000000000001E+00
- 47 0 0 0
- 0.0000000000000000E+00 -1.5199999999999999E+01 2.0000000000000000E+00
- 48 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 3.6600000000000001E+00
- 49 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 4.9500000000000002E+00
- 50 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 3.0000000000000000E+00
- 51 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 2.7999999999999998E+00
- 52 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 1.7609999999999999E+01
- 53 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 0.0000000000000000E+00
- 54 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 0.0000000000000000E+00
- 55 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 0.0000000000000000E+00
- 56 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 0.0000000000000000E+00
- 57 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 0.0000000000000000E+00
- 58 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 0.0000000000000000E+00
- 59 0 0 0
- 0.0000000000000000E+00 1.4350000000000000E+01 0.0000000000000000E+00
- 60 0 0 0
- 0.0000000000000000E+00 1.5500000000000000E+01 5.0000000000000000E-01
- 61 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 1.7000000000000000E+00
- 62 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 3.3500000000000001E+00
- 63 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 4.9500000000000002E+00
- 64 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 7.1550000000000002E+00
- 65 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 9.3599999999999994E+00
- 66 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 1.2359999999999999E+01
- 67 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 1.5359999999999999E+01
- 68 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 1.7609999999999999E+01
- 69 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 1.8969999999999999E+01
- 70 0 0 0
- 0.0000000000000000E+00 1.6129999999999999E+01 2.0800000000000001E+01
- 71 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 2.1449999999999999E+01
- 72 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 2.1449999999999999E+01
- 73 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 2.1449999999999999E+01
- 74 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 2.1366000000000000E+01
- 75 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 2.1239000000000001E+01
- 76 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 2.1111999999999998E+01
- 77 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 2.1027999999999999E+01
- 78 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 2.0916000000000000E+01
- 79 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 2.0000000000000000E+00
- 80 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 2.0000000000000000E+00
- 81 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 2.0000000000000000E+00
- 82 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 2.0000000000000000E+00
- 83 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 2.0000000000000000E+00
- 84 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 2.0000000000000000E+00
- 85 0 0 0
- 0.0000000000000000E+00 1.2877000000000001E+01 3.2160000000000002E+00
- 86 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 4.9500000000000002E+00
- 87 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 7.1550000000000002E+00
- 88 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 9.3599999999999994E+00
- 89 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 1.2359999999999999E+01
- 90 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 1.5359999999999999E+01
- 91 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 1.7609999999999999E+01
- 92 0 0 0
- 0.0000000000000000E+00 1.4130000000000001E+01 1.8969999999999999E+01
- 93 0 0 0
- 0.0000000000000000E+00 1.3600000000000000E+01 2.0000000000000000E+00
- 94 0 0 0
- 0.0000000000000000E+00 1.5199999999999999E+01 3.8500000000000001E+00
- 95 0 0 0
- 0.0000000000000000E+00 1.4500000000000000E+01 3.8500000000000001E+00
- 96 0 0 0
- 0.0000000000000000E+00 1.4150000000000000E+01 3.1040000000000001E+00
- 97 0 0 0
- 0.0000000000000000E+00 1.5199999999999999E+01 2.0000000000000000E+00
- 98 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 3.6600000000000001E+00
- 99 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 4.9500000000000002E+00
- 100 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 3.0000000000000000E+00
- 101 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 7.1550000000000002E+00
- 102 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 9.3599999999999994E+00
- 103 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 1.2359999999999999E+01
- 104 0 0 0
- 0.0000000000000000E+00 0.0000000000000000E+00 1.5359999999999999E+01
- 105 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 7.1550000000000002E+00
- 106 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 9.3599999999999994E+00
- 107 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 1.2359999999999999E+01
- 108 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 1.5359999999999999E+01
- 109 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 1.7609999999999999E+01
- 110 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 3.2149999999999999E+00
- 111 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 3.2149999999999999E+00
- 112 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 3.2149999999999999E+00
- 113 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 3.2149999999999999E+00
- 114 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 3.2149999999999999E+00
- 115 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 3.2149999999999999E+00
- 116 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 3.2149999999999999E+00
- 117 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 3.2149999999999999E+00
- 118 0 0 0
- 0.0000000000000000E+00 2.3999999999999999E+00 1.8969999999999999E+01
- 119 0 0 0
- 0.0000000000000000E+00 -1.2877000000000001E+01 4.9500000000000002E+00
- 120 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 4.9500000000000002E+00
- 121 0 0 0
- 0.0000000000000000E+00 1.2877000000000001E+01 4.9500000000000002E+00
- 122 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 4.9500000000000002E+00
- 123 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 4.9500000000000002E+00
- 124 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 7.1550000000000002E+00
- 125 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 1.7609999999999999E+01
- 126 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 1.7609999999999999E+01
- 127 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 7.1550000000000002E+00
- 128 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 1.7609999999999999E+01
- 129 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 4.9500000000000002E+00
- 130 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 1.7609999999999999E+01
- 131 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 7.1550000000000002E+00
- 132 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 7.1550000000000002E+00
- 133 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 4.9500000000000002E+00
- 134 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 4.9500000000000002E+00
- 135 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 4.9500000000000002E+00
- 136 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 9.3599999999999994E+00
- 137 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 1.2359999999999999E+01
- 138 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 1.5359999999999999E+01
- 139 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 4.9500000000000002E+00
- 140 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 4.9500000000000002E+00
- 141 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 1.5359999999999999E+01
- 142 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 1.2359999999999999E+01
- 143 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 9.3599999999999994E+00
- 144 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 9.3599999999999994E+00
- 145 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 1.2359999999999999E+01
- 146 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 1.5359999999999999E+01
- 147 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 1.5359999999999999E+01
- 148 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 1.2359999999999999E+01
- 149 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 9.3599999999999994E+00
- 150 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 4.9500000000000002E+00
- 151 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 4.9500000000000002E+00
- 152 0 0 0
- 0.0000000000000000E+00 4.0000000000000000E+00 1.8969999999999999E+01
- 153 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 1.8969999999999999E+01
- 154 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 1.8969999999999999E+01
- 155 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 1.8969999999999999E+01
- 156 0 0 0
- 0.0000000000000000E+00 1.2000000000000000E+01 1.8969999999999999E+01
- 157 0 0 0
- 0.0000000000000000E+00 -2.3999999999999999E+00 1.8969999999999999E+01
- 158 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 1.8969999999999999E+01
- 159 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 1.8969999999999999E+01
- 160 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 1.8969999999999999E+01
- 161 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 1.8969999999999999E+01
- 162 0 0 0
- 0.0000000000000000E+00 -1.2000000000000000E+01 1.8969999999999999E+01
- 163 0 0 0
- 3.3999999999999999E+00 -4.0000000000000000E+00 0.0000000000000000E+00
- 164 0 0 0
- 3.3999999999999999E+00 -2.3999999999999999E+00 0.0000000000000000E+00
- 165 0 0 0
- 3.3999999999999999E+00 4.0000000000000000E+00 0.0000000000000000E+00
- 166 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 0.0000000000000000E+00
- 167 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 0.0000000000000000E+00
- 168 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 3.6600000000000001E+00
- 169 0 0 0
- 3.3999999999999999E+00 -5.5999999999999996E+00 0.0000000000000000E+00
- 170 0 0 0
- 3.3999999999999999E+00 -8.0000000000000000E+00 0.0000000000000000E+00
- 171 0 0 0
- 3.3999999999999999E+00 -1.0400000000000000E+01 0.0000000000000000E+00
- 172 0 0 0
- 3.3999999999999999E+00 -4.0000000000000000E+00 2.0000000000000000E+00
- 173 0 0 0
- 3.3999999999999999E+00 -2.3999999999999999E+00 2.0000000000000000E+00
- 174 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 2.0000000000000000E+00
- 175 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 2.0000000000000000E+00
- 176 0 0 0
- 3.3999999999999999E+00 4.0000000000000000E+00 2.0000000000000000E+00
- 177 0 0 0
- 3.3999999999999999E+00 5.5999999999999996E+00 0.0000000000000000E+00
- 178 0 0 0
- 3.3999999999999999E+00 8.0000000000000000E+00 0.0000000000000000E+00
- 179 0 0 0
- 3.3999999999999999E+00 1.0400000000000000E+01 0.0000000000000000E+00
- 180 0 0 0
- 3.3999999999999999E+00 -2.3999999999999999E+00 3.0000000000000000E+00
- 181 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 7.1550000000000002E+00
- 182 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 7.1550000000000002E+00
- 183 0 0 0
- 3.3999999999999999E+00 -8.0000000000000000E+00 2.0000000000000000E+00
- 184 0 0 0
- 3.3999999999999999E+00 -1.0400000000000000E+01 2.0000000000000000E+00
- 185 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 3.6600000000000001E+00
- 186 0 0 0
- 3.3999999999999999E+00 -1.2000000000000000E+01 0.0000000000000000E+00
- 187 0 0 0
- 3.3999999999999999E+00 -1.2000000000000000E+01 2.0000000000000000E+00
- 188 0 0 0
- 3.3999999999999999E+00 -1.4350000000000000E+01 0.0000000000000000E+00
- 189 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 1.7609999999999999E+01
- 190 0 0 0
- 3.3999999999999999E+00 -1.2877000000000001E+01 3.2160000000000002E+00
- 191 0 0 0
- 3.3999999999999999E+00 -1.5500000000000000E+01 5.0000000000000000E-01
- 192 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 1.7609999999999999E+01
- 193 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 1.9800000000000001E+01
- 194 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 1.7000000000000000E+00
- 195 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 3.3500000000000001E+00
- 196 0 0 0
- 3.3999999999999999E+00 8.0000000000000000E+00 2.0000000000000000E+00
- 197 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 7.1550000000000002E+00
- 198 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 7.1550000000000002E+00
- 199 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 7.1550000000000002E+00
- 200 0 0 0
- 3.3999999999999999E+00 1.2000000000000000E+01 0.0000000000000000E+00
- 201 0 0 0
- 3.3999999999999999E+00 1.0400000000000000E+01 2.0000000000000000E+00
- 202 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 1.7609999999999999E+01
- 203 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 1.7609999999999999E+01
- 204 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 1.7609999999999999E+01
- 205 0 0 0
- 3.3999999999999999E+00 1.4350000000000000E+01 0.0000000000000000E+00
- 206 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 4.9500000000000002E+00
- 207 0 0 0
- 3.3999999999999999E+00 1.2000000000000000E+01 2.0000000000000000E+00
- 208 0 0 0
- 3.3999999999999999E+00 1.5500000000000000E+01 5.0000000000000000E-01
- 209 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 7.1550000000000002E+00
- 210 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 1.2359999999999999E+01
- 211 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 7.1550000000000002E+00
- 212 0 0 0
- 3.3999999999999999E+00 1.2877000000000001E+01 3.2160000000000002E+00
- 213 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 1.7000000000000000E+00
- 214 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 3.3500000000000001E+00
- 215 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 7.1550000000000002E+00
- 216 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 4.9500000000000002E+00
- 217 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 9.3599999999999994E+00
- 218 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 1.2359999999999999E+01
- 219 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 4.9500000000000002E+00
- 220 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 7.1550000000000002E+00
- 221 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 7.1550000000000002E+00
- 222 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 4.9500000000000002E+00
- 223 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 1.2359999999999999E+01
- 224 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 9.3599999999999994E+00
- 225 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 1.5359999999999999E+01
- 226 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 1.7609999999999999E+01
- 227 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 1.8969999999999999E+01
- 228 0 0 0
- 3.3999999999999999E+00 -1.6129999999999999E+01 2.0800000000000001E+01
- 229 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 9.3599999999999994E+00
- 230 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 1.2359999999999999E+01
- 231 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 1.2359999999999999E+01
- 232 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 9.3599999999999994E+00
- 233 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 1.5359999999999999E+01
- 234 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 1.5359999999999999E+01
- 235 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 1.7609999999999999E+01
- 236 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 1.8969999999999999E+01
- 237 0 0 0
- 3.3999999999999999E+00 1.6129999999999999E+01 2.0800000000000001E+01
- 238 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 2.0916000000000000E+01
- 239 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 1.8969999999999999E+01
- 240 0 0 0
- 3.3999999999999999E+00 -1.2000000000000000E+01 2.1027999999999999E+01
- 241 0 0 0
- 3.3999999999999999E+00 -1.0400000000000000E+01 2.1111999999999998E+01
- 242 0 0 0
- 3.3999999999999999E+00 -8.0000000000000000E+00 2.1239000000000001E+01
- 243 0 0 0
- 3.3999999999999999E+00 -5.5999999999999996E+00 2.1366000000000000E+01
- 244 0 0 0
- 3.3999999999999999E+00 -4.0000000000000000E+00 2.1449999999999999E+01
- 245 0 0 0
- 3.3999999999999999E+00 -2.3999999999999999E+00 2.1449999999999999E+01
- 246 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 2.1449999999999999E+01
- 247 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 2.1449999999999999E+01
- 248 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 1.7609999999999999E+01
- 249 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 1.7609999999999999E+01
- 250 0 0 0
- 3.3999999999999999E+00 4.0000000000000000E+00 2.1449999999999999E+01
- 251 0 0 0
- 3.3999999999999999E+00 5.5999999999999996E+00 2.1366000000000000E+01
- 252 0 0 0
- 3.3999999999999999E+00 8.0000000000000000E+00 2.1239000000000001E+01
- 253 0 0 0
- 3.3999999999999999E+00 1.0400000000000000E+01 2.1111999999999998E+01
- 254 0 0 0
- 3.3999999999999999E+00 1.2000000000000000E+01 2.1027999999999999E+01
- 255 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 2.0916000000000000E+01
- 256 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 1.8969999999999999E+01
- 257 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 7.1550000000000002E+00
- 258 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 7.1550000000000002E+00
- 259 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 1.5359999999999999E+01
- 260 0 0 0
- 2.2000000000000002E+00 2.3999999999999999E+00 4.9500000000000002E+00
- 261 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 9.3599999999999994E+00
- 262 0 0 0
- 2.2000000000000002E+00 2.3999999999999999E+00 9.3599999999999994E+00
- 263 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 1.5359999999999999E+01
- 264 0 0 0
- 2.2000000000000002E+00 2.3999999999999999E+00 1.5359999999999999E+01
- 265 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 1.7609999999999999E+01
- 266 0 0 0
- 3.3999999999999999E+00 -1.4130000000000001E+01 1.7609999999999999E+01
- 267 0 0 0
- 3.3999999999999999E+00 1.4130000000000001E+01 1.7609999999999999E+01
- 268 0 0 0
- 2.2000000000000002E+00 -1.2877000000000001E+01 4.9500000000000002E+00
- 269 0 0 0
- 2.2000000000000002E+00 -2.3999999999999999E+00 4.9500000000000002E+00
- 270 0 0 0
- 2.2000000000000002E+00 1.2877000000000001E+01 4.9500000000000002E+00
- 271 0 0 0
- 2.2000000000000002E+00 4.0000000000000000E+00 4.9500000000000002E+00
- 272 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 9.3599999999999994E+00
- 273 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 1.2359999999999999E+01
- 274 0 0 0
- 0.0000000000000000E+00 -4.0000000000000000E+00 1.5359999999999999E+01
- 275 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 1.5359999999999999E+01
- 276 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 1.2359999999999999E+01
- 277 0 0 0
- 3.3999999999999999E+00 -5.5999999999999996E+00 2.0000000000000000E+00
- 278 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 4.9500000000000002E+00
- 279 0 0 0
- 0.0000000000000000E+00 -1.0400000000000000E+01 9.3599999999999994E+00
- 280 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 9.3599999999999994E+00
- 281 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 1.2359999999999999E+01
- 282 0 0 0
- 0.0000000000000000E+00 5.5999999999999996E+00 1.5359999999999999E+01
- 283 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 1.2359999999999999E+01
- 284 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 1.2359999999999999E+01
- 285 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 1.5359999999999999E+01
- 286 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 1.5359999999999999E+01
- 287 0 0 0
- 0.0000000000000000E+00 1.0400000000000000E+01 9.3599999999999994E+00
- 288 0 0 0
- 0.0000000000000000E+00 8.0000000000000000E+00 9.3599999999999994E+00
- 289 0 0 0
- 3.3999999999999999E+00 5.5999999999999996E+00 2.0000000000000000E+00
- 290 0 0 0
- 2.2000000000000002E+00 -2.3999999999999999E+00 9.3599999999999994E+00
- 291 0 0 0
- 2.2000000000000002E+00 -2.3999999999999999E+00 1.5359999999999999E+01
- 292 0 0 0
- 2.2000000000000002E+00 -1.2000000000000000E+01 4.9500000000000002E+00
- 293 0 0 0
- 2.2000000000000002E+00 -1.2000000000000000E+01 1.5359999999999999E+01
- 294 0 0 0
- 3.3999999999999999E+00 -2.3999999999999999E+00 1.9800000000000001E+01
- 295 0 0 0
- 2.2000000000000002E+00 -1.2000000000000000E+01 9.3599999999999994E+00
- 296 0 0 0
- 2.2000000000000002E+00 4.0000000000000000E+00 9.3599999999999994E+00
- 297 0 0 0
- 3.3999999999999999E+00 -1.2000000000000000E+01 1.9527999999999999E+01
- 298 0 0 0
- 2.2000000000000002E+00 4.0000000000000000E+00 1.5359999999999999E+01
- 299 0 0 0
- 2.2000000000000002E+00 1.2000000000000000E+01 1.5359999999999999E+01
- 300 0 0 0
- 2.2000000000000002E+00 1.2000000000000000E+01 4.9500000000000002E+00
- 301 0 0 0
- 2.2000000000000002E+00 1.2000000000000000E+01 9.3599999999999994E+00
- 302 0 0 0
- 3.3999999999999999E+00 -1.3600000000000000E+01 2.0000000000000000E+00
- 303 0 0 0
- 3.3999999999999999E+00 1.2000000000000000E+01 1.9527999999999999E+01
- 304 0 0 0
- 3.3999999999999999E+00 -4.0000000000000000E+00 2.7999999999999998E+00
- 305 0 0 0
- 3.3999999999999999E+00 -2.3999999999999999E+00 3.6600000000000001E+00
- 306 0 0 0
- 2.2000000000000002E+00 -4.0000000000000000E+00 4.9500000000000002E+00
- 307 0 0 0
- 3.3999999999999999E+00 1.3600000000000000E+01 2.0000000000000000E+00
- 308 0 0 0
- 2.2000000000000002E+00 5.5999999999999996E+00 4.9500000000000002E+00
- 309 0 0 0
- 2.2000000000000002E+00 1.0400000000000000E+01 4.9500000000000002E+00
- 310 0 0 0
- 2.2000000000000002E+00 8.0000000000000000E+00 4.9500000000000002E+00
- 311 0 0 0
- 2.2000000000000002E+00 -1.0400000000000000E+01 4.9500000000000002E+00
- 312 0 0 0
- 3.3999999999999999E+00 4.0000000000000000E+00 3.0000000000000000E+00
- 313 0 0 0
- 2.2000000000000002E+00 -8.0000000000000000E+00 4.9500000000000002E+00
- 314 0 0 0
- 2.2000000000000002E+00 -5.5999999999999996E+00 4.9500000000000002E+00
- 315 0 0 0
- 3.3999999999999999E+00 -1.5199999999999999E+01 2.0000000000000000E+00
- 316 0 0 0
- 3.3999999999999999E+00 -1.4150000000000000E+01 3.1040000000000001E+00
- 317 0 0 0
- 3.3999999999999999E+00 -4.0000000000000000E+00 1.9949999999999999E+01
- 318 0 0 0
- 3.3999999999999999E+00 -1.0400000000000000E+01 1.9611999999999998E+01
- 319 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 4.9500000000000002E+00
- 320 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 1.7609999999999999E+01
- 321 0 0 0
- 3.3999999999999999E+00 4.0000000000000000E+00 1.9949999999999999E+01
- 322 0 0 0
- 3.3999999999999999E+00 1.5199999999999999E+01 2.0000000000000000E+00
- 323 0 0 0
- 3.3999999999999999E+00 1.4150000000000000E+01 3.1040000000000001E+00
- 324 0 0 0
- 3.3999999999999999E+00 1.0400000000000000E+01 1.9611999999999998E+01
- 325 0 0 0
- 3.3999999999999999E+00 -1.5199999999999999E+01 3.8500000000000001E+00
- 326 0 0 0
- 3.3999999999999999E+00 -1.4500000000000000E+01 3.8500000000000001E+00
- 327 0 0 0
- 3.3999999999999999E+00 -8.0000000000000000E+00 1.9739000000000001E+01
- 328 0 0 0
- 3.3999999999999999E+00 -5.5999999999999996E+00 1.9866000000000000E+01
- 329 0 0 0
- 3.3999999999999999E+00 8.0000000000000000E+00 1.9739000000000001E+01
- 330 0 0 0
- 3.3999999999999999E+00 5.5999999999999996E+00 1.9866000000000000E+01
- 331 0 0 0
- 3.3999999999999999E+00 1.5199999999999999E+01 3.8500000000000001E+00
- 332 0 0 0
- 3.3999999999999999E+00 1.4500000000000000E+01 3.8500000000000001E+00
- 333 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 1.5359999999999999E+01
- 334 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 1.5359999999999999E+01
- 335 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 1.2359999999999999E+01
- 336 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 1.2359999999999999E+01
- 337 0 0 0
- 0.0000000000000000E+00 -8.0000000000000000E+00 9.3599999999999994E+00
- 338 0 0 0
- 0.0000000000000000E+00 -5.5999999999999996E+00 9.3599999999999994E+00
- 339 0 0 0
- 3.3999999999999999E+00 0.0000000000000000E+00 1.8969999999999999E+01
- 340 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 7.1550000000000002E+00
- 341 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 1.5359999999999999E+01
- 342 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 9.3599999999999994E+00
- 343 0 0 0
- 3.3999999999999999E+00 2.3999999999999999E+00 1.2359999999999999E+01
- 344 0 0 0
- 6.7999999999999998E+00 -2.3999999999999999E+00 0.0000000000000000E+00
- 345 0 0 0
- 6.7999999999999998E+00 -4.0000000000000000E+00 0.0000000000000000E+00
- 346 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 0.0000000000000000E+00
- 347 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 0.0000000000000000E+00
- 348 0 0 0
- 6.7999999999999998E+00 4.0000000000000000E+00 0.0000000000000000E+00
- 349 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 2.0000000000000000E+00
- 350 0 0 0
- 6.7999999999999998E+00 -2.3999999999999999E+00 2.0000000000000000E+00
- 351 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 3.6600000000000001E+00
- 352 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 2.0000000000000000E+00
- 353 0 0 0
- 6.7999999999999998E+00 -5.5999999999999996E+00 0.0000000000000000E+00
- 354 0 0 0
- 6.7999999999999998E+00 -4.0000000000000000E+00 2.0000000000000000E+00
- 355 0 0 0
- 6.7999999999999998E+00 -8.0000000000000000E+00 0.0000000000000000E+00
- 356 0 0 0
- 6.7999999999999998E+00 -1.0400000000000000E+01 0.0000000000000000E+00
- 357 0 0 0
- 6.7999999999999998E+00 5.5999999999999996E+00 0.0000000000000000E+00
- 358 0 0 0
- 6.7999999999999998E+00 4.0000000000000000E+00 2.0000000000000000E+00
- 359 0 0 0
- 6.7999999999999998E+00 8.0000000000000000E+00 0.0000000000000000E+00
- 360 0 0 0
- 6.7999999999999998E+00 1.0400000000000000E+01 0.0000000000000000E+00
- 361 0 0 0
- 6.7999999999999998E+00 -1.2000000000000000E+01 0.0000000000000000E+00
- 362 0 0 0
- 6.7999999999999998E+00 -8.0000000000000000E+00 2.0000000000000000E+00
- 363 0 0 0
- 6.7999999999999998E+00 -1.0400000000000000E+01 2.0000000000000000E+00
- 364 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 7.1550000000000002E+00
- 365 0 0 0
- 6.7999999999999998E+00 -1.2000000000000000E+01 2.0000000000000000E+00
- 366 0 0 0
- 6.7999999999999998E+00 -1.4350000000000000E+01 0.0000000000000000E+00
- 367 0 0 0
- 6.7999999999999998E+00 -1.2877000000000001E+01 3.2160000000000002E+00
- 368 0 0 0
- 6.7999999999999998E+00 -1.5500000000000000E+01 5.0000000000000000E-01
- 369 0 0 0
- 6.7999999999999998E+00 1.2000000000000000E+01 0.0000000000000000E+00
- 370 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 1.7000000000000000E+00
- 371 0 0 0
- 6.7999999999999998E+00 8.0000000000000000E+00 2.0000000000000000E+00
- 372 0 0 0
- 2.2000000000000002E+00 -4.0000000000000000E+00 9.3599999999999994E+00
- 373 0 0 0
- 6.7999999999999998E+00 1.0400000000000000E+01 2.0000000000000000E+00
- 374 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 9.3599999999999994E+00
- 375 0 0 0
- 2.2000000000000002E+00 -4.0000000000000000E+00 1.5359999999999999E+01
- 376 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 4.9500000000000002E+00
- 377 0 0 0
- 6.7999999999999998E+00 1.4350000000000000E+01 0.0000000000000000E+00
- 378 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 3.3500000000000001E+00
- 379 0 0 0
- 6.7999999999999998E+00 1.2000000000000000E+01 2.0000000000000000E+00
- 380 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 4.9500000000000002E+00
- 381 0 0 0
- 2.2000000000000002E+00 -1.0400000000000000E+01 1.5359999999999999E+01
- 382 0 0 0
- 6.7999999999999998E+00 1.5500000000000000E+01 5.0000000000000000E-01
- 383 0 0 0
- 2.2000000000000002E+00 -1.0400000000000000E+01 9.3599999999999994E+00
- 384 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 7.1550000000000002E+00
- 385 0 0 0
- 2.2000000000000002E+00 5.5999999999999996E+00 9.3599999999999994E+00
- 386 0 0 0
- 2.2000000000000002E+00 1.0400000000000000E+01 9.3599999999999994E+00
- 387 0 0 0
- 2.2000000000000002E+00 8.0000000000000000E+00 9.3599999999999994E+00
- 388 0 0 0
- 6.7999999999999998E+00 1.2877000000000001E+01 3.2160000000000002E+00
- 389 0 0 0
- 2.2000000000000002E+00 5.5999999999999996E+00 1.5359999999999999E+01
- 390 0 0 0
- 2.2000000000000002E+00 1.0400000000000000E+01 1.5359999999999999E+01
- 391 0 0 0
- 2.2000000000000002E+00 8.0000000000000000E+00 1.5359999999999999E+01
- 392 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 1.7000000000000000E+00
- 393 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 7.1550000000000002E+00
- 394 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 1.2359999999999999E+01
- 395 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 9.3599999999999994E+00
- 396 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 3.3500000000000001E+00
- 397 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 4.9500000000000002E+00
- 398 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 1.2359999999999999E+01
- 399 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 9.3599999999999994E+00
- 400 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 4.9500000000000002E+00
- 401 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 1.5359999999999999E+01
- 402 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 7.1550000000000002E+00
- 403 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 7.1550000000000002E+00
- 404 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 1.2359999999999999E+01
- 405 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 1.5359999999999999E+01
- 406 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 9.3599999999999994E+00
- 407 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 9.3599999999999994E+00
- 408 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 1.7609999999999999E+01
- 409 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 1.5359999999999999E+01
- 410 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 1.8969999999999999E+01
- 411 0 0 0
- 6.7999999999999998E+00 -1.6129999999999999E+01 2.0800000000000001E+01
- 412 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 1.2359999999999999E+01
- 413 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 1.2359999999999999E+01
- 414 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 1.5359999999999999E+01
- 415 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 1.7609999999999999E+01
- 416 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 1.8969999999999999E+01
- 417 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 2.0916000000000000E+01
- 418 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 1.8969999999999999E+01
- 419 0 0 0
- 6.7999999999999998E+00 1.6129999999999999E+01 2.0800000000000001E+01
- 420 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 1.5359999999999999E+01
- 421 0 0 0
- 6.7999999999999998E+00 -1.2000000000000000E+01 2.1027999999999999E+01
- 422 0 0 0
- 6.7999999999999998E+00 -1.0400000000000000E+01 2.1111999999999998E+01
- 423 0 0 0
- 6.7999999999999998E+00 -8.0000000000000000E+00 2.1239000000000001E+01
- 424 0 0 0
- 6.7999999999999998E+00 -5.5999999999999996E+00 2.1366000000000000E+01
- 425 0 0 0
- 6.7999999999999998E+00 -4.0000000000000000E+00 2.1449999999999999E+01
- 426 0 0 0
- 6.7999999999999998E+00 -2.3999999999999999E+00 2.1449999999999999E+01
- 427 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 2.1449999999999999E+01
- 428 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 2.1449999999999999E+01
- 429 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 2.0916000000000000E+01
- 430 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 1.8969999999999999E+01
- 431 0 0 0
- 6.7999999999999998E+00 4.0000000000000000E+00 2.1449999999999999E+01
- 432 0 0 0
- 6.7999999999999998E+00 1.2000000000000000E+01 2.1027999999999999E+01
- 433 0 0 0
- 6.7999999999999998E+00 1.0400000000000000E+01 2.1111999999999998E+01
- 434 0 0 0
- 6.7999999999999998E+00 5.5999999999999996E+00 2.1366000000000000E+01
- 435 0 0 0
- 6.7999999999999998E+00 8.0000000000000000E+00 2.1239000000000001E+01
- 436 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 4.9500000000000002E+00
- 437 0 0 0
- 6.7999999999999998E+00 -5.5999999999999996E+00 2.0000000000000000E+00
- 438 0 0 0
- 6.7999999999999998E+00 -2.3999999999999999E+00 3.0000000000000000E+00
- 439 0 0 0
- 6.7999999999999998E+00 5.5999999999999996E+00 2.0000000000000000E+00
- 440 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 3.6600000000000001E+00
- 441 0 0 0
- 2.2000000000000002E+00 -8.0000000000000000E+00 1.5359999999999999E+01
- 442 0 0 0
- 2.2000000000000002E+00 -5.5999999999999996E+00 1.5359999999999999E+01
- 443 0 0 0
- 2.2000000000000002E+00 -8.0000000000000000E+00 9.3599999999999994E+00
- 444 0 0 0
- 2.2000000000000002E+00 -5.5999999999999996E+00 9.3599999999999994E+00
- 445 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 1.7609999999999999E+01
- 446 0 0 0
- 6.7999999999999998E+00 -1.4130000000000001E+01 1.7609999999999999E+01
- 447 0 0 0
- 6.7999999999999998E+00 1.4130000000000001E+01 1.7609999999999999E+01
- 448 0 0 0
- 6.7999999999999998E+00 0.0000000000000000E+00 1.8969999999999999E+01
- 449 0 0 0
- 6.7999999999999998E+00 -4.0000000000000000E+00 2.7999999999999998E+00
- 450 0 0 0
- 6.7999999999999998E+00 -2.3999999999999999E+00 3.6600000000000001E+00
- 451 0 0 0
- 6.7999999999999998E+00 4.0000000000000000E+00 3.0000000000000000E+00
- 452 0 0 0
- 6.7999999999999998E+00 -1.3600000000000000E+01 2.0000000000000000E+00
- 453 0 0 0
- 1.0199999999999999E+01 -2.3999999999999999E+00 0.0000000000000000E+00
- 454 0 0 0
- 1.0199999999999999E+01 -4.0000000000000000E+00 0.0000000000000000E+00
- 455 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 0.0000000000000000E+00
- 456 0 0 0
- 1.0199999999999999E+01 2.3999999999999999E+00 0.0000000000000000E+00
- 457 0 0 0
- 1.0199999999999999E+01 4.0000000000000000E+00 0.0000000000000000E+00
- 458 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 4.9500000000000002E+00
- 459 0 0 0
- 1.0199999999999999E+01 -2.3999999999999999E+00 2.0000000000000000E+00
- 460 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 2.0000000000000000E+00
- 461 0 0 0
- 1.0199999999999999E+01 2.3999999999999999E+00 2.0000000000000000E+00
- 462 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 3.6600000000000001E+00
- 463 0 0 0
- 1.0199999999999999E+01 -5.5999999999999996E+00 0.0000000000000000E+00
- 464 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 1.9800000000000001E+01
- 465 0 0 0
- 1.0199999999999999E+01 -4.0000000000000000E+00 2.0000000000000000E+00
- 466 0 0 0
- 1.0199999999999999E+01 -8.0000000000000000E+00 0.0000000000000000E+00
- 467 0 0 0
- 1.0199999999999999E+01 5.5999999999999996E+00 0.0000000000000000E+00
- 468 0 0 0
- 6.7999999999999998E+00 1.3600000000000000E+01 2.0000000000000000E+00
- 469 0 0 0
- 1.0199999999999999E+01 -1.0400000000000000E+01 0.0000000000000000E+00
- 470 0 0 0
- 1.0199999999999999E+01 4.0000000000000000E+00 2.0000000000000000E+00
- 471 0 0 0
- 1.0199999999999999E+01 8.0000000000000000E+00 0.0000000000000000E+00
- 472 0 0 0
- 1.0199999999999999E+01 1.0400000000000000E+01 0.0000000000000000E+00
- 473 0 0 0
- 1.0199999999999999E+01 -1.2000000000000000E+01 0.0000000000000000E+00
- 474 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 7.1550000000000002E+00
- 475 0 0 0
- 1.0199999999999999E+01 -8.0000000000000000E+00 2.0000000000000000E+00
- 476 0 0 0
- 1.0199999999999999E+01 -1.0400000000000000E+01 2.0000000000000000E+00
- 477 0 0 0
- 6.7999999999999998E+00 -1.4150000000000000E+01 3.1040000000000001E+00
- 478 0 0 0
- 1.0199999999999999E+01 -1.2000000000000000E+01 2.0000000000000000E+00
- 479 0 0 0
- 1.0199999999999999E+01 -1.4350000000000000E+01 0.0000000000000000E+00
- 480 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 7.1550000000000002E+00
- 481 0 0 0
- 6.7999999999999998E+00 -1.5199999999999999E+01 2.0000000000000000E+00
- 482 0 0 0
- 6.7999999999999998E+00 -1.5199999999999999E+01 3.8500000000000001E+00
- 483 0 0 0
- 6.7999999999999998E+00 -1.4500000000000000E+01 3.8500000000000001E+00
- 484 0 0 0
- 1.0199999999999999E+01 1.2000000000000000E+01 0.0000000000000000E+00
- 485 0 0 0
- 1.0199999999999999E+01 -1.2877000000000001E+01 3.2160000000000002E+00
- 486 0 0 0
- 1.0199999999999999E+01 8.0000000000000000E+00 2.0000000000000000E+00
- 487 0 0 0
- 1.0199999999999999E+01 -1.5500000000000000E+01 5.0000000000000000E-01
- 488 0 0 0
- 1.0199999999999999E+01 1.0400000000000000E+01 2.0000000000000000E+00
- 489 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 9.3599999999999994E+00
- 490 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 1.7000000000000000E+00
- 491 0 0 0
- 1.0199999999999999E+01 1.4350000000000000E+01 0.0000000000000000E+00
- 492 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 9.3599999999999994E+00
- 493 0 0 0
- 1.0199999999999999E+01 1.2000000000000000E+01 2.0000000000000000E+00
- 494 0 0 0
- 6.7999999999999998E+00 1.5199999999999999E+01 2.0000000000000000E+00
- 495 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 4.9500000000000002E+00
- 496 0 0 0
- 6.7999999999999998E+00 1.4150000000000000E+01 3.1040000000000001E+00
- 497 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 3.3500000000000001E+00
- 498 0 0 0
- 1.0199999999999999E+01 1.5500000000000000E+01 5.0000000000000000E-01
- 499 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 4.9500000000000002E+00
- 500 0 0 0
- 6.7999999999999998E+00 1.5199999999999999E+01 3.8500000000000001E+00
- 501 0 0 0
- 6.7999999999999998E+00 1.4500000000000000E+01 3.8500000000000001E+00
- 502 0 0 0
- 6.7999999999999998E+00 -1.2000000000000000E+01 1.9527999999999999E+01
- 503 0 0 0
- 1.0199999999999999E+01 1.2877000000000001E+01 3.2160000000000002E+00
- 504 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 7.1550000000000002E+00
- 505 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 7.1550000000000002E+00
- 506 0 0 0
- 6.7999999999999998E+00 -2.3999999999999999E+00 1.9800000000000001E+01
- 507 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 1.7000000000000000E+00
- 508 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 1.2359999999999999E+01
- 509 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 1.2359999999999999E+01
- 510 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 9.3599999999999994E+00
- 511 0 0 0
- 6.7999999999999998E+00 1.2000000000000000E+01 1.9527999999999999E+01
- 512 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 9.3599999999999994E+00
- 513 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 1.5359999999999999E+01
- 514 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 4.9500000000000002E+00
- 515 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 1.2359999999999999E+01
- 516 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 3.3500000000000001E+00
- 517 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 4.9500000000000002E+00
- 518 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 1.5359999999999999E+01
- 519 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 7.1550000000000002E+00
- 520 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 1.2359999999999999E+01
- 521 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 7.1550000000000002E+00
- 522 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 1.5359999999999999E+01
- 523 0 0 0
- 6.7999999999999998E+00 2.3999999999999999E+00 1.7609999999999999E+01
- 524 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 9.3599999999999994E+00
- 525 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 9.3599999999999994E+00
- 526 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 1.5359999999999999E+01
- 527 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 1.7609999999999999E+01
- 528 0 0 0
- 1.0199999999999999E+01 -5.5999999999999996E+00 2.0000000000000000E+00
- 529 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 1.2359999999999999E+01
- 530 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 4.9500000000000002E+00
- 531 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 1.8969999999999999E+01
- 532 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 1.2359999999999999E+01
- 533 0 0 0
- 1.0199999999999999E+01 -1.6129999999999999E+01 2.0800000000000001E+01
- 534 0 0 0
- 1.0199999999999999E+01 5.5999999999999996E+00 2.0000000000000000E+00
- 536 0 0 0
- 6.7999999999999998E+00 -1.0400000000000000E+01 1.9611999999999998E+01
- 538 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 1.5359999999999999E+01
- 539 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 1.5359999999999999E+01
- 540 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 1.8969999999999999E+01
- 541 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 2.0916000000000000E+01
- 542 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 1.7609999999999999E+01
- 543 0 0 0
- 6.7999999999999998E+00 -4.0000000000000000E+00 1.9949999999999999E+01
- 544 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 1.8969999999999999E+01
- 545 0 0 0
- 6.7999999999999998E+00 -8.0000000000000000E+00 1.9739000000000001E+01
- 546 0 0 0
- 6.7999999999999998E+00 -5.5999999999999996E+00 1.9866000000000000E+01
- 547 0 0 0
- 1.0199999999999999E+01 -1.2000000000000000E+01 2.1027999999999999E+01
- 548 0 0 0
- 1.0199999999999999E+01 1.6129999999999999E+01 2.0800000000000001E+01
- 549 0 0 0
- 6.7999999999999998E+00 4.0000000000000000E+00 1.9949999999999999E+01
- 550 0 0 0
- 1.0199999999999999E+01 -1.0400000000000000E+01 2.1111999999999998E+01
- 551 0 0 0
- 6.7999999999999998E+00 1.0400000000000000E+01 1.9611999999999998E+01
- 552 0 0 0
- 6.7999999999999998E+00 8.0000000000000000E+00 1.9739000000000001E+01
- 553 0 0 0
- 6.7999999999999998E+00 5.5999999999999996E+00 1.9866000000000000E+01
- 554 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 1.8969999999999999E+01
- 555 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 2.0916000000000000E+01
- 556 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 2.1449999999999999E+01
- 557 0 0 0
- 1.0199999999999999E+01 -8.0000000000000000E+00 2.1239000000000001E+01
- 558 0 0 0
- 1.0199999999999999E+01 -2.3999999999999999E+00 2.1449999999999999E+01
- 559 0 0 0
- 1.0199999999999999E+01 -4.0000000000000000E+00 2.1449999999999999E+01
- 560 0 0 0
- 1.0199999999999999E+01 -5.5999999999999996E+00 2.1366000000000000E+01
- 561 0 0 0
- 1.0199999999999999E+01 2.3999999999999999E+00 2.1449999999999999E+01
- 562 0 0 0
- 1.0199999999999999E+01 1.2000000000000000E+01 2.1027999999999999E+01
- 563 0 0 0
- 1.0199999999999999E+01 4.0000000000000000E+00 2.1449999999999999E+01
- 564 0 0 0
- 1.0199999999999999E+01 1.0400000000000000E+01 2.1111999999999998E+01
- 565 0 0 0
- 1.0199999999999999E+01 5.5999999999999996E+00 2.1366000000000000E+01
- 566 0 0 0
- 1.0199999999999999E+01 8.0000000000000000E+00 2.1239000000000001E+01
- 569 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 1.7609999999999999E+01
- 570 0 0 0
- 1.0199999999999999E+01 -1.4130000000000001E+01 1.7609999999999999E+01
- 583 0 0 0
- 1.0199999999999999E+01 1.4130000000000001E+01 1.7609999999999999E+01
- 591 0 0 0
- 1.0199999999999999E+01 0.0000000000000000E+00 1.8969999999999999E+01
- 592 0 0 0
- 1.0199999999999999E+01 -3.2556229999999999E-02 9.5263449999999992E+00
- -1
- -1
- 2412
- 1 44 2 1 7 4
- 1 167 164 2
- 2 44 2 1 7 4
- 167 346 344 164
- 3 44 2 1 7 4
- 346 455 453 344
- 9 44 2 1 7 4
- 2 164 163 3
- 10 44 2 1 7 4
- 164 344 345 163
- 11 44 2 1 7 4
- 344 453 454 345
- 17 44 2 1 7 4
- 3 163 169 4
- 18 44 2 1 7 4
- 163 345 353 169
- 19 44 2 1 7 4
- 345 454 463 353
- 25 44 2 1 7 4
- 4 169 170 5
- 26 44 2 1 7 4
- 169 353 355 170
- 27 44 2 1 7 4
- 353 463 466 355
- 33 44 2 1 7 4
- 5 170 171 6
- 34 44 2 1 7 4
- 170 355 356 171
- 35 44 2 1 7 4
- 355 466 469 356
- 41 44 2 1 7 4
- 6 171 186 7
- 42 44 2 1 7 4
- 171 356 361 186
- 43 44 2 1 7 4
- 356 469 473 361
- 49 44 2 1 7 4
- 7 186 188 8
- 50 44 2 1 7 4
- 186 361 366 188
- 51 44 2 1 7 4
- 361 473 479 366
- 57 44 2 1 7 4
- 8 188 191 9
- 58 44 2 1 7 4
- 188 366 368 191
- 59 44 2 1 7 4
- 366 479 487 368
- 65 44 2 1 7 4
- 9 191 194 10
- 66 44 2 1 7 4
- 191 368 370 194
- 67 44 2 1 7 4
- 368 487 490 370
- 73 44 2 1 7 4
- 10 194 195 11
- 74 44 2 1 7 4
- 194 370 378 195
- 75 44 2 1 7 4
- 370 490 497 378
- 81 44 2 1 7 4
- 11 195 206 12
- 82 44 2 1 7 4
- 195 378 380 206
- 83 44 2 1 7 4
- 378 497 499 380
- 89 44 2 1 7 4
- 12 206 209 13
- 90 44 2 1 7 4
- 206 380 384 209
- 91 44 2 1 7 4
- 380 499 505 384
- 97 44 2 1 7 4
- 13 209 217 14
- 98 44 2 1 7 4
- 209 384 395 217
- 99 44 2 1 7 4
- 384 505 510 395
- 105 44 2 1 7 4
- 14 217 218 15
- 106 44 2 1 7 4
- 217 395 398 218
- 107 44 2 1 7 4
- 395 510 515 398
- 113 44 2 1 7 4
- 15 218 225 16
- 114 44 2 1 7 4
- 218 398 405 225
- 115 44 2 1 7 4
- 398 515 522 405
- 121 44 2 1 7 4
- 16 225 226 17
- 122 44 2 1 7 4
- 225 405 408 226
- 123 44 2 1 7 4
- 405 522 527 408
- 129 44 2 1 7 4
- 17 226 227 18
- 130 44 2 1 7 4
- 226 408 410 227
- 131 44 2 1 7 4
- 408 527 531 410
- 137 44 2 1 7 4
- 18 227 228 19
- 138 44 2 1 7 4
- 227 410 411 228
- 139 44 2 1 7 4
- 410 531 533 411
- 145 44 2 1 7 4
- 20 245 244 21
- 146 44 2 1 7 4
- 245 426 425 244
- 147 44 2 1 7 4
- 426 558 559 425
- 153 44 2 1 7 4
- 21 244 243 22
- 154 44 2 1 7 4
- 244 425 424 243
- 155 44 2 1 7 4
- 425 559 560 424
- 161 44 2 1 7 4
- 22 243 242 23
- 162 44 2 1 7 4
- 243 424 423 242
- 163 44 2 1 7 4
- 424 560 557 423
- 169 44 2 1 7 4
- 23 242 241 24
- 170 44 2 1 7 4
- 242 423 422 241
- 171 44 2 1 7 4
- 423 557 550 422
- 177 44 2 1 7 4
- 24 241 240 25
- 178 44 2 1 7 4
- 241 422 421 240
- 179 44 2 1 7 4
- 422 550 547 421
- 185 44 2 1 7 4
- 25 240 238 26
- 186 44 2 1 7 4
- 240 421 417 238
- 187 44 2 1 7 4
- 421 547 541 417
- 193 44 2 1 7 4
- 26 238 228 19
- 194 44 2 1 7 4
- 238 417 411 228
- 195 44 2 1 7 4
- 417 541 533 411
- 201 44 2 1 7 4
- 27 174 173 29
- 202 44 2 1 7 4
- 174 349 350 173
- 203 44 2 1 7 4
- 349 460 459 350
- 209 44 2 1 7 4
- 29 173 172 30
- 210 44 2 1 7 4
- 173 350 354 172
- 211 44 2 1 7 4
- 350 459 465 354
- 217 44 2 1 7 4
- 30 172 277 31
- 218 44 2 1 7 4
- 172 354 437 277
- 219 44 2 1 7 4
- 354 465 528 437
- 225 44 2 1 7 4
- 31 277 183 32
- 226 44 2 1 7 4
- 277 437 362 183
- 227 44 2 1 7 4
- 437 528 475 362
- 233 44 2 1 7 4
- 32 183 184 33
- 234 44 2 1 7 4
- 183 362 363 184
- 235 44 2 1 7 4
- 362 475 476 363
- 241 44 2 1 7 4
- 33 184 187 34
- 242 44 2 1 7 4
- 184 363 365 187
- 243 44 2 1 7 4
- 363 476 478 365
- 249 44 2 1 7 4
- 34 187 190 35
- 250 44 2 1 7 4
- 187 365 367 190
- 251 44 2 1 7 4
- 365 478 485 367
- 257 44 2 1 7 4
- 36 216 215 37
- 258 44 2 1 7 4
- 216 376 393 215
- 259 44 2 1 7 4
- 376 495 504 393
- 265 44 2 1 7 4
- 37 215 224 38
- 266 44 2 1 7 4
- 215 393 399 224
- 267 44 2 1 7 4
- 393 504 512 399
- 273 44 2 1 7 4
- 38 224 223 39
- 274 44 2 1 7 4
- 224 399 404 223
- 275 44 2 1 7 4
- 399 512 520 404
- 281 44 2 1 7 4
- 39 223 233 40
- 282 44 2 1 7 4
- 223 404 409 233
- 283 44 2 1 7 4
- 404 520 526 409
- 289 44 2 1 7 4
- 40 233 266 41
- 290 44 2 1 7 4
- 233 409 446 266
- 291 44 2 1 7 4
- 409 526 570 446
- 297 44 2 1 7 4
- 41 266 239 42
- 298 44 2 1 7 4
- 266 446 418 239
- 299 44 2 1 7 4
- 446 570 540 418
- 305 44 2 1 7 4
- 42 239 238 26
- 306 44 2 1 7 4
- 239 418 417 238
- 307 44 2 1 7 4
- 418 540 541 417
- 313 44 2 1 7 4
- 2 164 173 29
- 314 44 2 1 7 4
- 164 344 350 173
- 315 44 2 1 7 4
- 344 453 459 350
- 321 44 2 1 7 4
- 4 169 277 31
- 322 44 2 1 7 4
- 169 353 437 277
- 323 44 2 1 7 4
- 353 463 528 437
- 329 44 2 1 7 4
- 7 186 187 34
- 330 44 2 1 7 4
- 186 361 365 187
- 331 44 2 1 7 4
- 361 473 478 365
- 337 44 2 1 7 4
- 36 216 206 12
- 338 44 2 1 7 4
- 216 376 380 206
- 339 44 2 1 7 4
- 376 495 499 380
- 345 44 2 1 7 4
- 38 224 217 14
- 346 44 2 1 7 4
- 224 399 395 217
- 347 44 2 1 7 4
- 399 512 510 395
- 353 44 2 1 7 4
- 40 233 225 16
- 354 44 2 1 7 4
- 233 409 405 225
- 355 44 2 1 7 4
- 409 526 522 405
- 361 44 2 1 7 4
- 35 190 216 36
- 362 44 2 1 7 4
- 190 367 376 216
- 363 44 2 1 7 4
- 367 485 495 376
- 369 44 2 1 7 4
- 1 167 166 53
- 370 44 2 1 7 4
- 167 346 347 166
- 371 44 2 1 7 4
- 346 455 456 347
- 377 44 2 1 7 4
- 53 166 165 54
- 378 44 2 1 7 4
- 166 347 348 165
- 379 44 2 1 7 4
- 347 456 457 348
- 385 44 2 1 7 4
- 54 165 177 55
- 386 44 2 1 7 4
- 165 348 357 177
- 387 44 2 1 7 4
- 348 457 467 357
- 393 44 2 1 7 4
- 55 177 178 56
- 394 44 2 1 7 4
- 177 357 359 178
- 395 44 2 1 7 4
- 357 467 471 359
- 401 44 2 1 7 4
- 56 178 179 57
- 402 44 2 1 7 4
- 178 359 360 179
- 403 44 2 1 7 4
- 359 471 472 360
- 409 44 2 1 7 4
- 57 179 200 58
- 410 44 2 1 7 4
- 179 360 369 200
- 411 44 2 1 7 4
- 360 472 484 369
- 417 44 2 1 7 4
- 58 200 205 59
- 418 44 2 1 7 4
- 200 369 377 205
- 419 44 2 1 7 4
- 369 484 491 377
- 425 44 2 1 7 4
- 59 205 208 60
- 426 44 2 1 7 4
- 205 377 382 208
- 427 44 2 1 7 4
- 377 491 498 382
- 433 44 2 1 7 4
- 60 208 213 61
- 434 44 2 1 7 4
- 208 382 392 213
- 435 44 2 1 7 4
- 382 498 507 392
- 441 44 2 1 7 4
- 61 213 214 62
- 442 44 2 1 7 4
- 213 392 396 214
- 443 44 2 1 7 4
- 392 507 516 396
- 449 44 2 1 7 4
- 62 214 219 63
- 450 44 2 1 7 4
- 214 396 400 219
- 451 44 2 1 7 4
- 396 516 517 400
- 457 44 2 1 7 4
- 63 219 220 64
- 458 44 2 1 7 4
- 219 400 402 220
- 459 44 2 1 7 4
- 400 517 521 402
- 465 44 2 1 7 4
- 64 220 229 65
- 466 44 2 1 7 4
- 220 402 406 229
- 467 44 2 1 7 4
- 402 521 524 406
- 473 44 2 1 7 4
- 65 229 230 66
- 474 44 2 1 7 4
- 229 406 412 230
- 475 44 2 1 7 4
- 406 524 529 412
- 481 44 2 1 7 4
- 66 230 234 67
- 482 44 2 1 7 4
- 230 412 414 234
- 483 44 2 1 7 4
- 412 529 538 414
- 489 44 2 1 7 4
- 67 234 235 68
- 490 44 2 1 7 4
- 234 414 415 235
- 491 44 2 1 7 4
- 414 538 542 415
- 497 44 2 1 7 4
- 68 235 236 69
- 498 44 2 1 7 4
- 235 415 416 236
- 499 44 2 1 7 4
- 415 542 544 416
- 505 44 2 1 7 4
- 69 236 237 70
- 506 44 2 1 7 4
- 236 416 419 237
- 507 44 2 1 7 4
- 416 544 548 419
- 513 44 2 1 7 4
- 71 246 247 72
- 514 44 2 1 7 4
- 246 427 428 247
- 515 44 2 1 7 4
- 427 556 561 428
- 521 44 2 1 7 4
- 72 247 250 73
- 522 44 2 1 7 4
- 247 428 431 250
- 523 44 2 1 7 4
- 428 561 563 431
- 529 44 2 1 7 4
- 73 250 251 74
- 530 44 2 1 7 4
- 250 431 434 251
- 531 44 2 1 7 4
- 431 563 565 434
- 537 44 2 1 7 4
- 74 251 252 75
- 538 44 2 1 7 4
- 251 434 435 252
- 539 44 2 1 7 4
- 434 565 566 435
- 545 44 2 1 7 4
- 75 252 253 76
- 546 44 2 1 7 4
- 252 435 433 253
- 547 44 2 1 7 4
- 435 566 564 433
- 553 44 2 1 7 4
- 76 253 254 77
- 554 44 2 1 7 4
- 253 433 432 254
- 555 44 2 1 7 4
- 433 564 562 432
- 561 44 2 1 7 4
- 77 254 255 78
- 562 44 2 1 7 4
- 254 432 429 255
- 563 44 2 1 7 4
- 432 562 555 429
- 569 44 2 1 7 4
- 78 255 237 70
- 570 44 2 1 7 4
- 255 429 419 237
- 571 44 2 1 7 4
- 429 555 548 419
- 577 44 2 1 7 4
- 27 174 175 79
- 578 44 2 1 7 4
- 174 349 352 175
- 579 44 2 1 7 4
- 349 460 461 352
- 585 44 2 1 7 4
- 79 175 176 80
- 586 44 2 1 7 4
- 175 352 358 176
- 587 44 2 1 7 4
- 352 461 470 358
- 593 44 2 1 7 4
- 80 176 289 81
- 594 44 2 1 7 4
- 176 358 439 289
- 595 44 2 1 7 4
- 358 470 534 439
- 601 44 2 1 7 4
- 81 289 196 82
- 602 44 2 1 7 4
- 289 439 371 196
- 603 44 2 1 7 4
- 439 534 486 371
- 609 44 2 1 7 4
- 82 196 201 83
- 610 44 2 1 7 4
- 196 371 373 201
- 611 44 2 1 7 4
- 371 486 488 373
- 617 44 2 1 7 4
- 83 201 207 84
- 618 44 2 1 7 4
- 201 373 379 207
- 619 44 2 1 7 4
- 373 488 493 379
- 625 44 2 1 7 4
- 84 207 212 85
- 626 44 2 1 7 4
- 207 379 388 212
- 627 44 2 1 7 4
- 379 493 503 388
- 633 44 2 1 7 4
- 86 222 221 87
- 634 44 2 1 7 4
- 222 397 403 221
- 635 44 2 1 7 4
- 397 514 519 403
- 641 44 2 1 7 4
- 87 221 232 88
- 642 44 2 1 7 4
- 221 403 407 232
- 643 44 2 1 7 4
- 403 519 525 407
- 649 44 2 1 7 4
- 88 232 231 89
- 650 44 2 1 7 4
- 232 407 413 231
- 651 44 2 1 7 4
- 407 525 532 413
- 657 44 2 1 7 4
- 89 231 259 90
- 658 44 2 1 7 4
- 231 413 420 259
- 659 44 2 1 7 4
- 413 532 539 420
- 665 44 2 1 7 4
- 90 259 267 91
- 666 44 2 1 7 4
- 259 420 447 267
- 667 44 2 1 7 4
- 420 539 583 447
- 673 44 2 1 7 4
- 91 267 256 92
- 674 44 2 1 7 4
- 267 447 430 256
- 675 44 2 1 7 4
- 447 583 554 430
- 681 44 2 1 7 4
- 92 256 255 78
- 682 44 2 1 7 4
- 256 430 429 255
- 683 44 2 1 7 4
- 430 554 555 429
- 689 44 2 1 7 4
- 53 166 175 79
- 690 44 2 1 7 4
- 166 347 352 175
- 691 44 2 1 7 4
- 347 456 461 352
- 697 44 2 1 7 4
- 55 177 289 81
- 698 44 2 1 7 4
- 177 357 439 289
- 699 44 2 1 7 4
- 357 467 534 439
- 705 44 2 1 7 4
- 58 200 207 84
- 706 44 2 1 7 4
- 200 369 379 207
- 707 44 2 1 7 4
- 369 484 493 379
- 713 44 2 1 7 4
- 86 222 219 63
- 714 44 2 1 7 4
- 222 397 400 219
- 715 44 2 1 7 4
- 397 514 517 400
- 721 44 2 1 7 4
- 88 232 229 65
- 722 44 2 1 7 4
- 232 407 406 229
- 723 44 2 1 7 4
- 407 525 524 406
- 729 44 2 1 7 4
- 90 259 234 67
- 730 44 2 1 7 4
- 259 420 414 234
- 731 44 2 1 7 4
- 420 539 538 414
- 737 44 2 1 7 4
- 85 212 222 86
- 738 44 2 1 7 4
- 212 388 397 222
- 739 44 2 1 7 4
- 388 503 514 397
- 745 44 2 1 7 4
- 1 167 174 27
- 746 44 2 1 7 4
- 167 346 349 174
- 747 44 2 1 7 4
- 346 455 460 349
- 753 44 2 1 7 4
- 27 174 168 48
- 754 44 2 1 7 4
- 174 349 351 168
- 755 44 2 1 7 4
- 349 460 462 351
- 761 44 2 1 7 4
- 48 168 278 49
- 762 44 2 1 7 4
- 168 351 436 278
- 763 44 2 1 7 4
- 351 462 530 436
- 769 44 2 1 7 4
- 49 278 182 101
- 770 44 2 1 7 4
- 278 436 364 182
- 771 44 2 1 7 4
- 436 530 480 364
- 777 44 2 1 7 4
- 101 182 261 102
- 778 44 2 1 7 4
- 182 364 374 261
- 779 44 2 1 7 4
- 364 480 492 374
- 785 44 2 1 7 4
- 102 261 210 103
- 786 44 2 1 7 4
- 261 374 394 210
- 787 44 2 1 7 4
- 374 492 508 394
- 793 44 2 1 7 4
- 103 210 263 104
- 794 44 2 1 7 4
- 210 394 401 263
- 795 44 2 1 7 4
- 394 508 518 401
- 801 44 2 1 7 4
- 104 263 265 52
- 802 44 2 1 7 4
- 263 401 445 265
- 803 44 2 1 7 4
- 401 518 569 445
- 809 44 2 1 7 4
- 52 265 339 28
- 810 44 2 1 7 4
- 265 445 448 339
- 811 44 2 1 7 4
- 445 569 591 448
- 817 44 2 1 7 4
- 71 246 339 28
- 818 44 2 1 7 4
- 246 427 448 339
- 819 44 2 1 7 4
- 427 556 591 448
- 825 44 2 1 7 4
- 71 246 245 20
- 826 44 2 1 7 4
- 246 427 426 245
- 827 44 2 1 7 4
- 427 556 558 426
- 838 11 2 1 7 2
- 0 0 0
- 450 436
- 839 11 2 1 7 2
- 0 0 0
- 305 278
- 845 11 2 1 7 2
- 0 0 0
- 449 450
- 846 11 2 1 7 2
- 0 0 0
- 304 305
- 852 11 2 1 7 2
- 0 0 0
- 437 449
- 853 11 2 1 7 2
- 0 0 0
- 277 304
- 859 11 2 1 7 2
- 0 0 0
- 350 349
- 860 11 2 1 7 2
- 0 0 0
- 173 174
- 861 11 2 1 7 2
- 0 0 0
- 29 27
- 867 11 2 1 7 2
- 0 0 0
- 346 344
- 868 11 2 1 7 2
- 0 0 0
- 167 164
- 869 11 2 1 7 2
- 0 0 0
- 1 2
- 875 11 2 1 7 2
- 0 0 0
- 477 452
- 876 11 2 1 7 2
- 0 0 0
- 316 302
- 882 11 2 1 7 2
- 0 0 0
- 483 477
- 883 11 2 1 7 2
- 0 0 0
- 326 316
- 889 11 2 1 7 2
- 0 0 0
- 482 483
- 890 11 2 1 7 2
- 0 0 0
- 325 326
- 896 11 2 1 7 2
- 0 0 0
- 481 482
- 897 11 2 1 7 2
- 0 0 0
- 315 325
- 903 11 2 1 7 2
- 0 0 0
- 452 481
- 904 11 2 1 7 2
- 0 0 0
- 302 315
- 910 11 2 1 7 2
- 0 0 0
- 446 502
- 911 11 2 1 7 2
- 0 0 0
- 266 297
- 917 11 2 1 7 2
- 0 0 0
- 502 536
- 918 11 2 1 7 2
- 0 0 0
- 297 318
- 924 11 2 1 7 2
- 0 0 0
- 536 545
- 925 11 2 1 7 2
- 0 0 0
- 318 327
- 931 11 2 1 7 2
- 0 0 0
- 545 546
- 932 11 2 1 7 2
- 0 0 0
- 327 328
- 938 11 2 1 7 2
- 0 0 0
- 546 543
- 939 11 2 1 7 2
- 0 0 0
- 328 317
- 945 11 2 1 7 2
- 0 0 0
- 543 506
- 946 11 2 1 7 2
- 0 0 0
- 317 294
- 952 11 2 1 7 2
- 0 0 0
- 506 445
- 953 11 2 1 7 2
- 0 0 0
- 294 265
- 954 11 2 1 7 2
- 0 0 0
- 216 268
- 955 11 2 1 7 2
- 0 0 0
- 268 292
- 956 11 2 1 7 2
- 0 0 0
- 292 311
- 957 11 2 1 7 2
- 0 0 0
- 311 313
- 958 11 2 1 7 2
- 0 0 0
- 313 314
- 959 11 2 1 7 2
- 0 0 0
- 314 306
- 960 11 2 1 7 2
- 0 0 0
- 306 269
- 961 11 2 1 7 2
- 0 0 0
- 224 295
- 962 11 2 1 7 2
- 0 0 0
- 295 383
- 963 11 2 1 7 2
- 0 0 0
- 383 443
- 964 11 2 1 7 2
- 0 0 0
- 443 444
- 965 11 2 1 7 2
- 0 0 0
- 444 372
- 966 11 2 1 7 2
- 0 0 0
- 372 290
- 967 11 2 1 7 2
- 0 0 0
- 233 293
- 968 11 2 1 7 2
- 0 0 0
- 293 381
- 969 11 2 1 7 2
- 0 0 0
- 381 441
- 970 11 2 1 7 2
- 0 0 0
- 441 442
- 971 11 2 1 7 2
- 0 0 0
- 442 375
- 972 11 2 1 7 2
- 0 0 0
- 375 291
- 978 11 2 1 7 2
- 0 0 0
- 451 458
- 979 11 2 1 7 2
- 0 0 0
- 312 319
- 985 11 2 1 7 2
- 0 0 0
- 439 451
- 986 11 2 1 7 2
- 0 0 0
- 289 312
- 992 11 2 1 7 2
- 0 0 0
- 352 349
- 993 11 2 1 7 2
- 0 0 0
- 175 174
- 994 11 2 1 7 2
- 0 0 0
- 79 27
- 1000 11 2 1 7 2
- 0 0 0
- 346 347
- 1001 11 2 1 7 2
- 0 0 0
- 167 166
- 1002 11 2 1 7 2
- 0 0 0
- 1 53
- 1008 11 2 1 7 2
- 0 0 0
- 496 468
- 1009 11 2 1 7 2
- 0 0 0
- 323 307
- 1015 11 2 1 7 2
- 0 0 0
- 501 496
- 1016 11 2 1 7 2
- 0 0 0
- 332 323
- 1022 11 2 1 7 2
- 0 0 0
- 500 501
- 1023 11 2 1 7 2
- 0 0 0
- 331 332
- 1029 11 2 1 7 2
- 0 0 0
- 494 500
- 1030 11 2 1 7 2
- 0 0 0
- 322 331
- 1036 11 2 1 7 2
- 0 0 0
- 468 494
- 1037 11 2 1 7 2
- 0 0 0
- 307 322
- 1043 11 2 1 7 2
- 0 0 0
- 447 511
- 1044 11 2 1 7 2
- 0 0 0
- 267 303
- 1050 11 2 1 7 2
- 0 0 0
- 511 551
- 1051 11 2 1 7 2
- 0 0 0
- 303 324
- 1057 11 2 1 7 2
- 0 0 0
- 551 552
- 1058 11 2 1 7 2
- 0 0 0
- 324 329
- 1064 11 2 1 7 2
- 0 0 0
- 552 553
- 1065 11 2 1 7 2
- 0 0 0
- 329 330
- 1071 11 2 1 7 2
- 0 0 0
- 553 549
- 1072 11 2 1 7 2
- 0 0 0
- 330 321
- 1073 11 2 1 7 2
- 0 0 0
- 222 270
- 1074 11 2 1 7 2
- 0 0 0
- 270 300
- 1075 11 2 1 7 2
- 0 0 0
- 300 309
- 1076 11 2 1 7 2
- 0 0 0
- 309 310
- 1077 11 2 1 7 2
- 0 0 0
- 310 308
- 1078 11 2 1 7 2
- 0 0 0
- 308 271
- 1079 11 2 1 7 2
- 0 0 0
- 271 260
- 1080 11 2 1 7 2
- 0 0 0
- 232 301
- 1081 11 2 1 7 2
- 0 0 0
- 301 386
- 1082 11 2 1 7 2
- 0 0 0
- 386 387
- 1083 11 2 1 7 2
- 0 0 0
- 387 385
- 1084 11 2 1 7 2
- 0 0 0
- 385 296
- 1085 11 2 1 7 2
- 0 0 0
- 296 262
- 1086 11 2 1 7 2
- 0 0 0
- 259 299
- 1087 11 2 1 7 2
- 0 0 0
- 299 390
- 1088 11 2 1 7 2
- 0 0 0
- 390 391
- 1089 11 2 1 7 2
- 0 0 0
- 391 389
- 1090 11 2 1 7 2
- 0 0 0
- 389 298
- 1091 11 2 1 7 2
- 0 0 0
- 298 264
- 1097 11 2 1 7 2
- 0 0 0
- 346 349
- 1098 11 2 1 7 2
- 0 0 0
- 167 174
- 1099 11 2 1 7 2
- 0 0 0
- 1 27
- 1100 11 2 1 7 2
- 0 0 0
- 291 263
- 1101 11 2 1 7 2
- 0 0 0
- 290 261
- 1102 11 2 1 7 2
- 0 0 0
- 269 278
- 1103 11 2 1 7 2
- 0 0 0
- 263 264
- 1104 11 2 1 7 2
- 0 0 0
- 261 262
- 1105 11 2 1 7 2
- 0 0 0
- 278 260
- 1106 11 2 1 7 2
- 0 0 0
- 319 340
- 1107 11 2 1 7 2
- 0 0 0
- 340 342
- 1108 11 2 1 7 2
- 0 0 0
- 342 343
- 1109 11 2 1 7 2
- 0 0 0
- 343 341
- 1110 11 2 1 7 2
- 0 0 0
- 341 320
- 1111 11 2 1 7 2
- 0 0 0
- 320 321
- 1112 11 2 1 7 2
- 0 0 0
- 458 474
- 1118 11 2 1 7 2
- 0 0 0
- 474 489
- 1124 11 2 1 7 2
- 0 0 0
- 489 509
- 1130 11 2 1 7 2
- 0 0 0
- 509 513
- 1136 11 2 1 7 2
- 0 0 0
- 513 523
- 1142 11 2 1 7 2
- 0 0 0
- 523 549
- 1153 11 2 1 7 2
- 0 0 0
- 448 591
- 1154 11 2 1 7 2
- 0 0 0
- 339 448
- 1155 11 2 1 7 2
- 0 0 0
- 28 339
- 1156 11 2 1 7 2
- 0 0 0
- 28 118
- 1157 11 2 1 7 2
- 0 0 0
- 118 152
- 1158 11 2 1 7 2
- 0 0 0
- 152 153
- 1159 11 2 1 7 2
- 0 0 0
- 153 154
- 1160 11 2 1 7 2
- 0 0 0
- 154 155
- 1161 11 2 1 7 2
- 0 0 0
- 28 157
- 1162 11 2 1 7 2
- 0 0 0
- 157 158
- 1163 11 2 1 7 2
- 0 0 0
- 158 159
- 1164 11 2 1 7 2
- 0 0 0
- 159 160
- 1165 11 2 1 7 2
- 0 0 0
- 155 156
- 1166 11 2 1 7 2
- 0 0 0
- 156 92
- 1167 11 2 1 7 2
- 0 0 0
- 160 161
- 1168 11 2 1 7 2
- 0 0 0
- 161 162
- 1169 11 2 1 7 2
- 0 0 0
- 162 42
- 1175 44 2 1 7 4
- 438 351 349 350
- 1176 44 2 1 7 4
- 180 168 174 173
- 1177 44 2 1 7 4
- 50 48 27 29
- 1183 44 2 1 7 4
- 450 436 351 438
- 1184 44 2 1 7 4
- 305 278 168 180
- 1190 44 2 1 7 4
- 449 438 350 354
- 1191 44 2 1 7 4
- 304 180 173 172
- 1197 44 2 1 7 4
- 354 350 344 345
- 1198 44 2 1 7 4
- 172 173 164 163
- 1199 44 2 1 7 4
- 30 29 2 3
- 1205 44 2 1 7 4
- 437 354 345 353
- 1206 44 2 1 7 4
- 277 172 163 169
- 1207 44 2 1 7 4
- 31 30 3 4
- 1213 44 2 1 7 4
- 362 437 353 355
- 1214 44 2 1 7 4
- 183 277 169 170
- 1215 44 2 1 7 4
- 32 31 4 5
- 1221 44 2 1 7 4
- 363 362 355 356
- 1222 44 2 1 7 4
- 184 183 170 171
- 1223 44 2 1 7 4
- 33 32 5 6
- 1229 44 2 1 7 4
- 365 363 356 361
- 1230 44 2 1 7 4
- 187 184 171 186
- 1236 44 2 1 7 4
- 452 365 361 366
- 1237 44 2 1 7 4
- 302 187 186 188
- 1238 44 2 1 7 4
- 43 34 7 8
- 1244 44 2 1 7 4
- 481 452 366 368
- 1245 44 2 1 7 4
- 315 302 188 191
- 1246 44 2 1 7 4
- 47 43 8 9
- 1252 44 2 1 7 4
- 477 367 365 452
- 1253 44 2 1 7 4
- 316 190 187 302
- 1254 44 2 1 7 4
- 46 35 34 43
- 1260 44 2 1 7 4
- 483 376 367 477
- 1261 44 2 1 7 4
- 326 216 190 316
- 1262 44 2 1 7 4
- 45 36 35 46
- 1268 44 2 1 7 4
- 378 482 481 370
- 1269 44 2 1 7 4
- 195 325 315 194
- 1270 44 2 1 7 4
- 11 44 47 10
- 1276 44 2 1 7 4
- 380 376 483 482
- 1277 44 2 1 7 4
- 206 216 326 325
- 1278 44 2 1 7 4
- 12 36 45 44
- 1284 44 2 1 7 4
- 384 393 376 380
- 1285 44 2 1 7 4
- 209 215 216 206
- 1286 44 2 1 7 4
- 13 37 36 12
- 1292 44 2 1 7 4
- 395 399 393 384
- 1293 44 2 1 7 4
- 217 224 215 209
- 1294 44 2 1 7 4
- 14 38 37 13
- 1300 44 2 1 7 4
- 398 404 399 395
- 1301 44 2 1 7 4
- 218 223 224 217
- 1302 44 2 1 7 4
- 15 39 38 14
- 1308 44 2 1 7 4
- 405 409 404 398
- 1309 44 2 1 7 4
- 225 233 223 218
- 1310 44 2 1 7 4
- 16 40 39 15
- 1316 44 2 1 7 4
- 408 446 409 405
- 1317 44 2 1 7 4
- 226 266 233 225
- 1318 44 2 1 7 4
- 17 41 40 16
- 1324 44 2 1 7 4
- 410 418 446 408
- 1325 44 2 1 7 4
- 227 239 266 226
- 1326 44 2 1 7 4
- 18 42 41 17
- 1332 44 2 1 7 4
- 411 417 418 410
- 1333 44 2 1 7 4
- 228 238 239 227
- 1334 44 2 1 7 4
- 19 26 42 18
- 1340 44 2 1 7 4
- 417 421 502 418
- 1341 44 2 1 7 4
- 238 240 297 239
- 1342 44 2 1 7 4
- 26 25 162 42
- 1348 44 2 1 7 4
- 421 422 536 502
- 1349 44 2 1 7 4
- 240 241 318 297
- 1350 44 2 1 7 4
- 25 24 161 162
- 1356 44 2 1 7 4
- 422 423 545 536
- 1357 44 2 1 7 4
- 241 242 327 318
- 1358 44 2 1 7 4
- 24 23 160 161
- 1364 44 2 1 7 4
- 423 424 546 545
- 1365 44 2 1 7 4
- 242 243 328 327
- 1366 44 2 1 7 4
- 23 22 159 160
- 1372 44 2 1 7 4
- 424 425 543 546
- 1373 44 2 1 7 4
- 243 244 317 328
- 1374 44 2 1 7 4
- 22 21 158 159
- 1380 44 2 1 7 4
- 425 426 506 543
- 1381 44 2 1 7 4
- 244 245 294 317
- 1382 44 2 1 7 4
- 21 20 157 158
- 1383 44 2 1 7 4
- 44 45 46 47
- 1384 44 2 1 7 4
- 110 113 33 34
- 1385 44 2 1 7 4
- 113 112 32 33
- 1386 44 2 1 7 4
- 112 111 31 32
- 1387 44 2 1 7 4
- 111 51 30 31
- 1388 44 2 1 7 4
- 51 50 29 30
- 1389 44 2 1 7 4
- 119 123 110 35
- 1390 44 2 1 7 4
- 123 135 113 110
- 1391 44 2 1 7 4
- 135 150 112 113
- 1392 44 2 1 7 4
- 150 151 111 112
- 1393 44 2 1 7 4
- 151 133 51 111
- 1394 44 2 1 7 4
- 133 120 50 51
- 1395 44 2 1 7 4
- 120 49 48 50
- 1396 44 2 1 7 4
- 37 131 119 36
- 1397 44 2 1 7 4
- 131 211 135 123
- 1398 44 2 1 7 4
- 211 258 150 135
- 1399 44 2 1 7 4
- 258 257 151 150
- 1400 44 2 1 7 4
- 257 181 133 151
- 1401 44 2 1 7 4
- 181 124 120 133
- 1402 44 2 1 7 4
- 38 143 131 37
- 1403 44 2 1 7 4
- 143 279 211 131
- 1404 44 2 1 7 4
- 279 337 258 211
- 1405 44 2 1 7 4
- 337 338 257 258
- 1406 44 2 1 7 4
- 338 272 181 257
- 1407 44 2 1 7 4
- 272 136 124 181
- 1408 44 2 1 7 4
- 39 142 143 38
- 1409 44 2 1 7 4
- 142 276 279 143
- 1410 44 2 1 7 4
- 276 335 337 279
- 1411 44 2 1 7 4
- 335 336 338 337
- 1412 44 2 1 7 4
- 336 273 272 338
- 1413 44 2 1 7 4
- 273 137 136 272
- 1414 44 2 1 7 4
- 40 141 142 39
- 1415 44 2 1 7 4
- 141 275 276 142
- 1416 44 2 1 7 4
- 275 333 335 276
- 1417 44 2 1 7 4
- 333 334 336 335
- 1418 44 2 1 7 4
- 334 274 273 336
- 1419 44 2 1 7 4
- 274 138 137 273
- 1420 44 2 1 7 4
- 41 125 141 40
- 1421 44 2 1 7 4
- 125 189 275 141
- 1422 44 2 1 7 4
- 189 248 333 275
- 1423 44 2 1 7 4
- 248 249 334 333
- 1424 44 2 1 7 4
- 249 192 274 334
- 1425 44 2 1 7 4
- 192 126 138 274
- 1426 44 2 1 7 4
- 42 162 125 41
- 1427 44 2 1 7 4
- 162 161 189 125
- 1428 44 2 1 7 4
- 161 160 248 189
- 1429 44 2 1 7 4
- 160 159 249 248
- 1430 44 2 1 7 4
- 159 158 192 249
- 1431 44 2 1 7 4
- 158 157 126 192
- 1432 44 2 1 7 4
- 268 119 123 292
- 1433 44 2 1 7 4
- 292 123 135 311
- 1434 44 2 1 7 4
- 311 135 150 313
- 1435 44 2 1 7 4
- 313 150 151 314
- 1436 44 2 1 7 4
- 314 151 133 306
- 1437 44 2 1 7 4
- 306 133 120 269
- 1438 44 2 1 7 4
- 216 36 119 268
- 1439 44 2 1 7 4
- 224 38 143 295
- 1440 44 2 1 7 4
- 295 143 279 383
- 1441 44 2 1 7 4
- 383 279 337 443
- 1442 44 2 1 7 4
- 443 337 338 444
- 1443 44 2 1 7 4
- 444 338 272 372
- 1444 44 2 1 7 4
- 372 272 136 290
- 1445 44 2 1 7 4
- 233 40 141 293
- 1446 44 2 1 7 4
- 293 141 275 381
- 1447 44 2 1 7 4
- 381 275 333 441
- 1448 44 2 1 7 4
- 441 333 334 442
- 1449 44 2 1 7 4
- 442 334 274 375
- 1450 44 2 1 7 4
- 375 274 138 291
- 1456 44 2 1 7 4
- 440 351 349 352
- 1457 44 2 1 7 4
- 185 168 174 175
- 1458 44 2 1 7 4
- 98 48 27 79
- 1464 44 2 1 7 4
- 458 436 351 440
- 1465 44 2 1 7 4
- 319 278 168 185
- 1471 44 2 1 7 4
- 451 440 352 358
- 1472 44 2 1 7 4
- 312 185 175 176
- 1478 44 2 1 7 4
- 358 352 347 348
- 1479 44 2 1 7 4
- 176 175 166 165
- 1480 44 2 1 7 4
- 80 79 53 54
- 1486 44 2 1 7 4
- 439 358 348 357
- 1487 44 2 1 7 4
- 289 176 165 177
- 1488 44 2 1 7 4
- 81 80 54 55
- 1494 44 2 1 7 4
- 371 439 357 359
- 1495 44 2 1 7 4
- 196 289 177 178
- 1496 44 2 1 7 4
- 82 81 55 56
- 1502 44 2 1 7 4
- 373 371 359 360
- 1503 44 2 1 7 4
- 201 196 178 179
- 1504 44 2 1 7 4
- 83 82 56 57
- 1510 44 2 1 7 4
- 379 373 360 369
- 1511 44 2 1 7 4
- 207 201 179 200
- 1512 44 2 1 7 4
- 84 83 57 58
- 1518 44 2 1 7 4
- 468 379 369 377
- 1519 44 2 1 7 4
- 307 207 200 205
- 1520 44 2 1 7 4
- 93 84 58 59
- 1526 44 2 1 7 4
- 494 468 377 382
- 1527 44 2 1 7 4
- 322 307 205 208
- 1528 44 2 1 7 4
- 97 93 59 60
- 1534 44 2 1 7 4
- 496 388 379 468
- 1535 44 2 1 7 4
- 323 212 207 307
- 1536 44 2 1 7 4
- 96 85 84 93
- 1542 44 2 1 7 4
- 501 397 388 496
- 1543 44 2 1 7 4
- 332 222 212 323
- 1544 44 2 1 7 4
- 95 86 85 96
- 1550 44 2 1 7 4
- 396 500 494 392
- 1551 44 2 1 7 4
- 214 331 322 213
- 1552 44 2 1 7 4
- 62 94 97 61
- 1558 44 2 1 7 4
- 400 397 501 500
- 1559 44 2 1 7 4
- 219 222 332 331
- 1560 44 2 1 7 4
- 63 86 95 94
- 1566 44 2 1 7 4
- 402 403 397 400
- 1567 44 2 1 7 4
- 220 221 222 219
- 1568 44 2 1 7 4
- 64 87 86 63
- 1574 44 2 1 7 4
- 406 407 403 402
- 1575 44 2 1 7 4
- 229 232 221 220
- 1576 44 2 1 7 4
- 65 88 87 64
- 1582 44 2 1 7 4
- 412 413 407 406
- 1583 44 2 1 7 4
- 230 231 232 229
- 1584 44 2 1 7 4
- 66 89 88 65
- 1590 44 2 1 7 4
- 414 420 413 412
- 1591 44 2 1 7 4
- 234 259 231 230
- 1592 44 2 1 7 4
- 67 90 89 66
- 1598 44 2 1 7 4
- 415 447 420 414
- 1599 44 2 1 7 4
- 235 267 259 234
- 1600 44 2 1 7 4
- 68 91 90 67
- 1606 44 2 1 7 4
- 416 430 447 415
- 1607 44 2 1 7 4
- 236 256 267 235
- 1608 44 2 1 7 4
- 69 92 91 68
- 1614 44 2 1 7 4
- 419 429 430 416
- 1615 44 2 1 7 4
- 237 255 256 236
- 1616 44 2 1 7 4
- 70 78 92 69
- 1622 44 2 1 7 4
- 429 432 511 430
- 1623 44 2 1 7 4
- 255 254 303 256
- 1624 44 2 1 7 4
- 78 77 156 92
- 1630 44 2 1 7 4
- 432 433 551 511
- 1631 44 2 1 7 4
- 254 253 324 303
- 1632 44 2 1 7 4
- 77 76 155 156
- 1638 44 2 1 7 4
- 433 435 552 551
- 1639 44 2 1 7 4
- 253 252 329 324
- 1640 44 2 1 7 4
- 76 75 154 155
- 1646 44 2 1 7 4
- 435 434 553 552
- 1647 44 2 1 7 4
- 252 251 330 329
- 1648 44 2 1 7 4
- 75 74 153 154
- 1654 44 2 1 7 4
- 434 431 549 553
- 1655 44 2 1 7 4
- 251 250 321 330
- 1656 44 2 1 7 4
- 74 73 152 153
- 1662 44 2 1 7 4
- 431 428 464 549
- 1663 44 2 1 7 4
- 250 247 193 321
- 1664 44 2 1 7 4
- 73 72 118 152
- 1670 44 2 1 7 4
- 428 427 448 464
- 1671 44 2 1 7 4
- 247 246 339 193
- 1672 44 2 1 7 4
- 72 71 28 118
- 1673 44 2 1 7 4
- 94 95 96 97
- 1674 44 2 1 7 4
- 114 117 83 84
- 1675 44 2 1 7 4
- 117 116 82 83
- 1676 44 2 1 7 4
- 116 115 81 82
- 1677 44 2 1 7 4
- 115 100 80 81
- 1678 44 2 1 7 4
- 100 98 79 80
- 1679 44 2 1 7 4
- 121 129 114 85
- 1680 44 2 1 7 4
- 129 139 117 114
- 1681 44 2 1 7 4
- 139 140 116 117
- 1682 44 2 1 7 4
- 140 134 115 116
- 1683 44 2 1 7 4
- 134 122 100 115
- 1684 44 2 1 7 4
- 122 99 98 100
- 1685 44 2 1 7 4
- 99 49 48 98
- 1686 44 2 1 7 4
- 87 132 121 86
- 1687 44 2 1 7 4
- 132 199 139 129
- 1688 44 2 1 7 4
- 199 198 140 139
- 1689 44 2 1 7 4
- 198 197 134 140
- 1690 44 2 1 7 4
- 197 127 122 134
- 1691 44 2 1 7 4
- 88 149 132 87
- 1692 44 2 1 7 4
- 149 287 199 132
- 1693 44 2 1 7 4
- 287 288 198 199
- 1694 44 2 1 7 4
- 288 280 197 198
- 1695 44 2 1 7 4
- 280 144 127 197
- 1696 44 2 1 7 4
- 89 148 149 88
- 1697 44 2 1 7 4
- 148 283 287 149
- 1698 44 2 1 7 4
- 283 284 288 287
- 1699 44 2 1 7 4
- 284 281 280 288
- 1700 44 2 1 7 4
- 281 145 144 280
- 1701 44 2 1 7 4
- 90 147 148 89
- 1702 44 2 1 7 4
- 147 285 283 148
- 1703 44 2 1 7 4
- 285 286 284 283
- 1704 44 2 1 7 4
- 286 282 281 284
- 1705 44 2 1 7 4
- 282 146 145 281
- 1706 44 2 1 7 4
- 91 128 147 90
- 1707 44 2 1 7 4
- 128 202 285 147
- 1708 44 2 1 7 4
- 202 203 286 285
- 1709 44 2 1 7 4
- 203 204 282 286
- 1710 44 2 1 7 4
- 204 130 146 282
- 1711 44 2 1 7 4
- 92 156 128 91
- 1712 44 2 1 7 4
- 156 155 202 128
- 1713 44 2 1 7 4
- 155 154 203 202
- 1714 44 2 1 7 4
- 154 153 204 203
- 1715 44 2 1 7 4
- 153 152 130 204
- 1716 44 2 1 7 4
- 270 121 129 300
- 1717 44 2 1 7 4
- 300 129 139 309
- 1718 44 2 1 7 4
- 309 139 140 310
- 1719 44 2 1 7 4
- 310 140 134 308
- 1720 44 2 1 7 4
- 308 134 122 271
- 1721 44 2 1 7 4
- 271 122 99 260
- 1722 44 2 1 7 4
- 222 86 121 270
- 1723 44 2 1 7 4
- 232 88 149 301
- 1724 44 2 1 7 4
- 301 149 287 386
- 1725 44 2 1 7 4
- 386 287 288 387
- 1726 44 2 1 7 4
- 387 288 280 385
- 1727 44 2 1 7 4
- 385 280 144 296
- 1728 44 2 1 7 4
- 259 90 147 299
- 1729 44 2 1 7 4
- 299 147 285 390
- 1730 44 2 1 7 4
- 390 285 286 391
- 1731 44 2 1 7 4
- 391 286 282 389
- 1732 44 2 1 7 4
- 389 282 146 298
- 1733 44 2 1 7 4
- 136 102 101 124
- 1734 44 2 1 7 4
- 137 103 102 136
- 1735 44 2 1 7 4
- 138 104 103 137
- 1736 44 2 1 7 4
- 124 101 49 120
- 1737 44 2 1 7 4
- 126 52 104 138
- 1738 44 2 1 7 4
- 157 28 52 126
- 1739 44 2 1 7 4
- 269 120 49 278
- 1740 44 2 1 7 4
- 290 136 102 261
- 1741 44 2 1 7 4
- 291 138 104 263
- 1742 44 2 1 7 4
- 278 49 99 260
- 1743 44 2 1 7 4
- 127 105 99 122
- 1744 44 2 1 7 4
- 105 101 49 99
- 1745 44 2 1 7 4
- 144 106 105 127
- 1746 44 2 1 7 4
- 106 102 101 105
- 1747 44 2 1 7 4
- 145 107 106 144
- 1748 44 2 1 7 4
- 107 103 102 106
- 1749 44 2 1 7 4
- 146 108 107 145
- 1750 44 2 1 7 4
- 108 104 103 107
- 1751 44 2 1 7 4
- 296 144 106 262
- 1752 44 2 1 7 4
- 262 106 102 261
- 1753 44 2 1 7 4
- 298 146 108 264
- 1754 44 2 1 7 4
- 264 108 104 263
- 1755 44 2 1 7 4
- 130 109 108 146
- 1756 44 2 1 7 4
- 109 52 104 108
- 1757 44 2 1 7 4
- 152 118 109 130
- 1758 44 2 1 7 4
- 118 28 52 109
- 1759 44 2 1 7 4
- 340 182 278 319
- 1760 44 2 1 7 4
- 342 261 182 340
- 1761 44 2 1 7 4
- 343 210 261 342
- 1762 44 2 1 7 4
- 341 263 210 343
- 1763 44 2 1 7 4
- 320 265 263 341
- 1764 44 2 1 7 4
- 193 339 265 320
- 1765 44 2 1 7 4
- 474 364 436 458
- 1771 44 2 1 7 4
- 489 374 364 474
- 1777 44 2 1 7 4
- 509 394 374 489
- 1783 44 2 1 7 4
- 513 401 394 509
- 1789 44 2 1 7 4
- 523 445 401 513
- 1795 44 2 1 7 4
- 464 448 445 523
- 1801 44 2 1 7 4
- 71 20 157 28
- 1802 44 2 1 7 4
- 246 245 294 339
- 1803 44 2 1 7 4
- 427 426 506 448
- 1809 44 2 1 7 4
- 34 33 6 7
- 1815 41 2 1 7 3
- 506 448 445
- 1816 41 2 1 7 3
- 294 339 265
- 1822 41 2 1 7 3
- 449 450 438
- 1823 41 2 1 7 3
- 304 305 180
- 1829 41 2 1 7 3
- 437 449 354
- 1830 41 2 1 7 3
- 277 304 172
- 1836 41 2 1 7 3
- 380 482 378
- 1837 41 2 1 7 3
- 206 325 195
- 1838 41 2 1 7 3
- 12 44 11
- 1843 41 2 1 7 3
- 370 481 368
- 1844 41 2 1 7 3
- 194 315 191
- 1845 41 2 1 7 3
- 10 47 9
- 1846 41 2 1 7 3
- 43 46 47
- 1847 41 2 1 7 3
- 35 110 34
- 1849 41 2 1 7 3
- 36 119 35
- 1850 41 2 1 7 3
- 131 123 119
- 1851 41 2 1 7 3
- 239 297 266
- 1852 41 2 1 7 3
- 418 502 446
- 1863 41 2 1 7 3
- 451 458 440
- 1864 41 2 1 7 3
- 312 319 185
- 1870 41 2 1 7 3
- 439 451 358
- 1871 41 2 1 7 3
- 289 312 176
- 1877 41 2 1 7 3
- 400 500 396
- 1878 41 2 1 7 3
- 219 331 214
- 1879 41 2 1 7 3
- 63 94 62
- 1884 41 2 1 7 3
- 392 494 382
- 1885 41 2 1 7 3
- 213 322 208
- 1886 41 2 1 7 3
- 61 97 60
- 1887 41 2 1 7 3
- 93 96 97
- 1888 41 2 1 7 3
- 85 114 84
- 1890 41 2 1 7 3
- 86 121 85
- 1891 41 2 1 7 3
- 132 129 121
- 1892 41 2 1 7 3
- 256 303 267
- 1893 41 2 1 7 3
- 430 511 447
- 1899 41 2 1 7 3
- 193 321 320
- 1900 41 2 1 7 3
- 464 549 523
- -1
+++ /dev/null
-DBRep_DrawableShape
-
-CASCADE Topology V1, (c) Matra-Datavision
-Locations 0
-Curve2ds 0
-Curves 1536
-1 0 0 0 1 0 0
-1 1.2345679012345681 0 0 0.5 -0.8660254037844386 0
-1 1.8518518518518521 -1.0691671651659738 0 0.5 0.8660254037844386 0
-1 2.4691358024691361 0 0 1 0 0
-1 3.7037037037037042 0 0 0.5 -0.8660254037844386 0
-1 4.3209876543209882 -1.0691671651659738 0 -0.50000000000000022 -0.86602540378443849 0
-1 3.7037037037037037 -2.1383343303319475 0 1 0 0
-1 4.9382716049382722 -2.1383343303319475 0 0.50000000000000011 -0.8660254037844386 0
-1 5.5555555555555562 -3.2075014954979211 0 0.50000000000000011 0.8660254037844386 0
-1 6.1728395061728403 -2.1383343303319475 0 1 3.5971225997855069e-16 0
-1 7.4074074074074083 -2.1383343303319471 0 -0.50000000000000011 0.8660254037844386 0
-1 6.7901234567901243 -1.0691671651659738 0 0.5 0.8660254037844386 0
-1 7.4074074074074083 0 0 1 0 0
-1 8.6419753086419764 0 0 0.49999999999999944 -0.86602540378443893 0
-1 9.2592592592592595 -1.0691671651659738 0 0.50000000000000056 0.86602540378443837 0
-1 9.8765432098765444 0 0 1 0 0
-1 11.111111111111112 0 0 0.49999999999999944 -0.86602540378443893 0
-1 11.728395061728396 -1.0691671651659738 0 -0.49999999999999961 -0.86602540378443882 0
-1 11.111111111111112 -2.1383343303319471 0 1 -3.5971225997855069e-16 0
-1 12.345679012345681 -2.1383343303319475 0 0.49999999999999956 -0.86602540378443893 0
-1 12.962962962962964 -3.2075014954979211 0 -0.50000000000000044 -0.86602540378443837 0
-1 12.345679012345679 -4.2766686606638951 0 -1 7.1942451995710237e-16 0
-1 11.111111111111112 -4.2766686606638942 0 0.49999999999999922 -0.86602540378443904 0
-1 11.728395061728396 -5.3458358258298686 0 -0.50000000000000067 -0.86602540378443826 0
-1 11.111111111111111 -6.4150029909958421 0 1 0 0
-1 12.345679012345679 -6.4150029909958421 0 0.50000000000000067 -0.86602540378443826 0
-1 12.962962962962964 -7.4841701561618157 0 0.50000000000000067 0.86602540378443826 0
-1 13.580246913580249 -6.4150029909958421 0 1 0 0
-1 14.814814814814817 -6.4150029909958421 0 0.49999999999999956 -0.86602540378443893 0
-1 15.4320987654321 -7.4841701561618157 0 -0.49999999999999983 -0.86602540378443871 0
-1 14.814814814814817 -8.5533373213277883 0 1 -1.4388490399142047e-15 0
-1 16.049382716049383 -8.5533373213277901 0 0.50000000000000067 -0.86602540378443826 0
-1 16.666666666666668 -9.6225044864937637 0 0.50000000000000067 0.86602540378443826 0
-1 17.283950617283953 -8.5533373213277901 0 1 1.4388490399142006e-15 0
-1 18.518518518518523 -8.5533373213277883 0 -0.50000000000000311 0.86602540378443682 0
-1 17.901234567901234 -7.4841701561618157 0 0.50000000000000067 0.86602540378443826 0
-1 18.518518518518519 -6.4150029909958421 0 1 0 0
-1 19.753086419753089 -6.4150029909958421 0 0.49999999999999967 -0.86602540378443882 0
-1 20.370370370370374 -7.4841701561618184 0 0.49999999999999784 0.86602540378443993 0
-1 20.987654320987655 -6.415002990995843 0 1 0 0
-1 22.222222222222225 -6.415002990995843 0 -0.50000000000000067 0.86602540378443826 0
-1 21.60493827160494 -5.3458358258298695 0 0.50000000000000033 0.86602540378443849 0
-1 22.222222222222225 -4.2766686606638951 0 -1 0 0
-1 20.987654320987659 -4.2766686606638951 0 -0.50000000000000044 0.86602540378443837 0
-1 20.370370370370374 -3.2075014954979211 0 0.50000000000000067 0.86602540378443826 0
-1 20.987654320987659 -2.1383343303319475 0 1 3.5971225997855119e-16 0
-1 22.222222222222225 -2.1383343303319471 0 -0.50000000000000067 0.86602540378443826 0
-1 21.60493827160494 -1.0691671651659738 0 0.50000000000000056 0.86602540378443837 0
-1 22.222222222222225 0 0 1 0 0
-1 23.456790123456791 0 0 0.50000000000000111 -0.86602540378443804 0
-1 24.074074074074076 -1.0691671651659722 0 0.50000000000000111 0.86602540378443804 0
-1 24.691358024691361 0 0 1 0 0
-1 25.925925925925927 0 0 0.50000000000000067 -0.86602540378443826 0
-1 26.543209876543212 -1.0691671651659733 0 -0.50000000000000067 -0.86602540378443826 0
-1 25.925925925925927 -2.1383343303319466 0 1 0 0
-1 27.160493827160494 -2.1383343303319466 0 0.50000000000000078 -0.86602540378443815 0
-1 27.777777777777779 -3.2075014954979197 0 0.50000000000000078 0.86602540378443815 0
-1 28.395061728395063 -2.1383343303319466 0 1 -7.1942451995710237e-16 0
-1 29.62962962962963 -2.1383343303319475 0 -0.49999999999999822 0.86602540378443971 0
-1 29.012345679012348 -1.0691671651659733 0 0.50000000000000067 0.86602540378443826 0
-1 29.629629629629633 0 0 1 0 0
-1 30.8641975308642 0 0 0.50000000000000111 -0.86602540378443804 0
-1 31.481481481481485 -1.0691671651659722 0 0.49999999999999895 0.86602540378443926 0
-1 32.098765432098766 0 0 1 0 0
-1 33.333333333333336 0 0 0.50000000000000056 -0.86602540378443837 0
-1 33.950617283950621 -1.0691671651659738 0 -0.49999999999999606 -0.86602540378444093 0
-1 33.333333333333343 -2.138334330331948 0 1 3.5971225997855222e-16 0
-1 34.567901234567906 -2.1383343303319475 0 0.50000000000000067 -0.86602540378443826 0
-1 35.18518518518519 -3.2075014954979211 0 -0.50000000000000044 -0.86602540378443837 0
-1 34.567901234567906 -4.2766686606638951 0 -1 7.1942451995710444e-16 0
-1 33.333333333333343 -4.2766686606638942 0 0.49999999999999567 -0.86602540378444115 0
-1 33.950617283950621 -5.3458358258298695 0 -0.50000000000000067 -0.86602540378443826 0
-1 33.333333333333336 -6.415002990995843 0 1 0 0
-1 34.567901234567906 -6.415002990995843 0 0.5 -0.8660254037844386 0
-1 35.18518518518519 -7.4841701561618184 0 0.49999999999999539 0.86602540378444137 0
-1 35.802469135802468 -6.4150029909958421 0 1 0 0
-1 37.037037037037038 -6.4150029909958421 0 0.50000000000000067 -0.86602540378443826 0
-1 37.654320987654323 -7.4841701561618157 0 -0.50000000000000033 -0.86602540378443849 0
-1 37.037037037037038 -8.5533373213277901 0 1 0 0
-1 38.271604938271608 -8.5533373213277901 0 0.50000000000000067 -0.86602540378443826 0
-1 38.888888888888893 -9.6225044864937637 0 -0.50000000000000067 -0.86602540378443826 0
-1 38.271604938271608 -10.691671651659737 0 -1 0 0
-1 37.037037037037038 -10.691671651659737 0 0.50000000000000067 -0.86602540378443826 0
-1 37.654320987654323 -11.760838816825711 0 -0.50000000000000067 -0.86602540378443826 0
-1 37.037037037037038 -12.830005981991684 0 -1 0 0
-1 35.802469135802468 -12.830005981991684 0 -0.49999999999999567 0.86602540378444115 0
-1 35.18518518518519 -11.760838816825709 0 -0.5 -0.8660254037844386 0
-1 34.567901234567906 -12.830005981991684 0 -1 0 0
-1 33.333333333333336 -12.830005981991684 0 0.50000000000000067 -0.86602540378443826 0
-1 33.950617283950621 -13.899173147157658 0 -0.49999999999999628 -0.86602540378444082 0
-1 33.333333333333343 -14.968340312323631 0 1 0 0
-1 34.567901234567906 -14.968340312323631 0 0.50000000000000067 -0.86602540378443826 0
-1 35.18518518518519 -16.037507477489605 0 -0.5 -0.8660254037844386 0
-1 34.567901234567906 -17.10667464265558 0 -1 2.8776980798284178e-15 0
-1 33.333333333333343 -17.106674642655577 0 0.49999999999999567 -0.86602540378444115 0
-1 33.950617283950621 -18.175841807821552 0 -0.5 -0.8660254037844386 0
-1 33.333333333333336 -19.245008972987527 0 1 0 0
-1 34.567901234567906 -19.245008972987527 0 0.5 -0.8660254037844386 0
-1 35.18518518518519 -20.314176138153503 0 0.49999999999999567 0.86602540378444115 0
-1 35.802469135802468 -19.245008972987527 0 1 0 0
-1 37.037037037037038 -19.245008972987527 0 0.50000000000000122 -0.86602540378443793 0
-1 37.654320987654323 -20.314176138153499 0 -0.5 -0.8660254037844386 0
-1 37.037037037037038 -21.383343303319474 0 1 0 0
-1 38.271604938271601 -21.383343303319474 0 0.50000000000000122 -0.86602540378443793 0
-1 38.888888888888886 -22.452510468485446 0 0.50000000000000122 0.86602540378443793 0
-1 39.506172839506171 -21.383343303319474 0 1 0 0
-1 40.740740740740733 -21.383343303319474 0 -0.49999999999999567 0.86602540378444115 0
-1 40.123456790123456 -20.314176138153499 0 0.50000000000000122 0.86602540378443793 0
-1 40.74074074074074 -19.245008972987527 0 1 0 0
-1 41.97530864197531 -19.245008972987527 0 0.5 -0.8660254037844386 0
-1 42.592592592592595 -20.314176138153503 0 0.49999999999999567 0.86602540378444115 0
-1 43.209876543209873 -19.245008972987527 0 1 0 0
-1 44.444444444444443 -19.245008972987527 0 0.5 -0.8660254037844386 0
-1 45.061728395061728 -20.314176138153503 0 -0.5 -0.8660254037844386 0
-1 44.444444444444443 -21.383343303319478 0 1 2.8776980798284012e-15 0
-1 45.679012345679013 -21.383343303319474 0 0.5 -0.8660254037844386 0
-1 46.296296296296298 -22.45251046848545 0 -0.5 -0.8660254037844386 0
-1 45.679012345679013 -23.521677633651425 0 -1 2.8776980798284012e-15 0
-1 44.444444444444443 -23.521677633651422 0 0.5 -0.8660254037844386 0
-1 45.061728395061728 -24.590844798817397 0 -0.5 -0.8660254037844386 0
-1 44.444444444444443 -25.660011963983372 0 1 0 0
-1 45.679012345679013 -25.660011963983372 0 0.49999999999999567 -0.86602540378444115 0
-1 46.296296296296291 -26.729179129149347 0 0.49999999999999872 0.86602540378443937 0
-1 46.913580246913575 -25.660011963983369 0 1 0 0
-1 48.148148148148145 -25.660011963983369 0 0.5 -0.8660254037844386 0
-1 48.76543209876543 -26.729179129149344 0 -0.49999999999999567 -0.86602540378444115 0
-1 48.148148148148152 -27.798346294315319 0 1 2.8776980798284178e-15 0
-1 49.382716049382715 -27.798346294315316 0 0.5 -0.8660254037844386 0
-1 50 -28.867513459481291 0 0.5 0.8660254037844386 0
-1 50.617283950617285 -27.798346294315316 0 1 -2.8776980798284178e-15 0
-1 51.851851851851848 -27.798346294315319 0 -0.49999999999999567 0.86602540378444115 0
-1 51.23456790123457 -26.729179129149344 0 0.5 0.8660254037844386 0
-1 51.851851851851855 -25.660011963983369 0 1 0 0
-1 53.086419753086425 -25.660011963983369 0 0.49999999999999872 -0.86602540378443937 0
-1 53.703703703703709 -26.729179129149347 0 0.49999999999999567 0.86602540378444115 0
-1 54.320987654320987 -25.660011963983372 0 1 0 0
-1 55.555555555555557 -25.660011963983372 0 -0.5 0.8660254037844386 0
-1 54.938271604938272 -24.590844798817397 0 0.5 0.8660254037844386 0
-1 55.555555555555557 -23.521677633651422 0 -1 -2.8776980798284012e-15 0
-1 54.320987654320987 -23.521677633651425 0 -0.5 0.8660254037844386 0
-1 53.703703703703702 -22.45251046848545 0 0.5 0.8660254037844386 0
-1 54.320987654320987 -21.383343303319474 0 1 -2.8776980798284012e-15 0
-1 55.555555555555557 -21.383343303319478 0 -0.5 0.8660254037844386 0
-1 54.938271604938272 -20.314176138153503 0 0.5 0.8660254037844386 0
-1 55.555555555555557 -19.245008972987527 0 1 0 0
-1 56.790123456790127 -19.245008972987527 0 0.49999999999999567 -0.86602540378444115 0
-1 57.407407407407405 -20.314176138153503 0 0.5 0.8660254037844386 0
-1 58.02469135802469 -19.245008972987527 0 1 0 0
-1 59.25925925925926 -19.245008972987527 0 0.50000000000000122 -0.86602540378443793 0
-1 59.876543209876544 -20.314176138153499 0 -0.49999999999999567 -0.86602540378444115 0
-1 59.259259259259267 -21.383343303319474 0 1 0 0
-1 60.493827160493829 -21.383343303319474 0 0.50000000000000122 -0.86602540378443793 0
-1 61.111111111111114 -22.452510468485446 0 0.50000000000000122 0.86602540378443793 0
-1 61.728395061728399 -21.383343303319474 0 1 0 0
-1 62.962962962962962 -21.383343303319474 0 -0.49999999999999567 0.86602540378444115 0
-1 62.345679012345684 -20.314176138153499 0 0.50000000000000122 0.86602540378443793 0
-1 62.962962962962969 -19.245008972987527 0 1 0 0
-1 64.197530864197532 -19.245008972987527 0 0.50000000000000677 -0.86602540378443471 0
-1 64.814814814814824 -20.314176138153496 0 0.49999999999999817 0.86602540378443971 0
-1 65.432098765432102 -19.245008972987527 0 1 0 0
-1 66.666666666666671 -19.245008972987527 0 -0.49999999999999567 0.86602540378444115 0
-1 66.049382716049394 -18.175841807821552 0 0.49999999999999695 0.86602540378444037 0
-1 66.666666666666671 -17.10667464265558 0 -1 0 0
-1 65.432098765432102 -17.10667464265558 0 -0.49999999999999567 0.86602540378444115 0
-1 64.814814814814824 -16.037507477489605 0 0.49999999999999628 0.86602540378444082 0
-1 65.432098765432102 -14.968340312323631 0 1 1.4388490399142006e-15 0
-1 66.666666666666671 -14.96834031232363 0 -0.49999999999999756 0.86602540378444004 0
-1 66.049382716049394 -13.89917314715766 0 0.49999999999999628 0.86602540378444082 0
-1 66.666666666666671 -12.830005981991686 0 -1 0 0
-1 65.432098765432102 -12.830005981991686 0 -0.49999999999999567 0.86602540378444115 0
-1 64.814814814814824 -11.760838816825711 0 -0.50000000000000488 -0.86602540378443582 0
-1 64.197530864197532 -12.830005981991684 0 -1 0 0
-1 62.962962962962969 -12.830005981991684 0 -0.50000000000000067 0.86602540378443826 0
-1 62.345679012345684 -11.760838816825711 0 0.49999999999999628 0.86602540378444082 0
-1 62.962962962962962 -10.691671651659737 0 -1 0 0
-1 61.728395061728399 -10.691671651659737 0 -0.50000000000000067 0.86602540378443826 0
-1 61.111111111111114 -9.6225044864937637 0 0.50000000000000067 0.86602540378443826 0
-1 61.728395061728399 -8.5533373213277901 0 1 0 0
-1 62.962962962962962 -8.5533373213277901 0 -0.499999999999996 0.86602540378444093 0
-1 62.345679012345684 -7.4841701561618157 0 0.50000000000000067 0.86602540378443826 0
-1 62.962962962962969 -6.4150029909958421 0 1 0 0
-1 64.197530864197532 -6.4150029909958421 0 0.50000000000000622 -0.86602540378443504 0
-1 64.814814814814824 -7.4841701561618121 0 0.49999999999999784 0.86602540378443993 0
-1 65.432098765432102 -6.415002990995843 0 1 0 0
-1 66.666666666666671 -6.415002990995843 0 -0.49999999999999628 0.86602540378444082 0
-1 66.049382716049394 -5.3458358258298695 0 0.49999999999999695 0.86602540378444037 0
-1 66.666666666666671 -4.2766686606638977 0 -1 2.1582735598713009e-15 0
-1 65.432098765432102 -4.2766686606638951 0 -0.49999999999999617 0.86602540378444082 0
-1 64.814814814814824 -3.2075014954979211 0 0.49999999999999628 0.86602540378444082 0
-1 65.432098765432102 -2.1383343303319475 0 1 2.1582735598713009e-15 0
-1 66.666666666666671 -2.1383343303319449 0 -0.49999999999999717 0.86602540378444026 0
-1 66.049382716049394 -1.0691671651659738 0 0.49999999999999623 0.86602540378444082 0
-1 66.666666666666671 0 0 1 0 0
-1 67.901234567901241 0 0 0.50000000000000433 -0.86602540378443615 0
-1 68.518518518518533 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0
-1 69.135802469135811 0 0 1 0 0
-1 70.370370370370381 0 0 0.49999999999999567 -0.86602540378444115 0
-1 70.987654320987659 -1.0691671651659753 0 -0.49999999999999678 -0.86602540378444048 0
-1 70.370370370370381 -2.1383343303319475 0 1 -2.5179858198498511e-15 0
-1 71.604938271604951 -2.1383343303319506 0 0.49999999999999567 -0.86602540378444115 0
-1 72.222222222222229 -3.207501495497926 0 0.49999999999999567 0.86602540378444115 0
-1 72.839506172839506 -2.1383343303319506 0 1 2.5179858198498511e-15 0
-1 74.074074074074076 -2.1383343303319475 0 -0.49999999999999678 0.86602540378444048 0
-1 73.456790123456798 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0
-1 74.074074074074076 0 0 1 0 0
-1 75.308641975308646 0 0 0.49999999999999567 -0.86602540378444115 0
-1 75.925925925925924 -1.0691671651659753 0 0.50000000000000433 0.86602540378443615 0
-1 76.543209876543216 0 0 1 0 0
-1 77.777777777777786 0 0 0.49999999999999617 -0.86602540378444082 0
-1 78.395061728395063 -1.069167165165974 0 -0.49999999999999706 -0.86602540378444037 0
-1 77.777777777777786 -2.1383343303319453 0 1 -2.1582735598713009e-15 0
-1 79.012345679012356 -2.138334330331948 0 0.49999999999999617 -0.86602540378444082 0
-1 79.629629629629633 -3.207501495497922 0 -0.49999999999999617 -0.86602540378444082 0
-1 79.012345679012356 -4.2766686606638959 0 -1 -4.3165471197426515e-15 0
-1 77.7777777777778 -4.2766686606639013 0 0.49999999999999817 -0.86602540378443971 0
-1 78.395061728395078 -5.3458358258298695 0 -0.49999999999999628 -0.86602540378444082 0
-1 77.7777777777778 -6.415002990995843 0 1 0 0
-1 79.01234567901237 -6.415002990995843 0 0.49999999999999567 -0.86602540378444115 0
-1 79.629629629629648 -7.4841701561618184 0 0.499999999999996 0.86602540378444093 0
-1 80.246913580246925 -6.4150029909958439 0 1 0 0
-1 81.481481481481495 -6.4150029909958439 0 0.49999999999999628 -0.86602540378444082 0
-1 82.098765432098773 -7.4841701561618175 0 -0.49999999999999722 -0.86602540378444026 0
-1 81.481481481481495 -8.5533373213277883 0 1 -2.8776980798284012e-15 0
-1 82.716049382716065 -8.5533373213277919 0 0.49999999999999628 -0.86602540378444082 0
-1 83.333333333333343 -9.6225044864937654 0 0.49999999999999628 0.86602540378444082 0
-1 83.950617283950621 -8.5533373213277919 0 1 2.8776980798284012e-15 0
-1 85.18518518518519 -8.5533373213277883 0 -0.49999999999999722 0.86602540378444026 0
-1 84.567901234567913 -7.4841701561618175 0 0.49999999999999628 0.86602540378444082 0
-1 85.18518518518519 -6.4150029909958439 0 1 1.4388490399142006e-15 0
-1 86.41975308641976 -6.4150029909958421 0 0.499999999999996 -0.86602540378444093 0
-1 87.037037037037038 -7.4841701561618166 0 0.49999999999999567 0.86602540378444115 0
-1 87.654320987654316 -6.4150029909958413 0 1 1.4388490399142006e-15 0
-1 88.888888888888886 -6.4150029909958395 0 -0.49999999999999661 0.86602540378444059 0
-1 88.271604938271608 -5.3458358258298668 0 0.49999999999999722 0.86602540378444026 0
-1 88.888888888888886 -4.2766686606638959 0 -1 1.4388490399142006e-15 0
-1 87.654320987654316 -4.2766686606638942 0 -0.49999999999999678 0.86602540378444048 0
-1 87.037037037037038 -3.207501495497922 0 0.49999999999999617 0.86602540378444082 0
-1 87.654320987654316 -2.138334330331948 0 1 2.1582735598713009e-15 0
-1 88.888888888888886 -2.1383343303319453 0 -0.49999999999999706 0.86602540378444037 0
-1 88.271604938271608 -1.069167165165974 0 0.49999999999999617 0.86602540378444082 0
-1 88.888888888888886 0 0 1 0 0
-1 90.123456790123456 0 0 0.49999999999999567 -0.86602540378444115 0
-1 90.740740740740733 -1.0691671651659753 0 0.50000000000000433 0.86602540378443615 0
-1 91.358024691358025 0 0 1 0 0
-1 92.592592592592595 0 0 0.49999999999999567 -0.86602540378444115 0
-1 93.209876543209873 -1.0691671651659753 0 -0.49999999999999678 -0.86602540378444048 0
-1 92.592592592592595 -2.1383343303319475 0 1 -2.5179858198498511e-15 0
-1 93.827160493827165 -2.1383343303319506 0 0.49999999999999567 -0.86602540378444115 0
-1 94.444444444444443 -3.207501495497926 0 0.49999999999999567 0.86602540378444115 0
-1 95.061728395061721 -2.1383343303319506 0 1 2.5179858198498511e-15 0
-1 96.296296296296291 -2.1383343303319475 0 -0.49999999999999678 0.86602540378444048 0
-1 95.679012345679013 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0
-1 96.296296296296291 0 0 1 0 0
-1 97.53086419753086 0 0 0.50000000000000433 -0.86602540378443615 0
-1 98.148148148148152 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0
-1 98.76543209876543 0 0 1 0 0
-1 100 0 0 -0.49999999999999628 0.86602540378444082 0
-1 99.382716049382722 1.0691671651659735 0 0.49999999999999706 0.86602540378444037 0
-1 100 2.1383343303319449 0 -1 1.7985612998927508e-15 0
-1 98.76543209876543 2.1383343303319471 0 -0.49999999999999628 0.86602540378444082 0
-1 98.148148148148152 3.2075014954979206 0 0.49999999999999628 0.86602540378444082 0
-1 98.76543209876543 4.2766686606638942 0 1 7.194245199571003e-16 0
-1 100 4.2766686606638951 0 -0.49999999999999695 0.86602540378444037 0
-1 99.382716049382722 5.3458358258298668 0 0.49999999999999628 0.86602540378444082 0
-1 100 6.4150029909958404 0 -1 0 0
-1 98.76543209876543 6.4150029909958404 0 -0.49999999999999539 0.86602540378444137 0
-1 98.148148148148152 7.4841701561618166 0 -0.50000000000000433 -0.86602540378443615 0
-1 97.53086419753086 6.4150029909958413 0 -1 0 0
-1 96.296296296296291 6.4150029909958413 0 -0.49999999999999628 0.86602540378444082 0
-1 95.679012345679013 7.4841701561618148 0 0.49999999999999695 0.86602540378444037 0
-1 96.296296296296291 8.5533373213277866 0 -1 1.4388490399142006e-15 0
-1 95.061728395061721 8.5533373213277883 0 -0.49999999999999628 0.86602540378444082 0
-1 94.444444444444443 9.6225044864937619 0 0.49999999999999628 0.86602540378444082 0
-1 95.061728395061721 10.691671651659735 0 1 2.8776980798284012e-15 0
-1 96.296296296296291 10.691671651659739 0 -0.49999999999999695 0.86602540378444037 0
-1 95.679012345679013 11.760838816825711 0 0.49999999999999628 0.86602540378444082 0
-1 96.296296296296291 12.830005981991684 0 1 0 0
-1 97.53086419753086 12.830005981991684 0 0.50000000000000488 -0.86602540378443582 0
-1 98.148148148148152 11.760838816825711 0 0.49999999999999567 0.86602540378444115 0
-1 98.76543209876543 12.830005981991686 0 1 0 0
-1 100 12.830005981991686 0 -0.50000000000000488 0.86602540378443582 0
-1 99.382716049382708 13.89917314715766 0 0.50000000000000366 0.86602540378443649 0
-1 100 14.968340312323637 0 -1 -4.3165471197426018e-15 0
-1 98.76543209876543 14.968340312323631 0 -0.50000000000000488 0.86602540378443582 0
-1 98.148148148148138 16.037507477489605 0 0.49999999999999567 0.86602540378444115 0
-1 98.765432098765416 17.10667464265558 0 1 0 0
-1 99.999999999999986 17.10667464265558 0 -0.49999999999999695 0.86602540378444037 0
-1 99.382716049382708 18.175841807821552 0 0.49999999999999567 0.86602540378444115 0
-1 99.999999999999986 19.245008972987527 0 -1 0 0
-1 98.765432098765416 19.245008972987527 0 -0.49999999999999567 0.86602540378444115 0
-1 98.148148148148138 20.314176138153503 0 -0.49999999999999567 -0.86602540378444115 0
-1 97.53086419753086 19.245008972987527 0 -1 0 0
-1 96.296296296296291 19.245008972987527 0 -0.50000000000000555 0.86602540378443549 0
-1 95.679012345678998 20.314176138153499 0 0.49999999999999567 0.86602540378444115 0
-1 96.296296296296276 21.383343303319474 0 -1 -2.8776980798284343e-15 0
-1 95.061728395061721 21.383343303319471 0 -0.50000000000000555 0.86602540378443549 0
-1 94.444444444444429 22.452510468485443 0 -0.49999999999999695 -0.86602540378444037 0
-1 93.827160493827151 21.383343303319471 0 -1 -5.7553961596568024e-15 0
-1 92.592592592592581 21.383343303319464 0 0.49999999999999817 -0.86602540378443971 0
-1 93.209876543209859 20.314176138153496 0 -0.49999999999999695 -0.86602540378444037 0
-1 92.592592592592581 19.245008972987524 0 -1 0 0
-1 91.358024691358011 19.245008972987524 0 -0.49999999999999567 0.86602540378444115 0
-1 90.740740740740733 20.314176138153499 0 -0.49999999999999567 -0.86602540378444115 0
-1 90.123456790123456 19.245008972987524 0 -1 0 0
-1 88.888888888888886 19.245008972987524 0 -0.49999999999999567 0.86602540378444115 0
-1 88.271604938271608 20.314176138153499 0 0.49999999999999695 0.86602540378444037 0
-1 88.888888888888886 21.383343303319471 0 -1 0 0
-1 87.654320987654316 21.383343303319471 0 -0.49999999999999567 0.86602540378444115 0
-1 87.037037037037038 22.452510468485446 0 0.49999999999999695 0.86602540378444037 0
-1 87.654320987654316 23.521677633651418 0 1 2.8776980798284012e-15 0
-1 88.888888888888886 23.521677633651422 0 -0.49999999999999695 0.86602540378444037 0
-1 88.271604938271608 24.590844798817393 0 0.49999999999999695 0.86602540378444037 0
-1 88.888888888888886 25.660011963983365 0 -1 0 0
-1 87.654320987654316 25.660011963983365 0 -0.49999999999999567 0.86602540378444115 0
-1 87.037037037037038 26.72917912914934 0 -0.50000000000000433 -0.86602540378443615 0
-1 86.419753086419746 25.660011963983365 0 -1 0 0
-1 85.185185185185176 25.660011963983365 0 -0.49999999999999567 0.86602540378444115 0
-1 84.567901234567898 26.72917912914934 0 0.49999999999999695 0.86602540378444037 0
-1 85.185185185185176 27.798346294315312 0 -1 0 0
-1 83.950617283950606 27.798346294315312 0 -0.49999999999999567 0.86602540378444115 0
-1 83.333333333333329 28.867513459481287 0 0.49999999999999567 0.86602540378444115 0
-1 83.950617283950606 29.936680624647263 0 1 0 0
-1 85.185185185185176 29.936680624647263 0 -0.49999999999999695 0.86602540378444037 0
-1 84.567901234567898 31.005847789813235 0 0.49999999999999567 0.86602540378444115 0
-1 85.185185185185176 32.07501495497921 0 1 0 0
-1 86.419753086419746 32.07501495497921 0 0.50000000000000433 -0.86602540378443615 0
-1 87.037037037037038 31.005847789813235 0 0.49999999999999567 0.86602540378444115 0
-1 87.654320987654316 32.07501495497921 0 1 0 0
-1 88.888888888888886 32.07501495497921 0 -0.49999999999999695 0.86602540378444037 0
-1 88.271604938271608 33.144182120145182 0 0.49999999999999695 0.86602540378444037 0
-1 88.888888888888886 34.213349285311153 0 -1 0 0
-1 87.654320987654316 34.213349285311153 0 -0.49999999999999695 0.86602540378444037 0
-1 87.037037037037038 35.282516450477125 0 0.49999999999999695 0.86602540378444037 0
-1 87.654320987654316 36.351683615643097 0 1 5.7553961596568024e-15 0
-1 88.888888888888886 36.351683615643104 0 -0.49999999999999695 0.86602540378444037 0
-1 88.271604938271608 37.420850780809076 0 0.49999999999999695 0.86602540378444037 0
-1 88.888888888888886 38.490017945975048 0 1 0 0
-1 90.123456790123456 38.490017945975048 0 0.49999999999999695 -0.86602540378444037 0
-1 90.740740740740733 37.420850780809076 0 0.49999999999999695 0.86602540378444037 0
-1 91.358024691358011 38.490017945975048 0 1 0 0
-1 92.592592592592581 38.490017945975048 0 0.49999999999999695 -0.86602540378444037 0
-1 93.209876543209859 37.420850780809076 0 -0.49999999999999944 -0.86602540378443893 0
-1 92.592592592592581 36.351683615643111 0 1 -5.7553961596568024e-15 0
-1 93.827160493827151 36.351683615643104 0 0.49999999999999695 -0.86602540378444037 0
-1 94.444444444444429 35.282516450477132 0 0.50000000000000555 0.86602540378443549 0
-1 95.061728395061721 36.351683615643104 0 1 0 0
-1 96.296296296296276 36.351683615643104 0 -0.49999999999999695 0.86602540378444037 0
-1 95.679012345678998 37.420850780809076 0 0.50000000000000555 0.86602540378443549 0
-1 96.296296296296291 38.490017945975048 0 1 0 0
-1 97.53086419753086 38.490017945975048 0 0.49999999999999695 -0.86602540378444037 0
-1 98.148148148148138 37.420850780809076 0 0.49999999999999695 0.86602540378444037 0
-1 98.765432098765416 38.490017945975048 0 1 0 0
-1 99.999999999999986 38.490017945975048 0 -0.49999999999999695 0.86602540378444037 0
-1 99.382716049382708 39.559185111141019 0 0.49999999999999695 0.86602540378444037 0
-1 99.999999999999986 40.628352276306991 0 -1 5.7553961596568024e-15 0
-1 98.765432098765416 40.628352276306998 0 -0.49999999999999695 0.86602540378444037 0
-1 98.148148148148138 41.69751944147297 0 0.50000000000000555 0.86602540378443549 0
-1 98.76543209876543 42.766686606638942 0 1 -5.7553961596568024e-15 0
-1 100 42.766686606638935 0 -0.50000000000000311 0.86602540378443693 0
-1 99.382716049382708 43.835853771804913 0 0.50000000000000555 0.86602540378443549 0
-1 100 44.905020936970885 0 -1 0 0
-1 98.76543209876543 44.905020936970885 0 -0.49999999999999445 0.86602540378444182 0
-1 98.148148148148152 45.974188102136864 0 -0.50000000000000555 -0.86602540378443549 0
-1 97.53086419753086 44.905020936970892 0 -1 0 0
-1 96.296296296296291 44.905020936970892 0 -0.49999999999999695 0.86602540378444037 0
-1 95.679012345679013 45.974188102136864 0 0.49999999999999695 0.86602540378444037 0
-1 96.296296296296291 47.043355267302836 0 -1 5.7553961596568024e-15 0
-1 95.061728395061721 47.043355267302843 0 -0.49999999999999695 0.86602540378444037 0
-1 94.444444444444443 48.112522432468815 0 0.49999999999999695 0.86602540378444037 0
-1 95.061728395061721 49.181689597634787 0 1 5.7553961596568024e-15 0
-1 96.296296296296291 49.181689597634794 0 -0.49999999999999695 0.86602540378444037 0
-1 95.679012345679013 50.250856762800765 0 0.49999999999999695 0.86602540378444037 0
-1 96.296296296296291 51.320023927966737 0 1 0 0
-1 97.53086419753086 51.320023927966737 0 0.50000000000000056 -0.86602540378443826 0
-1 98.148148148148152 50.250856762800751 0 0.49999999999999445 0.86602540378444182 0
-1 98.76543209876543 51.32002392796673 0 1 0 0
-1 100 51.32002392796673 0 -0.49999999999999695 0.86602540378444037 0
-1 99.382716049382722 52.389191093132702 0 0.49999999999999695 0.86602540378444037 0
-1 100 53.458358258298674 0 -1 5.7553961596568024e-15 0
-1 98.76543209876543 53.458358258298681 0 -0.49999999999999695 0.86602540378444037 0
-1 98.148148148148152 54.527525423464652 0 0.49999999999999695 0.86602540378444037 0
-1 98.76543209876543 55.596692588630624 0 1 5.7553961596568024e-15 0
-1 100 55.596692588630631 0 -0.49999999999999695 0.86602540378444037 0
-1 99.382716049382722 56.665859753796603 0 0.49999999999999695 0.86602540378444037 0
-1 100 57.735026918962575 0 -1 0 0
-1 98.76543209876543 57.735026918962575 0 -0.49999999999999445 0.86602540378444182 0
-1 98.148148148148152 58.804194084128554 0 -0.50000000000000311 -0.86602540378443693 0
-1 97.53086419753086 57.735026918962575 0 -1 0 0
-1 96.296296296296291 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0
-1 95.679012345679013 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0
-1 96.296296296296291 59.873361249294518 0 -1 5.7553961596568024e-15 0
-1 95.061728395061721 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0
-1 94.444444444444443 60.942528414460497 0 -0.49999999999999695 -0.86602540378444037 0
-1 93.827160493827165 59.873361249294526 0 -1 -5.7553961596568024e-15 0
-1 92.592592592592595 59.873361249294518 0 0.49999999999999695 -0.86602540378444037 0
-1 93.209876543209873 58.804194084128547 0 -0.49999999999999695 -0.86602540378444037 0
-1 92.592592592592595 57.735026918962575 0 -1 0 0
-1 91.358024691358025 57.735026918962575 0 -0.50000000000000311 0.86602540378443693 0
-1 90.740740740740733 58.804194084128554 0 -0.49999999999999445 -0.86602540378444182 0
-1 90.123456790123456 57.735026918962575 0 -1 0 0
-1 88.888888888888886 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0
-1 88.271604938271608 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0
-1 88.888888888888886 59.873361249294518 0 -1 5.7553961596568024e-15 0
-1 87.654320987654316 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0
-1 87.037037037037038 60.942528414460497 0 0.50000000000000555 0.86602540378443549 0
-1 87.65432098765433 62.011695579626469 0 1 0 0
-1 88.888888888888886 62.011695579626469 0 -0.49999999999999445 0.86602540378444182 0
-1 88.271604938271608 63.080862744792448 0 0.50000000000000555 0.86602540378443549 0
-1 88.8888888888889 64.15002990995842 0 -1 0 0
-1 87.65432098765433 64.15002990995842 0 -0.50000000000000311 0.86602540378443693 0
-1 87.037037037037038 65.219197075124399 0 -0.49999999999999445 -0.86602540378444182 0
-1 86.41975308641976 64.15002990995842 0 -1 0 0
-1 85.18518518518519 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0
-1 84.567901234567913 65.219197075124399 0 0.49999999999999944 0.86602540378443893 0
-1 85.18518518518519 66.288364240290363 0 -1 0 0
-1 83.950617283950621 66.288364240290363 0 -0.49999999999999445 0.86602540378444182 0
-1 83.333333333333343 67.357531405456342 0 -0.49999999999999445 -0.86602540378444182 0
-1 82.716049382716065 66.288364240290363 0 -1 0 0
-1 81.481481481481495 66.288364240290363 0 0.49999999999999944 -0.86602540378443893 0
-1 82.098765432098773 65.219197075124399 0 -0.49999999999999445 -0.86602540378444182 0
-1 81.481481481481495 64.15002990995842 0 -1 0 0
-1 80.246913580246925 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0
-1 79.629629629629648 65.219197075124399 0 -0.49999999999999445 -0.86602540378444182 0
-1 79.01234567901237 64.15002990995842 0 -1 0 0
-1 77.7777777777778 64.15002990995842 0 0.49999999999999695 -0.86602540378444037 0
-1 78.395061728395078 63.080862744792448 0 -0.49999999999999695 -0.86602540378444037 0
-1 77.7777777777778 62.011695579626476 0 1 -5.7553961596568687e-15 0
-1 79.012345679012356 62.011695579626469 0 0.49999999999999695 -0.86602540378444037 0
-1 79.629629629629633 60.942528414460497 0 -0.49999999999999695 -0.86602540378444037 0
-1 79.012345679012356 59.873361249294526 0 -1 -5.7553961596568024e-15 0
-1 77.777777777777786 59.873361249294518 0 0.49999999999999695 -0.86602540378444037 0
-1 78.395061728395063 58.804194084128547 0 -0.49999999999999695 -0.86602540378444037 0
-1 77.777777777777786 57.735026918962575 0 -1 0 0
-1 76.543209876543216 57.735026918962575 0 -0.50000000000000311 0.86602540378443693 0
-1 75.925925925925924 58.804194084128554 0 -0.49999999999999445 -0.86602540378444182 0
-1 75.308641975308646 57.735026918962575 0 -1 0 0
-1 74.074074074074076 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0
-1 73.456790123456798 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0
-1 74.074074074074076 59.873361249294518 0 -1 5.7553961596568024e-15 0
-1 72.839506172839506 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0
-1 72.222222222222229 60.942528414460497 0 -0.49999999999999695 -0.86602540378444037 0
-1 71.604938271604951 59.873361249294526 0 -1 -5.7553961596568024e-15 0
-1 70.370370370370381 59.873361249294518 0 0.49999999999999695 -0.86602540378444037 0
-1 70.987654320987659 58.804194084128547 0 -0.49999999999999695 -0.86602540378444037 0
-1 70.370370370370381 57.735026918962575 0 -1 0 0
-1 69.135802469135811 57.735026918962575 0 -0.49999999999999445 0.86602540378444182 0
-1 68.518518518518533 58.804194084128554 0 -0.50000000000000311 -0.86602540378443693 0
-1 67.901234567901241 57.735026918962575 0 -1 0 0
-1 66.666666666666671 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0
-1 66.049382716049394 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0
-1 66.666666666666671 59.873361249294518 0 -1 5.7553961596568024e-15 0
-1 65.432098765432102 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0
-1 64.814814814814824 60.942528414460497 0 0.49999999999999695 0.86602540378444037 0
-1 65.432098765432102 62.011695579626469 0 1 5.7553961596568024e-15 0
-1 66.666666666666671 62.011695579626476 0 -0.49999999999999695 0.86602540378444037 0
-1 66.049382716049394 63.080862744792448 0 0.49999999999999695 0.86602540378444037 0
-1 66.666666666666671 64.15002990995842 0 -1 0 0
-1 65.432098765432102 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0
-1 64.814814814814824 65.219197075124399 0 -0.50000000000000311 -0.86602540378443693 0
-1 64.197530864197532 64.15002990995842 0 -1 0 0
-1 62.962962962962969 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0
-1 62.345679012345684 65.219197075124399 0 0.49999999999999872 0.86602540378443937 0
-1 62.962962962962969 66.288364240290377 0 -1 -1.1510792319313605e-14 0
-1 61.728395061728399 66.288364240290363 0 -0.49999999999999872 0.86602540378443937 0
-1 61.111111111111114 67.357531405456342 0 0.49999999999999872 0.86602540378443937 0
-1 61.728395061728399 68.426698570622321 0 1 -1.1510792319313605e-14 0
-1 62.962962962962969 68.426698570622307 0 -0.49999999999999872 0.86602540378443937 0
-1 62.345679012345684 69.495865735788286 0 0.49999999999999872 0.86602540378443937 0
-1 62.962962962962969 70.565032900954265 0 1 0 0
-1 64.197530864197532 70.565032900954265 0 0.5000000000000081 -0.86602540378443404 0
-1 64.814814814814824 69.4958657357883 0 0.49999999999999944 0.86602540378443893 0
-1 65.432098765432102 70.565032900954265 0 1 0 0
-1 66.666666666666671 70.565032900954265 0 -0.49999999999999445 0.86602540378444182 0
-1 66.049382716049394 71.634200066120243 0 0.49999999999999944 0.86602540378443893 0
-1 66.666666666666671 72.703367231286208 0 -1 0 0
-1 65.432098765432102 72.703367231286208 0 -0.49999999999999445 0.86602540378444182 0
-1 64.814814814814824 73.772534396452187 0 0.49999999999999445 0.86602540378444182 0
-1 65.432098765432102 74.841701561618166 0 1 0 0
-1 66.666666666666671 74.841701561618166 0 -0.49999999999999944 0.86602540378443893 0
-1 66.049382716049394 75.91086872678413 0 0.49999999999999445 0.86602540378444182 0
-1 66.666666666666671 76.980035891950109 0 -1 0 0
-1 65.432098765432102 76.980035891950109 0 -0.49999999999999445 0.86602540378444182 0
-1 64.814814814814824 78.049203057116088 0 -0.50000000000000311 -0.86602540378443693 0
-1 64.197530864197532 76.980035891950109 0 -1 0 0
-1 62.962962962962969 76.980035891950109 0 -0.49999999999999872 0.86602540378443937 0
-1 62.345679012345684 78.049203057116088 0 0.49999999999999872 0.86602540378443937 0
-1 62.962962962962969 79.118370222282067 0 -1 -1.1510792319313539e-14 0
-1 61.728395061728392 79.118370222282053 0 -0.49999999999999872 0.86602540378443937 0
-1 61.111111111111107 80.187537387448032 0 -0.49999999999999872 -0.86602540378443937 0
-1 60.493827160493822 79.118370222282053 0 -1 0 0
-1 59.259259259259252 79.118370222282053 0 0.50000000000000311 -0.86602540378443693 0
-1 59.876543209876544 78.049203057116074 0 -0.49999999999999872 -0.86602540378443937 0
-1 59.25925925925926 76.980035891950095 0 -1 0 0
-1 58.02469135802469 76.980035891950095 0 -0.49999999999999872 0.86602540378443937 0
-1 57.407407407407405 78.049203057116074 0 -0.49999999999999445 -0.86602540378444182 0
-1 56.790123456790127 76.980035891950095 0 -1 0 0
-1 55.555555555555557 76.980035891950095 0 -0.49999999999999872 0.86602540378443937 0
-1 54.938271604938272 78.049203057116074 0 0.5000000000000081 0.86602540378443404 0
-1 55.555555555555564 79.118370222282039 0 -1 0 0
-1 54.320987654320987 79.118370222282039 0 -0.49999999999999872 0.86602540378443937 0
-1 53.703703703703702 80.187537387448018 0 0.49999999999999872 0.86602540378443937 0
-1 54.320987654320987 81.256704552613996 0 1 0 0
-1 55.555555555555564 81.256704552613996 0 -0.5000000000000081 0.86602540378443404 0
-1 54.938271604938272 82.325871717779961 0 0.49999999999999872 0.86602540378443937 0
-1 55.555555555555557 83.39503888294594 0 -1 0 0
-1 54.320987654320987 83.39503888294594 0 -0.49999999999999445 0.86602540378444182 0
-1 53.703703703703709 84.464206048111919 0 -0.49999999999999872 -0.86602540378443937 0
-1 53.086419753086425 83.39503888294594 0 -1 0 0
-1 51.851851851851855 83.39503888294594 0 -0.49999999999999872 0.86602540378443937 0
-1 51.23456790123457 84.464206048111919 0 0.50000000000000377 0.86602540378443649 0
-1 51.851851851851855 85.533373213277883 0 -1 0 0
-1 50.617283950617285 85.533373213277883 0 -0.49999999999999872 0.86602540378443937 0
-1 50 86.602540378443862 0 -0.49999999999999872 -0.86602540378443937 0
-1 49.382716049382715 85.533373213277883 0 -1 0 0
-1 48.148148148148145 85.533373213277883 0 0.50000000000000377 -0.86602540378443649 0
-1 48.76543209876543 84.464206048111919 0 -0.49999999999999872 -0.86602540378443937 0
-1 48.148148148148145 83.39503888294594 0 -1 0 0
-1 46.913580246913575 83.39503888294594 0 -0.49999999999999872 0.86602540378443937 0
-1 46.296296296296291 84.464206048111919 0 -0.49999999999999445 -0.86602540378444182 0
-1 45.679012345679013 83.39503888294594 0 -1 0 0
-1 44.444444444444443 83.39503888294594 0 0.49999999999999872 -0.86602540378443937 0
-1 45.061728395061728 82.325871717779961 0 -0.5000000000000081 -0.86602540378443404 0
-1 44.444444444444436 81.256704552613996 0 1 0 0
-1 45.679012345679013 81.256704552613996 0 0.49999999999999872 -0.86602540378443937 0
-1 46.296296296296298 80.187537387448018 0 -0.49999999999999872 -0.86602540378443937 0
-1 45.679012345679013 79.118370222282039 0 -1 0 0
-1 44.444444444444436 79.118370222282039 0 0.5000000000000081 -0.86602540378443404 0
-1 45.061728395061728 78.049203057116074 0 -0.49999999999999872 -0.86602540378443937 0
-1 44.444444444444443 76.980035891950095 0 -1 0 0
-1 43.209876543209873 76.980035891950095 0 -0.49999999999999445 0.86602540378444182 0
-1 42.592592592592595 78.049203057116074 0 -0.49999999999999872 -0.86602540378443937 0
-1 41.97530864197531 76.980035891950095 0 -1 0 0
-1 40.74074074074074 76.980035891950095 0 -0.49999999999999872 0.86602540378443937 0
-1 40.123456790123456 78.049203057116074 0 0.50000000000000311 0.86602540378443693 0
-1 40.740740740740748 79.118370222282053 0 -1 0 0
-1 39.506172839506178 79.118370222282053 0 -0.49999999999999872 0.86602540378443937 0
-1 38.888888888888893 80.187537387448032 0 -0.49999999999999872 -0.86602540378443937 0
-1 38.271604938271608 79.118370222282053 0 -1 1.1510792319313539e-14 0
-1 37.037037037037031 79.118370222282067 0 0.50000000000000311 -0.86602540378443693 0
-1 37.654320987654323 78.049203057116088 0 -0.49999999999999872 -0.86602540378443937 0
-1 37.037037037037038 76.980035891950109 0 -1 0 0
-1 35.802469135802468 76.980035891950109 0 -0.49999999999999445 0.86602540378444182 0
-1 35.18518518518519 78.049203057116088 0 -0.49999999999999872 -0.86602540378443937 0
-1 34.567901234567906 76.980035891950109 0 -1 0 0
-1 33.333333333333336 76.980035891950109 0 0.49999999999999872 -0.86602540378443937 0
-1 33.950617283950621 75.91086872678413 0 -0.49999999999999872 -0.86602540378443937 0
-1 33.333333333333336 74.841701561618152 0 1 1.1510792319313605e-14 0
-1 34.567901234567906 74.841701561618166 0 0.49999999999999872 -0.86602540378443937 0
-1 35.18518518518519 73.772534396452187 0 -0.49999999999999872 -0.86602540378443937 0
-1 34.567901234567906 72.703367231286208 0 -1 1.1510792319313605e-14 0
-1 33.333333333333336 72.703367231286222 0 0.49999999999999872 -0.86602540378443937 0
-1 33.950617283950621 71.634200066120243 0 -0.49999999999999872 -0.86602540378443937 0
-1 33.333333333333336 70.565032900954265 0 1 0 0
-1 34.567901234567906 70.565032900954265 0 0.49999999999999872 -0.86602540378443937 0
-1 35.18518518518519 69.495865735788286 0 0.49999999999999445 0.86602540378444182 0
-1 35.802469135802468 70.565032900954265 0 1 0 0
-1 37.037037037037038 70.565032900954265 0 0.49999999999999872 -0.86602540378443937 0
-1 37.654320987654323 69.495865735788286 0 -0.50000000000000311 -0.86602540378443693 0
-1 37.037037037037031 68.426698570622307 0 1 1.1510792319313539e-14 0
-1 38.271604938271608 68.426698570622321 0 0.49999999999999872 -0.86602540378443937 0
-1 38.888888888888893 67.357531405456342 0 -0.49999999999999872 -0.86602540378443937 0
-1 38.271604938271608 66.288364240290363 0 -1 1.1510792319313539e-14 0
-1 37.037037037037031 66.288364240290377 0 0.50000000000000311 -0.86602540378443693 0
-1 37.654320987654323 65.219197075124399 0 -0.49999999999999872 -0.86602540378443937 0
-1 37.037037037037038 64.15002990995842 0 -1 0 0
-1 35.802469135802468 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0
-1 35.18518518518519 65.219197075124399 0 -0.49999999999999872 -0.86602540378443937 0
-1 34.567901234567906 64.15002990995842 0 -1 0 0
-1 33.333333333333336 64.15002990995842 0 0.50000000000000122 -0.86602540378443793 0
-1 33.950617283950621 63.080862744792448 0 -0.49999999999999445 -0.86602540378444182 0
-1 33.333333333333343 62.011695579626469 0 1 0 0
-1 34.567901234567906 62.011695579626469 0 0.50000000000000122 -0.86602540378443793 0
-1 35.18518518518519 60.942528414460497 0 -0.50000000000000122 -0.86602540378443793 0
-1 34.567901234567906 59.873361249294526 0 -1 0 0
-1 33.333333333333343 59.873361249294526 0 0.49999999999999445 -0.86602540378444182 0
-1 33.950617283950621 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0
-1 33.333333333333336 57.735026918962575 0 -1 0 0
-1 32.098765432098766 57.735026918962575 0 -0.49999999999999661 0.86602540378444059 0
-1 31.481481481481485 58.804194084128554 0 -0.49999999999999872 -0.86602540378443937 0
-1 30.8641975308642 57.735026918962575 0 -1 0 0
-1 29.629629629629633 57.735026918962575 0 -0.50000000000000122 0.86602540378443793 0
-1 29.012345679012348 58.804194084128547 0 0.49999999999999661 0.86602540378444059 0
-1 29.62962962962963 59.873361249294526 0 -1 0 0
-1 28.395061728395063 59.873361249294526 0 -0.50000000000000122 0.86602540378443793 0
-1 27.777777777777779 60.942528414460497 0 -0.50000000000000122 -0.86602540378443793 0
-1 27.160493827160494 59.873361249294526 0 -1 -5.7553961596568356e-15 0
-1 25.925925925925931 59.873361249294518 0 0.49999999999999911 -0.86602540378443915 0
-1 26.543209876543212 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0
-1 25.925925925925927 57.735026918962575 0 -1 0 0
-1 24.691358024691361 57.735026918962575 0 -0.50000000000000122 0.86602540378443793 0
-1 24.074074074074076 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0
-1 23.456790123456791 57.735026918962575 0 -1 0 0
-1 22.222222222222225 57.735026918962575 0 -0.50000000000000122 0.86602540378443793 0
-1 21.60493827160494 58.804194084128547 0 0.49999999999999661 0.86602540378444059 0
-1 22.222222222222221 59.873361249294526 0 -1 0 0
-1 20.987654320987659 59.873361249294526 0 -0.50000000000000122 0.86602540378443793 0
-1 20.370370370370374 60.942528414460497 0 0.50000000000000122 0.86602540378443793 0
-1 20.987654320987659 62.011695579626469 0 1 0 0
-1 22.222222222222225 62.011695579626469 0 -0.49999999999999661 0.86602540378444059 0
-1 21.604938271604944 63.080862744792448 0 0.50000000000000122 0.86602540378443793 0
-1 22.222222222222229 64.15002990995842 0 -1 0 0
-1 20.987654320987659 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0
-1 20.370370370370374 65.219197075124399 0 -0.49999999999999661 -0.86602540378444059 0
-1 19.753086419753092 64.15002990995842 0 -1 0 0
-1 18.518518518518523 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0
-1 17.901234567901238 65.219197075124399 0 0.50000000000000588 0.86602540378443527 0
-1 18.518518518518526 66.288364240290363 0 -1 0 0
-1 17.283950617283956 66.288364240290363 0 -0.49999999999999872 0.86602540378443937 0
-1 16.666666666666671 67.357531405456342 0 -0.49999999999999872 -0.86602540378443937 0
-1 16.049382716049386 66.288364240290363 0 -1 0 0
-1 14.814814814814815 66.288364240290363 0 0.50000000000000588 -0.86602540378443527 0
-1 15.432098765432103 65.219197075124399 0 -0.49999999999999872 -0.86602540378443937 0
-1 14.814814814814818 64.15002990995842 0 -1 0 0
-1 13.58024691358025 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0
-1 12.962962962962965 65.219197075124399 0 -0.49999999999999767 -0.86602540378444004 0
-1 12.345679012345682 64.15002990995842 0 -1 0 0
-1 11.111111111111114 64.15002990995842 0 0.50000000000000122 -0.86602540378443793 0
-1 11.728395061728399 63.080862744792448 0 -0.49999999999999767 -0.86602540378444004 0
-1 11.111111111111116 62.011695579626469 0 1 0 0
-1 12.345679012345682 62.011695579626469 0 0.50000000000000122 -0.86602540378443793 0
-1 12.962962962962967 60.942528414460497 0 -0.50000000000000122 -0.86602540378443793 0
-1 12.345679012345682 59.873361249294526 0 -1 0 0
-1 11.111111111111116 59.873361249294526 0 0.49999999999999767 -0.86602540378444004 0
-1 11.728395061728399 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0
-1 11.111111111111114 57.735026918962575 0 -1 0 0
-1 9.8765432098765462 57.735026918962575 0 -0.50000000000000011 0.8660254037844386 0
-1 9.2592592592592631 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0
-1 8.6419753086419782 57.735026918962575 0 -1 0 0
-1 7.407407407407411 57.735026918962575 0 -0.50000000000000067 0.86602540378443826 0
-1 6.790123456790127 58.804194084128547 0 0.49999999999999711 0.86602540378444026 0
-1 7.4074074074074092 59.873361249294526 0 -1 0 0
-1 6.1728395061728429 59.873361249294526 0 -0.50000000000000067 0.86602540378443826 0
-1 5.5555555555555589 60.942528414460497 0 -0.50000000000000067 -0.86602540378443826 0
-1 4.9382716049382749 59.873361249294526 0 -1 -5.755396159656819e-15 0
-1 3.7037037037037086 59.873361249294518 0 0.49999999999999961 -0.86602540378443882 0
-1 4.3209876543209909 58.804194084128547 0 -0.50000000000000044 -0.86602540378443837 0
-1 3.7037037037037073 57.735026918962575 0 -1 0 0
-1 2.4691358024691392 57.735026918962575 0 -0.50000000000000056 0.86602540378443826 0
-1 1.8518518518518554 58.804194084128547 0 -0.50000000000000067 -0.86602540378443826 0
-1 1.2345679012345714 57.735026918962575 0 -1 0 0
-1 3.5527136788005009e-15 57.735026918962575 0 0.50000000000000056 -0.86602540378443826 0
-1 0.61728395061728736 56.665859753796603 0 -0.5 -0.8660254037844386 0
-1 4.4408920985006262e-15 55.596692588630631 0 1 -5.7553961596568166e-15 0
-1 1.2345679012345712 55.596692588630624 0 0.50000000000000056 -0.86602540378443826 0
-1 1.851851851851855 54.527525423464652 0 -0.50000000000000089 -0.86602540378443815 0
-1 1.2345679012345707 53.458358258298681 0 -1 0 0
-1 3.8857805861880479e-15 53.458358258298681 0 0.49999999999999734 -0.86602540378444015 0
-1 0.61728395061728647 52.389191093132702 0 -0.50000000000000089 -0.86602540378443815 0
-1 2.2204460492503131e-15 51.32002392796673 0 1 0 0
-1 1.2345679012345703 51.32002392796673 0 0.500000000000002 -0.86602540378443749 0
-1 1.8518518518518565 50.250856762800758 0 0.49999999999999684 0.86602540378444048 0
-1 2.4691358024691383 51.320023927966737 0 1 0 0
-1 3.7037037037037064 51.320023927966737 0 0.50000000000000044 -0.86602540378443837 0
-1 4.32098765432099 50.250856762800765 0 -0.49999999999999711 -0.86602540378444026 0
-1 3.7037037037037077 49.181689597634787 0 1 0 0
-1 4.938271604938274 49.181689597634787 0 0.50000000000000067 -0.86602540378443826 0
-1 5.555555555555558 48.112522432468815 0 -0.50000000000000067 -0.86602540378443826 0
-1 4.938271604938274 47.043355267302843 0 -1 -5.755396159656819e-15 0
-1 3.7037037037037077 47.043355267302836 0 0.49999999999999961 -0.86602540378443882 0
-1 4.32098765432099 45.974188102136864 0 -0.50000000000000044 -0.86602540378443837 0
-1 3.7037037037037064 44.905020936970892 0 -1 0 0
-1 2.4691358024691383 44.905020936970892 0 -0.499999999999997 0.86602540378444037 0
-1 1.8518518518518563 45.974188102136871 0 -0.50000000000000189 -0.86602540378443749 0
-1 1.2345679012345703 44.905020936970899 0 -1 0 0
-1 2.2204460492503131e-15 44.905020936970899 0 0.50000000000000089 -0.86602540378443815 0
-1 0.61728395061728647 43.835853771804928 0 -0.49999999999999734 -0.86602540378444015 0
-1 3.8857805861880479e-15 42.766686606638949 0 1 0 0
-1 1.2345679012345707 42.766686606638949 0 0.50000000000000089 -0.86602540378443815 0
-1 1.851851851851855 41.697519441472977 0 -0.50000000000000056 -0.86602540378443826 0
-1 1.2345679012345712 40.628352276307005 0 -1 -5.7553961596568166e-15 0
-1 4.4408920985006262e-15 40.628352276306998 0 0.5 -0.8660254037844386 0
-1 0.61728395061728736 39.559185111141026 0 -0.50000000000000056 -0.86602540378443826 0
-1 3.5527136788005009e-15 38.490017945975055 0 1 0 0
-1 1.2345679012345712 38.490017945975055 0 0.50000000000000056 -0.86602540378443826 0
-1 1.851851851851855 37.420850780809083 0 0.50000000000000056 0.86602540378443826 0
-1 2.4691358024691388 38.490017945975055 0 1 0 0
-1 3.7037037037037064 38.490017945975055 0 0.50000000000000044 -0.86602540378443837 0
-1 4.32098765432099 37.420850780809083 0 -0.50000000000000011 -0.8660254037844386 0
-1 3.7037037037037068 36.351683615643111 0 1 -5.755396159656819e-15 0
-1 4.9382716049382731 36.351683615643104 0 0.50000000000000011 -0.8660254037844386 0
-1 5.5555555555555562 35.282516450477132 0 0.50000000000000067 0.86602540378443826 0
-1 6.1728395061728403 36.351683615643104 0 1 0 0
-1 7.4074074074074066 36.351683615643104 0 -0.49999999999999911 0.86602540378443915 0
-1 6.7901234567901252 37.420850780809076 0 0.50000000000000067 0.86602540378443826 0
-1 7.4074074074074092 38.490017945975048 0 1 0 0
-1 8.6419753086419764 38.490017945975048 0 0.50000000000000122 -0.86602540378443793 0
-1 9.2592592592592613 37.420850780809076 0 0.50000000000000011 0.8660254037844386 0
-1 9.8765432098765444 38.490017945975048 0 1 0 0
-1 11.111111111111112 38.490017945975048 0 0.50000000000000011 -0.8660254037844386 0
-1 11.728395061728396 37.420850780809076 0 -0.49999999999999911 -0.86602540378443915 0
-1 11.111111111111114 36.351683615643104 0 1 -5.755396159656819e-15 0
-1 12.345679012345681 36.351683615643097 0 0.50000000000000011 -0.8660254037844386 0
-1 12.962962962962964 35.282516450477125 0 -0.50000000000000122 -0.86602540378443793 0
-1 12.345679012345679 34.213349285311153 0 -1 5.7553961596568277e-15 0
-1 11.111111111111114 34.21334928531116 0 0.49999999999999661 -0.86602540378444059 0
-1 11.728395061728396 33.144182120145182 0 -0.50000000000000122 -0.86602540378443793 0
-1 11.111111111111111 32.07501495497921 0 1 0 0
-1 12.345679012345679 32.07501495497921 0 0.5 -0.8660254037844386 0
-1 12.962962962962964 31.005847789813235 0 0.5 0.8660254037844386 0
-1 13.580246913580249 32.07501495497921 0 1 0 0
-1 14.814814814814817 32.07501495497921 0 0.49999999999999889 -0.86602540378443926 0
-1 15.4320987654321 31.005847789813235 0 -0.50000000000000122 -0.86602540378443793 0
-1 14.814814814814815 29.936680624647263 0 1 0 0
-1 16.049382716049383 29.936680624647263 0 0.5 -0.8660254037844386 0
-1 16.666666666666668 28.867513459481287 0 -0.5 -0.8660254037844386 0
-1 16.049382716049383 27.798346294315312 0 -1 0 0
-1 14.814814814814815 27.798346294315312 0 0.50000000000000122 -0.86602540378443793 0
-1 15.4320987654321 26.72917912914934 0 -0.49999999999999889 -0.86602540378443926 0
-1 14.814814814814817 25.660011963983365 0 -1 0 0
-1 13.580246913580249 25.660011963983365 0 -0.5 0.8660254037844386 0
-1 12.962962962962964 26.72917912914934 0 -0.5 -0.8660254037844386 0
-1 12.345679012345679 25.660011963983365 0 -1 0 0
-1 11.111111111111111 25.660011963983365 0 0.50000000000000122 -0.86602540378443793 0
-1 11.728395061728396 24.590844798817393 0 -0.49999999999999784 -0.86602540378443993 0
-1 11.111111111111114 23.521677633651418 0 1 0 0
-1 12.345679012345679 23.521677633651418 0 0.50000000000000122 -0.86602540378443793 0
-1 12.962962962962964 22.452510468485446 0 -0.49999999999999889 -0.86602540378443926 0
-1 12.345679012345681 21.383343303319471 0 -1 0 0
-1 11.111111111111111 21.383343303319471 0 0.50000000000000122 -0.86602540378443793 0
-1 11.728395061728396 20.314176138153499 0 -0.49999999999999889 -0.86602540378443926 0
-1 11.111111111111112 19.245008972987524 0 -1 0 0
-1 9.8765432098765444 19.245008972987524 0 -0.5 0.8660254037844386 0
-1 9.2592592592592595 20.314176138153499 0 -0.49999999999999889 -0.86602540378443926 0
-1 8.6419753086419764 19.245008972987524 0 -1 0 0
-1 7.4074074074074083 19.245008972987524 0 -0.49999999999999944 0.86602540378443893 0
-1 6.7901234567901243 20.314176138153499 0 0.50000000000000178 0.8660254037844376 0
-1 7.4074074074074101 21.383343303319471 0 -1 0 0
-1 6.1728395061728403 21.383343303319471 0 -0.49999999999999944 0.86602540378443893 0
-1 5.5555555555555562 22.452510468485446 0 -0.49999999999999944 -0.86602540378443893 0
-1 4.9382716049382722 21.383343303319471 0 -1 0 0
-1 3.7037037037037028 21.383343303319471 0 0.50000000000000155 -0.86602540378443782 0
-1 4.3209876543209882 20.314176138153499 0 -0.49999999999999944 -0.86602540378443893 0
-1 3.7037037037037042 19.245008972987524 0 -1 0 0
-1 2.4691358024691361 19.245008972987524 0 -0.49999999999999944 0.86602540378443893 0
-1 1.8518518518518521 20.314176138153499 0 -0.49999999999999944 -0.86602540378443893 0
-1 1.2345679012345681 19.245008972987524 0 -1 0 0
-1 0 19.245008972987524 0 0.50000000000000067 -0.86602540378443826 0
-1 0.61728395061728403 18.175841807821552 0 -0.49999999999999983 -0.86602540378443871 0
-1 1.4432899320127035e-15 17.10667464265558 0 1 -2.8776980798284083e-15 0
-1 1.2345679012345681 17.106674642655577 0 0.50000000000000067 -0.86602540378443826 0
-1 1.8518518518518521 16.037507477489605 0 -0.49999999999999967 -0.86602540378443882 0
-1 1.2345679012345687 14.968340312323631 0 -1 -1.4388490399142032e-15 0
-1 1.1102230246251565e-15 14.96834031232363 0 0.50000000000000078 -0.86602540378443815 0
-1 0.61728395061728525 13.899173147157658 0 -0.49999999999999972 -0.86602540378443882 0
-1 1.7763568394002505e-15 12.830005981991684 0 1 0 0
-1 1.2345679012345692 12.830005981991684 0 0.49999999999999906 -0.86602540378443915 0
-1 1.8518518518518525 11.760838816825709 0 0.50000000000000011 0.8660254037844386 0
-1 2.4691358024691366 12.830005981991683 0 1 0 0
-1 3.7037037037037042 12.830005981991683 0 0.50000000000000011 -0.8660254037844386 0
-1 4.3209876543209882 11.760838816825709 0 -0.49999999999999944 -0.86602540378443893 0
-1 3.7037037037037042 10.691671651659734 0 1 1.4388490399142028e-15 0
-1 4.9382716049382722 10.691671651659735 0 0.50000000000000011 -0.8660254037844386 0
-1 5.5555555555555562 9.6225044864937619 0 -0.50000000000000011 -0.8660254037844386 0
-1 4.9382716049382722 8.5533373213277883 0 -1 1.4388490399142028e-15 0
-1 3.7037037037037042 8.5533373213277901 0 0.49999999999999944 -0.86602540378443893 0
-1 4.3209876543209882 7.4841701561618148 0 -0.50000000000000011 -0.8660254037844386 0
-1 3.7037037037037042 6.4150029909958413 0 -1 0 0
-1 2.4691358024691366 6.4150029909958413 0 -0.50000000000000011 0.8660254037844386 0
-1 1.8518518518518525 7.4841701561618148 0 -0.49999999999999994 -0.86602540378443871 0
-1 1.2345679012345687 6.4150029909958413 0 -1 0 0
-1 8.8817841970012523e-16 6.4150029909958413 0 0.49999999999999989 -0.86602540378443871 0
-1 0.61728395061728458 5.3458358258298677 0 -0.5 -0.8660254037844386 0
-1 6.6613381477509392e-16 4.2766686606638942 0 1 0 0
-1 1.2345679012345683 4.2766686606638942 0 0.49999999999999994 -0.86602540378443871 0
-1 1.8518518518518521 3.2075014954979206 0 -0.50000000000000011 -0.8660254037844386 0
-1 1.2345679012345681 2.1383343303319471 0 -1 0 0
-1 2.2204460492503131e-16 2.1383343303319471 0 0.49999999999999994 -0.86602540378443871 0
-1 0.61728395061728403 1.0691671651659735 0 -0.50000000000000011 -0.8660254037844386 0
-1 35 35 0 1 0 0
-1 35.370370370370374 35 0 0.5 -0.8660254037844386 0
-1 35.555555555555557 34.679249850450205 0 0.5 0.8660254037844386 0
-1 35.74074074074074 35 0 1 0 0
-1 36.111111111111114 35 0 0.5 -0.8660254037844386 0
-1 36.296296296296298 34.679249850450205 0 -0.50000000000000022 -0.86602540378443849 0
-1 36.111111111111114 34.358499700900417 0 1 0 0
-1 36.481481481481481 34.358499700900417 0 0.50000000000000011 -0.8660254037844386 0
-1 36.666666666666664 34.037749551350622 0 0.50000000000000011 0.8660254037844386 0
-1 36.851851851851855 34.358499700900417 0 1 3.5971225997855069e-16 0
-1 37.222222222222221 34.358499700900417 0 -0.50000000000000011 0.8660254037844386 0
-1 37.037037037037038 34.679249850450205 0 0.5 0.8660254037844386 0
-1 37.222222222222221 35 0 1 0 0
-1 37.592592592592595 35 0 0.49999999999999944 -0.86602540378443893 0
-1 37.777777777777779 34.679249850450205 0 0.50000000000000056 0.86602540378443837 0
-1 37.962962962962962 35 0 1 0 0
-1 38.333333333333336 35 0 0.49999999999999944 -0.86602540378443893 0
-1 38.518518518518519 34.679249850450205 0 -0.49999999999999961 -0.86602540378443882 0
-1 38.333333333333336 34.358499700900417 0 1 -3.5971225997855069e-16 0
-1 38.703703703703702 34.358499700900417 0 0.49999999999999956 -0.86602540378443893 0
-1 38.888888888888886 34.037749551350622 0 -0.50000000000000044 -0.86602540378443837 0
-1 38.703703703703702 33.716999401800834 0 -1 7.1942451995710237e-16 0
-1 38.333333333333336 33.716999401800834 0 0.49999999999999922 -0.86602540378443904 0
-1 38.518518518518519 33.396249252251039 0 -0.50000000000000067 -0.86602540378443826 0
-1 38.333333333333336 33.075499102701251 0 1 0 0
-1 38.703703703703702 33.075499102701251 0 0.50000000000000067 -0.86602540378443826 0
-1 38.888888888888886 32.754748953151456 0 0.50000000000000067 0.86602540378443826 0
-1 39.074074074074076 33.075499102701251 0 1 0 0
-1 39.444444444444443 33.075499102701251 0 0.49999999999999956 -0.86602540378443893 0
-1 39.629629629629633 32.754748953151456 0 -0.49999999999999983 -0.86602540378443871 0
-1 39.444444444444443 32.433998803601661 0 1 -1.4388490399142047e-15 0
-1 39.814814814814817 32.433998803601661 0 0.50000000000000067 -0.86602540378443826 0
-1 40 32.113248654051873 0 0.50000000000000067 0.86602540378443826 0
-1 40.185185185185183 32.433998803601661 0 1 1.4388490399142006e-15 0
-1 40.555555555555557 32.433998803601661 0 -0.50000000000000311 0.86602540378443682 0
-1 40.370370370370367 32.754748953151456 0 0.50000000000000067 0.86602540378443826 0
-1 40.555555555555557 33.075499102701251 0 1 0 0
-1 40.925925925925924 33.075499102701251 0 0.49999999999999967 -0.86602540378443882 0
-1 41.111111111111114 32.754748953151456 0 0.49999999999999784 0.86602540378443993 0
-1 41.296296296296298 33.075499102701244 0 1 0 0
-1 41.666666666666664 33.075499102701244 0 -0.50000000000000067 0.86602540378443826 0
-1 41.481481481481481 33.396249252251039 0 0.50000000000000033 0.86602540378443849 0
-1 41.666666666666664 33.716999401800834 0 -1 0 0
-1 41.296296296296298 33.716999401800834 0 -0.50000000000000044 0.86602540378443837 0
-1 41.111111111111114 34.037749551350622 0 0.50000000000000067 0.86602540378443826 0
-1 41.296296296296298 34.358499700900417 0 1 3.5971225997855119e-16 0
-1 41.666666666666664 34.358499700900417 0 -0.50000000000000067 0.86602540378443826 0
-1 41.481481481481481 34.679249850450205 0 0.50000000000000056 0.86602540378443837 0
-1 41.666666666666664 35 0 1 0 0
-1 42.037037037037038 35 0 0.50000000000000111 -0.86602540378443804 0
-1 42.222222222222221 34.679249850450205 0 0.50000000000000111 0.86602540378443804 0
-1 42.407407407407405 35 0 1 0 0
-1 42.777777777777779 35 0 0.50000000000000067 -0.86602540378443826 0
-1 42.962962962962962 34.679249850450205 0 -0.50000000000000067 -0.86602540378443826 0
-1 42.777777777777779 34.358499700900417 0 1 0 0
-1 43.148148148148145 34.358499700900417 0 0.50000000000000078 -0.86602540378443815 0
-1 43.333333333333336 34.037749551350622 0 0.50000000000000078 0.86602540378443815 0
-1 43.518518518518519 34.358499700900417 0 1 -7.1942451995710237e-16 0
-1 43.888888888888886 34.358499700900417 0 -0.49999999999999822 0.86602540378443971 0
-1 43.703703703703702 34.679249850450205 0 0.50000000000000067 0.86602540378443826 0
-1 43.888888888888893 35 0 1 0 0
-1 44.25925925925926 35 0 0.50000000000000111 -0.86602540378443804 0
-1 44.444444444444443 34.679249850450205 0 0.49999999999999895 0.86602540378443926 0
-1 44.629629629629626 35 0 1 0 0
-1 45 35 0 0.50000000000000056 -0.86602540378443837 0
-1 45.185185185185183 34.679249850450205 0 -0.49999999999999606 -0.86602540378444093 0
-1 45 34.358499700900417 0 1 3.5971225997855222e-16 0
-1 45.370370370370374 34.358499700900417 0 0.50000000000000067 -0.86602540378443826 0
-1 45.555555555555557 34.037749551350622 0 -0.50000000000000044 -0.86602540378443837 0
-1 45.370370370370374 33.716999401800834 0 -1 7.1942451995710444e-16 0
-1 45 33.716999401800834 0 0.49999999999999567 -0.86602540378444115 0
-1 45.185185185185183 33.396249252251039 0 -0.50000000000000067 -0.86602540378443826 0
-1 45 33.075499102701244 0 1 0 0
-1 45.370370370370374 33.075499102701244 0 0.5 -0.8660254037844386 0
-1 45.555555555555557 32.754748953151456 0 0.49999999999999539 0.86602540378444137 0
-1 45.74074074074074 33.075499102701251 0 1 0 0
-1 46.111111111111114 33.075499102701251 0 0.50000000000000067 -0.86602540378443826 0
-1 46.296296296296298 32.754748953151456 0 -0.50000000000000033 -0.86602540378443849 0
-1 46.111111111111114 32.433998803601661 0 1 0 0
-1 46.481481481481481 32.433998803601661 0 0.50000000000000067 -0.86602540378443826 0
-1 46.666666666666664 32.113248654051873 0 -0.50000000000000067 -0.86602540378443826 0
-1 46.481481481481481 31.792498504502078 0 -1 0 0
-1 46.111111111111114 31.792498504502078 0 0.50000000000000067 -0.86602540378443826 0
-1 46.296296296296298 31.471748354952286 0 -0.50000000000000067 -0.86602540378443826 0
-1 46.111111111111114 31.150998205402495 0 -1 0 0
-1 45.74074074074074 31.150998205402495 0 -0.49999999999999567 0.86602540378444115 0
-1 45.555555555555557 31.471748354952286 0 -0.5 -0.8660254037844386 0
-1 45.370370370370374 31.150998205402495 0 -1 0 0
-1 45 31.150998205402495 0 0.50000000000000067 -0.86602540378443826 0
-1 45.185185185185183 30.830248055852703 0 -0.49999999999999628 -0.86602540378444082 0
-1 45 30.509497906302911 0 1 0 0
-1 45.370370370370374 30.509497906302911 0 0.50000000000000067 -0.86602540378443826 0
-1 45.555555555555557 30.18874775675312 0 -0.5 -0.8660254037844386 0
-1 45.370370370370374 29.867997607203325 0 -1 2.8776980798284178e-15 0
-1 45 29.867997607203328 0 0.49999999999999567 -0.86602540378444115 0
-1 45.185185185185183 29.547247457653533 0 -0.5 -0.8660254037844386 0
-1 45 29.226497308103742 0 1 0 0
-1 45.370370370370374 29.226497308103742 0 0.5 -0.8660254037844386 0
-1 45.555555555555557 28.90574715855395 0 0.49999999999999567 0.86602540378444115 0
-1 45.74074074074074 29.226497308103742 0 1 0 0
-1 46.111111111111114 29.226497308103742 0 0.50000000000000122 -0.86602540378443793 0
-1 46.296296296296298 28.90574715855395 0 -0.5 -0.8660254037844386 0
-1 46.111111111111114 28.584997009004159 0 1 0 0
-1 46.481481481481481 28.584997009004159 0 0.50000000000000122 -0.86602540378443793 0
-1 46.666666666666664 28.264246859454367 0 0.50000000000000122 0.86602540378443793 0
-1 46.851851851851848 28.584997009004159 0 1 0 0
-1 47.222222222222221 28.584997009004159 0 -0.49999999999999567 0.86602540378444115 0
-1 47.037037037037038 28.90574715855395 0 0.50000000000000122 0.86602540378443793 0
-1 47.222222222222221 29.226497308103742 0 1 0 0
-1 47.592592592592595 29.226497308103742 0 0.5 -0.8660254037844386 0
-1 47.777777777777779 28.90574715855395 0 0.49999999999999567 0.86602540378444115 0
-1 47.962962962962962 29.226497308103742 0 1 0 0
-1 48.333333333333336 29.226497308103742 0 0.5 -0.8660254037844386 0
-1 48.518518518518519 28.90574715855395 0 -0.5 -0.8660254037844386 0
-1 48.333333333333336 28.584997009004155 0 1 2.8776980798284012e-15 0
-1 48.703703703703702 28.584997009004159 0 0.5 -0.8660254037844386 0
-1 48.888888888888886 28.264246859454364 0 -0.5 -0.8660254037844386 0
-1 48.703703703703702 27.943496709904572 0 -1 2.8776980798284012e-15 0
-1 48.333333333333336 27.943496709904572 0 0.5 -0.8660254037844386 0
-1 48.518518518518519 27.622746560354781 0 -0.5 -0.8660254037844386 0
-1 48.333333333333336 27.301996410804989 0 1 0 0
-1 48.703703703703702 27.301996410804989 0 0.49999999999999567 -0.86602540378444115 0
-1 48.888888888888886 26.981246261255198 0 0.49999999999999872 0.86602540378443937 0
-1 49.074074074074069 27.301996410804989 0 1 0 0
-1 49.444444444444443 27.301996410804989 0 0.5 -0.8660254037844386 0
-1 49.629629629629626 26.981246261255198 0 -0.49999999999999567 -0.86602540378444115 0
-1 49.444444444444443 26.660496111705406 0 1 2.8776980798284178e-15 0
-1 49.814814814814817 26.660496111705406 0 0.5 -0.8660254037844386 0
-1 50 26.339745962155614 0 0.5 0.8660254037844386 0
-1 50.185185185185183 26.660496111705406 0 1 -2.8776980798284178e-15 0
-1 50.555555555555557 26.660496111705406 0 -0.49999999999999567 0.86602540378444115 0
-1 50.370370370370374 26.981246261255198 0 0.5 0.8660254037844386 0
-1 50.555555555555557 27.301996410804989 0 1 0 0
-1 50.925925925925924 27.301996410804989 0 0.49999999999999872 -0.86602540378443937 0
-1 51.111111111111114 26.981246261255198 0 0.49999999999999567 0.86602540378444115 0
-1 51.296296296296298 27.301996410804989 0 1 0 0
-1 51.666666666666664 27.301996410804989 0 -0.5 0.8660254037844386 0
-1 51.481481481481481 27.622746560354781 0 0.5 0.8660254037844386 0
-1 51.666666666666664 27.943496709904572 0 -1 -2.8776980798284012e-15 0
-1 51.296296296296298 27.943496709904572 0 -0.5 0.8660254037844386 0
-1 51.111111111111107 28.264246859454364 0 0.5 0.8660254037844386 0
-1 51.296296296296298 28.584997009004159 0 1 -2.8776980798284012e-15 0
-1 51.666666666666664 28.584997009004155 0 -0.5 0.8660254037844386 0
-1 51.481481481481481 28.90574715855395 0 0.5 0.8660254037844386 0
-1 51.666666666666664 29.226497308103742 0 1 0 0
-1 52.037037037037038 29.226497308103742 0 0.49999999999999567 -0.86602540378444115 0
-1 52.222222222222221 28.90574715855395 0 0.5 0.8660254037844386 0
-1 52.407407407407405 29.226497308103742 0 1 0 0
-1 52.777777777777779 29.226497308103742 0 0.50000000000000122 -0.86602540378443793 0
-1 52.962962962962962 28.90574715855395 0 -0.49999999999999567 -0.86602540378444115 0
-1 52.777777777777779 28.584997009004159 0 1 0 0
-1 53.148148148148145 28.584997009004159 0 0.50000000000000122 -0.86602540378443793 0
-1 53.333333333333336 28.264246859454367 0 0.50000000000000122 0.86602540378443793 0
-1 53.518518518518519 28.584997009004159 0 1 0 0
-1 53.888888888888886 28.584997009004159 0 -0.49999999999999567 0.86602540378444115 0
-1 53.703703703703702 28.90574715855395 0 0.50000000000000122 0.86602540378443793 0
-1 53.888888888888893 29.226497308103742 0 1 0 0
-1 54.25925925925926 29.226497308103742 0 0.50000000000000677 -0.86602540378443471 0
-1 54.444444444444443 28.90574715855395 0 0.49999999999999817 0.86602540378443971 0
-1 54.629629629629626 29.226497308103742 0 1 0 0
-1 55 29.226497308103742 0 -0.49999999999999567 0.86602540378444115 0
-1 54.814814814814817 29.547247457653533 0 0.49999999999999695 0.86602540378444037 0
-1 55 29.867997607203325 0 -1 0 0
-1 54.629629629629626 29.867997607203325 0 -0.49999999999999567 0.86602540378444115 0
-1 54.444444444444443 30.18874775675312 0 0.49999999999999628 0.86602540378444082 0
-1 54.629629629629626 30.509497906302911 0 1 1.4388490399142006e-15 0
-1 55 30.509497906302911 0 -0.49999999999999756 0.86602540378444004 0
-1 54.814814814814817 30.830248055852703 0 0.49999999999999628 0.86602540378444082 0
-1 55 31.150998205402495 0 -1 0 0
-1 54.629629629629626 31.150998205402495 0 -0.49999999999999567 0.86602540378444115 0
-1 54.444444444444443 31.471748354952286 0 -0.50000000000000488 -0.86602540378443582 0
-1 54.25925925925926 31.150998205402495 0 -1 0 0
-1 53.888888888888893 31.150998205402495 0 -0.50000000000000067 0.86602540378443826 0
-1 53.703703703703702 31.471748354952286 0 0.49999999999999628 0.86602540378444082 0
-1 53.888888888888886 31.792498504502078 0 -1 0 0
-1 53.518518518518519 31.792498504502078 0 -0.50000000000000067 0.86602540378443826 0
-1 53.333333333333336 32.113248654051873 0 0.50000000000000067 0.86602540378443826 0
-1 53.518518518518519 32.433998803601661 0 1 0 0
-1 53.888888888888886 32.433998803601661 0 -0.499999999999996 0.86602540378444093 0
-1 53.703703703703702 32.754748953151456 0 0.50000000000000067 0.86602540378443826 0
-1 53.888888888888893 33.075499102701251 0 1 0 0
-1 54.25925925925926 33.075499102701251 0 0.50000000000000622 -0.86602540378443504 0
-1 54.444444444444443 32.754748953151456 0 0.49999999999999784 0.86602540378443993 0
-1 54.629629629629626 33.075499102701244 0 1 0 0
-1 55 33.075499102701244 0 -0.49999999999999628 0.86602540378444082 0
-1 54.814814814814817 33.396249252251039 0 0.49999999999999695 0.86602540378444037 0
-1 55 33.716999401800834 0 -1 2.1582735598713009e-15 0
-1 54.629629629629626 33.716999401800834 0 -0.49999999999999617 0.86602540378444082 0
-1 54.444444444444443 34.037749551350622 0 0.49999999999999628 0.86602540378444082 0
-1 54.629629629629626 34.358499700900417 0 1 2.1582735598713009e-15 0
-1 55 34.358499700900417 0 -0.49999999999999717 0.86602540378444026 0
-1 54.814814814814817 34.679249850450205 0 0.49999999999999623 0.86602540378444082 0
-1 55 35 0 1 0 0
-1 55.370370370370374 35 0 0.50000000000000433 -0.86602540378443615 0
-1 55.555555555555557 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0
-1 55.74074074074074 35 0 1 0 0
-1 56.111111111111114 35 0 0.49999999999999567 -0.86602540378444115 0
-1 56.296296296296298 34.679249850450205 0 -0.49999999999999678 -0.86602540378444048 0
-1 56.111111111111114 34.358499700900417 0 1 -2.5179858198498511e-15 0
-1 56.481481481481481 34.358499700900417 0 0.49999999999999567 -0.86602540378444115 0
-1 56.666666666666664 34.037749551350622 0 0.49999999999999567 0.86602540378444115 0
-1 56.851851851851848 34.358499700900417 0 1 2.5179858198498511e-15 0
-1 57.222222222222221 34.358499700900417 0 -0.49999999999999678 0.86602540378444048 0
-1 57.037037037037038 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0
-1 57.222222222222221 35 0 1 0 0
-1 57.592592592592595 35 0 0.49999999999999567 -0.86602540378444115 0
-1 57.777777777777779 34.679249850450205 0 0.50000000000000433 0.86602540378443615 0
-1 57.962962962962962 35 0 1 0 0
-1 58.333333333333336 35 0 0.49999999999999617 -0.86602540378444082 0
-1 58.518518518518519 34.679249850450205 0 -0.49999999999999706 -0.86602540378444037 0
-1 58.333333333333336 34.358499700900417 0 1 -2.1582735598713009e-15 0
-1 58.703703703703702 34.358499700900417 0 0.49999999999999617 -0.86602540378444082 0
-1 58.888888888888886 34.037749551350622 0 -0.49999999999999617 -0.86602540378444082 0
-1 58.703703703703702 33.716999401800834 0 -1 -4.3165471197426515e-15 0
-1 58.333333333333336 33.716999401800827 0 0.49999999999999817 -0.86602540378443971 0
-1 58.518518518518519 33.396249252251039 0 -0.49999999999999628 -0.86602540378444082 0
-1 58.333333333333336 33.075499102701244 0 1 0 0
-1 58.703703703703709 33.075499102701244 0 0.49999999999999567 -0.86602540378444115 0
-1 58.888888888888893 32.754748953151456 0 0.499999999999996 0.86602540378444093 0
-1 59.074074074074076 33.075499102701244 0 1 0 0
-1 59.44444444444445 33.075499102701244 0 0.49999999999999628 -0.86602540378444082 0
-1 59.629629629629633 32.754748953151456 0 -0.49999999999999722 -0.86602540378444026 0
-1 59.44444444444445 32.433998803601661 0 1 -2.8776980798284012e-15 0
-1 59.814814814814817 32.433998803601661 0 0.49999999999999628 -0.86602540378444082 0
-1 60 32.113248654051873 0 0.49999999999999628 0.86602540378444082 0
-1 60.185185185185183 32.433998803601661 0 1 2.8776980798284012e-15 0
-1 60.555555555555557 32.433998803601661 0 -0.49999999999999722 0.86602540378444026 0
-1 60.370370370370374 32.754748953151456 0 0.49999999999999628 0.86602540378444082 0
-1 60.555555555555557 33.075499102701244 0 1 1.4388490399142006e-15 0
-1 60.925925925925924 33.075499102701251 0 0.499999999999996 -0.86602540378444093 0
-1 61.111111111111107 32.754748953151456 0 0.49999999999999567 0.86602540378444115 0
-1 61.296296296296291 33.075499102701251 0 1 1.4388490399142006e-15 0
-1 61.666666666666664 33.075499102701251 0 -0.49999999999999661 0.86602540378444059 0
-1 61.481481481481481 33.396249252251039 0 0.49999999999999722 0.86602540378444026 0
-1 61.666666666666664 33.716999401800834 0 -1 1.4388490399142006e-15 0
-1 61.296296296296291 33.716999401800834 0 -0.49999999999999678 0.86602540378444048 0
-1 61.111111111111107 34.037749551350622 0 0.49999999999999617 0.86602540378444082 0
-1 61.296296296296291 34.358499700900417 0 1 2.1582735598713009e-15 0
-1 61.666666666666664 34.358499700900417 0 -0.49999999999999706 0.86602540378444037 0
-1 61.481481481481481 34.679249850450205 0 0.49999999999999617 0.86602540378444082 0
-1 61.666666666666664 35 0 1 0 0
-1 62.037037037037038 35 0 0.49999999999999567 -0.86602540378444115 0
-1 62.222222222222221 34.679249850450205 0 0.50000000000000433 0.86602540378443615 0
-1 62.407407407407405 35 0 1 0 0
-1 62.777777777777779 35 0 0.49999999999999567 -0.86602540378444115 0
-1 62.962962962962962 34.679249850450205 0 -0.49999999999999678 -0.86602540378444048 0
-1 62.777777777777779 34.358499700900417 0 1 -2.5179858198498511e-15 0
-1 63.148148148148145 34.358499700900417 0 0.49999999999999567 -0.86602540378444115 0
-1 63.333333333333329 34.037749551350622 0 0.49999999999999567 0.86602540378444115 0
-1 63.518518518518512 34.358499700900417 0 1 2.5179858198498511e-15 0
-1 63.888888888888886 34.358499700900417 0 -0.49999999999999678 0.86602540378444048 0
-1 63.703703703703702 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0
-1 63.888888888888886 35 0 1 0 0
-1 64.259259259259252 35 0 0.50000000000000433 -0.86602540378443615 0
-1 64.444444444444443 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0
-1 64.629629629629633 35 0 1 0 0
-1 65 35 0 -0.49999999999999628 0.86602540378444082 0
-1 64.81481481481481 35.320750149549795 0 0.49999999999999706 0.86602540378444037 0
-1 65 35.641500299099583 0 -1 1.7985612998927508e-15 0
-1 64.629629629629633 35.641500299099583 0 -0.49999999999999628 0.86602540378444082 0
-1 64.444444444444443 35.962250448649378 0 0.49999999999999628 0.86602540378444082 0
-1 64.629629629629633 36.283000598199166 0 1 7.194245199571003e-16 0
-1 65 36.283000598199166 0 -0.49999999999999695 0.86602540378444037 0
-1 64.81481481481481 36.603750747748961 0 0.49999999999999628 0.86602540378444082 0
-1 65 36.924500897298749 0 -1 0 0
-1 64.629629629629633 36.924500897298749 0 -0.49999999999999539 0.86602540378444137 0
-1 64.444444444444443 37.245251046848544 0 -0.50000000000000433 -0.86602540378443615 0
-1 64.259259259259252 36.924500897298749 0 -1 0 0
-1 63.888888888888886 36.924500897298749 0 -0.49999999999999628 0.86602540378444082 0
-1 63.703703703703702 37.245251046848544 0 0.49999999999999695 0.86602540378444037 0
-1 63.888888888888886 37.566001196398339 0 -1 1.4388490399142006e-15 0
-1 63.518518518518512 37.566001196398339 0 -0.49999999999999628 0.86602540378444082 0
-1 63.333333333333329 37.886751345948127 0 0.49999999999999628 0.86602540378444082 0
-1 63.518518518518512 38.207501495497922 0 1 2.8776980798284012e-15 0
-1 63.888888888888886 38.207501495497922 0 -0.49999999999999695 0.86602540378444037 0
-1 63.703703703703702 38.52825164504771 0 0.49999999999999628 0.86602540378444082 0
-1 63.888888888888886 38.849001794597505 0 1 0 0
-1 64.259259259259252 38.849001794597505 0 0.50000000000000488 -0.86602540378443582 0
-1 64.444444444444443 38.52825164504771 0 0.49999999999999567 0.86602540378444115 0
-1 64.629629629629633 38.849001794597505 0 1 0 0
-1 65 38.849001794597505 0 -0.50000000000000488 0.86602540378443582 0
-1 64.81481481481481 39.169751944147301 0 0.50000000000000366 0.86602540378443649 0
-1 65 39.490502093697089 0 -1 -4.3165471197426018e-15 0
-1 64.629629629629633 39.490502093697089 0 -0.50000000000000488 0.86602540378443582 0
-1 64.444444444444443 39.811252243246884 0 0.49999999999999567 0.86602540378444115 0
-1 64.629629629629619 40.132002392796672 0 1 0 0
-1 65 40.132002392796672 0 -0.49999999999999695 0.86602540378444037 0
-1 64.81481481481481 40.452752542346467 0 0.49999999999999567 0.86602540378444115 0
-1 65 40.773502691896255 0 -1 0 0
-1 64.629629629629619 40.773502691896255 0 -0.49999999999999567 0.86602540378444115 0
-1 64.444444444444443 41.09425284144605 0 -0.49999999999999567 -0.86602540378444115 0
-1 64.259259259259252 40.773502691896255 0 -1 0 0
-1 63.888888888888886 40.773502691896255 0 -0.50000000000000555 0.86602540378443549 0
-1 63.703703703703695 41.09425284144605 0 0.49999999999999567 0.86602540378444115 0
-1 63.888888888888879 41.415002990995845 0 -1 -2.8776980798284343e-15 0
-1 63.518518518518512 41.415002990995838 0 -0.50000000000000555 0.86602540378443549 0
-1 63.333333333333329 41.735753140545633 0 -0.49999999999999695 -0.86602540378444037 0
-1 63.148148148148145 41.415002990995838 0 -1 -5.7553961596568024e-15 0
-1 62.777777777777771 41.415002990995838 0 0.49999999999999817 -0.86602540378443971 0
-1 62.962962962962955 41.09425284144605 0 -0.49999999999999695 -0.86602540378444037 0
-1 62.777777777777771 40.773502691896255 0 -1 0 0
-1 62.407407407407405 40.773502691896255 0 -0.49999999999999567 0.86602540378444115 0
-1 62.222222222222221 41.09425284144605 0 -0.49999999999999567 -0.86602540378444115 0
-1 62.037037037037038 40.773502691896255 0 -1 0 0
-1 61.666666666666664 40.773502691896255 0 -0.49999999999999567 0.86602540378444115 0
-1 61.481481481481481 41.09425284144605 0 0.49999999999999695 0.86602540378444037 0
-1 61.666666666666664 41.415002990995838 0 -1 0 0
-1 61.296296296296291 41.415002990995838 0 -0.49999999999999567 0.86602540378444115 0
-1 61.111111111111107 41.735753140545633 0 0.49999999999999695 0.86602540378444037 0
-1 61.296296296296291 42.056503290095428 0 1 2.8776980798284012e-15 0
-1 61.666666666666664 42.056503290095428 0 -0.49999999999999695 0.86602540378444037 0
-1 61.481481481481481 42.377253439645216 0 0.49999999999999695 0.86602540378444037 0
-1 61.666666666666664 42.698003589195011 0 -1 0 0
-1 61.296296296296291 42.698003589195011 0 -0.49999999999999567 0.86602540378444115 0
-1 61.111111111111107 43.018753738744799 0 -0.50000000000000433 -0.86602540378443615 0
-1 60.925925925925924 42.698003589195011 0 -1 0 0
-1 60.55555555555555 42.698003589195011 0 -0.49999999999999567 0.86602540378444115 0
-1 60.370370370370367 43.018753738744799 0 0.49999999999999695 0.86602540378444037 0
-1 60.55555555555555 43.339503888294594 0 -1 0 0
-1 60.185185185185183 43.339503888294594 0 -0.49999999999999567 0.86602540378444115 0
-1 60 43.660254037844389 0 0.49999999999999567 0.86602540378444115 0
-1 60.185185185185183 43.981004187394177 0 1 0 0
-1 60.55555555555555 43.981004187394177 0 -0.49999999999999695 0.86602540378444037 0
-1 60.370370370370367 44.301754336943972 0 0.49999999999999567 0.86602540378444115 0
-1 60.55555555555555 44.62250448649376 0 1 0 0
-1 60.925925925925924 44.62250448649376 0 0.50000000000000433 -0.86602540378443615 0
-1 61.111111111111107 44.301754336943972 0 0.49999999999999567 0.86602540378444115 0
-1 61.296296296296291 44.62250448649376 0 1 0 0
-1 61.666666666666664 44.62250448649376 0 -0.49999999999999695 0.86602540378444037 0
-1 61.481481481481481 44.943254636043555 0 0.49999999999999695 0.86602540378444037 0
-1 61.666666666666664 45.264004785593343 0 -1 0 0
-1 61.296296296296291 45.264004785593343 0 -0.49999999999999695 0.86602540378444037 0
-1 61.111111111111107 45.584754935143138 0 0.49999999999999695 0.86602540378444037 0
-1 61.296296296296291 45.905505084692926 0 1 5.7553961596568024e-15 0
-1 61.666666666666664 45.905505084692933 0 -0.49999999999999695 0.86602540378444037 0
-1 61.481481481481481 46.226255234242721 0 0.49999999999999695 0.86602540378444037 0
-1 61.666666666666664 46.547005383792516 0 1 0 0
-1 62.037037037037038 46.547005383792516 0 0.49999999999999695 -0.86602540378444037 0
-1 62.222222222222221 46.226255234242721 0 0.49999999999999695 0.86602540378444037 0
-1 62.407407407407405 46.547005383792516 0 1 0 0
-1 62.777777777777771 46.547005383792516 0 0.49999999999999695 -0.86602540378444037 0
-1 62.962962962962955 46.226255234242721 0 -0.49999999999999944 -0.86602540378443893 0
-1 62.777777777777771 45.905505084692933 0 1 -5.7553961596568024e-15 0
-1 63.148148148148145 45.905505084692933 0 0.49999999999999695 -0.86602540378444037 0
-1 63.333333333333329 45.584754935143138 0 0.50000000000000555 0.86602540378443549 0
-1 63.518518518518512 45.905505084692933 0 1 0 0
-1 63.888888888888879 45.905505084692933 0 -0.49999999999999695 0.86602540378444037 0
-1 63.703703703703695 46.226255234242721 0 0.50000000000000555 0.86602540378443549 0
-1 63.888888888888886 46.547005383792516 0 1 0 0
-1 64.259259259259252 46.547005383792516 0 0.49999999999999695 -0.86602540378444037 0
-1 64.444444444444443 46.226255234242721 0 0.49999999999999695 0.86602540378444037 0
-1 64.629629629629619 46.547005383792516 0 1 0 0
-1 65 46.547005383792516 0 -0.49999999999999695 0.86602540378444037 0
-1 64.81481481481481 46.867755533342304 0 0.49999999999999695 0.86602540378444037 0
-1 65 47.188505682892099 0 -1 5.7553961596568024e-15 0
-1 64.629629629629619 47.188505682892099 0 -0.49999999999999695 0.86602540378444037 0
-1 64.444444444444443 47.509255832441887 0 0.50000000000000555 0.86602540378443549 0
-1 64.629629629629633 47.830005981991683 0 1 -5.7553961596568024e-15 0
-1 65 47.830005981991683 0 -0.50000000000000311 0.86602540378443693 0
-1 64.81481481481481 48.15075613154147 0 0.50000000000000555 0.86602540378443549 0
-1 65 48.471506281091266 0 -1 0 0
-1 64.629629629629633 48.471506281091266 0 -0.49999999999999445 0.86602540378444182 0
-1 64.444444444444443 48.792256430641061 0 -0.50000000000000555 -0.86602540378443549 0
-1 64.259259259259252 48.471506281091266 0 -1 0 0
-1 63.888888888888886 48.471506281091266 0 -0.49999999999999695 0.86602540378444037 0
-1 63.703703703703702 48.792256430641061 0 0.49999999999999695 0.86602540378444037 0
-1 63.888888888888886 49.113006580190849 0 -1 5.7553961596568024e-15 0
-1 63.518518518518512 49.113006580190856 0 -0.49999999999999695 0.86602540378444037 0
-1 63.333333333333329 49.433756729740644 0 0.49999999999999695 0.86602540378444037 0
-1 63.518518518518512 49.754506879290439 0 1 5.7553961596568024e-15 0
-1 63.888888888888886 49.754506879290439 0 -0.49999999999999695 0.86602540378444037 0
-1 63.703703703703702 50.075257028840227 0 0.49999999999999695 0.86602540378444037 0
-1 63.888888888888886 50.396007178390022 0 1 0 0
-1 64.259259259259252 50.396007178390022 0 0.50000000000000056 -0.86602540378443826 0
-1 64.444444444444443 50.075257028840227 0 0.49999999999999445 0.86602540378444182 0
-1 64.629629629629633 50.396007178390022 0 1 0 0
-1 65 50.396007178390022 0 -0.49999999999999695 0.86602540378444037 0
-1 64.81481481481481 50.71675732793981 0 0.49999999999999695 0.86602540378444037 0
-1 65 51.037507477489605 0 -1 5.7553961596568024e-15 0
-1 64.629629629629633 51.037507477489605 0 -0.49999999999999695 0.86602540378444037 0
-1 64.444444444444443 51.358257627039393 0 0.49999999999999695 0.86602540378444037 0
-1 64.629629629629633 51.679007776589188 0 1 5.7553961596568024e-15 0
-1 65 51.679007776589188 0 -0.49999999999999695 0.86602540378444037 0
-1 64.81481481481481 51.999757926138983 0 0.49999999999999695 0.86602540378444037 0
-1 65 52.320508075688771 0 -1 0 0
-1 64.629629629629633 52.320508075688771 0 -0.49999999999999445 0.86602540378444182 0
-1 64.444444444444443 52.641258225238566 0 -0.50000000000000311 -0.86602540378443693 0
-1 64.259259259259252 52.320508075688771 0 -1 0 0
-1 63.888888888888886 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0
-1 63.703703703703702 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0
-1 63.888888888888886 52.962008374788354 0 -1 5.7553961596568024e-15 0
-1 63.518518518518512 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0
-1 63.333333333333329 53.282758524338149 0 -0.49999999999999695 -0.86602540378444037 0
-1 63.148148148148145 52.962008374788354 0 -1 -5.7553961596568024e-15 0
-1 62.777777777777779 52.962008374788354 0 0.49999999999999695 -0.86602540378444037 0
-1 62.962962962962962 52.641258225238566 0 -0.49999999999999695 -0.86602540378444037 0
-1 62.777777777777779 52.320508075688771 0 -1 0 0
-1 62.407407407407405 52.320508075688771 0 -0.50000000000000311 0.86602540378443693 0
-1 62.222222222222221 52.641258225238566 0 -0.49999999999999445 -0.86602540378444182 0
-1 62.037037037037038 52.320508075688771 0 -1 0 0
-1 61.666666666666664 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0
-1 61.481481481481481 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0
-1 61.666666666666664 52.962008374788354 0 -1 5.7553961596568024e-15 0
-1 61.296296296296291 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0
-1 61.111111111111107 53.282758524338149 0 0.50000000000000555 0.86602540378443549 0
-1 61.296296296296298 53.603508673887937 0 1 0 0
-1 61.666666666666664 53.603508673887937 0 -0.49999999999999445 0.86602540378444182 0
-1 61.481481481481481 53.924258823437732 0 0.50000000000000555 0.86602540378443549 0
-1 61.666666666666671 54.245008972987527 0 -1 0 0
-1 61.296296296296298 54.245008972987527 0 -0.50000000000000311 0.86602540378443693 0
-1 61.111111111111107 54.565759122537315 0 -0.49999999999999445 -0.86602540378444182 0
-1 60.925925925925924 54.245008972987527 0 -1 0 0
-1 60.555555555555557 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0
-1 60.370370370370374 54.565759122537315 0 0.49999999999999944 0.86602540378443893 0
-1 60.555555555555557 54.88650927208711 0 -1 0 0
-1 60.185185185185183 54.88650927208711 0 -0.49999999999999445 0.86602540378444182 0
-1 60 55.207259421636898 0 -0.49999999999999445 -0.86602540378444182 0
-1 59.814814814814817 54.88650927208711 0 -1 0 0
-1 59.44444444444445 54.88650927208711 0 0.49999999999999944 -0.86602540378443893 0
-1 59.629629629629633 54.565759122537315 0 -0.49999999999999445 -0.86602540378444182 0
-1 59.44444444444445 54.245008972987527 0 -1 0 0
-1 59.074074074074076 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0
-1 58.888888888888893 54.565759122537315 0 -0.49999999999999445 -0.86602540378444182 0
-1 58.703703703703709 54.245008972987527 0 -1 0 0
-1 58.333333333333336 54.245008972987527 0 0.49999999999999695 -0.86602540378444037 0
-1 58.518518518518519 53.924258823437732 0 -0.49999999999999695 -0.86602540378444037 0
-1 58.333333333333336 53.603508673887944 0 1 -5.7553961596568687e-15 0
-1 58.703703703703702 53.603508673887937 0 0.49999999999999695 -0.86602540378444037 0
-1 58.888888888888886 53.282758524338149 0 -0.49999999999999695 -0.86602540378444037 0
-1 58.703703703703702 52.962008374788354 0 -1 -5.7553961596568024e-15 0
-1 58.333333333333336 52.962008374788354 0 0.49999999999999695 -0.86602540378444037 0
-1 58.518518518518519 52.641258225238566 0 -0.49999999999999695 -0.86602540378444037 0
-1 58.333333333333336 52.320508075688771 0 -1 0 0
-1 57.962962962962962 52.320508075688771 0 -0.50000000000000311 0.86602540378443693 0
-1 57.777777777777779 52.641258225238566 0 -0.49999999999999445 -0.86602540378444182 0
-1 57.592592592592595 52.320508075688771 0 -1 0 0
-1 57.222222222222221 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0
-1 57.037037037037038 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0
-1 57.222222222222221 52.962008374788354 0 -1 5.7553961596568024e-15 0
-1 56.851851851851848 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0
-1 56.666666666666664 53.282758524338149 0 -0.49999999999999695 -0.86602540378444037 0
-1 56.481481481481481 52.962008374788354 0 -1 -5.7553961596568024e-15 0
-1 56.111111111111114 52.962008374788354 0 0.49999999999999695 -0.86602540378444037 0
-1 56.296296296296298 52.641258225238566 0 -0.49999999999999695 -0.86602540378444037 0
-1 56.111111111111114 52.320508075688771 0 -1 0 0
-1 55.74074074074074 52.320508075688771 0 -0.49999999999999445 0.86602540378444182 0
-1 55.555555555555557 52.641258225238566 0 -0.50000000000000311 -0.86602540378443693 0
-1 55.370370370370374 52.320508075688771 0 -1 0 0
-1 55 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0
-1 54.814814814814817 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0
-1 55 52.962008374788354 0 -1 5.7553961596568024e-15 0
-1 54.629629629629626 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0
-1 54.444444444444443 53.282758524338149 0 0.49999999999999695 0.86602540378444037 0
-1 54.629629629629626 53.603508673887937 0 1 5.7553961596568024e-15 0
-1 55 53.603508673887944 0 -0.49999999999999695 0.86602540378444037 0
-1 54.814814814814817 53.924258823437732 0 0.49999999999999695 0.86602540378444037 0
-1 55 54.245008972987527 0 -1 0 0
-1 54.629629629629626 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0
-1 54.444444444444443 54.565759122537315 0 -0.50000000000000311 -0.86602540378443693 0
-1 54.25925925925926 54.245008972987527 0 -1 0 0
-1 53.888888888888893 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0
-1 53.703703703703702 54.565759122537315 0 0.49999999999999872 0.86602540378443937 0
-1 53.888888888888893 54.88650927208711 0 -1 -1.1510792319313605e-14 0
-1 53.518518518518519 54.88650927208711 0 -0.49999999999999872 0.86602540378443937 0
-1 53.333333333333336 55.207259421636898 0 0.49999999999999872 0.86602540378443937 0
-1 53.518518518518519 55.528009571186693 0 1 -1.1510792319313605e-14 0
-1 53.888888888888893 55.528009571186693 0 -0.49999999999999872 0.86602540378443937 0
-1 53.703703703703702 55.848759720736481 0 0.49999999999999872 0.86602540378443937 0
-1 53.888888888888893 56.169509870286277 0 1 0 0
-1 54.25925925925926 56.169509870286277 0 0.5000000000000081 -0.86602540378443404 0
-1 54.444444444444443 55.848759720736489 0 0.49999999999999944 0.86602540378443893 0
-1 54.629629629629626 56.169509870286277 0 1 0 0
-1 55 56.169509870286277 0 -0.49999999999999445 0.86602540378444182 0
-1 54.814814814814817 56.490260019836072 0 0.49999999999999944 0.86602540378443893 0
-1 55 56.81101016938586 0 -1 0 0
-1 54.629629629629626 56.81101016938586 0 -0.49999999999999445 0.86602540378444182 0
-1 54.444444444444443 57.131760318935655 0 0.49999999999999445 0.86602540378444182 0
-1 54.629629629629626 57.45251046848545 0 1 0 0
-1 55 57.45251046848545 0 -0.49999999999999944 0.86602540378443893 0
-1 54.814814814814817 57.773260618035238 0 0.49999999999999445 0.86602540378444182 0
-1 55 58.094010767585033 0 -1 0 0
-1 54.629629629629626 58.094010767585033 0 -0.49999999999999445 0.86602540378444182 0
-1 54.444444444444443 58.414760917134828 0 -0.50000000000000311 -0.86602540378443693 0
-1 54.25925925925926 58.094010767585033 0 -1 0 0
-1 53.888888888888893 58.094010767585033 0 -0.49999999999999872 0.86602540378443937 0
-1 53.703703703703702 58.414760917134828 0 0.49999999999999872 0.86602540378443937 0
-1 53.888888888888893 58.735511066684616 0 -1 -1.1510792319313539e-14 0
-1 53.518518518518519 58.735511066684616 0 -0.49999999999999872 0.86602540378443937 0
-1 53.333333333333329 59.056261216234411 0 -0.49999999999999872 -0.86602540378443937 0
-1 53.148148148148145 58.735511066684616 0 -1 0 0
-1 52.777777777777779 58.735511066684616 0 0.50000000000000311 -0.86602540378443693 0
-1 52.962962962962962 58.414760917134821 0 -0.49999999999999872 -0.86602540378443937 0
-1 52.777777777777779 58.094010767585026 0 -1 0 0
-1 52.407407407407405 58.094010767585026 0 -0.49999999999999872 0.86602540378443937 0
-1 52.222222222222221 58.414760917134821 0 -0.49999999999999445 -0.86602540378444182 0
-1 52.037037037037038 58.094010767585026 0 -1 0 0
-1 51.666666666666664 58.094010767585026 0 -0.49999999999999872 0.86602540378443937 0
-1 51.481481481481481 58.414760917134821 0 0.5000000000000081 0.86602540378443404 0
-1 51.666666666666671 58.735511066684609 0 -1 0 0
-1 51.296296296296298 58.735511066684609 0 -0.49999999999999872 0.86602540378443937 0
-1 51.111111111111107 59.056261216234404 0 0.49999999999999872 0.86602540378443937 0
-1 51.296296296296298 59.377011365784199 0 1 0 0
-1 51.666666666666671 59.377011365784199 0 -0.5000000000000081 0.86602540378443404 0
-1 51.481481481481481 59.697761515333987 0 0.49999999999999872 0.86602540378443937 0
-1 51.666666666666664 60.018511664883782 0 -1 0 0
-1 51.296296296296298 60.018511664883782 0 -0.49999999999999445 0.86602540378444182 0
-1 51.111111111111114 60.339261814433577 0 -0.49999999999999872 -0.86602540378443937 0
-1 50.925925925925924 60.018511664883782 0 -1 0 0
-1 50.555555555555557 60.018511664883782 0 -0.49999999999999872 0.86602540378443937 0
-1 50.370370370370374 60.339261814433577 0 0.50000000000000377 0.86602540378443649 0
-1 50.555555555555557 60.660011963983365 0 -1 0 0
-1 50.185185185185183 60.660011963983365 0 -0.49999999999999872 0.86602540378443937 0
-1 50 60.98076211353316 0 -0.49999999999999872 -0.86602540378443937 0
-1 49.814814814814817 60.660011963983365 0 -1 0 0
-1 49.444444444444443 60.660011963983365 0 0.50000000000000377 -0.86602540378443649 0
-1 49.629629629629626 60.339261814433577 0 -0.49999999999999872 -0.86602540378443937 0
-1 49.444444444444443 60.018511664883782 0 -1 0 0
-1 49.074074074074069 60.018511664883782 0 -0.49999999999999872 0.86602540378443937 0
-1 48.888888888888886 60.339261814433577 0 -0.49999999999999445 -0.86602540378444182 0
-1 48.703703703703702 60.018511664883782 0 -1 0 0
-1 48.333333333333336 60.018511664883782 0 0.49999999999999872 -0.86602540378443937 0
-1 48.518518518518519 59.697761515333987 0 -0.5000000000000081 -0.86602540378443404 0
-1 48.333333333333329 59.377011365784199 0 1 0 0
-1 48.703703703703702 59.377011365784199 0 0.49999999999999872 -0.86602540378443937 0
-1 48.888888888888886 59.056261216234404 0 -0.49999999999999872 -0.86602540378443937 0
-1 48.703703703703702 58.735511066684609 0 -1 0 0
-1 48.333333333333329 58.735511066684609 0 0.5000000000000081 -0.86602540378443404 0
-1 48.518518518518519 58.414760917134821 0 -0.49999999999999872 -0.86602540378443937 0
-1 48.333333333333336 58.094010767585026 0 -1 0 0
-1 47.962962962962962 58.094010767585026 0 -0.49999999999999445 0.86602540378444182 0
-1 47.777777777777779 58.414760917134821 0 -0.49999999999999872 -0.86602540378443937 0
-1 47.592592592592595 58.094010767585026 0 -1 0 0
-1 47.222222222222221 58.094010767585026 0 -0.49999999999999872 0.86602540378443937 0
-1 47.037037037037038 58.414760917134821 0 0.50000000000000311 0.86602540378443693 0
-1 47.222222222222221 58.735511066684616 0 -1 0 0
-1 46.851851851851855 58.735511066684616 0 -0.49999999999999872 0.86602540378443937 0
-1 46.666666666666664 59.056261216234411 0 -0.49999999999999872 -0.86602540378443937 0
-1 46.481481481481481 58.735511066684616 0 -1 1.1510792319313539e-14 0
-1 46.111111111111107 58.735511066684616 0 0.50000000000000311 -0.86602540378443693 0
-1 46.296296296296298 58.414760917134828 0 -0.49999999999999872 -0.86602540378443937 0
-1 46.111111111111114 58.094010767585033 0 -1 0 0
-1 45.74074074074074 58.094010767585033 0 -0.49999999999999445 0.86602540378444182 0
-1 45.555555555555557 58.414760917134828 0 -0.49999999999999872 -0.86602540378443937 0
-1 45.370370370370374 58.094010767585033 0 -1 0 0
-1 45 58.094010767585033 0 0.49999999999999872 -0.86602540378443937 0
-1 45.185185185185183 57.773260618035238 0 -0.49999999999999872 -0.86602540378443937 0
-1 45 57.452510468485443 0 1 1.1510792319313605e-14 0
-1 45.370370370370374 57.45251046848545 0 0.49999999999999872 -0.86602540378443937 0
-1 45.555555555555557 57.131760318935655 0 -0.49999999999999872 -0.86602540378443937 0
-1 45.370370370370374 56.81101016938586 0 -1 1.1510792319313605e-14 0
-1 45 56.811010169385867 0 0.49999999999999872 -0.86602540378443937 0
-1 45.185185185185183 56.490260019836072 0 -0.49999999999999872 -0.86602540378443937 0
-1 45 56.169509870286277 0 1 0 0
-1 45.370370370370374 56.169509870286277 0 0.49999999999999872 -0.86602540378443937 0
-1 45.555555555555557 55.848759720736481 0 0.49999999999999445 0.86602540378444182 0
-1 45.74074074074074 56.169509870286277 0 1 0 0
-1 46.111111111111114 56.169509870286277 0 0.49999999999999872 -0.86602540378443937 0
-1 46.296296296296298 55.848759720736481 0 -0.50000000000000311 -0.86602540378443693 0
-1 46.111111111111107 55.528009571186693 0 1 1.1510792319313539e-14 0
-1 46.481481481481481 55.528009571186693 0 0.49999999999999872 -0.86602540378443937 0
-1 46.666666666666664 55.207259421636898 0 -0.49999999999999872 -0.86602540378443937 0
-1 46.481481481481481 54.88650927208711 0 -1 1.1510792319313539e-14 0
-1 46.111111111111107 54.88650927208711 0 0.50000000000000311 -0.86602540378443693 0
-1 46.296296296296298 54.565759122537315 0 -0.49999999999999872 -0.86602540378443937 0
-1 46.111111111111114 54.245008972987527 0 -1 0 0
-1 45.74074074074074 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0
-1 45.555555555555557 54.565759122537315 0 -0.49999999999999872 -0.86602540378443937 0
-1 45.370370370370374 54.245008972987527 0 -1 0 0
-1 45 54.245008972987527 0 0.50000000000000122 -0.86602540378443793 0
-1 45.185185185185183 53.924258823437732 0 -0.49999999999999445 -0.86602540378444182 0
-1 45 53.603508673887937 0 1 0 0
-1 45.370370370370374 53.603508673887937 0 0.50000000000000122 -0.86602540378443793 0
-1 45.555555555555557 53.282758524338149 0 -0.50000000000000122 -0.86602540378443793 0
-1 45.370370370370374 52.962008374788354 0 -1 0 0
-1 45 52.962008374788354 0 0.49999999999999445 -0.86602540378444182 0
-1 45.185185185185183 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0
-1 45 52.320508075688771 0 -1 0 0
-1 44.629629629629626 52.320508075688771 0 -0.49999999999999661 0.86602540378444059 0
-1 44.444444444444443 52.641258225238566 0 -0.49999999999999872 -0.86602540378443937 0
-1 44.25925925925926 52.320508075688771 0 -1 0 0
-1 43.888888888888893 52.320508075688771 0 -0.50000000000000122 0.86602540378443793 0
-1 43.703703703703702 52.641258225238566 0 0.49999999999999661 0.86602540378444059 0
-1 43.888888888888886 52.962008374788354 0 -1 0 0
-1 43.518518518518519 52.962008374788354 0 -0.50000000000000122 0.86602540378443793 0
-1 43.333333333333336 53.282758524338149 0 -0.50000000000000122 -0.86602540378443793 0
-1 43.148148148148145 52.962008374788354 0 -1 -5.7553961596568356e-15 0
-1 42.777777777777779 52.962008374788354 0 0.49999999999999911 -0.86602540378443915 0
-1 42.962962962962962 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0
-1 42.777777777777779 52.320508075688771 0 -1 0 0
-1 42.407407407407405 52.320508075688771 0 -0.50000000000000122 0.86602540378443793 0
-1 42.222222222222221 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0
-1 42.037037037037038 52.320508075688771 0 -1 0 0
-1 41.666666666666664 52.320508075688771 0 -0.50000000000000122 0.86602540378443793 0
-1 41.481481481481481 52.641258225238566 0 0.49999999999999661 0.86602540378444059 0
-1 41.666666666666664 52.962008374788354 0 -1 0 0
-1 41.296296296296298 52.962008374788354 0 -0.50000000000000122 0.86602540378443793 0
-1 41.111111111111114 53.282758524338149 0 0.50000000000000122 0.86602540378443793 0
-1 41.296296296296298 53.603508673887937 0 1 0 0
-1 41.666666666666664 53.603508673887937 0 -0.49999999999999661 0.86602540378444059 0
-1 41.481481481481481 53.924258823437732 0 0.50000000000000122 0.86602540378443793 0
-1 41.666666666666671 54.245008972987527 0 -1 0 0
-1 41.296296296296298 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0
-1 41.111111111111114 54.565759122537315 0 -0.49999999999999661 -0.86602540378444059 0
-1 40.925925925925931 54.245008972987527 0 -1 0 0
-1 40.555555555555557 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0
-1 40.370370370370374 54.565759122537315 0 0.50000000000000588 0.86602540378443527 0
-1 40.555555555555557 54.88650927208711 0 -1 0 0
-1 40.185185185185183 54.88650927208711 0 -0.49999999999999872 0.86602540378443937 0
-1 40 55.207259421636898 0 -0.49999999999999872 -0.86602540378443937 0
-1 39.814814814814817 54.88650927208711 0 -1 0 0
-1 39.444444444444443 54.88650927208711 0 0.50000000000000588 -0.86602540378443527 0
-1 39.629629629629633 54.565759122537315 0 -0.49999999999999872 -0.86602540378443937 0
-1 39.444444444444443 54.245008972987527 0 -1 0 0
-1 39.074074074074076 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0
-1 38.888888888888893 54.565759122537315 0 -0.49999999999999767 -0.86602540378444004 0
-1 38.703703703703702 54.245008972987527 0 -1 0 0
-1 38.333333333333336 54.245008972987527 0 0.50000000000000122 -0.86602540378443793 0
-1 38.518518518518519 53.924258823437732 0 -0.49999999999999767 -0.86602540378444004 0
-1 38.333333333333336 53.603508673887937 0 1 0 0
-1 38.703703703703702 53.603508673887937 0 0.50000000000000122 -0.86602540378443793 0
-1 38.888888888888893 53.282758524338149 0 -0.50000000000000122 -0.86602540378443793 0
-1 38.703703703703702 52.962008374788354 0 -1 0 0
-1 38.333333333333336 52.962008374788354 0 0.49999999999999767 -0.86602540378444004 0
-1 38.518518518518519 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0
-1 38.333333333333336 52.320508075688771 0 -1 0 0
-1 37.962962962962962 52.320508075688771 0 -0.50000000000000011 0.8660254037844386 0
-1 37.777777777777779 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0
-1 37.592592592592595 52.320508075688771 0 -1 0 0
-1 37.222222222222221 52.320508075688771 0 -0.50000000000000067 0.86602540378443826 0
-1 37.037037037037038 52.641258225238566 0 0.49999999999999711 0.86602540378444026 0
-1 37.222222222222221 52.962008374788354 0 -1 0 0
-1 36.851851851851855 52.962008374788354 0 -0.50000000000000067 0.86602540378443826 0
-1 36.666666666666664 53.282758524338149 0 -0.50000000000000067 -0.86602540378443826 0
-1 36.481481481481481 52.962008374788354 0 -1 -5.755396159656819e-15 0
-1 36.111111111111114 52.962008374788354 0 0.49999999999999961 -0.86602540378443882 0
-1 36.296296296296298 52.641258225238566 0 -0.50000000000000044 -0.86602540378443837 0
-1 36.111111111111114 52.320508075688771 0 -1 0 0
-1 35.74074074074074 52.320508075688771 0 -0.50000000000000056 0.86602540378443826 0
-1 35.555555555555557 52.641258225238566 0 -0.50000000000000067 -0.86602540378443826 0
-1 35.370370370370374 52.320508075688771 0 -1 0 0
-1 35 52.320508075688771 0 0.50000000000000056 -0.86602540378443826 0
-1 35.185185185185183 51.999757926138983 0 -0.5 -0.8660254037844386 0
-1 35 51.679007776589188 0 1 -5.7553961596568166e-15 0
-1 35.370370370370374 51.679007776589188 0 0.50000000000000056 -0.86602540378443826 0
-1 35.555555555555557 51.358257627039393 0 -0.50000000000000089 -0.86602540378443815 0
-1 35.370370370370374 51.037507477489605 0 -1 0 0
-1 35 51.037507477489605 0 0.49999999999999734 -0.86602540378444015 0
-1 35.185185185185183 50.71675732793981 0 -0.50000000000000089 -0.86602540378443815 0
-1 35 50.396007178390022 0 1 0 0
-1 35.370370370370374 50.396007178390022 0 0.500000000000002 -0.86602540378443749 0
-1 35.555555555555557 50.075257028840227 0 0.49999999999999684 0.86602540378444048 0
-1 35.74074074074074 50.396007178390022 0 1 0 0
-1 36.111111111111114 50.396007178390022 0 0.50000000000000044 -0.86602540378443837 0
-1 36.296296296296298 50.075257028840227 0 -0.49999999999999711 -0.86602540378444026 0
-1 36.111111111111114 49.754506879290439 0 1 0 0
-1 36.481481481481481 49.754506879290439 0 0.50000000000000067 -0.86602540378443826 0
-1 36.666666666666664 49.433756729740644 0 -0.50000000000000067 -0.86602540378443826 0
-1 36.481481481481481 49.113006580190856 0 -1 -5.755396159656819e-15 0
-1 36.111111111111114 49.113006580190849 0 0.49999999999999961 -0.86602540378443882 0
-1 36.296296296296298 48.792256430641061 0 -0.50000000000000044 -0.86602540378443837 0
-1 36.111111111111114 48.471506281091266 0 -1 0 0
-1 35.74074074074074 48.471506281091266 0 -0.499999999999997 0.86602540378444037 0
-1 35.555555555555557 48.792256430641061 0 -0.50000000000000189 -0.86602540378443749 0
-1 35.370370370370374 48.471506281091273 0 -1 0 0
-1 35 48.471506281091273 0 0.50000000000000089 -0.86602540378443815 0
-1 35.185185185185183 48.150756131541478 0 -0.49999999999999734 -0.86602540378444015 0
-1 35 47.830005981991683 0 1 0 0
-1 35.370370370370374 47.830005981991683 0 0.50000000000000089 -0.86602540378443815 0
-1 35.555555555555557 47.509255832441895 0 -0.50000000000000056 -0.86602540378443826 0
-1 35.370370370370374 47.188505682892099 0 -1 -5.7553961596568166e-15 0
-1 35 47.188505682892099 0 0.5 -0.8660254037844386 0
-1 35.185185185185183 46.867755533342304 0 -0.50000000000000056 -0.86602540378443826 0
-1 35 46.547005383792516 0 1 0 0
-1 35.370370370370374 46.547005383792516 0 0.50000000000000056 -0.86602540378443826 0
-1 35.555555555555557 46.226255234242721 0 0.50000000000000056 0.86602540378443826 0
-1 35.74074074074074 46.547005383792516 0 1 0 0
-1 36.111111111111114 46.547005383792516 0 0.50000000000000044 -0.86602540378443837 0
-1 36.296296296296298 46.226255234242721 0 -0.50000000000000011 -0.8660254037844386 0
-1 36.111111111111114 45.905505084692933 0 1 -5.755396159656819e-15 0
-1 36.481481481481481 45.905505084692933 0 0.50000000000000011 -0.8660254037844386 0
-1 36.666666666666664 45.584754935143138 0 0.50000000000000067 0.86602540378443826 0
-1 36.851851851851855 45.905505084692933 0 1 0 0
-1 37.222222222222221 45.905505084692933 0 -0.49999999999999911 0.86602540378443915 0
-1 37.037037037037038 46.226255234242721 0 0.50000000000000067 0.86602540378443826 0
-1 37.222222222222221 46.547005383792516 0 1 0 0
-1 37.592592592592595 46.547005383792516 0 0.50000000000000122 -0.86602540378443793 0
-1 37.777777777777779 46.226255234242721 0 0.50000000000000011 0.8660254037844386 0
-1 37.962962962962962 46.547005383792516 0 1 0 0
-1 38.333333333333336 46.547005383792516 0 0.50000000000000011 -0.8660254037844386 0
-1 38.518518518518519 46.226255234242721 0 -0.49999999999999911 -0.86602540378443915 0
-1 38.333333333333336 45.905505084692933 0 1 -5.755396159656819e-15 0
-1 38.703703703703702 45.905505084692926 0 0.50000000000000011 -0.8660254037844386 0
-1 38.888888888888886 45.584754935143138 0 -0.50000000000000122 -0.86602540378443793 0
-1 38.703703703703702 45.264004785593343 0 -1 5.7553961596568277e-15 0
-1 38.333333333333336 45.26400478559335 0 0.49999999999999661 -0.86602540378444059 0
-1 38.518518518518519 44.943254636043555 0 -0.50000000000000122 -0.86602540378443793 0
-1 38.333333333333336 44.62250448649376 0 1 0 0
-1 38.703703703703702 44.62250448649376 0 0.5 -0.8660254037844386 0
-1 38.888888888888886 44.301754336943972 0 0.5 0.8660254037844386 0
-1 39.074074074074076 44.62250448649376 0 1 0 0
-1 39.444444444444443 44.62250448649376 0 0.49999999999999889 -0.86602540378443926 0
-1 39.629629629629633 44.301754336943972 0 -0.50000000000000122 -0.86602540378443793 0
-1 39.444444444444443 43.981004187394177 0 1 0 0
-1 39.814814814814817 43.981004187394177 0 0.5 -0.8660254037844386 0
-1 40 43.660254037844389 0 -0.5 -0.8660254037844386 0
-1 39.814814814814817 43.339503888294594 0 -1 0 0
-1 39.444444444444443 43.339503888294594 0 0.50000000000000122 -0.86602540378443793 0
-1 39.629629629629633 43.018753738744799 0 -0.49999999999999889 -0.86602540378443926 0
-1 39.444444444444443 42.698003589195011 0 -1 0 0
-1 39.074074074074076 42.698003589195011 0 -0.5 0.8660254037844386 0
-1 38.888888888888886 43.018753738744799 0 -0.5 -0.8660254037844386 0
-1 38.703703703703702 42.698003589195011 0 -1 0 0
-1 38.333333333333336 42.698003589195011 0 0.50000000000000122 -0.86602540378443793 0
-1 38.518518518518519 42.377253439645216 0 -0.49999999999999784 -0.86602540378443993 0
-1 38.333333333333336 42.056503290095428 0 1 0 0
-1 38.703703703703702 42.056503290095428 0 0.50000000000000122 -0.86602540378443793 0
-1 38.888888888888886 41.735753140545633 0 -0.49999999999999889 -0.86602540378443926 0
-1 38.703703703703702 41.415002990995838 0 -1 0 0
-1 38.333333333333336 41.415002990995838 0 0.50000000000000122 -0.86602540378443793 0
-1 38.518518518518519 41.09425284144605 0 -0.49999999999999889 -0.86602540378443926 0
-1 38.333333333333336 40.773502691896255 0 -1 0 0
-1 37.962962962962962 40.773502691896255 0 -0.5 0.8660254037844386 0
-1 37.777777777777779 41.09425284144605 0 -0.49999999999999889 -0.86602540378443926 0
-1 37.592592592592595 40.773502691896255 0 -1 0 0
-1 37.222222222222221 40.773502691896255 0 -0.49999999999999944 0.86602540378443893 0
-1 37.037037037037038 41.09425284144605 0 0.50000000000000178 0.8660254037844376 0
-1 37.222222222222221 41.415002990995838 0 -1 0 0
-1 36.851851851851855 41.415002990995838 0 -0.49999999999999944 0.86602540378443893 0
-1 36.666666666666664 41.735753140545633 0 -0.49999999999999944 -0.86602540378443893 0
-1 36.481481481481481 41.415002990995838 0 -1 0 0
-1 36.111111111111114 41.415002990995838 0 0.50000000000000155 -0.86602540378443782 0
-1 36.296296296296298 41.09425284144605 0 -0.49999999999999944 -0.86602540378443893 0
-1 36.111111111111114 40.773502691896255 0 -1 0 0
-1 35.74074074074074 40.773502691896255 0 -0.49999999999999944 0.86602540378443893 0
-1 35.555555555555557 41.09425284144605 0 -0.49999999999999944 -0.86602540378443893 0
-1 35.370370370370374 40.773502691896255 0 -1 0 0
-1 35 40.773502691896255 0 0.50000000000000067 -0.86602540378443826 0
-1 35.185185185185183 40.452752542346467 0 -0.49999999999999983 -0.86602540378443871 0
-1 35 40.132002392796672 0 1 -2.8776980798284083e-15 0
-1 35.370370370370374 40.132002392796672 0 0.50000000000000067 -0.86602540378443826 0
-1 35.555555555555557 39.811252243246884 0 -0.49999999999999967 -0.86602540378443882 0
-1 35.370370370370374 39.490502093697089 0 -1 -1.4388490399142032e-15 0
-1 35 39.490502093697089 0 0.50000000000000078 -0.86602540378443815 0
-1 35.185185185185183 39.169751944147301 0 -0.49999999999999972 -0.86602540378443882 0
-1 35 38.849001794597505 0 1 0 0
-1 35.370370370370374 38.849001794597505 0 0.49999999999999906 -0.86602540378443915 0
-1 35.555555555555557 38.52825164504771 0 0.50000000000000011 0.8660254037844386 0
-1 35.74074074074074 38.849001794597505 0 1 0 0
-1 36.111111111111114 38.849001794597505 0 0.50000000000000011 -0.8660254037844386 0
-1 36.296296296296298 38.52825164504771 0 -0.49999999999999944 -0.86602540378443893 0
-1 36.111111111111114 38.207501495497922 0 1 1.4388490399142028e-15 0
-1 36.481481481481481 38.207501495497922 0 0.50000000000000011 -0.8660254037844386 0
-1 36.666666666666664 37.886751345948127 0 -0.50000000000000011 -0.8660254037844386 0
-1 36.481481481481481 37.566001196398339 0 -1 1.4388490399142028e-15 0
-1 36.111111111111114 37.566001196398339 0 0.49999999999999944 -0.86602540378443893 0
-1 36.296296296296298 37.245251046848544 0 -0.50000000000000011 -0.8660254037844386 0
-1 36.111111111111114 36.924500897298749 0 -1 0 0
-1 35.74074074074074 36.924500897298749 0 -0.50000000000000011 0.8660254037844386 0
-1 35.555555555555557 37.245251046848544 0 -0.49999999999999994 -0.86602540378443871 0
-1 35.370370370370374 36.924500897298749 0 -1 0 0
-1 35 36.924500897298749 0 0.49999999999999989 -0.86602540378443871 0
-1 35.185185185185183 36.603750747748961 0 -0.5 -0.8660254037844386 0
-1 35 36.283000598199166 0 1 0 0
-1 35.370370370370374 36.283000598199166 0 0.49999999999999994 -0.86602540378443871 0
-1 35.555555555555557 35.962250448649378 0 -0.50000000000000011 -0.8660254037844386 0
-1 35.370370370370374 35.641500299099583 0 -1 0 0
-1 35 35.641500299099583 0 0.49999999999999994 -0.86602540378443871 0
-1 35.185185185185183 35.320750149549795 0 -0.50000000000000011 -0.8660254037844386 0
-Polygon3D 0
-PolygonOnTriangulations 2304
-2 1 2
-p 0.1 1 0 1.23456790123457
-2 1 2
-p 0.1 1 0 1.23456790123457
-2 2 3
-p 0.1 1 0 1.23456790123457
-2 2 3
-p 0.1 1 0 1.23456790123457
-2 3 4
-p 0.1 1 0 1.23456790123457
-2 3 4
-p 0.1 1 0 1.23456790123457
-2 4 5
-p 0.1 1 0 1.23456790123457
-2 4 5
-p 0.1 1 0 1.23456790123457
-2 5 6
-p 0.1 1 0 1.23456790123457
-2 5 6
-p 0.1 1 0 1.23456790123457
-2 6 7
-p 0.1 1 0 1.23456790123457
-2 6 7
-p 0.1 1 0 1.23456790123457
-2 7 8
-p 0.1 1 0 1.23456790123457
-2 7 8
-p 0.1 1 0 1.23456790123457
-2 8 9
-p 0.1 1 0 1.23456790123457
-2 8 9
-p 0.1 1 0 1.23456790123457
-2 9 10
-p 0.1 1 0 1.23456790123457
-2 9 10
-p 0.1 1 0 1.23456790123457
-2 10 11
-p 0.1 1 0 1.23456790123457
-2 10 11
-p 0.1 1 0 1.23456790123457
-2 11 12
-p 0.1 1 0 1.23456790123457
-2 11 12
-p 0.1 1 0 1.23456790123457
-2 12 13
-p 0.1 1 0 1.23456790123457
-2 12 13
-p 0.1 1 0 1.23456790123457
-2 13 14
-p 0.1 1 0 1.23456790123457
-2 13 14
-p 0.1 1 0 1.23456790123457
-2 14 15
-p 0.1 1 0 1.23456790123457
-2 14 15
-p 0.1 1 0 1.23456790123457
-2 15 16
-p 0.1 1 0 1.23456790123457
-2 15 16
-p 0.1 1 0 1.23456790123457
-2 16 17
-p 0.1 1 0 1.23456790123457
-2 16 17
-p 0.1 1 0 1.23456790123457
-2 17 18
-p 0.1 1 0 1.23456790123457
-2 17 18
-p 0.1 1 0 1.23456790123457
-2 18 19
-p 0.1 1 0 1.23456790123457
-2 18 19
-p 0.1 1 0 1.23456790123457
-2 19 20
-p 0.1 1 0 1.23456790123457
-2 19 20
-p 0.1 1 0 1.23456790123457
-2 20 21
-p 0.1 1 0 1.23456790123457
-2 20 21
-p 0.1 1 0 1.23456790123457
-2 21 22
-p 0.1 1 0 1.23456790123457
-2 21 22
-p 0.1 1 0 1.23456790123457
-2 22 23
-p 0.1 1 0 1.23456790123457
-2 22 23
-p 0.1 1 0 1.23456790123457
-2 23 24
-p 0.1 1 0 1.23456790123457
-2 23 24
-p 0.1 1 0 1.23456790123457
-2 24 25
-p 0.1 1 0 1.23456790123457
-2 24 25
-p 0.1 1 0 1.23456790123457
-2 25 26
-p 0.1 1 0 1.23456790123457
-2 25 26
-p 0.1 1 0 1.23456790123457
-2 26 27
-p 0.1 1 0 1.23456790123457
-2 26 27
-p 0.1 1 0 1.23456790123457
-2 27 28
-p 0.1 1 0 1.23456790123457
-2 27 28
-p 0.1 1 0 1.23456790123457
-2 28 29
-p 0.1 1 0 1.23456790123457
-2 28 29
-p 0.1 1 0 1.23456790123457
-2 29 30
-p 0.1 1 0 1.23456790123457
-2 29 30
-p 0.1 1 0 1.23456790123457
-2 30 31
-p 0.1 1 0 1.23456790123457
-2 30 31
-p 0.1 1 0 1.23456790123457
-2 31 32
-p 0.1 1 0 1.23456790123457
-2 31 32
-p 0.1 1 0 1.23456790123457
-2 32 33
-p 0.1 1 0 1.23456790123457
-2 32 33
-p 0.1 1 0 1.23456790123457
-2 33 34
-p 0.1 1 0 1.23456790123457
-2 33 34
-p 0.1 1 0 1.23456790123457
-2 34 35
-p 0.1 1 0 1.23456790123457
-2 34 35
-p 0.1 1 0 1.23456790123457
-2 35 36
-p 0.1 1 0 1.23456790123457
-2 35 36
-p 0.1 1 0 1.23456790123457
-2 36 37
-p 0.1 1 0 1.23456790123457
-2 36 37
-p 0.1 1 0 1.23456790123457
-2 37 38
-p 0.1 1 0 1.23456790123457
-2 37 38
-p 0.1 1 0 1.23456790123457
-2 38 39
-p 0.1 1 0 1.23456790123457
-2 38 39
-p 0.1 1 0 1.23456790123457
-2 39 40
-p 0.1 1 0 1.23456790123457
-2 39 40
-p 0.1 1 0 1.23456790123457
-2 40 41
-p 0.1 1 0 1.23456790123457
-2 40 41
-p 0.1 1 0 1.23456790123457
-2 41 42
-p 0.1 1 0 1.23456790123457
-2 41 42
-p 0.1 1 0 1.23456790123457
-2 42 43
-p 0.1 1 0 1.23456790123457
-2 42 43
-p 0.1 1 0 1.23456790123457
-2 43 44
-p 0.1 1 0 1.23456790123457
-2 43 44
-p 0.1 1 0 1.23456790123457
-2 44 45
-p 0.1 1 0 1.23456790123457
-2 44 45
-p 0.1 1 0 1.23456790123457
-2 45 46
-p 0.1 1 0 1.23456790123457
-2 45 46
-p 0.1 1 0 1.23456790123457
-2 46 47
-p 0.1 1 0 1.23456790123457
-2 46 47
-p 0.1 1 0 1.23456790123457
-2 47 48
-p 0.1 1 0 1.23456790123457
-2 47 48
-p 0.1 1 0 1.23456790123457
-2 48 49
-p 0.1 1 0 1.23456790123457
-2 48 49
-p 0.1 1 0 1.23456790123457
-2 49 50
-p 0.1 1 0 1.23456790123457
-2 49 50
-p 0.1 1 0 1.23456790123457
-2 50 51
-p 0.1 1 0 1.23456790123457
-2 50 51
-p 0.1 1 0 1.23456790123457
-2 51 52
-p 0.1 1 0 1.23456790123457
-2 51 52
-p 0.1 1 0 1.23456790123457
-2 52 53
-p 0.1 1 0 1.23456790123457
-2 52 53
-p 0.1 1 0 1.23456790123457
-2 53 54
-p 0.1 1 0 1.23456790123457
-2 53 54
-p 0.1 1 0 1.23456790123457
-2 54 55
-p 0.1 1 0 1.23456790123457
-2 54 55
-p 0.1 1 0 1.23456790123457
-2 55 56
-p 0.1 1 0 1.23456790123457
-2 55 56
-p 0.1 1 0 1.23456790123457
-2 56 57
-p 0.1 1 0 1.23456790123457
-2 56 57
-p 0.1 1 0 1.23456790123457
-2 57 58
-p 0.1 1 0 1.23456790123457
-2 57 58
-p 0.1 1 0 1.23456790123457
-2 58 59
-p 0.1 1 0 1.23456790123457
-2 58 59
-p 0.1 1 0 1.23456790123457
-2 59 60
-p 0.1 1 0 1.23456790123457
-2 59 60
-p 0.1 1 0 1.23456790123457
-2 60 61
-p 0.1 1 0 1.23456790123457
-2 60 61
-p 0.1 1 0 1.23456790123457
-2 61 62
-p 0.1 1 0 1.23456790123457
-2 61 62
-p 0.1 1 0 1.23456790123457
-2 62 63
-p 0.1 1 0 1.23456790123457
-2 62 63
-p 0.1 1 0 1.23456790123457
-2 63 64
-p 0.1 1 0 1.23456790123457
-2 63 64
-p 0.1 1 0 1.23456790123457
-2 64 65
-p 0.1 1 0 1.23456790123457
-2 64 65
-p 0.1 1 0 1.23456790123457
-2 65 66
-p 0.1 1 0 1.23456790123457
-2 65 66
-p 0.1 1 0 1.23456790123457
-2 66 67
-p 0.1 1 0 1.23456790123457
-2 66 67
-p 0.1 1 0 1.23456790123457
-2 67 68
-p 0.1 1 0 1.23456790123456
-2 67 68
-p 0.1 1 0 1.23456790123456
-2 68 69
-p 0.1 1 0 1.23456790123457
-2 68 69
-p 0.1 1 0 1.23456790123457
-2 69 70
-p 0.1 1 0 1.23456790123457
-2 69 70
-p 0.1 1 0 1.23456790123457
-2 70 71
-p 0.1 1 0 1.23456790123456
-2 70 71
-p 0.1 1 0 1.23456790123456
-2 71 72
-p 0.1 1 0 1.23456790123457
-2 71 72
-p 0.1 1 0 1.23456790123457
-2 72 73
-p 0.1 1 0 1.23456790123457
-2 72 73
-p 0.1 1 0 1.23456790123457
-2 73 74
-p 0.1 1 0 1.23456790123457
-2 73 74
-p 0.1 1 0 1.23456790123457
-2 74 75
-p 0.1 1 0 1.23456790123457
-2 74 75
-p 0.1 1 0 1.23456790123457
-2 75 76
-p 0.1 1 0 1.23456790123457
-2 75 76
-p 0.1 1 0 1.23456790123457
-2 76 77
-p 0.1 1 0 1.23456790123457
-2 76 77
-p 0.1 1 0 1.23456790123457
-2 77 78
-p 0.1 1 0 1.23456790123457
-2 77 78
-p 0.1 1 0 1.23456790123457
-2 78 79
-p 0.1 1 0 1.23456790123457
-2 78 79
-p 0.1 1 0 1.23456790123457
-2 79 80
-p 0.1 1 0 1.23456790123457
-2 79 80
-p 0.1 1 0 1.23456790123457
-2 80 81
-p 0.1 1 0 1.23456790123457
-2 80 81
-p 0.1 1 0 1.23456790123457
-2 81 82
-p 0.1 1 0 1.23456790123457
-2 81 82
-p 0.1 1 0 1.23456790123457
-2 82 83
-p 0.1 1 0 1.23456790123457
-2 82 83
-p 0.1 1 0 1.23456790123457
-2 83 84
-p 0.1 1 0 1.23456790123457
-2 83 84
-p 0.1 1 0 1.23456790123457
-2 84 85
-p 0.1 1 0 1.23456790123457
-2 84 85
-p 0.1 1 0 1.23456790123457
-2 85 86
-p 0.1 1 0 1.23456790123457
-2 85 86
-p 0.1 1 0 1.23456790123457
-2 86 87
-p 0.1 1 0 1.23456790123457
-2 86 87
-p 0.1 1 0 1.23456790123457
-2 87 88
-p 0.1 1 0 1.23456790123457
-2 87 88
-p 0.1 1 0 1.23456790123457
-2 88 89
-p 0.1 1 0 1.23456790123457
-2 88 89
-p 0.1 1 0 1.23456790123457
-2 89 90
-p 0.1 1 0 1.23456790123457
-2 89 90
-p 0.1 1 0 1.23456790123457
-2 90 91
-p 0.1 1 0 1.23456790123456
-2 90 91
-p 0.1 1 0 1.23456790123456
-2 91 92
-p 0.1 1 0 1.23456790123456
-2 91 92
-p 0.1 1 0 1.23456790123456
-2 92 93
-p 0.1 1 0 1.23456790123457
-2 92 93
-p 0.1 1 0 1.23456790123457
-2 93 94
-p 0.1 1 0 1.23456790123457
-2 93 94
-p 0.1 1 0 1.23456790123457
-2 94 95
-p 0.1 1 0 1.23456790123456
-2 94 95
-p 0.1 1 0 1.23456790123456
-2 95 96
-p 0.1 1 0 1.23456790123457
-2 95 96
-p 0.1 1 0 1.23456790123457
-2 96 97
-p 0.1 1 0 1.23456790123457
-2 96 97
-p 0.1 1 0 1.23456790123457
-2 97 98
-p 0.1 1 0 1.23456790123457
-2 97 98
-p 0.1 1 0 1.23456790123457
-2 98 99
-p 0.1 1 0 1.23456790123457
-2 98 99
-p 0.1 1 0 1.23456790123457
-2 99 100
-p 0.1 1 0 1.23456790123457
-2 99 100
-p 0.1 1 0 1.23456790123457
-2 100 101
-p 0.1 1 0 1.23456790123457
-2 100 101
-p 0.1 1 0 1.23456790123457
-2 101 102
-p 0.1 1 0 1.23456790123457
-2 101 102
-p 0.1 1 0 1.23456790123457
-2 102 103
-p 0.1 1 0 1.23456790123457
-2 102 103
-p 0.1 1 0 1.23456790123457
-2 103 104
-p 0.1 1 0 1.23456790123456
-2 103 104
-p 0.1 1 0 1.23456790123456
-2 104 105
-p 0.1 1 0 1.23456790123457
-2 104 105
-p 0.1 1 0 1.23456790123457
-2 105 106
-p 0.1 1 0 1.23456790123457
-2 105 106
-p 0.1 1 0 1.23456790123457
-2 106 107
-p 0.1 1 0 1.23456790123456
-2 106 107
-p 0.1 1 0 1.23456790123456
-2 107 108
-p 0.1 1 0 1.23456790123457
-2 107 108
-p 0.1 1 0 1.23456790123457
-2 108 109
-p 0.1 1 0 1.23456790123457
-2 108 109
-p 0.1 1 0 1.23456790123457
-2 109 110
-p 0.1 1 0 1.23456790123457
-2 109 110
-p 0.1 1 0 1.23456790123457
-2 110 111
-p 0.1 1 0 1.23456790123457
-2 110 111
-p 0.1 1 0 1.23456790123457
-2 111 112
-p 0.1 1 0 1.23456790123457
-2 111 112
-p 0.1 1 0 1.23456790123457
-2 112 113
-p 0.1 1 0 1.23456790123457
-2 112 113
-p 0.1 1 0 1.23456790123457
-2 113 114
-p 0.1 1 0 1.23456790123457
-2 113 114
-p 0.1 1 0 1.23456790123457
-2 114 115
-p 0.1 1 0 1.23456790123457
-2 114 115
-p 0.1 1 0 1.23456790123457
-2 115 116
-p 0.1 1 0 1.23456790123457
-2 115 116
-p 0.1 1 0 1.23456790123457
-2 116 117
-p 0.1 1 0 1.23456790123457
-2 116 117
-p 0.1 1 0 1.23456790123457
-2 117 118
-p 0.1 1 0 1.23456790123457
-2 117 118
-p 0.1 1 0 1.23456790123457
-2 118 119
-p 0.1 1 0 1.23456790123457
-2 118 119
-p 0.1 1 0 1.23456790123457
-2 119 120
-p 0.1 1 0 1.23456790123457
-2 119 120
-p 0.1 1 0 1.23456790123457
-2 120 121
-p 0.1 1 0 1.23456790123457
-2 120 121
-p 0.1 1 0 1.23456790123457
-2 121 122
-p 0.1 1 0 1.23456790123457
-2 121 122
-p 0.1 1 0 1.23456790123457
-2 122 123
-p 0.1 1 0 1.23456790123457
-2 122 123
-p 0.1 1 0 1.23456790123457
-2 123 124
-p 0.1 1 0 1.23456790123457
-2 123 124
-p 0.1 1 0 1.23456790123457
-2 124 125
-p 0.1 1 0 1.23456790123457
-2 124 125
-p 0.1 1 0 1.23456790123457
-2 125 126
-p 0.1 1 0 1.23456790123457
-2 125 126
-p 0.1 1 0 1.23456790123457
-2 126 127
-p 0.1 1 0 1.23456790123457
-2 126 127
-p 0.1 1 0 1.23456790123457
-2 127 128
-p 0.1 1 0 1.23456790123456
-2 127 128
-p 0.1 1 0 1.23456790123456
-2 128 129
-p 0.1 1 0 1.23456790123457
-2 128 129
-p 0.1 1 0 1.23456790123457
-2 129 130
-p 0.1 1 0 1.23456790123457
-2 129 130
-p 0.1 1 0 1.23456790123457
-2 130 131
-p 0.1 1 0 1.23456790123456
-2 130 131
-p 0.1 1 0 1.23456790123456
-2 131 132
-p 0.1 1 0 1.23456790123457
-2 131 132
-p 0.1 1 0 1.23456790123457
-2 132 133
-p 0.1 1 0 1.23456790123457
-2 132 133
-p 0.1 1 0 1.23456790123457
-2 133 134
-p 0.1 1 0 1.23456790123457
-2 133 134
-p 0.1 1 0 1.23456790123457
-2 134 135
-p 0.1 1 0 1.23456790123457
-2 134 135
-p 0.1 1 0 1.23456790123457
-2 135 136
-p 0.1 1 0 1.23456790123457
-2 135 136
-p 0.1 1 0 1.23456790123457
-2 136 137
-p 0.1 1 0 1.23456790123457
-2 136 137
-p 0.1 1 0 1.23456790123457
-2 137 138
-p 0.1 1 0 1.23456790123457
-2 137 138
-p 0.1 1 0 1.23456790123457
-2 138 139
-p 0.1 1 0 1.23456790123457
-2 138 139
-p 0.1 1 0 1.23456790123457
-2 139 140
-p 0.1 1 0 1.23456790123457
-2 139 140
-p 0.1 1 0 1.23456790123457
-2 140 141
-p 0.1 1 0 1.23456790123457
-2 140 141
-p 0.1 1 0 1.23456790123457
-2 141 142
-p 0.1 1 0 1.23456790123457
-2 141 142
-p 0.1 1 0 1.23456790123457
-2 142 143
-p 0.1 1 0 1.23456790123457
-2 142 143
-p 0.1 1 0 1.23456790123457
-2 143 144
-p 0.1 1 0 1.23456790123457
-2 143 144
-p 0.1 1 0 1.23456790123457
-2 144 145
-p 0.1 1 0 1.23456790123457
-2 144 145
-p 0.1 1 0 1.23456790123457
-2 145 146
-p 0.1 1 0 1.23456790123457
-2 145 146
-p 0.1 1 0 1.23456790123457
-2 146 147
-p 0.1 1 0 1.23456790123457
-2 146 147
-p 0.1 1 0 1.23456790123457
-2 147 148
-p 0.1 1 0 1.23456790123457
-2 147 148
-p 0.1 1 0 1.23456790123457
-2 148 149
-p 0.1 1 0 1.23456790123457
-2 148 149
-p 0.1 1 0 1.23456790123457
-2 149 150
-p 0.1 1 0 1.23456790123457
-2 149 150
-p 0.1 1 0 1.23456790123457
-2 150 151
-p 0.1 1 0 1.23456790123457
-2 150 151
-p 0.1 1 0 1.23456790123457
-2 151 152
-p 0.1 1 0 1.23456790123456
-2 151 152
-p 0.1 1 0 1.23456790123456
-2 152 153
-p 0.1 1 0 1.23456790123457
-2 152 153
-p 0.1 1 0 1.23456790123457
-2 153 154
-p 0.1 1 0 1.23456790123457
-2 153 154
-p 0.1 1 0 1.23456790123457
-2 154 155
-p 0.1 1 0 1.23456790123456
-2 154 155
-p 0.1 1 0 1.23456790123456
-2 155 156
-p 0.1 1 0 1.23456790123457
-2 155 156
-p 0.1 1 0 1.23456790123457
-2 156 157
-p 0.1 1 0 1.23456790123457
-2 156 157
-p 0.1 1 0 1.23456790123457
-2 157 158
-p 0.1 1 0 1.23456790123456
-2 157 158
-p 0.1 1 0 1.23456790123456
-2 158 159
-p 0.1 1 0 1.23456790123457
-2 158 159
-p 0.1 1 0 1.23456790123457
-2 159 160
-p 0.1 1 0 1.23456790123456
-2 159 160
-p 0.1 1 0 1.23456790123456
-2 160 161
-p 0.1 1 0 1.23456790123457
-2 160 161
-p 0.1 1 0 1.23456790123457
-2 161 162
-p 0.1 1 0 1.23456790123457
-2 161 162
-p 0.1 1 0 1.23456790123457
-2 162 163
-p 0.1 1 0 1.23456790123456
-2 162 163
-p 0.1 1 0 1.23456790123456
-2 163 164
-p 0.1 1 0 1.23456790123457
-2 163 164
-p 0.1 1 0 1.23456790123457
-2 164 165
-p 0.1 1 0 1.23456790123457
-2 164 165
-p 0.1 1 0 1.23456790123457
-2 165 166
-p 0.1 1 0 1.23456790123456
-2 165 166
-p 0.1 1 0 1.23456790123456
-2 166 167
-p 0.1 1 0 1.23456790123457
-2 166 167
-p 0.1 1 0 1.23456790123457
-2 167 168
-p 0.1 1 0 1.23456790123456
-2 167 168
-p 0.1 1 0 1.23456790123456
-2 168 169
-p 0.1 1 0 1.23456790123456
-2 168 169
-p 0.1 1 0 1.23456790123456
-2 169 170
-p 0.1 1 0 1.23456790123457
-2 169 170
-p 0.1 1 0 1.23456790123457
-2 170 171
-p 0.1 1 0 1.23456790123457
-2 170 171
-p 0.1 1 0 1.23456790123457
-2 171 172
-p 0.1 1 0 1.23456790123457
-2 171 172
-p 0.1 1 0 1.23456790123457
-2 172 173
-p 0.1 1 0 1.23456790123456
-2 172 173
-p 0.1 1 0 1.23456790123456
-2 173 174
-p 0.1 1 0 1.23456790123457
-2 173 174
-p 0.1 1 0 1.23456790123457
-2 174 175
-p 0.1 1 0 1.23456790123456
-2 174 175
-p 0.1 1 0 1.23456790123456
-2 175 176
-p 0.1 1 0 1.23456790123456
-2 175 176
-p 0.1 1 0 1.23456790123456
-2 176 177
-p 0.1 1 0 1.23456790123457
-2 176 177
-p 0.1 1 0 1.23456790123457
-2 177 178
-p 0.1 1 0 1.23456790123457
-2 177 178
-p 0.1 1 0 1.23456790123457
-2 178 179
-p 0.1 1 0 1.23456790123456
-2 178 179
-p 0.1 1 0 1.23456790123456
-2 179 180
-p 0.1 1 0 1.23456790123457
-2 179 180
-p 0.1 1 0 1.23456790123457
-2 180 181
-p 0.1 1 0 1.23456790123457
-2 180 181
-p 0.1 1 0 1.23456790123457
-2 181 182
-p 0.1 1 0 1.23456790123456
-2 181 182
-p 0.1 1 0 1.23456790123456
-2 182 183
-p 0.1 1 0 1.23456790123457
-2 182 183
-p 0.1 1 0 1.23456790123457
-2 183 184
-p 0.1 1 0 1.23456790123456
-2 183 184
-p 0.1 1 0 1.23456790123456
-2 184 185
-p 0.1 1 0 1.23456790123457
-2 184 185
-p 0.1 1 0 1.23456790123457
-2 185 186
-p 0.1 1 0 1.23456790123456
-2 185 186
-p 0.1 1 0 1.23456790123456
-2 186 187
-p 0.1 1 0 1.23456790123456
-2 186 187
-p 0.1 1 0 1.23456790123456
-2 187 188
-p 0.1 1 0 1.23456790123457
-2 187 188
-p 0.1 1 0 1.23456790123457
-2 188 189
-p 0.1 1 0 1.23456790123457
-2 188 189
-p 0.1 1 0 1.23456790123457
-2 189 190
-p 0.1 1 0 1.23456790123456
-2 189 190
-p 0.1 1 0 1.23456790123456
-2 190 191
-p 0.1 1 0 1.23456790123457
-2 190 191
-p 0.1 1 0 1.23456790123457
-2 191 192
-p 0.1 1 0 1.23456790123456
-2 191 192
-p 0.1 1 0 1.23456790123456
-2 192 193
-p 0.1 1 0 1.23456790123456
-2 192 193
-p 0.1 1 0 1.23456790123456
-2 193 194
-p 0.1 1 0 1.23456790123457
-2 193 194
-p 0.1 1 0 1.23456790123457
-2 194 195
-p 0.1 1 0 1.23456790123457
-2 194 195
-p 0.1 1 0 1.23456790123457
-2 195 196
-p 0.1 1 0 1.23456790123457
-2 195 196
-p 0.1 1 0 1.23456790123457
-2 196 197
-p 0.1 1 0 1.23456790123457
-2 196 197
-p 0.1 1 0 1.23456790123457
-2 197 198
-p 0.1 1 0 1.23456790123457
-2 197 198
-p 0.1 1 0 1.23456790123457
-2 198 199
-p 0.1 1 0 1.23456790123456
-2 198 199
-p 0.1 1 0 1.23456790123456
-2 199 200
-p 0.1 1 0 1.23456790123457
-2 199 200
-p 0.1 1 0 1.23456790123457
-2 200 201
-p 0.1 1 0 1.23456790123457
-2 200 201
-p 0.1 1 0 1.23456790123457
-2 201 202
-p 0.1 1 0 1.23456790123457
-2 201 202
-p 0.1 1 0 1.23456790123457
-2 202 203
-p 0.1 1 0 1.23456790123457
-2 202 203
-p 0.1 1 0 1.23456790123457
-2 203 204
-p 0.1 1 0 1.23456790123456
-2 203 204
-p 0.1 1 0 1.23456790123456
-2 204 205
-p 0.1 1 0 1.23456790123457
-2 204 205
-p 0.1 1 0 1.23456790123457
-2 205 206
-p 0.1 1 0 1.23456790123457
-2 205 206
-p 0.1 1 0 1.23456790123457
-2 206 207
-p 0.1 1 0 1.23456790123457
-2 206 207
-p 0.1 1 0 1.23456790123457
-2 207 208
-p 0.1 1 0 1.23456790123457
-2 207 208
-p 0.1 1 0 1.23456790123457
-2 208 209
-p 0.1 1 0 1.23456790123457
-2 208 209
-p 0.1 1 0 1.23456790123457
-2 209 210
-p 0.1 1 0 1.23456790123457
-2 209 210
-p 0.1 1 0 1.23456790123457
-2 210 211
-p 0.1 1 0 1.23456790123456
-2 210 211
-p 0.1 1 0 1.23456790123456
-2 211 212
-p 0.1 1 0 1.23456790123457
-2 211 212
-p 0.1 1 0 1.23456790123457
-2 212 213
-p 0.1 1 0 1.23456790123457
-2 212 213
-p 0.1 1 0 1.23456790123457
-2 213 214
-p 0.1 1 0 1.23456790123457
-2 213 214
-p 0.1 1 0 1.23456790123457
-2 214 215
-p 0.1 1 0 1.23456790123456
-2 214 215
-p 0.1 1 0 1.23456790123456
-2 215 216
-p 0.1 1 0 1.23456790123456
-2 215 216
-p 0.1 1 0 1.23456790123456
-2 216 217
-p 0.1 1 0 1.23456790123456
-2 216 217
-p 0.1 1 0 1.23456790123456
-2 217 218
-p 0.1 1 0 1.23456790123457
-2 217 218
-p 0.1 1 0 1.23456790123457
-2 218 219
-p 0.1 1 0 1.23456790123457
-2 218 219
-p 0.1 1 0 1.23456790123457
-2 219 220
-p 0.1 1 0 1.23456790123457
-2 219 220
-p 0.1 1 0 1.23456790123457
-2 220 221
-p 0.1 1 0 1.23456790123457
-2 220 221
-p 0.1 1 0 1.23456790123457
-2 221 222
-p 0.1 1 0 1.23456790123456
-2 221 222
-p 0.1 1 0 1.23456790123456
-2 222 223
-p 0.1 1 0 1.23456790123456
-2 222 223
-p 0.1 1 0 1.23456790123456
-2 223 224
-p 0.1 1 0 1.23456790123457
-2 223 224
-p 0.1 1 0 1.23456790123457
-2 224 225
-p 0.1 1 0 1.23456790123456
-2 224 225
-p 0.1 1 0 1.23456790123456
-2 225 226
-p 0.1 1 0 1.23456790123456
-2 225 226
-p 0.1 1 0 1.23456790123456
-2 226 227
-p 0.1 1 0 1.23456790123457
-2 226 227
-p 0.1 1 0 1.23456790123457
-2 227 228
-p 0.1 1 0 1.23456790123456
-2 227 228
-p 0.1 1 0 1.23456790123456
-2 228 229
-p 0.1 1 0 1.23456790123456
-2 228 229
-p 0.1 1 0 1.23456790123456
-2 229 230
-p 0.1 1 0 1.23456790123457
-2 229 230
-p 0.1 1 0 1.23456790123457
-2 230 231
-p 0.1 1 0 1.23456790123457
-2 230 231
-p 0.1 1 0 1.23456790123457
-2 231 232
-p 0.1 1 0 1.23456790123457
-2 231 232
-p 0.1 1 0 1.23456790123457
-2 232 233
-p 0.1 1 0 1.23456790123457
-2 232 233
-p 0.1 1 0 1.23456790123457
-2 233 234
-p 0.1 1 0 1.23456790123456
-2 233 234
-p 0.1 1 0 1.23456790123456
-2 234 235
-p 0.1 1 0 1.23456790123456
-2 234 235
-p 0.1 1 0 1.23456790123456
-2 235 236
-p 0.1 1 0 1.23456790123457
-2 235 236
-p 0.1 1 0 1.23456790123457
-2 236 237
-p 0.1 1 0 1.23456790123456
-2 236 237
-p 0.1 1 0 1.23456790123456
-2 237 238
-p 0.1 1 0 1.23456790123457
-2 237 238
-p 0.1 1 0 1.23456790123457
-2 238 239
-p 0.1 1 0 1.23456790123457
-2 238 239
-p 0.1 1 0 1.23456790123457
-2 239 240
-p 0.1 1 0 1.23456790123456
-2 239 240
-p 0.1 1 0 1.23456790123456
-2 240 241
-p 0.1 1 0 1.23456790123457
-2 240 241
-p 0.1 1 0 1.23456790123457
-2 241 242
-p 0.1 1 0 1.23456790123457
-2 241 242
-p 0.1 1 0 1.23456790123457
-2 242 243
-p 0.1 1 0 1.23456790123457
-2 242 243
-p 0.1 1 0 1.23456790123457
-2 243 244
-p 0.1 1 0 1.23456790123457
-2 243 244
-p 0.1 1 0 1.23456790123457
-2 244 245
-p 0.1 1 0 1.23456790123457
-2 244 245
-p 0.1 1 0 1.23456790123457
-2 245 246
-p 0.1 1 0 1.23456790123457
-2 245 246
-p 0.1 1 0 1.23456790123457
-2 246 247
-p 0.1 1 0 1.23456790123456
-2 246 247
-p 0.1 1 0 1.23456790123456
-2 247 248
-p 0.1 1 0 1.23456790123457
-2 247 248
-p 0.1 1 0 1.23456790123457
-2 248 249
-p 0.1 1 0 1.23456790123457
-2 248 249
-p 0.1 1 0 1.23456790123457
-2 249 250
-p 0.1 1 0 1.23456790123457
-2 249 250
-p 0.1 1 0 1.23456790123457
-2 250 251
-p 0.1 1 0 1.23456790123457
-2 250 251
-p 0.1 1 0 1.23456790123457
-2 251 252
-p 0.1 1 0 1.23456790123456
-2 251 252
-p 0.1 1 0 1.23456790123456
-2 252 253
-p 0.1 1 0 1.23456790123457
-2 252 253
-p 0.1 1 0 1.23456790123457
-2 253 254
-p 0.1 1 0 1.23456790123457
-2 253 254
-p 0.1 1 0 1.23456790123457
-2 254 255
-p 0.1 1 0 1.23456790123457
-2 254 255
-p 0.1 1 0 1.23456790123457
-2 255 256
-p 0.1 1 0 1.23456790123457
-2 255 256
-p 0.1 1 0 1.23456790123457
-2 256 257
-p 0.1 1 0 1.23456790123457
-2 256 257
-p 0.1 1 0 1.23456790123457
-2 257 258
-p 0.1 1 0 1.23456790123456
-2 257 258
-p 0.1 1 0 1.23456790123456
-2 258 259
-p 0.1 1 0 1.23456790123456
-2 258 259
-p 0.1 1 0 1.23456790123456
-2 259 260
-p 0.1 1 0 1.23456790123457
-2 259 260
-p 0.1 1 0 1.23456790123457
-2 260 261
-p 0.1 1 0 1.23456790123456
-2 260 261
-p 0.1 1 0 1.23456790123456
-2 261 262
-p 0.1 1 0 1.23456790123456
-2 261 262
-p 0.1 1 0 1.23456790123456
-2 262 263
-p 0.1 1 0 1.23456790123457
-2 262 263
-p 0.1 1 0 1.23456790123457
-2 263 264
-p 0.1 1 0 1.23456790123456
-2 263 264
-p 0.1 1 0 1.23456790123456
-2 264 265
-p 0.1 1 0 1.23456790123456
-2 264 265
-p 0.1 1 0 1.23456790123456
-2 265 266
-p 0.1 1 0 1.23456790123457
-2 265 266
-p 0.1 1 0 1.23456790123457
-2 266 267
-p 0.1 1 0 1.23456790123457
-2 266 267
-p 0.1 1 0 1.23456790123457
-2 267 268
-p 0.1 1 0 1.23456790123457
-2 267 268
-p 0.1 1 0 1.23456790123457
-2 268 269
-p 0.1 1 0 1.23456790123457
-2 268 269
-p 0.1 1 0 1.23456790123457
-2 269 270
-p 0.1 1 0 1.23456790123456
-2 269 270
-p 0.1 1 0 1.23456790123456
-2 270 271
-p 0.1 1 0 1.23456790123456
-2 270 271
-p 0.1 1 0 1.23456790123456
-2 271 272
-p 0.1 1 0 1.23456790123457
-2 271 272
-p 0.1 1 0 1.23456790123457
-2 272 273
-p 0.1 1 0 1.23456790123456
-2 272 273
-p 0.1 1 0 1.23456790123456
-2 273 274
-p 0.1 1 0 1.23456790123456
-2 273 274
-p 0.1 1 0 1.23456790123456
-2 274 275
-p 0.1 1 0 1.23456790123457
-2 274 275
-p 0.1 1 0 1.23456790123457
-2 275 276
-p 0.1 1 0 1.23456790123456
-2 275 276
-p 0.1 1 0 1.23456790123456
-2 276 277
-p 0.1 1 0 1.23456790123456
-2 276 277
-p 0.1 1 0 1.23456790123456
-2 277 278
-p 0.1 1 0 1.23456790123457
-2 277 278
-p 0.1 1 0 1.23456790123457
-2 278 279
-p 0.1 1 0 1.23456790123457
-2 278 279
-p 0.1 1 0 1.23456790123457
-2 279 280
-p 0.1 1 0 1.23456790123457
-2 279 280
-p 0.1 1 0 1.23456790123457
-2 280 281
-p 0.1 1 0 1.23456790123457
-2 280 281
-p 0.1 1 0 1.23456790123457
-2 281 282
-p 0.1 1 0 1.23456790123457
-2 281 282
-p 0.1 1 0 1.23456790123457
-2 282 283
-p 0.1 1 0 1.23456790123457
-2 282 283
-p 0.1 1 0 1.23456790123457
-2 283 284
-p 0.1 1 0 1.23456790123457
-2 283 284
-p 0.1 1 0 1.23456790123457
-2 284 285
-p 0.1 1 0 1.23456790123457
-2 284 285
-p 0.1 1 0 1.23456790123457
-2 285 286
-p 0.1 1 0 1.23456790123457
-2 285 286
-p 0.1 1 0 1.23456790123457
-2 286 287
-p 0.1 1 0 1.23456790123457
-2 286 287
-p 0.1 1 0 1.23456790123457
-2 287 288
-p 0.1 1 0 1.23456790123456
-2 287 288
-p 0.1 1 0 1.23456790123456
-2 288 289
-p 0.1 1 0 1.23456790123457
-2 288 289
-p 0.1 1 0 1.23456790123457
-2 289 290
-p 0.1 1 0 1.23456790123457
-2 289 290
-p 0.1 1 0 1.23456790123457
-2 290 291
-p 0.1 1 0 1.23456790123457
-2 290 291
-p 0.1 1 0 1.23456790123457
-2 291 292
-p 0.1 1 0 1.23456790123457
-2 291 292
-p 0.1 1 0 1.23456790123457
-2 292 293
-p 0.1 1 0 1.23456790123457
-2 292 293
-p 0.1 1 0 1.23456790123457
-2 293 294
-p 0.1 1 0 1.23456790123457
-2 293 294
-p 0.1 1 0 1.23456790123457
-2 294 295
-p 0.1 1 0 1.23456790123457
-2 294 295
-p 0.1 1 0 1.23456790123457
-2 295 296
-p 0.1 1 0 1.23456790123456
-2 295 296
-p 0.1 1 0 1.23456790123456
-2 296 297
-p 0.1 1 0 1.23456790123457
-2 296 297
-p 0.1 1 0 1.23456790123457
-2 297 298
-p 0.1 1 0 1.23456790123456
-2 297 298
-p 0.1 1 0 1.23456790123456
-2 298 299
-p 0.1 1 0 1.23456790123457
-2 298 299
-p 0.1 1 0 1.23456790123457
-2 299 300
-p 0.1 1 0 1.23456790123456
-2 299 300
-p 0.1 1 0 1.23456790123456
-2 300 301
-p 0.1 1 0 1.23456790123456
-2 300 301
-p 0.1 1 0 1.23456790123456
-2 301 302
-p 0.1 1 0 1.23456790123457
-2 301 302
-p 0.1 1 0 1.23456790123457
-2 302 303
-p 0.1 1 0 1.23456790123457
-2 302 303
-p 0.1 1 0 1.23456790123457
-2 303 304
-p 0.1 1 0 1.23456790123457
-2 303 304
-p 0.1 1 0 1.23456790123457
-2 304 305
-p 0.1 1 0 1.23456790123457
-2 304 305
-p 0.1 1 0 1.23456790123457
-2 305 306
-p 0.1 1 0 1.23456790123457
-2 305 306
-p 0.1 1 0 1.23456790123457
-2 306 307
-p 0.1 1 0 1.23456790123456
-2 306 307
-p 0.1 1 0 1.23456790123456
-2 307 308
-p 0.1 1 0 1.23456790123457
-2 307 308
-p 0.1 1 0 1.23456790123457
-2 308 309
-p 0.1 1 0 1.23456790123457
-2 308 309
-p 0.1 1 0 1.23456790123457
-2 309 310
-p 0.1 1 0 1.23456790123456
-2 309 310
-p 0.1 1 0 1.23456790123456
-2 310 311
-p 0.1 1 0 1.23456790123457
-2 310 311
-p 0.1 1 0 1.23456790123457
-2 311 312
-p 0.1 1 0 1.23456790123456
-2 311 312
-p 0.1 1 0 1.23456790123456
-2 312 313
-p 0.1 1 0 1.23456790123456
-2 312 313
-p 0.1 1 0 1.23456790123456
-2 313 314
-p 0.1 1 0 1.23456790123457
-2 313 314
-p 0.1 1 0 1.23456790123457
-2 314 315
-p 0.1 1 0 1.23456790123457
-2 314 315
-p 0.1 1 0 1.23456790123457
-2 315 316
-p 0.1 1 0 1.23456790123457
-2 315 316
-p 0.1 1 0 1.23456790123457
-2 316 317
-p 0.1 1 0 1.23456790123457
-2 316 317
-p 0.1 1 0 1.23456790123457
-2 317 318
-p 0.1 1 0 1.23456790123457
-2 317 318
-p 0.1 1 0 1.23456790123457
-2 318 319
-p 0.1 1 0 1.23456790123456
-2 318 319
-p 0.1 1 0 1.23456790123456
-2 319 320
-p 0.1 1 0 1.23456790123457
-2 319 320
-p 0.1 1 0 1.23456790123457
-2 320 321
-p 0.1 1 0 1.23456790123457
-2 320 321
-p 0.1 1 0 1.23456790123457
-2 321 322
-p 0.1 1 0 1.23456790123457
-2 321 322
-p 0.1 1 0 1.23456790123457
-2 322 323
-p 0.1 1 0 1.23456790123457
-2 322 323
-p 0.1 1 0 1.23456790123457
-2 323 324
-p 0.1 1 0 1.23456790123456
-2 323 324
-p 0.1 1 0 1.23456790123456
-2 324 325
-p 0.1 1 0 1.23456790123457
-2 324 325
-p 0.1 1 0 1.23456790123457
-2 325 326
-p 0.1 1 0 1.23456790123457
-2 325 326
-p 0.1 1 0 1.23456790123457
-2 326 327
-p 0.1 1 0 1.23456790123457
-2 326 327
-p 0.1 1 0 1.23456790123457
-2 327 328
-p 0.1 1 0 1.23456790123457
-2 327 328
-p 0.1 1 0 1.23456790123457
-2 328 329
-p 0.1 1 0 1.23456790123457
-2 328 329
-p 0.1 1 0 1.23456790123457
-2 329 330
-p 0.1 1 0 1.23456790123456
-2 329 330
-p 0.1 1 0 1.23456790123456
-2 330 331
-p 0.1 1 0 1.23456790123456
-2 330 331
-p 0.1 1 0 1.23456790123456
-2 331 332
-p 0.1 1 0 1.23456790123457
-2 331 332
-p 0.1 1 0 1.23456790123457
-2 332 333
-p 0.1 1 0 1.23456790123456
-2 332 333
-p 0.1 1 0 1.23456790123456
-2 333 334
-p 0.1 1 0 1.23456790123456
-2 333 334
-p 0.1 1 0 1.23456790123456
-2 334 335
-p 0.1 1 0 1.23456790123457
-2 334 335
-p 0.1 1 0 1.23456790123457
-2 335 336
-p 0.1 1 0 1.23456790123456
-2 335 336
-p 0.1 1 0 1.23456790123456
-2 336 337
-p 0.1 1 0 1.23456790123456
-2 336 337
-p 0.1 1 0 1.23456790123456
-2 337 338
-p 0.1 1 0 1.23456790123457
-2 337 338
-p 0.1 1 0 1.23456790123457
-2 338 339
-p 0.1 1 0 1.23456790123456
-2 338 339
-p 0.1 1 0 1.23456790123456
-2 339 340
-p 0.1 1 0 1.23456790123456
-2 339 340
-p 0.1 1 0 1.23456790123456
-2 340 341
-p 0.1 1 0 1.23456790123457
-2 340 341
-p 0.1 1 0 1.23456790123457
-2 341 342
-p 0.1 1 0 1.23456790123456
-2 341 342
-p 0.1 1 0 1.23456790123456
-2 342 343
-p 0.1 1 0 1.23456790123456
-2 342 343
-p 0.1 1 0 1.23456790123456
-2 343 344
-p 0.1 1 0 1.23456790123457
-2 343 344
-p 0.1 1 0 1.23456790123457
-2 344 345
-p 0.1 1 0 1.23456790123456
-2 344 345
-p 0.1 1 0 1.23456790123456
-2 345 346
-p 0.1 1 0 1.23456790123457
-2 345 346
-p 0.1 1 0 1.23456790123457
-2 346 347
-p 0.1 1 0 1.23456790123456
-2 346 347
-p 0.1 1 0 1.23456790123456
-2 347 348
-p 0.1 1 0 1.23456790123456
-2 347 348
-p 0.1 1 0 1.23456790123456
-2 348 349
-p 0.1 1 0 1.23456790123457
-2 348 349
-p 0.1 1 0 1.23456790123457
-2 349 350
-p 0.1 1 0 1.23456790123457
-2 349 350
-p 0.1 1 0 1.23456790123457
-2 350 351
-p 0.1 1 0 1.23456790123456
-2 350 351
-p 0.1 1 0 1.23456790123456
-2 351 352
-p 0.1 1 0 1.23456790123456
-2 351 352
-p 0.1 1 0 1.23456790123456
-2 352 353
-p 0.1 1 0 1.23456790123457
-2 352 353
-p 0.1 1 0 1.23456790123457
-2 353 354
-p 0.1 1 0 1.23456790123456
-2 353 354
-p 0.1 1 0 1.23456790123456
-2 354 355
-p 0.1 1 0 1.23456790123456
-2 354 355
-p 0.1 1 0 1.23456790123456
-2 355 356
-p 0.1 1 0 1.23456790123457
-2 355 356
-p 0.1 1 0 1.23456790123457
-2 356 357
-p 0.1 1 0 1.23456790123456
-2 356 357
-p 0.1 1 0 1.23456790123456
-2 357 358
-p 0.1 1 0 1.23456790123457
-2 357 358
-p 0.1 1 0 1.23456790123457
-2 358 359
-p 0.1 1 0 1.23456790123457
-2 358 359
-p 0.1 1 0 1.23456790123457
-2 359 360
-p 0.1 1 0 1.23456790123458
-2 359 360
-p 0.1 1 0 1.23456790123458
-2 360 361
-p 0.1 1 0 1.23456790123457
-2 360 361
-p 0.1 1 0 1.23456790123457
-2 361 362
-p 0.1 1 0 1.23456790123457
-2 361 362
-p 0.1 1 0 1.23456790123457
-2 362 363
-p 0.1 1 0 1.23456790123457
-2 362 363
-p 0.1 1 0 1.23456790123457
-2 363 364
-p 0.1 1 0 1.23456790123457
-2 363 364
-p 0.1 1 0 1.23456790123457
-2 364 365
-p 0.1 1 0 1.23456790123457
-2 364 365
-p 0.1 1 0 1.23456790123457
-2 365 366
-p 0.1 1 0 1.23456790123456
-2 365 366
-p 0.1 1 0 1.23456790123456
-2 366 367
-p 0.1 1 0 1.23456790123456
-2 366 367
-p 0.1 1 0 1.23456790123456
-2 367 368
-p 0.1 1 0 1.23456790123457
-2 367 368
-p 0.1 1 0 1.23456790123457
-2 368 369
-p 0.1 1 0 1.23456790123456
-2 368 369
-p 0.1 1 0 1.23456790123456
-2 369 370
-p 0.1 1 0 1.23456790123456
-2 369 370
-p 0.1 1 0 1.23456790123456
-2 370 371
-p 0.1 1 0 1.23456790123457
-2 370 371
-p 0.1 1 0 1.23456790123457
-2 371 372
-p 0.1 1 0 1.23456790123456
-2 371 372
-p 0.1 1 0 1.23456790123456
-2 372 373
-p 0.1 1 0 1.23456790123456
-2 372 373
-p 0.1 1 0 1.23456790123456
-2 373 374
-p 0.1 1 0 1.23456790123457
-2 373 374
-p 0.1 1 0 1.23456790123457
-2 374 375
-p 0.1 1 0 1.23456790123458
-2 374 375
-p 0.1 1 0 1.23456790123458
-2 375 376
-p 0.1 1 0 1.23456790123457
-2 375 376
-p 0.1 1 0 1.23456790123457
-2 376 377
-p 0.1 1 0 1.23456790123457
-2 376 377
-p 0.1 1 0 1.23456790123457
-2 377 378
-p 0.1 1 0 1.23456790123456
-2 377 378
-p 0.1 1 0 1.23456790123456
-2 378 379
-p 0.1 1 0 1.23456790123456
-2 378 379
-p 0.1 1 0 1.23456790123456
-2 379 380
-p 0.1 1 0 1.23456790123457
-2 379 380
-p 0.1 1 0 1.23456790123457
-2 380 381
-p 0.1 1 0 1.23456790123456
-2 380 381
-p 0.1 1 0 1.23456790123456
-2 381 382
-p 0.1 1 0 1.23456790123456
-2 381 382
-p 0.1 1 0 1.23456790123456
-2 382 383
-p 0.1 1 0 1.23456790123457
-2 382 383
-p 0.1 1 0 1.23456790123457
-2 383 384
-p 0.1 1 0 1.23456790123456
-2 383 384
-p 0.1 1 0 1.23456790123456
-2 384 385
-p 0.1 1 0 1.23456790123456
-2 384 385
-p 0.1 1 0 1.23456790123456
-2 385 386
-p 0.1 1 0 1.23456790123457
-2 385 386
-p 0.1 1 0 1.23456790123457
-2 386 387
-p 0.1 1 0 1.23456790123457
-2 386 387
-p 0.1 1 0 1.23456790123457
-2 387 388
-p 0.1 1 0 1.23456790123458
-2 387 388
-p 0.1 1 0 1.23456790123458
-2 388 389
-p 0.1 1 0 1.23456790123457
-2 388 389
-p 0.1 1 0 1.23456790123457
-2 389 390
-p 0.1 1 0 1.23456790123456
-2 389 390
-p 0.1 1 0 1.23456790123456
-2 390 391
-p 0.1 1 0 1.23456790123456
-2 390 391
-p 0.1 1 0 1.23456790123456
-2 391 392
-p 0.1 1 0 1.23456790123457
-2 391 392
-p 0.1 1 0 1.23456790123457
-2 392 393
-p 0.1 1 0 1.23456790123456
-2 392 393
-p 0.1 1 0 1.23456790123456
-2 393 394
-p 0.1 1 0 1.23456790123456
-2 393 394
-p 0.1 1 0 1.23456790123456
-2 394 395
-p 0.1 1 0 1.23456790123457
-2 394 395
-p 0.1 1 0 1.23456790123457
-2 395 396
-p 0.1 1 0 1.23456790123456
-2 395 396
-p 0.1 1 0 1.23456790123456
-2 396 397
-p 0.1 1 0 1.23456790123456
-2 396 397
-p 0.1 1 0 1.23456790123456
-2 397 398
-p 0.1 1 0 1.23456790123457
-2 397 398
-p 0.1 1 0 1.23456790123457
-2 398 399
-p 0.1 1 0 1.23456790123458
-2 398 399
-p 0.1 1 0 1.23456790123458
-2 399 400
-p 0.1 1 0 1.23456790123457
-2 399 400
-p 0.1 1 0 1.23456790123457
-2 400 401
-p 0.1 1 0 1.23456790123457
-2 400 401
-p 0.1 1 0 1.23456790123457
-2 401 402
-p 0.1 1 0 1.23456790123456
-2 401 402
-p 0.1 1 0 1.23456790123456
-2 402 403
-p 0.1 1 0 1.23456790123456
-2 402 403
-p 0.1 1 0 1.23456790123456
-2 403 404
-p 0.1 1 0 1.23456790123457
-2 403 404
-p 0.1 1 0 1.23456790123457
-2 404 405
-p 0.1 1 0 1.23456790123456
-2 404 405
-p 0.1 1 0 1.23456790123456
-2 405 406
-p 0.1 1 0 1.23456790123457
-2 405 406
-p 0.1 1 0 1.23456790123457
-2 406 407
-p 0.1 1 0 1.23456790123456
-2 406 407
-p 0.1 1 0 1.23456790123456
-2 407 408
-p 0.1 1 0 1.23456790123457
-2 407 408
-p 0.1 1 0 1.23456790123457
-2 408 409
-p 0.1 1 0 1.23456790123457
-2 408 409
-p 0.1 1 0 1.23456790123457
-2 409 410
-p 0.1 1 0 1.23456790123457
-2 409 410
-p 0.1 1 0 1.23456790123457
-2 410 411
-p 0.1 1 0 1.23456790123458
-2 410 411
-p 0.1 1 0 1.23456790123458
-2 411 412
-p 0.1 1 0 1.23456790123457
-2 411 412
-p 0.1 1 0 1.23456790123457
-2 412 413
-p 0.1 1 0 1.23456790123457
-2 412 413
-p 0.1 1 0 1.23456790123457
-2 413 414
-p 0.1 1 0 1.23456790123457
-2 413 414
-p 0.1 1 0 1.23456790123457
-2 414 415
-p 0.1 1 0 1.23456790123456
-2 414 415
-p 0.1 1 0 1.23456790123456
-2 415 416
-p 0.1 1 0 1.23456790123457
-2 415 416
-p 0.1 1 0 1.23456790123457
-2 416 417
-p 0.1 1 0 1.23456790123457
-2 416 417
-p 0.1 1 0 1.23456790123457
-2 417 418
-p 0.1 1 0 1.23456790123457
-2 417 418
-p 0.1 1 0 1.23456790123457
-2 418 419
-p 0.1 1 0 1.23456790123457
-2 418 419
-p 0.1 1 0 1.23456790123457
-2 419 420
-p 0.1 1 0 1.23456790123456
-2 419 420
-p 0.1 1 0 1.23456790123456
-2 420 421
-p 0.1 1 0 1.23456790123457
-2 420 421
-p 0.1 1 0 1.23456790123457
-2 421 422
-p 0.1 1 0 1.23456790123457
-2 421 422
-p 0.1 1 0 1.23456790123457
-2 422 423
-p 0.1 1 0 1.23456790123457
-2 422 423
-p 0.1 1 0 1.23456790123457
-2 423 424
-p 0.1 1 0 1.23456790123457
-2 423 424
-p 0.1 1 0 1.23456790123457
-2 424 425
-p 0.1 1 0 1.23456790123457
-2 424 425
-p 0.1 1 0 1.23456790123457
-2 425 426
-p 0.1 1 0 1.23456790123456
-2 425 426
-p 0.1 1 0 1.23456790123456
-2 426 427
-p 0.1 1 0 1.23456790123456
-2 426 427
-p 0.1 1 0 1.23456790123456
-2 427 428
-p 0.1 1 0 1.23456790123456
-2 427 428
-p 0.1 1 0 1.23456790123456
-2 428 429
-p 0.1 1 0 1.23456790123456
-2 428 429
-p 0.1 1 0 1.23456790123456
-2 429 430
-p 0.1 1 0 1.23456790123456
-2 429 430
-p 0.1 1 0 1.23456790123456
-2 430 431
-p 0.1 1 0 1.23456790123457
-2 430 431
-p 0.1 1 0 1.23456790123457
-2 431 432
-p 0.1 1 0 1.23456790123456
-2 431 432
-p 0.1 1 0 1.23456790123456
-2 432 433
-p 0.1 1 0 1.23456790123456
-2 432 433
-p 0.1 1 0 1.23456790123456
-2 433 434
-p 0.1 1 0 1.23456790123457
-2 433 434
-p 0.1 1 0 1.23456790123457
-2 434 435
-p 0.1 1 0 1.23456790123458
-2 434 435
-p 0.1 1 0 1.23456790123458
-2 435 436
-p 0.1 1 0 1.23456790123457
-2 435 436
-p 0.1 1 0 1.23456790123457
-2 436 437
-p 0.1 1 0 1.23456790123457
-2 436 437
-p 0.1 1 0 1.23456790123457
-2 437 438
-p 0.1 1 0 1.23456790123456
-2 437 438
-p 0.1 1 0 1.23456790123456
-2 438 439
-p 0.1 1 0 1.23456790123456
-2 438 439
-p 0.1 1 0 1.23456790123456
-2 439 440
-p 0.1 1 0 1.23456790123457
-2 439 440
-p 0.1 1 0 1.23456790123457
-2 440 441
-p 0.1 1 0 1.23456790123456
-2 440 441
-p 0.1 1 0 1.23456790123456
-2 441 442
-p 0.1 1 0 1.23456790123456
-2 441 442
-p 0.1 1 0 1.23456790123456
-2 442 443
-p 0.1 1 0 1.23456790123457
-2 442 443
-p 0.1 1 0 1.23456790123457
-2 443 444
-p 0.1 1 0 1.23456790123456
-2 443 444
-p 0.1 1 0 1.23456790123456
-2 444 445
-p 0.1 1 0 1.23456790123456
-2 444 445
-p 0.1 1 0 1.23456790123456
-2 445 446
-p 0.1 1 0 1.23456790123457
-2 445 446
-p 0.1 1 0 1.23456790123457
-2 446 447
-p 0.1 1 0 1.23456790123457
-2 446 447
-p 0.1 1 0 1.23456790123457
-2 447 448
-p 0.1 1 0 1.23456790123458
-2 447 448
-p 0.1 1 0 1.23456790123458
-2 448 449
-p 0.1 1 0 1.23456790123457
-2 448 449
-p 0.1 1 0 1.23456790123457
-2 449 450
-p 0.1 1 0 1.23456790123456
-2 449 450
-p 0.1 1 0 1.23456790123456
-2 450 451
-p 0.1 1 0 1.23456790123456
-2 450 451
-p 0.1 1 0 1.23456790123456
-2 451 452
-p 0.1 1 0 1.23456790123457
-2 451 452
-p 0.1 1 0 1.23456790123457
-2 452 453
-p 0.1 1 0 1.23456790123456
-2 452 453
-p 0.1 1 0 1.23456790123456
-2 453 454
-p 0.1 1 0 1.23456790123456
-2 453 454
-p 0.1 1 0 1.23456790123456
-2 454 455
-p 0.1 1 0 1.23456790123457
-2 454 455
-p 0.1 1 0 1.23456790123457
-2 455 456
-p 0.1 1 0 1.23456790123456
-2 455 456
-p 0.1 1 0 1.23456790123456
-2 456 457
-p 0.1 1 0 1.23456790123456
-2 456 457
-p 0.1 1 0 1.23456790123456
-2 457 458
-p 0.1 1 0 1.23456790123457
-2 457 458
-p 0.1 1 0 1.23456790123457
-2 458 459
-p 0.1 1 0 1.23456790123457
-2 458 459
-p 0.1 1 0 1.23456790123457
-2 459 460
-p 0.1 1 0 1.23456790123458
-2 459 460
-p 0.1 1 0 1.23456790123458
-2 460 461
-p 0.1 1 0 1.23456790123456
-2 460 461
-p 0.1 1 0 1.23456790123456
-2 461 462
-p 0.1 1 0 1.23456790123457
-2 461 462
-p 0.1 1 0 1.23456790123457
-2 462 463
-p 0.1 1 0 1.23456790123457
-2 462 463
-p 0.1 1 0 1.23456790123457
-2 463 464
-p 0.1 1 0 1.23456790123457
-2 463 464
-p 0.1 1 0 1.23456790123457
-2 464 465
-p 0.1 1 0 1.23456790123457
-2 464 465
-p 0.1 1 0 1.23456790123457
-2 465 466
-p 0.1 1 0 1.23456790123457
-2 465 466
-p 0.1 1 0 1.23456790123457
-2 466 467
-p 0.1 1 0 1.23456790123457
-2 466 467
-p 0.1 1 0 1.23456790123457
-2 467 468
-p 0.1 1 0 1.23456790123457
-2 467 468
-p 0.1 1 0 1.23456790123457
-2 468 469
-p 0.1 1 0 1.23456790123457
-2 468 469
-p 0.1 1 0 1.23456790123457
-2 469 470
-p 0.1 1 0 1.23456790123456
-2 469 470
-p 0.1 1 0 1.23456790123456
-2 470 471
-p 0.1 1 0 1.23456790123456
-2 470 471
-p 0.1 1 0 1.23456790123456
-2 471 472
-p 0.1 1 0 1.23456790123456
-2 471 472
-p 0.1 1 0 1.23456790123456
-2 472 473
-p 0.1 1 0 1.23456790123457
-2 472 473
-p 0.1 1 0 1.23456790123457
-2 473 474
-p 0.1 1 0 1.23456790123457
-2 473 474
-p 0.1 1 0 1.23456790123457
-2 474 475
-p 0.1 1 0 1.23456790123456
-2 474 475
-p 0.1 1 0 1.23456790123456
-2 475 476
-p 0.1 1 0 1.23456790123457
-2 475 476
-p 0.1 1 0 1.23456790123457
-2 476 477
-p 0.1 1 0 1.23456790123457
-2 476 477
-p 0.1 1 0 1.23456790123457
-2 477 478
-p 0.1 1 0 1.23456790123457
-2 477 478
-p 0.1 1 0 1.23456790123457
-2 478 479
-p 0.1 1 0 1.23456790123457
-2 478 479
-p 0.1 1 0 1.23456790123457
-2 479 480
-p 0.1 1 0 1.23456790123456
-2 479 480
-p 0.1 1 0 1.23456790123456
-2 480 481
-p 0.1 1 0 1.23456790123457
-2 480 481
-p 0.1 1 0 1.23456790123457
-2 481 482
-p 0.1 1 0 1.23456790123457
-2 481 482
-p 0.1 1 0 1.23456790123457
-2 482 483
-p 0.1 1 0 1.23456790123457
-2 482 483
-p 0.1 1 0 1.23456790123457
-2 483 484
-p 0.1 1 0 1.23456790123458
-2 483 484
-p 0.1 1 0 1.23456790123458
-2 484 485
-p 0.1 1 0 1.23456790123456
-2 484 485
-p 0.1 1 0 1.23456790123456
-2 485 486
-p 0.1 1 0 1.23456790123457
-2 485 486
-p 0.1 1 0 1.23456790123457
-2 486 487
-p 0.1 1 0 1.23456790123457
-2 486 487
-p 0.1 1 0 1.23456790123457
-2 487 488
-p 0.1 1 0 1.23456790123458
-2 487 488
-p 0.1 1 0 1.23456790123458
-2 488 489
-p 0.1 1 0 1.23456790123457
-2 488 489
-p 0.1 1 0 1.23456790123457
-2 489 490
-p 0.1 1 0 1.23456790123457
-2 489 490
-p 0.1 1 0 1.23456790123457
-2 490 491
-p 0.1 1 0 1.23456790123457
-2 490 491
-p 0.1 1 0 1.23456790123457
-2 491 492
-p 0.1 1 0 1.23456790123458
-2 491 492
-p 0.1 1 0 1.23456790123458
-2 492 493
-p 0.1 1 0 1.23456790123457
-2 492 493
-p 0.1 1 0 1.23456790123457
-2 493 494
-p 0.1 1 0 1.23456790123457
-2 493 494
-p 0.1 1 0 1.23456790123457
-2 494 495
-p 0.1 1 0 1.23456790123457
-2 494 495
-p 0.1 1 0 1.23456790123457
-2 495 496
-p 0.1 1 0 1.23456790123457
-2 495 496
-p 0.1 1 0 1.23456790123457
-2 496 497
-p 0.1 1 0 1.23456790123457
-2 496 497
-p 0.1 1 0 1.23456790123457
-2 497 498
-p 0.1 1 0 1.23456790123457
-2 497 498
-p 0.1 1 0 1.23456790123457
-2 498 499
-p 0.1 1 0 1.23456790123456
-2 498 499
-p 0.1 1 0 1.23456790123456
-2 499 500
-p 0.1 1 0 1.23456790123458
-2 499 500
-p 0.1 1 0 1.23456790123458
-2 500 501
-p 0.1 1 0 1.23456790123457
-2 500 501
-p 0.1 1 0 1.23456790123457
-2 501 502
-p 0.1 1 0 1.23456790123457
-2 501 502
-p 0.1 1 0 1.23456790123457
-2 502 503
-p 0.1 1 0 1.23456790123458
-2 502 503
-p 0.1 1 0 1.23456790123458
-2 503 504
-p 0.1 1 0 1.23456790123456
-2 503 504
-p 0.1 1 0 1.23456790123456
-2 504 505
-p 0.1 1 0 1.23456790123457
-2 504 505
-p 0.1 1 0 1.23456790123457
-2 505 506
-p 0.1 1 0 1.23456790123457
-2 505 506
-p 0.1 1 0 1.23456790123457
-2 506 507
-p 0.1 1 0 1.23456790123457
-2 506 507
-p 0.1 1 0 1.23456790123457
-2 507 508
-p 0.1 1 0 1.23456790123457
-2 507 508
-p 0.1 1 0 1.23456790123457
-2 508 509
-p 0.1 1 0 1.23456790123457
-2 508 509
-p 0.1 1 0 1.23456790123457
-2 509 510
-p 0.1 1 0 1.23456790123457
-2 509 510
-p 0.1 1 0 1.23456790123457
-2 510 511
-p 0.1 1 0 1.23456790123456
-2 510 511
-p 0.1 1 0 1.23456790123456
-2 511 512
-p 0.1 1 0 1.23456790123457
-2 511 512
-p 0.1 1 0 1.23456790123457
-2 512 513
-p 0.1 1 0 1.23456790123457
-2 512 513
-p 0.1 1 0 1.23456790123457
-2 513 514
-p 0.1 1 0 1.23456790123457
-2 513 514
-p 0.1 1 0 1.23456790123457
-2 514 515
-p 0.1 1 0 1.23456790123457
-2 514 515
-p 0.1 1 0 1.23456790123457
-2 515 516
-p 0.1 1 0 1.23456790123456
-2 515 516
-p 0.1 1 0 1.23456790123456
-2 516 517
-p 0.1 1 0 1.23456790123457
-2 516 517
-p 0.1 1 0 1.23456790123457
-2 517 518
-p 0.1 1 0 1.23456790123457
-2 517 518
-p 0.1 1 0 1.23456790123457
-2 518 519
-p 0.1 1 0 1.23456790123457
-2 518 519
-p 0.1 1 0 1.23456790123457
-2 519 520
-p 0.1 1 0 1.23456790123457
-2 519 520
-p 0.1 1 0 1.23456790123457
-2 520 521
-p 0.1 1 0 1.23456790123457
-2 520 521
-p 0.1 1 0 1.23456790123457
-2 521 522
-p 0.1 1 0 1.23456790123457
-2 521 522
-p 0.1 1 0 1.23456790123457
-2 522 523
-p 0.1 1 0 1.23456790123456
-2 522 523
-p 0.1 1 0 1.23456790123456
-2 523 524
-p 0.1 1 0 1.23456790123458
-2 523 524
-p 0.1 1 0 1.23456790123458
-2 524 525
-p 0.1 1 0 1.23456790123457
-2 524 525
-p 0.1 1 0 1.23456790123457
-2 525 526
-p 0.1 1 0 1.23456790123457
-2 525 526
-p 0.1 1 0 1.23456790123457
-2 526 527
-p 0.1 1 0 1.23456790123458
-2 526 527
-p 0.1 1 0 1.23456790123458
-2 527 528
-p 0.1 1 0 1.23456790123456
-2 527 528
-p 0.1 1 0 1.23456790123456
-2 528 529
-p 0.1 1 0 1.23456790123457
-2 528 529
-p 0.1 1 0 1.23456790123457
-2 529 530
-p 0.1 1 0 1.23456790123457
-2 529 530
-p 0.1 1 0 1.23456790123457
-2 530 531
-p 0.1 1 0 1.23456790123457
-2 530 531
-p 0.1 1 0 1.23456790123457
-2 531 532
-p 0.1 1 0 1.23456790123457
-2 531 532
-p 0.1 1 0 1.23456790123457
-2 532 533
-p 0.1 1 0 1.23456790123457
-2 532 533
-p 0.1 1 0 1.23456790123457
-2 533 534
-p 0.1 1 0 1.23456790123457
-2 533 534
-p 0.1 1 0 1.23456790123457
-2 534 535
-p 0.1 1 0 1.23456790123458
-2 534 535
-p 0.1 1 0 1.23456790123458
-2 535 536
-p 0.1 1 0 1.23456790123457
-2 535 536
-p 0.1 1 0 1.23456790123457
-2 536 537
-p 0.1 1 0 1.23456790123457
-2 536 537
-p 0.1 1 0 1.23456790123457
-2 537 538
-p 0.1 1 0 1.23456790123457
-2 537 538
-p 0.1 1 0 1.23456790123457
-2 538 539
-p 0.1 1 0 1.23456790123458
-2 538 539
-p 0.1 1 0 1.23456790123458
-2 539 540
-p 0.1 1 0 1.23456790123458
-2 539 540
-p 0.1 1 0 1.23456790123458
-2 540 541
-p 0.1 1 0 1.23456790123457
-2 540 541
-p 0.1 1 0 1.23456790123457
-2 541 542
-p 0.1 1 0 1.23456790123457
-2 541 542
-p 0.1 1 0 1.23456790123457
-2 542 543
-p 0.1 1 0 1.23456790123457
-2 542 543
-p 0.1 1 0 1.23456790123457
-2 543 544
-p 0.1 1 0 1.23456790123457
-2 543 544
-p 0.1 1 0 1.23456790123457
-2 544 545
-p 0.1 1 0 1.23456790123457
-2 544 545
-p 0.1 1 0 1.23456790123457
-2 545 546
-p 0.1 1 0 1.23456790123457
-2 545 546
-p 0.1 1 0 1.23456790123457
-2 546 547
-p 0.1 1 0 1.23456790123457
-2 546 547
-p 0.1 1 0 1.23456790123457
-2 547 548
-p 0.1 1 0 1.23456790123457
-2 547 548
-p 0.1 1 0 1.23456790123457
-2 548 549
-p 0.1 1 0 1.23456790123457
-2 548 549
-p 0.1 1 0 1.23456790123457
-2 549 550
-p 0.1 1 0 1.23456790123457
-2 549 550
-p 0.1 1 0 1.23456790123457
-2 550 551
-p 0.1 1 0 1.23456790123457
-2 550 551
-p 0.1 1 0 1.23456790123457
-2 551 552
-p 0.1 1 0 1.23456790123457
-2 551 552
-p 0.1 1 0 1.23456790123457
-2 552 553
-p 0.1 1 0 1.23456790123457
-2 552 553
-p 0.1 1 0 1.23456790123457
-2 553 554
-p 0.1 1 0 1.23456790123457
-2 553 554
-p 0.1 1 0 1.23456790123457
-2 554 555
-p 0.1 1 0 1.23456790123457
-2 554 555
-p 0.1 1 0 1.23456790123457
-2 555 556
-p 0.1 1 0 1.23456790123457
-2 555 556
-p 0.1 1 0 1.23456790123457
-2 556 557
-p 0.1 1 0 1.23456790123457
-2 556 557
-p 0.1 1 0 1.23456790123457
-2 557 558
-p 0.1 1 0 1.23456790123457
-2 557 558
-p 0.1 1 0 1.23456790123457
-2 558 559
-p 0.1 1 0 1.23456790123458
-2 558 559
-p 0.1 1 0 1.23456790123458
-2 559 560
-p 0.1 1 0 1.23456790123458
-2 559 560
-p 0.1 1 0 1.23456790123458
-2 560 561
-p 0.1 1 0 1.23456790123457
-2 560 561
-p 0.1 1 0 1.23456790123457
-2 561 562
-p 0.1 1 0 1.23456790123457
-2 561 562
-p 0.1 1 0 1.23456790123457
-2 562 563
-p 0.1 1 0 1.23456790123458
-2 562 563
-p 0.1 1 0 1.23456790123458
-2 563 564
-p 0.1 1 0 1.23456790123458
-2 563 564
-p 0.1 1 0 1.23456790123458
-2 564 565
-p 0.1 1 0 1.23456790123457
-2 564 565
-p 0.1 1 0 1.23456790123457
-2 565 566
-p 0.1 1 0 1.23456790123457
-2 565 566
-p 0.1 1 0 1.23456790123457
-2 566 567
-p 0.1 1 0 1.23456790123457
-2 566 567
-p 0.1 1 0 1.23456790123457
-2 567 568
-p 0.1 1 0 1.23456790123457
-2 567 568
-p 0.1 1 0 1.23456790123457
-2 568 569
-p 0.1 1 0 1.23456790123457
-2 568 569
-p 0.1 1 0 1.23456790123457
-2 569 570
-p 0.1 1 0 1.23456790123457
-2 569 570
-p 0.1 1 0 1.23456790123457
-2 570 571
-p 0.1 1 0 1.23456790123457
-2 570 571
-p 0.1 1 0 1.23456790123457
-2 571 572
-p 0.1 1 0 1.23456790123456
-2 571 572
-p 0.1 1 0 1.23456790123456
-2 572 573
-p 0.1 1 0 1.23456790123457
-2 572 573
-p 0.1 1 0 1.23456790123457
-2 573 574
-p 0.1 1 0 1.23456790123457
-2 573 574
-p 0.1 1 0 1.23456790123457
-2 574 575
-p 0.1 1 0 1.23456790123456
-2 574 575
-p 0.1 1 0 1.23456790123456
-2 575 576
-p 0.1 1 0 1.23456790123457
-2 575 576
-p 0.1 1 0 1.23456790123457
-2 576 577
-p 0.1 1 0 1.23456790123457
-2 576 577
-p 0.1 1 0 1.23456790123457
-2 577 578
-p 0.1 1 0 1.23456790123457
-2 577 578
-p 0.1 1 0 1.23456790123457
-2 578 579
-p 0.1 1 0 1.23456790123457
-2 578 579
-p 0.1 1 0 1.23456790123457
-2 579 580
-p 0.1 1 0 1.23456790123457
-2 579 580
-p 0.1 1 0 1.23456790123457
-2 580 581
-p 0.1 1 0 1.23456790123457
-2 580 581
-p 0.1 1 0 1.23456790123457
-2 581 582
-p 0.1 1 0 1.23456790123457
-2 581 582
-p 0.1 1 0 1.23456790123457
-2 582 583
-p 0.1 1 0 1.23456790123457
-2 582 583
-p 0.1 1 0 1.23456790123457
-2 583 584
-p 0.1 1 0 1.23456790123457
-2 583 584
-p 0.1 1 0 1.23456790123457
-2 584 585
-p 0.1 1 0 1.23456790123457
-2 584 585
-p 0.1 1 0 1.23456790123457
-2 585 586
-p 0.1 1 0 1.23456790123457
-2 585 586
-p 0.1 1 0 1.23456790123457
-2 586 587
-p 0.1 1 0 1.23456790123456
-2 586 587
-p 0.1 1 0 1.23456790123456
-2 587 588
-p 0.1 1 0 1.23456790123456
-2 587 588
-p 0.1 1 0 1.23456790123456
-2 588 589
-p 0.1 1 0 1.23456790123457
-2 588 589
-p 0.1 1 0 1.23456790123457
-2 589 590
-p 0.1 1 0 1.23456790123457
-2 589 590
-p 0.1 1 0 1.23456790123457
-2 590 591
-p 0.1 1 0 1.23456790123457
-2 590 591
-p 0.1 1 0 1.23456790123457
-2 591 592
-p 0.1 1 0 1.23456790123457
-2 591 592
-p 0.1 1 0 1.23456790123457
-2 592 593
-p 0.1 1 0 1.23456790123457
-2 592 593
-p 0.1 1 0 1.23456790123457
-2 593 594
-p 0.1 1 0 1.23456790123457
-2 593 594
-p 0.1 1 0 1.23456790123457
-2 594 595
-p 0.1 1 0 1.23456790123457
-2 594 595
-p 0.1 1 0 1.23456790123457
-2 595 596
-p 0.1 1 0 1.23456790123456
-2 595 596
-p 0.1 1 0 1.23456790123456
-2 596 597
-p 0.1 1 0 1.23456790123457
-2 596 597
-p 0.1 1 0 1.23456790123457
-2 597 598
-p 0.1 1 0 1.23456790123457
-2 597 598
-p 0.1 1 0 1.23456790123457
-2 598 599
-p 0.1 1 0 1.23456790123457
-2 598 599
-p 0.1 1 0 1.23456790123457
-2 599 600
-p 0.1 1 0 1.23456790123457
-2 599 600
-p 0.1 1 0 1.23456790123457
-2 600 601
-p 0.1 1 0 1.23456790123457
-2 600 601
-p 0.1 1 0 1.23456790123457
-2 601 602
-p 0.1 1 0 1.23456790123457
-2 601 602
-p 0.1 1 0 1.23456790123457
-2 602 603
-p 0.1 1 0 1.23456790123457
-2 602 603
-p 0.1 1 0 1.23456790123457
-2 603 604
-p 0.1 1 0 1.23456790123457
-2 603 604
-p 0.1 1 0 1.23456790123457
-2 604 605
-p 0.1 1 0 1.23456790123457
-2 604 605
-p 0.1 1 0 1.23456790123457
-2 605 606
-p 0.1 1 0 1.23456790123457
-2 605 606
-p 0.1 1 0 1.23456790123457
-2 606 607
-p 0.1 1 0 1.23456790123456
-2 606 607
-p 0.1 1 0 1.23456790123456
-2 607 608
-p 0.1 1 0 1.23456790123457
-2 607 608
-p 0.1 1 0 1.23456790123457
-2 608 609
-p 0.1 1 0 1.23456790123457
-2 608 609
-p 0.1 1 0 1.23456790123457
-2 609 610
-p 0.1 1 0 1.23456790123457
-2 609 610
-p 0.1 1 0 1.23456790123457
-2 610 611
-p 0.1 1 0 1.23456790123457
-2 610 611
-p 0.1 1 0 1.23456790123457
-2 611 612
-p 0.1 1 0 1.23456790123456
-2 611 612
-p 0.1 1 0 1.23456790123456
-2 612 613
-p 0.1 1 0 1.23456790123457
-2 612 613
-p 0.1 1 0 1.23456790123457
-2 613 614
-p 0.1 1 0 1.23456790123457
-2 613 614
-p 0.1 1 0 1.23456790123457
-2 614 615
-p 0.1 1 0 1.23456790123457
-2 614 615
-p 0.1 1 0 1.23456790123457
-2 615 616
-p 0.1 1 0 1.23456790123457
-2 615 616
-p 0.1 1 0 1.23456790123457
-2 616 617
-p 0.1 1 0 1.23456790123457
-2 616 617
-p 0.1 1 0 1.23456790123457
-2 617 618
-p 0.1 1 0 1.23456790123457
-2 617 618
-p 0.1 1 0 1.23456790123457
-2 618 619
-p 0.1 1 0 1.23456790123457
-2 618 619
-p 0.1 1 0 1.23456790123457
-2 619 620
-p 0.1 1 0 1.23456790123457
-2 619 620
-p 0.1 1 0 1.23456790123457
-2 620 621
-p 0.1 1 0 1.23456790123457
-2 620 621
-p 0.1 1 0 1.23456790123457
-2 621 622
-p 0.1 1 0 1.23456790123457
-2 621 622
-p 0.1 1 0 1.23456790123457
-2 622 623
-p 0.1 1 0 1.23456790123457
-2 622 623
-p 0.1 1 0 1.23456790123457
-2 623 624
-p 0.1 1 0 1.23456790123457
-2 623 624
-p 0.1 1 0 1.23456790123457
-2 624 625
-p 0.1 1 0 1.23456790123457
-2 624 625
-p 0.1 1 0 1.23456790123457
-2 625 626
-p 0.1 1 0 1.23456790123457
-2 625 626
-p 0.1 1 0 1.23456790123457
-2 626 627
-p 0.1 1 0 1.23456790123457
-2 626 627
-p 0.1 1 0 1.23456790123457
-2 627 628
-p 0.1 1 0 1.23456790123457
-2 627 628
-p 0.1 1 0 1.23456790123457
-2 628 629
-p 0.1 1 0 1.23456790123457
-2 628 629
-p 0.1 1 0 1.23456790123457
-2 629 630
-p 0.1 1 0 1.23456790123457
-2 629 630
-p 0.1 1 0 1.23456790123457
-2 630 631
-p 0.1 1 0 1.23456790123457
-2 630 631
-p 0.1 1 0 1.23456790123457
-2 631 632
-p 0.1 1 0 1.23456790123457
-2 631 632
-p 0.1 1 0 1.23456790123457
-2 632 633
-p 0.1 1 0 1.23456790123457
-2 632 633
-p 0.1 1 0 1.23456790123457
-2 633 634
-p 0.1 1 0 1.23456790123457
-2 633 634
-p 0.1 1 0 1.23456790123457
-2 634 635
-p 0.1 1 0 1.23456790123457
-2 634 635
-p 0.1 1 0 1.23456790123457
-2 635 636
-p 0.1 1 0 1.23456790123457
-2 635 636
-p 0.1 1 0 1.23456790123457
-2 636 637
-p 0.1 1 0 1.23456790123457
-2 636 637
-p 0.1 1 0 1.23456790123457
-2 637 638
-p 0.1 1 0 1.23456790123457
-2 637 638
-p 0.1 1 0 1.23456790123457
-2 638 639
-p 0.1 1 0 1.23456790123457
-2 638 639
-p 0.1 1 0 1.23456790123457
-2 639 640
-p 0.1 1 0 1.23456790123457
-2 639 640
-p 0.1 1 0 1.23456790123457
-2 640 641
-p 0.1 1 0 1.23456790123457
-2 640 641
-p 0.1 1 0 1.23456790123457
-2 641 642
-p 0.1 1 0 1.23456790123457
-2 641 642
-p 0.1 1 0 1.23456790123457
-2 642 643
-p 0.1 1 0 1.23456790123457
-2 642 643
-p 0.1 1 0 1.23456790123457
-2 643 644
-p 0.1 1 0 1.23456790123457
-2 643 644
-p 0.1 1 0 1.23456790123457
-2 644 645
-p 0.1 1 0 1.23456790123457
-2 644 645
-p 0.1 1 0 1.23456790123457
-2 645 646
-p 0.1 1 0 1.23456790123457
-2 645 646
-p 0.1 1 0 1.23456790123457
-2 646 647
-p 0.1 1 0 1.23456790123457
-2 646 647
-p 0.1 1 0 1.23456790123457
-2 647 648
-p 0.1 1 0 1.23456790123457
-2 647 648
-p 0.1 1 0 1.23456790123457
-2 648 649
-p 0.1 1 0 1.23456790123457
-2 648 649
-p 0.1 1 0 1.23456790123457
-2 649 650
-p 0.1 1 0 1.23456790123457
-2 649 650
-p 0.1 1 0 1.23456790123457
-2 650 651
-p 0.1 1 0 1.23456790123457
-2 650 651
-p 0.1 1 0 1.23456790123457
-2 651 652
-p 0.1 1 0 1.23456790123457
-2 651 652
-p 0.1 1 0 1.23456790123457
-2 652 653
-p 0.1 1 0 1.23456790123457
-2 652 653
-p 0.1 1 0 1.23456790123457
-2 653 654
-p 0.1 1 0 1.23456790123457
-2 653 654
-p 0.1 1 0 1.23456790123457
-2 654 655
-p 0.1 1 0 1.23456790123457
-2 654 655
-p 0.1 1 0 1.23456790123457
-2 655 656
-p 0.1 1 0 1.23456790123457
-2 655 656
-p 0.1 1 0 1.23456790123457
-2 656 657
-p 0.1 1 0 1.23456790123457
-2 656 657
-p 0.1 1 0 1.23456790123457
-2 657 658
-p 0.1 1 0 1.23456790123457
-2 657 658
-p 0.1 1 0 1.23456790123457
-2 658 659
-p 0.1 1 0 1.23456790123457
-2 658 659
-p 0.1 1 0 1.23456790123457
-2 659 660
-p 0.1 1 0 1.23456790123457
-2 659 660
-p 0.1 1 0 1.23456790123457
-2 660 661
-p 0.1 1 0 1.23456790123457
-2 660 661
-p 0.1 1 0 1.23456790123457
-2 661 662
-p 0.1 1 0 1.23456790123457
-2 661 662
-p 0.1 1 0 1.23456790123457
-2 662 663
-p 0.1 1 0 1.23456790123457
-2 662 663
-p 0.1 1 0 1.23456790123457
-2 663 664
-p 0.1 1 0 1.23456790123457
-2 663 664
-p 0.1 1 0 1.23456790123457
-2 664 665
-p 0.1 1 0 1.23456790123457
-2 664 665
-p 0.1 1 0 1.23456790123457
-2 665 666
-p 0.1 1 0 1.23456790123457
-2 665 666
-p 0.1 1 0 1.23456790123457
-2 666 667
-p 0.1 1 0 1.23456790123457
-2 666 667
-p 0.1 1 0 1.23456790123457
-2 667 668
-p 0.1 1 0 1.23456790123457
-2 667 668
-p 0.1 1 0 1.23456790123457
-2 668 669
-p 0.1 1 0 1.23456790123457
-2 668 669
-p 0.1 1 0 1.23456790123457
-2 669 670
-p 0.1 1 0 1.23456790123457
-2 669 670
-p 0.1 1 0 1.23456790123457
-2 670 671
-p 0.1 1 0 1.23456790123457
-2 670 671
-p 0.1 1 0 1.23456790123457
-2 671 672
-p 0.1 1 0 1.23456790123457
-2 671 672
-p 0.1 1 0 1.23456790123457
-2 672 673
-p 0.1 1 0 1.23456790123457
-2 672 673
-p 0.1 1 0 1.23456790123457
-2 673 674
-p 0.1 1 0 1.23456790123457
-2 673 674
-p 0.1 1 0 1.23456790123457
-2 674 675
-p 0.1 1 0 1.23456790123457
-2 674 675
-p 0.1 1 0 1.23456790123457
-2 675 676
-p 0.1 1 0 1.23456790123457
-2 675 676
-p 0.1 1 0 1.23456790123457
-2 676 677
-p 0.1 1 0 1.23456790123457
-2 676 677
-p 0.1 1 0 1.23456790123457
-2 677 678
-p 0.1 1 0 1.23456790123457
-2 677 678
-p 0.1 1 0 1.23456790123457
-2 678 679
-p 0.1 1 0 1.23456790123457
-2 678 679
-p 0.1 1 0 1.23456790123457
-2 679 680
-p 0.1 1 0 1.23456790123457
-2 679 680
-p 0.1 1 0 1.23456790123457
-2 680 681
-p 0.1 1 0 1.23456790123457
-2 680 681
-p 0.1 1 0 1.23456790123457
-2 681 682
-p 0.1 1 0 1.23456790123457
-2 681 682
-p 0.1 1 0 1.23456790123457
-2 682 683
-p 0.1 1 0 1.23456790123457
-2 682 683
-p 0.1 1 0 1.23456790123457
-2 683 684
-p 0.1 1 0 1.23456790123456
-2 683 684
-p 0.1 1 0 1.23456790123456
-2 684 685
-p 0.1 1 0 1.23456790123457
-2 684 685
-p 0.1 1 0 1.23456790123457
-2 685 686
-p 0.1 1 0 1.23456790123457
-2 685 686
-p 0.1 1 0 1.23456790123457
-2 686 687
-p 0.1 1 0 1.23456790123457
-2 686 687
-p 0.1 1 0 1.23456790123457
-2 687 688
-p 0.1 1 0 1.23456790123457
-2 687 688
-p 0.1 1 0 1.23456790123457
-2 688 689
-p 0.1 1 0 1.23456790123457
-2 688 689
-p 0.1 1 0 1.23456790123457
-2 689 690
-p 0.1 1 0 1.23456790123457
-2 689 690
-p 0.1 1 0 1.23456790123457
-2 690 691
-p 0.1 1 0 1.23456790123456
-2 690 691
-p 0.1 1 0 1.23456790123456
-2 691 692
-p 0.1 1 0 1.23456790123457
-2 691 692
-p 0.1 1 0 1.23456790123457
-2 692 693
-p 0.1 1 0 1.23456790123457
-2 692 693
-p 0.1 1 0 1.23456790123457
-2 693 694
-p 0.1 1 0 1.23456790123457
-2 693 694
-p 0.1 1 0 1.23456790123457
-2 694 695
-p 0.1 1 0 1.23456790123456
-2 694 695
-p 0.1 1 0 1.23456790123456
-2 695 696
-p 0.1 1 0 1.23456790123457
-2 695 696
-p 0.1 1 0 1.23456790123457
-2 696 697
-p 0.1 1 0 1.23456790123457
-2 696 697
-p 0.1 1 0 1.23456790123457
-2 697 698
-p 0.1 1 0 1.23456790123457
-2 697 698
-p 0.1 1 0 1.23456790123457
-2 698 699
-p 0.1 1 0 1.23456790123457
-2 698 699
-p 0.1 1 0 1.23456790123457
-2 699 700
-p 0.1 1 0 1.23456790123457
-2 699 700
-p 0.1 1 0 1.23456790123457
-2 700 701
-p 0.1 1 0 1.23456790123457
-2 700 701
-p 0.1 1 0 1.23456790123457
-2 701 702
-p 0.1 1 0 1.23456790123457
-2 701 702
-p 0.1 1 0 1.23456790123457
-2 702 703
-p 0.1 1 0 1.23456790123457
-2 702 703
-p 0.1 1 0 1.23456790123457
-2 703 704
-p 0.1 1 0 1.23456790123457
-2 703 704
-p 0.1 1 0 1.23456790123457
-2 704 705
-p 0.1 1 0 1.23456790123457
-2 704 705
-p 0.1 1 0 1.23456790123457
-2 705 706
-p 0.1 1 0 1.23456790123457
-2 705 706
-p 0.1 1 0 1.23456790123457
-2 706 707
-p 0.1 1 0 1.23456790123457
-2 706 707
-p 0.1 1 0 1.23456790123457
-2 707 708
-p 0.1 1 0 1.23456790123457
-2 707 708
-p 0.1 1 0 1.23456790123457
-2 708 709
-p 0.1 1 0 1.23456790123457
-2 708 709
-p 0.1 1 0 1.23456790123457
-2 709 710
-p 0.1 1 0 1.23456790123457
-2 709 710
-p 0.1 1 0 1.23456790123457
-2 710 711
-p 0.1 1 0 1.23456790123457
-2 710 711
-p 0.1 1 0 1.23456790123457
-2 711 712
-p 0.1 1 0 1.23456790123457
-2 711 712
-p 0.1 1 0 1.23456790123457
-2 712 713
-p 0.1 1 0 1.23456790123457
-2 712 713
-p 0.1 1 0 1.23456790123457
-2 713 714
-p 0.1 1 0 1.23456790123457
-2 713 714
-p 0.1 1 0 1.23456790123457
-2 714 715
-p 0.1 1 0 1.23456790123457
-2 714 715
-p 0.1 1 0 1.23456790123457
-2 715 716
-p 0.1 1 0 1.23456790123456
-2 715 716
-p 0.1 1 0 1.23456790123456
-2 716 717
-p 0.1 1 0 1.23456790123457
-2 716 717
-p 0.1 1 0 1.23456790123457
-2 717 718
-p 0.1 1 0 1.23456790123457
-2 717 718
-p 0.1 1 0 1.23456790123457
-2 718 719
-p 0.1 1 0 1.23456790123457
-2 718 719
-p 0.1 1 0 1.23456790123457
-2 719 720
-p 0.1 1 0 1.23456790123457
-2 719 720
-p 0.1 1 0 1.23456790123457
-2 720 721
-p 0.1 1 0 1.23456790123457
-2 720 721
-p 0.1 1 0 1.23456790123457
-2 721 722
-p 0.1 1 0 1.23456790123457
-2 721 722
-p 0.1 1 0 1.23456790123457
-2 722 723
-p 0.1 1 0 1.23456790123457
-2 722 723
-p 0.1 1 0 1.23456790123457
-2 723 724
-p 0.1 1 0 1.23456790123457
-2 723 724
-p 0.1 1 0 1.23456790123457
-2 724 725
-p 0.1 1 0 1.23456790123457
-2 724 725
-p 0.1 1 0 1.23456790123457
-2 725 726
-p 0.1 1 0 1.23456790123457
-2 725 726
-p 0.1 1 0 1.23456790123457
-2 726 727
-p 0.1 1 0 1.23456790123457
-2 726 727
-p 0.1 1 0 1.23456790123457
-2 727 728
-p 0.1 1 0 1.23456790123457
-2 727 728
-p 0.1 1 0 1.23456790123457
-2 728 729
-p 0.1 1 0 1.23456790123457
-2 728 729
-p 0.1 1 0 1.23456790123457
-2 729 730
-p 0.1 1 0 1.23456790123457
-2 729 730
-p 0.1 1 0 1.23456790123457
-2 730 731
-p 0.1 1 0 1.23456790123457
-2 730 731
-p 0.1 1 0 1.23456790123457
-2 731 732
-p 0.1 1 0 1.23456790123457
-2 731 732
-p 0.1 1 0 1.23456790123457
-2 732 733
-p 0.1 1 0 1.23456790123457
-2 732 733
-p 0.1 1 0 1.23456790123457
-2 733 734
-p 0.1 1 0 1.23456790123457
-2 733 734
-p 0.1 1 0 1.23456790123457
-2 734 735
-p 0.1 1 0 1.23456790123457
-2 734 735
-p 0.1 1 0 1.23456790123457
-2 735 736
-p 0.1 1 0 1.23456790123457
-2 735 736
-p 0.1 1 0 1.23456790123457
-2 736 737
-p 0.1 1 0 1.23456790123457
-2 736 737
-p 0.1 1 0 1.23456790123457
-2 737 738
-p 0.1 1 0 1.23456790123457
-2 737 738
-p 0.1 1 0 1.23456790123457
-2 738 739
-p 0.1 1 0 1.23456790123457
-2 738 739
-p 0.1 1 0 1.23456790123457
-2 739 740
-p 0.1 1 0 1.23456790123457
-2 739 740
-p 0.1 1 0 1.23456790123457
-2 740 741
-p 0.1 1 0 1.23456790123457
-2 740 741
-p 0.1 1 0 1.23456790123457
-2 741 742
-p 0.1 1 0 1.23456790123457
-2 741 742
-p 0.1 1 0 1.23456790123457
-2 742 743
-p 0.1 1 0 1.23456790123457
-2 742 743
-p 0.1 1 0 1.23456790123457
-2 743 744
-p 0.1 1 0 1.23456790123457
-2 743 744
-p 0.1 1 0 1.23456790123457
-2 744 745
-p 0.1 1 0 1.23456790123457
-2 744 745
-p 0.1 1 0 1.23456790123457
-2 745 746
-p 0.1 1 0 1.23456790123457
-2 745 746
-p 0.1 1 0 1.23456790123457
-2 746 747
-p 0.1 1 0 1.23456790123457
-2 746 747
-p 0.1 1 0 1.23456790123457
-2 747 748
-p 0.1 1 0 1.23456790123457
-2 747 748
-p 0.1 1 0 1.23456790123457
-2 748 749
-p 0.1 1 0 1.23456790123457
-2 748 749
-p 0.1 1 0 1.23456790123457
-2 749 750
-p 0.1 1 0 1.23456790123457
-2 749 750
-p 0.1 1 0 1.23456790123457
-2 750 751
-p 0.1 1 0 1.23456790123457
-2 750 751
-p 0.1 1 0 1.23456790123457
-2 751 752
-p 0.1 1 0 1.23456790123457
-2 751 752
-p 0.1 1 0 1.23456790123457
-2 752 753
-p 0.1 1 0 1.23456790123457
-2 752 753
-p 0.1 1 0 1.23456790123457
-2 753 754
-p 0.1 1 0 1.23456790123457
-2 753 754
-p 0.1 1 0 1.23456790123457
-2 754 755
-p 0.1 1 0 1.23456790123457
-2 754 755
-p 0.1 1 0 1.23456790123457
-2 755 756
-p 0.1 1 0 1.23456790123457
-2 755 756
-p 0.1 1 0 1.23456790123457
-2 756 757
-p 0.1 1 0 1.23456790123457
-2 756 757
-p 0.1 1 0 1.23456790123457
-2 757 758
-p 0.1 1 0 1.23456790123457
-2 757 758
-p 0.1 1 0 1.23456790123457
-2 758 759
-p 0.1 1 0 1.23456790123457
-2 758 759
-p 0.1 1 0 1.23456790123457
-2 759 760
-p 0.1 1 0 1.23456790123457
-2 759 760
-p 0.1 1 0 1.23456790123457
-2 760 761
-p 0.1 1 0 1.23456790123457
-2 760 761
-p 0.1 1 0 1.23456790123457
-2 761 762
-p 0.1 1 0 1.23456790123457
-2 761 762
-p 0.1 1 0 1.23456790123457
-2 762 763
-p 0.1 1 0 1.23456790123457
-2 762 763
-p 0.1 1 0 1.23456790123457
-2 763 764
-p 0.1 1 0 1.23456790123457
-2 763 764
-p 0.1 1 0 1.23456790123457
-2 764 765
-p 0.1 1 0 1.23456790123457
-2 764 765
-p 0.1 1 0 1.23456790123457
-2 765 766
-p 0.1 1 0 1.23456790123457
-2 765 766
-p 0.1 1 0 1.23456790123457
-2 766 767
-p 0.1 1 0 1.23456790123457
-2 766 767
-p 0.1 1 0 1.23456790123457
-2 767 768
-p 0.1 1 0 1.23456790123457
-2 767 768
-p 0.1 1 0 1.23456790123457
-2 768 1
-p 0.1 1 0 1.23456790123457
-2 768 1
-p 0.1 1 0 1.23456790123457
-2 769 770
-p 0.1 1 0 0.37037037037037
-2 770 771
-p 0.1 1 0 0.37037037037037
-2 771 772
-p 0.1 1 0 0.37037037037037
-2 772 773
-p 0.1 1 0 0.37037037037037
-2 773 774
-p 0.1 1 0 0.37037037037037
-2 774 775
-p 0.1 1 0 0.37037037037037
-2 775 776
-p 0.1 1 0 0.370370370370371
-2 776 777
-p 0.1 1 0 0.37037037037037
-2 777 778
-p 0.1 1 0 0.37037037037037
-2 778 779
-p 0.1 1 0 0.37037037037037
-2 779 780
-p 0.1 1 0 0.37037037037037
-2 780 781
-p 0.1 1 0 0.37037037037037
-2 781 782
-p 0.1 1 0 0.37037037037037
-2 782 783
-p 0.1 1 0 0.37037037037037
-2 783 784
-p 0.1 1 0 0.370370370370371
-2 784 785
-p 0.1 1 0 0.37037037037037
-2 785 786
-p 0.1 1 0 0.37037037037037
-2 786 787
-p 0.1 1 0 0.37037037037037
-2 787 788
-p 0.1 1 0 0.37037037037037
-2 788 789
-p 0.1 1 0 0.37037037037037
-2 789 790
-p 0.1 1 0 0.370370370370371
-2 790 791
-p 0.1 1 0 0.37037037037037
-2 791 792
-p 0.1 1 0 0.37037037037037
-2 792 793
-p 0.1 1 0 0.37037037037037
-2 793 794
-p 0.1 1 0 0.37037037037037
-2 794 795
-p 0.1 1 0 0.37037037037037
-2 795 796
-p 0.1 1 0 0.37037037037037
-2 796 797
-p 0.1 1 0 0.37037037037037
-2 797 798
-p 0.1 1 0 0.37037037037037
-2 798 799
-p 0.1 1 0 0.37037037037037
-2 799 800
-p 0.1 1 0 0.37037037037037
-2 800 801
-p 0.1 1 0 0.37037037037037
-2 801 802
-p 0.1 1 0 0.37037037037037
-2 802 803
-p 0.1 1 0 0.370370370370371
-2 803 804
-p 0.1 1 0 0.370370370370371
-2 804 805
-p 0.1 1 0 0.37037037037037
-2 805 806
-p 0.1 1 0 0.370370370370371
-2 806 807
-p 0.1 1 0 0.370370370370371
-2 807 808
-p 0.1 1 0 0.37037037037037
-2 808 809
-p 0.1 1 0 0.370370370370371
-2 809 810
-p 0.1 1 0 0.37037037037037
-2 810 811
-p 0.1 1 0 0.370370370370371
-2 811 812
-p 0.1 1 0 0.37037037037037
-2 812 813
-p 0.1 1 0 0.370370370370371
-2 813 814
-p 0.1 1 0 0.37037037037037
-2 814 815
-p 0.1 1 0 0.37037037037037
-2 815 816
-p 0.1 1 0 0.37037037037037
-2 816 817
-p 0.1 1 0 0.370370370370371
-2 817 818
-p 0.1 1 0 0.37037037037037
-2 818 819
-p 0.1 1 0 0.37037037037037
-2 819 820
-p 0.1 1 0 0.37037037037037
-2 820 821
-p 0.1 1 0 0.37037037037037
-2 821 822
-p 0.1 1 0 0.37037037037037
-2 822 823
-p 0.1 1 0 0.37037037037037
-2 823 824
-p 0.1 1 0 0.37037037037037
-2 824 825
-p 0.1 1 0 0.37037037037037
-2 825 826
-p 0.1 1 0 0.37037037037037
-2 826 827
-p 0.1 1 0 0.37037037037037
-2 827 828
-p 0.1 1 0 0.37037037037037
-2 828 829
-p 0.1 1 0 0.37037037037037
-2 829 830
-p 0.1 1 0 0.37037037037037
-2 830 831
-p 0.1 1 0 0.37037037037037
-2 831 832
-p 0.1 1 0 0.37037037037037
-2 832 833
-p 0.1 1 0 0.370370370370371
-2 833 834
-p 0.1 1 0 0.370370370370371
-2 834 835
-p 0.1 1 0 0.37037037037037
-2 835 836
-p 0.1 1 0 0.370370370370369
-2 836 837
-p 0.1 1 0 0.37037037037037
-2 837 838
-p 0.1 1 0 0.370370370370371
-2 838 839
-p 0.1 1 0 0.370370370370369
-2 839 840
-p 0.1 1 0 0.37037037037037
-2 840 841
-p 0.1 1 0 0.37037037037037
-2 841 842
-p 0.1 1 0 0.370370370370371
-2 842 843
-p 0.1 1 0 0.370370370370371
-2 843 844
-p 0.1 1 0 0.37037037037037
-2 844 845
-p 0.1 1 0 0.370370370370371
-2 845 846
-p 0.1 1 0 0.37037037037037
-2 846 847
-p 0.1 1 0 0.370370370370371
-2 847 848
-p 0.1 1 0 0.370370370370371
-2 848 849
-p 0.1 1 0 0.37037037037037
-2 849 850
-p 0.1 1 0 0.37037037037037
-2 850 851
-p 0.1 1 0 0.370370370370371
-2 851 852
-p 0.1 1 0 0.37037037037037
-2 852 853
-p 0.1 1 0 0.37037037037037
-2 853 854
-p 0.1 1 0 0.370370370370371
-2 854 855
-p 0.1 1 0 0.37037037037037
-2 855 856
-p 0.1 1 0 0.370370370370371
-2 856 857
-p 0.1 1 0 0.370370370370371
-2 857 858
-p 0.1 1 0 0.37037037037037
-2 858 859
-p 0.1 1 0 0.370370370370369
-2 859 860
-p 0.1 1 0 0.370370370370369
-2 860 861
-p 0.1 1 0 0.37037037037037
-2 861 862
-p 0.1 1 0 0.370370370370371
-2 862 863
-p 0.1 1 0 0.370370370370369
-2 863 864
-p 0.1 1 0 0.37037037037037
-2 864 865
-p 0.1 1 0 0.370370370370371
-2 865 866
-p 0.1 1 0 0.370370370370371
-2 866 867
-p 0.1 1 0 0.370370370370371
-2 867 868
-p 0.1 1 0 0.37037037037037
-2 868 869
-p 0.1 1 0 0.370370370370371
-2 869 870
-p 0.1 1 0 0.37037037037037
-2 870 871
-p 0.1 1 0 0.370370370370371
-2 871 872
-p 0.1 1 0 0.370370370370369
-2 872 873
-p 0.1 1 0 0.37037037037037
-2 873 874
-p 0.1 1 0 0.37037037037037
-2 874 875
-p 0.1 1 0 0.370370370370369
-2 875 876
-p 0.1 1 0 0.37037037037037
-2 876 877
-p 0.1 1 0 0.37037037037037
-2 877 878
-p 0.1 1 0 0.370370370370371
-2 878 879
-p 0.1 1 0 0.370370370370371
-2 879 880
-p 0.1 1 0 0.37037037037037
-2 880 881
-p 0.1 1 0 0.370370370370371
-2 881 882
-p 0.1 1 0 0.370370370370371
-2 882 883
-p 0.1 1 0 0.370370370370371
-2 883 884
-p 0.1 1 0 0.370370370370371
-2 884 885
-p 0.1 1 0 0.370370370370371
-2 885 886
-p 0.1 1 0 0.370370370370371
-2 886 887
-p 0.1 1 0 0.370370370370371
-2 887 888
-p 0.1 1 0 0.370370370370371
-2 888 889
-p 0.1 1 0 0.370370370370371
-2 889 890
-p 0.1 1 0 0.370370370370371
-2 890 891
-p 0.1 1 0 0.37037037037037
-2 891 892
-p 0.1 1 0 0.370370370370372
-2 892 893
-p 0.1 1 0 0.370370370370371
-2 893 894
-p 0.1 1 0 0.370370370370371
-2 894 895
-p 0.1 1 0 0.37037037037037
-2 895 896
-p 0.1 1 0 0.370370370370369
-2 896 897
-p 0.1 1 0 0.370370370370371
-2 897 898
-p 0.1 1 0 0.370370370370371
-2 898 899
-p 0.1 1 0 0.370370370370369
-2 899 900
-p 0.1 1 0 0.37037037037037
-2 900 901
-p 0.1 1 0 0.370370370370371
-2 901 902
-p 0.1 1 0 0.370370370370371
-2 902 903
-p 0.1 1 0 0.370370370370372
-2 903 904
-p 0.1 1 0 0.37037037037037
-2 904 905
-p 0.1 1 0 0.370370370370371
-2 905 906
-p 0.1 1 0 0.370370370370371
-2 906 907
-p 0.1 1 0 0.370370370370371
-2 907 908
-p 0.1 1 0 0.370370370370371
-2 908 909
-p 0.1 1 0 0.370370370370371
-2 909 910
-p 0.1 1 0 0.370370370370371
-2 910 911
-p 0.1 1 0 0.370370370370371
-2 911 912
-p 0.1 1 0 0.370370370370371
-2 912 913
-p 0.1 1 0 0.370370370370371
-2 913 914
-p 0.1 1 0 0.370370370370371
-2 914 915
-p 0.1 1 0 0.37037037037037
-2 915 916
-p 0.1 1 0 0.370370370370371
-2 916 917
-p 0.1 1 0 0.370370370370371
-2 917 918
-p 0.1 1 0 0.37037037037037
-2 918 919
-p 0.1 1 0 0.37037037037037
-2 919 920
-p 0.1 1 0 0.370370370370369
-2 920 921
-p 0.1 1 0 0.37037037037037
-2 921 922
-p 0.1 1 0 0.37037037037037
-2 922 923
-p 0.1 1 0 0.370370370370369
-2 923 924
-p 0.1 1 0 0.37037037037037
-2 924 925
-p 0.1 1 0 0.37037037037037
-2 925 926
-p 0.1 1 0 0.370370370370369
-2 926 927
-p 0.1 1 0 0.37037037037037
-2 927 928
-p 0.1 1 0 0.370370370370368
-2 928 929
-p 0.1 1 0 0.370370370370371
-2 929 930
-p 0.1 1 0 0.37037037037037
-2 930 931
-p 0.1 1 0 0.370370370370369
-2 931 932
-p 0.1 1 0 0.370370370370371
-2 932 933
-p 0.1 1 0 0.37037037037037
-2 933 934
-p 0.1 1 0 0.370370370370369
-2 934 935
-p 0.1 1 0 0.370370370370371
-2 935 936
-p 0.1 1 0 0.370370370370368
-2 936 937
-p 0.1 1 0 0.370370370370369
-2 937 938
-p 0.1 1 0 0.370370370370371
-2 938 939
-p 0.1 1 0 0.37037037037037
-2 939 940
-p 0.1 1 0 0.370370370370372
-2 940 941
-p 0.1 1 0 0.370370370370369
-2 941 942
-p 0.1 1 0 0.37037037037037
-2 942 943
-p 0.1 1 0 0.370370370370369
-2 943 944
-p 0.1 1 0 0.370370370370369
-2 944 945
-p 0.1 1 0 0.37037037037037
-2 945 946
-p 0.1 1 0 0.37037037037037
-2 946 947
-p 0.1 1 0 0.370370370370369
-2 947 948
-p 0.1 1 0 0.37037037037037
-2 948 949
-p 0.1 1 0 0.37037037037037
-2 949 950
-p 0.1 1 0 0.370370370370369
-2 950 951
-p 0.1 1 0 0.370370370370371
-2 951 952
-p 0.1 1 0 0.370370370370368
-2 952 953
-p 0.1 1 0 0.370370370370371
-2 953 954
-p 0.1 1 0 0.370370370370369
-2 954 955
-p 0.1 1 0 0.370370370370369
-2 955 956
-p 0.1 1 0 0.370370370370371
-2 956 957
-p 0.1 1 0 0.37037037037037
-2 957 958
-p 0.1 1 0 0.370370370370369
-2 958 959
-p 0.1 1 0 0.370370370370371
-2 959 960
-p 0.1 1 0 0.370370370370369
-2 960 961
-p 0.1 1 0 0.370370370370369
-2 961 962
-p 0.1 1 0 0.370370370370371
-2 962 963
-p 0.1 1 0 0.370370370370372
-2 963 964
-p 0.1 1 0 0.37037037037037
-2 964 965
-p 0.1 1 0 0.370370370370371
-2 965 966
-p 0.1 1 0 0.37037037037037
-2 966 967
-p 0.1 1 0 0.370370370370369
-2 967 968
-p 0.1 1 0 0.370370370370371
-2 968 969
-p 0.1 1 0 0.37037037037037
-2 969 970
-p 0.1 1 0 0.37037037037037
-2 970 971
-p 0.1 1 0 0.370370370370371
-2 971 972
-p 0.1 1 0 0.370370370370369
-2 972 973
-p 0.1 1 0 0.37037037037037
-2 973 974
-p 0.1 1 0 0.370370370370371
-2 974 975
-p 0.1 1 0 0.37037037037037
-2 975 976
-p 0.1 1 0 0.370370370370372
-2 976 977
-p 0.1 1 0 0.370370370370371
-2 977 978
-p 0.1 1 0 0.37037037037037
-2 978 979
-p 0.1 1 0 0.370370370370369
-2 979 980
-p 0.1 1 0 0.370370370370371
-2 980 981
-p 0.1 1 0 0.37037037037037
-2 981 982
-p 0.1 1 0 0.37037037037037
-2 982 983
-p 0.1 1 0 0.370370370370367
-2 983 984
-p 0.1 1 0 0.370370370370368
-2 984 985
-p 0.1 1 0 0.370370370370369
-2 985 986
-p 0.1 1 0 0.370370370370371
-2 986 987
-p 0.1 1 0 0.37037037037037
-2 987 988
-p 0.1 1 0 0.37037037037037
-2 988 989
-p 0.1 1 0 0.370370370370371
-2 989 990
-p 0.1 1 0 0.370370370370369
-2 990 991
-p 0.1 1 0 0.370370370370369
-2 991 992
-p 0.1 1 0 0.370370370370371
-2 992 993
-p 0.1 1 0 0.370370370370369
-2 993 994
-p 0.1 1 0 0.370370370370369
-2 994 995
-p 0.1 1 0 0.370370370370371
-2 995 996
-p 0.1 1 0 0.370370370370369
-2 996 997
-p 0.1 1 0 0.370370370370369
-2 997 998
-p 0.1 1 0 0.370370370370371
-2 998 999
-p 0.1 1 0 0.37037037037037
-2 999 1000
-p 0.1 1 0 0.37037037037037
-2 1000 1001
-p 0.1 1 0 0.370370370370371
-2 1001 1002
-p 0.1 1 0 0.370370370370369
-2 1002 1003
-p 0.1 1 0 0.370370370370369
-2 1003 1004
-p 0.1 1 0 0.370370370370371
-2 1004 1005
-p 0.1 1 0 0.370370370370369
-2 1005 1006
-p 0.1 1 0 0.37037037037037
-2 1006 1007
-p 0.1 1 0 0.370370370370371
-2 1007 1008
-p 0.1 1 0 0.370370370370369
-2 1008 1009
-p 0.1 1 0 0.37037037037037
-2 1009 1010
-p 0.1 1 0 0.370370370370371
-2 1010 1011
-p 0.1 1 0 0.37037037037037
-2 1011 1012
-p 0.1 1 0 0.370370370370372
-2 1012 1013
-p 0.1 1 0 0.370370370370371
-2 1013 1014
-p 0.1 1 0 0.37037037037037
-2 1014 1015
-p 0.1 1 0 0.370370370370369
-2 1015 1016
-p 0.1 1 0 0.370370370370371
-2 1016 1017
-p 0.1 1 0 0.37037037037037
-2 1017 1018
-p 0.1 1 0 0.37037037037037
-2 1018 1019
-p 0.1 1 0 0.370370370370371
-2 1019 1020
-p 0.1 1 0 0.370370370370369
-2 1020 1021
-p 0.1 1 0 0.37037037037037
-2 1021 1022
-p 0.1 1 0 0.370370370370371
-2 1022 1023
-p 0.1 1 0 0.370370370370372
-2 1023 1024
-p 0.1 1 0 0.37037037037037
-2 1024 1025
-p 0.1 1 0 0.370370370370371
-2 1025 1026
-p 0.1 1 0 0.370370370370369
-2 1026 1027
-p 0.1 1 0 0.370370370370369
-2 1027 1028
-p 0.1 1 0 0.370370370370371
-2 1028 1029
-p 0.1 1 0 0.370370370370369
-2 1029 1030
-p 0.1 1 0 0.370370370370369
-2 1030 1031
-p 0.1 1 0 0.370370370370371
-2 1031 1032
-p 0.1 1 0 0.370370370370369
-2 1032 1033
-p 0.1 1 0 0.370370370370369
-2 1033 1034
-p 0.1 1 0 0.370370370370371
-2 1034 1035
-p 0.1 1 0 0.37037037037037
-2 1035 1036
-p 0.1 1 0 0.370370370370372
-2 1036 1037
-p 0.1 1 0 0.370370370370371
-2 1037 1038
-p 0.1 1 0 0.370370370370369
-2 1038 1039
-p 0.1 1 0 0.370370370370369
-2 1039 1040
-p 0.1 1 0 0.370370370370371
-2 1040 1041
-p 0.1 1 0 0.370370370370369
-2 1041 1042
-p 0.1 1 0 0.370370370370369
-2 1042 1043
-p 0.1 1 0 0.370370370370371
-2 1043 1044
-p 0.1 1 0 0.370370370370369
-2 1044 1045
-p 0.1 1 0 0.370370370370369
-2 1045 1046
-p 0.1 1 0 0.370370370370371
-2 1046 1047
-p 0.1 1 0 0.370370370370372
-2 1047 1048
-p 0.1 1 0 0.37037037037037
-2 1048 1049
-p 0.1 1 0 0.370370370370371
-2 1049 1050
-p 0.1 1 0 0.370370370370372
-2 1050 1051
-p 0.1 1 0 0.370370370370372
-2 1051 1052
-p 0.1 1 0 0.370370370370371
-2 1052 1053
-p 0.1 1 0 0.370370370370372
-2 1053 1054
-p 0.1 1 0 0.37037037037037
-2 1054 1055
-p 0.1 1 0 0.370370370370371
-2 1055 1056
-p 0.1 1 0 0.370370370370369
-2 1056 1057
-p 0.1 1 0 0.37037037037037
-2 1057 1058
-p 0.1 1 0 0.370370370370371
-2 1058 1059
-p 0.1 1 0 0.37037037037037
-2 1059 1060
-p 0.1 1 0 0.37037037037037
-2 1060 1061
-p 0.1 1 0 0.370370370370371
-2 1061 1062
-p 0.1 1 0 0.370370370370371
-2 1062 1063
-p 0.1 1 0 0.37037037037037
-2 1063 1064
-p 0.1 1 0 0.370370370370367
-2 1064 1065
-p 0.1 1 0 0.370370370370371
-2 1065 1066
-p 0.1 1 0 0.370370370370369
-2 1066 1067
-p 0.1 1 0 0.370370370370371
-2 1067 1068
-p 0.1 1 0 0.370370370370368
-2 1068 1069
-p 0.1 1 0 0.370370370370369
-2 1069 1070
-p 0.1 1 0 0.370370370370371
-2 1070 1071
-p 0.1 1 0 0.37037037037037
-2 1071 1072
-p 0.1 1 0 0.37037037037037
-2 1072 1073
-p 0.1 1 0 0.370370370370371
-2 1073 1074
-p 0.1 1 0 0.37037037037037
-2 1074 1075
-p 0.1 1 0 0.370370370370369
-2 1075 1076
-p 0.1 1 0 0.370370370370371
-2 1076 1077
-p 0.1 1 0 0.37037037037037
-2 1077 1078
-p 0.1 1 0 0.370370370370369
-2 1078 1079
-p 0.1 1 0 0.370370370370371
-2 1079 1080
-p 0.1 1 0 0.370370370370369
-2 1080 1081
-p 0.1 1 0 0.370370370370369
-2 1081 1082
-p 0.1 1 0 0.370370370370371
-2 1082 1083
-p 0.1 1 0 0.37037037037037
-2 1083 1084
-p 0.1 1 0 0.370370370370372
-2 1084 1085
-p 0.1 1 0 0.370370370370371
-2 1085 1086
-p 0.1 1 0 0.37037037037037
-2 1086 1087
-p 0.1 1 0 0.370370370370369
-2 1087 1088
-p 0.1 1 0 0.370370370370371
-2 1088 1089
-p 0.1 1 0 0.37037037037037
-2 1089 1090
-p 0.1 1 0 0.37037037037037
-2 1090 1091
-p 0.1 1 0 0.370370370370371
-2 1091 1092
-p 0.1 1 0 0.370370370370369
-2 1092 1093
-p 0.1 1 0 0.37037037037037
-2 1093 1094
-p 0.1 1 0 0.370370370370371
-2 1094 1095
-p 0.1 1 0 0.370370370370372
-2 1095 1096
-p 0.1 1 0 0.37037037037037
-2 1096 1097
-p 0.1 1 0 0.370370370370371
-2 1097 1098
-p 0.1 1 0 0.370370370370369
-2 1098 1099
-p 0.1 1 0 0.370370370370369
-2 1099 1100
-p 0.1 1 0 0.370370370370371
-2 1100 1101
-p 0.1 1 0 0.370370370370369
-2 1101 1102
-p 0.1 1 0 0.370370370370369
-2 1102 1103
-p 0.1 1 0 0.370370370370371
-2 1103 1104
-p 0.1 1 0 0.370370370370369
-2 1104 1105
-p 0.1 1 0 0.370370370370369
-2 1105 1106
-p 0.1 1 0 0.370370370370371
-2 1106 1107
-p 0.1 1 0 0.370370370370369
-2 1107 1108
-p 0.1 1 0 0.370370370370369
-2 1108 1109
-p 0.1 1 0 0.370370370370371
-2 1109 1110
-p 0.1 1 0 0.370370370370369
-2 1110 1111
-p 0.1 1 0 0.370370370370367
-2 1111 1112
-p 0.1 1 0 0.370370370370371
-2 1112 1113
-p 0.1 1 0 0.370370370370369
-2 1113 1114
-p 0.1 1 0 0.370370370370371
-2 1114 1115
-p 0.1 1 0 0.370370370370367
-2 1115 1116
-p 0.1 1 0 0.370370370370369
-2 1116 1117
-p 0.1 1 0 0.370370370370371
-2 1117 1118
-p 0.1 1 0 0.370370370370371
-2 1118 1119
-p 0.1 1 0 0.370370370370369
-2 1119 1120
-p 0.1 1 0 0.370370370370369
-2 1120 1121
-p 0.1 1 0 0.370370370370371
-2 1121 1122
-p 0.1 1 0 0.370370370370369
-2 1122 1123
-p 0.1 1 0 0.370370370370369
-2 1123 1124
-p 0.1 1 0 0.370370370370371
-2 1124 1125
-p 0.1 1 0 0.370370370370369
-2 1125 1126
-p 0.1 1 0 0.370370370370371
-2 1126 1127
-p 0.1 1 0 0.370370370370371
-2 1127 1128
-p 0.1 1 0 0.370370370370373
-2 1128 1129
-p 0.1 1 0 0.370370370370371
-2 1129 1130
-p 0.1 1 0 0.370370370370371
-2 1130 1131
-p 0.1 1 0 0.370370370370371
-2 1131 1132
-p 0.1 1 0 0.370370370370371
-2 1132 1133
-p 0.1 1 0 0.370370370370371
-2 1133 1134
-p 0.1 1 0 0.370370370370369
-2 1134 1135
-p 0.1 1 0 0.370370370370369
-2 1135 1136
-p 0.1 1 0 0.370370370370371
-2 1136 1137
-p 0.1 1 0 0.370370370370369
-2 1137 1138
-p 0.1 1 0 0.370370370370369
-2 1138 1139
-p 0.1 1 0 0.370370370370371
-2 1139 1140
-p 0.1 1 0 0.370370370370369
-2 1140 1141
-p 0.1 1 0 0.370370370370369
-2 1141 1142
-p 0.1 1 0 0.370370370370371
-2 1142 1143
-p 0.1 1 0 0.370370370370375
-2 1143 1144
-p 0.1 1 0 0.370370370370371
-2 1144 1145
-p 0.1 1 0 0.370370370370371
-2 1145 1146
-p 0.1 1 0 0.370370370370369
-2 1146 1147
-p 0.1 1 0 0.370370370370369
-2 1147 1148
-p 0.1 1 0 0.370370370370371
-2 1148 1149
-p 0.1 1 0 0.370370370370369
-2 1149 1150
-p 0.1 1 0 0.370370370370369
-2 1150 1151
-p 0.1 1 0 0.370370370370371
-2 1151 1152
-p 0.1 1 0 0.370370370370369
-2 1152 1153
-p 0.1 1 0 0.370370370370369
-2 1153 1154
-p 0.1 1 0 0.370370370370371
-2 1154 1155
-p 0.1 1 0 0.370370370370371
-2 1155 1156
-p 0.1 1 0 0.370370370370373
-2 1156 1157
-p 0.1 1 0 0.370370370370371
-2 1157 1158
-p 0.1 1 0 0.370370370370369
-2 1158 1159
-p 0.1 1 0 0.370370370370369
-2 1159 1160
-p 0.1 1 0 0.370370370370371
-2 1160 1161
-p 0.1 1 0 0.370370370370369
-2 1161 1162
-p 0.1 1 0 0.370370370370369
-2 1162 1163
-p 0.1 1 0 0.370370370370371
-2 1163 1164
-p 0.1 1 0 0.370370370370369
-2 1164 1165
-p 0.1 1 0 0.370370370370369
-2 1165 1166
-p 0.1 1 0 0.370370370370371
-2 1166 1167
-p 0.1 1 0 0.370370370370373
-2 1167 1168
-p 0.1 1 0 0.370370370370371
-2 1168 1169
-p 0.1 1 0 0.370370370370371
-2 1169 1170
-p 0.1 1 0 0.370370370370369
-2 1170 1171
-p 0.1 1 0 0.370370370370369
-2 1171 1172
-p 0.1 1 0 0.370370370370371
-2 1172 1173
-p 0.1 1 0 0.370370370370369
-2 1173 1174
-p 0.1 1 0 0.370370370370371
-2 1174 1175
-p 0.1 1 0 0.370370370370367
-2 1175 1176
-p 0.1 1 0 0.370370370370371
-2 1176 1177
-p 0.1 1 0 0.370370370370371
-2 1177 1178
-p 0.1 1 0 0.370370370370371
-2 1178 1179
-p 0.1 1 0 0.370370370370373
-2 1179 1180
-p 0.1 1 0 0.370370370370371
-2 1180 1181
-p 0.1 1 0 0.370370370370371
-2 1181 1182
-p 0.1 1 0 0.370370370370371
-2 1182 1183
-p 0.1 1 0 0.370370370370367
-2 1183 1184
-p 0.1 1 0 0.370370370370371
-2 1184 1185
-p 0.1 1 0 0.370370370370371
-2 1185 1186
-p 0.1 1 0 0.370370370370371
-2 1186 1187
-p 0.1 1 0 0.370370370370371
-2 1187 1188
-p 0.1 1 0 0.370370370370367
-2 1188 1189
-p 0.1 1 0 0.370370370370371
-2 1189 1190
-p 0.1 1 0 0.370370370370371
-2 1190 1191
-p 0.1 1 0 0.370370370370371
-2 1191 1192
-p 0.1 1 0 0.370370370370371
-2 1192 1193
-p 0.1 1 0 0.370370370370371
-2 1193 1194
-p 0.1 1 0 0.370370370370369
-2 1194 1195
-p 0.1 1 0 0.370370370370369
-2 1195 1196
-p 0.1 1 0 0.370370370370367
-2 1196 1197
-p 0.1 1 0 0.370370370370369
-2 1197 1198
-p 0.1 1 0 0.370370370370369
-2 1198 1199
-p 0.1 1 0 0.370370370370371
-2 1199 1200
-p 0.1 1 0 0.370370370370369
-2 1200 1201
-p 0.1 1 0 0.370370370370369
-2 1201 1202
-p 0.1 1 0 0.370370370370371
-2 1202 1203
-p 0.1 1 0 0.370370370370373
-2 1203 1204
-p 0.1 1 0 0.370370370370371
-2 1204 1205
-p 0.1 1 0 0.370370370370371
-2 1205 1206
-p 0.1 1 0 0.370370370370369
-2 1206 1207
-p 0.1 1 0 0.370370370370369
-2 1207 1208
-p 0.1 1 0 0.370370370370371
-2 1208 1209
-p 0.1 1 0 0.370370370370369
-2 1209 1210
-p 0.1 1 0 0.370370370370369
-2 1210 1211
-p 0.1 1 0 0.370370370370371
-2 1211 1212
-p 0.1 1 0 0.370370370370369
-2 1212 1213
-p 0.1 1 0 0.370370370370369
-2 1213 1214
-p 0.1 1 0 0.370370370370371
-2 1214 1215
-p 0.1 1 0 0.370370370370371
-2 1215 1216
-p 0.1 1 0 0.370370370370373
-2 1216 1217
-p 0.1 1 0 0.370370370370371
-2 1217 1218
-p 0.1 1 0 0.370370370370369
-2 1218 1219
-p 0.1 1 0 0.370370370370369
-2 1219 1220
-p 0.1 1 0 0.370370370370371
-2 1220 1221
-p 0.1 1 0 0.370370370370369
-2 1221 1222
-p 0.1 1 0 0.370370370370369
-2 1222 1223
-p 0.1 1 0 0.370370370370371
-2 1223 1224
-p 0.1 1 0 0.370370370370369
-2 1224 1225
-p 0.1 1 0 0.370370370370369
-2 1225 1226
-p 0.1 1 0 0.370370370370371
-2 1226 1227
-p 0.1 1 0 0.370370370370371
-2 1227 1228
-p 0.1 1 0 0.370370370370373
-2 1228 1229
-p 0.1 1 0 0.370370370370369
-2 1229 1230
-p 0.1 1 0 0.370370370370372
-2 1230 1231
-p 0.1 1 0 0.370370370370372
-2 1231 1232
-p 0.1 1 0 0.370370370370371
-2 1232 1233
-p 0.1 1 0 0.370370370370372
-2 1233 1234
-p 0.1 1 0 0.370370370370372
-2 1234 1235
-p 0.1 1 0 0.370370370370371
-2 1235 1236
-p 0.1 1 0 0.370370370370372
-2 1236 1237
-p 0.1 1 0 0.370370370370372
-2 1237 1238
-p 0.1 1 0 0.370370370370369
-2 1238 1239
-p 0.1 1 0 0.370370370370369
-2 1239 1240
-p 0.1 1 0 0.370370370370367
-2 1240 1241
-p 0.1 1 0 0.370370370370371
-2 1241 1242
-p 0.1 1 0 0.370370370370371
-2 1242 1243
-p 0.1 1 0 0.370370370370367
-2 1243 1244
-p 0.1 1 0 0.370370370370371
-2 1244 1245
-p 0.1 1 0 0.370370370370371
-2 1245 1246
-p 0.1 1 0 0.370370370370371
-2 1246 1247
-p 0.1 1 0 0.370370370370371
-2 1247 1248
-p 0.1 1 0 0.370370370370367
-2 1248 1249
-p 0.1 1 0 0.370370370370371
-2 1249 1250
-p 0.1 1 0 0.370370370370371
-2 1250 1251
-p 0.1 1 0 0.370370370370371
-2 1251 1252
-p 0.1 1 0 0.370370370370373
-2 1252 1253
-p 0.1 1 0 0.370370370370369
-2 1253 1254
-p 0.1 1 0 0.370370370370372
-2 1254 1255
-p 0.1 1 0 0.370370370370372
-2 1255 1256
-p 0.1 1 0 0.370370370370373
-2 1256 1257
-p 0.1 1 0 0.370370370370372
-2 1257 1258
-p 0.1 1 0 0.370370370370372
-2 1258 1259
-p 0.1 1 0 0.370370370370371
-2 1259 1260
-p 0.1 1 0 0.370370370370373
-2 1260 1261
-p 0.1 1 0 0.370370370370372
-2 1261 1262
-p 0.1 1 0 0.370370370370371
-2 1262 1263
-p 0.1 1 0 0.370370370370372
-2 1263 1264
-p 0.1 1 0 0.370370370370371
-2 1264 1265
-p 0.1 1 0 0.370370370370371
-2 1265 1266
-p 0.1 1 0 0.370370370370372
-2 1266 1267
-p 0.1 1 0 0.370370370370369
-2 1267 1268
-p 0.1 1 0 0.370370370370373
-2 1268 1269
-p 0.1 1 0 0.370370370370372
-2 1269 1270
-p 0.1 1 0 0.370370370370372
-2 1270 1271
-p 0.1 1 0 0.370370370370373
-2 1271 1272
-p 0.1 1 0 0.370370370370369
-2 1272 1273
-p 0.1 1 0 0.370370370370372
-2 1273 1274
-p 0.1 1 0 0.370370370370371
-2 1274 1275
-p 0.1 1 0 0.370370370370371
-2 1275 1276
-p 0.1 1 0 0.370370370370372
-2 1276 1277
-p 0.1 1 0 0.370370370370371
-2 1277 1278
-p 0.1 1 0 0.370370370370372
-2 1278 1279
-p 0.1 1 0 0.370370370370368
-2 1279 1280
-p 0.1 1 0 0.370370370370371
-2 1280 1281
-p 0.1 1 0 0.370370370370372
-2 1281 1282
-p 0.1 1 0 0.370370370370372
-2 1282 1283
-p 0.1 1 0 0.370370370370371
-2 1283 1284
-p 0.1 1 0 0.370370370370368
-2 1284 1285
-p 0.1 1 0 0.370370370370372
-2 1285 1286
-p 0.1 1 0 0.370370370370371
-2 1286 1287
-p 0.1 1 0 0.370370370370372
-2 1287 1288
-p 0.1 1 0 0.370370370370371
-2 1288 1289
-p 0.1 1 0 0.370370370370371
-2 1289 1290
-p 0.1 1 0 0.370370370370372
-2 1290 1291
-p 0.1 1 0 0.370370370370369
-2 1291 1292
-p 0.1 1 0 0.370370370370373
-2 1292 1293
-p 0.1 1 0 0.370370370370372
-2 1293 1294
-p 0.1 1 0 0.370370370370372
-2 1294 1295
-p 0.1 1 0 0.370370370370373
-2 1295 1296
-p 0.1 1 0 0.370370370370369
-2 1296 1297
-p 0.1 1 0 0.370370370370372
-2 1297 1298
-p 0.1 1 0 0.370370370370371
-2 1298 1299
-p 0.1 1 0 0.370370370370371
-2 1299 1300
-p 0.1 1 0 0.370370370370372
-2 1300 1301
-p 0.1 1 0 0.370370370370371
-2 1301 1302
-p 0.1 1 0 0.370370370370372
-2 1302 1303
-p 0.1 1 0 0.370370370370373
-2 1303 1304
-p 0.1 1 0 0.370370370370371
-2 1304 1305
-p 0.1 1 0 0.370370370370372
-2 1305 1306
-p 0.1 1 0 0.370370370370372
-2 1306 1307
-p 0.1 1 0 0.370370370370373
-2 1307 1308
-p 0.1 1 0 0.370370370370373
-2 1308 1309
-p 0.1 1 0 0.370370370370372
-2 1309 1310
-p 0.1 1 0 0.370370370370371
-2 1310 1311
-p 0.1 1 0 0.370370370370371
-2 1311 1312
-p 0.1 1 0 0.370370370370372
-2 1312 1313
-p 0.1 1 0 0.370370370370371
-2 1313 1314
-p 0.1 1 0 0.370370370370372
-2 1314 1315
-p 0.1 1 0 0.370370370370372
-2 1315 1316
-p 0.1 1 0 0.370370370370371
-2 1316 1317
-p 0.1 1 0 0.370370370370372
-2 1317 1318
-p 0.1 1 0 0.370370370370372
-2 1318 1319
-p 0.1 1 0 0.370370370370371
-2 1319 1320
-p 0.1 1 0 0.370370370370372
-2 1320 1321
-p 0.1 1 0 0.370370370370372
-2 1321 1322
-p 0.1 1 0 0.370370370370371
-2 1322 1323
-p 0.1 1 0 0.370370370370372
-2 1323 1324
-p 0.1 1 0 0.370370370370371
-2 1324 1325
-p 0.1 1 0 0.370370370370371
-2 1325 1326
-p 0.1 1 0 0.370370370370372
-2 1326 1327
-p 0.1 1 0 0.370370370370373
-2 1327 1328
-p 0.1 1 0 0.370370370370373
-2 1328 1329
-p 0.1 1 0 0.370370370370372
-2 1329 1330
-p 0.1 1 0 0.370370370370372
-2 1330 1331
-p 0.1 1 0 0.370370370370373
-2 1331 1332
-p 0.1 1 0 0.370370370370373
-2 1332 1333
-p 0.1 1 0 0.370370370370372
-2 1333 1334
-p 0.1 1 0 0.370370370370371
-2 1334 1335
-p 0.1 1 0 0.370370370370371
-2 1335 1336
-p 0.1 1 0 0.370370370370372
-2 1336 1337
-p 0.1 1 0 0.370370370370371
-2 1337 1338
-p 0.1 1 0 0.37037037037037
-2 1338 1339
-p 0.1 1 0 0.370370370370371
-2 1339 1340
-p 0.1 1 0 0.370370370370369
-2 1340 1341
-p 0.1 1 0 0.37037037037037
-2 1341 1342
-p 0.1 1 0 0.37037037037037
-2 1342 1343
-p 0.1 1 0 0.370370370370369
-2 1343 1344
-p 0.1 1 0 0.370370370370371
-2 1344 1345
-p 0.1 1 0 0.37037037037037
-2 1345 1346
-p 0.1 1 0 0.370370370370371
-2 1346 1347
-p 0.1 1 0 0.370370370370371
-2 1347 1348
-p 0.1 1 0 0.370370370370372
-2 1348 1349
-p 0.1 1 0 0.37037037037037
-2 1349 1350
-p 0.1 1 0 0.37037037037037
-2 1350 1351
-p 0.1 1 0 0.370370370370371
-2 1351 1352
-p 0.1 1 0 0.37037037037037
-2 1352 1353
-p 0.1 1 0 0.37037037037037
-2 1353 1354
-p 0.1 1 0 0.37037037037037
-2 1354 1355
-p 0.1 1 0 0.370370370370369
-2 1355 1356
-p 0.1 1 0 0.370370370370369
-2 1356 1357
-p 0.1 1 0 0.37037037037037
-2 1357 1358
-p 0.1 1 0 0.37037037037037
-2 1358 1359
-p 0.1 1 0 0.37037037037037
-2 1359 1360
-p 0.1 1 0 0.37037037037037
-2 1360 1361
-p 0.1 1 0 0.37037037037037
-2 1361 1362
-p 0.1 1 0 0.37037037037037
-2 1362 1363
-p 0.1 1 0 0.370370370370371
-2 1363 1364
-p 0.1 1 0 0.370370370370369
-2 1364 1365
-p 0.1 1 0 0.37037037037037
-2 1365 1366
-p 0.1 1 0 0.37037037037037
-2 1366 1367
-p 0.1 1 0 0.37037037037037
-2 1367 1368
-p 0.1 1 0 0.370370370370371
-2 1368 1369
-p 0.1 1 0 0.37037037037037
-2 1369 1370
-p 0.1 1 0 0.370370370370371
-2 1370 1371
-p 0.1 1 0 0.370370370370372
-2 1371 1372
-p 0.1 1 0 0.370370370370371
-2 1372 1373
-p 0.1 1 0 0.370370370370371
-2 1373 1374
-p 0.1 1 0 0.370370370370372
-2 1374 1375
-p 0.1 1 0 0.370370370370369
-2 1375 1376
-p 0.1 1 0 0.370370370370371
-2 1376 1377
-p 0.1 1 0 0.370370370370372
-2 1377 1378
-p 0.1 1 0 0.370370370370372
-2 1378 1379
-p 0.1 1 0 0.370370370370371
-2 1379 1380
-p 0.1 1 0 0.370370370370369
-2 1380 1381
-p 0.1 1 0 0.370370370370372
-2 1381 1382
-p 0.1 1 0 0.37037037037037
-2 1382 1383
-p 0.1 1 0 0.370370370370372
-2 1383 1384
-p 0.1 1 0 0.370370370370372
-2 1384 1385
-p 0.1 1 0 0.37037037037037
-2 1385 1386
-p 0.1 1 0 0.37037037037037
-2 1386 1387
-p 0.1 1 0 0.370370370370372
-2 1387 1388
-p 0.1 1 0 0.37037037037037
-2 1388 1389
-p 0.1 1 0 0.37037037037037
-2 1389 1390
-p 0.1 1 0 0.37037037037037
-2 1390 1391
-p 0.1 1 0 0.37037037037037
-2 1391 1392
-p 0.1 1 0 0.370370370370372
-2 1392 1393
-p 0.1 1 0 0.37037037037037
-2 1393 1394
-p 0.1 1 0 0.37037037037037
-2 1394 1395
-p 0.1 1 0 0.37037037037037
-2 1395 1396
-p 0.1 1 0 0.37037037037037
-2 1396 1397
-p 0.1 1 0 0.37037037037037
-2 1397 1398
-p 0.1 1 0 0.37037037037037
-2 1398 1399
-p 0.1 1 0 0.370370370370371
-2 1399 1400
-p 0.1 1 0 0.37037037037037
-2 1400 1401
-p 0.1 1 0 0.37037037037037
-2 1401 1402
-p 0.1 1 0 0.37037037037037
-2 1402 1403
-p 0.1 1 0 0.37037037037037
-2 1403 1404
-p 0.1 1 0 0.37037037037037
-2 1404 1405
-p 0.1 1 0 0.37037037037037
-2 1405 1406
-p 0.1 1 0 0.37037037037037
-2 1406 1407
-p 0.1 1 0 0.37037037037037
-2 1407 1408
-p 0.1 1 0 0.37037037037037
-2 1408 1409
-p 0.1 1 0 0.37037037037037
-2 1409 1410
-p 0.1 1 0 0.37037037037037
-2 1410 1411
-p 0.1 1 0 0.37037037037037
-2 1411 1412
-p 0.1 1 0 0.37037037037037
-2 1412 1413
-p 0.1 1 0 0.37037037037037
-2 1413 1414
-p 0.1 1 0 0.37037037037037
-2 1414 1415
-p 0.1 1 0 0.37037037037037
-2 1415 1416
-p 0.1 1 0 0.370370370370372
-2 1416 1417
-p 0.1 1 0 0.37037037037037
-2 1417 1418
-p 0.1 1 0 0.37037037037037
-2 1418 1419
-p 0.1 1 0 0.37037037037037
-2 1419 1420
-p 0.1 1 0 0.370370370370371
-2 1420 1421
-p 0.1 1 0 0.37037037037037
-2 1421 1422
-p 0.1 1 0 0.37037037037037
-2 1422 1423
-p 0.1 1 0 0.370370370370371
-2 1423 1424
-p 0.1 1 0 0.37037037037037
-2 1424 1425
-p 0.1 1 0 0.37037037037037
-2 1425 1426
-p 0.1 1 0 0.37037037037037
-2 1426 1427
-p 0.1 1 0 0.37037037037037
-2 1427 1428
-p 0.1 1 0 0.37037037037037
-2 1428 1429
-p 0.1 1 0 0.37037037037037
-2 1429 1430
-p 0.1 1 0 0.37037037037037
-2 1430 1431
-p 0.1 1 0 0.370370370370371
-2 1431 1432
-p 0.1 1 0 0.37037037037037
-2 1432 1433
-p 0.1 1 0 0.37037037037037
-2 1433 1434
-p 0.1 1 0 0.37037037037037
-2 1434 1435
-p 0.1 1 0 0.370370370370372
-2 1435 1436
-p 0.1 1 0 0.37037037037037
-2 1436 1437
-p 0.1 1 0 0.37037037037037
-2 1437 1438
-p 0.1 1 0 0.37037037037037
-2 1438 1439
-p 0.1 1 0 0.37037037037037
-2 1439 1440
-p 0.1 1 0 0.37037037037037
-2 1440 1441
-p 0.1 1 0 0.37037037037037
-2 1441 1442
-p 0.1 1 0 0.37037037037037
-2 1442 1443
-p 0.1 1 0 0.37037037037037
-2 1443 1444
-p 0.1 1 0 0.37037037037037
-2 1444 1445
-p 0.1 1 0 0.37037037037037
-2 1445 1446
-p 0.1 1 0 0.37037037037037
-2 1446 1447
-p 0.1 1 0 0.37037037037037
-2 1447 1448
-p 0.1 1 0 0.37037037037037
-2 1448 1449
-p 0.1 1 0 0.37037037037037
-2 1449 1450
-p 0.1 1 0 0.37037037037037
-2 1450 1451
-p 0.1 1 0 0.37037037037037
-2 1451 1452
-p 0.1 1 0 0.370370370370369
-2 1452 1453
-p 0.1 1 0 0.37037037037037
-2 1453 1454
-p 0.1 1 0 0.37037037037037
-2 1454 1455
-p 0.1 1 0 0.37037037037037
-2 1455 1456
-p 0.1 1 0 0.37037037037037
-2 1456 1457
-p 0.1 1 0 0.37037037037037
-2 1457 1458
-p 0.1 1 0 0.37037037037037
-2 1458 1459
-p 0.1 1 0 0.370370370370369
-2 1459 1460
-p 0.1 1 0 0.37037037037037
-2 1460 1461
-p 0.1 1 0 0.37037037037037
-2 1461 1462
-p 0.1 1 0 0.37037037037037
-2 1462 1463
-p 0.1 1 0 0.370370370370369
-2 1463 1464
-p 0.1 1 0 0.370370370370371
-2 1464 1465
-p 0.1 1 0 0.37037037037037
-2 1465 1466
-p 0.1 1 0 0.37037037037037
-2 1466 1467
-p 0.1 1 0 0.370370370370371
-2 1467 1468
-p 0.1 1 0 0.370370370370371
-2 1468 1469
-p 0.1 1 0 0.37037037037037
-2 1469 1470
-p 0.1 1 0 0.370370370370371
-2 1470 1471
-p 0.1 1 0 0.37037037037037
-2 1471 1472
-p 0.1 1 0 0.37037037037037
-2 1472 1473
-p 0.1 1 0 0.370370370370371
-2 1473 1474
-p 0.1 1 0 0.370370370370371
-2 1474 1475
-p 0.1 1 0 0.37037037037037
-2 1475 1476
-p 0.1 1 0 0.37037037037037
-2 1476 1477
-p 0.1 1 0 0.370370370370371
-2 1477 1478
-p 0.1 1 0 0.37037037037037
-2 1478 1479
-p 0.1 1 0 0.370370370370371
-2 1479 1480
-p 0.1 1 0 0.370370370370371
-2 1480 1481
-p 0.1 1 0 0.37037037037037
-2 1481 1482
-p 0.1 1 0 0.37037037037037
-2 1482 1483
-p 0.1 1 0 0.37037037037037
-2 1483 1484
-p 0.1 1 0 0.370370370370369
-2 1484 1485
-p 0.1 1 0 0.37037037037037
-2 1485 1486
-p 0.1 1 0 0.370370370370371
-2 1486 1487
-p 0.1 1 0 0.370370370370371
-2 1487 1488
-p 0.1 1 0 0.37037037037037
-2 1488 1489
-p 0.1 1 0 0.370370370370371
-2 1489 1490
-p 0.1 1 0 0.37037037037037
-2 1490 1491
-p 0.1 1 0 0.370370370370371
-2 1491 1492
-p 0.1 1 0 0.370370370370371
-2 1492 1493
-p 0.1 1 0 0.37037037037037
-2 1493 1494
-p 0.1 1 0 0.370370370370371
-2 1494 1495
-p 0.1 1 0 0.37037037037037
-2 1495 1496
-p 0.1 1 0 0.370370370370371
-2 1496 1497
-p 0.1 1 0 0.370370370370371
-2 1497 1498
-p 0.1 1 0 0.370370370370371
-2 1498 1499
-p 0.1 1 0 0.370370370370371
-2 1499 1500
-p 0.1 1 0 0.37037037037037
-2 1500 1501
-p 0.1 1 0 0.370370370370371
-2 1501 1502
-p 0.1 1 0 0.37037037037037
-2 1502 1503
-p 0.1 1 0 0.370370370370371
-2 1503 1504
-p 0.1 1 0 0.370370370370371
-2 1504 1505
-p 0.1 1 0 0.37037037037037
-2 1505 1506
-p 0.1 1 0 0.37037037037037
-2 1506 1507
-p 0.1 1 0 0.37037037037037
-2 1507 1508
-p 0.1 1 0 0.37037037037037
-2 1508 1509
-p 0.1 1 0 0.37037037037037
-2 1509 1510
-p 0.1 1 0 0.37037037037037
-2 1510 1511
-p 0.1 1 0 0.37037037037037
-2 1511 1512
-p 0.1 1 0 0.37037037037037
-2 1512 1513
-p 0.1 1 0 0.37037037037037
-2 1513 1514
-p 0.1 1 0 0.37037037037037
-2 1514 1515
-p 0.1 1 0 0.370370370370371
-2 1515 1516
-p 0.1 1 0 0.37037037037037
-2 1516 1517
-p 0.1 1 0 0.37037037037037
-2 1517 1518
-p 0.1 1 0 0.37037037037037
-2 1518 1519
-p 0.1 1 0 0.370370370370371
-2 1519 1520
-p 0.1 1 0 0.37037037037037
-2 1520 1521
-p 0.1 1 0 0.37037037037037
-2 1521 1522
-p 0.1 1 0 0.37037037037037
-2 1522 1523
-p 0.1 1 0 0.37037037037037
-2 1523 1524
-p 0.1 1 0 0.370370370370371
-2 1524 1525
-p 0.1 1 0 0.37037037037037
-2 1525 1526
-p 0.1 1 0 0.37037037037037
-2 1526 1527
-p 0.1 1 0 0.37037037037037
-2 1527 1528
-p 0.1 1 0 0.37037037037037
-2 1528 1529
-p 0.1 1 0 0.37037037037037
-2 1529 1530
-p 0.1 1 0 0.37037037037037
-2 1530 1531
-p 0.1 1 0 0.37037037037037
-2 1531 1532
-p 0.1 1 0 0.37037037037037
-2 1532 1533
-p 0.1 1 0 0.37037037037037
-2 1533 1534
-p 0.1 1 0 0.37037037037037
-2 1534 1535
-p 0.1 1 0 0.37037037037037
-2 1535 1536
-p 0.1 1 0 0.37037037037037
-2 1536 769
-p 0.1 1 0 0.37037037037037
-Surfaces 2
-1 1.2345679012345681 0 0 0 0 -1 1 0 0 0 -1 0
-1 1.2345679012345681 0 0 0 0 -1 1 0 0 0 -1 0
-Triangulations 2
-1536 1536 1 0.1
-0 0 0 1.23456790123457 0 0 1.85185185185185 -1.06916716516597 0 2.46913580246914 0 0 3.7037037037037 0 0 4.32098765432099 -1.06916716516597 0 3.7037037037037 -2.13833433033195 0 4.93827160493827 -2.13833433033195 0 5.55555555555556 -3.20750149549792 0 6.17283950617284 -2.13833433033195 0 7.40740740740741 -2.13833433033195 0 6.79012345679012 -1.06916716516597 0 7.40740740740741 0 0 8.64197530864198 0 0 9.25925925925926 -1.06916716516597 0 9.87654320987654 0 0 11.1111111111111 0 0 11.7283950617284 -1.06916716516597 0 11.1111111111111 -2.13833433033195 0 12.3456790123457 -2.13833433033195 0 12.962962962963 -3.20750149549792 0 12.3456790123457 -4.2766686606639 0 11.1111111111111 -4.27666866066389 0 11.7283950617284 -5.34583582582987 0 11.1111111111111 -6.41500299099584 0 12.3456790123457 -6.41500299099584 0 12.962962962963 -7.48417015616182 0 13.5802469135802 -6.41500299099584 0 14.8148148148148 -6.41500299099584 0 15.4320987654321 -7.48417015616182 0 14.8148148148148 -8.55333732132779 0 16.0493827160494 -8.55333732132779 0 16.6666666666667 -9.62250448649376 0 17.283950617284 -8.55333732132779 0 18.5185185185185 -8.55333732132779 0 17.9012345679012 -7.48417015616182 0 18.5185185185185 -6.41500299099584 0 19.7530864197531 -6.41500299099584 0 20.3703703703704 -7.48417015616182 0 20.9876543209877 -6.41500299099584 0 22.2222222222222 -6.41500299099584 0 21.6049382716049 -5.34583582582987 0 22.2222222222222 -4.2766686606639 0 20.9876543209877 -4.2766686606639 0 20.3703703703704 -3.20750149549792 0 20.9876543209877 -2.13833433033195 0 22.2222222222222 -2.13833433033195 0 21.6049382716049 -1.06916716516597 0 22.2222222222222 0 0 23.4567901234568 0 0 24.0740740740741 -1.06916716516597 0 24.6913580246914 0 0 25.9259259259259 0 0 26.5432098765432 -1.06916716516597 0 25.9259259259259 -2.13833433033195 0 27.1604938271605 -2.13833433033195 0 27.7777777777778 -3.20750149549792 0 28.3950617283951 -2.13833433033195 0 29.6296296296296 -2.13833433033195 0 29.0123456790123 -1.06916716516597 0 29.6296296296296 0 0 30.8641975308642 0 0 31.4814814814815 -1.06916716516597 0 32.0987654320988 0 0 33.3333333333333 0 0 33.9506172839506 -1.06916716516597 0 33.3333333333333 -2.13833433033195 0 34.5679012345679 -2.13833433033195 0 35.1851851851852 -3.20750149549792 0 34.5679012345679 -4.2766686606639 0 33.3333333333333 -4.27666866066389 0 33.9506172839506 -5.34583582582987 0 33.3333333333333 -6.41500299099584 0 34.5679012345679 -6.41500299099584 0 35.1851851851852 -7.48417015616182 0 35.8024691358025 -6.41500299099584 0 37.037037037037 -6.41500299099584 0 37.6543209876543 -7.48417015616182 0 37.037037037037 -8.55333732132779 0 38.2716049382716 -8.55333732132779 0 38.8888888888889 -9.62250448649376 0 38.2716049382716 -10.6916716516597 0 37.037037037037 -10.6916716516597 0 37.6543209876543 -11.7608388168257 0 37.037037037037 -12.8300059819917 0 35.8024691358025 -12.8300059819917 0 35.1851851851852 -11.7608388168257 0 34.5679012345679 -12.8300059819917 0 33.3333333333333 -12.8300059819917 0 33.9506172839506 -13.8991731471577 0 33.3333333333333 -14.9683403123236 0 34.5679012345679 -14.9683403123236 0 35.1851851851852 -16.0375074774896 0 34.5679012345679 -17.1066746426556 0 33.3333333333333 -17.1066746426556 0 33.9506172839506 -18.1758418078216 0 33.3333333333333 -19.2450089729875 0 34.5679012345679 -19.2450089729875 0 35.1851851851852 -20.3141761381535 0 35.8024691358025 -19.2450089729875 0 37.037037037037 -19.2450089729875 0 37.6543209876543 -20.3141761381535 0 37.037037037037 -21.3833433033195 0 38.2716049382716 -21.3833433033195 0 38.8888888888889 -22.4525104684854 0 39.5061728395062 -21.3833433033195 0 40.7407407407407 -21.3833433033195 0 40.1234567901235 -20.3141761381535 0 40.7407407407407 -19.2450089729875 0 41.9753086419753 -19.2450089729875 0 42.5925925925926 -20.3141761381535 0 43.2098765432099 -19.2450089729875 0 44.4444444444444 -19.2450089729875 0 45.0617283950617 -20.3141761381535 0 44.4444444444444 -21.3833433033195 0 45.679012345679 -21.3833433033195 0 46.2962962962963 -22.4525104684854 0 45.679012345679 -23.5216776336514 0 44.4444444444444 -23.5216776336514 0 45.0617283950617 -24.5908447988174 0 44.4444444444444 -25.6600119639834 0 45.679012345679 -25.6600119639834 0 46.2962962962963 -26.7291791291493 0 46.9135802469136 -25.6600119639834 0 48.1481481481481 -25.6600119639834 0 48.7654320987654 -26.7291791291493 0 48.1481481481482 -27.7983462943153 0 49.3827160493827 -27.7983462943153 0 50 -28.8675134594813 0 50.6172839506173 -27.7983462943153 0 51.8518518518518 -27.7983462943153 0 51.2345679012346 -26.7291791291493 0 51.8518518518519 -25.6600119639834 0 53.0864197530864 -25.6600119639834 0 53.7037037037037 -26.7291791291493 0 54.320987654321 -25.6600119639834 0 55.5555555555556 -25.6600119639834 0 54.9382716049383 -24.5908447988174 0 55.5555555555556 -23.5216776336514 0 54.320987654321 -23.5216776336514 0 53.7037037037037 -22.4525104684854 0 54.320987654321 -21.3833433033195 0 55.5555555555556 -21.3833433033195 0 54.9382716049383 -20.3141761381535 0 55.5555555555556 -19.2450089729875 0 56.7901234567901 -19.2450089729875 0 57.4074074074074 -20.3141761381535 0 58.0246913580247 -19.2450089729875 0 59.2592592592593 -19.2450089729875 0 59.8765432098765 -20.3141761381535 0 59.2592592592593 -21.3833433033195 0 60.4938271604938 -21.3833433033195 0 61.1111111111111 -22.4525104684854 0 61.7283950617284 -21.3833433033195 0 62.962962962963 -21.3833433033195 0 62.3456790123457 -20.3141761381535 0 62.962962962963 -19.2450089729875 0 64.1975308641975 -19.2450089729875 0 64.8148148148148 -20.3141761381535 0 65.4320987654321 -19.2450089729875 0 66.6666666666667 -19.2450089729875 0 66.0493827160494 -18.1758418078216 0 66.6666666666667 -17.1066746426556 0 65.4320987654321 -17.1066746426556 0 64.8148148148148 -16.0375074774896 0 65.4320987654321 -14.9683403123236 0 66.6666666666667 -14.9683403123236 0 66.0493827160494 -13.8991731471577 0 66.6666666666667 -12.8300059819917 0 65.4320987654321 -12.8300059819917 0 64.8148148148148 -11.7608388168257 0 64.1975308641975 -12.8300059819917 0 62.962962962963 -12.8300059819917 0 62.3456790123457 -11.7608388168257 0 62.962962962963 -10.6916716516597 0 61.7283950617284 -10.6916716516597 0 61.1111111111111 -9.62250448649376 0 61.7283950617284 -8.55333732132779 0 62.962962962963 -8.55333732132779 0 62.3456790123457 -7.48417015616182 0 62.962962962963 -6.41500299099584 0 64.1975308641975 -6.41500299099584 0 64.8148148148148 -7.48417015616181 0 65.4320987654321 -6.41500299099584 0 66.6666666666667 -6.41500299099584 0 66.0493827160494 -5.34583582582987 0 66.6666666666667 -4.2766686606639 0 65.4320987654321 -4.2766686606639 0 64.8148148148148 -3.20750149549792 0 65.4320987654321 -2.13833433033195 0 66.6666666666667 -2.13833433033194 0 66.0493827160494 -1.06916716516597 0 66.6666666666667 0 0 67.9012345679012 0 0 68.5185185185185 -1.06916716516598 0 69.1358024691358 0 0 70.3703703703704 0 0 70.9876543209877 -1.06916716516598 0 70.3703703703704 -2.13833433033195 0 71.604938271605 -2.13833433033195 0 72.2222222222222 -3.20750149549793 0 72.8395061728395 -2.13833433033195 0 74.0740740740741 -2.13833433033195 0 73.4567901234568 -1.06916716516598 0 74.0740740740741 0 0 75.3086419753086 0 0 75.9259259259259 -1.06916716516598 0 76.5432098765432 0 0 77.7777777777778 0 0 78.3950617283951 -1.06916716516597 0 77.7777777777778 -2.13833433033195 0 79.0123456790124 -2.13833433033195 0 79.6296296296296 -3.20750149549792 0 79.0123456790124 -4.2766686606639 0 77.7777777777778 -4.2766686606639 0 78.3950617283951 -5.34583582582987 0 77.7777777777778 -6.41500299099584 0 79.0123456790124 -6.41500299099584 0 79.6296296296296 -7.48417015616182 0 80.2469135802469 -6.41500299099584 0 81.4814814814815 -6.41500299099584 0 82.0987654320988 -7.48417015616182 0 81.4814814814815 -8.55333732132779 0 82.7160493827161 -8.55333732132779 0 83.3333333333333 -9.62250448649377 0 83.9506172839506 -8.55333732132779 0 85.1851851851852 -8.55333732132779 0 84.5679012345679 -7.48417015616182 0 85.1851851851852 -6.41500299099584 0 86.4197530864198 -6.41500299099584 0 87.037037037037 -7.48417015616182 0 87.6543209876543 -6.41500299099584 0 88.8888888888889 -6.41500299099584 0 88.2716049382716 -5.34583582582987 0 88.8888888888889 -4.2766686606639 0 87.6543209876543 -4.27666866066389 0 87.037037037037 -3.20750149549792 0 87.6543209876543 -2.13833433033195 0 88.8888888888889 -2.13833433033195 0 88.2716049382716 -1.06916716516597 0 88.8888888888889 0 0 90.1234567901235 0 0 90.7407407407407 -1.06916716516598 0 91.358024691358 0 0 92.5925925925926 0 0 93.2098765432099 -1.06916716516598 0 92.5925925925926 -2.13833433033195 0 93.8271604938272 -2.13833433033195 0 94.4444444444444 -3.20750149549793 0 95.0617283950617 -2.13833433033195 0 96.2962962962963 -2.13833433033195 0 95.679012345679 -1.06916716516598 0 96.2962962962963 0 0 97.5308641975309 0 0 98.1481481481482 -1.06916716516598 0 98.7654320987654 0 0 100 0 0 99.3827160493827 1.06916716516597 0 100 2.13833433033194 0 98.7654320987654 2.13833433033195 0 98.1481481481482 3.20750149549792 0 98.7654320987654 4.27666866066389 0 100 4.2766686606639 0 99.3827160493827 5.34583582582987 0 100 6.41500299099584 0 98.7654320987654 6.41500299099584 0 98.1481481481482 7.48417015616182 0 97.5308641975309 6.41500299099584 0 96.2962962962963 6.41500299099584 0 95.679012345679 7.48417015616181 0 96.2962962962963 8.55333732132779 0 95.0617283950617 8.55333732132779 0 94.4444444444444 9.62250448649376 0 95.0617283950617 10.6916716516597 0 96.2962962962963 10.6916716516597 0 95.679012345679 11.7608388168257 0 96.2962962962963 12.8300059819917 0 97.5308641975309 12.8300059819917 0 98.1481481481482 11.7608388168257 0 98.7654320987654 12.8300059819917 0 100 12.8300059819917 0 99.3827160493827 13.8991731471577 0 100 14.9683403123236 0 98.7654320987654 14.9683403123236 0 98.1481481481481 16.0375074774896 0 98.7654320987654 17.1066746426556 0 100 17.1066746426556 0 99.3827160493827 18.1758418078216 0 100 19.2450089729875 0 98.7654320987654 19.2450089729875 0 98.1481481481481 20.3141761381535 0 97.5308641975309 19.2450089729875 0 96.2962962962963 19.2450089729875 0 95.679012345679 20.3141761381535 0 96.2962962962963 21.3833433033195 0 95.0617283950617 21.3833433033195 0 94.4444444444444 22.4525104684854 0 93.8271604938272 21.3833433033195 0 92.5925925925926 21.3833433033195 0 93.2098765432099 20.3141761381535 0 92.5925925925926 19.2450089729875 0 91.358024691358 19.2450089729875 0 90.7407407407407 20.3141761381535 0 90.1234567901235 19.2450089729875 0 88.8888888888889 19.2450089729875 0 88.2716049382716 20.3141761381535 0 88.8888888888889 21.3833433033195 0 87.6543209876543 21.3833433033195 0 87.037037037037 22.4525104684854 0 87.6543209876543 23.5216776336514 0 88.8888888888889 23.5216776336514 0 88.2716049382716 24.5908447988174 0 88.8888888888889 25.6600119639834 0 87.6543209876543 25.6600119639834 0 87.037037037037 26.7291791291493 0 86.4197530864197 25.6600119639834 0 85.1851851851852 25.6600119639834 0 84.5679012345679 26.7291791291493 0 85.1851851851852 27.7983462943153 0 83.9506172839506 27.7983462943153 0 83.3333333333333 28.8675134594813 0 83.9506172839506 29.9366806246473 0 85.1851851851852 29.9366806246473 0 84.5679012345679 31.0058477898132 0 85.1851851851852 32.0750149549792 0 86.4197530864197 32.0750149549792 0 87.037037037037 31.0058477898132 0 87.6543209876543 32.0750149549792 0 88.8888888888889 32.0750149549792 0 88.2716049382716 33.1441821201452 0 88.8888888888889 34.2133492853112 0 87.6543209876543 34.2133492853112 0 87.037037037037 35.2825164504771 0 87.6543209876543 36.3516836156431 0 88.8888888888889 36.3516836156431 0 88.2716049382716 37.4208507808091 0 88.8888888888889 38.490017945975 0 90.1234567901235 38.490017945975 0 90.7407407407407 37.4208507808091 0 91.358024691358 38.490017945975 0 92.5925925925926 38.490017945975 0 93.2098765432099 37.4208507808091 0 92.5925925925926 36.3516836156431 0 93.8271604938272 36.3516836156431 0 94.4444444444444 35.2825164504771 0 95.0617283950617 36.3516836156431 0 96.2962962962963 36.3516836156431 0 95.679012345679 37.4208507808091 0 96.2962962962963 38.490017945975 0 97.5308641975309 38.490017945975 0 98.1481481481481 37.4208507808091 0 98.7654320987654 38.490017945975 0 100 38.490017945975 0 99.3827160493827 39.559185111141 0 100 40.628352276307 0 98.7654320987654 40.628352276307 0 98.1481481481481 41.697519441473 0 98.7654320987654 42.7666866066389 0 100 42.7666866066389 0 99.3827160493827 43.8358537718049 0 100 44.9050209369709 0 98.7654320987654 44.9050209369709 0 98.1481481481482 45.9741881021369 0 97.5308641975309 44.9050209369709 0 96.2962962962963 44.9050209369709 0 95.679012345679 45.9741881021369 0 96.2962962962963 47.0433552673028 0 95.0617283950617 47.0433552673028 0 94.4444444444444 48.1125224324688 0 95.0617283950617 49.1816895976348 0 96.2962962962963 49.1816895976348 0 95.679012345679 50.2508567628008 0 96.2962962962963 51.3200239279667 0 97.5308641975309 51.3200239279667 0 98.1481481481482 50.2508567628008 0 98.7654320987654 51.3200239279667 0 100 51.3200239279667 0 99.3827160493827 52.3891910931327 0 100 53.4583582582987 0 98.7654320987654 53.4583582582987 0 98.1481481481482 54.5275254234647 0 98.7654320987654 55.5966925886306 0 100 55.5966925886306 0 99.3827160493827 56.6658597537966 0 100 57.7350269189626 0 98.7654320987654 57.7350269189626 0 98.1481481481482 58.8041940841286 0 97.5308641975309 57.7350269189626 0 96.2962962962963 57.7350269189626 0 95.679012345679 58.8041940841285 0 96.2962962962963 59.8733612492945 0 95.0617283950617 59.8733612492945 0 94.4444444444444 60.9425284144605 0 93.8271604938272 59.8733612492945 0 92.5925925925926 59.8733612492945 0 93.2098765432099 58.8041940841285 0 92.5925925925926 57.7350269189626 0 91.358024691358 57.7350269189626 0 90.7407407407407 58.8041940841286 0 90.1234567901235 57.7350269189626 0 88.8888888888889 57.7350269189626 0 88.2716049382716 58.8041940841285 0 88.8888888888889 59.8733612492945 0 87.6543209876543 59.8733612492945 0 87.037037037037 60.9425284144605 0 87.6543209876543 62.0116955796265 0 88.8888888888889 62.0116955796265 0 88.2716049382716 63.0808627447924 0 88.8888888888889 64.1500299099584 0 87.6543209876543 64.1500299099584 0 87.037037037037 65.2191970751244 0 86.4197530864198 64.1500299099584 0 85.1851851851852 64.1500299099584 0 84.5679012345679 65.2191970751244 0 85.1851851851852 66.2883642402904 0 83.9506172839506 66.2883642402904 0 83.3333333333333 67.3575314054563 0 82.7160493827161 66.2883642402904 0 81.4814814814815 66.2883642402904 0 82.0987654320988 65.2191970751244 0 81.4814814814815 64.1500299099584 0 80.2469135802469 64.1500299099584 0 79.6296296296296 65.2191970751244 0 79.0123456790124 64.1500299099584 0 77.7777777777778 64.1500299099584 0 78.3950617283951 63.0808627447924 0 77.7777777777778 62.0116955796265 0 79.0123456790124 62.0116955796265 0 79.6296296296296 60.9425284144605 0 79.0123456790124 59.8733612492945 0 77.7777777777778 59.8733612492945 0 78.3950617283951 58.8041940841285 0 77.7777777777778 57.7350269189626 0 76.5432098765432 57.7350269189626 0 75.9259259259259 58.8041940841286 0 75.3086419753086 57.7350269189626 0 74.0740740740741 57.7350269189626 0 73.4567901234568 58.8041940841285 0 74.0740740740741 59.8733612492945 0 72.8395061728395 59.8733612492945 0 72.2222222222222 60.9425284144605 0 71.604938271605 59.8733612492945 0 70.3703703703704 59.8733612492945 0 70.9876543209877 58.8041940841285 0 70.3703703703704 57.7350269189626 0 69.1358024691358 57.7350269189626 0 68.5185185185185 58.8041940841286 0 67.9012345679012 57.7350269189626 0 66.6666666666667 57.7350269189626 0 66.0493827160494 58.8041940841285 0 66.6666666666667 59.8733612492945 0 65.4320987654321 59.8733612492945 0 64.8148148148148 60.9425284144605 0 65.4320987654321 62.0116955796265 0 66.6666666666667 62.0116955796265 0 66.0493827160494 63.0808627447924 0 66.6666666666667 64.1500299099584 0 65.4320987654321 64.1500299099584 0 64.8148148148148 65.2191970751244 0 64.1975308641975 64.1500299099584 0 62.962962962963 64.1500299099584 0 62.3456790123457 65.2191970751244 0 62.962962962963 66.2883642402904 0 61.7283950617284 66.2883642402904 0 61.1111111111111 67.3575314054563 0 61.7283950617284 68.4266985706223 0 62.962962962963 68.4266985706223 0 62.3456790123457 69.4958657357883 0 62.962962962963 70.5650329009543 0 64.1975308641975 70.5650329009543 0 64.8148148148148 69.4958657357883 0 65.4320987654321 70.5650329009543 0 66.6666666666667 70.5650329009543 0 66.0493827160494 71.6342000661202 0 66.6666666666667 72.7033672312862 0 65.4320987654321 72.7033672312862 0 64.8148148148148 73.7725343964522 0 65.4320987654321 74.8417015616182 0 66.6666666666667 74.8417015616182 0 66.0493827160494 75.9108687267841 0 66.6666666666667 76.9800358919501 0 65.4320987654321 76.9800358919501 0 64.8148148148148 78.0492030571161 0 64.1975308641975 76.9800358919501 0 62.962962962963 76.9800358919501 0 62.3456790123457 78.0492030571161 0 62.962962962963 79.1183702222821 0 61.7283950617284 79.1183702222821 0 61.1111111111111 80.187537387448 0 60.4938271604938 79.1183702222821 0 59.2592592592593 79.1183702222821 0 59.8765432098765 78.0492030571161 0 59.2592592592593 76.9800358919501 0 58.0246913580247 76.9800358919501 0 57.4074074074074 78.0492030571161 0 56.7901234567901 76.9800358919501 0 55.5555555555556 76.9800358919501 0 54.9382716049383 78.0492030571161 0 55.5555555555556 79.118370222282 0 54.320987654321 79.118370222282 0 53.7037037037037 80.187537387448 0 54.320987654321 81.256704552614 0 55.5555555555556 81.256704552614 0 54.9382716049383 82.32587171778 0 55.5555555555556 83.3950388829459 0 54.320987654321 83.3950388829459 0 53.7037037037037 84.4642060481119 0 53.0864197530864 83.3950388829459 0 51.8518518518519 83.3950388829459 0 51.2345679012346 84.4642060481119 0 51.8518518518519 85.5333732132779 0 50.6172839506173 85.5333732132779 0 50 86.6025403784439 0 49.3827160493827 85.5333732132779 0 48.1481481481481 85.5333732132779 0 48.7654320987654 84.4642060481119 0 48.1481481481481 83.3950388829459 0 46.9135802469136 83.3950388829459 0 46.2962962962963 84.4642060481119 0 45.679012345679 83.3950388829459 0 44.4444444444444 83.3950388829459 0 45.0617283950617 82.32587171778 0 44.4444444444444 81.256704552614 0 45.679012345679 81.256704552614 0 46.2962962962963 80.187537387448 0 45.679012345679 79.118370222282 0 44.4444444444444 79.118370222282 0 45.0617283950617 78.0492030571161 0 44.4444444444444 76.9800358919501 0 43.2098765432099 76.9800358919501 0 42.5925925925926 78.0492030571161 0 41.9753086419753 76.9800358919501 0 40.7407407407407 76.9800358919501 0 40.1234567901235 78.0492030571161 0 40.7407407407407 79.1183702222821 0 39.5061728395062 79.1183702222821 0 38.8888888888889 80.187537387448 0 38.2716049382716 79.1183702222821 0 37.037037037037 79.1183702222821 0 37.6543209876543 78.0492030571161 0 37.037037037037 76.9800358919501 0 35.8024691358025 76.9800358919501 0 35.1851851851852 78.0492030571161 0 34.5679012345679 76.9800358919501 0 33.3333333333333 76.9800358919501 0 33.9506172839506 75.9108687267841 0 33.3333333333333 74.8417015616182 0 34.5679012345679 74.8417015616182 0 35.1851851851852 73.7725343964522 0 34.5679012345679 72.7033672312862 0 33.3333333333333 72.7033672312862 0 33.9506172839506 71.6342000661202 0 33.3333333333333 70.5650329009543 0 34.5679012345679 70.5650329009543 0 35.1851851851852 69.4958657357883 0 35.8024691358025 70.5650329009543 0 37.037037037037 70.5650329009543 0 37.6543209876543 69.4958657357883 0 37.037037037037 68.4266985706223 0 38.2716049382716 68.4266985706223 0 38.8888888888889 67.3575314054563 0 38.2716049382716 66.2883642402904 0 37.037037037037 66.2883642402904 0 37.6543209876543 65.2191970751244 0 37.037037037037 64.1500299099584 0 35.8024691358025 64.1500299099584 0 35.1851851851852 65.2191970751244 0 34.5679012345679 64.1500299099584 0 33.3333333333333 64.1500299099584 0 33.9506172839506 63.0808627447924 0 33.3333333333333 62.0116955796265 0 34.5679012345679 62.0116955796265 0 35.1851851851852 60.9425284144605 0 34.5679012345679 59.8733612492945 0 33.3333333333333 59.8733612492945 0 33.9506172839506 58.8041940841285 0 33.3333333333333 57.7350269189626 0 32.0987654320988 57.7350269189626 0 31.4814814814815 58.8041940841286 0 30.8641975308642 57.7350269189626 0 29.6296296296296 57.7350269189626 0 29.0123456790123 58.8041940841285 0 29.6296296296296 59.8733612492945 0 28.3950617283951 59.8733612492945 0 27.7777777777778 60.9425284144605 0 27.1604938271605 59.8733612492945 0 25.9259259259259 59.8733612492945 0 26.5432098765432 58.8041940841285 0 25.9259259259259 57.7350269189626 0 24.6913580246914 57.7350269189626 0 24.0740740740741 58.8041940841285 0 23.4567901234568 57.7350269189626 0 22.2222222222222 57.7350269189626 0 21.6049382716049 58.8041940841285 0 22.2222222222222 59.8733612492945 0 20.9876543209877 59.8733612492945 0 20.3703703703704 60.9425284144605 0 20.9876543209877 62.0116955796265 0 22.2222222222222 62.0116955796265 0 21.6049382716049 63.0808627447924 0 22.2222222222222 64.1500299099584 0 20.9876543209877 64.1500299099584 0 20.3703703703704 65.2191970751244 0 19.7530864197531 64.1500299099584 0 18.5185185185185 64.1500299099584 0 17.9012345679012 65.2191970751244 0 18.5185185185185 66.2883642402904 0 17.283950617284 66.2883642402904 0 16.6666666666667 67.3575314054563 0 16.0493827160494 66.2883642402904 0 14.8148148148148 66.2883642402904 0 15.4320987654321 65.2191970751244 0 14.8148148148148 64.1500299099584 0 13.5802469135803 64.1500299099584 0 12.962962962963 65.2191970751244 0 12.3456790123457 64.1500299099584 0 11.1111111111111 64.1500299099584 0 11.7283950617284 63.0808627447924 0 11.1111111111111 62.0116955796265 0 12.3456790123457 62.0116955796265 0 12.962962962963 60.9425284144605 0 12.3456790123457 59.8733612492945 0 11.1111111111111 59.8733612492945 0 11.7283950617284 58.8041940841285 0 11.1111111111111 57.7350269189626 0 9.87654320987655 57.7350269189626 0 9.25925925925926 58.8041940841285 0 8.64197530864198 57.7350269189626 0 7.40740740740741 57.7350269189626 0 6.79012345679013 58.8041940841285 0 7.40740740740741 59.8733612492945 0 6.17283950617284 59.8733612492945 0 5.55555555555556 60.9425284144605 0 4.93827160493827 59.8733612492945 0 3.70370370370371 59.8733612492945 0 4.32098765432099 58.8041940841285 0 3.70370370370371 57.7350269189626 0 2.46913580246914 57.7350269189626 0 1.85185185185186 58.8041940841285 0 1.23456790123457 57.7350269189626 0 3.5527136788005e-15 57.7350269189626 0 0.617283950617287 56.6658597537966 0 4.44089209850063e-15 55.5966925886306 0 1.23456790123457 55.5966925886306 0 1.85185185185185 54.5275254234647 0 1.23456790123457 53.4583582582987 0 3.88578058618805e-15 53.4583582582987 0 0.617283950617286 52.3891910931327 0 2.22044604925031e-15 51.3200239279667 0 1.23456790123457 51.3200239279667 0 1.85185185185186 50.2508567628008 0 2.46913580246914 51.3200239279667 0 3.70370370370371 51.3200239279667 0 4.32098765432099 50.2508567628008 0 3.70370370370371 49.1816895976348 0 4.93827160493827 49.1816895976348 0 5.55555555555556 48.1125224324688 0 4.93827160493827 47.0433552673028 0 3.70370370370371 47.0433552673028 0 4.32098765432099 45.9741881021369 0 3.70370370370371 44.9050209369709 0 2.46913580246914 44.9050209369709 0 1.85185185185186 45.9741881021369 0 1.23456790123457 44.9050209369709 0 2.22044604925031e-15 44.9050209369709 0 0.617283950617286 43.8358537718049 0 3.88578058618805e-15 42.7666866066389 0 1.23456790123457 42.7666866066389 0 1.85185185185185 41.697519441473 0 1.23456790123457 40.628352276307 0 4.44089209850063e-15 40.628352276307 0 0.617283950617287 39.559185111141 0 3.5527136788005e-15 38.4900179459751 0 1.23456790123457 38.4900179459751 0 1.85185185185185 37.4208507808091 0 2.46913580246914 38.4900179459751 0 3.70370370370371 38.4900179459751 0 4.32098765432099 37.4208507808091 0 3.70370370370371 36.3516836156431 0 4.93827160493827 36.3516836156431 0 5.55555555555556 35.2825164504771 0 6.17283950617284 36.3516836156431 0 7.40740740740741 36.3516836156431 0 6.79012345679013 37.4208507808091 0 7.40740740740741 38.490017945975 0 8.64197530864198 38.490017945975 0 9.25925925925926 37.4208507808091 0 9.87654320987654 38.490017945975 0 11.1111111111111 38.490017945975 0 11.7283950617284 37.4208507808091 0 11.1111111111111 36.3516836156431 0 12.3456790123457 36.3516836156431 0 12.962962962963 35.2825164504771 0 12.3456790123457 34.2133492853112 0 11.1111111111111 34.2133492853112 0 11.7283950617284 33.1441821201452 0 11.1111111111111 32.0750149549792 0 12.3456790123457 32.0750149549792 0 12.962962962963 31.0058477898132 0 13.5802469135802 32.0750149549792 0 14.8148148148148 32.0750149549792 0 15.4320987654321 31.0058477898132 0 14.8148148148148 29.9366806246473 0 16.0493827160494 29.9366806246473 0 16.6666666666667 28.8675134594813 0 16.0493827160494 27.7983462943153 0 14.8148148148148 27.7983462943153 0 15.4320987654321 26.7291791291493 0 14.8148148148148 25.6600119639834 0 13.5802469135802 25.6600119639834 0 12.962962962963 26.7291791291493 0 12.3456790123457 25.6600119639834 0 11.1111111111111 25.6600119639834 0 11.7283950617284 24.5908447988174 0 11.1111111111111 23.5216776336514 0 12.3456790123457 23.5216776336514 0 12.962962962963 22.4525104684854 0 12.3456790123457 21.3833433033195 0 11.1111111111111 21.3833433033195 0 11.7283950617284 20.3141761381535 0 11.1111111111111 19.2450089729875 0 9.87654320987654 19.2450089729875 0 9.25925925925926 20.3141761381535 0 8.64197530864198 19.2450089729875 0 7.40740740740741 19.2450089729875 0 6.79012345679012 20.3141761381535 0 7.40740740740741 21.3833433033195 0 6.17283950617284 21.3833433033195 0 5.55555555555556 22.4525104684854 0 4.93827160493827 21.3833433033195 0 3.7037037037037 21.3833433033195 0 4.32098765432099 20.3141761381535 0 3.7037037037037 19.2450089729875 0 2.46913580246914 19.2450089729875 0 1.85185185185185 20.3141761381535 0 1.23456790123457 19.2450089729875 0 0 19.2450089729875 0 0.617283950617284 18.1758418078216 0 1.4432899320127e-15 17.1066746426556 0 1.23456790123457 17.1066746426556 0 1.85185185185185 16.0375074774896 0 1.23456790123457 14.9683403123236 0 1.11022302462516e-15 14.9683403123236 0 0.617283950617285 13.8991731471577 0 1.77635683940025e-15 12.8300059819917 0 1.23456790123457 12.8300059819917 0 1.85185185185185 11.7608388168257 0 2.46913580246914 12.8300059819917 0 3.7037037037037 12.8300059819917 0 4.32098765432099 11.7608388168257 0 3.7037037037037 10.6916716516597 0 4.93827160493827 10.6916716516597 0 5.55555555555556 9.62250448649376 0 4.93827160493827 8.55333732132779 0 3.7037037037037 8.55333732132779 0 4.32098765432099 7.48417015616181 0 3.7037037037037 6.41500299099584 0 2.46913580246914 6.41500299099584 0 1.85185185185185 7.48417015616181 0 1.23456790123457 6.41500299099584 0 8.88178419700125e-16 6.41500299099584 0 0.617283950617285 5.34583582582987 0 6.66133814775094e-16 4.27666866066389 0 1.23456790123457 4.27666866066389 0 1.85185185185185 3.20750149549792 0 1.23456790123457 2.13833433033195 0 2.22044604925031e-16 2.13833433033195 0 0.617283950617284 1.06916716516597 0 35 35 0 35.3703703703704 35 0 35.5555555555556 34.6792498504502 0 35.7407407407407 35 0 36.1111111111111 35 0 36.2962962962963 34.6792498504502 0 36.1111111111111 34.3584997009004 0 36.4814814814815 34.3584997009004 0 36.6666666666667 34.0377495513506 0 36.8518518518519 34.3584997009004 0 37.2222222222222 34.3584997009004 0 37.037037037037 34.6792498504502 0 37.2222222222222 35 0 37.5925925925926 35 0 37.7777777777778 34.6792498504502 0 37.962962962963 35 0 38.3333333333333 35 0 38.5185185185185 34.6792498504502 0 38.3333333333333 34.3584997009004 0 38.7037037037037 34.3584997009004 0 38.8888888888889 34.0377495513506 0 38.7037037037037 33.7169994018008 0 38.3333333333333 33.7169994018008 0 38.5185185185185 33.396249252251 0 38.3333333333333 33.0754991027013 0 38.7037037037037 33.0754991027013 0 38.8888888888889 32.7547489531515 0 39.0740740740741 33.0754991027013 0 39.4444444444444 33.0754991027013 0 39.6296296296296 32.7547489531515 0 39.4444444444444 32.4339988036017 0 39.8148148148148 32.4339988036017 0 40 32.1132486540519 0 40.1851851851852 32.4339988036017 0 40.5555555555556 32.4339988036017 0 40.3703703703704 32.7547489531515 0 40.5555555555556 33.0754991027013 0 40.9259259259259 33.0754991027013 0 41.1111111111111 32.7547489531515 0 41.2962962962963 33.0754991027012 0 41.6666666666667 33.0754991027012 0 41.4814814814815 33.396249252251 0 41.6666666666667 33.7169994018008 0 41.2962962962963 33.7169994018008 0 41.1111111111111 34.0377495513506 0 41.2962962962963 34.3584997009004 0 41.6666666666667 34.3584997009004 0 41.4814814814815 34.6792498504502 0 41.6666666666667 35 0 42.037037037037 35 0 42.2222222222222 34.6792498504502 0 42.4074074074074 35 0 42.7777777777778 35 0 42.962962962963 34.6792498504502 0 42.7777777777778 34.3584997009004 0 43.1481481481481 34.3584997009004 0 43.3333333333333 34.0377495513506 0 43.5185185185185 34.3584997009004 0 43.8888888888889 34.3584997009004 0 43.7037037037037 34.6792498504502 0 43.8888888888889 35 0 44.2592592592593 35 0 44.4444444444444 34.6792498504502 0 44.6296296296296 35 0 45 35 0 45.1851851851852 34.6792498504502 0 45 34.3584997009004 0 45.3703703703704 34.3584997009004 0 45.5555555555556 34.0377495513506 0 45.3703703703704 33.7169994018008 0 45 33.7169994018008 0 45.1851851851852 33.396249252251 0 45 33.0754991027012 0 45.3703703703704 33.0754991027012 0 45.5555555555556 32.7547489531515 0 45.7407407407407 33.0754991027013 0 46.1111111111111 33.0754991027013 0 46.2962962962963 32.7547489531515 0 46.1111111111111 32.4339988036017 0 46.4814814814815 32.4339988036017 0 46.6666666666667 32.1132486540519 0 46.4814814814815 31.7924985045021 0 46.1111111111111 31.7924985045021 0 46.2962962962963 31.4717483549523 0 46.1111111111111 31.1509982054025 0 45.7407407407407 31.1509982054025 0 45.5555555555556 31.4717483549523 0 45.3703703703704 31.1509982054025 0 45 31.1509982054025 0 45.1851851851852 30.8302480558527 0 45 30.5094979063029 0 45.3703703703704 30.5094979063029 0 45.5555555555556 30.1887477567531 0 45.3703703703704 29.8679976072033 0 45 29.8679976072033 0 45.1851851851852 29.5472474576535 0 45 29.2264973081037 0 45.3703703703704 29.2264973081037 0 45.5555555555556 28.905747158554 0 45.7407407407407 29.2264973081037 0 46.1111111111111 29.2264973081037 0 46.2962962962963 28.905747158554 0 46.1111111111111 28.5849970090042 0 46.4814814814815 28.5849970090042 0 46.6666666666667 28.2642468594544 0 46.8518518518518 28.5849970090042 0 47.2222222222222 28.5849970090042 0 47.037037037037 28.905747158554 0 47.2222222222222 29.2264973081037 0 47.5925925925926 29.2264973081037 0 47.7777777777778 28.905747158554 0 47.962962962963 29.2264973081037 0 48.3333333333333 29.2264973081037 0 48.5185185185185 28.905747158554 0 48.3333333333333 28.5849970090042 0 48.7037037037037 28.5849970090042 0 48.8888888888889 28.2642468594544 0 48.7037037037037 27.9434967099046 0 48.3333333333333 27.9434967099046 0 48.5185185185185 27.6227465603548 0 48.3333333333333 27.301996410805 0 48.7037037037037 27.301996410805 0 48.8888888888889 26.9812462612552 0 49.0740740740741 27.301996410805 0 49.4444444444444 27.301996410805 0 49.6296296296296 26.9812462612552 0 49.4444444444444 26.6604961117054 0 49.8148148148148 26.6604961117054 0 50 26.3397459621556 0 50.1851851851852 26.6604961117054 0 50.5555555555556 26.6604961117054 0 50.3703703703704 26.9812462612552 0 50.5555555555556 27.301996410805 0 50.9259259259259 27.301996410805 0 51.1111111111111 26.9812462612552 0 51.2962962962963 27.301996410805 0 51.6666666666667 27.301996410805 0 51.4814814814815 27.6227465603548 0 51.6666666666667 27.9434967099046 0 51.2962962962963 27.9434967099046 0 51.1111111111111 28.2642468594544 0 51.2962962962963 28.5849970090042 0 51.6666666666667 28.5849970090042 0 51.4814814814815 28.905747158554 0 51.6666666666667 29.2264973081037 0 52.037037037037 29.2264973081037 0 52.2222222222222 28.905747158554 0 52.4074074074074 29.2264973081037 0 52.7777777777778 29.2264973081037 0 52.962962962963 28.905747158554 0 52.7777777777778 28.5849970090042 0 53.1481481481481 28.5849970090042 0 53.3333333333333 28.2642468594544 0 53.5185185185185 28.5849970090042 0 53.8888888888889 28.5849970090042 0 53.7037037037037 28.905747158554 0 53.8888888888889 29.2264973081037 0 54.2592592592593 29.2264973081037 0 54.4444444444444 28.905747158554 0 54.6296296296296 29.2264973081037 0 55 29.2264973081037 0 54.8148148148148 29.5472474576535 0 55 29.8679976072033 0 54.6296296296296 29.8679976072033 0 54.4444444444444 30.1887477567531 0 54.6296296296296 30.5094979063029 0 55 30.5094979063029 0 54.8148148148148 30.8302480558527 0 55 31.1509982054025 0 54.6296296296296 31.1509982054025 0 54.4444444444444 31.4717483549523 0 54.2592592592593 31.1509982054025 0 53.8888888888889 31.1509982054025 0 53.7037037037037 31.4717483549523 0 53.8888888888889 31.7924985045021 0 53.5185185185185 31.7924985045021 0 53.3333333333333 32.1132486540519 0 53.5185185185185 32.4339988036017 0 53.8888888888889 32.4339988036017 0 53.7037037037037 32.7547489531515 0 53.8888888888889 33.0754991027013 0 54.2592592592593 33.0754991027013 0 54.4444444444444 32.7547489531515 0 54.6296296296296 33.0754991027012 0 55 33.0754991027012 0 54.8148148148148 33.396249252251 0 55 33.7169994018008 0 54.6296296296296 33.7169994018008 0 54.4444444444444 34.0377495513506 0 54.6296296296296 34.3584997009004 0 55 34.3584997009004 0 54.8148148148148 34.6792498504502 0 55 35 0 55.3703703703704 35 0 55.5555555555556 34.6792498504502 0 55.7407407407407 35 0 56.1111111111111 35 0 56.2962962962963 34.6792498504502 0 56.1111111111111 34.3584997009004 0 56.4814814814815 34.3584997009004 0 56.6666666666667 34.0377495513506 0 56.8518518518518 34.3584997009004 0 57.2222222222222 34.3584997009004 0 57.037037037037 34.6792498504502 0 57.2222222222222 35 0 57.5925925925926 35 0 57.7777777777778 34.6792498504502 0 57.962962962963 35 0 58.3333333333333 35 0 58.5185185185185 34.6792498504502 0 58.3333333333333 34.3584997009004 0 58.7037037037037 34.3584997009004 0 58.8888888888889 34.0377495513506 0 58.7037037037037 33.7169994018008 0 58.3333333333333 33.7169994018008 0 58.5185185185185 33.396249252251 0 58.3333333333333 33.0754991027012 0 58.7037037037037 33.0754991027012 0 58.8888888888889 32.7547489531515 0 59.0740740740741 33.0754991027012 0 59.4444444444444 33.0754991027012 0 59.6296296296296 32.7547489531515 0 59.4444444444444 32.4339988036017 0 59.8148148148148 32.4339988036017 0 60 32.1132486540519 0 60.1851851851852 32.4339988036017 0 60.5555555555556 32.4339988036017 0 60.3703703703704 32.7547489531515 0 60.5555555555556 33.0754991027012 0 60.9259259259259 33.0754991027013 0 61.1111111111111 32.7547489531515 0 61.2962962962963 33.0754991027013 0 61.6666666666667 33.0754991027013 0 61.4814814814815 33.396249252251 0 61.6666666666667 33.7169994018008 0 61.2962962962963 33.7169994018008 0 61.1111111111111 34.0377495513506 0 61.2962962962963 34.3584997009004 0 61.6666666666667 34.3584997009004 0 61.4814814814815 34.6792498504502 0 61.6666666666667 35 0 62.037037037037 35 0 62.2222222222222 34.6792498504502 0 62.4074074074074 35 0 62.7777777777778 35 0 62.962962962963 34.6792498504502 0 62.7777777777778 34.3584997009004 0 63.1481481481481 34.3584997009004 0 63.3333333333333 34.0377495513506 0 63.5185185185185 34.3584997009004 0 63.8888888888889 34.3584997009004 0 63.7037037037037 34.6792498504502 0 63.8888888888889 35 0 64.2592592592593 35 0 64.4444444444444 34.6792498504502 0 64.6296296296296 35 0 65 35 0 64.8148148148148 35.3207501495498 0 65 35.6415002990996 0 64.6296296296296 35.6415002990996 0 64.4444444444444 35.9622504486494 0 64.6296296296296 36.2830005981992 0 65 36.2830005981992 0 64.8148148148148 36.603750747749 0 65 36.9245008972987 0 64.6296296296296 36.9245008972987 0 64.4444444444444 37.2452510468485 0 64.2592592592593 36.9245008972987 0 63.8888888888889 36.9245008972987 0 63.7037037037037 37.2452510468485 0 63.8888888888889 37.5660011963983 0 63.5185185185185 37.5660011963983 0 63.3333333333333 37.8867513459481 0 63.5185185185185 38.2075014954979 0 63.8888888888889 38.2075014954979 0 63.7037037037037 38.5282516450477 0 63.8888888888889 38.8490017945975 0 64.2592592592593 38.8490017945975 0 64.4444444444444 38.5282516450477 0 64.6296296296296 38.8490017945975 0 65 38.8490017945975 0 64.8148148148148 39.1697519441473 0 65 39.4905020936971 0 64.6296296296296 39.4905020936971 0 64.4444444444444 39.8112522432469 0 64.6296296296296 40.1320023927967 0 65 40.1320023927967 0 64.8148148148148 40.4527525423465 0 65 40.7735026918963 0 64.6296296296296 40.7735026918963 0 64.4444444444444 41.094252841446 0 64.2592592592593 40.7735026918963 0 63.8888888888889 40.7735026918963 0 63.7037037037037 41.094252841446 0 63.8888888888889 41.4150029909958 0 63.5185185185185 41.4150029909958 0 63.3333333333333 41.7357531405456 0 63.1481481481481 41.4150029909958 0 62.7777777777778 41.4150029909958 0 62.962962962963 41.094252841446 0 62.7777777777778 40.7735026918963 0 62.4074074074074 40.7735026918963 0 62.2222222222222 41.094252841446 0 62.037037037037 40.7735026918963 0 61.6666666666667 40.7735026918963 0 61.4814814814815 41.094252841446 0 61.6666666666667 41.4150029909958 0 61.2962962962963 41.4150029909958 0 61.1111111111111 41.7357531405456 0 61.2962962962963 42.0565032900954 0 61.6666666666667 42.0565032900954 0 61.4814814814815 42.3772534396452 0 61.6666666666667 42.698003589195 0 61.2962962962963 42.698003589195 0 61.1111111111111 43.0187537387448 0 60.9259259259259 42.698003589195 0 60.5555555555556 42.698003589195 0 60.3703703703704 43.0187537387448 0 60.5555555555556 43.3395038882946 0 60.1851851851852 43.3395038882946 0 60 43.6602540378444 0 60.1851851851852 43.9810041873942 0 60.5555555555556 43.9810041873942 0 60.3703703703704 44.301754336944 0 60.5555555555556 44.6225044864938 0 60.9259259259259 44.6225044864938 0 61.1111111111111 44.301754336944 0 61.2962962962963 44.6225044864938 0 61.6666666666667 44.6225044864938 0 61.4814814814815 44.9432546360436 0 61.6666666666667 45.2640047855933 0 61.2962962962963 45.2640047855933 0 61.1111111111111 45.5847549351431 0 61.2962962962963 45.9055050846929 0 61.6666666666667 45.9055050846929 0 61.4814814814815 46.2262552342427 0 61.6666666666667 46.5470053837925 0 62.037037037037 46.5470053837925 0 62.2222222222222 46.2262552342427 0 62.4074074074074 46.5470053837925 0 62.7777777777778 46.5470053837925 0 62.962962962963 46.2262552342427 0 62.7777777777778 45.9055050846929 0 63.1481481481481 45.9055050846929 0 63.3333333333333 45.5847549351431 0 63.5185185185185 45.9055050846929 0 63.8888888888889 45.9055050846929 0 63.7037037037037 46.2262552342427 0 63.8888888888889 46.5470053837925 0 64.2592592592593 46.5470053837925 0 64.4444444444444 46.2262552342427 0 64.6296296296296 46.5470053837925 0 65 46.5470053837925 0 64.8148148148148 46.8677555333423 0 65 47.1885056828921 0 64.6296296296296 47.1885056828921 0 64.4444444444444 47.5092558324419 0 64.6296296296296 47.8300059819917 0 65 47.8300059819917 0 64.8148148148148 48.1507561315415 0 65 48.4715062810913 0 64.6296296296296 48.4715062810913 0 64.4444444444444 48.7922564306411 0 64.2592592592593 48.4715062810913 0 63.8888888888889 48.4715062810913 0 63.7037037037037 48.7922564306411 0 63.8888888888889 49.1130065801908 0 63.5185185185185 49.1130065801909 0 63.3333333333333 49.4337567297406 0 63.5185185185185 49.7545068792904 0 63.8888888888889 49.7545068792904 0 63.7037037037037 50.0752570288402 0 63.8888888888889 50.39600717839 0 64.2592592592593 50.39600717839 0 64.4444444444444 50.0752570288402 0 64.6296296296296 50.39600717839 0 65 50.39600717839 0 64.8148148148148 50.7167573279398 0 65 51.0375074774896 0 64.6296296296296 51.0375074774896 0 64.4444444444444 51.3582576270394 0 64.6296296296296 51.6790077765892 0 65 51.6790077765892 0 64.8148148148148 51.999757926139 0 65 52.3205080756888 0 64.6296296296296 52.3205080756888 0 64.4444444444444 52.6412582252386 0 64.2592592592593 52.3205080756888 0 63.8888888888889 52.3205080756888 0 63.7037037037037 52.6412582252386 0 63.8888888888889 52.9620083747884 0 63.5185185185185 52.9620083747884 0 63.3333333333333 53.2827585243381 0 63.1481481481481 52.9620083747884 0 62.7777777777778 52.9620083747884 0 62.962962962963 52.6412582252386 0 62.7777777777778 52.3205080756888 0 62.4074074074074 52.3205080756888 0 62.2222222222222 52.6412582252386 0 62.037037037037 52.3205080756888 0 61.6666666666667 52.3205080756888 0 61.4814814814815 52.6412582252386 0 61.6666666666667 52.9620083747884 0 61.2962962962963 52.9620083747884 0 61.1111111111111 53.2827585243381 0 61.2962962962963 53.6035086738879 0 61.6666666666667 53.6035086738879 0 61.4814814814815 53.9242588234377 0 61.6666666666667 54.2450089729875 0 61.2962962962963 54.2450089729875 0 61.1111111111111 54.5657591225373 0 60.9259259259259 54.2450089729875 0 60.5555555555556 54.2450089729875 0 60.3703703703704 54.5657591225373 0 60.5555555555556 54.8865092720871 0 60.1851851851852 54.8865092720871 0 60 55.2072594216369 0 59.8148148148148 54.8865092720871 0 59.4444444444444 54.8865092720871 0 59.6296296296296 54.5657591225373 0 59.4444444444444 54.2450089729875 0 59.0740740740741 54.2450089729875 0 58.8888888888889 54.5657591225373 0 58.7037037037037 54.2450089729875 0 58.3333333333333 54.2450089729875 0 58.5185185185185 53.9242588234377 0 58.3333333333333 53.6035086738879 0 58.7037037037037 53.6035086738879 0 58.8888888888889 53.2827585243381 0 58.7037037037037 52.9620083747884 0 58.3333333333333 52.9620083747884 0 58.5185185185185 52.6412582252386 0 58.3333333333333 52.3205080756888 0 57.962962962963 52.3205080756888 0 57.7777777777778 52.6412582252386 0 57.5925925925926 52.3205080756888 0 57.2222222222222 52.3205080756888 0 57.037037037037 52.6412582252386 0 57.2222222222222 52.9620083747884 0 56.8518518518518 52.9620083747884 0 56.6666666666667 53.2827585243381 0 56.4814814814815 52.9620083747884 0 56.1111111111111 52.9620083747884 0 56.2962962962963 52.6412582252386 0 56.1111111111111 52.3205080756888 0 55.7407407407407 52.3205080756888 0 55.5555555555556 52.6412582252386 0 55.3703703703704 52.3205080756888 0 55 52.3205080756888 0 54.8148148148148 52.6412582252386 0 55 52.9620083747884 0 54.6296296296296 52.9620083747884 0 54.4444444444444 53.2827585243381 0 54.6296296296296 53.6035086738879 0 55 53.6035086738879 0 54.8148148148148 53.9242588234377 0 55 54.2450089729875 0 54.6296296296296 54.2450089729875 0 54.4444444444444 54.5657591225373 0 54.2592592592593 54.2450089729875 0 53.8888888888889 54.2450089729875 0 53.7037037037037 54.5657591225373 0 53.8888888888889 54.8865092720871 0 53.5185185185185 54.8865092720871 0 53.3333333333333 55.2072594216369 0 53.5185185185185 55.5280095711867 0 53.8888888888889 55.5280095711867 0 53.7037037037037 55.8487597207365 0 53.8888888888889 56.1695098702863 0 54.2592592592593 56.1695098702863 0 54.4444444444444 55.8487597207365 0 54.6296296296296 56.1695098702863 0 55 56.1695098702863 0 54.8148148148148 56.4902600198361 0 55 56.8110101693859 0 54.6296296296296 56.8110101693859 0 54.4444444444444 57.1317603189357 0 54.6296296296296 57.4525104684854 0 55 57.4525104684854 0 54.8148148148148 57.7732606180352 0 55 58.094010767585 0 54.6296296296296 58.094010767585 0 54.4444444444444 58.4147609171348 0 54.2592592592593 58.094010767585 0 53.8888888888889 58.094010767585 0 53.7037037037037 58.4147609171348 0 53.8888888888889 58.7355110666846 0 53.5185185185185 58.7355110666846 0 53.3333333333333 59.0562612162344 0 53.1481481481481 58.7355110666846 0 52.7777777777778 58.7355110666846 0 52.962962962963 58.4147609171348 0 52.7777777777778 58.094010767585 0 52.4074074074074 58.094010767585 0 52.2222222222222 58.4147609171348 0 52.037037037037 58.094010767585 0 51.6666666666667 58.094010767585 0 51.4814814814815 58.4147609171348 0 51.6666666666667 58.7355110666846 0 51.2962962962963 58.7355110666846 0 51.1111111111111 59.0562612162344 0 51.2962962962963 59.3770113657842 0 51.6666666666667 59.3770113657842 0 51.4814814814815 59.697761515334 0 51.6666666666667 60.0185116648838 0 51.2962962962963 60.0185116648838 0 51.1111111111111 60.3392618144336 0 50.9259259259259 60.0185116648838 0 50.5555555555556 60.0185116648838 0 50.3703703703704 60.3392618144336 0 50.5555555555556 60.6600119639834 0 50.1851851851852 60.6600119639834 0 50 60.9807621135332 0 49.8148148148148 60.6600119639834 0 49.4444444444444 60.6600119639834 0 49.6296296296296 60.3392618144336 0 49.4444444444444 60.0185116648838 0 49.0740740740741 60.0185116648838 0 48.8888888888889 60.3392618144336 0 48.7037037037037 60.0185116648838 0 48.3333333333333 60.0185116648838 0 48.5185185185185 59.697761515334 0 48.3333333333333 59.3770113657842 0 48.7037037037037 59.3770113657842 0 48.8888888888889 59.0562612162344 0 48.7037037037037 58.7355110666846 0 48.3333333333333 58.7355110666846 0 48.5185185185185 58.4147609171348 0 48.3333333333333 58.094010767585 0 47.962962962963 58.094010767585 0 47.7777777777778 58.4147609171348 0 47.5925925925926 58.094010767585 0 47.2222222222222 58.094010767585 0 47.037037037037 58.4147609171348 0 47.2222222222222 58.7355110666846 0 46.8518518518519 58.7355110666846 0 46.6666666666667 59.0562612162344 0 46.4814814814815 58.7355110666846 0 46.1111111111111 58.7355110666846 0 46.2962962962963 58.4147609171348 0 46.1111111111111 58.094010767585 0 45.7407407407407 58.094010767585 0 45.5555555555556 58.4147609171348 0 45.3703703703704 58.094010767585 0 45 58.094010767585 0 45.1851851851852 57.7732606180352 0 45 57.4525104684854 0 45.3703703703704 57.4525104684854 0 45.5555555555556 57.1317603189357 0 45.3703703703704 56.8110101693859 0 45 56.8110101693859 0 45.1851851851852 56.4902600198361 0 45 56.1695098702863 0 45.3703703703704 56.1695098702863 0 45.5555555555556 55.8487597207365 0 45.7407407407407 56.1695098702863 0 46.1111111111111 56.1695098702863 0 46.2962962962963 55.8487597207365 0 46.1111111111111 55.5280095711867 0 46.4814814814815 55.5280095711867 0 46.6666666666667 55.2072594216369 0 46.4814814814815 54.8865092720871 0 46.1111111111111 54.8865092720871 0 46.2962962962963 54.5657591225373 0 46.1111111111111 54.2450089729875 0 45.7407407407407 54.2450089729875 0 45.5555555555556 54.5657591225373 0 45.3703703703704 54.2450089729875 0 45 54.2450089729875 0 45.1851851851852 53.9242588234377 0 45 53.6035086738879 0 45.3703703703704 53.6035086738879 0 45.5555555555556 53.2827585243381 0 45.3703703703704 52.9620083747884 0 45 52.9620083747884 0 45.1851851851852 52.6412582252386 0 45 52.3205080756888 0 44.6296296296296 52.3205080756888 0 44.4444444444444 52.6412582252386 0 44.2592592592593 52.3205080756888 0 43.8888888888889 52.3205080756888 0 43.7037037037037 52.6412582252386 0 43.8888888888889 52.9620083747884 0 43.5185185185185 52.9620083747884 0 43.3333333333333 53.2827585243381 0 43.1481481481481 52.9620083747884 0 42.7777777777778 52.9620083747884 0 42.962962962963 52.6412582252386 0 42.7777777777778 52.3205080756888 0 42.4074074074074 52.3205080756888 0 42.2222222222222 52.6412582252386 0 42.037037037037 52.3205080756888 0 41.6666666666667 52.3205080756888 0 41.4814814814815 52.6412582252386 0 41.6666666666667 52.9620083747884 0 41.2962962962963 52.9620083747884 0 41.1111111111111 53.2827585243381 0 41.2962962962963 53.6035086738879 0 41.6666666666667 53.6035086738879 0 41.4814814814815 53.9242588234377 0 41.6666666666667 54.2450089729875 0 41.2962962962963 54.2450089729875 0 41.1111111111111 54.5657591225373 0 40.9259259259259 54.2450089729875 0 40.5555555555556 54.2450089729875 0 40.3703703703704 54.5657591225373 0 40.5555555555556 54.8865092720871 0 40.1851851851852 54.8865092720871 0 40 55.2072594216369 0 39.8148148148148 54.8865092720871 0 39.4444444444444 54.8865092720871 0 39.6296296296296 54.5657591225373 0 39.4444444444444 54.2450089729875 0 39.0740740740741 54.2450089729875 0 38.8888888888889 54.5657591225373 0 38.7037037037037 54.2450089729875 0 38.3333333333333 54.2450089729875 0 38.5185185185185 53.9242588234377 0 38.3333333333333 53.6035086738879 0 38.7037037037037 53.6035086738879 0 38.8888888888889 53.2827585243381 0 38.7037037037037 52.9620083747884 0 38.3333333333333 52.9620083747884 0 38.5185185185185 52.6412582252386 0 38.3333333333333 52.3205080756888 0 37.962962962963 52.3205080756888 0 37.7777777777778 52.6412582252386 0 37.5925925925926 52.3205080756888 0 37.2222222222222 52.3205080756888 0 37.037037037037 52.6412582252386 0 37.2222222222222 52.9620083747884 0 36.8518518518519 52.9620083747884 0 36.6666666666667 53.2827585243381 0 36.4814814814815 52.9620083747884 0 36.1111111111111 52.9620083747884 0 36.2962962962963 52.6412582252386 0 36.1111111111111 52.3205080756888 0 35.7407407407407 52.3205080756888 0 35.5555555555556 52.6412582252386 0 35.3703703703704 52.3205080756888 0 35 52.3205080756888 0 35.1851851851852 51.999757926139 0 35 51.6790077765892 0 35.3703703703704 51.6790077765892 0 35.5555555555556 51.3582576270394 0 35.3703703703704 51.0375074774896 0 35 51.0375074774896 0 35.1851851851852 50.7167573279398 0 35 50.39600717839 0 35.3703703703704 50.39600717839 0 35.5555555555556 50.0752570288402 0 35.7407407407407 50.39600717839 0 36.1111111111111 50.39600717839 0 36.2962962962963 50.0752570288402 0 36.1111111111111 49.7545068792904 0 36.4814814814815 49.7545068792904 0 36.6666666666667 49.4337567297406 0 36.4814814814815 49.1130065801909 0 36.1111111111111 49.1130065801908 0 36.2962962962963 48.7922564306411 0 36.1111111111111 48.4715062810913 0 35.7407407407407 48.4715062810913 0 35.5555555555556 48.7922564306411 0 35.3703703703704 48.4715062810913 0 35 48.4715062810913 0 35.1851851851852 48.1507561315415 0 35 47.8300059819917 0 35.3703703703704 47.8300059819917 0 35.5555555555556 47.5092558324419 0 35.3703703703704 47.1885056828921 0 35 47.1885056828921 0 35.1851851851852 46.8677555333423 0 35 46.5470053837925 0 35.3703703703704 46.5470053837925 0 35.5555555555556 46.2262552342427 0 35.7407407407407 46.5470053837925 0 36.1111111111111 46.5470053837925 0 36.2962962962963 46.2262552342427 0 36.1111111111111 45.9055050846929 0 36.4814814814815 45.9055050846929 0 36.6666666666667 45.5847549351431 0 36.8518518518519 45.9055050846929 0 37.2222222222222 45.9055050846929 0 37.037037037037 46.2262552342427 0 37.2222222222222 46.5470053837925 0 37.5925925925926 46.5470053837925 0 37.7777777777778 46.2262552342427 0 37.962962962963 46.5470053837925 0 38.3333333333333 46.5470053837925 0 38.5185185185185 46.2262552342427 0 38.3333333333333 45.9055050846929 0 38.7037037037037 45.9055050846929 0 38.8888888888889 45.5847549351431 0 38.7037037037037 45.2640047855933 0 38.3333333333333 45.2640047855934 0 38.5185185185185 44.9432546360436 0 38.3333333333333 44.6225044864938 0 38.7037037037037 44.6225044864938 0 38.8888888888889 44.301754336944 0 39.0740740740741 44.6225044864938 0 39.4444444444444 44.6225044864938 0 39.6296296296296 44.301754336944 0 39.4444444444444 43.9810041873942 0 39.8148148148148 43.9810041873942 0 40 43.6602540378444 0 39.8148148148148 43.3395038882946 0 39.4444444444444 43.3395038882946 0 39.6296296296296 43.0187537387448 0 39.4444444444444 42.698003589195 0 39.0740740740741 42.698003589195 0 38.8888888888889 43.0187537387448 0 38.7037037037037 42.698003589195 0 38.3333333333333 42.698003589195 0 38.5185185185185 42.3772534396452 0 38.3333333333333 42.0565032900954 0 38.7037037037037 42.0565032900954 0 38.8888888888889 41.7357531405456 0 38.7037037037037 41.4150029909958 0 38.3333333333333 41.4150029909958 0 38.5185185185185 41.094252841446 0 38.3333333333333 40.7735026918963 0 37.962962962963 40.7735026918963 0 37.7777777777778 41.094252841446 0 37.5925925925926 40.7735026918963 0 37.2222222222222 40.7735026918963 0 37.037037037037 41.094252841446 0 37.2222222222222 41.4150029909958 0 36.8518518518519 41.4150029909958 0 36.6666666666667 41.7357531405456 0 36.4814814814815 41.4150029909958 0 36.1111111111111 41.4150029909958 0 36.2962962962963 41.094252841446 0 36.1111111111111 40.7735026918963 0 35.7407407407407 40.7735026918963 0 35.5555555555556 41.094252841446 0 35.3703703703704 40.7735026918963 0 35 40.7735026918963 0 35.1851851851852 40.4527525423465 0 35 40.1320023927967 0 35.3703703703704 40.1320023927967 0 35.5555555555556 39.8112522432469 0 35.3703703703704 39.4905020936971 0 35 39.4905020936971 0 35.1851851851852 39.1697519441473 0 35 38.8490017945975 0 35.3703703703704 38.8490017945975 0 35.5555555555556 38.5282516450477 0 35.7407407407407 38.8490017945975 0 36.1111111111111 38.8490017945975 0 36.2962962962963 38.5282516450477 0 36.1111111111111 38.2075014954979 0 36.4814814814815 38.2075014954979 0 36.6666666666667 37.8867513459481 0 36.4814814814815 37.5660011963983 0 36.1111111111111 37.5660011963983 0 36.2962962962963 37.2452510468485 0 36.1111111111111 36.9245008972987 0 35.7407407407407 36.9245008972987 0 35.5555555555556 37.2452510468485 0 35.3703703703704 36.9245008972987 0 35 36.9245008972987 0 35.1851851851852 36.603750747749 0 35 36.2830005981992 0 35.3703703703704 36.2830005981992 0 35.5555555555556 35.9622504486494 0 35.3703703703704 35.6415002990996 0 35 35.6415002990996 0 35.1851851851852 35.3207501495498 0 -1.23456790123457 5.01682029252493e-15 0 5.01682029252493e-15 0.617283950617284 1.06916716516597 1.23456790123457 5.01682029252493e-15 2.46913580246914 5.01682029252493e-15 3.08641975308642 1.06916716516597 2.46913580246914 2.13833433033195 3.7037037037037 2.13833433033195 4.32098765432099 3.20750149549793 4.93827160493827 2.13833433033195 6.17283950617284 2.13833433033195 5.55555555555556 1.06916716516597 6.17283950617284 5.01682029252493e-15 7.40740740740741 5.01682029252493e-15 8.02469135802469 1.06916716516597 8.64197530864198 5.01682029252493e-15 9.87654320987654 5.01682029252493e-15 10.4938271604938 1.06916716516597 9.87654320987654 2.13833433033195 11.1111111111111 2.13833433033195 11.7283950617284 3.20750149549793 11.1111111111111 4.27666866066389 9.87654320987654 4.27666866066389 10.4938271604938 5.34583582582987 9.87654320987654 6.41500299099584 11.1111111111111 6.41500299099584 11.7283950617284 7.48417015616182 12.3456790123457 6.41500299099584 13.5802469135802 6.41500299099584 14.1975308641975 7.48417015616182 13.5802469135802 8.5533373213278 14.8148148148148 8.5533373213278 15.4320987654321 9.62250448649376 16.0493827160494 8.5533373213278 17.283950617284 8.5533373213278 16.6666666666667 7.48417015616182 17.2839506172839 6.41500299099584 18.5185185185185 6.41500299099584 19.1358024691358 7.48417015616182 19.7530864197531 6.41500299099584 20.9876543209877 6.41500299099584 20.3703703703704 5.34583582582987 20.9876543209877 4.27666866066389 19.7530864197531 4.27666866066389 19.1358024691358 3.20750149549793 19.7530864197531 2.13833433033195 20.9876543209877 2.13833433033195 20.3703703703704 1.06916716516597 20.9876543209877 5.01682029252493e-15 22.2222222222222 5.01682029252493e-15 22.8395061728395 1.06916716516597 23.4567901234568 5.01682029252493e-15 24.6913580246914 5.01682029252493e-15 25.3086419753086 1.06916716516597 24.6913580246914 2.13833433033195 25.9259259259259 2.13833433033195 26.5432098765432 3.20750149549791 27.1604938271605 2.13833433033195 28.3950617283951 2.13833433033195 27.7777777777778 1.06916716516597 28.3950617283951 5.01682029252493e-15 29.6296296296296 5.01682029252493e-15 30.2469135802469 1.06916716516597 30.8641975308642 5.01682029252493e-15 32.0987654320988 5.01682029252493e-15 32.7160493827161 1.06916716516597 32.0987654320988 2.13833433033195 33.3333333333333 2.13833433033195 33.9506172839506 3.20750149549793 33.3333333333333 4.27666866066389 32.0987654320988 4.27666866066389 32.7160493827161 5.34583582582987 32.0987654320988 6.41500299099584 33.3333333333333 6.41500299099584 33.9506172839506 7.48417015616182 34.5679012345679 6.41500299099584 35.8024691358025 6.41500299099584 36.4197530864198 7.48417015616182 35.8024691358025 8.5533373213278 37.037037037037 8.5533373213278 37.6543209876543 9.62250448649376 37.037037037037 10.6916716516597 35.8024691358025 10.6916716516597 36.4197530864198 11.7608388168257 35.8024691358025 12.8300059819917 34.5679012345679 12.8300059819917 33.9506172839506 11.7608388168257 33.3333333333333 12.8300059819917 32.0987654320988 12.8300059819917 32.7160493827161 13.8991731471577 32.0987654320988 14.9683403123236 33.3333333333333 14.9683403123236 33.9506172839506 16.0375074774896 33.3333333333333 17.1066746426556 32.0987654320988 17.1066746426556 32.7160493827161 18.1758418078216 32.0987654320988 19.2450089729875 33.3333333333333 19.2450089729875 33.9506172839506 20.3141761381535 34.5679012345679 19.2450089729875 35.8024691358025 19.2450089729875 36.4197530864198 20.3141761381535 35.8024691358025 21.3833433033195 37.037037037037 21.3833433033195 37.6543209876543 22.4525104684855 38.2716049382716 21.3833433033195 39.5061728395062 21.3833433033195 38.8888888888889 20.3141761381535 39.5061728395062 19.2450089729875 40.7407407407407 19.2450089729875 41.358024691358 20.3141761381535 41.9753086419753 19.2450089729875 43.2098765432099 19.2450089729875 43.8271604938272 20.3141761381535 43.2098765432099 21.3833433033195 44.4444444444444 21.3833433033195 45.0617283950617 22.4525104684855 44.4444444444444 23.5216776336514 43.2098765432099 23.5216776336514 43.8271604938272 24.5908447988174 43.2098765432099 25.6600119639834 44.4444444444444 25.6600119639834 45.0617283950617 26.7291791291493 45.679012345679 25.6600119639834 46.9135802469136 25.6600119639834 47.5308641975309 26.7291791291493 46.9135802469136 27.7983462943153 48.1481481481481 27.7983462943153 48.7654320987654 28.8675134594813 49.3827160493827 27.7983462943153 50.6172839506173 27.7983462943153 50 26.7291791291493 50.6172839506173 25.6600119639834 51.8518518518519 25.6600119639834 52.4691358024691 26.7291791291493 53.0864197530864 25.6600119639834 54.320987654321 25.6600119639834 53.7037037037037 24.5908447988174 54.320987654321 23.5216776336514 53.0864197530864 23.5216776336514 52.4691358024691 22.4525104684855 53.0864197530864 21.3833433033195 54.320987654321 21.3833433033195 53.7037037037037 20.3141761381535 54.320987654321 19.2450089729875 55.5555555555556 19.2450089729875 56.1728395061728 20.3141761381535 56.7901234567901 19.2450089729875 58.0246913580247 19.2450089729875 58.641975308642 20.3141761381535 58.0246913580247 21.3833433033195 59.2592592592593 21.3833433033195 59.8765432098765 22.4525104684855 60.4938271604938 21.3833433033195 61.7283950617284 21.3833433033195 61.1111111111111 20.3141761381535 61.7283950617284 19.2450089729875 62.962962962963 19.2450089729875 63.5802469135803 20.3141761381535 64.1975308641975 19.2450089729875 65.4320987654321 19.2450089729875 64.8148148148148 18.1758418078216 65.4320987654321 17.1066746426556 64.1975308641975 17.1066746426556 63.5802469135803 16.0375074774896 64.1975308641975 14.9683403123236 65.4320987654321 14.9683403123236 64.8148148148148 13.8991731471577 65.4320987654321 12.8300059819917 64.1975308641975 12.8300059819917 63.5802469135803 11.7608388168257 62.962962962963 12.8300059819917 61.7283950617284 12.8300059819917 61.1111111111111 11.7608388168257 61.7283950617284 10.6916716516597 60.4938271604938 10.6916716516597 59.8765432098765 9.62250448649376 60.4938271604938 8.5533373213278 61.7283950617284 8.5533373213278 61.1111111111111 7.48417015616182 61.7283950617284 6.41500299099584 62.962962962963 6.41500299099584 63.5802469135803 7.48417015616182 64.1975308641975 6.41500299099584 65.4320987654321 6.41500299099584 64.8148148148148 5.34583582582987 65.4320987654321 4.27666866066389 64.1975308641975 4.27666866066389 63.5802469135803 3.20750149549793 64.1975308641975 2.13833433033195 65.4320987654321 2.13833433033195 64.8148148148148 1.06916716516597 65.4320987654321 5.01682029252493e-15 66.6666666666667 5.01682029252493e-15 67.283950617284 1.06916716516597 67.9012345679012 5.01682029252493e-15 69.1358024691358 5.01682029252493e-15 69.7530864197531 1.06916716516597 69.1358024691358 2.13833433033195 70.3703703703704 2.13833433033195 70.9876543209877 3.20750149549793 71.6049382716049 2.13833433033195 72.8395061728395 2.13833433033195 72.2222222222222 1.06916716516597 72.8395061728395 5.01682029252493e-15 74.0740740740741 5.01682029252493e-15 74.6913580246914 1.06916716516597 75.3086419753086 5.01682029252493e-15 76.5432098765432 5.01682029252493e-15 77.1604938271605 1.06916716516597 76.5432098765432 2.13833433033195 77.7777777777778 2.13833433033195 78.3950617283951 3.20750149549793 77.7777777777778 4.27666866066389 76.5432098765432 4.27666866066391 77.1604938271605 5.34583582582987 76.5432098765432 6.41500299099584 77.7777777777778 6.41500299099584 78.3950617283951 7.48417015616182 79.0123456790124 6.41500299099584 80.2469135802469 6.41500299099584 80.8641975308642 7.48417015616182 80.2469135802469 8.5533373213278 81.4814814814815 8.5533373213278 82.0987654320988 9.62250448649376 82.7160493827161 8.5533373213278 83.9506172839506 8.5533373213278 83.3333333333333 7.48417015616182 83.9506172839506 6.41500299099584 85.1851851851852 6.41500299099584 85.8024691358025 7.48417015616182 86.4197530864197 6.41500299099584 87.6543209876543 6.41500299099584 87.037037037037 5.34583582582987 87.6543209876543 4.27666866066389 86.4197530864197 4.27666866066389 85.8024691358025 3.20750149549793 86.4197530864197 2.13833433033195 87.6543209876543 2.13833433033195 87.037037037037 1.06916716516597 87.6543209876543 5.01682029252493e-15 88.8888888888889 5.01682029252493e-15 89.5061728395062 1.06916716516597 90.1234567901235 5.01682029252493e-15 91.358024691358 5.01682029252493e-15 91.9753086419753 1.06916716516597 91.358024691358 2.13833433033195 92.5925925925926 2.13833433033195 93.2098765432099 3.20750149549793 93.8271604938272 2.13833433033195 95.0617283950617 2.13833433033195 94.4444444444444 1.06916716516597 95.0617283950617 5.01682029252493e-15 96.2962962962963 5.01682029252493e-15 96.9135802469136 1.06916716516597 97.5308641975309 5.01682029252493e-15 98.7654320987654 5.01682029252493e-15 98.1481481481482 -1.06916716516597 98.7654320987654 -2.13833433033194 97.5308641975309 -2.13833433033195 96.9135802469136 -3.20750149549792 97.5308641975309 -4.2766686606639 98.7654320987654 -4.2766686606639 98.1481481481482 -5.34583582582986 98.7654320987654 -6.41500299099584 97.5308641975309 -6.41500299099584 96.9135802469136 -7.48417015616182 96.2962962962963 -6.41500299099584 95.0617283950617 -6.41500299099584 94.4444444444444 -7.48417015616182 95.0617283950617 -8.55333732132778 93.8271604938272 -8.55333732132778 93.2098765432099 -9.62250448649376 93.8271604938272 -10.6916716516597 95.0617283950617 -10.6916716516597 94.4444444444444 -11.7608388168257 95.0617283950617 -12.8300059819917 96.2962962962963 -12.8300059819917 96.9135802469136 -11.7608388168257 97.5308641975309 -12.8300059819917 98.7654320987654 -12.8300059819917 98.1481481481481 -13.8991731471577 98.7654320987654 -14.9683403123236 97.5308641975309 -14.9683403123236 96.9135802469136 -16.0375074774896 97.5308641975308 -17.1066746426556 98.7654320987654 -17.1066746426556 98.1481481481481 -18.1758418078216 98.7654320987654 -19.2450089729875 97.5308641975308 -19.2450089729875 96.9135802469136 -20.3141761381535 96.2962962962963 -19.2450089729875 95.0617283950617 -19.2450089729875 94.4444444444444 -20.3141761381535 95.0617283950617 -21.3833433033195 93.8271604938272 -21.3833433033195 93.2098765432099 -22.4525104684854 92.5925925925926 -21.3833433033195 91.358024691358 -21.3833433033195 91.9753086419753 -20.3141761381535 91.358024691358 -19.2450089729875 90.1234567901234 -19.2450089729875 89.5061728395062 -20.3141761381535 88.8888888888889 -19.2450089729875 87.6543209876543 -19.2450089729875 87.037037037037 -20.3141761381535 87.6543209876543 -21.3833433033195 86.4197530864197 -21.3833433033195 85.8024691358025 -22.4525104684854 86.4197530864197 -23.5216776336514 87.6543209876543 -23.5216776336514 87.037037037037 -24.5908447988174 87.6543209876543 -25.6600119639834 86.4197530864197 -25.6600119639834 85.8024691358025 -26.7291791291493 85.1851851851852 -25.6600119639834 83.9506172839506 -25.6600119639834 83.3333333333333 -26.7291791291493 83.9506172839506 -27.7983462943153 82.716049382716 -27.7983462943153 82.0987654320988 -28.8675134594813 82.716049382716 -29.9366806246473 83.9506172839506 -29.9366806246473 83.3333333333333 -31.0058477898132 83.9506172839506 -32.0750149549792 85.1851851851852 -32.0750149549792 85.8024691358025 -31.0058477898132 86.4197530864197 -32.0750149549792 87.6543209876543 -32.0750149549792 87.037037037037 -33.1441821201452 87.6543209876543 -34.2133492853112 86.4197530864197 -34.2133492853112 85.8024691358025 -35.2825164504771 86.4197530864197 -36.3516836156431 87.6543209876543 -36.3516836156431 87.037037037037 -37.4208507808091 87.6543209876543 -38.490017945975 88.8888888888889 -38.490017945975 89.5061728395062 -37.4208507808091 90.1234567901234 -38.490017945975 91.358024691358 -38.490017945975 91.9753086419753 -37.4208507808091 91.358024691358 -36.3516836156431 92.5925925925926 -36.3516836156431 93.2098765432099 -35.2825164504771 93.8271604938272 -36.3516836156431 95.0617283950617 -36.3516836156431 94.4444444444444 -37.4208507808091 95.0617283950617 -38.490017945975 96.2962962962963 -38.490017945975 96.9135802469136 -37.4208507808091 97.5308641975308 -38.490017945975 98.7654320987654 -38.490017945975 98.1481481481481 -39.559185111141 98.7654320987654 -40.628352276307 97.5308641975308 -40.628352276307 96.9135802469136 -41.697519441473 97.5308641975309 -42.7666866066389 98.7654320987654 -42.7666866066389 98.1481481481481 -43.8358537718049 98.7654320987654 -44.9050209369709 97.5308641975309 -44.9050209369709 96.9135802469136 -45.9741881021369 96.2962962962963 -44.9050209369709 95.0617283950617 -44.9050209369709 94.4444444444444 -45.9741881021369 95.0617283950617 -47.0433552673028 93.8271604938272 -47.0433552673028 93.2098765432099 -48.1125224324688 93.8271604938272 -49.1816895976348 95.0617283950617 -49.1816895976348 94.4444444444444 -50.2508567628008 95.0617283950617 -51.3200239279667 96.2962962962963 -51.3200239279667 96.9135802469136 -50.2508567628008 97.5308641975309 -51.3200239279667 98.7654320987654 -51.3200239279667 98.1481481481482 -52.3891910931327 98.7654320987654 -53.4583582582987 97.5308641975309 -53.4583582582987 96.9135802469136 -54.5275254234647 97.5308641975309 -55.5966925886306 98.7654320987654 -55.5966925886306 98.1481481481482 -56.6658597537966 98.7654320987654 -57.7350269189626 97.5308641975309 -57.7350269189626 96.9135802469136 -58.8041940841286 96.2962962962963 -57.7350269189626 95.0617283950617 -57.7350269189626 94.4444444444444 -58.8041940841285 95.0617283950617 -59.8733612492945 93.8271604938272 -59.8733612492945 93.2098765432099 -60.9425284144605 92.5925925925926 -59.8733612492945 91.358024691358 -59.8733612492945 91.9753086419753 -58.8041940841285 91.358024691358 -57.7350269189626 90.1234567901235 -57.7350269189626 89.5061728395062 -58.8041940841286 88.8888888888889 -57.7350269189626 87.6543209876543 -57.7350269189626 87.037037037037 -58.8041940841285 87.6543209876543 -59.8733612492945 86.4197530864197 -59.8733612492945 85.8024691358025 -60.9425284144605 86.4197530864198 -62.0116955796265 87.6543209876543 -62.0116955796265 87.037037037037 -63.0808627447924 87.6543209876543 -64.1500299099584 86.4197530864198 -64.1500299099584 85.8024691358025 -65.2191970751244 85.1851851851852 -64.1500299099584 83.9506172839506 -64.1500299099584 83.3333333333333 -65.2191970751244 83.9506172839506 -66.2883642402904 82.7160493827161 -66.2883642402904 82.0987654320988 -67.3575314054563 81.4814814814815 -66.2883642402904 80.2469135802469 -66.2883642402904 80.8641975308642 -65.2191970751244 80.2469135802469 -64.1500299099584 79.0123456790124 -64.1500299099584 78.3950617283951 -65.2191970751244 77.7777777777778 -64.1500299099584 76.5432098765432 -64.1500299099584 77.1604938271605 -63.0808627447924 76.5432098765432 -62.0116955796265 77.7777777777778 -62.0116955796265 78.3950617283951 -60.9425284144605 77.7777777777778 -59.8733612492945 76.5432098765432 -59.8733612492945 77.1604938271605 -58.8041940841285 76.5432098765432 -57.7350269189626 75.3086419753086 -57.7350269189626 74.6913580246914 -58.8041940841286 74.0740740740741 -57.7350269189626 72.8395061728395 -57.7350269189626 72.2222222222222 -58.8041940841285 72.8395061728395 -59.8733612492945 71.6049382716049 -59.8733612492945 70.9876543209877 -60.9425284144605 70.3703703703704 -59.8733612492945 69.1358024691358 -59.8733612492945 69.7530864197531 -58.8041940841285 69.1358024691358 -57.7350269189626 67.9012345679012 -57.7350269189626 67.283950617284 -58.8041940841286 66.6666666666667 -57.7350269189626 65.4320987654321 -57.7350269189626 64.8148148148148 -58.8041940841285 65.4320987654321 -59.8733612492945 64.1975308641975 -59.8733612492945 63.5802469135803 -60.9425284144605 64.1975308641975 -62.0116955796265 65.4320987654321 -62.0116955796265 64.8148148148148 -63.0808627447924 65.4320987654321 -64.1500299099584 64.1975308641975 -64.1500299099584 63.5802469135803 -65.2191970751244 62.962962962963 -64.1500299099584 61.7283950617284 -64.1500299099584 61.1111111111111 -65.2191970751244 61.7283950617284 -66.2883642402904 60.4938271604938 -66.2883642402904 59.8765432098765 -67.3575314054563 60.4938271604938 -68.4266985706223 61.7283950617284 -68.4266985706223 61.1111111111111 -69.4958657357883 61.7283950617284 -70.5650329009543 62.962962962963 -70.5650329009543 63.5802469135803 -69.4958657357883 64.1975308641975 -70.5650329009543 65.4320987654321 -70.5650329009543 64.8148148148148 -71.6342000661202 65.4320987654321 -72.7033672312862 64.1975308641975 -72.7033672312862 63.5802469135803 -73.7725343964522 64.1975308641975 -74.8417015616182 65.4320987654321 -74.8417015616182 64.8148148148148 -75.9108687267841 65.4320987654321 -76.9800358919501 64.1975308641975 -76.9800358919501 63.5802469135803 -78.0492030571161 62.962962962963 -76.9800358919501 61.7283950617284 -76.9800358919501 61.1111111111111 -78.0492030571161 61.7283950617284 -79.1183702222821 60.4938271604938 -79.1183702222821 59.8765432098765 -80.187537387448 59.2592592592593 -79.1183702222821 58.0246913580247 -79.1183702222821 58.641975308642 -78.0492030571161 58.0246913580247 -76.9800358919501 56.7901234567901 -76.9800358919501 56.1728395061728 -78.0492030571161 55.5555555555556 -76.9800358919501 54.320987654321 -76.9800358919501 53.7037037037037 -78.0492030571161 54.320987654321 -79.118370222282 53.0864197530864 -79.118370222282 52.4691358024691 -80.187537387448 53.0864197530864 -81.256704552614 54.320987654321 -81.256704552614 53.7037037037037 -82.32587171778 54.320987654321 -83.3950388829459 53.0864197530864 -83.3950388829459 52.4691358024691 -84.4642060481119 51.8518518518519 -83.3950388829459 50.6172839506173 -83.3950388829459 50 -84.4642060481119 50.6172839506173 -85.5333732132779 49.3827160493827 -85.5333732132779 48.7654320987654 -86.6025403784439 48.1481481481481 -85.5333732132779 46.9135802469136 -85.5333732132779 47.5308641975309 -84.4642060481119 46.9135802469136 -83.3950388829459 45.679012345679 -83.3950388829459 45.0617283950617 -84.4642060481119 44.4444444444444 -83.3950388829459 43.2098765432099 -83.3950388829459 43.8271604938272 -82.32587171778 43.2098765432099 -81.256704552614 44.4444444444444 -81.256704552614 45.0617283950617 -80.187537387448 44.4444444444444 -79.118370222282 43.2098765432099 -79.118370222282 43.8271604938272 -78.0492030571161 43.2098765432099 -76.9800358919501 41.9753086419753 -76.9800358919501 41.358024691358 -78.0492030571161 40.7407407407407 -76.9800358919501 39.5061728395062 -76.9800358919501 38.8888888888889 -78.0492030571161 39.5061728395062 -79.1183702222821 38.2716049382716 -79.1183702222821 37.6543209876543 -80.187537387448 37.037037037037 -79.1183702222821 35.8024691358025 -79.1183702222821 36.4197530864198 -78.0492030571161 35.8024691358025 -76.9800358919501 34.5679012345679 -76.9800358919501 33.9506172839506 -78.0492030571161 33.3333333333333 -76.9800358919501 32.0987654320988 -76.9800358919501 32.7160493827161 -75.9108687267841 32.0987654320988 -74.8417015616182 33.3333333333333 -74.8417015616182 33.9506172839506 -73.7725343964522 33.3333333333333 -72.7033672312862 32.0987654320988 -72.7033672312862 32.7160493827161 -71.6342000661202 32.0987654320988 -70.5650329009543 33.3333333333333 -70.5650329009543 33.9506172839506 -69.4958657357883 34.5679012345679 -70.5650329009543 35.8024691358025 -70.5650329009543 36.4197530864198 -69.4958657357883 35.8024691358025 -68.4266985706223 37.037037037037 -68.4266985706223 37.6543209876543 -67.3575314054563 37.037037037037 -66.2883642402904 35.8024691358025 -66.2883642402904 36.4197530864198 -65.2191970751244 35.8024691358025 -64.1500299099584 34.5679012345679 -64.1500299099584 33.9506172839506 -65.2191970751244 33.3333333333333 -64.1500299099584 32.0987654320988 -64.1500299099584 32.7160493827161 -63.0808627447924 32.0987654320988 -62.0116955796265 33.3333333333333 -62.0116955796265 33.9506172839506 -60.9425284144605 33.3333333333333 -59.8733612492945 32.0987654320988 -59.8733612492945 32.7160493827161 -58.8041940841285 32.0987654320988 -57.7350269189626 30.8641975308642 -57.7350269189626 30.2469135802469 -58.8041940841286 29.6296296296296 -57.7350269189626 28.3950617283951 -57.7350269189626 27.7777777777778 -58.8041940841285 28.3950617283951 -59.8733612492945 27.1604938271605 -59.8733612492945 26.5432098765432 -60.9425284144605 25.9259259259259 -59.8733612492945 24.6913580246914 -59.8733612492945 25.3086419753086 -58.8041940841285 24.6913580246914 -57.7350269189626 23.4567901234568 -57.7350269189626 22.8395061728395 -58.8041940841285 22.2222222222222 -57.7350269189626 20.9876543209877 -57.7350269189626 20.3703703703704 -58.8041940841285 20.9876543209877 -59.8733612492945 19.7530864197531 -59.8733612492945 19.1358024691358 -60.9425284144605 19.7530864197531 -62.0116955796265 20.9876543209877 -62.0116955796265 20.3703703703704 -63.0808627447924 20.9876543209877 -64.1500299099584 19.7530864197531 -64.1500299099584 19.1358024691358 -65.2191970751244 18.5185185185185 -64.1500299099584 17.283950617284 -64.1500299099584 16.6666666666667 -65.2191970751244 17.283950617284 -66.2883642402904 16.0493827160494 -66.2883642402904 15.4320987654321 -67.3575314054563 14.8148148148148 -66.2883642402904 13.5802469135802 -66.2883642402904 14.1975308641975 -65.2191970751244 13.5802469135803 -64.1500299099584 12.3456790123457 -64.1500299099584 11.7283950617284 -65.2191970751244 11.1111111111111 -64.1500299099584 9.87654320987655 -64.1500299099584 10.4938271604938 -63.0808627447924 9.87654320987655 -62.0116955796265 11.1111111111111 -62.0116955796265 11.7283950617284 -60.9425284144605 11.1111111111111 -59.8733612492945 9.87654320987655 -59.8733612492945 10.4938271604938 -58.8041940841285 9.87654320987655 -57.7350269189626 8.64197530864198 -57.7350269189626 8.0246913580247 -58.8041940841285 7.40740740740741 -57.7350269189626 6.17283950617284 -57.7350269189626 5.55555555555556 -58.8041940841285 6.17283950617284 -59.8733612492945 4.93827160493827 -59.8733612492945 4.32098765432099 -60.9425284144605 3.70370370370371 -59.8733612492945 2.46913580246914 -59.8733612492945 3.08641975308642 -58.8041940841285 2.46913580246914 -57.7350269189626 1.23456790123457 -57.7350269189626 0.617283950617287 -58.8041940841285 3.33066907387547e-15 -57.7350269189626 -1.23456790123456 -57.7350269189626 -0.617283950617281 -56.6658597537966 -1.23456790123456 -55.5966925886306 3.10862446895044e-15 -55.5966925886306 0.617283950617287 -54.5275254234647 2.66453525910038e-15 -53.4583582582987 -1.23456790123456 -53.4583582582987 -0.617283950617282 -52.3891910931327 -1.23456790123457 -51.3200239279667 2.22044604925031e-15 -51.3200239279667 0.617283950617288 -50.2508567628008 1.23456790123457 -51.3200239279667 2.46913580246914 -51.3200239279667 3.08641975308642 -50.2508567628008 2.46913580246914 -49.1816895976348 3.70370370370371 -49.1816895976348 4.32098765432099 -48.1125224324688 3.70370370370371 -47.0433552673028 2.46913580246914 -47.0433552673028 3.08641975308642 -45.9741881021369 2.46913580246914 -44.9050209369709 1.23456790123457 -44.9050209369709 0.617283950617288 -45.9741881021369 2.22044604925031e-15 -44.9050209369709 -1.23456790123457 -44.9050209369709 -0.617283950617282 -43.8358537718049 -1.23456790123456 -42.7666866066389 2.66453525910038e-15 -42.7666866066389 0.617283950617287 -41.697519441473 3.10862446895044e-15 -40.628352276307 -1.23456790123456 -40.628352276307 -0.617283950617281 -39.559185111141 -1.23456790123456 -38.4900179459751 3.10862446895044e-15 -38.4900179459751 0.617283950617287 -37.4208507808091 1.23456790123457 -38.4900179459751 2.46913580246914 -38.4900179459751 3.08641975308642 -37.4208507808091 2.46913580246914 -36.3516836156431 3.70370370370371 -36.3516836156431 4.32098765432099 -35.2825164504771 4.93827160493827 -36.3516836156431 6.17283950617284 -36.3516836156431 5.55555555555556 -37.4208507808091 6.17283950617284 -38.490017945975 7.40740740740741 -38.490017945975 8.02469135802469 -37.4208507808091 8.64197530864198 -38.490017945975 9.87654320987654 -38.490017945975 10.4938271604938 -37.4208507808091 9.87654320987655 -36.3516836156431 11.1111111111111 -36.3516836156431 11.7283950617284 -35.2825164504771 11.1111111111111 -34.2133492853112 9.87654320987655 -34.2133492853112 10.4938271604938 -33.1441821201452 9.87654320987654 -32.0750149549792 11.1111111111111 -32.0750149549792 11.7283950617284 -31.0058477898132 12.3456790123457 -32.0750149549792 13.5802469135802 -32.0750149549792 14.1975308641975 -31.0058477898132 13.5802469135802 -29.9366806246473 14.8148148148148 -29.9366806246473 15.4320987654321 -28.8675134594813 14.8148148148148 -27.7983462943153 13.5802469135802 -27.7983462943153 14.1975308641975 -26.7291791291493 13.5802469135802 -25.6600119639834 12.3456790123457 -25.6600119639834 11.7283950617284 -26.7291791291493 11.1111111111111 -25.6600119639834 9.87654320987654 -25.6600119639834 10.4938271604938 -24.5908447988174 9.87654320987655 -23.5216776336514 11.1111111111111 -23.5216776336514 11.7283950617284 -22.4525104684854 11.1111111111111 -21.3833433033195 9.87654320987654 -21.3833433033195 10.4938271604938 -20.3141761381535 9.87654320987654 -19.2450089729875 8.64197530864198 -19.2450089729875 8.02469135802469 -20.3141761381535 7.40740740740741 -19.2450089729875 6.17283950617284 -19.2450089729875 5.55555555555556 -20.3141761381535 6.17283950617284 -21.3833433033195 4.93827160493827 -21.3833433033195 4.32098765432099 -22.4525104684854 3.7037037037037 -21.3833433033195 2.46913580246913 -21.3833433033195 3.08641975308642 -20.3141761381535 2.46913580246914 -19.2450089729875 1.23456790123457 -19.2450089729875 0.617283950617284 -20.3141761381535 0 -19.2450089729875 -1.23456790123457 -19.2450089729875 -0.617283950617284 -18.1758418078216 -1.23456790123457 -17.1066746426556 0 -17.1066746426556 0.617283950617284 -16.0375074774896 6.66133814775094e-16 -14.9683403123236 -1.23456790123457 -14.9683403123236 -0.617283950617283 -13.8991731471577 -1.23456790123457 -12.8300059819917 1.11022302462516e-15 -12.8300059819917 0.617283950617284 -11.7608388168257 1.23456790123457 -12.8300059819917 2.46913580246914 -12.8300059819917 3.08641975308642 -11.7608388168257 2.46913580246914 -10.6916716516597 3.7037037037037 -10.6916716516597 4.32098765432099 -9.62250448649376 3.7037037037037 -8.55333732132778 2.46913580246914 -8.55333732132778 3.08641975308642 -7.48417015616182 2.46913580246914 -6.41500299099584 1.23456790123457 -6.41500299099584 0.617283950617284 -7.48417015616182 6.66133814775094e-16 -6.41500299099584 -1.23456790123457 -6.41500299099584 -0.617283950617283 -5.34583582582986 -1.23456790123457 -4.2766686606639 2.22044604925031e-16 -4.2766686606639 0.617283950617284 -3.20750149549792 0 -2.13833433033195 -1.23456790123457 -2.13833433033195 -0.617283950617284 -1.06916716516597 33.7654320987654 -35 34.1358024691358 -35 34.320987654321 -34.6792498504502 34.5061728395062 -35 34.8765432098765 -35 35.0617283950617 -34.6792498504502 34.8765432098765 -34.3584997009004 35.2469135802469 -34.3584997009004 35.4320987654321 -34.0377495513506 35.6172839506173 -34.3584997009004 35.9876543209877 -34.3584997009004 35.8024691358025 -34.6792498504502 35.9876543209877 -35 36.358024691358 -35 36.5432098765432 -34.6792498504502 36.7283950617284 -35 37.0987654320988 -35 37.2839506172839 -34.6792498504502 37.0987654320988 -34.3584997009004 37.4691358024691 -34.3584997009004 37.6543209876543 -34.0377495513506 37.4691358024691 -33.7169994018008 37.0987654320988 -33.7169994018008 37.2839506172839 -33.396249252251 37.0987654320988 -33.0754991027013 37.4691358024691 -33.0754991027013 37.6543209876543 -32.7547489531515 37.8395061728395 -33.0754991027013 38.2098765432099 -33.0754991027013 38.3950617283951 -32.7547489531515 38.2098765432099 -32.4339988036017 38.5802469135802 -32.4339988036017 38.7654320987654 -32.1132486540519 38.9506172839506 -32.4339988036017 39.320987654321 -32.4339988036017 39.1358024691358 -32.7547489531515 39.320987654321 -33.0754991027013 39.6913580246914 -33.0754991027013 39.8765432098765 -32.7547489531515 40.0617283950617 -33.0754991027012 40.4320987654321 -33.0754991027012 40.2469135802469 -33.396249252251 40.4320987654321 -33.7169994018008 40.0617283950617 -33.7169994018008 39.8765432098765 -34.0377495513506 40.0617283950617 -34.3584997009004 40.4320987654321 -34.3584997009004 40.2469135802469 -34.6792498504502 40.4320987654321 -35 40.8024691358025 -35 40.9876543209877 -34.6792498504502 41.1728395061728 -35 41.5432098765432 -35 41.7283950617284 -34.6792498504502 41.5432098765432 -34.3584997009004 41.9135802469136 -34.3584997009004 42.0987654320988 -34.0377495513506 42.2839506172839 -34.3584997009004 42.6543209876543 -34.3584997009004 42.4691358024691 -34.6792498504502 42.6543209876543 -35 43.0246913580247 -35 43.2098765432099 -34.6792498504502 43.3950617283951 -35 43.7654320987654 -35 43.9506172839506 -34.6792498504502 43.7654320987654 -34.3584997009004 44.1358024691358 -34.3584997009004 44.320987654321 -34.0377495513506 44.1358024691358 -33.7169994018008 43.7654320987654 -33.7169994018008 43.9506172839506 -33.396249252251 43.7654320987654 -33.0754991027012 44.1358024691358 -33.0754991027012 44.320987654321 -32.7547489531515 44.5061728395062 -33.0754991027013 44.8765432098765 -33.0754991027013 45.0617283950617 -32.7547489531515 44.8765432098765 -32.4339988036017 45.2469135802469 -32.4339988036017 45.4320987654321 -32.1132486540519 45.2469135802469 -31.7924985045021 44.8765432098765 -31.7924985045021 45.0617283950617 -31.4717483549523 44.8765432098765 -31.1509982054025 44.5061728395062 -31.1509982054025 44.320987654321 -31.4717483549523 44.1358024691358 -31.1509982054025 43.7654320987654 -31.1509982054025 43.9506172839506 -30.8302480558527 43.7654320987654 -30.5094979063029 44.1358024691358 -30.5094979063029 44.320987654321 -30.1887477567531 44.1358024691358 -29.8679976072033 43.7654320987654 -29.8679976072033 43.9506172839506 -29.5472474576535 43.7654320987654 -29.2264973081037 44.1358024691358 -29.2264973081037 44.320987654321 -28.905747158554 44.5061728395062 -29.2264973081037 44.8765432098765 -29.2264973081037 45.0617283950617 -28.905747158554 44.8765432098765 -28.5849970090042 45.2469135802469 -28.5849970090042 45.4320987654321 -28.2642468594544 45.6172839506173 -28.5849970090042 45.9876543209877 -28.5849970090042 45.8024691358025 -28.905747158554 45.9876543209877 -29.2264973081037 46.358024691358 -29.2264973081037 46.5432098765432 -28.905747158554 46.7283950617284 -29.2264973081037 47.0987654320988 -29.2264973081037 47.2839506172839 -28.905747158554 47.0987654320988 -28.5849970090042 47.4691358024691 -28.5849970090042 47.6543209876543 -28.2642468594544 47.4691358024691 -27.9434967099046 47.0987654320988 -27.9434967099046 47.2839506172839 -27.6227465603548 47.0987654320988 -27.301996410805 47.4691358024691 -27.301996410805 47.6543209876543 -26.9812462612552 47.8395061728395 -27.301996410805 48.2098765432099 -27.301996410805 48.3950617283951 -26.9812462612552 48.2098765432099 -26.6604961117054 48.5802469135802 -26.6604961117054 48.7654320987654 -26.3397459621556 48.9506172839506 -26.6604961117054 49.320987654321 -26.6604961117054 49.1358024691358 -26.9812462612552 49.320987654321 -27.301996410805 49.6913580246914 -27.301996410805 49.8765432098765 -26.9812462612552 50.0617283950617 -27.301996410805 50.4320987654321 -27.301996410805 50.2469135802469 -27.6227465603548 50.4320987654321 -27.9434967099046 50.0617283950617 -27.9434967099046 49.8765432098765 -28.2642468594544 50.0617283950617 -28.5849970090042 50.4320987654321 -28.5849970090042 50.2469135802469 -28.905747158554 50.4320987654321 -29.2264973081037 50.8024691358025 -29.2264973081037 50.9876543209877 -28.905747158554 51.1728395061728 -29.2264973081037 51.5432098765432 -29.2264973081037 51.7283950617284 -28.905747158554 51.5432098765432 -28.5849970090042 51.9135802469136 -28.5849970090042 52.0987654320988 -28.2642468594544 52.2839506172839 -28.5849970090042 52.6543209876543 -28.5849970090042 52.4691358024691 -28.905747158554 52.6543209876543 -29.2264973081037 53.0246913580247 -29.2264973081037 53.2098765432099 -28.905747158554 53.3950617283951 -29.2264973081037 53.7654320987654 -29.2264973081037 53.5802469135802 -29.5472474576535 53.7654320987654 -29.8679976072033 53.3950617283951 -29.8679976072033 53.2098765432099 -30.1887477567531 53.3950617283951 -30.5094979063029 53.7654320987654 -30.5094979063029 53.5802469135802 -30.8302480558527 53.7654320987654 -31.1509982054025 53.3950617283951 -31.1509982054025 53.2098765432099 -31.4717483549523 53.0246913580247 -31.1509982054025 52.6543209876543 -31.1509982054025 52.4691358024691 -31.4717483549523 52.6543209876543 -31.7924985045021 52.2839506172839 -31.7924985045021 52.0987654320988 -32.1132486540519 52.2839506172839 -32.4339988036017 52.6543209876543 -32.4339988036017 52.4691358024691 -32.7547489531515 52.6543209876543 -33.0754991027013 53.0246913580247 -33.0754991027013 53.2098765432099 -32.7547489531515 53.3950617283951 -33.0754991027012 53.7654320987654 -33.0754991027012 53.5802469135802 -33.396249252251 53.7654320987654 -33.7169994018008 53.3950617283951 -33.7169994018008 53.2098765432099 -34.0377495513506 53.3950617283951 -34.3584997009004 53.7654320987654 -34.3584997009004 53.5802469135802 -34.6792498504502 53.7654320987654 -35 54.1358024691358 -35 54.320987654321 -34.6792498504502 54.5061728395062 -35 54.8765432098765 -35 55.0617283950617 -34.6792498504502 54.8765432098765 -34.3584997009004 55.2469135802469 -34.3584997009004 55.4320987654321 -34.0377495513506 55.6172839506173 -34.3584997009004 55.9876543209877 -34.3584997009004 55.8024691358025 -34.6792498504502 55.9876543209877 -35 56.358024691358 -35 56.5432098765432 -34.6792498504502 56.7283950617284 -35 57.0987654320988 -35 57.2839506172839 -34.6792498504502 57.0987654320988 -34.3584997009004 57.4691358024691 -34.3584997009004 57.6543209876543 -34.0377495513506 57.4691358024691 -33.7169994018008 57.0987654320988 -33.7169994018008 57.2839506172839 -33.396249252251 57.0987654320988 -33.0754991027012 57.4691358024691 -33.0754991027012 57.6543209876543 -32.7547489531515 57.8395061728395 -33.0754991027012 58.2098765432099 -33.0754991027012 58.3950617283951 -32.7547489531515 58.2098765432099 -32.4339988036017 58.5802469135802 -32.4339988036017 58.7654320987654 -32.1132486540519 58.9506172839506 -32.4339988036017 59.320987654321 -32.4339988036017 59.1358024691358 -32.7547489531515 59.320987654321 -33.0754991027012 59.6913580246914 -33.0754991027013 59.8765432098765 -32.7547489531515 60.0617283950617 -33.0754991027013 60.4320987654321 -33.0754991027013 60.2469135802469 -33.396249252251 60.4320987654321 -33.7169994018008 60.0617283950617 -33.7169994018008 59.8765432098765 -34.0377495513506 60.0617283950617 -34.3584997009004 60.4320987654321 -34.3584997009004 60.2469135802469 -34.6792498504502 60.4320987654321 -35 60.8024691358025 -35 60.9876543209877 -34.6792498504502 61.1728395061728 -35 61.5432098765432 -35 61.7283950617284 -34.6792498504502 61.5432098765432 -34.3584997009004 61.9135802469136 -34.3584997009004 62.0987654320988 -34.0377495513506 62.2839506172839 -34.3584997009004 62.6543209876543 -34.3584997009004 62.4691358024691 -34.6792498504502 62.6543209876543 -35 63.0246913580247 -35 63.2098765432099 -34.6792498504502 63.3950617283951 -35 63.7654320987654 -35 63.5802469135802 -35.3207501495498 63.7654320987654 -35.6415002990996 63.3950617283951 -35.6415002990996 63.2098765432099 -35.9622504486494 63.3950617283951 -36.2830005981992 63.7654320987654 -36.2830005981992 63.5802469135802 -36.603750747749 63.7654320987654 -36.9245008972987 63.3950617283951 -36.9245008972987 63.2098765432099 -37.2452510468485 63.0246913580247 -36.9245008972987 62.6543209876543 -36.9245008972987 62.4691358024691 -37.2452510468485 62.6543209876543 -37.5660011963983 62.2839506172839 -37.5660011963983 62.0987654320988 -37.8867513459481 62.2839506172839 -38.2075014954979 62.6543209876543 -38.2075014954979 62.4691358024691 -38.5282516450477 62.6543209876543 -38.8490017945975 63.0246913580247 -38.8490017945975 63.2098765432099 -38.5282516450477 63.3950617283951 -38.8490017945975 63.7654320987654 -38.8490017945975 63.5802469135802 -39.1697519441473 63.7654320987654 -39.4905020936971 63.3950617283951 -39.4905020936971 63.2098765432099 -39.8112522432469 63.395061728395 -40.1320023927967 63.7654320987654 -40.1320023927967 63.5802469135802 -40.4527525423465 63.7654320987654 -40.7735026918963 63.395061728395 -40.7735026918963 63.2098765432099 -41.094252841446 63.0246913580247 -40.7735026918963 62.6543209876543 -40.7735026918963 62.4691358024691 -41.094252841446 62.6543209876543 -41.4150029909958 62.2839506172839 -41.4150029909958 62.0987654320988 -41.7357531405456 61.9135802469136 -41.4150029909958 61.5432098765432 -41.4150029909958 61.7283950617284 -41.094252841446 61.5432098765432 -40.7735026918963 61.1728395061728 -40.7735026918963 60.9876543209877 -41.094252841446 60.8024691358025 -40.7735026918963 60.4320987654321 -40.7735026918963 60.2469135802469 -41.094252841446 60.4320987654321 -41.4150029909958 60.0617283950617 -41.4150029909958 59.8765432098765 -41.7357531405456 60.0617283950617 -42.0565032900954 60.4320987654321 -42.0565032900954 60.2469135802469 -42.3772534396452 60.4320987654321 -42.698003589195 60.0617283950617 -42.698003589195 59.8765432098765 -43.0187537387448 59.6913580246914 -42.698003589195 59.320987654321 -42.698003589195 59.1358024691358 -43.0187537387448 59.320987654321 -43.3395038882946 58.9506172839506 -43.3395038882946 58.7654320987654 -43.6602540378444 58.9506172839506 -43.9810041873942 59.320987654321 -43.9810041873942 59.1358024691358 -44.301754336944 59.320987654321 -44.6225044864938 59.6913580246914 -44.6225044864938 59.8765432098765 -44.301754336944 60.0617283950617 -44.6225044864938 60.4320987654321 -44.6225044864938 60.2469135802469 -44.9432546360436 60.4320987654321 -45.2640047855933 60.0617283950617 -45.2640047855933 59.8765432098765 -45.5847549351431 60.0617283950617 -45.9055050846929 60.4320987654321 -45.9055050846929 60.2469135802469 -46.2262552342427 60.4320987654321 -46.5470053837925 60.8024691358025 -46.5470053837925 60.9876543209877 -46.2262552342427 61.1728395061728 -46.5470053837925 61.5432098765432 -46.5470053837925 61.7283950617284 -46.2262552342427 61.5432098765432 -45.9055050846929 61.9135802469136 -45.9055050846929 62.0987654320988 -45.5847549351431 62.2839506172839 -45.9055050846929 62.6543209876543 -45.9055050846929 62.4691358024691 -46.2262552342427 62.6543209876543 -46.5470053837925 63.0246913580247 -46.5470053837925 63.2098765432099 -46.2262552342427 63.395061728395 -46.5470053837925 63.7654320987654 -46.5470053837925 63.5802469135802 -46.8677555333423 63.7654320987654 -47.1885056828921 63.395061728395 -47.1885056828921 63.2098765432099 -47.5092558324419 63.3950617283951 -47.8300059819917 63.7654320987654 -47.8300059819917 63.5802469135802 -48.1507561315415 63.7654320987654 -48.4715062810913 63.3950617283951 -48.4715062810913 63.2098765432099 -48.7922564306411 63.0246913580247 -48.4715062810913 62.6543209876543 -48.4715062810913 62.4691358024691 -48.7922564306411 62.6543209876543 -49.1130065801908 62.2839506172839 -49.1130065801909 62.0987654320988 -49.4337567297406 62.2839506172839 -49.7545068792904 62.6543209876543 -49.7545068792904 62.4691358024691 -50.0752570288402 62.6543209876543 -50.39600717839 63.0246913580247 -50.39600717839 63.2098765432099 -50.0752570288402 63.3950617283951 -50.39600717839 63.7654320987654 -50.39600717839 63.5802469135802 -50.7167573279398 63.7654320987654 -51.0375074774896 63.3950617283951 -51.0375074774896 63.2098765432099 -51.3582576270394 63.3950617283951 -51.6790077765892 63.7654320987654 -51.6790077765892 63.5802469135802 -51.999757926139 63.7654320987654 -52.3205080756888 63.3950617283951 -52.3205080756888 63.2098765432099 -52.6412582252386 63.0246913580247 -52.3205080756888 62.6543209876543 -52.3205080756888 62.4691358024691 -52.6412582252386 62.6543209876543 -52.9620083747884 62.2839506172839 -52.9620083747884 62.0987654320988 -53.2827585243381 61.9135802469136 -52.9620083747884 61.5432098765432 -52.9620083747884 61.7283950617284 -52.6412582252386 61.5432098765432 -52.3205080756888 61.1728395061728 -52.3205080756888 60.9876543209877 -52.6412582252386 60.8024691358025 -52.3205080756888 60.4320987654321 -52.3205080756888 60.2469135802469 -52.6412582252386 60.4320987654321 -52.9620083747884 60.0617283950617 -52.9620083747884 59.8765432098765 -53.2827585243381 60.0617283950617 -53.6035086738879 60.4320987654321 -53.6035086738879 60.2469135802469 -53.9242588234377 60.4320987654321 -54.2450089729875 60.0617283950617 -54.2450089729875 59.8765432098765 -54.5657591225373 59.6913580246914 -54.2450089729875 59.320987654321 -54.2450089729875 59.1358024691358 -54.5657591225373 59.320987654321 -54.8865092720871 58.9506172839506 -54.8865092720871 58.7654320987654 -55.2072594216369 58.5802469135802 -54.8865092720871 58.2098765432099 -54.8865092720871 58.3950617283951 -54.5657591225373 58.2098765432099 -54.2450089729875 57.8395061728395 -54.2450089729875 57.6543209876543 -54.5657591225373 57.4691358024691 -54.2450089729875 57.0987654320988 -54.2450089729875 57.2839506172839 -53.9242588234377 57.0987654320988 -53.6035086738879 57.4691358024691 -53.6035086738879 57.6543209876543 -53.2827585243381 57.4691358024691 -52.9620083747884 57.0987654320988 -52.9620083747884 57.2839506172839 -52.6412582252386 57.0987654320988 -52.3205080756888 56.7283950617284 -52.3205080756888 56.5432098765432 -52.6412582252386 56.358024691358 -52.3205080756888 55.9876543209877 -52.3205080756888 55.8024691358025 -52.6412582252386 55.9876543209877 -52.9620083747884 55.6172839506173 -52.9620083747884 55.4320987654321 -53.2827585243381 55.2469135802469 -52.9620083747884 54.8765432098765 -52.9620083747884 55.0617283950617 -52.6412582252386 54.8765432098765 -52.3205080756888 54.5061728395062 -52.3205080756888 54.320987654321 -52.6412582252386 54.1358024691358 -52.3205080756888 53.7654320987654 -52.3205080756888 53.5802469135802 -52.6412582252386 53.7654320987654 -52.9620083747884 53.3950617283951 -52.9620083747884 53.2098765432099 -53.2827585243381 53.3950617283951 -53.6035086738879 53.7654320987654 -53.6035086738879 53.5802469135802 -53.9242588234377 53.7654320987654 -54.2450089729875 53.3950617283951 -54.2450089729875 53.2098765432099 -54.5657591225373 53.0246913580247 -54.2450089729875 52.6543209876543 -54.2450089729875 52.4691358024691 -54.5657591225373 52.6543209876543 -54.8865092720871 52.2839506172839 -54.8865092720871 52.0987654320988 -55.2072594216369 52.2839506172839 -55.5280095711867 52.6543209876543 -55.5280095711867 52.4691358024691 -55.8487597207365 52.6543209876543 -56.1695098702863 53.0246913580247 -56.1695098702863 53.2098765432099 -55.8487597207365 53.3950617283951 -56.1695098702863 53.7654320987654 -56.1695098702863 53.5802469135802 -56.4902600198361 53.7654320987654 -56.8110101693859 53.3950617283951 -56.8110101693859 53.2098765432099 -57.1317603189357 53.3950617283951 -57.4525104684854 53.7654320987654 -57.4525104684854 53.5802469135802 -57.7732606180352 53.7654320987654 -58.094010767585 53.3950617283951 -58.094010767585 53.2098765432099 -58.4147609171348 53.0246913580247 -58.094010767585 52.6543209876543 -58.094010767585 52.4691358024691 -58.4147609171348 52.6543209876543 -58.7355110666846 52.2839506172839 -58.7355110666846 52.0987654320988 -59.0562612162344 51.9135802469136 -58.7355110666846 51.5432098765432 -58.7355110666846 51.7283950617284 -58.4147609171348 51.5432098765432 -58.094010767585 51.1728395061728 -58.094010767585 50.9876543209877 -58.4147609171348 50.8024691358025 -58.094010767585 50.4320987654321 -58.094010767585 50.2469135802469 -58.4147609171348 50.4320987654321 -58.7355110666846 50.0617283950617 -58.7355110666846 49.8765432098765 -59.0562612162344 50.0617283950617 -59.3770113657842 50.4320987654321 -59.3770113657842 50.2469135802469 -59.697761515334 50.4320987654321 -60.0185116648838 50.0617283950617 -60.0185116648838 49.8765432098765 -60.3392618144336 49.6913580246914 -60.0185116648838 49.320987654321 -60.0185116648838 49.1358024691358 -60.3392618144336 49.320987654321 -60.6600119639834 48.9506172839506 -60.6600119639834 48.7654320987654 -60.9807621135332 48.5802469135802 -60.6600119639834 48.2098765432099 -60.6600119639834 48.3950617283951 -60.3392618144336 48.2098765432099 -60.0185116648838 47.8395061728395 -60.0185116648838 47.6543209876543 -60.3392618144336 47.4691358024691 -60.0185116648838 47.0987654320988 -60.0185116648838 47.2839506172839 -59.697761515334 47.0987654320988 -59.3770113657842 47.4691358024691 -59.3770113657842 47.6543209876543 -59.0562612162344 47.4691358024691 -58.7355110666846 47.0987654320988 -58.7355110666846 47.2839506172839 -58.4147609171348 47.0987654320988 -58.094010767585 46.7283950617284 -58.094010767585 46.5432098765432 -58.4147609171348 46.358024691358 -58.094010767585 45.9876543209877 -58.094010767585 45.8024691358025 -58.4147609171348 45.9876543209877 -58.7355110666846 45.6172839506173 -58.7355110666846 45.4320987654321 -59.0562612162344 45.2469135802469 -58.7355110666846 44.8765432098765 -58.7355110666846 45.0617283950617 -58.4147609171348 44.8765432098765 -58.094010767585 44.5061728395062 -58.094010767585 44.320987654321 -58.4147609171348 44.1358024691358 -58.094010767585 43.7654320987654 -58.094010767585 43.9506172839506 -57.7732606180352 43.7654320987654 -57.4525104684854 44.1358024691358 -57.4525104684854 44.320987654321 -57.1317603189357 44.1358024691358 -56.8110101693859 43.7654320987654 -56.8110101693859 43.9506172839506 -56.4902600198361 43.7654320987654 -56.1695098702863 44.1358024691358 -56.1695098702863 44.320987654321 -55.8487597207365 44.5061728395062 -56.1695098702863 44.8765432098765 -56.1695098702863 45.0617283950617 -55.8487597207365 44.8765432098765 -55.5280095711867 45.2469135802469 -55.5280095711867 45.4320987654321 -55.2072594216369 45.2469135802469 -54.8865092720871 44.8765432098765 -54.8865092720871 45.0617283950617 -54.5657591225373 44.8765432098765 -54.2450089729875 44.5061728395062 -54.2450089729875 44.320987654321 -54.5657591225373 44.1358024691358 -54.2450089729875 43.7654320987654 -54.2450089729875 43.9506172839506 -53.9242588234377 43.7654320987654 -53.6035086738879 44.1358024691358 -53.6035086738879 44.320987654321 -53.2827585243381 44.1358024691358 -52.9620083747884 43.7654320987654 -52.9620083747884 43.9506172839506 -52.6412582252386 43.7654320987654 -52.3205080756888 43.3950617283951 -52.3205080756888 43.2098765432099 -52.6412582252386 43.0246913580247 -52.3205080756888 42.6543209876543 -52.3205080756888 42.4691358024691 -52.6412582252386 42.6543209876543 -52.9620083747884 42.2839506172839 -52.9620083747884 42.0987654320988 -53.2827585243381 41.9135802469136 -52.9620083747884 41.5432098765432 -52.9620083747884 41.7283950617284 -52.6412582252386 41.5432098765432 -52.3205080756888 41.1728395061728 -52.3205080756888 40.9876543209877 -52.6412582252386 40.8024691358025 -52.3205080756888 40.4320987654321 -52.3205080756888 40.2469135802469 -52.6412582252386 40.4320987654321 -52.9620083747884 40.0617283950617 -52.9620083747884 39.8765432098765 -53.2827585243381 40.0617283950617 -53.6035086738879 40.4320987654321 -53.6035086738879 40.2469135802469 -53.9242588234377 40.4320987654321 -54.2450089729875 40.0617283950617 -54.2450089729875 39.8765432098765 -54.5657591225373 39.6913580246914 -54.2450089729875 39.320987654321 -54.2450089729875 39.1358024691358 -54.5657591225373 39.320987654321 -54.8865092720871 38.9506172839506 -54.8865092720871 38.7654320987654 -55.2072594216369 38.5802469135802 -54.8865092720871 38.2098765432099 -54.8865092720871 38.3950617283951 -54.5657591225373 38.2098765432099 -54.2450089729875 37.8395061728395 -54.2450089729875 37.6543209876543 -54.5657591225373 37.4691358024691 -54.2450089729875 37.0987654320988 -54.2450089729875 37.2839506172839 -53.9242588234377 37.0987654320988 -53.6035086738879 37.4691358024691 -53.6035086738879 37.6543209876543 -53.2827585243381 37.4691358024691 -52.9620083747884 37.0987654320988 -52.9620083747884 37.2839506172839 -52.6412582252386 37.0987654320988 -52.3205080756888 36.7283950617284 -52.3205080756888 36.5432098765432 -52.6412582252386 36.358024691358 -52.3205080756888 35.9876543209877 -52.3205080756888 35.8024691358025 -52.6412582252386 35.9876543209877 -52.9620083747884 35.6172839506173 -52.9620083747884 35.4320987654321 -53.2827585243381 35.2469135802469 -52.9620083747884 34.8765432098765 -52.9620083747884 35.0617283950617 -52.6412582252386 34.8765432098765 -52.3205080756888 34.5061728395062 -52.3205080756888 34.320987654321 -52.6412582252386 34.1358024691358 -52.3205080756888 33.7654320987654 -52.3205080756888 33.9506172839506 -51.999757926139 33.7654320987654 -51.6790077765892 34.1358024691358 -51.6790077765892 34.320987654321 -51.3582576270394 34.1358024691358 -51.0375074774896 33.7654320987654 -51.0375074774896 33.9506172839506 -50.7167573279398 33.7654320987654 -50.39600717839 34.1358024691358 -50.39600717839 34.320987654321 -50.0752570288402 34.5061728395062 -50.39600717839 34.8765432098765 -50.39600717839 35.0617283950617 -50.0752570288402 34.8765432098765 -49.7545068792904 35.2469135802469 -49.7545068792904 35.4320987654321 -49.4337567297406 35.2469135802469 -49.1130065801909 34.8765432098765 -49.1130065801908 35.0617283950617 -48.7922564306411 34.8765432098765 -48.4715062810913 34.5061728395062 -48.4715062810913 34.320987654321 -48.7922564306411 34.1358024691358 -48.4715062810913 33.7654320987654 -48.4715062810913 33.9506172839506 -48.1507561315415 33.7654320987654 -47.8300059819917 34.1358024691358 -47.8300059819917 34.320987654321 -47.5092558324419 34.1358024691358 -47.1885056828921 33.7654320987654 -47.1885056828921 33.9506172839506 -46.8677555333423 33.7654320987654 -46.5470053837925 34.1358024691358 -46.5470053837925 34.320987654321 -46.2262552342427 34.5061728395062 -46.5470053837925 34.8765432098765 -46.5470053837925 35.0617283950617 -46.2262552342427 34.8765432098765 -45.9055050846929 35.2469135802469 -45.9055050846929 35.4320987654321 -45.5847549351431 35.6172839506173 -45.9055050846929 35.9876543209877 -45.9055050846929 35.8024691358025 -46.2262552342427 35.9876543209877 -46.5470053837925 36.358024691358 -46.5470053837925 36.5432098765432 -46.2262552342427 36.7283950617284 -46.5470053837925 37.0987654320988 -46.5470053837925 37.2839506172839 -46.2262552342427 37.0987654320988 -45.9055050846929 37.4691358024691 -45.9055050846929 37.6543209876543 -45.5847549351431 37.4691358024691 -45.2640047855933 37.0987654320988 -45.2640047855934 37.2839506172839 -44.9432546360436 37.0987654320988 -44.6225044864938 37.4691358024691 -44.6225044864938 37.6543209876543 -44.301754336944 37.8395061728395 -44.6225044864938 38.2098765432099 -44.6225044864938 38.3950617283951 -44.301754336944 38.2098765432099 -43.9810041873942 38.5802469135802 -43.9810041873942 38.7654320987654 -43.6602540378444 38.5802469135802 -43.3395038882946 38.2098765432099 -43.3395038882946 38.3950617283951 -43.0187537387448 38.2098765432099 -42.698003589195 37.8395061728395 -42.698003589195 37.6543209876543 -43.0187537387448 37.4691358024691 -42.698003589195 37.0987654320988 -42.698003589195 37.2839506172839 -42.3772534396452 37.0987654320988 -42.0565032900954 37.4691358024691 -42.0565032900954 37.6543209876543 -41.7357531405456 37.4691358024691 -41.4150029909958 37.0987654320988 -41.4150029909958 37.2839506172839 -41.094252841446 37.0987654320988 -40.7735026918963 36.7283950617284 -40.7735026918963 36.5432098765432 -41.094252841446 36.358024691358 -40.7735026918963 35.9876543209877 -40.7735026918963 35.8024691358025 -41.094252841446 35.9876543209877 -41.4150029909958 35.6172839506173 -41.4150029909958 35.4320987654321 -41.7357531405456 35.2469135802469 -41.4150029909958 34.8765432098765 -41.4150029909958 35.0617283950617 -41.094252841446 34.8765432098765 -40.7735026918963 34.5061728395062 -40.7735026918963 34.320987654321 -41.094252841446 34.1358024691358 -40.7735026918963 33.7654320987654 -40.7735026918963 33.9506172839506 -40.4527525423465 33.7654320987654 -40.1320023927967 34.1358024691358 -40.1320023927967 34.320987654321 -39.8112522432469 34.1358024691358 -39.4905020936971 33.7654320987654 -39.4905020936971 33.9506172839506 -39.1697519441473 33.7654320987654 -38.8490017945975 34.1358024691358 -38.8490017945975 34.320987654321 -38.5282516450477 34.5061728395062 -38.8490017945975 34.8765432098765 -38.8490017945975 35.0617283950617 -38.5282516450477 34.8765432098765 -38.2075014954979 35.2469135802469 -38.2075014954979 35.4320987654321 -37.8867513459481 35.2469135802469 -37.5660011963983 34.8765432098765 -37.5660011963983 35.0617283950617 -37.2452510468485 34.8765432098765 -36.9245008972987 34.5061728395062 -36.9245008972987 34.320987654321 -37.2452510468485 34.1358024691358 -36.9245008972987 33.7654320987654 -36.9245008972987 33.9506172839506 -36.603750747749 33.7654320987654 -36.2830005981992 34.1358024691358 -36.2830005981992 34.320987654321 -35.9622504486494 34.1358024691358 -35.6415002990996 33.7654320987654 -35.6415002990996 33.9506172839506 -35.3207501495498 614 616 615 617 616 618 611 610 612 613 612 606 619 618 620 621 620 614 614 620 618 613 621 614 616 614 618 612 610 608 608 607 606 606 605 613 609 608 610 606 612 608 598 604 600 602 604 603 600 604 602 604 598 605 601 600 602 600 599 598 605 598 597 613 605 597 636 635 634 636 634 630 634 633 632 630 634 632 630 632 631 641 640 642 640 639 638 640 638 642 637 630 629 637 629 653 637 636 630 638 637 644 622 621 596 623 622 624 596 595 594 597 596 621 621 613 597 622 596 624 628 627 626 628 626 654 625 624 594 594 624 596 625 594 593 626 625 657 629 628 654 546 544 548 544 546 545 548 544 542 546 548 547 554 553 552 550 554 552 554 550 556 552 551 550 569 568 570 541 548 542 548 541 549 542 544 543 550 557 556 541 533 549 533 557 549 556 555 554 567 566 568 1377 573 565 550 549 557 568 566 570 586 588 587 588 586 584 585 584 586 582 584 583 593 592 1441 592 591 590 592 590 1441 589 588 582 582 588 584 589 582 581 590 589 1435 572 571 570 572 565 573 572 570 566 573 1377 574 566 565 572 580 579 578 581 580 1409 576 1385 577 575 574 576 580 578 1409 1383 576 574 589 581 1415 657 625 689 644 643 642 645 644 637 646 645 652 637 653 645 647 646 648 649 648 650 650 648 652 652 651 650 652 648 646 645 653 652 644 642 638 1409 1411 581 1408 1409 1407 1411 1409 1410 1411 1415 581 1409 577 1407 1413 1415 1411 589 1415 1417 656 654 626 1417 1415 1416 589 1417 1433 1414 1415 1413 1419 1433 1417 1411 1412 1413 654 653 629 1409 578 577 664 663 662 666 665 664 662 661 669 666 664 662 668 667 666 668 666 662 676 670 669 662 669 668 671 670 672 669 661 677 657 656 626 1433 1435 589 1435 1439 590 1439 1435 1437 1434 1435 1433 1441 590 1439 593 1441 689 659 658 660 688 660 658 1505 1441 1503 593 689 625 657 689 658 1439 1440 1441 661 660 685 655 654 656 1505 690 1441 1417 1418 1419 1406 1407 1405 1404 1405 1407 1404 1407 1403 577 1403 1407 1433 1431 1432 1433 1419 1431 1427 1431 1419 1430 1431 1428 1422 1423 1419 1422 1419 1421 1423 1427 1419 1419 1420 1421 1402 1403 1401 1399 1400 1401 1401 577 1385 1424 1425 1423 1427 1428 1431 1425 1426 1423 1426 1427 1423 577 1401 1403 1430 1428 1429 1437 1435 1436 1439 1437 1438 1505 1503 1504 1441 1443 1503 1499 1503 1443 1502 1503 1500 1446 1447 1443 1446 1443 1445 1447 1499 1443 1443 1444 1445 1443 1441 1442 1447 1448 1449 1499 1447 1449 1495 1496 1497 1449 1481 1497 1449 1450 1451 1497 1499 1449 1500 1501 1502 1500 1503 1499 1499 1497 1498 1399 1395 1398 1401 1387 1399 539 538 540 538 537 536 540 538 534 536 535 534 536 534 538 534 533 541 563 562 564 532 560 558 565 564 1313 529 561 560 532 558 557 1311 562 1307 533 532 557 564 562 1311 558 560 559 522 520 524 520 522 521 524 520 518 522 524 523 528 527 526 532 531 530 529 560 530 1281 561 529 529 497 1281 561 1305 562 530 560 532 564 1311 1313 1379 1377 1378 574 1377 1379 1377 1375 1376 1375 1377 1313 1371 1375 1319 1313 1377 565 1385 1383 1384 576 1383 1385 1380 1381 1379 1371 1374 1375 1381 1383 1379 1371 1372 1374 1375 1313 1315 574 1379 1383 1319 1315 1317 1314 1315 1313 1315 1319 1375 1316 1317 1315 1319 1317 1318 1320 1321 1319 1321 1323 1337 1331 1335 1323 1323 1321 1322 1369 1319 1321 1371 1319 1369 1313 1311 1312 1337 1323 1335 1401 1385 1387 520 519 518 518 517 524 1287 1289 561 525 500 526 517 525 524 528 526 500 1305 1306 1307 1307 562 1305 1291 1305 1289 1291 1303 1305 1287 1288 1289 1289 1290 1291 561 1289 1305 1307 1310 1311 1281 1283 561 516 515 514 516 509 517 1287 561 1283 1283 1281 1282 514 512 516 512 514 513 1292 1293 1291 1286 1284 1285 1284 1286 1287 1287 1283 1284 525 517 509 1293 1295 1291 1310 1307 1309 1309 1307 1308 1324 1325 1327 1329 1331 1327 1326 1327 1325 1331 1323 1327 1329 1330 1331 1328 1329 1327 1335 1331 1334 1327 1323 1324 1303 1304 1305 1302 1303 1299 1298 1299 1295 1295 1299 1303 1295 1303 1291 1293 1294 1295 1302 1299 1300 1301 1302 1300 1295 1297 1298 1297 1295 1296 528 498 529 1332 1333 1331 1397 1395 1396 1398 1395 1397 1394 1395 1393 1391 1395 1387 1391 1387 1390 1392 1393 1395 1395 1399 1387 1452 1455 1451 1455 1453 1454 1455 1452 1453 1455 1456 1457 1463 1451 1455 1395 1391 1392 1388 1390 1387 1390 1388 1389 1381 1382 1383 1455 1458 1459 1458 1455 1457 1459 1460 1463 1463 1455 1459 1385 1386 1387 1461 1463 1460 1481 1449 1465 1449 1463 1465 1465 1463 1464 1481 1483 1497 1483 1481 1482 1465 1467 1481 1487 1483 1485 1483 1495 1497 1495 1483 1491 1493 1491 1492 1493 1494 1491 1491 1489 1490 1488 1489 1491 1487 1488 1491 1491 1483 1487 1491 1494 1495 1465 1466 1467 1467 1479 1481 1478 1479 1475 1467 1475 1479 1479 1480 1481 1483 1484 1485 1485 1486 1487 1471 1467 1468 1463 1461 1462 1449 1451 1463 1372 1373 1374 1367 1368 1369 1370 1371 1369 1364 1365 1363 1367 1365 1366 1363 1365 1367 1359 1367 1355 1367 1359 1363 1355 1367 1369 1355 1353 1354 1355 1369 1353 1337 1338 1339 1337 1339 1353 1333 1334 1331 1337 1335 1336 1353 1351 1352 1353 1339 1351 1339 1341 1343 1339 1347 1351 1343 1341 1342 1341 1339 1340 1347 1339 1343 1337 1353 1369 1369 1321 1337 1469 1470 1471 1469 1471 1468 1362 1360 1361 1360 1362 1359 1475 1476 1477 1475 1477 1478 1473 1474 1475 1475 1471 1473 1471 1472 1473 1471 1475 1467 1359 1356 1357 1359 1355 1356 1343 1344 1347 1349 1351 1347 1347 1344 1345 1362 1363 1359 1351 1349 1350 1357 1358 1359 1345 1346 1347 1349 1347 1348 540 534 541 673 672 674 672 670 674 676 675 674 674 670 676 677 676 669 731 730 732 678 680 679 677 685 678 678 682 680 678 684 682 682 684 683 680 682 681 677 661 685 678 685 684 730 729 728 728 727 726 726 732 728 728 732 730 686 685 660 725 732 726 740 739 738 740 734 741 734 740 736 736 740 738 738 737 736 744 743 742 744 742 746 745 744 746 748 746 742 746 748 747 749 742 741 749 741 733 742 749 748 733 741 734 749 725 724 725 749 733 749 724 750 733 732 725 752 751 750 722 752 750 17 754 753 752 722 753 722 750 724 736 735 734 756 755 754 688 687 686 660 688 686 691 690 692 692 1505 693 1441 690 689 696 695 694 697 696 698 698 694 700 700 694 693 694 698 696 690 1505 692 1511 701 693 1513 1511 1512 1511 1513 701 1507 1509 1511 1513 1527 1529 693 1507 1511 1513 1529 701 700 693 701 702 1529 1531 1531 1535 702 1535 1536 769 1531 1533 1535 769 771 705 1529 1530 1531 704 1535 769 693 1505 1507 689 688 658 698 700 699 714 713 712 715 714 716 710 714 712 714 710 716 723 722 724 52 720 718 718 720 719 717 52 718 722 721 753 1529 702 701 1535 704 702 702 704 703 769 705 704 710 717 716 717 710 709 710 712 711 708 62 709 706 793 708 707 706 708 53 717 709 706 705 777 721 720 50 721 17 753 1506 1507 1505 795 62 708 762 761 760 763 762 764 765 764 757 760 764 762 758 764 760 768 767 766 1 768 2 768 766 4 3 2 4 768 4 2 4 766 765 4 765 5 764 758 757 757 13 765 13 5 765 14 13 757 14 757 756 5 13 6 760 759 758 13 12 6 6 12 8 16 15 14 14 754 16 756 754 14 18 17 48 7 6 8 8 12 10 8 10 9 11 10 12 24 22 26 22 24 23 26 22 28 24 26 25 19 18 20 28 22 21 37 21 45 26 28 27 29 28 21 37 29 21 45 21 20 36 29 37 31 30 32 32 30 36 32 34 33 34 32 36 35 34 36 30 29 36 46 20 18 754 17 16 49 48 17 17 721 49 52 51 50 50 720 52 721 50 49 46 45 20 46 48 47 55 54 56 56 54 58 53 61 54 48 46 18 61 60 54 53 709 61 64 63 62 64 62 801 709 62 61 57 56 58 58 60 59 67 66 68 66 190 68 897 66 65 58 54 60 717 53 52 38 44 40 44 38 45 40 44 42 38 40 39 43 42 44 40 42 41 89 88 90 70 72 71 74 72 70 70 76 74 92 88 86 90 88 92 95 94 96 100 98 94 94 98 96 91 90 92 96 98 97 76 70 69 72 74 73 190 69 68 38 37 45 64 801 65 1511 1509 1510 1514 1515 1513 1527 1515 1523 1515 1527 1513 1531 1532 1533 1535 1533 1534 1529 1527 1528 771 769 770 1519 1515 1516 1523 1515 1519 1519 1517 1518 1523 1519 1521 1524 1527 1523 1520 1521 1519 1523 1521 1522 1525 1526 1524 1526 1527 1524 772 773 774 1519 1516 1517 771 774 775 771 772 774 781 782 780 780 782 783 775 776 777 777 705 775 777 779 793 778 779 777 779 780 783 791 779 783 784 785 783 777 793 706 786 783 785 783 786 787 791 787 789 787 791 783 788 789 787 791 789 790 791 792 793 795 796 799 794 795 793 795 708 793 791 793 779 62 795 799 705 771 775 816 817 818 816 818 819 819 820 821 819 821 822 816 819 815 813 814 815 811 813 815 819 811 815 819 823 811 822 823 819 825 823 824 829 827 828 831 829 830 831 832 833 831 833 834 827 829 831 825 826 827 839 825 827 831 839 827 835 839 831 834 835 831 837 835 836 811 823 825 806 803 805 798 799 797 799 800 801 805 803 804 803 806 807 808 809 807 797 799 796 825 841 809 825 839 841 840 841 839 837 838 839 812 813 811 857 809 841 811 825 809 841 842 843 843 845 846 843 855 841 843 844 845 809 859 807 811 809 810 837 839 835 847 843 846 799 801 62 74 76 75 69 77 76 77 181 78 865 867 65 803 801 802 78 180 80 865 65 801 81 80 178 82 81 113 79 78 80 84 83 82 801 803 865 857 858 859 859 803 807 855 856 857 857 841 855 859 860 861 863 864 865 863 865 803 861 862 863 145 113 81 863 859 861 65 867 871 859 863 803 809 857 859 867 865 866 94 101 100 92 86 85 93 92 85 100 99 98 109 102 101 93 85 109 93 109 101 103 102 104 104 106 105 106 104 102 106 102 108 85 84 110 94 93 101 109 108 102 110 109 85 112 111 110 110 82 112 84 82 110 118 120 119 115 114 116 121 120 122 144 114 113 108 107 106 82 113 112 86 88 87 851 852 855 855 843 851 850 851 849 855 852 854 847 849 851 849 847 848 854 852 853 867 868 869 870 871 867 870 867 869 65 873 889 876 877 878 876 878 879 882 880 881 874 875 873 879 882 883 882 879 880 879 883 875 879 875 876 875 883 887 871 872 873 116 141 117 889 891 65 891 895 65 887 888 889 141 125 117 889 873 875 887 889 875 65 895 897 122 124 123 122 120 124 120 118 124 124 118 117 117 125 124 887 883 885 887 885 886 892 893 894 130 128 126 69 181 77 116 114 144 126 128 127 894 895 891 125 132 126 891 892 894 896 897 895 891 889 890 884 885 883 65 871 873 851 843 847 1507 1508 1509 1281 1279 1280 1276 1278 1279 1275 1279 465 510 512 511 1274 1275 1273 516 510 509 516 512 510 1276 1279 1275 1276 1277 1278 1268 1269 1270 509 501 525 501 509 502 525 501 500 502 509 508 506 508 507 464 1255 1257 1275 465 1273 1271 1257 1259 1257 1271 1273 1267 1270 1271 1273 1271 1272 1257 1258 1259 1255 1256 1257 1257 1273 465 500 498 528 1267 1271 1259 1265 1266 1267 1259 1263 1267 1259 1260 1263 1264 1267 1263 1265 1267 1264 1270 1267 1268 1261 1263 1260 1261 1262 1263 1232 1233 1231 1235 1233 1234 1254 1255 1253 1252 1253 1251 1235 1237 1239 1251 1253 1255 1235 1236 1237 1233 1235 1231 1229 1227 1228 1231 1227 1229 1231 1229 1230 1239 1231 1235 1238 1239 1237 508 506 502 502 506 504 503 502 504 506 505 504 500 499 498 465 1279 1281 465 1281 497 1257 465 464 496 495 494 465 497 496 466 496 494 491 490 492 492 490 488 488 487 486 488 486 492 489 488 490 493 492 485 466 465 496 494 468 466 494 493 468 464 463 462 462 461 1249 464 462 1251 468 493 469 464 1251 1255 467 466 468 1251 462 1249 1245 1246 1247 1248 1249 1247 1247 1249 1185 1250 1251 1249 1244 1245 1243 1241 1227 1239 1227 1231 1239 1240 1241 1239 1227 1225 1226 1247 1243 1245 1193 1241 1243 1243 1247 1187 1191 1243 1187 1243 1241 1242 1185 1186 1187 1184 1185 1183 1247 1185 1187 1243 1191 1193 1193 1225 1241 1191 1187 1188 1188 1189 1191 1182 1183 1179 452 1179 1183 1180 1182 1179 1185 1249 461 1241 1225 1227 1185 452 1183 1179 450 1177 529 498 497 1220 1221 1219 1222 1219 1221 1225 1223 1224 1225 1209 1223 1219 1222 1223 1211 1223 1209 1215 1218 1219 1223 1215 1219 1223 1211 1215 1207 1208 1209 1211 1209 1210 1209 1195 1207 1192 1193 1191 1180 1181 1182 1190 1191 1189 1199 1195 1196 1194 1195 1193 1207 1195 1203 1197 1198 1199 1197 1199 1196 1199 1203 1195 1193 1195 1209 1225 1193 1209 1217 1215 1216 1215 1217 1218 1213 1215 1212 1203 1206 1207 1215 1211 1212 1204 1206 1203 1213 1214 1215 1201 1202 1203 1205 1206 1204 1203 1200 1201 1092 1095 1091 1083 1087 1091 1094 1092 1093 1090 1091 1089 1088 1089 1087 1084 1085 1086 1087 1083 1086 1083 1084 1086 1089 1091 1087 1095 1092 1094 1203 1199 1200 1172 1173 1174 1175 1176 1177 1172 1174 1171 1171 1174 1175 1167 1169 1170 1106 1104 1105 1104 1107 1103 1170 1171 1167 1175 1167 1171 1167 1168 1169 1175 1163 1167 1167 1165 1166 1164 1165 1167 1163 1177 1161 1107 1108 1110 1106 1107 1104 1110 1111 1107 1111 1113 1099 1110 1108 1109 1103 1107 1099 1163 1164 1167 1177 1163 1175 1178 1179 1177 1099 1107 1111 1099 1100 1101 1097 1083 1095 1099 1101 1102 1096 1097 1095 1082 1083 1081 1079 1077 1078 1077 1075 1076 1095 1083 1091 1081 1083 1097 1097 1099 1113 1065 1079 1081 1079 1080 1081 1075 1079 1071 1065 1067 1079 1071 1079 1067 1081 1097 1113 1075 1077 1079 1074 1072 1073 1072 1074 1071 1071 1069 1070 1068 1069 1071 1074 1075 1071 1068 1071 1067 1097 1098 1099 1102 1103 1099 492 486 485 493 485 477 493 477 469 478 485 484 482 484 483 485 478 477 470 469 476 461 453 1185 472 471 470 461 460 454 476 469 477 478 482 480 472 470 476 481 480 482 480 479 478 459 458 460 474 472 476 474 473 472 476 475 474 478 484 482 460 458 454 454 453 461 452 1185 453 456 454 458 456 455 454 458 457 456 451 450 452 449 1177 450 448 447 446 448 446 1153 449 448 1153 1177 449 1161 442 441 440 444 443 442 438 440 439 442 440 438 437 445 444 438 444 442 437 444 438 437 436 1127 436 434 1121 435 434 436 445 437 1147 446 445 1153 452 450 1179 422 424 423 425 424 426 419 418 420 421 420 413 427 426 428 426 424 428 428 421 429 421 428 422 405 429 421 424 422 428 420 418 414 416 415 414 414 413 420 417 416 418 414 418 416 406 412 408 410 412 411 408 412 410 413 412 405 409 408 410 408 407 406 406 405 412 405 421 413 430 429 405 430 405 404 432 431 430 402 404 403 430 404 432 433 432 402 402 432 404 433 402 401 401 400 370 400 398 370 399 398 400 337 433 401 394 393 392 396 395 394 390 392 391 394 392 390 389 397 396 390 396 394 389 396 390 389 388 382 388 386 382 387 386 388 397 389 373 398 397 373 434 433 1121 1163 1161 1162 1159 1160 1161 1157 1158 1156 449 1155 1159 1136 1137 1139 1138 1139 1137 1158 1159 1156 1155 1156 1159 1148 1150 1147 1150 1148 1149 1155 1153 1154 1142 1140 1141 1140 1142 1139 1135 1139 1131 1139 1135 1136 1143 1131 1139 1129 1131 1143 1143 1139 1142 1134 1135 1132 1161 449 1159 1132 1135 1131 1113 1114 1115 1113 1065 1081 1115 1116 1117 1063 1115 1119 1113 1115 1063 1067 1065 1066 1063 1064 1065 1062 1063 1059 1065 1113 1063 1113 1111 1112 1118 1119 1115 1125 1123 1124 1061 1062 1060 1063 1119 1059 1059 1060 1062 1057 1059 1119 1059 1057 1058 1120 1121 1119 1117 1118 1115 1133 1134 1132 1151 1147 1150 1151 1152 1153 1147 1151 445 1153 445 1151 1146 1147 1145 373 372 398 372 370 398 1129 1143 1145 1130 1131 1129 1145 1143 1144 370 372 371 437 1145 1147 1121 433 337 370 369 401 373 389 381 381 380 374 381 389 382 384 383 382 384 382 386 374 376 375 374 380 376 376 380 378 378 377 376 380 379 378 381 374 373 1155 449 1153 1127 1128 1129 436 1123 1127 1127 1129 437 436 1121 1123 1127 1123 1126 1145 437 1129 1057 1119 1121 1122 1123 1121 368 337 369 1057 1121 336 367 366 368 1055 1056 1057 337 401 369 368 366 340 1125 1126 1123 357 365 364 362 361 360 363 362 364 360 364 362 357 364 358 365 357 341 359 358 360 364 360 358 356 349 357 366 365 341 386 385 384 354 356 355 960 961 962 960 962 963 963 964 965 963 965 966 960 963 959 957 958 959 959 955 957 963 955 959 963 967 955 966 967 963 969 967 968 972 973 974 972 974 975 975 976 977 975 977 978 972 975 971 969 970 971 983 969 971 975 983 971 979 983 975 978 979 975 981 979 980 969 955 967 949 950 951 953 954 955 983 985 969 957 955 956 953 955 969 948 949 951 948 951 947 952 953 951 937 953 969 951 953 937 937 969 985 983 984 985 986 987 985 983 979 982 987 988 989 987 989 990 999 996 997 991 987 990 987 935 985 997 998 999 982 979 981 1043 1041 1042 1045 1046 1043 1039 1043 1047 1045 1043 1044 1041 1043 1039 1036 1037 1038 1039 1035 1038 1035 1036 1038 1040 1041 1039 1047 1043 1046 1049 1035 1047 1047 1035 1039 1034 1035 1033 1053 1055 1052 1049 1047 1048 1029 1030 1028 1030 1027 1028 1007 1008 1011 1007 1003 1005 1015 1003 1011 1010 1011 1008 1008 1009 1010 1007 1011 1003 999 1000 1001 1002 1003 1001 1017 1001 1003 1005 1003 1004 999 196 995 1011 1012 1013 1006 1007 1005 1014 1015 1011 1021 1022 1020 1020 1022 1019 1015 1016 1017 1015 1017 1003 320 1001 1017 1018 1019 1017 1019 1022 1023 1001 318 999 1019 1023 321 1014 1011 1013 1017 1019 321 1023 1024 1025 995 996 999 912 913 914 915 912 914 918 916 917 911 912 915 911 915 919 908 910 911 918 919 915 919 920 921 915 916 918 907 911 919 943 945 947 944 945 943 941 939 940 943 939 941 943 941 942 947 951 943 921 922 923 927 923 925 925 923 924 921 193 905 905 193 903 927 925 926 945 946 947 921 905 919 900 901 902 899 900 902 909 910 908 189 181 69 899 902 903 128 130 129 899 897 898 66 897 192 130 126 132 144 142 116 130 132 131 132 125 133 906 907 905 116 142 141 905 907 919 899 193 897 193 899 903 133 125 141 133 141 134 134 136 135 138 136 134 138 134 140 141 140 134 905 903 904 911 907 908 938 939 937 936 937 935 937 985 935 939 943 951 934 935 933 932 933 931 930 931 929 927 928 929 933 935 931 935 991 931 993 929 991 991 929 931 993 991 992 993 994 995 193 927 929 993 193 929 81 178 177 80 180 178 178 180 179 181 189 182 78 181 180 196 993 995 927 193 923 937 939 951 145 81 177 113 145 144 146 145 176 149 148 173 150 149 157 147 146 148 146 176 148 139 138 140 138 137 136 150 152 151 144 143 142 176 175 174 174 173 148 157 173 165 158 157 164 157 149 173 150 157 156 152 154 153 152 150 154 156 155 154 156 154 150 172 166 173 174 148 176 145 177 176 921 923 193 991 935 987 1049 1050 1051 333 1051 1055 325 1049 1051 1033 1035 1049 324 1031 1033 1049 325 1033 1055 1057 333 1027 1030 1031 334 333 1057 1031 1032 1033 1025 1027 322 324 1027 1031 1033 325 324 1023 1025 321 326 333 332 333 326 325 326 332 328 1051 333 325 1025 1026 1027 334 1057 336 338 337 368 340 339 338 341 340 366 338 368 340 330 328 332 332 331 330 328 330 329 334 336 335 337 336 1121 326 328 327 322 321 1025 320 1017 321 324 323 322 322 1027 324 319 318 320 196 999 318 310 317 316 314 316 315 317 310 309 205 317 309 317 196 318 314 310 316 310 314 312 313 312 314 312 311 310 307 306 308 308 306 208 304 303 302 304 302 274 305 304 274 308 205 309 320 318 1001 305 208 306 344 342 348 345 344 346 346 348 347 348 346 344 341 348 342 299 298 300 300 298 294 296 294 298 295 294 296 296 298 297 301 300 294 344 343 342 349 356 350 351 350 352 352 354 353 352 350 356 341 357 349 293 292 286 290 289 288 291 290 292 292 290 286 341 349 348 301 294 293 276 274 302 302 277 276 274 276 275 274 273 305 285 278 277 277 301 285 272 271 270 244 272 270 241 305 273 269 268 262 273 272 241 301 277 302 285 301 293 282 278 284 287 286 288 293 286 285 284 283 282 279 278 280 281 280 282 278 282 280 267 266 268 285 284 278 290 288 286 268 266 262 356 354 352 244 270 269 66 192 190 993 194 193 196 195 194 196 317 197 196 194 993 69 190 189 190 192 191 199 198 200 202 200 198 198 197 204 897 193 192 204 202 198 205 308 206 208 207 206 208 305 209 308 208 206 202 201 200 202 204 203 211 210 212 238 212 210 210 209 241 204 197 205 317 205 197 182 188 184 182 184 183 186 184 188 168 170 169 188 187 186 170 166 172 164 160 158 165 173 166 164 157 165 160 164 162 168 167 166 160 159 158 166 170 168 185 184 186 172 171 170 216 215 214 216 214 218 217 216 218 164 163 162 162 161 160 218 214 220 182 189 188 240 238 210 241 272 242 243 242 244 244 269 245 245 269 253 272 244 242 246 245 253 240 239 238 248 247 246 252 246 253 252 250 246 212 238 213 253 269 261 261 260 254 262 261 269 264 263 262 264 262 266 254 256 255 254 260 256 256 260 258 258 257 256 260 259 258 261 254 253 210 241 240 220 219 218 220 213 221 220 214 213 222 221 228 237 229 221 228 221 229 221 213 237 223 222 224 225 224 226 226 228 227 228 226 224 222 228 224 237 213 238 236 230 229 250 249 248 251 250 252 248 246 250 230 232 231 230 236 232 232 236 234 234 233 232 236 235 234 236 229 237 209 305 241 266 265 264 1051 1052 1055 1054 1055 1053
-769 768 1 0.1
-0 0 0 1.23456790123457 0 0 1.85185185185185 -1.06916716516597 0 2.46913580246914 0 0 3.7037037037037 0 0 4.32098765432099 -1.06916716516597 0 3.7037037037037 -2.13833433033195 0 4.93827160493827 -2.13833433033195 0 5.55555555555556 -3.20750149549792 0 6.17283950617284 -2.13833433033195 0 7.40740740740741 -2.13833433033195 0 6.79012345679012 -1.06916716516597 0 7.40740740740741 0 0 8.64197530864198 0 0 9.25925925925926 -1.06916716516597 0 9.87654320987654 0 0 11.1111111111111 0 0 11.7283950617284 -1.06916716516597 0 11.1111111111111 -2.13833433033195 0 12.3456790123457 -2.13833433033195 0 12.962962962963 -3.20750149549792 0 12.3456790123457 -4.2766686606639 0 11.1111111111111 -4.27666866066389 0 11.7283950617284 -5.34583582582987 0 11.1111111111111 -6.41500299099584 0 12.3456790123457 -6.41500299099584 0 12.962962962963 -7.48417015616182 0 13.5802469135802 -6.41500299099584 0 14.8148148148148 -6.41500299099584 0 15.4320987654321 -7.48417015616182 0 14.8148148148148 -8.55333732132779 0 16.0493827160494 -8.55333732132779 0 16.6666666666667 -9.62250448649376 0 17.283950617284 -8.55333732132779 0 18.5185185185185 -8.55333732132779 0 17.9012345679012 -7.48417015616182 0 18.5185185185185 -6.41500299099584 0 19.7530864197531 -6.41500299099584 0 20.3703703703704 -7.48417015616182 0 20.9876543209877 -6.41500299099584 0 22.2222222222222 -6.41500299099584 0 21.6049382716049 -5.34583582582987 0 22.2222222222222 -4.2766686606639 0 20.9876543209877 -4.2766686606639 0 20.3703703703704 -3.20750149549792 0 20.9876543209877 -2.13833433033195 0 22.2222222222222 -2.13833433033195 0 21.6049382716049 -1.06916716516597 0 22.2222222222222 0 0 23.4567901234568 0 0 24.0740740740741 -1.06916716516597 0 24.6913580246914 0 0 25.9259259259259 0 0 26.5432098765432 -1.06916716516597 0 25.9259259259259 -2.13833433033195 0 27.1604938271605 -2.13833433033195 0 27.7777777777778 -3.20750149549792 0 28.3950617283951 -2.13833433033195 0 29.6296296296296 -2.13833433033195 0 29.0123456790123 -1.06916716516597 0 29.6296296296296 0 0 30.8641975308642 0 0 31.4814814814815 -1.06916716516597 0 32.0987654320988 0 0 33.3333333333333 0 0 33.9506172839506 -1.06916716516597 0 33.3333333333333 -2.13833433033195 0 34.5679012345679 -2.13833433033195 0 35.1851851851852 -3.20750149549792 0 34.5679012345679 -4.2766686606639 0 33.3333333333333 -4.27666866066389 0 33.9506172839506 -5.34583582582987 0 33.3333333333333 -6.41500299099584 0 34.5679012345679 -6.41500299099584 0 35.1851851851852 -7.48417015616182 0 35.8024691358025 -6.41500299099584 0 37.037037037037 -6.41500299099584 0 37.6543209876543 -7.48417015616182 0 37.037037037037 -8.55333732132779 0 38.2716049382716 -8.55333732132779 0 38.8888888888889 -9.62250448649376 0 38.2716049382716 -10.6916716516597 0 37.037037037037 -10.6916716516597 0 37.6543209876543 -11.7608388168257 0 37.037037037037 -12.8300059819917 0 35.8024691358025 -12.8300059819917 0 35.1851851851852 -11.7608388168257 0 34.5679012345679 -12.8300059819917 0 33.3333333333333 -12.8300059819917 0 33.9506172839506 -13.8991731471577 0 33.3333333333333 -14.9683403123236 0 34.5679012345679 -14.9683403123236 0 35.1851851851852 -16.0375074774896 0 34.5679012345679 -17.1066746426556 0 33.3333333333333 -17.1066746426556 0 33.9506172839506 -18.1758418078216 0 33.3333333333333 -19.2450089729875 0 34.5679012345679 -19.2450089729875 0 35.1851851851852 -20.3141761381535 0 35.8024691358025 -19.2450089729875 0 37.037037037037 -19.2450089729875 0 37.6543209876543 -20.3141761381535 0 37.037037037037 -21.3833433033195 0 38.2716049382716 -21.3833433033195 0 38.8888888888889 -22.4525104684854 0 39.5061728395062 -21.3833433033195 0 40.7407407407407 -21.3833433033195 0 40.1234567901235 -20.3141761381535 0 40.7407407407407 -19.2450089729875 0 41.9753086419753 -19.2450089729875 0 42.5925925925926 -20.3141761381535 0 43.2098765432099 -19.2450089729875 0 44.4444444444444 -19.2450089729875 0 45.0617283950617 -20.3141761381535 0 44.4444444444444 -21.3833433033195 0 45.679012345679 -21.3833433033195 0 46.2962962962963 -22.4525104684854 0 45.679012345679 -23.5216776336514 0 44.4444444444444 -23.5216776336514 0 45.0617283950617 -24.5908447988174 0 44.4444444444444 -25.6600119639834 0 45.679012345679 -25.6600119639834 0 46.2962962962963 -26.7291791291493 0 46.9135802469136 -25.6600119639834 0 48.1481481481481 -25.6600119639834 0 48.7654320987654 -26.7291791291493 0 48.1481481481482 -27.7983462943153 0 49.3827160493827 -27.7983462943153 0 50 -28.8675134594813 0 50.6172839506173 -27.7983462943153 0 51.8518518518518 -27.7983462943153 0 51.2345679012346 -26.7291791291493 0 51.8518518518519 -25.6600119639834 0 53.0864197530864 -25.6600119639834 0 53.7037037037037 -26.7291791291493 0 54.320987654321 -25.6600119639834 0 55.5555555555556 -25.6600119639834 0 54.9382716049383 -24.5908447988174 0 55.5555555555556 -23.5216776336514 0 54.320987654321 -23.5216776336514 0 53.7037037037037 -22.4525104684854 0 54.320987654321 -21.3833433033195 0 55.5555555555556 -21.3833433033195 0 54.9382716049383 -20.3141761381535 0 55.5555555555556 -19.2450089729875 0 56.7901234567901 -19.2450089729875 0 57.4074074074074 -20.3141761381535 0 58.0246913580247 -19.2450089729875 0 59.2592592592593 -19.2450089729875 0 59.8765432098765 -20.3141761381535 0 59.2592592592593 -21.3833433033195 0 60.4938271604938 -21.3833433033195 0 61.1111111111111 -22.4525104684854 0 61.7283950617284 -21.3833433033195 0 62.962962962963 -21.3833433033195 0 62.3456790123457 -20.3141761381535 0 62.962962962963 -19.2450089729875 0 64.1975308641975 -19.2450089729875 0 64.8148148148148 -20.3141761381535 0 65.4320987654321 -19.2450089729875 0 66.6666666666667 -19.2450089729875 0 66.0493827160494 -18.1758418078216 0 66.6666666666667 -17.1066746426556 0 65.4320987654321 -17.1066746426556 0 64.8148148148148 -16.0375074774896 0 65.4320987654321 -14.9683403123236 0 66.6666666666667 -14.9683403123236 0 66.0493827160494 -13.8991731471577 0 66.6666666666667 -12.8300059819917 0 65.4320987654321 -12.8300059819917 0 64.8148148148148 -11.7608388168257 0 64.1975308641975 -12.8300059819917 0 62.962962962963 -12.8300059819917 0 62.3456790123457 -11.7608388168257 0 62.962962962963 -10.6916716516597 0 61.7283950617284 -10.6916716516597 0 61.1111111111111 -9.62250448649376 0 61.7283950617284 -8.55333732132779 0 62.962962962963 -8.55333732132779 0 62.3456790123457 -7.48417015616182 0 62.962962962963 -6.41500299099584 0 64.1975308641975 -6.41500299099584 0 64.8148148148148 -7.48417015616181 0 65.4320987654321 -6.41500299099584 0 66.6666666666667 -6.41500299099584 0 66.0493827160494 -5.34583582582987 0 66.6666666666667 -4.2766686606639 0 65.4320987654321 -4.2766686606639 0 64.8148148148148 -3.20750149549792 0 65.4320987654321 -2.13833433033195 0 66.6666666666667 -2.13833433033194 0 66.0493827160494 -1.06916716516597 0 66.6666666666667 0 0 67.9012345679012 0 0 68.5185185185185 -1.06916716516598 0 69.1358024691358 0 0 70.3703703703704 0 0 70.9876543209877 -1.06916716516598 0 70.3703703703704 -2.13833433033195 0 71.604938271605 -2.13833433033195 0 72.2222222222222 -3.20750149549793 0 72.8395061728395 -2.13833433033195 0 74.0740740740741 -2.13833433033195 0 73.4567901234568 -1.06916716516598 0 74.0740740740741 0 0 75.3086419753086 0 0 75.9259259259259 -1.06916716516598 0 76.5432098765432 0 0 77.7777777777778 0 0 78.3950617283951 -1.06916716516597 0 77.7777777777778 -2.13833433033195 0 79.0123456790124 -2.13833433033195 0 79.6296296296296 -3.20750149549792 0 79.0123456790124 -4.2766686606639 0 77.7777777777778 -4.2766686606639 0 78.3950617283951 -5.34583582582987 0 77.7777777777778 -6.41500299099584 0 79.0123456790124 -6.41500299099584 0 79.6296296296296 -7.48417015616182 0 80.2469135802469 -6.41500299099584 0 81.4814814814815 -6.41500299099584 0 82.0987654320988 -7.48417015616182 0 81.4814814814815 -8.55333732132779 0 82.7160493827161 -8.55333732132779 0 83.3333333333333 -9.62250448649377 0 83.9506172839506 -8.55333732132779 0 85.1851851851852 -8.55333732132779 0 84.5679012345679 -7.48417015616182 0 85.1851851851852 -6.41500299099584 0 86.4197530864198 -6.41500299099584 0 87.037037037037 -7.48417015616182 0 87.6543209876543 -6.41500299099584 0 88.8888888888889 -6.41500299099584 0 88.2716049382716 -5.34583582582987 0 88.8888888888889 -4.2766686606639 0 87.6543209876543 -4.27666866066389 0 87.037037037037 -3.20750149549792 0 87.6543209876543 -2.13833433033195 0 88.8888888888889 -2.13833433033195 0 88.2716049382716 -1.06916716516597 0 88.8888888888889 0 0 90.1234567901235 0 0 90.7407407407407 -1.06916716516598 0 91.358024691358 0 0 92.5925925925926 0 0 93.2098765432099 -1.06916716516598 0 92.5925925925926 -2.13833433033195 0 93.8271604938272 -2.13833433033195 0 94.4444444444444 -3.20750149549793 0 95.0617283950617 -2.13833433033195 0 96.2962962962963 -2.13833433033195 0 95.679012345679 -1.06916716516598 0 96.2962962962963 0 0 97.5308641975309 0 0 98.1481481481482 -1.06916716516598 0 98.7654320987654 0 0 100 0 0 99.3827160493827 1.06916716516597 0 100 2.13833433033194 0 98.7654320987654 2.13833433033195 0 98.1481481481482 3.20750149549792 0 98.7654320987654 4.27666866066389 0 100 4.2766686606639 0 99.3827160493827 5.34583582582987 0 100 6.41500299099584 0 98.7654320987654 6.41500299099584 0 98.1481481481482 7.48417015616182 0 97.5308641975309 6.41500299099584 0 96.2962962962963 6.41500299099584 0 95.679012345679 7.48417015616181 0 96.2962962962963 8.55333732132779 0 95.0617283950617 8.55333732132779 0 94.4444444444444 9.62250448649376 0 95.0617283950617 10.6916716516597 0 96.2962962962963 10.6916716516597 0 95.679012345679 11.7608388168257 0 96.2962962962963 12.8300059819917 0 97.5308641975309 12.8300059819917 0 98.1481481481482 11.7608388168257 0 98.7654320987654 12.8300059819917 0 100 12.8300059819917 0 99.3827160493827 13.8991731471577 0 100 14.9683403123236 0 98.7654320987654 14.9683403123236 0 98.1481481481481 16.0375074774896 0 98.7654320987654 17.1066746426556 0 100 17.1066746426556 0 99.3827160493827 18.1758418078216 0 100 19.2450089729875 0 98.7654320987654 19.2450089729875 0 98.1481481481481 20.3141761381535 0 97.5308641975309 19.2450089729875 0 96.2962962962963 19.2450089729875 0 95.679012345679 20.3141761381535 0 96.2962962962963 21.3833433033195 0 95.0617283950617 21.3833433033195 0 94.4444444444444 22.4525104684854 0 93.8271604938272 21.3833433033195 0 92.5925925925926 21.3833433033195 0 93.2098765432099 20.3141761381535 0 92.5925925925926 19.2450089729875 0 91.358024691358 19.2450089729875 0 90.7407407407407 20.3141761381535 0 90.1234567901235 19.2450089729875 0 88.8888888888889 19.2450089729875 0 88.2716049382716 20.3141761381535 0 88.8888888888889 21.3833433033195 0 87.6543209876543 21.3833433033195 0 87.037037037037 22.4525104684854 0 87.6543209876543 23.5216776336514 0 88.8888888888889 23.5216776336514 0 88.2716049382716 24.5908447988174 0 88.8888888888889 25.6600119639834 0 87.6543209876543 25.6600119639834 0 87.037037037037 26.7291791291493 0 86.4197530864197 25.6600119639834 0 85.1851851851852 25.6600119639834 0 84.5679012345679 26.7291791291493 0 85.1851851851852 27.7983462943153 0 83.9506172839506 27.7983462943153 0 83.3333333333333 28.8675134594813 0 83.9506172839506 29.9366806246473 0 85.1851851851852 29.9366806246473 0 84.5679012345679 31.0058477898132 0 85.1851851851852 32.0750149549792 0 86.4197530864197 32.0750149549792 0 87.037037037037 31.0058477898132 0 87.6543209876543 32.0750149549792 0 88.8888888888889 32.0750149549792 0 88.2716049382716 33.1441821201452 0 88.8888888888889 34.2133492853112 0 87.6543209876543 34.2133492853112 0 87.037037037037 35.2825164504771 0 87.6543209876543 36.3516836156431 0 88.8888888888889 36.3516836156431 0 88.2716049382716 37.4208507808091 0 88.8888888888889 38.490017945975 0 90.1234567901235 38.490017945975 0 90.7407407407407 37.4208507808091 0 91.358024691358 38.490017945975 0 92.5925925925926 38.490017945975 0 93.2098765432099 37.4208507808091 0 92.5925925925926 36.3516836156431 0 93.8271604938272 36.3516836156431 0 94.4444444444444 35.2825164504771 0 95.0617283950617 36.3516836156431 0 96.2962962962963 36.3516836156431 0 95.679012345679 37.4208507808091 0 96.2962962962963 38.490017945975 0 97.5308641975309 38.490017945975 0 98.1481481481481 37.4208507808091 0 98.7654320987654 38.490017945975 0 100 38.490017945975 0 99.3827160493827 39.559185111141 0 100 40.628352276307 0 98.7654320987654 40.628352276307 0 98.1481481481481 41.697519441473 0 98.7654320987654 42.7666866066389 0 100 42.7666866066389 0 99.3827160493827 43.8358537718049 0 100 44.9050209369709 0 98.7654320987654 44.9050209369709 0 98.1481481481482 45.9741881021369 0 97.5308641975309 44.9050209369709 0 96.2962962962963 44.9050209369709 0 95.679012345679 45.9741881021369 0 96.2962962962963 47.0433552673028 0 95.0617283950617 47.0433552673028 0 94.4444444444444 48.1125224324688 0 95.0617283950617 49.1816895976348 0 96.2962962962963 49.1816895976348 0 95.679012345679 50.2508567628008 0 96.2962962962963 51.3200239279667 0 97.5308641975309 51.3200239279667 0 98.1481481481482 50.2508567628008 0 98.7654320987654 51.3200239279667 0 100 51.3200239279667 0 99.3827160493827 52.3891910931327 0 100 53.4583582582987 0 98.7654320987654 53.4583582582987 0 98.1481481481482 54.5275254234647 0 98.7654320987654 55.5966925886306 0 100 55.5966925886306 0 99.3827160493827 56.6658597537966 0 100 57.7350269189626 0 98.7654320987654 57.7350269189626 0 98.1481481481482 58.8041940841286 0 97.5308641975309 57.7350269189626 0 96.2962962962963 57.7350269189626 0 95.679012345679 58.8041940841285 0 96.2962962962963 59.8733612492945 0 95.0617283950617 59.8733612492945 0 94.4444444444444 60.9425284144605 0 93.8271604938272 59.8733612492945 0 92.5925925925926 59.8733612492945 0 93.2098765432099 58.8041940841285 0 92.5925925925926 57.7350269189626 0 91.358024691358 57.7350269189626 0 90.7407407407407 58.8041940841286 0 90.1234567901235 57.7350269189626 0 88.8888888888889 57.7350269189626 0 88.2716049382716 58.8041940841285 0 88.8888888888889 59.8733612492945 0 87.6543209876543 59.8733612492945 0 87.037037037037 60.9425284144605 0 87.6543209876543 62.0116955796265 0 88.8888888888889 62.0116955796265 0 88.2716049382716 63.0808627447924 0 88.8888888888889 64.1500299099584 0 87.6543209876543 64.1500299099584 0 87.037037037037 65.2191970751244 0 86.4197530864198 64.1500299099584 0 85.1851851851852 64.1500299099584 0 84.5679012345679 65.2191970751244 0 85.1851851851852 66.2883642402904 0 83.9506172839506 66.2883642402904 0 83.3333333333333 67.3575314054563 0 82.7160493827161 66.2883642402904 0 81.4814814814815 66.2883642402904 0 82.0987654320988 65.2191970751244 0 81.4814814814815 64.1500299099584 0 80.2469135802469 64.1500299099584 0 79.6296296296296 65.2191970751244 0 79.0123456790124 64.1500299099584 0 77.7777777777778 64.1500299099584 0 78.3950617283951 63.0808627447924 0 77.7777777777778 62.0116955796265 0 79.0123456790124 62.0116955796265 0 79.6296296296296 60.9425284144605 0 79.0123456790124 59.8733612492945 0 77.7777777777778 59.8733612492945 0 78.3950617283951 58.8041940841285 0 77.7777777777778 57.7350269189626 0 76.5432098765432 57.7350269189626 0 75.9259259259259 58.8041940841286 0 75.3086419753086 57.7350269189626 0 74.0740740740741 57.7350269189626 0 73.4567901234568 58.8041940841285 0 74.0740740740741 59.8733612492945 0 72.8395061728395 59.8733612492945 0 72.2222222222222 60.9425284144605 0 71.604938271605 59.8733612492945 0 70.3703703703704 59.8733612492945 0 70.9876543209877 58.8041940841285 0 70.3703703703704 57.7350269189626 0 69.1358024691358 57.7350269189626 0 68.5185185185185 58.8041940841286 0 67.9012345679012 57.7350269189626 0 66.6666666666667 57.7350269189626 0 66.0493827160494 58.8041940841285 0 66.6666666666667 59.8733612492945 0 65.4320987654321 59.8733612492945 0 64.8148148148148 60.9425284144605 0 65.4320987654321 62.0116955796265 0 66.6666666666667 62.0116955796265 0 66.0493827160494 63.0808627447924 0 66.6666666666667 64.1500299099584 0 65.4320987654321 64.1500299099584 0 64.8148148148148 65.2191970751244 0 64.1975308641975 64.1500299099584 0 62.962962962963 64.1500299099584 0 62.3456790123457 65.2191970751244 0 62.962962962963 66.2883642402904 0 61.7283950617284 66.2883642402904 0 61.1111111111111 67.3575314054563 0 61.7283950617284 68.4266985706223 0 62.962962962963 68.4266985706223 0 62.3456790123457 69.4958657357883 0 62.962962962963 70.5650329009543 0 64.1975308641975 70.5650329009543 0 64.8148148148148 69.4958657357883 0 65.4320987654321 70.5650329009543 0 66.6666666666667 70.5650329009543 0 66.0493827160494 71.6342000661202 0 66.6666666666667 72.7033672312862 0 65.4320987654321 72.7033672312862 0 64.8148148148148 73.7725343964522 0 65.4320987654321 74.8417015616182 0 66.6666666666667 74.8417015616182 0 66.0493827160494 75.9108687267841 0 66.6666666666667 76.9800358919501 0 65.4320987654321 76.9800358919501 0 64.8148148148148 78.0492030571161 0 64.1975308641975 76.9800358919501 0 62.962962962963 76.9800358919501 0 62.3456790123457 78.0492030571161 0 62.962962962963 79.1183702222821 0 61.7283950617284 79.1183702222821 0 61.1111111111111 80.187537387448 0 60.4938271604938 79.1183702222821 0 59.2592592592593 79.1183702222821 0 59.8765432098765 78.0492030571161 0 59.2592592592593 76.9800358919501 0 58.0246913580247 76.9800358919501 0 57.4074074074074 78.0492030571161 0 56.7901234567901 76.9800358919501 0 55.5555555555556 76.9800358919501 0 54.9382716049383 78.0492030571161 0 55.5555555555556 79.118370222282 0 54.320987654321 79.118370222282 0 53.7037037037037 80.187537387448 0 54.320987654321 81.256704552614 0 55.5555555555556 81.256704552614 0 54.9382716049383 82.32587171778 0 55.5555555555556 83.3950388829459 0 54.320987654321 83.3950388829459 0 53.7037037037037 84.4642060481119 0 53.0864197530864 83.3950388829459 0 51.8518518518519 83.3950388829459 0 51.2345679012346 84.4642060481119 0 51.8518518518519 85.5333732132779 0 50.6172839506173 85.5333732132779 0 50 86.6025403784439 0 49.3827160493827 85.5333732132779 0 48.1481481481481 85.5333732132779 0 48.7654320987654 84.4642060481119 0 48.1481481481481 83.3950388829459 0 46.9135802469136 83.3950388829459 0 46.2962962962963 84.4642060481119 0 45.679012345679 83.3950388829459 0 44.4444444444444 83.3950388829459 0 45.0617283950617 82.32587171778 0 44.4444444444444 81.256704552614 0 45.679012345679 81.256704552614 0 46.2962962962963 80.187537387448 0 45.679012345679 79.118370222282 0 44.4444444444444 79.118370222282 0 45.0617283950617 78.0492030571161 0 44.4444444444444 76.9800358919501 0 43.2098765432099 76.9800358919501 0 42.5925925925926 78.0492030571161 0 41.9753086419753 76.9800358919501 0 40.7407407407407 76.9800358919501 0 40.1234567901235 78.0492030571161 0 40.7407407407407 79.1183702222821 0 39.5061728395062 79.1183702222821 0 38.8888888888889 80.187537387448 0 38.2716049382716 79.1183702222821 0 37.037037037037 79.1183702222821 0 37.6543209876543 78.0492030571161 0 37.037037037037 76.9800358919501 0 35.8024691358025 76.9800358919501 0 35.1851851851852 78.0492030571161 0 34.5679012345679 76.9800358919501 0 33.3333333333333 76.9800358919501 0 33.9506172839506 75.9108687267841 0 33.3333333333333 74.8417015616182 0 34.5679012345679 74.8417015616182 0 35.1851851851852 73.7725343964522 0 34.5679012345679 72.7033672312862 0 33.3333333333333 72.7033672312862 0 33.9506172839506 71.6342000661202 0 33.3333333333333 70.5650329009543 0 34.5679012345679 70.5650329009543 0 35.1851851851852 69.4958657357883 0 35.8024691358025 70.5650329009543 0 37.037037037037 70.5650329009543 0 37.6543209876543 69.4958657357883 0 37.037037037037 68.4266985706223 0 38.2716049382716 68.4266985706223 0 38.8888888888889 67.3575314054563 0 38.2716049382716 66.2883642402904 0 37.037037037037 66.2883642402904 0 37.6543209876543 65.2191970751244 0 37.037037037037 64.1500299099584 0 35.8024691358025 64.1500299099584 0 35.1851851851852 65.2191970751244 0 34.5679012345679 64.1500299099584 0 33.3333333333333 64.1500299099584 0 33.9506172839506 63.0808627447924 0 33.3333333333333 62.0116955796265 0 34.5679012345679 62.0116955796265 0 35.1851851851852 60.9425284144605 0 34.5679012345679 59.8733612492945 0 33.3333333333333 59.8733612492945 0 33.9506172839506 58.8041940841285 0 33.3333333333333 57.7350269189626 0 32.0987654320988 57.7350269189626 0 31.4814814814815 58.8041940841286 0 30.8641975308642 57.7350269189626 0 29.6296296296296 57.7350269189626 0 29.0123456790123 58.8041940841285 0 29.6296296296296 59.8733612492945 0 28.3950617283951 59.8733612492945 0 27.7777777777778 60.9425284144605 0 27.1604938271605 59.8733612492945 0 25.9259259259259 59.8733612492945 0 26.5432098765432 58.8041940841285 0 25.9259259259259 57.7350269189626 0 24.6913580246914 57.7350269189626 0 24.0740740740741 58.8041940841285 0 23.4567901234568 57.7350269189626 0 22.2222222222222 57.7350269189626 0 21.6049382716049 58.8041940841285 0 22.2222222222222 59.8733612492945 0 20.9876543209877 59.8733612492945 0 20.3703703703704 60.9425284144605 0 20.9876543209877 62.0116955796265 0 22.2222222222222 62.0116955796265 0 21.6049382716049 63.0808627447924 0 22.2222222222222 64.1500299099584 0 20.9876543209877 64.1500299099584 0 20.3703703703704 65.2191970751244 0 19.7530864197531 64.1500299099584 0 18.5185185185185 64.1500299099584 0 17.9012345679012 65.2191970751244 0 18.5185185185185 66.2883642402904 0 17.283950617284 66.2883642402904 0 16.6666666666667 67.3575314054563 0 16.0493827160494 66.2883642402904 0 14.8148148148148 66.2883642402904 0 15.4320987654321 65.2191970751244 0 14.8148148148148 64.1500299099584 0 13.5802469135803 64.1500299099584 0 12.962962962963 65.2191970751244 0 12.3456790123457 64.1500299099584 0 11.1111111111111 64.1500299099584 0 11.7283950617284 63.0808627447924 0 11.1111111111111 62.0116955796265 0 12.3456790123457 62.0116955796265 0 12.962962962963 60.9425284144605 0 12.3456790123457 59.8733612492945 0 11.1111111111111 59.8733612492945 0 11.7283950617284 58.8041940841285 0 11.1111111111111 57.7350269189626 0 9.87654320987655 57.7350269189626 0 9.25925925925926 58.8041940841285 0 8.64197530864198 57.7350269189626 0 7.40740740740741 57.7350269189626 0 6.79012345679013 58.8041940841285 0 7.40740740740741 59.8733612492945 0 6.17283950617284 59.8733612492945 0 5.55555555555556 60.9425284144605 0 4.93827160493827 59.8733612492945 0 3.70370370370371 59.8733612492945 0 4.32098765432099 58.8041940841285 0 3.70370370370371 57.7350269189626 0 2.46913580246914 57.7350269189626 0 1.85185185185186 58.8041940841285 0 1.23456790123457 57.7350269189626 0 3.5527136788005e-15 57.7350269189626 0 0.617283950617287 56.6658597537966 0 4.44089209850063e-15 55.5966925886306 0 1.23456790123457 55.5966925886306 0 1.85185185185185 54.5275254234647 0 1.23456790123457 53.4583582582987 0 3.88578058618805e-15 53.4583582582987 0 0.617283950617286 52.3891910931327 0 2.22044604925031e-15 51.3200239279667 0 1.23456790123457 51.3200239279667 0 1.85185185185186 50.2508567628008 0 2.46913580246914 51.3200239279667 0 3.70370370370371 51.3200239279667 0 4.32098765432099 50.2508567628008 0 3.70370370370371 49.1816895976348 0 4.93827160493827 49.1816895976348 0 5.55555555555556 48.1125224324688 0 4.93827160493827 47.0433552673028 0 3.70370370370371 47.0433552673028 0 4.32098765432099 45.9741881021369 0 3.70370370370371 44.9050209369709 0 2.46913580246914 44.9050209369709 0 1.85185185185186 45.9741881021369 0 1.23456790123457 44.9050209369709 0 2.22044604925031e-15 44.9050209369709 0 0.617283950617286 43.8358537718049 0 3.88578058618805e-15 42.7666866066389 0 1.23456790123457 42.7666866066389 0 1.85185185185185 41.697519441473 0 1.23456790123457 40.628352276307 0 4.44089209850063e-15 40.628352276307 0 0.617283950617287 39.559185111141 0 3.5527136788005e-15 38.4900179459751 0 1.23456790123457 38.4900179459751 0 1.85185185185185 37.4208507808091 0 2.46913580246914 38.4900179459751 0 3.70370370370371 38.4900179459751 0 4.32098765432099 37.4208507808091 0 3.70370370370371 36.3516836156431 0 4.93827160493827 36.3516836156431 0 5.55555555555556 35.2825164504771 0 6.17283950617284 36.3516836156431 0 7.40740740740741 36.3516836156431 0 6.79012345679013 37.4208507808091 0 7.40740740740741 38.490017945975 0 8.64197530864198 38.490017945975 0 9.25925925925926 37.4208507808091 0 9.87654320987654 38.490017945975 0 11.1111111111111 38.490017945975 0 11.7283950617284 37.4208507808091 0 11.1111111111111 36.3516836156431 0 12.3456790123457 36.3516836156431 0 12.962962962963 35.2825164504771 0 12.3456790123457 34.2133492853112 0 11.1111111111111 34.2133492853112 0 11.7283950617284 33.1441821201452 0 11.1111111111111 32.0750149549792 0 12.3456790123457 32.0750149549792 0 12.962962962963 31.0058477898132 0 13.5802469135802 32.0750149549792 0 14.8148148148148 32.0750149549792 0 15.4320987654321 31.0058477898132 0 14.8148148148148 29.9366806246473 0 16.0493827160494 29.9366806246473 0 16.6666666666667 28.8675134594813 0 16.0493827160494 27.7983462943153 0 14.8148148148148 27.7983462943153 0 15.4320987654321 26.7291791291493 0 14.8148148148148 25.6600119639834 0 13.5802469135802 25.6600119639834 0 12.962962962963 26.7291791291493 0 12.3456790123457 25.6600119639834 0 11.1111111111111 25.6600119639834 0 11.7283950617284 24.5908447988174 0 11.1111111111111 23.5216776336514 0 12.3456790123457 23.5216776336514 0 12.962962962963 22.4525104684854 0 12.3456790123457 21.3833433033195 0 11.1111111111111 21.3833433033195 0 11.7283950617284 20.3141761381535 0 11.1111111111111 19.2450089729875 0 9.87654320987654 19.2450089729875 0 9.25925925925926 20.3141761381535 0 8.64197530864198 19.2450089729875 0 7.40740740740741 19.2450089729875 0 6.79012345679012 20.3141761381535 0 7.40740740740741 21.3833433033195 0 6.17283950617284 21.3833433033195 0 5.55555555555556 22.4525104684854 0 4.93827160493827 21.3833433033195 0 3.7037037037037 21.3833433033195 0 4.32098765432099 20.3141761381535 0 3.7037037037037 19.2450089729875 0 2.46913580246914 19.2450089729875 0 1.85185185185185 20.3141761381535 0 1.23456790123457 19.2450089729875 0 0 19.2450089729875 0 0.617283950617284 18.1758418078216 0 1.4432899320127e-15 17.1066746426556 0 1.23456790123457 17.1066746426556 0 1.85185185185185 16.0375074774896 0 1.23456790123457 14.9683403123236 0 1.11022302462516e-15 14.9683403123236 0 0.617283950617285 13.8991731471577 0 1.77635683940025e-15 12.8300059819917 0 1.23456790123457 12.8300059819917 0 1.85185185185185 11.7608388168257 0 2.46913580246914 12.8300059819917 0 3.7037037037037 12.8300059819917 0 4.32098765432099 11.7608388168257 0 3.7037037037037 10.6916716516597 0 4.93827160493827 10.6916716516597 0 5.55555555555556 9.62250448649376 0 4.93827160493827 8.55333732132779 0 3.7037037037037 8.55333732132779 0 4.32098765432099 7.48417015616181 0 3.7037037037037 6.41500299099584 0 2.46913580246914 6.41500299099584 0 1.85185185185185 7.48417015616181 0 1.23456790123457 6.41500299099584 0 8.88178419700125e-16 6.41500299099584 0 0.617283950617285 5.34583582582987 0 6.66133814775094e-16 4.27666866066389 0 1.23456790123457 4.27666866066389 0 1.85185185185185 3.20750149549792 0 1.23456790123457 2.13833433033195 0 2.22044604925031e-16 2.13833433033195 0 0.617283950617284 1.06916716516597 0 50 28.8675134594813 0 -1.23456790123457 5.01682029252493e-15 0 5.01682029252493e-15 0.617283950617284 1.06916716516597 1.23456790123457 5.01682029252493e-15 2.46913580246914 5.01682029252493e-15 3.08641975308642 1.06916716516597 2.46913580246914 2.13833433033195 3.7037037037037 2.13833433033195 4.32098765432099 3.20750149549793 4.93827160493827 2.13833433033195 6.17283950617284 2.13833433033195 5.55555555555556 1.06916716516597 6.17283950617284 5.01682029252493e-15 7.40740740740741 5.01682029252493e-15 8.02469135802469 1.06916716516597 8.64197530864198 5.01682029252493e-15 9.87654320987654 5.01682029252493e-15 10.4938271604938 1.06916716516597 9.87654320987654 2.13833433033195 11.1111111111111 2.13833433033195 11.7283950617284 3.20750149549793 11.1111111111111 4.27666866066389 9.87654320987654 4.27666866066389 10.4938271604938 5.34583582582987 9.87654320987654 6.41500299099584 11.1111111111111 6.41500299099584 11.7283950617284 7.48417015616182 12.3456790123457 6.41500299099584 13.5802469135802 6.41500299099584 14.1975308641975 7.48417015616182 13.5802469135802 8.5533373213278 14.8148148148148 8.5533373213278 15.4320987654321 9.62250448649376 16.0493827160494 8.5533373213278 17.283950617284 8.5533373213278 16.6666666666667 7.48417015616182 17.2839506172839 6.41500299099584 18.5185185185185 6.41500299099584 19.1358024691358 7.48417015616182 19.7530864197531 6.41500299099584 20.9876543209877 6.41500299099584 20.3703703703704 5.34583582582987 20.9876543209877 4.27666866066389 19.7530864197531 4.27666866066389 19.1358024691358 3.20750149549793 19.7530864197531 2.13833433033195 20.9876543209877 2.13833433033195 20.3703703703704 1.06916716516597 20.9876543209877 5.01682029252493e-15 22.2222222222222 5.01682029252493e-15 22.8395061728395 1.06916716516597 23.4567901234568 5.01682029252493e-15 24.6913580246914 5.01682029252493e-15 25.3086419753086 1.06916716516597 24.6913580246914 2.13833433033195 25.9259259259259 2.13833433033195 26.5432098765432 3.20750149549791 27.1604938271605 2.13833433033195 28.3950617283951 2.13833433033195 27.7777777777778 1.06916716516597 28.3950617283951 5.01682029252493e-15 29.6296296296296 5.01682029252493e-15 30.2469135802469 1.06916716516597 30.8641975308642 5.01682029252493e-15 32.0987654320988 5.01682029252493e-15 32.7160493827161 1.06916716516597 32.0987654320988 2.13833433033195 33.3333333333333 2.13833433033195 33.9506172839506 3.20750149549793 33.3333333333333 4.27666866066389 32.0987654320988 4.27666866066389 32.7160493827161 5.34583582582987 32.0987654320988 6.41500299099584 33.3333333333333 6.41500299099584 33.9506172839506 7.48417015616182 34.5679012345679 6.41500299099584 35.8024691358025 6.41500299099584 36.4197530864198 7.48417015616182 35.8024691358025 8.5533373213278 37.037037037037 8.5533373213278 37.6543209876543 9.62250448649376 37.037037037037 10.6916716516597 35.8024691358025 10.6916716516597 36.4197530864198 11.7608388168257 35.8024691358025 12.8300059819917 34.5679012345679 12.8300059819917 33.9506172839506 11.7608388168257 33.3333333333333 12.8300059819917 32.0987654320988 12.8300059819917 32.7160493827161 13.8991731471577 32.0987654320988 14.9683403123236 33.3333333333333 14.9683403123236 33.9506172839506 16.0375074774896 33.3333333333333 17.1066746426556 32.0987654320988 17.1066746426556 32.7160493827161 18.1758418078216 32.0987654320988 19.2450089729875 33.3333333333333 19.2450089729875 33.9506172839506 20.3141761381535 34.5679012345679 19.2450089729875 35.8024691358025 19.2450089729875 36.4197530864198 20.3141761381535 35.8024691358025 21.3833433033195 37.037037037037 21.3833433033195 37.6543209876543 22.4525104684855 38.2716049382716 21.3833433033195 39.5061728395062 21.3833433033195 38.8888888888889 20.3141761381535 39.5061728395062 19.2450089729875 40.7407407407407 19.2450089729875 41.358024691358 20.3141761381535 41.9753086419753 19.2450089729875 43.2098765432099 19.2450089729875 43.8271604938272 20.3141761381535 43.2098765432099 21.3833433033195 44.4444444444444 21.3833433033195 45.0617283950617 22.4525104684855 44.4444444444444 23.5216776336514 43.2098765432099 23.5216776336514 43.8271604938272 24.5908447988174 43.2098765432099 25.6600119639834 44.4444444444444 25.6600119639834 45.0617283950617 26.7291791291493 45.679012345679 25.6600119639834 46.9135802469136 25.6600119639834 47.5308641975309 26.7291791291493 46.9135802469136 27.7983462943153 48.1481481481481 27.7983462943153 48.7654320987654 28.8675134594813 49.3827160493827 27.7983462943153 50.6172839506173 27.7983462943153 50 26.7291791291493 50.6172839506173 25.6600119639834 51.8518518518519 25.6600119639834 52.4691358024691 26.7291791291493 53.0864197530864 25.6600119639834 54.320987654321 25.6600119639834 53.7037037037037 24.5908447988174 54.320987654321 23.5216776336514 53.0864197530864 23.5216776336514 52.4691358024691 22.4525104684855 53.0864197530864 21.3833433033195 54.320987654321 21.3833433033195 53.7037037037037 20.3141761381535 54.320987654321 19.2450089729875 55.5555555555556 19.2450089729875 56.1728395061728 20.3141761381535 56.7901234567901 19.2450089729875 58.0246913580247 19.2450089729875 58.641975308642 20.3141761381535 58.0246913580247 21.3833433033195 59.2592592592593 21.3833433033195 59.8765432098765 22.4525104684855 60.4938271604938 21.3833433033195 61.7283950617284 21.3833433033195 61.1111111111111 20.3141761381535 61.7283950617284 19.2450089729875 62.962962962963 19.2450089729875 63.5802469135803 20.3141761381535 64.1975308641975 19.2450089729875 65.4320987654321 19.2450089729875 64.8148148148148 18.1758418078216 65.4320987654321 17.1066746426556 64.1975308641975 17.1066746426556 63.5802469135803 16.0375074774896 64.1975308641975 14.9683403123236 65.4320987654321 14.9683403123236 64.8148148148148 13.8991731471577 65.4320987654321 12.8300059819917 64.1975308641975 12.8300059819917 63.5802469135803 11.7608388168257 62.962962962963 12.8300059819917 61.7283950617284 12.8300059819917 61.1111111111111 11.7608388168257 61.7283950617284 10.6916716516597 60.4938271604938 10.6916716516597 59.8765432098765 9.62250448649376 60.4938271604938 8.5533373213278 61.7283950617284 8.5533373213278 61.1111111111111 7.48417015616182 61.7283950617284 6.41500299099584 62.962962962963 6.41500299099584 63.5802469135803 7.48417015616182 64.1975308641975 6.41500299099584 65.4320987654321 6.41500299099584 64.8148148148148 5.34583582582987 65.4320987654321 4.27666866066389 64.1975308641975 4.27666866066389 63.5802469135803 3.20750149549793 64.1975308641975 2.13833433033195 65.4320987654321 2.13833433033195 64.8148148148148 1.06916716516597 65.4320987654321 5.01682029252493e-15 66.6666666666667 5.01682029252493e-15 67.283950617284 1.06916716516597 67.9012345679012 5.01682029252493e-15 69.1358024691358 5.01682029252493e-15 69.7530864197531 1.06916716516597 69.1358024691358 2.13833433033195 70.3703703703704 2.13833433033195 70.9876543209877 3.20750149549793 71.6049382716049 2.13833433033195 72.8395061728395 2.13833433033195 72.2222222222222 1.06916716516597 72.8395061728395 5.01682029252493e-15 74.0740740740741 5.01682029252493e-15 74.6913580246914 1.06916716516597 75.3086419753086 5.01682029252493e-15 76.5432098765432 5.01682029252493e-15 77.1604938271605 1.06916716516597 76.5432098765432 2.13833433033195 77.7777777777778 2.13833433033195 78.3950617283951 3.20750149549793 77.7777777777778 4.27666866066389 76.5432098765432 4.27666866066391 77.1604938271605 5.34583582582987 76.5432098765432 6.41500299099584 77.7777777777778 6.41500299099584 78.3950617283951 7.48417015616182 79.0123456790124 6.41500299099584 80.2469135802469 6.41500299099584 80.8641975308642 7.48417015616182 80.2469135802469 8.5533373213278 81.4814814814815 8.5533373213278 82.0987654320988 9.62250448649376 82.7160493827161 8.5533373213278 83.9506172839506 8.5533373213278 83.3333333333333 7.48417015616182 83.9506172839506 6.41500299099584 85.1851851851852 6.41500299099584 85.8024691358025 7.48417015616182 86.4197530864197 6.41500299099584 87.6543209876543 6.41500299099584 87.037037037037 5.34583582582987 87.6543209876543 4.27666866066389 86.4197530864197 4.27666866066389 85.8024691358025 3.20750149549793 86.4197530864197 2.13833433033195 87.6543209876543 2.13833433033195 87.037037037037 1.06916716516597 87.6543209876543 5.01682029252493e-15 88.8888888888889 5.01682029252493e-15 89.5061728395062 1.06916716516597 90.1234567901235 5.01682029252493e-15 91.358024691358 5.01682029252493e-15 91.9753086419753 1.06916716516597 91.358024691358 2.13833433033195 92.5925925925926 2.13833433033195 93.2098765432099 3.20750149549793 93.8271604938272 2.13833433033195 95.0617283950617 2.13833433033195 94.4444444444444 1.06916716516597 95.0617283950617 5.01682029252493e-15 96.2962962962963 5.01682029252493e-15 96.9135802469136 1.06916716516597 97.5308641975309 5.01682029252493e-15 98.7654320987654 5.01682029252493e-15 98.1481481481482 -1.06916716516597 98.7654320987654 -2.13833433033194 97.5308641975309 -2.13833433033195 96.9135802469136 -3.20750149549792 97.5308641975309 -4.2766686606639 98.7654320987654 -4.2766686606639 98.1481481481482 -5.34583582582986 98.7654320987654 -6.41500299099584 97.5308641975309 -6.41500299099584 96.9135802469136 -7.48417015616182 96.2962962962963 -6.41500299099584 95.0617283950617 -6.41500299099584 94.4444444444444 -7.48417015616182 95.0617283950617 -8.55333732132778 93.8271604938272 -8.55333732132778 93.2098765432099 -9.62250448649376 93.8271604938272 -10.6916716516597 95.0617283950617 -10.6916716516597 94.4444444444444 -11.7608388168257 95.0617283950617 -12.8300059819917 96.2962962962963 -12.8300059819917 96.9135802469136 -11.7608388168257 97.5308641975309 -12.8300059819917 98.7654320987654 -12.8300059819917 98.1481481481481 -13.8991731471577 98.7654320987654 -14.9683403123236 97.5308641975309 -14.9683403123236 96.9135802469136 -16.0375074774896 97.5308641975308 -17.1066746426556 98.7654320987654 -17.1066746426556 98.1481481481481 -18.1758418078216 98.7654320987654 -19.2450089729875 97.5308641975308 -19.2450089729875 96.9135802469136 -20.3141761381535 96.2962962962963 -19.2450089729875 95.0617283950617 -19.2450089729875 94.4444444444444 -20.3141761381535 95.0617283950617 -21.3833433033195 93.8271604938272 -21.3833433033195 93.2098765432099 -22.4525104684854 92.5925925925926 -21.3833433033195 91.358024691358 -21.3833433033195 91.9753086419753 -20.3141761381535 91.358024691358 -19.2450089729875 90.1234567901234 -19.2450089729875 89.5061728395062 -20.3141761381535 88.8888888888889 -19.2450089729875 87.6543209876543 -19.2450089729875 87.037037037037 -20.3141761381535 87.6543209876543 -21.3833433033195 86.4197530864197 -21.3833433033195 85.8024691358025 -22.4525104684854 86.4197530864197 -23.5216776336514 87.6543209876543 -23.5216776336514 87.037037037037 -24.5908447988174 87.6543209876543 -25.6600119639834 86.4197530864197 -25.6600119639834 85.8024691358025 -26.7291791291493 85.1851851851852 -25.6600119639834 83.9506172839506 -25.6600119639834 83.3333333333333 -26.7291791291493 83.9506172839506 -27.7983462943153 82.716049382716 -27.7983462943153 82.0987654320988 -28.8675134594813 82.716049382716 -29.9366806246473 83.9506172839506 -29.9366806246473 83.3333333333333 -31.0058477898132 83.9506172839506 -32.0750149549792 85.1851851851852 -32.0750149549792 85.8024691358025 -31.0058477898132 86.4197530864197 -32.0750149549792 87.6543209876543 -32.0750149549792 87.037037037037 -33.1441821201452 87.6543209876543 -34.2133492853112 86.4197530864197 -34.2133492853112 85.8024691358025 -35.2825164504771 86.4197530864197 -36.3516836156431 87.6543209876543 -36.3516836156431 87.037037037037 -37.4208507808091 87.6543209876543 -38.490017945975 88.8888888888889 -38.490017945975 89.5061728395062 -37.4208507808091 90.1234567901234 -38.490017945975 91.358024691358 -38.490017945975 91.9753086419753 -37.4208507808091 91.358024691358 -36.3516836156431 92.5925925925926 -36.3516836156431 93.2098765432099 -35.2825164504771 93.8271604938272 -36.3516836156431 95.0617283950617 -36.3516836156431 94.4444444444444 -37.4208507808091 95.0617283950617 -38.490017945975 96.2962962962963 -38.490017945975 96.9135802469136 -37.4208507808091 97.5308641975308 -38.490017945975 98.7654320987654 -38.490017945975 98.1481481481481 -39.559185111141 98.7654320987654 -40.628352276307 97.5308641975308 -40.628352276307 96.9135802469136 -41.697519441473 97.5308641975309 -42.7666866066389 98.7654320987654 -42.7666866066389 98.1481481481481 -43.8358537718049 98.7654320987654 -44.9050209369709 97.5308641975309 -44.9050209369709 96.9135802469136 -45.9741881021369 96.2962962962963 -44.9050209369709 95.0617283950617 -44.9050209369709 94.4444444444444 -45.9741881021369 95.0617283950617 -47.0433552673028 93.8271604938272 -47.0433552673028 93.2098765432099 -48.1125224324688 93.8271604938272 -49.1816895976348 95.0617283950617 -49.1816895976348 94.4444444444444 -50.2508567628008 95.0617283950617 -51.3200239279667 96.2962962962963 -51.3200239279667 96.9135802469136 -50.2508567628008 97.5308641975309 -51.3200239279667 98.7654320987654 -51.3200239279667 98.1481481481482 -52.3891910931327 98.7654320987654 -53.4583582582987 97.5308641975309 -53.4583582582987 96.9135802469136 -54.5275254234647 97.5308641975309 -55.5966925886306 98.7654320987654 -55.5966925886306 98.1481481481482 -56.6658597537966 98.7654320987654 -57.7350269189626 97.5308641975309 -57.7350269189626 96.9135802469136 -58.8041940841286 96.2962962962963 -57.7350269189626 95.0617283950617 -57.7350269189626 94.4444444444444 -58.8041940841285 95.0617283950617 -59.8733612492945 93.8271604938272 -59.8733612492945 93.2098765432099 -60.9425284144605 92.5925925925926 -59.8733612492945 91.358024691358 -59.8733612492945 91.9753086419753 -58.8041940841285 91.358024691358 -57.7350269189626 90.1234567901235 -57.7350269189626 89.5061728395062 -58.8041940841286 88.8888888888889 -57.7350269189626 87.6543209876543 -57.7350269189626 87.037037037037 -58.8041940841285 87.6543209876543 -59.8733612492945 86.4197530864197 -59.8733612492945 85.8024691358025 -60.9425284144605 86.4197530864198 -62.0116955796265 87.6543209876543 -62.0116955796265 87.037037037037 -63.0808627447924 87.6543209876543 -64.1500299099584 86.4197530864198 -64.1500299099584 85.8024691358025 -65.2191970751244 85.1851851851852 -64.1500299099584 83.9506172839506 -64.1500299099584 83.3333333333333 -65.2191970751244 83.9506172839506 -66.2883642402904 82.7160493827161 -66.2883642402904 82.0987654320988 -67.3575314054563 81.4814814814815 -66.2883642402904 80.2469135802469 -66.2883642402904 80.8641975308642 -65.2191970751244 80.2469135802469 -64.1500299099584 79.0123456790124 -64.1500299099584 78.3950617283951 -65.2191970751244 77.7777777777778 -64.1500299099584 76.5432098765432 -64.1500299099584 77.1604938271605 -63.0808627447924 76.5432098765432 -62.0116955796265 77.7777777777778 -62.0116955796265 78.3950617283951 -60.9425284144605 77.7777777777778 -59.8733612492945 76.5432098765432 -59.8733612492945 77.1604938271605 -58.8041940841285 76.5432098765432 -57.7350269189626 75.3086419753086 -57.7350269189626 74.6913580246914 -58.8041940841286 74.0740740740741 -57.7350269189626 72.8395061728395 -57.7350269189626 72.2222222222222 -58.8041940841285 72.8395061728395 -59.8733612492945 71.6049382716049 -59.8733612492945 70.9876543209877 -60.9425284144605 70.3703703703704 -59.8733612492945 69.1358024691358 -59.8733612492945 69.7530864197531 -58.8041940841285 69.1358024691358 -57.7350269189626 67.9012345679012 -57.7350269189626 67.283950617284 -58.8041940841286 66.6666666666667 -57.7350269189626 65.4320987654321 -57.7350269189626 64.8148148148148 -58.8041940841285 65.4320987654321 -59.8733612492945 64.1975308641975 -59.8733612492945 63.5802469135803 -60.9425284144605 64.1975308641975 -62.0116955796265 65.4320987654321 -62.0116955796265 64.8148148148148 -63.0808627447924 65.4320987654321 -64.1500299099584 64.1975308641975 -64.1500299099584 63.5802469135803 -65.2191970751244 62.962962962963 -64.1500299099584 61.7283950617284 -64.1500299099584 61.1111111111111 -65.2191970751244 61.7283950617284 -66.2883642402904 60.4938271604938 -66.2883642402904 59.8765432098765 -67.3575314054563 60.4938271604938 -68.4266985706223 61.7283950617284 -68.4266985706223 61.1111111111111 -69.4958657357883 61.7283950617284 -70.5650329009543 62.962962962963 -70.5650329009543 63.5802469135803 -69.4958657357883 64.1975308641975 -70.5650329009543 65.4320987654321 -70.5650329009543 64.8148148148148 -71.6342000661202 65.4320987654321 -72.7033672312862 64.1975308641975 -72.7033672312862 63.5802469135803 -73.7725343964522 64.1975308641975 -74.8417015616182 65.4320987654321 -74.8417015616182 64.8148148148148 -75.9108687267841 65.4320987654321 -76.9800358919501 64.1975308641975 -76.9800358919501 63.5802469135803 -78.0492030571161 62.962962962963 -76.9800358919501 61.7283950617284 -76.9800358919501 61.1111111111111 -78.0492030571161 61.7283950617284 -79.1183702222821 60.4938271604938 -79.1183702222821 59.8765432098765 -80.187537387448 59.2592592592593 -79.1183702222821 58.0246913580247 -79.1183702222821 58.641975308642 -78.0492030571161 58.0246913580247 -76.9800358919501 56.7901234567901 -76.9800358919501 56.1728395061728 -78.0492030571161 55.5555555555556 -76.9800358919501 54.320987654321 -76.9800358919501 53.7037037037037 -78.0492030571161 54.320987654321 -79.118370222282 53.0864197530864 -79.118370222282 52.4691358024691 -80.187537387448 53.0864197530864 -81.256704552614 54.320987654321 -81.256704552614 53.7037037037037 -82.32587171778 54.320987654321 -83.3950388829459 53.0864197530864 -83.3950388829459 52.4691358024691 -84.4642060481119 51.8518518518519 -83.3950388829459 50.6172839506173 -83.3950388829459 50 -84.4642060481119 50.6172839506173 -85.5333732132779 49.3827160493827 -85.5333732132779 48.7654320987654 -86.6025403784439 48.1481481481481 -85.5333732132779 46.9135802469136 -85.5333732132779 47.5308641975309 -84.4642060481119 46.9135802469136 -83.3950388829459 45.679012345679 -83.3950388829459 45.0617283950617 -84.4642060481119 44.4444444444444 -83.3950388829459 43.2098765432099 -83.3950388829459 43.8271604938272 -82.32587171778 43.2098765432099 -81.256704552614 44.4444444444444 -81.256704552614 45.0617283950617 -80.187537387448 44.4444444444444 -79.118370222282 43.2098765432099 -79.118370222282 43.8271604938272 -78.0492030571161 43.2098765432099 -76.9800358919501 41.9753086419753 -76.9800358919501 41.358024691358 -78.0492030571161 40.7407407407407 -76.9800358919501 39.5061728395062 -76.9800358919501 38.8888888888889 -78.0492030571161 39.5061728395062 -79.1183702222821 38.2716049382716 -79.1183702222821 37.6543209876543 -80.187537387448 37.037037037037 -79.1183702222821 35.8024691358025 -79.1183702222821 36.4197530864198 -78.0492030571161 35.8024691358025 -76.9800358919501 34.5679012345679 -76.9800358919501 33.9506172839506 -78.0492030571161 33.3333333333333 -76.9800358919501 32.0987654320988 -76.9800358919501 32.7160493827161 -75.9108687267841 32.0987654320988 -74.8417015616182 33.3333333333333 -74.8417015616182 33.9506172839506 -73.7725343964522 33.3333333333333 -72.7033672312862 32.0987654320988 -72.7033672312862 32.7160493827161 -71.6342000661202 32.0987654320988 -70.5650329009543 33.3333333333333 -70.5650329009543 33.9506172839506 -69.4958657357883 34.5679012345679 -70.5650329009543 35.8024691358025 -70.5650329009543 36.4197530864198 -69.4958657357883 35.8024691358025 -68.4266985706223 37.037037037037 -68.4266985706223 37.6543209876543 -67.3575314054563 37.037037037037 -66.2883642402904 35.8024691358025 -66.2883642402904 36.4197530864198 -65.2191970751244 35.8024691358025 -64.1500299099584 34.5679012345679 -64.1500299099584 33.9506172839506 -65.2191970751244 33.3333333333333 -64.1500299099584 32.0987654320988 -64.1500299099584 32.7160493827161 -63.0808627447924 32.0987654320988 -62.0116955796265 33.3333333333333 -62.0116955796265 33.9506172839506 -60.9425284144605 33.3333333333333 -59.8733612492945 32.0987654320988 -59.8733612492945 32.7160493827161 -58.8041940841285 32.0987654320988 -57.7350269189626 30.8641975308642 -57.7350269189626 30.2469135802469 -58.8041940841286 29.6296296296296 -57.7350269189626 28.3950617283951 -57.7350269189626 27.7777777777778 -58.8041940841285 28.3950617283951 -59.8733612492945 27.1604938271605 -59.8733612492945 26.5432098765432 -60.9425284144605 25.9259259259259 -59.8733612492945 24.6913580246914 -59.8733612492945 25.3086419753086 -58.8041940841285 24.6913580246914 -57.7350269189626 23.4567901234568 -57.7350269189626 22.8395061728395 -58.8041940841285 22.2222222222222 -57.7350269189626 20.9876543209877 -57.7350269189626 20.3703703703704 -58.8041940841285 20.9876543209877 -59.8733612492945 19.7530864197531 -59.8733612492945 19.1358024691358 -60.9425284144605 19.7530864197531 -62.0116955796265 20.9876543209877 -62.0116955796265 20.3703703703704 -63.0808627447924 20.9876543209877 -64.1500299099584 19.7530864197531 -64.1500299099584 19.1358024691358 -65.2191970751244 18.5185185185185 -64.1500299099584 17.283950617284 -64.1500299099584 16.6666666666667 -65.2191970751244 17.283950617284 -66.2883642402904 16.0493827160494 -66.2883642402904 15.4320987654321 -67.3575314054563 14.8148148148148 -66.2883642402904 13.5802469135802 -66.2883642402904 14.1975308641975 -65.2191970751244 13.5802469135803 -64.1500299099584 12.3456790123457 -64.1500299099584 11.7283950617284 -65.2191970751244 11.1111111111111 -64.1500299099584 9.87654320987655 -64.1500299099584 10.4938271604938 -63.0808627447924 9.87654320987655 -62.0116955796265 11.1111111111111 -62.0116955796265 11.7283950617284 -60.9425284144605 11.1111111111111 -59.8733612492945 9.87654320987655 -59.8733612492945 10.4938271604938 -58.8041940841285 9.87654320987655 -57.7350269189626 8.64197530864198 -57.7350269189626 8.0246913580247 -58.8041940841285 7.40740740740741 -57.7350269189626 6.17283950617284 -57.7350269189626 5.55555555555556 -58.8041940841285 6.17283950617284 -59.8733612492945 4.93827160493827 -59.8733612492945 4.32098765432099 -60.9425284144605 3.70370370370371 -59.8733612492945 2.46913580246914 -59.8733612492945 3.08641975308642 -58.8041940841285 2.46913580246914 -57.7350269189626 1.23456790123457 -57.7350269189626 0.617283950617287 -58.8041940841285 3.33066907387547e-15 -57.7350269189626 -1.23456790123456 -57.7350269189626 -0.617283950617281 -56.6658597537966 -1.23456790123456 -55.5966925886306 3.10862446895044e-15 -55.5966925886306 0.617283950617287 -54.5275254234647 2.66453525910038e-15 -53.4583582582987 -1.23456790123456 -53.4583582582987 -0.617283950617282 -52.3891910931327 -1.23456790123457 -51.3200239279667 2.22044604925031e-15 -51.3200239279667 0.617283950617288 -50.2508567628008 1.23456790123457 -51.3200239279667 2.46913580246914 -51.3200239279667 3.08641975308642 -50.2508567628008 2.46913580246914 -49.1816895976348 3.70370370370371 -49.1816895976348 4.32098765432099 -48.1125224324688 3.70370370370371 -47.0433552673028 2.46913580246914 -47.0433552673028 3.08641975308642 -45.9741881021369 2.46913580246914 -44.9050209369709 1.23456790123457 -44.9050209369709 0.617283950617288 -45.9741881021369 2.22044604925031e-15 -44.9050209369709 -1.23456790123457 -44.9050209369709 -0.617283950617282 -43.8358537718049 -1.23456790123456 -42.7666866066389 2.66453525910038e-15 -42.7666866066389 0.617283950617287 -41.697519441473 3.10862446895044e-15 -40.628352276307 -1.23456790123456 -40.628352276307 -0.617283950617281 -39.559185111141 -1.23456790123456 -38.4900179459751 3.10862446895044e-15 -38.4900179459751 0.617283950617287 -37.4208507808091 1.23456790123457 -38.4900179459751 2.46913580246914 -38.4900179459751 3.08641975308642 -37.4208507808091 2.46913580246914 -36.3516836156431 3.70370370370371 -36.3516836156431 4.32098765432099 -35.2825164504771 4.93827160493827 -36.3516836156431 6.17283950617284 -36.3516836156431 5.55555555555556 -37.4208507808091 6.17283950617284 -38.490017945975 7.40740740740741 -38.490017945975 8.02469135802469 -37.4208507808091 8.64197530864198 -38.490017945975 9.87654320987654 -38.490017945975 10.4938271604938 -37.4208507808091 9.87654320987655 -36.3516836156431 11.1111111111111 -36.3516836156431 11.7283950617284 -35.2825164504771 11.1111111111111 -34.2133492853112 9.87654320987655 -34.2133492853112 10.4938271604938 -33.1441821201452 9.87654320987654 -32.0750149549792 11.1111111111111 -32.0750149549792 11.7283950617284 -31.0058477898132 12.3456790123457 -32.0750149549792 13.5802469135802 -32.0750149549792 14.1975308641975 -31.0058477898132 13.5802469135802 -29.9366806246473 14.8148148148148 -29.9366806246473 15.4320987654321 -28.8675134594813 14.8148148148148 -27.7983462943153 13.5802469135802 -27.7983462943153 14.1975308641975 -26.7291791291493 13.5802469135802 -25.6600119639834 12.3456790123457 -25.6600119639834 11.7283950617284 -26.7291791291493 11.1111111111111 -25.6600119639834 9.87654320987654 -25.6600119639834 10.4938271604938 -24.5908447988174 9.87654320987655 -23.5216776336514 11.1111111111111 -23.5216776336514 11.7283950617284 -22.4525104684854 11.1111111111111 -21.3833433033195 9.87654320987654 -21.3833433033195 10.4938271604938 -20.3141761381535 9.87654320987654 -19.2450089729875 8.64197530864198 -19.2450089729875 8.02469135802469 -20.3141761381535 7.40740740740741 -19.2450089729875 6.17283950617284 -19.2450089729875 5.55555555555556 -20.3141761381535 6.17283950617284 -21.3833433033195 4.93827160493827 -21.3833433033195 4.32098765432099 -22.4525104684854 3.7037037037037 -21.3833433033195 2.46913580246913 -21.3833433033195 3.08641975308642 -20.3141761381535 2.46913580246914 -19.2450089729875 1.23456790123457 -19.2450089729875 0.617283950617284 -20.3141761381535 0 -19.2450089729875 -1.23456790123457 -19.2450089729875 -0.617283950617284 -18.1758418078216 -1.23456790123457 -17.1066746426556 0 -17.1066746426556 0.617283950617284 -16.0375074774896 6.66133814775094e-16 -14.9683403123236 -1.23456790123457 -14.9683403123236 -0.617283950617283 -13.8991731471577 -1.23456790123457 -12.8300059819917 1.11022302462516e-15 -12.8300059819917 0.617283950617284 -11.7608388168257 1.23456790123457 -12.8300059819917 2.46913580246914 -12.8300059819917 3.08641975308642 -11.7608388168257 2.46913580246914 -10.6916716516597 3.7037037037037 -10.6916716516597 4.32098765432099 -9.62250448649376 3.7037037037037 -8.55333732132778 2.46913580246914 -8.55333732132778 3.08641975308642 -7.48417015616182 2.46913580246914 -6.41500299099584 1.23456790123457 -6.41500299099584 0.617283950617284 -7.48417015616182 6.66133814775094e-16 -6.41500299099584 -1.23456790123457 -6.41500299099584 -0.617283950617283 -5.34583582582986 -1.23456790123457 -4.2766686606639 2.22044604925031e-16 -4.2766686606639 0.617283950617284 -3.20750149549792 0 -2.13833433033195 -1.23456790123457 -2.13833433033195 -0.617283950617284 -1.06916716516597 48.7654320987654 -28.8675134594813 638 642 640 641 640 642 643 642 644 638 644 642 640 639 638 636 629 637 635 634 636 629 653 637 638 637 644 630 636 634 644 637 645 652 648 646 647 646 648 649 648 650 652 650 648 646 645 652 653 652 645 629 654 653 655 654 656 656 654 626 652 651 650 645 637 653 634 633 632 614 618 616 617 616 618 619 618 620 614 620 618 616 615 614 610 608 612 611 610 612 613 597 621 620 614 621 622 621 596 621 614 613 632 631 630 632 630 634 628 627 626 629 628 654 630 629 636 625 624 594 623 622 624 689 625 593 656 626 657 622 596 624 628 626 654 613 612 606 657 626 625 665 664 666 668 666 662 668 667 666 662 669 668 662 666 664 660 659 658 685 677 661 662 661 669 661 660 685 663 662 664 669 661 677 671 670 672 672 670 674 674 673 672 676 675 674 674 670 676 676 670 669 685 678 677 680 679 678 682 680 678 680 682 681 669 677 676 658 688 660 686 685 660 660 688 686 685 684 678 682 684 683 682 678 684 658 657 689 688 687 686 688 658 689 691 690 692 692 690 590 690 689 593 657 625 689 698 694 700 695 694 696 697 696 698 698 696 694 694 693 700 700 699 698 701 700 693 703 702 704 580 702 701 702 578 704 692 589 693 701 693 589 610 609 608 548 544 542 545 544 546 547 546 548 548 546 544 544 543 542 534 540 538 539 538 540 549 541 533 542 541 548 540 534 541 548 541 549 554 550 556 551 550 552 553 552 554 554 552 550 550 549 557 556 555 554 557 556 550 559 558 560 532 558 557 557 549 533 532 560 558 538 537 536 524 520 518 521 520 522 523 522 524 524 522 520 520 519 518 514 512 516 515 514 516 525 517 509 518 517 524 526 525 500 524 517 525 536 535 534 536 534 538 532 531 530 533 532 557 534 533 541 500 528 526 527 526 528 497 561 529 530 529 560 464 562 561 532 530 560 509 517 516 560 529 561 608 607 606 606 605 613 604 603 602 605 604 598 605 597 613 602 601 600 600 598 604 597 605 598 599 598 600 604 602 600 596 621 597 596 595 594 594 624 596 592 591 590 593 592 690 594 593 625 588 586 584 587 586 588 589 588 582 590 589 692 586 585 584 592 590 690 608 606 612 566 570 568 569 568 570 571 570 572 566 572 570 568 567 566 464 564 562 563 562 564 573 565 461 566 565 572 573 452 574 572 565 573 582 584 583 581 580 701 582 581 589 579 578 580 584 582 588 449 577 576 575 574 576 577 769 705 704 578 705 576 574 452 580 578 702 461 565 564 589 581 701 529 528 498 705 578 577 740 736 734 737 736 738 739 738 740 740 738 736 736 735 734 726 733 732 731 730 732 733 725 749 740 734 741 732 730 726 741 734 733 746 742 748 743 742 744 745 744 746 746 744 742 742 741 749 748 747 746 749 748 742 751 750 752 722 752 750 750 749 724 741 733 749 730 729 728 710 714 712 713 712 714 715 714 716 710 716 714 712 711 710 706 62 708 707 706 708 52 718 717 716 710 717 53 717 709 717 710 709 728 727 726 728 726 730 724 723 722 725 724 749 726 725 733 50 721 720 719 718 720 721 49 17 752 722 753 52 720 718 724 722 750 708 62 709 753 722 721 764 760 758 761 760 762 763 762 764 764 762 760 760 759 758 754 14 756 755 754 756 765 757 13 758 757 764 14 757 756 764 757 765 4 768 766 767 766 768 1 768 2 4 2 768 766 765 4 4 3 2 5 4 765 7 6 8 10 8 6 5 765 13 5 12 6 754 753 17 13 12 5 14 13 757 10 9 8 11 10 12 12 10 6 16 15 14 17 16 754 19 18 20 20 18 46 753 721 17 14 754 16 26 22 28 23 22 24 25 24 26 26 24 22 22 21 28 28 27 26 29 28 21 31 30 32 36 32 30 30 29 36 21 20 45 17 48 18 29 21 37 706 705 64 49 48 17 50 49 721 45 37 21 47 46 48 45 20 46 52 51 50 53 52 717 55 54 56 56 54 58 53 61 54 50 720 52 34 32 36 37 45 38 33 32 34 35 34 36 36 29 37 44 43 42 44 42 40 39 38 40 41 40 42 40 38 44 45 44 38 46 18 48 61 60 54 62 61 709 57 56 58 59 58 60 58 54 60 64 63 62 65 64 705 67 66 68 68 66 190 65 705 769 62 706 64 74 70 76 71 70 72 73 72 74 74 72 70 70 69 76 76 75 74 77 76 69 79 78 80 80 78 180 77 181 78 69 68 190 77 69 181 53 709 61 92 88 86 89 88 90 91 90 92 92 90 88 88 87 86 83 82 84 85 109 93 92 85 93 85 92 86 109 101 93 84 110 85 95 94 96 96 94 98 98 97 96 100 99 98 98 94 100 101 100 94 109 102 101 104 103 102 106 104 102 104 106 105 94 93 101 82 110 84 110 109 85 82 112 110 109 108 102 106 108 107 106 102 108 82 81 113 112 111 110 112 82 113 115 114 116 144 114 113 113 81 145 116 114 144 119 118 120 122 120 124 122 121 120 124 123 122 124 120 118 117 125 124 141 117 116 117 124 118 127 126 128 130 128 126 126 125 132 141 125 117 81 80 178 65 193 66 514 513 512 512 511 510 510 509 516 508 507 506 509 508 502 525 509 501 506 505 504 506 504 502 503 502 504 506 502 508 509 502 501 500 499 498 501 500 525 497 496 465 497 529 498 561 497 465 492 491 490 493 492 485 494 493 468 492 490 488 495 494 496 496 494 466 490 489 488 500 498 528 488 487 486 485 492 486 484 483 482 485 484 478 493 485 477 482 481 480 482 480 478 477 485 478 479 478 480 478 484 482 493 477 469 466 494 468 470 469 476 465 496 466 467 466 468 493 469 468 476 475 474 476 474 472 471 470 472 473 472 474 472 470 476 469 477 476 488 486 492 465 464 561 464 463 462 462 461 564 460 459 458 461 460 454 573 461 453 458 457 456 458 456 454 453 461 454 455 454 456 454 460 458 453 452 573 452 451 450 449 576 450 449 321 769 769 577 449 448 322 449 576 452 450 444 443 442 438 445 444 322 448 446 444 442 440 447 446 448 445 325 446 564 464 462 425 424 426 426 424 428 428 427 426 424 422 428 420 419 418 413 421 420 422 421 428 405 429 421 423 422 424 428 421 429 438 440 439 325 445 437 437 445 438 435 434 436 438 444 440 405 430 429 431 430 432 402 433 432 334 436 434 402 432 430 334 437 436 414 420 418 441 440 442 337 434 433 510 516 512 416 415 414 418 416 414 405 413 412 420 414 413 421 413 405 410 409 408 408 412 410 406 408 407 406 412 408 410 412 411 405 412 406 404 403 402 430 405 404 401 400 370 433 402 401 433 401 337 396 395 394 390 397 396 398 397 373 396 394 392 399 398 400 400 398 370 402 430 404 392 391 390 390 396 392 389 388 382 390 389 397 397 389 373 386 385 384 386 382 388 382 384 383 384 382 386 386 388 387 389 382 381 373 381 374 381 373 389 374 381 380 370 372 371 398 372 370 398 373 372 380 379 378 380 378 376 375 374 376 377 376 378 376 374 380 392 394 393 401 370 369 334 434 336 338 337 368 336 335 334 338 340 339 437 334 333 341 340 365 344 342 348 344 343 342 345 344 346 342 341 348 338 368 340 325 333 326 437 333 325 326 333 332 322 324 323 446 324 322 321 449 322 446 325 324 332 331 330 332 330 328 327 326 328 329 328 330 328 326 332 336 434 337 368 367 366 340 368 366 357 365 364 365 340 366 357 341 365 362 361 360 360 364 362 358 360 359 358 364 360 362 364 363 357 364 358 350 349 356 348 341 349 356 349 357 346 348 347 346 344 348 341 357 349 356 355 354 356 354 352 351 350 352 353 352 354 352 350 356 368 337 369 401 369 337 416 418 417 190 66 192 194 193 320 181 69 189 191 190 192 193 192 66 196 195 194 197 196 317 199 198 200 202 200 198 198 197 204 194 320 196 80 180 178 181 189 182 81 178 177 179 178 180 181 180 78 188 187 186 188 186 184 183 182 184 185 184 186 184 182 188 189 188 182 189 69 190 204 202 198 206 205 309 202 201 200 203 202 204 204 197 205 208 207 206 209 208 305 211 210 212 238 212 210 210 209 241 206 308 208 218 214 220 215 214 216 217 216 218 218 216 214 214 213 220 220 219 218 221 220 213 223 222 224 226 224 222 222 221 228 221 213 237 213 212 238 197 317 205 142 116 144 146 145 176 133 125 141 143 142 144 145 144 113 149 148 173 150 149 157 151 150 152 150 154 152 148 147 146 146 176 148 126 132 130 133 141 134 128 130 129 131 130 132 133 132 125 140 139 138 138 136 134 135 134 136 137 136 138 134 140 138 141 140 134 141 116 142 176 175 174 174 173 148 172 171 170 173 172 166 149 173 157 170 169 168 170 168 166 165 173 166 167 166 168 166 172 170 157 173 165 156 150 157 158 157 164 153 152 154 155 154 156 154 150 156 164 163 162 164 162 160 159 158 160 161 160 162 160 158 164 157 165 164 176 174 148 145 177 176 145 81 177 320 319 318 320 318 196 317 316 310 317 196 318 309 205 317 314 313 312 314 310 316 310 312 311 312 310 314 314 316 315 317 310 309 308 307 306 306 208 308 305 304 274 305 208 306 309 308 206 300 299 298 294 301 300 302 301 277 300 298 294 303 302 304 304 302 274 241 209 305 296 295 294 296 294 298 293 292 286 285 301 293 301 294 293 290 289 288 290 286 292 286 288 287 288 286 290 290 292 291 293 286 285 277 285 278 277 301 285 278 285 284 274 276 275 302 276 274 302 277 276 284 283 282 282 280 278 279 278 280 281 280 282 278 284 282 296 298 297 305 274 273 238 210 240 242 241 272 229 221 237 239 238 240 241 240 210 244 243 242 245 244 269 247 246 248 250 248 246 246 245 252 242 272 244 226 222 228 230 229 236 224 226 225 227 226 228 229 228 221 236 235 234 236 234 232 231 230 232 233 232 234 232 230 236 229 237 236 213 238 237 272 271 270 272 270 244 269 268 262 269 244 270 269 253 245 266 265 264 266 262 268 262 264 263 264 262 266 266 268 267 269 262 261 250 246 252 254 253 261 249 248 250 251 250 252 245 253 252 260 259 258 260 256 254 255 254 256 258 257 256 256 260 258 254 261 260 253 269 261 272 241 273 305 273 241 320 193 321 193 769 321 769 193 65
-
-TShapes 3075
-Ve
-1e-07
-0 0 0
-0 0
-
-0101100
-*
-Ve
-1e-07
-1.23456790123457 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 1 0 0 1.23456790123457
-6 1 2 0
-6 2 1 0
-0
-
-0101000
-+3075 0 -3074 0 *
-Ve
-1e-07
-1.85185185185185 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 2 0 0 1.23456790123457
-6 3 2 0
-6 4 1 0
-0
-
-0101000
-+3074 0 -3072 0 *
-Ve
-1e-07
-2.46913580246914 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 3 0 0 1.23456790123457
-6 5 2 0
-6 6 1 0
-0
-
-0101000
-+3072 0 -3070 0 *
-Ve
-1e-07
-3.7037037037037 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 4 0 0 1.23456790123457
-6 7 2 0
-6 8 1 0
-0
-
-0101000
-+3070 0 -3068 0 *
-Ve
-1e-07
-4.32098765432099 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 5 0 0 1.23456790123457
-6 9 2 0
-6 10 1 0
-0
-
-0101000
-+3068 0 -3066 0 *
-Ve
-1e-07
-3.7037037037037 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 6 0 0 1.23456790123457
-6 11 2 0
-6 12 1 0
-0
-
-0101000
-+3066 0 -3064 0 *
-Ve
-1e-07
-4.93827160493827 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 7 0 0 1.23456790123457
-6 13 2 0
-6 14 1 0
-0
-
-0101000
-+3064 0 -3062 0 *
-Ve
-1e-07
-5.55555555555556 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 8 0 0 1.23456790123457
-6 15 2 0
-6 16 1 0
-0
-
-0101000
-+3062 0 -3060 0 *
-Ve
-1e-07
-6.17283950617284 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 9 0 0 1.23456790123457
-6 17 2 0
-6 18 1 0
-0
-
-0101000
-+3060 0 -3058 0 *
-Ve
-1e-07
-7.40740740740741 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 10 0 0 1.23456790123457
-6 19 2 0
-6 20 1 0
-0
-
-0101000
-+3058 0 -3056 0 *
-Ve
-1e-07
-6.79012345679012 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 11 0 0 1.23456790123457
-6 21 2 0
-6 22 1 0
-0
-
-0101000
-+3056 0 -3054 0 *
-Ve
-1e-07
-7.40740740740741 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 12 0 0 1.23456790123457
-6 23 2 0
-6 24 1 0
-0
-
-0101000
-+3054 0 -3052 0 *
-Ve
-1e-07
-8.64197530864198 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 13 0 0 1.23456790123457
-6 25 2 0
-6 26 1 0
-0
-
-0101000
-+3052 0 -3050 0 *
-Ve
-1e-07
-9.25925925925926 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 14 0 0 1.23456790123457
-6 27 2 0
-6 28 1 0
-0
-
-0101000
-+3050 0 -3048 0 *
-Ve
-1e-07
-9.87654320987654 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 15 0 0 1.23456790123457
-6 29 2 0
-6 30 1 0
-0
-
-0101000
-+3048 0 -3046 0 *
-Ve
-1e-07
-11.1111111111111 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 16 0 0 1.23456790123457
-6 31 2 0
-6 32 1 0
-0
-
-0101000
-+3046 0 -3044 0 *
-Ve
-1e-07
-11.7283950617284 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 17 0 0 1.23456790123457
-6 33 2 0
-6 34 1 0
-0
-
-0101000
-+3044 0 -3042 0 *
-Ve
-1e-07
-11.1111111111111 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 18 0 0 1.23456790123457
-6 35 2 0
-6 36 1 0
-0
-
-0101000
-+3042 0 -3040 0 *
-Ve
-1e-07
-12.3456790123457 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 19 0 0 1.23456790123457
-6 37 2 0
-6 38 1 0
-0
-
-0101000
-+3040 0 -3038 0 *
-Ve
-1e-07
-12.962962962963 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 20 0 0 1.23456790123457
-6 39 2 0
-6 40 1 0
-0
-
-0101000
-+3038 0 -3036 0 *
-Ve
-1e-07
-12.3456790123457 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 21 0 0 1.23456790123457
-6 41 2 0
-6 42 1 0
-0
-
-0101000
-+3036 0 -3034 0 *
-Ve
-1e-07
-11.1111111111111 -4.27666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 22 0 0 1.23456790123457
-6 43 2 0
-6 44 1 0
-0
-
-0101000
-+3034 0 -3032 0 *
-Ve
-1e-07
-11.7283950617284 -5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 23 0 0 1.23456790123457
-6 45 2 0
-6 46 1 0
-0
-
-0101000
-+3032 0 -3030 0 *
-Ve
-1e-07
-11.1111111111111 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 24 0 0 1.23456790123457
-6 47 2 0
-6 48 1 0
-0
-
-0101000
-+3030 0 -3028 0 *
-Ve
-1e-07
-12.3456790123457 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 25 0 0 1.23456790123457
-6 49 2 0
-6 50 1 0
-0
-
-0101000
-+3028 0 -3026 0 *
-Ve
-1e-07
-12.962962962963 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 26 0 0 1.23456790123457
-6 51 2 0
-6 52 1 0
-0
-
-0101000
-+3026 0 -3024 0 *
-Ve
-1e-07
-13.5802469135802 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 27 0 0 1.23456790123457
-6 53 2 0
-6 54 1 0
-0
-
-0101000
-+3024 0 -3022 0 *
-Ve
-1e-07
-14.8148148148148 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 28 0 0 1.23456790123457
-6 55 2 0
-6 56 1 0
-0
-
-0101000
-+3022 0 -3020 0 *
-Ve
-1e-07
-15.4320987654321 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 29 0 0 1.23456790123457
-6 57 2 0
-6 58 1 0
-0
-
-0101000
-+3020 0 -3018 0 *
-Ve
-1e-07
-14.8148148148148 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 30 0 0 1.23456790123457
-6 59 2 0
-6 60 1 0
-0
-
-0101000
-+3018 0 -3016 0 *
-Ve
-1e-07
-16.0493827160494 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 31 0 0 1.23456790123457
-6 61 2 0
-6 62 1 0
-0
-
-0101000
-+3016 0 -3014 0 *
-Ve
-1e-07
-16.6666666666667 -9.62250448649376 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 32 0 0 1.23456790123457
-6 63 2 0
-6 64 1 0
-0
-
-0101000
-+3014 0 -3012 0 *
-Ve
-1e-07
-17.283950617284 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 33 0 0 1.23456790123457
-6 65 2 0
-6 66 1 0
-0
-
-0101000
-+3012 0 -3010 0 *
-Ve
-1e-07
-18.5185185185185 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 34 0 0 1.23456790123457
-6 67 2 0
-6 68 1 0
-0
-
-0101000
-+3010 0 -3008 0 *
-Ve
-1e-07
-17.9012345679012 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 35 0 0 1.23456790123457
-6 69 2 0
-6 70 1 0
-0
-
-0101000
-+3008 0 -3006 0 *
-Ve
-1e-07
-18.5185185185185 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 36 0 0 1.23456790123457
-6 71 2 0
-6 72 1 0
-0
-
-0101000
-+3006 0 -3004 0 *
-Ve
-1e-07
-19.7530864197531 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 37 0 0 1.23456790123457
-6 73 2 0
-6 74 1 0
-0
-
-0101000
-+3004 0 -3002 0 *
-Ve
-1e-07
-20.3703703703704 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 38 0 0 1.23456790123457
-6 75 2 0
-6 76 1 0
-0
-
-0101000
-+3002 0 -3000 0 *
-Ve
-1e-07
-20.9876543209877 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 39 0 0 1.23456790123457
-6 77 2 0
-6 78 1 0
-0
-
-0101000
-+3000 0 -2998 0 *
-Ve
-1e-07
-22.2222222222222 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 40 0 0 1.23456790123457
-6 79 2 0
-6 80 1 0
-0
-
-0101000
-+2998 0 -2996 0 *
-Ve
-1e-07
-21.6049382716049 -5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 41 0 0 1.23456790123457
-6 81 2 0
-6 82 1 0
-0
-
-0101000
-+2996 0 -2994 0 *
-Ve
-1e-07
-22.2222222222222 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 42 0 0 1.23456790123457
-6 83 2 0
-6 84 1 0
-0
-
-0101000
-+2994 0 -2992 0 *
-Ve
-1e-07
-20.9876543209877 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 43 0 0 1.23456790123457
-6 85 2 0
-6 86 1 0
-0
-
-0101000
-+2992 0 -2990 0 *
-Ve
-1e-07
-20.3703703703704 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 44 0 0 1.23456790123457
-6 87 2 0
-6 88 1 0
-0
-
-0101000
-+2990 0 -2988 0 *
-Ve
-1e-07
-20.9876543209877 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 45 0 0 1.23456790123457
-6 89 2 0
-6 90 1 0
-0
-
-0101000
-+2988 0 -2986 0 *
-Ve
-1e-07
-22.2222222222222 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 46 0 0 1.23456790123457
-6 91 2 0
-6 92 1 0
-0
-
-0101000
-+2986 0 -2984 0 *
-Ve
-1e-07
-21.6049382716049 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 47 0 0 1.23456790123457
-6 93 2 0
-6 94 1 0
-0
-
-0101000
-+2984 0 -2982 0 *
-Ve
-1e-07
-22.2222222222222 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 48 0 0 1.23456790123457
-6 95 2 0
-6 96 1 0
-0
-
-0101000
-+2982 0 -2980 0 *
-Ve
-1e-07
-23.4567901234568 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 49 0 0 1.23456790123457
-6 97 2 0
-6 98 1 0
-0
-
-0101000
-+2980 0 -2978 0 *
-Ve
-1e-07
-24.0740740740741 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 50 0 0 1.23456790123457
-6 99 2 0
-6 100 1 0
-0
-
-0101000
-+2978 0 -2976 0 *
-Ve
-1e-07
-24.6913580246914 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 51 0 0 1.23456790123457
-6 101 2 0
-6 102 1 0
-0
-
-0101000
-+2976 0 -2974 0 *
-Ve
-1e-07
-25.9259259259259 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 52 0 0 1.23456790123457
-6 103 2 0
-6 104 1 0
-0
-
-0101000
-+2974 0 -2972 0 *
-Ve
-1e-07
-26.5432098765432 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 53 0 0 1.23456790123457
-6 105 2 0
-6 106 1 0
-0
-
-0101000
-+2972 0 -2970 0 *
-Ve
-1e-07
-25.9259259259259 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 54 0 0 1.23456790123457
-6 107 2 0
-6 108 1 0
-0
-
-0101000
-+2970 0 -2968 0 *
-Ve
-1e-07
-27.1604938271605 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 55 0 0 1.23456790123457
-6 109 2 0
-6 110 1 0
-0
-
-0101000
-+2968 0 -2966 0 *
-Ve
-1e-07
-27.7777777777778 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 56 0 0 1.23456790123457
-6 111 2 0
-6 112 1 0
-0
-
-0101000
-+2966 0 -2964 0 *
-Ve
-1e-07
-28.3950617283951 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 57 0 0 1.23456790123457
-6 113 2 0
-6 114 1 0
-0
-
-0101000
-+2964 0 -2962 0 *
-Ve
-1e-07
-29.6296296296296 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 58 0 0 1.23456790123457
-6 115 2 0
-6 116 1 0
-0
-
-0101000
-+2962 0 -2960 0 *
-Ve
-1e-07
-29.0123456790123 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 59 0 0 1.23456790123457
-6 117 2 0
-6 118 1 0
-0
-
-0101000
-+2960 0 -2958 0 *
-Ve
-1e-07
-29.6296296296296 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 60 0 0 1.23456790123457
-6 119 2 0
-6 120 1 0
-0
-
-0101000
-+2958 0 -2956 0 *
-Ve
-1e-07
-30.8641975308642 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 61 0 0 1.23456790123457
-6 121 2 0
-6 122 1 0
-0
-
-0101000
-+2956 0 -2954 0 *
-Ve
-1e-07
-31.4814814814815 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 62 0 0 1.23456790123457
-6 123 2 0
-6 124 1 0
-0
-
-0101000
-+2954 0 -2952 0 *
-Ve
-1e-07
-32.0987654320988 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 63 0 0 1.23456790123457
-6 125 2 0
-6 126 1 0
-0
-
-0101000
-+2952 0 -2950 0 *
-Ve
-1e-07
-33.3333333333333 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 64 0 0 1.23456790123457
-6 127 2 0
-6 128 1 0
-0
-
-0101000
-+2950 0 -2948 0 *
-Ve
-1e-07
-33.9506172839506 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 65 0 0 1.23456790123457
-6 129 2 0
-6 130 1 0
-0
-
-0101000
-+2948 0 -2946 0 *
-Ve
-1e-07
-33.3333333333333 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 66 0 0 1.23456790123457
-6 131 2 0
-6 132 1 0
-0
-
-0101000
-+2946 0 -2944 0 *
-Ve
-1e-07
-34.5679012345679 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 67 0 0 1.23456790123456
-6 133 2 0
-6 134 1 0
-0
-
-0101000
-+2944 0 -2942 0 *
-Ve
-1e-07
-35.1851851851852 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 68 0 0 1.23456790123457
-6 135 2 0
-6 136 1 0
-0
-
-0101000
-+2942 0 -2940 0 *
-Ve
-1e-07
-34.5679012345679 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 69 0 0 1.23456790123457
-6 137 2 0
-6 138 1 0
-0
-
-0101000
-+2940 0 -2938 0 *
-Ve
-1e-07
-33.3333333333333 -4.27666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 70 0 0 1.23456790123456
-6 139 2 0
-6 140 1 0
-0
-
-0101000
-+2938 0 -2936 0 *
-Ve
-1e-07
-33.9506172839506 -5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 71 0 0 1.23456790123457
-6 141 2 0
-6 142 1 0
-0
-
-0101000
-+2936 0 -2934 0 *
-Ve
-1e-07
-33.3333333333333 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 72 0 0 1.23456790123457
-6 143 2 0
-6 144 1 0
-0
-
-0101000
-+2934 0 -2932 0 *
-Ve
-1e-07
-34.5679012345679 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 73 0 0 1.23456790123457
-6 145 2 0
-6 146 1 0
-0
-
-0101000
-+2932 0 -2930 0 *
-Ve
-1e-07
-35.1851851851852 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 74 0 0 1.23456790123457
-6 147 2 0
-6 148 1 0
-0
-
-0101000
-+2930 0 -2928 0 *
-Ve
-1e-07
-35.8024691358025 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 75 0 0 1.23456790123457
-6 149 2 0
-6 150 1 0
-0
-
-0101000
-+2928 0 -2926 0 *
-Ve
-1e-07
-37.037037037037 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 76 0 0 1.23456790123457
-6 151 2 0
-6 152 1 0
-0
-
-0101000
-+2926 0 -2924 0 *
-Ve
-1e-07
-37.6543209876543 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 77 0 0 1.23456790123457
-6 153 2 0
-6 154 1 0
-0
-
-0101000
-+2924 0 -2922 0 *
-Ve
-1e-07
-37.037037037037 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 78 0 0 1.23456790123457
-6 155 2 0
-6 156 1 0
-0
-
-0101000
-+2922 0 -2920 0 *
-Ve
-1e-07
-38.2716049382716 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 79 0 0 1.23456790123457
-6 157 2 0
-6 158 1 0
-0
-
-0101000
-+2920 0 -2918 0 *
-Ve
-1e-07
-38.8888888888889 -9.62250448649376 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 80 0 0 1.23456790123457
-6 159 2 0
-6 160 1 0
-0
-
-0101000
-+2918 0 -2916 0 *
-Ve
-1e-07
-38.2716049382716 -10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 81 0 0 1.23456790123457
-6 161 2 0
-6 162 1 0
-0
-
-0101000
-+2916 0 -2914 0 *
-Ve
-1e-07
-37.037037037037 -10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 82 0 0 1.23456790123457
-6 163 2 0
-6 164 1 0
-0
-
-0101000
-+2914 0 -2912 0 *
-Ve
-1e-07
-37.6543209876543 -11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 83 0 0 1.23456790123457
-6 165 2 0
-6 166 1 0
-0
-
-0101000
-+2912 0 -2910 0 *
-Ve
-1e-07
-37.037037037037 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 84 0 0 1.23456790123457
-6 167 2 0
-6 168 1 0
-0
-
-0101000
-+2910 0 -2908 0 *
-Ve
-1e-07
-35.8024691358025 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 85 0 0 1.23456790123457
-6 169 2 0
-6 170 1 0
-0
-
-0101000
-+2908 0 -2906 0 *
-Ve
-1e-07
-35.1851851851852 -11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 86 0 0 1.23456790123457
-6 171 2 0
-6 172 1 0
-0
-
-0101000
-+2906 0 -2904 0 *
-Ve
-1e-07
-34.5679012345679 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 87 0 0 1.23456790123457
-6 173 2 0
-6 174 1 0
-0
-
-0101000
-+2904 0 -2902 0 *
-Ve
-1e-07
-33.3333333333333 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 88 0 0 1.23456790123457
-6 175 2 0
-6 176 1 0
-0
-
-0101000
-+2902 0 -2900 0 *
-Ve
-1e-07
-33.9506172839506 -13.8991731471577 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 89 0 0 1.23456790123457
-6 177 2 0
-6 178 1 0
-0
-
-0101000
-+2900 0 -2898 0 *
-Ve
-1e-07
-33.3333333333333 -14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 90 0 0 1.23456790123456
-6 179 2 0
-6 180 1 0
-0
-
-0101000
-+2898 0 -2896 0 *
-Ve
-1e-07
-34.5679012345679 -14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 91 0 0 1.23456790123456
-6 181 2 0
-6 182 1 0
-0
-
-0101000
-+2896 0 -2894 0 *
-Ve
-1e-07
-35.1851851851852 -16.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 92 0 0 1.23456790123457
-6 183 2 0
-6 184 1 0
-0
-
-0101000
-+2894 0 -2892 0 *
-Ve
-1e-07
-34.5679012345679 -17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 93 0 0 1.23456790123457
-6 185 2 0
-6 186 1 0
-0
-
-0101000
-+2892 0 -2890 0 *
-Ve
-1e-07
-33.3333333333333 -17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 94 0 0 1.23456790123456
-6 187 2 0
-6 188 1 0
-0
-
-0101000
-+2890 0 -2888 0 *
-Ve
-1e-07
-33.9506172839506 -18.1758418078216 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 95 0 0 1.23456790123457
-6 189 2 0
-6 190 1 0
-0
-
-0101000
-+2888 0 -2886 0 *
-Ve
-1e-07
-33.3333333333333 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 96 0 0 1.23456790123457
-6 191 2 0
-6 192 1 0
-0
-
-0101000
-+2886 0 -2884 0 *
-Ve
-1e-07
-34.5679012345679 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 97 0 0 1.23456790123457
-6 193 2 0
-6 194 1 0
-0
-
-0101000
-+2884 0 -2882 0 *
-Ve
-1e-07
-35.1851851851852 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 98 0 0 1.23456790123457
-6 195 2 0
-6 196 1 0
-0
-
-0101000
-+2882 0 -2880 0 *
-Ve
-1e-07
-35.8024691358025 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 99 0 0 1.23456790123457
-6 197 2 0
-6 198 1 0
-0
-
-0101000
-+2880 0 -2878 0 *
-Ve
-1e-07
-37.037037037037 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 100 0 0 1.23456790123457
-6 199 2 0
-6 200 1 0
-0
-
-0101000
-+2878 0 -2876 0 *
-Ve
-1e-07
-37.6543209876543 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 101 0 0 1.23456790123457
-6 201 2 0
-6 202 1 0
-0
-
-0101000
-+2876 0 -2874 0 *
-Ve
-1e-07
-37.037037037037 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 102 0 0 1.23456790123457
-6 203 2 0
-6 204 1 0
-0
-
-0101000
-+2874 0 -2872 0 *
-Ve
-1e-07
-38.2716049382716 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 103 0 0 1.23456790123456
-6 205 2 0
-6 206 1 0
-0
-
-0101000
-+2872 0 -2870 0 *
-Ve
-1e-07
-38.8888888888889 -22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 104 0 0 1.23456790123457
-6 207 2 0
-6 208 1 0
-0
-
-0101000
-+2870 0 -2868 0 *
-Ve
-1e-07
-39.5061728395062 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 105 0 0 1.23456790123457
-6 209 2 0
-6 210 1 0
-0
-
-0101000
-+2868 0 -2866 0 *
-Ve
-1e-07
-40.7407407407407 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 106 0 0 1.23456790123456
-6 211 2 0
-6 212 1 0
-0
-
-0101000
-+2866 0 -2864 0 *
-Ve
-1e-07
-40.1234567901235 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 107 0 0 1.23456790123457
-6 213 2 0
-6 214 1 0
-0
-
-0101000
-+2864 0 -2862 0 *
-Ve
-1e-07
-40.7407407407407 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 108 0 0 1.23456790123457
-6 215 2 0
-6 216 1 0
-0
-
-0101000
-+2862 0 -2860 0 *
-Ve
-1e-07
-41.9753086419753 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 109 0 0 1.23456790123457
-6 217 2 0
-6 218 1 0
-0
-
-0101000
-+2860 0 -2858 0 *
-Ve
-1e-07
-42.5925925925926 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 110 0 0 1.23456790123457
-6 219 2 0
-6 220 1 0
-0
-
-0101000
-+2858 0 -2856 0 *
-Ve
-1e-07
-43.2098765432099 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 111 0 0 1.23456790123457
-6 221 2 0
-6 222 1 0
-0
-
-0101000
-+2856 0 -2854 0 *
-Ve
-1e-07
-44.4444444444444 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 112 0 0 1.23456790123457
-6 223 2 0
-6 224 1 0
-0
-
-0101000
-+2854 0 -2852 0 *
-Ve
-1e-07
-45.0617283950617 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 113 0 0 1.23456790123457
-6 225 2 0
-6 226 1 0
-0
-
-0101000
-+2852 0 -2850 0 *
-Ve
-1e-07
-44.4444444444444 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 114 0 0 1.23456790123457
-6 227 2 0
-6 228 1 0
-0
-
-0101000
-+2850 0 -2848 0 *
-Ve
-1e-07
-45.679012345679 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 115 0 0 1.23456790123457
-6 229 2 0
-6 230 1 0
-0
-
-0101000
-+2848 0 -2846 0 *
-Ve
-1e-07
-46.2962962962963 -22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 116 0 0 1.23456790123457
-6 231 2 0
-6 232 1 0
-0
-
-0101000
-+2846 0 -2844 0 *
-Ve
-1e-07
-45.679012345679 -23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 117 0 0 1.23456790123457
-6 233 2 0
-6 234 1 0
-0
-
-0101000
-+2844 0 -2842 0 *
-Ve
-1e-07
-44.4444444444444 -23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 118 0 0 1.23456790123457
-6 235 2 0
-6 236 1 0
-0
-
-0101000
-+2842 0 -2840 0 *
-Ve
-1e-07
-45.0617283950617 -24.5908447988174 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 119 0 0 1.23456790123457
-6 237 2 0
-6 238 1 0
-0
-
-0101000
-+2840 0 -2838 0 *
-Ve
-1e-07
-44.4444444444444 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 120 0 0 1.23456790123457
-6 239 2 0
-6 240 1 0
-0
-
-0101000
-+2838 0 -2836 0 *
-Ve
-1e-07
-45.679012345679 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 121 0 0 1.23456790123457
-6 241 2 0
-6 242 1 0
-0
-
-0101000
-+2836 0 -2834 0 *
-Ve
-1e-07
-46.2962962962963 -26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 122 0 0 1.23456790123457
-6 243 2 0
-6 244 1 0
-0
-
-0101000
-+2834 0 -2832 0 *
-Ve
-1e-07
-46.9135802469136 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 123 0 0 1.23456790123457
-6 245 2 0
-6 246 1 0
-0
-
-0101000
-+2832 0 -2830 0 *
-Ve
-1e-07
-48.1481481481481 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 124 0 0 1.23456790123457
-6 247 2 0
-6 248 1 0
-0
-
-0101000
-+2830 0 -2828 0 *
-Ve
-1e-07
-48.7654320987654 -26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 125 0 0 1.23456790123457
-6 249 2 0
-6 250 1 0
-0
-
-0101000
-+2828 0 -2826 0 *
-Ve
-1e-07
-48.1481481481482 -27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 126 0 0 1.23456790123457
-6 251 2 0
-6 252 1 0
-0
-
-0101000
-+2826 0 -2824 0 *
-Ve
-1e-07
-49.3827160493827 -27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 127 0 0 1.23456790123456
-6 253 2 0
-6 254 1 0
-0
-
-0101000
-+2824 0 -2822 0 *
-Ve
-1e-07
-50 -28.8675134594813 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 128 0 0 1.23456790123457
-6 255 2 0
-6 256 1 0
-0
-
-0101000
-+2822 0 -2820 0 *
-Ve
-1e-07
-50.6172839506173 -27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 129 0 0 1.23456790123457
-6 257 2 0
-6 258 1 0
-0
-
-0101000
-+2820 0 -2818 0 *
-Ve
-1e-07
-51.8518518518518 -27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 130 0 0 1.23456790123456
-6 259 2 0
-6 260 1 0
-0
-
-0101000
-+2818 0 -2816 0 *
-Ve
-1e-07
-51.2345679012346 -26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 131 0 0 1.23456790123457
-6 261 2 0
-6 262 1 0
-0
-
-0101000
-+2816 0 -2814 0 *
-Ve
-1e-07
-51.8518518518519 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 132 0 0 1.23456790123457
-6 263 2 0
-6 264 1 0
-0
-
-0101000
-+2814 0 -2812 0 *
-Ve
-1e-07
-53.0864197530864 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 133 0 0 1.23456790123457
-6 265 2 0
-6 266 1 0
-0
-
-0101000
-+2812 0 -2810 0 *
-Ve
-1e-07
-53.7037037037037 -26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 134 0 0 1.23456790123457
-6 267 2 0
-6 268 1 0
-0
-
-0101000
-+2810 0 -2808 0 *
-Ve
-1e-07
-54.320987654321 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 135 0 0 1.23456790123457
-6 269 2 0
-6 270 1 0
-0
-
-0101000
-+2808 0 -2806 0 *
-Ve
-1e-07
-55.5555555555556 -25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 136 0 0 1.23456790123457
-6 271 2 0
-6 272 1 0
-0
-
-0101000
-+2806 0 -2804 0 *
-Ve
-1e-07
-54.9382716049383 -24.5908447988174 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 137 0 0 1.23456790123457
-6 273 2 0
-6 274 1 0
-0
-
-0101000
-+2804 0 -2802 0 *
-Ve
-1e-07
-55.5555555555556 -23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 138 0 0 1.23456790123457
-6 275 2 0
-6 276 1 0
-0
-
-0101000
-+2802 0 -2800 0 *
-Ve
-1e-07
-54.320987654321 -23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 139 0 0 1.23456790123457
-6 277 2 0
-6 278 1 0
-0
-
-0101000
-+2800 0 -2798 0 *
-Ve
-1e-07
-53.7037037037037 -22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 140 0 0 1.23456790123457
-6 279 2 0
-6 280 1 0
-0
-
-0101000
-+2798 0 -2796 0 *
-Ve
-1e-07
-54.320987654321 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 141 0 0 1.23456790123457
-6 281 2 0
-6 282 1 0
-0
-
-0101000
-+2796 0 -2794 0 *
-Ve
-1e-07
-55.5555555555556 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 142 0 0 1.23456790123457
-6 283 2 0
-6 284 1 0
-0
-
-0101000
-+2794 0 -2792 0 *
-Ve
-1e-07
-54.9382716049383 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 143 0 0 1.23456790123457
-6 285 2 0
-6 286 1 0
-0
-
-0101000
-+2792 0 -2790 0 *
-Ve
-1e-07
-55.5555555555556 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 144 0 0 1.23456790123457
-6 287 2 0
-6 288 1 0
-0
-
-0101000
-+2790 0 -2788 0 *
-Ve
-1e-07
-56.7901234567901 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 145 0 0 1.23456790123457
-6 289 2 0
-6 290 1 0
-0
-
-0101000
-+2788 0 -2786 0 *
-Ve
-1e-07
-57.4074074074074 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 146 0 0 1.23456790123457
-6 291 2 0
-6 292 1 0
-0
-
-0101000
-+2786 0 -2784 0 *
-Ve
-1e-07
-58.0246913580247 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 147 0 0 1.23456790123457
-6 293 2 0
-6 294 1 0
-0
-
-0101000
-+2784 0 -2782 0 *
-Ve
-1e-07
-59.2592592592593 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 148 0 0 1.23456790123457
-6 295 2 0
-6 296 1 0
-0
-
-0101000
-+2782 0 -2780 0 *
-Ve
-1e-07
-59.8765432098765 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 149 0 0 1.23456790123457
-6 297 2 0
-6 298 1 0
-0
-
-0101000
-+2780 0 -2778 0 *
-Ve
-1e-07
-59.2592592592593 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 150 0 0 1.23456790123457
-6 299 2 0
-6 300 1 0
-0
-
-0101000
-+2778 0 -2776 0 *
-Ve
-1e-07
-60.4938271604938 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 151 0 0 1.23456790123456
-6 301 2 0
-6 302 1 0
-0
-
-0101000
-+2776 0 -2774 0 *
-Ve
-1e-07
-61.1111111111111 -22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 152 0 0 1.23456790123457
-6 303 2 0
-6 304 1 0
-0
-
-0101000
-+2774 0 -2772 0 *
-Ve
-1e-07
-61.7283950617284 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 153 0 0 1.23456790123457
-6 305 2 0
-6 306 1 0
-0
-
-0101000
-+2772 0 -2770 0 *
-Ve
-1e-07
-62.962962962963 -21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 154 0 0 1.23456790123456
-6 307 2 0
-6 308 1 0
-0
-
-0101000
-+2770 0 -2768 0 *
-Ve
-1e-07
-62.3456790123457 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 155 0 0 1.23456790123457
-6 309 2 0
-6 310 1 0
-0
-
-0101000
-+2768 0 -2766 0 *
-Ve
-1e-07
-62.962962962963 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 156 0 0 1.23456790123457
-6 311 2 0
-6 312 1 0
-0
-
-0101000
-+2766 0 -2764 0 *
-Ve
-1e-07
-64.1975308641975 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 157 0 0 1.23456790123456
-6 313 2 0
-6 314 1 0
-0
-
-0101000
-+2764 0 -2762 0 *
-Ve
-1e-07
-64.8148148148148 -20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 158 0 0 1.23456790123457
-6 315 2 0
-6 316 1 0
-0
-
-0101000
-+2762 0 -2760 0 *
-Ve
-1e-07
-65.4320987654321 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 159 0 0 1.23456790123456
-6 317 2 0
-6 318 1 0
-0
-
-0101000
-+2760 0 -2758 0 *
-Ve
-1e-07
-66.6666666666667 -19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 160 0 0 1.23456790123457
-6 319 2 0
-6 320 1 0
-0
-
-0101000
-+2758 0 -2756 0 *
-Ve
-1e-07
-66.0493827160494 -18.1758418078216 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 161 0 0 1.23456790123457
-6 321 2 0
-6 322 1 0
-0
-
-0101000
-+2756 0 -2754 0 *
-Ve
-1e-07
-66.6666666666667 -17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 162 0 0 1.23456790123456
-6 323 2 0
-6 324 1 0
-0
-
-0101000
-+2754 0 -2752 0 *
-Ve
-1e-07
-65.4320987654321 -17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 163 0 0 1.23456790123457
-6 325 2 0
-6 326 1 0
-0
-
-0101000
-+2752 0 -2750 0 *
-Ve
-1e-07
-64.8148148148148 -16.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 164 0 0 1.23456790123457
-6 327 2 0
-6 328 1 0
-0
-
-0101000
-+2750 0 -2748 0 *
-Ve
-1e-07
-65.4320987654321 -14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 165 0 0 1.23456790123456
-6 329 2 0
-6 330 1 0
-0
-
-0101000
-+2748 0 -2746 0 *
-Ve
-1e-07
-66.6666666666667 -14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 166 0 0 1.23456790123457
-6 331 2 0
-6 332 1 0
-0
-
-0101000
-+2746 0 -2744 0 *
-Ve
-1e-07
-66.0493827160494 -13.8991731471577 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 167 0 0 1.23456790123456
-6 333 2 0
-6 334 1 0
-0
-
-0101000
-+2744 0 -2742 0 *
-Ve
-1e-07
-66.6666666666667 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 168 0 0 1.23456790123456
-6 335 2 0
-6 336 1 0
-0
-
-0101000
-+2742 0 -2740 0 *
-Ve
-1e-07
-65.4320987654321 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 169 0 0 1.23456790123457
-6 337 2 0
-6 338 1 0
-0
-
-0101000
-+2740 0 -2738 0 *
-Ve
-1e-07
-64.8148148148148 -11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 170 0 0 1.23456790123457
-6 339 2 0
-6 340 1 0
-0
-
-0101000
-+2738 0 -2736 0 *
-Ve
-1e-07
-64.1975308641975 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 171 0 0 1.23456790123457
-6 341 2 0
-6 342 1 0
-0
-
-0101000
-+2736 0 -2734 0 *
-Ve
-1e-07
-62.962962962963 -12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 172 0 0 1.23456790123456
-6 343 2 0
-6 344 1 0
-0
-
-0101000
-+2734 0 -2732 0 *
-Ve
-1e-07
-62.3456790123457 -11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 173 0 0 1.23456790123457
-6 345 2 0
-6 346 1 0
-0
-
-0101000
-+2732 0 -2730 0 *
-Ve
-1e-07
-62.962962962963 -10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 174 0 0 1.23456790123456
-6 347 2 0
-6 348 1 0
-0
-
-0101000
-+2730 0 -2728 0 *
-Ve
-1e-07
-61.7283950617284 -10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 175 0 0 1.23456790123456
-6 349 2 0
-6 350 1 0
-0
-
-0101000
-+2728 0 -2726 0 *
-Ve
-1e-07
-61.1111111111111 -9.62250448649376 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 176 0 0 1.23456790123457
-6 351 2 0
-6 352 1 0
-0
-
-0101000
-+2726 0 -2724 0 *
-Ve
-1e-07
-61.7283950617284 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 177 0 0 1.23456790123457
-6 353 2 0
-6 354 1 0
-0
-
-0101000
-+2724 0 -2722 0 *
-Ve
-1e-07
-62.962962962963 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 178 0 0 1.23456790123456
-6 355 2 0
-6 356 1 0
-0
-
-0101000
-+2722 0 -2720 0 *
-Ve
-1e-07
-62.3456790123457 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 179 0 0 1.23456790123457
-6 357 2 0
-6 358 1 0
-0
-
-0101000
-+2720 0 -2718 0 *
-Ve
-1e-07
-62.962962962963 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 180 0 0 1.23456790123457
-6 359 2 0
-6 360 1 0
-0
-
-0101000
-+2718 0 -2716 0 *
-Ve
-1e-07
-64.1975308641975 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 181 0 0 1.23456790123456
-6 361 2 0
-6 362 1 0
-0
-
-0101000
-+2716 0 -2714 0 *
-Ve
-1e-07
-64.8148148148148 -7.48417015616181 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 182 0 0 1.23456790123457
-6 363 2 0
-6 364 1 0
-0
-
-0101000
-+2714 0 -2712 0 *
-Ve
-1e-07
-65.4320987654321 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 183 0 0 1.23456790123456
-6 365 2 0
-6 366 1 0
-0
-
-0101000
-+2712 0 -2710 0 *
-Ve
-1e-07
-66.6666666666667 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 184 0 0 1.23456790123457
-6 367 2 0
-6 368 1 0
-0
-
-0101000
-+2710 0 -2708 0 *
-Ve
-1e-07
-66.0493827160494 -5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 185 0 0 1.23456790123456
-6 369 2 0
-6 370 1 0
-0
-
-0101000
-+2708 0 -2706 0 *
-Ve
-1e-07
-66.6666666666667 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 186 0 0 1.23456790123456
-6 371 2 0
-6 372 1 0
-0
-
-0101000
-+2706 0 -2704 0 *
-Ve
-1e-07
-65.4320987654321 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 187 0 0 1.23456790123457
-6 373 2 0
-6 374 1 0
-0
-
-0101000
-+2704 0 -2702 0 *
-Ve
-1e-07
-64.8148148148148 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 188 0 0 1.23456790123457
-6 375 2 0
-6 376 1 0
-0
-
-0101000
-+2702 0 -2700 0 *
-Ve
-1e-07
-65.4320987654321 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 189 0 0 1.23456790123456
-6 377 2 0
-6 378 1 0
-0
-
-0101000
-+2700 0 -2698 0 *
-Ve
-1e-07
-66.6666666666667 -2.13833433033194 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 190 0 0 1.23456790123457
-6 379 2 0
-6 380 1 0
-0
-
-0101000
-+2698 0 -2696 0 *
-Ve
-1e-07
-66.0493827160494 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 191 0 0 1.23456790123456
-6 381 2 0
-6 382 1 0
-0
-
-0101000
-+2696 0 -2694 0 *
-Ve
-1e-07
-66.6666666666667 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 192 0 0 1.23456790123456
-6 383 2 0
-6 384 1 0
-0
-
-0101000
-+2694 0 -2692 0 *
-Ve
-1e-07
-67.9012345679012 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 193 0 0 1.23456790123457
-6 385 2 0
-6 386 1 0
-0
-
-0101000
-+2692 0 -2690 0 *
-Ve
-1e-07
-68.5185185185185 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 194 0 0 1.23456790123457
-6 387 2 0
-6 388 1 0
-0
-
-0101000
-+2690 0 -2688 0 *
-Ve
-1e-07
-69.1358024691358 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 195 0 0 1.23456790123457
-6 389 2 0
-6 390 1 0
-0
-
-0101000
-+2688 0 -2686 0 *
-Ve
-1e-07
-70.3703703703704 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 196 0 0 1.23456790123457
-6 391 2 0
-6 392 1 0
-0
-
-0101000
-+2686 0 -2684 0 *
-Ve
-1e-07
-70.9876543209877 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 197 0 0 1.23456790123457
-6 393 2 0
-6 394 1 0
-0
-
-0101000
-+2684 0 -2682 0 *
-Ve
-1e-07
-70.3703703703704 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 198 0 0 1.23456790123456
-6 395 2 0
-6 396 1 0
-0
-
-0101000
-+2682 0 -2680 0 *
-Ve
-1e-07
-71.604938271605 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 199 0 0 1.23456790123457
-6 397 2 0
-6 398 1 0
-0
-
-0101000
-+2680 0 -2678 0 *
-Ve
-1e-07
-72.2222222222222 -3.20750149549793 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 200 0 0 1.23456790123457
-6 399 2 0
-6 400 1 0
-0
-
-0101000
-+2678 0 -2676 0 *
-Ve
-1e-07
-72.8395061728395 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 201 0 0 1.23456790123457
-6 401 2 0
-6 402 1 0
-0
-
-0101000
-+2676 0 -2674 0 *
-Ve
-1e-07
-74.0740740740741 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 202 0 0 1.23456790123457
-6 403 2 0
-6 404 1 0
-0
-
-0101000
-+2674 0 -2672 0 *
-Ve
-1e-07
-73.4567901234568 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 203 0 0 1.23456790123456
-6 405 2 0
-6 406 1 0
-0
-
-0101000
-+2672 0 -2670 0 *
-Ve
-1e-07
-74.0740740740741 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 204 0 0 1.23456790123457
-6 407 2 0
-6 408 1 0
-0
-
-0101000
-+2670 0 -2668 0 *
-Ve
-1e-07
-75.3086419753086 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 205 0 0 1.23456790123457
-6 409 2 0
-6 410 1 0
-0
-
-0101000
-+2668 0 -2666 0 *
-Ve
-1e-07
-75.9259259259259 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 206 0 0 1.23456790123457
-6 411 2 0
-6 412 1 0
-0
-
-0101000
-+2666 0 -2664 0 *
-Ve
-1e-07
-76.5432098765432 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 207 0 0 1.23456790123457
-6 413 2 0
-6 414 1 0
-0
-
-0101000
-+2664 0 -2662 0 *
-Ve
-1e-07
-77.7777777777778 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 208 0 0 1.23456790123457
-6 415 2 0
-6 416 1 0
-0
-
-0101000
-+2662 0 -2660 0 *
-Ve
-1e-07
-78.3950617283951 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 209 0 0 1.23456790123457
-6 417 2 0
-6 418 1 0
-0
-
-0101000
-+2660 0 -2658 0 *
-Ve
-1e-07
-77.7777777777778 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 210 0 0 1.23456790123456
-6 419 2 0
-6 420 1 0
-0
-
-0101000
-+2658 0 -2656 0 *
-Ve
-1e-07
-79.0123456790124 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 211 0 0 1.23456790123457
-6 421 2 0
-6 422 1 0
-0
-
-0101000
-+2656 0 -2654 0 *
-Ve
-1e-07
-79.6296296296296 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 212 0 0 1.23456790123457
-6 423 2 0
-6 424 1 0
-0
-
-0101000
-+2654 0 -2652 0 *
-Ve
-1e-07
-79.0123456790124 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 213 0 0 1.23456790123457
-6 425 2 0
-6 426 1 0
-0
-
-0101000
-+2652 0 -2650 0 *
-Ve
-1e-07
-77.7777777777778 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 214 0 0 1.23456790123456
-6 427 2 0
-6 428 1 0
-0
-
-0101000
-+2650 0 -2648 0 *
-Ve
-1e-07
-78.3950617283951 -5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 215 0 0 1.23456790123456
-6 429 2 0
-6 430 1 0
-0
-
-0101000
-+2648 0 -2646 0 *
-Ve
-1e-07
-77.7777777777778 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 216 0 0 1.23456790123456
-6 431 2 0
-6 432 1 0
-0
-
-0101000
-+2646 0 -2644 0 *
-Ve
-1e-07
-79.0123456790124 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 217 0 0 1.23456790123457
-6 433 2 0
-6 434 1 0
-0
-
-0101000
-+2644 0 -2642 0 *
-Ve
-1e-07
-79.6296296296296 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 218 0 0 1.23456790123457
-6 435 2 0
-6 436 1 0
-0
-
-0101000
-+2642 0 -2640 0 *
-Ve
-1e-07
-80.2469135802469 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 219 0 0 1.23456790123457
-6 437 2 0
-6 438 1 0
-0
-
-0101000
-+2640 0 -2638 0 *
-Ve
-1e-07
-81.4814814814815 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 220 0 0 1.23456790123457
-6 439 2 0
-6 440 1 0
-0
-
-0101000
-+2638 0 -2636 0 *
-Ve
-1e-07
-82.0987654320988 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 221 0 0 1.23456790123456
-6 441 2 0
-6 442 1 0
-0
-
-0101000
-+2636 0 -2634 0 *
-Ve
-1e-07
-81.4814814814815 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 222 0 0 1.23456790123456
-6 443 2 0
-6 444 1 0
-0
-
-0101000
-+2634 0 -2632 0 *
-Ve
-1e-07
-82.7160493827161 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 223 0 0 1.23456790123457
-6 445 2 0
-6 446 1 0
-0
-
-0101000
-+2632 0 -2630 0 *
-Ve
-1e-07
-83.3333333333333 -9.62250448649377 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 224 0 0 1.23456790123456
-6 447 2 0
-6 448 1 0
-0
-
-0101000
-+2630 0 -2628 0 *
-Ve
-1e-07
-83.9506172839506 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 225 0 0 1.23456790123456
-6 449 2 0
-6 450 1 0
-0
-
-0101000
-+2628 0 -2626 0 *
-Ve
-1e-07
-85.1851851851852 -8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 226 0 0 1.23456790123457
-6 451 2 0
-6 452 1 0
-0
-
-0101000
-+2626 0 -2624 0 *
-Ve
-1e-07
-84.5679012345679 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 227 0 0 1.23456790123456
-6 453 2 0
-6 454 1 0
-0
-
-0101000
-+2624 0 -2622 0 *
-Ve
-1e-07
-85.1851851851852 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 228 0 0 1.23456790123456
-6 455 2 0
-6 456 1 0
-0
-
-0101000
-+2622 0 -2620 0 *
-Ve
-1e-07
-86.4197530864198 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 229 0 0 1.23456790123457
-6 457 2 0
-6 458 1 0
-0
-
-0101000
-+2620 0 -2618 0 *
-Ve
-1e-07
-87.037037037037 -7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 230 0 0 1.23456790123457
-6 459 2 0
-6 460 1 0
-0
-
-0101000
-+2618 0 -2616 0 *
-Ve
-1e-07
-87.6543209876543 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 231 0 0 1.23456790123457
-6 461 2 0
-6 462 1 0
-0
-
-0101000
-+2616 0 -2614 0 *
-Ve
-1e-07
-88.8888888888889 -6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 232 0 0 1.23456790123457
-6 463 2 0
-6 464 1 0
-0
-
-0101000
-+2614 0 -2612 0 *
-Ve
-1e-07
-88.2716049382716 -5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 233 0 0 1.23456790123456
-6 465 2 0
-6 466 1 0
-0
-
-0101000
-+2612 0 -2610 0 *
-Ve
-1e-07
-88.8888888888889 -4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 234 0 0 1.23456790123456
-6 467 2 0
-6 468 1 0
-0
-
-0101000
-+2610 0 -2608 0 *
-Ve
-1e-07
-87.6543209876543 -4.27666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 235 0 0 1.23456790123457
-6 469 2 0
-6 470 1 0
-0
-
-0101000
-+2608 0 -2606 0 *
-Ve
-1e-07
-87.037037037037 -3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 236 0 0 1.23456790123456
-6 471 2 0
-6 472 1 0
-0
-
-0101000
-+2606 0 -2604 0 *
-Ve
-1e-07
-87.6543209876543 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 237 0 0 1.23456790123457
-6 473 2 0
-6 474 1 0
-0
-
-0101000
-+2604 0 -2602 0 *
-Ve
-1e-07
-88.8888888888889 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 238 0 0 1.23456790123457
-6 475 2 0
-6 476 1 0
-0
-
-0101000
-+2602 0 -2600 0 *
-Ve
-1e-07
-88.2716049382716 -1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 239 0 0 1.23456790123456
-6 477 2 0
-6 478 1 0
-0
-
-0101000
-+2600 0 -2598 0 *
-Ve
-1e-07
-88.8888888888889 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 240 0 0 1.23456790123457
-6 479 2 0
-6 480 1 0
-0
-
-0101000
-+2598 0 -2596 0 *
-Ve
-1e-07
-90.1234567901235 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 241 0 0 1.23456790123457
-6 481 2 0
-6 482 1 0
-0
-
-0101000
-+2596 0 -2594 0 *
-Ve
-1e-07
-90.7407407407407 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 242 0 0 1.23456790123457
-6 483 2 0
-6 484 1 0
-0
-
-0101000
-+2594 0 -2592 0 *
-Ve
-1e-07
-91.358024691358 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 243 0 0 1.23456790123457
-6 485 2 0
-6 486 1 0
-0
-
-0101000
-+2592 0 -2590 0 *
-Ve
-1e-07
-92.5925925925926 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 244 0 0 1.23456790123457
-6 487 2 0
-6 488 1 0
-0
-
-0101000
-+2590 0 -2588 0 *
-Ve
-1e-07
-93.2098765432099 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 245 0 0 1.23456790123457
-6 489 2 0
-6 490 1 0
-0
-
-0101000
-+2588 0 -2586 0 *
-Ve
-1e-07
-92.5925925925926 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 246 0 0 1.23456790123456
-6 491 2 0
-6 492 1 0
-0
-
-0101000
-+2586 0 -2584 0 *
-Ve
-1e-07
-93.8271604938272 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 247 0 0 1.23456790123457
-6 493 2 0
-6 494 1 0
-0
-
-0101000
-+2584 0 -2582 0 *
-Ve
-1e-07
-94.4444444444444 -3.20750149549793 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 248 0 0 1.23456790123457
-6 495 2 0
-6 496 1 0
-0
-
-0101000
-+2582 0 -2580 0 *
-Ve
-1e-07
-95.0617283950617 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 249 0 0 1.23456790123457
-6 497 2 0
-6 498 1 0
-0
-
-0101000
-+2580 0 -2578 0 *
-Ve
-1e-07
-96.2962962962963 -2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 250 0 0 1.23456790123457
-6 499 2 0
-6 500 1 0
-0
-
-0101000
-+2578 0 -2576 0 *
-Ve
-1e-07
-95.679012345679 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 251 0 0 1.23456790123456
-6 501 2 0
-6 502 1 0
-0
-
-0101000
-+2576 0 -2574 0 *
-Ve
-1e-07
-96.2962962962963 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 252 0 0 1.23456790123457
-6 503 2 0
-6 504 1 0
-0
-
-0101000
-+2574 0 -2572 0 *
-Ve
-1e-07
-97.5308641975309 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 253 0 0 1.23456790123457
-6 505 2 0
-6 506 1 0
-0
-
-0101000
-+2572 0 -2570 0 *
-Ve
-1e-07
-98.1481481481482 -1.06916716516598 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 254 0 0 1.23456790123457
-6 507 2 0
-6 508 1 0
-0
-
-0101000
-+2570 0 -2568 0 *
-Ve
-1e-07
-98.7654320987654 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 255 0 0 1.23456790123457
-6 509 2 0
-6 510 1 0
-0
-
-0101000
-+2568 0 -2566 0 *
-Ve
-1e-07
-100 0 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 256 0 0 1.23456790123457
-6 511 2 0
-6 512 1 0
-0
-
-0101000
-+2566 0 -2564 0 *
-Ve
-1e-07
-99.3827160493827 1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 257 0 0 1.23456790123456
-6 513 2 0
-6 514 1 0
-0
-
-0101000
-+2564 0 -2562 0 *
-Ve
-1e-07
-100 2.13833433033194 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 258 0 0 1.23456790123456
-6 515 2 0
-6 516 1 0
-0
-
-0101000
-+2562 0 -2560 0 *
-Ve
-1e-07
-98.7654320987654 2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 259 0 0 1.23456790123457
-6 517 2 0
-6 518 1 0
-0
-
-0101000
-+2560 0 -2558 0 *
-Ve
-1e-07
-98.1481481481482 3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 260 0 0 1.23456790123456
-6 519 2 0
-6 520 1 0
-0
-
-0101000
-+2558 0 -2556 0 *
-Ve
-1e-07
-98.7654320987654 4.27666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 261 0 0 1.23456790123456
-6 521 2 0
-6 522 1 0
-0
-
-0101000
-+2556 0 -2554 0 *
-Ve
-1e-07
-100 4.2766686606639 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 262 0 0 1.23456790123457
-6 523 2 0
-6 524 1 0
-0
-
-0101000
-+2554 0 -2552 0 *
-Ve
-1e-07
-99.3827160493827 5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 263 0 0 1.23456790123456
-6 525 2 0
-6 526 1 0
-0
-
-0101000
-+2552 0 -2550 0 *
-Ve
-1e-07
-100 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 264 0 0 1.23456790123456
-6 527 2 0
-6 528 1 0
-0
-
-0101000
-+2550 0 -2548 0 *
-Ve
-1e-07
-98.7654320987654 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 265 0 0 1.23456790123457
-6 529 2 0
-6 530 1 0
-0
-
-0101000
-+2548 0 -2546 0 *
-Ve
-1e-07
-98.1481481481482 7.48417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 266 0 0 1.23456790123457
-6 531 2 0
-6 532 1 0
-0
-
-0101000
-+2546 0 -2544 0 *
-Ve
-1e-07
-97.5308641975309 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 267 0 0 1.23456790123457
-6 533 2 0
-6 534 1 0
-0
-
-0101000
-+2544 0 -2542 0 *
-Ve
-1e-07
-96.2962962962963 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 268 0 0 1.23456790123457
-6 535 2 0
-6 536 1 0
-0
-
-0101000
-+2542 0 -2540 0 *
-Ve
-1e-07
-95.679012345679 7.48417015616181 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 269 0 0 1.23456790123456
-6 537 2 0
-6 538 1 0
-0
-
-0101000
-+2540 0 -2538 0 *
-Ve
-1e-07
-96.2962962962963 8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 270 0 0 1.23456790123456
-6 539 2 0
-6 540 1 0
-0
-
-0101000
-+2538 0 -2536 0 *
-Ve
-1e-07
-95.0617283950617 8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 271 0 0 1.23456790123457
-6 541 2 0
-6 542 1 0
-0
-
-0101000
-+2536 0 -2534 0 *
-Ve
-1e-07
-94.4444444444444 9.62250448649376 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 272 0 0 1.23456790123456
-6 543 2 0
-6 544 1 0
-0
-
-0101000
-+2534 0 -2532 0 *
-Ve
-1e-07
-95.0617283950617 10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 273 0 0 1.23456790123456
-6 545 2 0
-6 546 1 0
-0
-
-0101000
-+2532 0 -2530 0 *
-Ve
-1e-07
-96.2962962962963 10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 274 0 0 1.23456790123457
-6 547 2 0
-6 548 1 0
-0
-
-0101000
-+2530 0 -2528 0 *
-Ve
-1e-07
-95.679012345679 11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 275 0 0 1.23456790123456
-6 549 2 0
-6 550 1 0
-0
-
-0101000
-+2528 0 -2526 0 *
-Ve
-1e-07
-96.2962962962963 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 276 0 0 1.23456790123456
-6 551 2 0
-6 552 1 0
-0
-
-0101000
-+2526 0 -2524 0 *
-Ve
-1e-07
-97.5308641975309 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 277 0 0 1.23456790123457
-6 553 2 0
-6 554 1 0
-0
-
-0101000
-+2524 0 -2522 0 *
-Ve
-1e-07
-98.1481481481482 11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 278 0 0 1.23456790123457
-6 555 2 0
-6 556 1 0
-0
-
-0101000
-+2522 0 -2520 0 *
-Ve
-1e-07
-98.7654320987654 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 279 0 0 1.23456790123457
-6 557 2 0
-6 558 1 0
-0
-
-0101000
-+2520 0 -2518 0 *
-Ve
-1e-07
-100 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 280 0 0 1.23456790123457
-6 559 2 0
-6 560 1 0
-0
-
-0101000
-+2518 0 -2516 0 *
-Ve
-1e-07
-99.3827160493827 13.8991731471577 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 281 0 0 1.23456790123457
-6 561 2 0
-6 562 1 0
-0
-
-0101000
-+2516 0 -2514 0 *
-Ve
-1e-07
-100 14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 282 0 0 1.23456790123457
-6 563 2 0
-6 564 1 0
-0
-
-0101000
-+2514 0 -2512 0 *
-Ve
-1e-07
-98.7654320987654 14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 283 0 0 1.23456790123457
-6 565 2 0
-6 566 1 0
-0
-
-0101000
-+2512 0 -2510 0 *
-Ve
-1e-07
-98.1481481481481 16.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 284 0 0 1.23456790123457
-6 567 2 0
-6 568 1 0
-0
-
-0101000
-+2510 0 -2508 0 *
-Ve
-1e-07
-98.7654320987654 17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 285 0 0 1.23456790123457
-6 569 2 0
-6 570 1 0
-0
-
-0101000
-+2508 0 -2506 0 *
-Ve
-1e-07
-100 17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 286 0 0 1.23456790123457
-6 571 2 0
-6 572 1 0
-0
-
-0101000
-+2506 0 -2504 0 *
-Ve
-1e-07
-99.3827160493827 18.1758418078216 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 287 0 0 1.23456790123456
-6 573 2 0
-6 574 1 0
-0
-
-0101000
-+2504 0 -2502 0 *
-Ve
-1e-07
-100 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 288 0 0 1.23456790123457
-6 575 2 0
-6 576 1 0
-0
-
-0101000
-+2502 0 -2500 0 *
-Ve
-1e-07
-98.7654320987654 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 289 0 0 1.23456790123457
-6 577 2 0
-6 578 1 0
-0
-
-0101000
-+2500 0 -2498 0 *
-Ve
-1e-07
-98.1481481481481 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 290 0 0 1.23456790123457
-6 579 2 0
-6 580 1 0
-0
-
-0101000
-+2498 0 -2496 0 *
-Ve
-1e-07
-97.5308641975309 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 291 0 0 1.23456790123457
-6 581 2 0
-6 582 1 0
-0
-
-0101000
-+2496 0 -2494 0 *
-Ve
-1e-07
-96.2962962962963 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 292 0 0 1.23456790123457
-6 583 2 0
-6 584 1 0
-0
-
-0101000
-+2494 0 -2492 0 *
-Ve
-1e-07
-95.679012345679 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 293 0 0 1.23456790123457
-6 585 2 0
-6 586 1 0
-0
-
-0101000
-+2492 0 -2490 0 *
-Ve
-1e-07
-96.2962962962963 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 294 0 0 1.23456790123457
-6 587 2 0
-6 588 1 0
-0
-
-0101000
-+2490 0 -2488 0 *
-Ve
-1e-07
-95.0617283950617 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 295 0 0 1.23456790123456
-6 589 2 0
-6 590 1 0
-0
-
-0101000
-+2488 0 -2486 0 *
-Ve
-1e-07
-94.4444444444444 22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 296 0 0 1.23456790123457
-6 591 2 0
-6 592 1 0
-0
-
-0101000
-+2486 0 -2484 0 *
-Ve
-1e-07
-93.8271604938272 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 297 0 0 1.23456790123456
-6 593 2 0
-6 594 1 0
-0
-
-0101000
-+2484 0 -2482 0 *
-Ve
-1e-07
-92.5925925925926 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 298 0 0 1.23456790123457
-6 595 2 0
-6 596 1 0
-0
-
-0101000
-+2482 0 -2480 0 *
-Ve
-1e-07
-93.2098765432099 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 299 0 0 1.23456790123456
-6 597 2 0
-6 598 1 0
-0
-
-0101000
-+2480 0 -2478 0 *
-Ve
-1e-07
-92.5925925925926 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 300 0 0 1.23456790123456
-6 599 2 0
-6 600 1 0
-0
-
-0101000
-+2478 0 -2476 0 *
-Ve
-1e-07
-91.358024691358 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 301 0 0 1.23456790123457
-6 601 2 0
-6 602 1 0
-0
-
-0101000
-+2476 0 -2474 0 *
-Ve
-1e-07
-90.7407407407407 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 302 0 0 1.23456790123457
-6 603 2 0
-6 604 1 0
-0
-
-0101000
-+2474 0 -2472 0 *
-Ve
-1e-07
-90.1234567901235 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 303 0 0 1.23456790123457
-6 605 2 0
-6 606 1 0
-0
-
-0101000
-+2472 0 -2470 0 *
-Ve
-1e-07
-88.8888888888889 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 304 0 0 1.23456790123457
-6 607 2 0
-6 608 1 0
-0
-
-0101000
-+2470 0 -2468 0 *
-Ve
-1e-07
-88.2716049382716 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 305 0 0 1.23456790123457
-6 609 2 0
-6 610 1 0
-0
-
-0101000
-+2468 0 -2466 0 *
-Ve
-1e-07
-88.8888888888889 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 306 0 0 1.23456790123456
-6 611 2 0
-6 612 1 0
-0
-
-0101000
-+2466 0 -2464 0 *
-Ve
-1e-07
-87.6543209876543 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 307 0 0 1.23456790123457
-6 613 2 0
-6 614 1 0
-0
-
-0101000
-+2464 0 -2462 0 *
-Ve
-1e-07
-87.037037037037 22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 308 0 0 1.23456790123457
-6 615 2 0
-6 616 1 0
-0
-
-0101000
-+2462 0 -2460 0 *
-Ve
-1e-07
-87.6543209876543 23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 309 0 0 1.23456790123456
-6 617 2 0
-6 618 1 0
-0
-
-0101000
-+2460 0 -2458 0 *
-Ve
-1e-07
-88.8888888888889 23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 310 0 0 1.23456790123457
-6 619 2 0
-6 620 1 0
-0
-
-0101000
-+2458 0 -2456 0 *
-Ve
-1e-07
-88.2716049382716 24.5908447988174 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 311 0 0 1.23456790123456
-6 621 2 0
-6 622 1 0
-0
-
-0101000
-+2456 0 -2454 0 *
-Ve
-1e-07
-88.8888888888889 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 312 0 0 1.23456790123456
-6 623 2 0
-6 624 1 0
-0
-
-0101000
-+2454 0 -2452 0 *
-Ve
-1e-07
-87.6543209876543 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 313 0 0 1.23456790123457
-6 625 2 0
-6 626 1 0
-0
-
-0101000
-+2452 0 -2450 0 *
-Ve
-1e-07
-87.037037037037 26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 314 0 0 1.23456790123457
-6 627 2 0
-6 628 1 0
-0
-
-0101000
-+2450 0 -2448 0 *
-Ve
-1e-07
-86.4197530864197 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 315 0 0 1.23456790123457
-6 629 2 0
-6 630 1 0
-0
-
-0101000
-+2448 0 -2446 0 *
-Ve
-1e-07
-85.1851851851852 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 316 0 0 1.23456790123457
-6 631 2 0
-6 632 1 0
-0
-
-0101000
-+2446 0 -2444 0 *
-Ve
-1e-07
-84.5679012345679 26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 317 0 0 1.23456790123457
-6 633 2 0
-6 634 1 0
-0
-
-0101000
-+2444 0 -2442 0 *
-Ve
-1e-07
-85.1851851851852 27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 318 0 0 1.23456790123456
-6 635 2 0
-6 636 1 0
-0
-
-0101000
-+2442 0 -2440 0 *
-Ve
-1e-07
-83.9506172839506 27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 319 0 0 1.23456790123457
-6 637 2 0
-6 638 1 0
-0
-
-0101000
-+2440 0 -2438 0 *
-Ve
-1e-07
-83.3333333333333 28.8675134594813 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 320 0 0 1.23456790123457
-6 639 2 0
-6 640 1 0
-0
-
-0101000
-+2438 0 -2436 0 *
-Ve
-1e-07
-83.9506172839506 29.9366806246473 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 321 0 0 1.23456790123457
-6 641 2 0
-6 642 1 0
-0
-
-0101000
-+2436 0 -2434 0 *
-Ve
-1e-07
-85.1851851851852 29.9366806246473 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 322 0 0 1.23456790123457
-6 643 2 0
-6 644 1 0
-0
-
-0101000
-+2434 0 -2432 0 *
-Ve
-1e-07
-84.5679012345679 31.0058477898132 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 323 0 0 1.23456790123456
-6 645 2 0
-6 646 1 0
-0
-
-0101000
-+2432 0 -2430 0 *
-Ve
-1e-07
-85.1851851851852 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 324 0 0 1.23456790123457
-6 647 2 0
-6 648 1 0
-0
-
-0101000
-+2430 0 -2428 0 *
-Ve
-1e-07
-86.4197530864197 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 325 0 0 1.23456790123457
-6 649 2 0
-6 650 1 0
-0
-
-0101000
-+2428 0 -2426 0 *
-Ve
-1e-07
-87.037037037037 31.0058477898132 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 326 0 0 1.23456790123457
-6 651 2 0
-6 652 1 0
-0
-
-0101000
-+2426 0 -2424 0 *
-Ve
-1e-07
-87.6543209876543 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 327 0 0 1.23456790123457
-6 653 2 0
-6 654 1 0
-0
-
-0101000
-+2424 0 -2422 0 *
-Ve
-1e-07
-88.8888888888889 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 328 0 0 1.23456790123457
-6 655 2 0
-6 656 1 0
-0
-
-0101000
-+2422 0 -2420 0 *
-Ve
-1e-07
-88.2716049382716 33.1441821201452 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 329 0 0 1.23456790123456
-6 657 2 0
-6 658 1 0
-0
-
-0101000
-+2420 0 -2418 0 *
-Ve
-1e-07
-88.8888888888889 34.2133492853112 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 330 0 0 1.23456790123456
-6 659 2 0
-6 660 1 0
-0
-
-0101000
-+2418 0 -2416 0 *
-Ve
-1e-07
-87.6543209876543 34.2133492853112 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 331 0 0 1.23456790123457
-6 661 2 0
-6 662 1 0
-0
-
-0101000
-+2416 0 -2414 0 *
-Ve
-1e-07
-87.037037037037 35.2825164504771 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 332 0 0 1.23456790123456
-6 663 2 0
-6 664 1 0
-0
-
-0101000
-+2414 0 -2412 0 *
-Ve
-1e-07
-87.6543209876543 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 333 0 0 1.23456790123456
-6 665 2 0
-6 666 1 0
-0
-
-0101000
-+2412 0 -2410 0 *
-Ve
-1e-07
-88.8888888888889 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 334 0 0 1.23456790123457
-6 667 2 0
-6 668 1 0
-0
-
-0101000
-+2410 0 -2408 0 *
-Ve
-1e-07
-88.2716049382716 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 335 0 0 1.23456790123456
-6 669 2 0
-6 670 1 0
-0
-
-0101000
-+2408 0 -2406 0 *
-Ve
-1e-07
-88.8888888888889 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 336 0 0 1.23456790123456
-6 671 2 0
-6 672 1 0
-0
-
-0101000
-+2406 0 -2404 0 *
-Ve
-1e-07
-90.1234567901235 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 337 0 0 1.23456790123457
-6 673 2 0
-6 674 1 0
-0
-
-0101000
-+2404 0 -2402 0 *
-Ve
-1e-07
-90.7407407407407 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 338 0 0 1.23456790123456
-6 675 2 0
-6 676 1 0
-0
-
-0101000
-+2402 0 -2400 0 *
-Ve
-1e-07
-91.358024691358 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 339 0 0 1.23456790123456
-6 677 2 0
-6 678 1 0
-0
-
-0101000
-+2400 0 -2398 0 *
-Ve
-1e-07
-92.5925925925926 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 340 0 0 1.23456790123457
-6 679 2 0
-6 680 1 0
-0
-
-0101000
-+2398 0 -2396 0 *
-Ve
-1e-07
-93.2098765432099 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 341 0 0 1.23456790123456
-6 681 2 0
-6 682 1 0
-0
-
-0101000
-+2396 0 -2394 0 *
-Ve
-1e-07
-92.5925925925926 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 342 0 0 1.23456790123456
-6 683 2 0
-6 684 1 0
-0
-
-0101000
-+2394 0 -2392 0 *
-Ve
-1e-07
-93.8271604938272 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 343 0 0 1.23456790123457
-6 685 2 0
-6 686 1 0
-0
-
-0101000
-+2392 0 -2390 0 *
-Ve
-1e-07
-94.4444444444444 35.2825164504771 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 344 0 0 1.23456790123456
-6 687 2 0
-6 688 1 0
-0
-
-0101000
-+2390 0 -2388 0 *
-Ve
-1e-07
-95.0617283950617 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 345 0 0 1.23456790123457
-6 689 2 0
-6 690 1 0
-0
-
-0101000
-+2388 0 -2386 0 *
-Ve
-1e-07
-96.2962962962963 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 346 0 0 1.23456790123456
-6 691 2 0
-6 692 1 0
-0
-
-0101000
-+2386 0 -2384 0 *
-Ve
-1e-07
-95.679012345679 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 347 0 0 1.23456790123456
-6 693 2 0
-6 694 1 0
-0
-
-0101000
-+2384 0 -2382 0 *
-Ve
-1e-07
-96.2962962962963 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 348 0 0 1.23456790123457
-6 695 2 0
-6 696 1 0
-0
-
-0101000
-+2382 0 -2380 0 *
-Ve
-1e-07
-97.5308641975309 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 349 0 0 1.23456790123457
-6 697 2 0
-6 698 1 0
-0
-
-0101000
-+2380 0 -2378 0 *
-Ve
-1e-07
-98.1481481481481 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 350 0 0 1.23456790123456
-6 699 2 0
-6 700 1 0
-0
-
-0101000
-+2378 0 -2376 0 *
-Ve
-1e-07
-98.7654320987654 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 351 0 0 1.23456790123456
-6 701 2 0
-6 702 1 0
-0
-
-0101000
-+2376 0 -2374 0 *
-Ve
-1e-07
-100 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 352 0 0 1.23456790123457
-6 703 2 0
-6 704 1 0
-0
-
-0101000
-+2374 0 -2372 0 *
-Ve
-1e-07
-99.3827160493827 39.559185111141 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 353 0 0 1.23456790123456
-6 705 2 0
-6 706 1 0
-0
-
-0101000
-+2372 0 -2370 0 *
-Ve
-1e-07
-100 40.628352276307 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 354 0 0 1.23456790123456
-6 707 2 0
-6 708 1 0
-0
-
-0101000
-+2370 0 -2368 0 *
-Ve
-1e-07
-98.7654320987654 40.628352276307 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 355 0 0 1.23456790123457
-6 709 2 0
-6 710 1 0
-0
-
-0101000
-+2368 0 -2366 0 *
-Ve
-1e-07
-98.1481481481481 41.697519441473 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 356 0 0 1.23456790123456
-6 711 2 0
-6 712 1 0
-0
-
-0101000
-+2366 0 -2364 0 *
-Ve
-1e-07
-98.7654320987654 42.7666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 357 0 0 1.23456790123457
-6 713 2 0
-6 714 1 0
-0
-
-0101000
-+2364 0 -2362 0 *
-Ve
-1e-07
-100 42.7666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 358 0 0 1.23456790123457
-6 715 2 0
-6 716 1 0
-0
-
-0101000
-+2362 0 -2360 0 *
-Ve
-1e-07
-99.3827160493827 43.8358537718049 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 359 0 0 1.23456790123458
-6 717 2 0
-6 718 1 0
-0
-
-0101000
-+2360 0 -2358 0 *
-Ve
-1e-07
-100 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 360 0 0 1.23456790123457
-6 719 2 0
-6 720 1 0
-0
-
-0101000
-+2358 0 -2356 0 *
-Ve
-1e-07
-98.7654320987654 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 361 0 0 1.23456790123457
-6 721 2 0
-6 722 1 0
-0
-
-0101000
-+2356 0 -2354 0 *
-Ve
-1e-07
-98.1481481481482 45.9741881021369 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 362 0 0 1.23456790123457
-6 723 2 0
-6 724 1 0
-0
-
-0101000
-+2354 0 -2352 0 *
-Ve
-1e-07
-97.5308641975309 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 363 0 0 1.23456790123457
-6 725 2 0
-6 726 1 0
-0
-
-0101000
-+2352 0 -2350 0 *
-Ve
-1e-07
-96.2962962962963 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 364 0 0 1.23456790123457
-6 727 2 0
-6 728 1 0
-0
-
-0101000
-+2350 0 -2348 0 *
-Ve
-1e-07
-95.679012345679 45.9741881021369 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 365 0 0 1.23456790123456
-6 729 2 0
-6 730 1 0
-0
-
-0101000
-+2348 0 -2346 0 *
-Ve
-1e-07
-96.2962962962963 47.0433552673028 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 366 0 0 1.23456790123456
-6 731 2 0
-6 732 1 0
-0
-
-0101000
-+2346 0 -2344 0 *
-Ve
-1e-07
-95.0617283950617 47.0433552673028 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 367 0 0 1.23456790123457
-6 733 2 0
-6 734 1 0
-0
-
-0101000
-+2344 0 -2342 0 *
-Ve
-1e-07
-94.4444444444444 48.1125224324688 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 368 0 0 1.23456790123456
-6 735 2 0
-6 736 1 0
-0
-
-0101000
-+2342 0 -2340 0 *
-Ve
-1e-07
-95.0617283950617 49.1816895976348 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 369 0 0 1.23456790123456
-6 737 2 0
-6 738 1 0
-0
-
-0101000
-+2340 0 -2338 0 *
-Ve
-1e-07
-96.2962962962963 49.1816895976348 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 370 0 0 1.23456790123457
-6 739 2 0
-6 740 1 0
-0
-
-0101000
-+2338 0 -2336 0 *
-Ve
-1e-07
-95.679012345679 50.2508567628008 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 371 0 0 1.23456790123456
-6 741 2 0
-6 742 1 0
-0
-
-0101000
-+2336 0 -2334 0 *
-Ve
-1e-07
-96.2962962962963 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 372 0 0 1.23456790123456
-6 743 2 0
-6 744 1 0
-0
-
-0101000
-+2334 0 -2332 0 *
-Ve
-1e-07
-97.5308641975309 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 373 0 0 1.23456790123457
-6 745 2 0
-6 746 1 0
-0
-
-0101000
-+2332 0 -2330 0 *
-Ve
-1e-07
-98.1481481481482 50.2508567628008 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 374 0 0 1.23456790123458
-6 747 2 0
-6 748 1 0
-0
-
-0101000
-+2330 0 -2328 0 *
-Ve
-1e-07
-98.7654320987654 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 375 0 0 1.23456790123457
-6 749 2 0
-6 750 1 0
-0
-
-0101000
-+2328 0 -2326 0 *
-Ve
-1e-07
-100 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 376 0 0 1.23456790123457
-6 751 2 0
-6 752 1 0
-0
-
-0101000
-+2326 0 -2324 0 *
-Ve
-1e-07
-99.3827160493827 52.3891910931327 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 377 0 0 1.23456790123456
-6 753 2 0
-6 754 1 0
-0
-
-0101000
-+2324 0 -2322 0 *
-Ve
-1e-07
-100 53.4583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 378 0 0 1.23456790123456
-6 755 2 0
-6 756 1 0
-0
-
-0101000
-+2322 0 -2320 0 *
-Ve
-1e-07
-98.7654320987654 53.4583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 379 0 0 1.23456790123457
-6 757 2 0
-6 758 1 0
-0
-
-0101000
-+2320 0 -2318 0 *
-Ve
-1e-07
-98.1481481481482 54.5275254234647 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 380 0 0 1.23456790123456
-6 759 2 0
-6 760 1 0
-0
-
-0101000
-+2318 0 -2316 0 *
-Ve
-1e-07
-98.7654320987654 55.5966925886306 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 381 0 0 1.23456790123456
-6 761 2 0
-6 762 1 0
-0
-
-0101000
-+2316 0 -2314 0 *
-Ve
-1e-07
-100 55.5966925886306 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 382 0 0 1.23456790123457
-6 763 2 0
-6 764 1 0
-0
-
-0101000
-+2314 0 -2312 0 *
-Ve
-1e-07
-99.3827160493827 56.6658597537966 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 383 0 0 1.23456790123456
-6 765 2 0
-6 766 1 0
-0
-
-0101000
-+2312 0 -2310 0 *
-Ve
-1e-07
-100 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 384 0 0 1.23456790123456
-6 767 2 0
-6 768 1 0
-0
-
-0101000
-+2310 0 -2308 0 *
-Ve
-1e-07
-98.7654320987654 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 385 0 0 1.23456790123457
-6 769 2 0
-6 770 1 0
-0
-
-0101000
-+2308 0 -2306 0 *
-Ve
-1e-07
-98.1481481481482 58.8041940841286 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 386 0 0 1.23456790123457
-6 771 2 0
-6 772 1 0
-0
-
-0101000
-+2306 0 -2304 0 *
-Ve
-1e-07
-97.5308641975309 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 387 0 0 1.23456790123458
-6 773 2 0
-6 774 1 0
-0
-
-0101000
-+2304 0 -2302 0 *
-Ve
-1e-07
-96.2962962962963 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 388 0 0 1.23456790123457
-6 775 2 0
-6 776 1 0
-0
-
-0101000
-+2302 0 -2300 0 *
-Ve
-1e-07
-95.679012345679 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 389 0 0 1.23456790123456
-6 777 2 0
-6 778 1 0
-0
-
-0101000
-+2300 0 -2298 0 *
-Ve
-1e-07
-96.2962962962963 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 390 0 0 1.23456790123456
-6 779 2 0
-6 780 1 0
-0
-
-0101000
-+2298 0 -2296 0 *
-Ve
-1e-07
-95.0617283950617 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 391 0 0 1.23456790123457
-6 781 2 0
-6 782 1 0
-0
-
-0101000
-+2296 0 -2294 0 *
-Ve
-1e-07
-94.4444444444444 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 392 0 0 1.23456790123456
-6 783 2 0
-6 784 1 0
-0
-
-0101000
-+2294 0 -2292 0 *
-Ve
-1e-07
-93.8271604938272 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 393 0 0 1.23456790123456
-6 785 2 0
-6 786 1 0
-0
-
-0101000
-+2292 0 -2290 0 *
-Ve
-1e-07
-92.5925925925926 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 394 0 0 1.23456790123457
-6 787 2 0
-6 788 1 0
-0
-
-0101000
-+2290 0 -2288 0 *
-Ve
-1e-07
-93.2098765432099 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 395 0 0 1.23456790123456
-6 789 2 0
-6 790 1 0
-0
-
-0101000
-+2288 0 -2286 0 *
-Ve
-1e-07
-92.5925925925926 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 396 0 0 1.23456790123456
-6 791 2 0
-6 792 1 0
-0
-
-0101000
-+2286 0 -2284 0 *
-Ve
-1e-07
-91.358024691358 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 397 0 0 1.23456790123457
-6 793 2 0
-6 794 1 0
-0
-
-0101000
-+2284 0 -2282 0 *
-Ve
-1e-07
-90.7407407407407 58.8041940841286 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 398 0 0 1.23456790123458
-6 795 2 0
-6 796 1 0
-0
-
-0101000
-+2282 0 -2280 0 *
-Ve
-1e-07
-90.1234567901235 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 399 0 0 1.23456790123457
-6 797 2 0
-6 798 1 0
-0
-
-0101000
-+2280 0 -2278 0 *
-Ve
-1e-07
-88.8888888888889 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 400 0 0 1.23456790123457
-6 799 2 0
-6 800 1 0
-0
-
-0101000
-+2278 0 -2276 0 *
-Ve
-1e-07
-88.2716049382716 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 401 0 0 1.23456790123456
-6 801 2 0
-6 802 1 0
-0
-
-0101000
-+2276 0 -2274 0 *
-Ve
-1e-07
-88.8888888888889 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 402 0 0 1.23456790123456
-6 803 2 0
-6 804 1 0
-0
-
-0101000
-+2274 0 -2272 0 *
-Ve
-1e-07
-87.6543209876543 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 403 0 0 1.23456790123457
-6 805 2 0
-6 806 1 0
-0
-
-0101000
-+2272 0 -2270 0 *
-Ve
-1e-07
-87.037037037037 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 404 0 0 1.23456790123456
-6 807 2 0
-6 808 1 0
-0
-
-0101000
-+2270 0 -2268 0 *
-Ve
-1e-07
-87.6543209876543 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 405 0 0 1.23456790123457
-6 809 2 0
-6 810 1 0
-0
-
-0101000
-+2268 0 -2266 0 *
-Ve
-1e-07
-88.8888888888889 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 406 0 0 1.23456790123456
-6 811 2 0
-6 812 1 0
-0
-
-0101000
-+2266 0 -2264 0 *
-Ve
-1e-07
-88.2716049382716 63.0808627447924 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 407 0 0 1.23456790123457
-6 813 2 0
-6 814 1 0
-0
-
-0101000
-+2264 0 -2262 0 *
-Ve
-1e-07
-88.8888888888889 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 408 0 0 1.23456790123457
-6 815 2 0
-6 816 1 0
-0
-
-0101000
-+2262 0 -2260 0 *
-Ve
-1e-07
-87.6543209876543 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 409 0 0 1.23456790123457
-6 817 2 0
-6 818 1 0
-0
-
-0101000
-+2260 0 -2258 0 *
-Ve
-1e-07
-87.037037037037 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 410 0 0 1.23456790123458
-6 819 2 0
-6 820 1 0
-0
-
-0101000
-+2258 0 -2256 0 *
-Ve
-1e-07
-86.4197530864198 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 411 0 0 1.23456790123457
-6 821 2 0
-6 822 1 0
-0
-
-0101000
-+2256 0 -2254 0 *
-Ve
-1e-07
-85.1851851851852 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 412 0 0 1.23456790123457
-6 823 2 0
-6 824 1 0
-0
-
-0101000
-+2254 0 -2252 0 *
-Ve
-1e-07
-84.5679012345679 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 413 0 0 1.23456790123457
-6 825 2 0
-6 826 1 0
-0
-
-0101000
-+2252 0 -2250 0 *
-Ve
-1e-07
-85.1851851851852 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 414 0 0 1.23456790123456
-6 827 2 0
-6 828 1 0
-0
-
-0101000
-+2250 0 -2248 0 *
-Ve
-1e-07
-83.9506172839506 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 415 0 0 1.23456790123457
-6 829 2 0
-6 830 1 0
-0
-
-0101000
-+2248 0 -2246 0 *
-Ve
-1e-07
-83.3333333333333 67.3575314054563 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 416 0 0 1.23456790123457
-6 831 2 0
-6 832 1 0
-0
-
-0101000
-+2246 0 -2244 0 *
-Ve
-1e-07
-82.7160493827161 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 417 0 0 1.23456790123457
-6 833 2 0
-6 834 1 0
-0
-
-0101000
-+2244 0 -2242 0 *
-Ve
-1e-07
-81.4814814814815 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 418 0 0 1.23456790123457
-6 835 2 0
-6 836 1 0
-0
-
-0101000
-+2242 0 -2240 0 *
-Ve
-1e-07
-82.0987654320988 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 419 0 0 1.23456790123456
-6 837 2 0
-6 838 1 0
-0
-
-0101000
-+2240 0 -2238 0 *
-Ve
-1e-07
-81.4814814814815 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 420 0 0 1.23456790123457
-6 839 2 0
-6 840 1 0
-0
-
-0101000
-+2238 0 -2236 0 *
-Ve
-1e-07
-80.2469135802469 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 421 0 0 1.23456790123457
-6 841 2 0
-6 842 1 0
-0
-
-0101000
-+2236 0 -2234 0 *
-Ve
-1e-07
-79.6296296296296 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 422 0 0 1.23456790123457
-6 843 2 0
-6 844 1 0
-0
-
-0101000
-+2234 0 -2232 0 *
-Ve
-1e-07
-79.0123456790124 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 423 0 0 1.23456790123457
-6 845 2 0
-6 846 1 0
-0
-
-0101000
-+2232 0 -2230 0 *
-Ve
-1e-07
-77.7777777777778 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 424 0 0 1.23456790123457
-6 847 2 0
-6 848 1 0
-0
-
-0101000
-+2230 0 -2228 0 *
-Ve
-1e-07
-78.3950617283951 63.0808627447924 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 425 0 0 1.23456790123456
-6 849 2 0
-6 850 1 0
-0
-
-0101000
-+2228 0 -2226 0 *
-Ve
-1e-07
-77.7777777777778 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 426 0 0 1.23456790123456
-6 851 2 0
-6 852 1 0
-0
-
-0101000
-+2226 0 -2224 0 *
-Ve
-1e-07
-79.0123456790124 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 427 0 0 1.23456790123456
-6 853 2 0
-6 854 1 0
-0
-
-0101000
-+2224 0 -2222 0 *
-Ve
-1e-07
-79.6296296296296 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 428 0 0 1.23456790123456
-6 855 2 0
-6 856 1 0
-0
-
-0101000
-+2222 0 -2220 0 *
-Ve
-1e-07
-79.0123456790124 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 429 0 0 1.23456790123456
-6 857 2 0
-6 858 1 0
-0
-
-0101000
-+2220 0 -2218 0 *
-Ve
-1e-07
-77.7777777777778 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 430 0 0 1.23456790123457
-6 859 2 0
-6 860 1 0
-0
-
-0101000
-+2218 0 -2216 0 *
-Ve
-1e-07
-78.3950617283951 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 431 0 0 1.23456790123456
-6 861 2 0
-6 862 1 0
-0
-
-0101000
-+2216 0 -2214 0 *
-Ve
-1e-07
-77.7777777777778 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 432 0 0 1.23456790123456
-6 863 2 0
-6 864 1 0
-0
-
-0101000
-+2214 0 -2212 0 *
-Ve
-1e-07
-76.5432098765432 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 433 0 0 1.23456790123457
-6 865 2 0
-6 866 1 0
-0
-
-0101000
-+2212 0 -2210 0 *
-Ve
-1e-07
-75.9259259259259 58.8041940841286 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 434 0 0 1.23456790123458
-6 867 2 0
-6 868 1 0
-0
-
-0101000
-+2210 0 -2208 0 *
-Ve
-1e-07
-75.3086419753086 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 435 0 0 1.23456790123457
-6 869 2 0
-6 870 1 0
-0
-
-0101000
-+2208 0 -2206 0 *
-Ve
-1e-07
-74.0740740740741 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 436 0 0 1.23456790123457
-6 871 2 0
-6 872 1 0
-0
-
-0101000
-+2206 0 -2204 0 *
-Ve
-1e-07
-73.4567901234568 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 437 0 0 1.23456790123456
-6 873 2 0
-6 874 1 0
-0
-
-0101000
-+2204 0 -2202 0 *
-Ve
-1e-07
-74.0740740740741 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 438 0 0 1.23456790123456
-6 875 2 0
-6 876 1 0
-0
-
-0101000
-+2202 0 -2200 0 *
-Ve
-1e-07
-72.8395061728395 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 439 0 0 1.23456790123457
-6 877 2 0
-6 878 1 0
-0
-
-0101000
-+2200 0 -2198 0 *
-Ve
-1e-07
-72.2222222222222 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 440 0 0 1.23456790123456
-6 879 2 0
-6 880 1 0
-0
-
-0101000
-+2198 0 -2196 0 *
-Ve
-1e-07
-71.604938271605 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 441 0 0 1.23456790123456
-6 881 2 0
-6 882 1 0
-0
-
-0101000
-+2196 0 -2194 0 *
-Ve
-1e-07
-70.3703703703704 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 442 0 0 1.23456790123457
-6 883 2 0
-6 884 1 0
-0
-
-0101000
-+2194 0 -2192 0 *
-Ve
-1e-07
-70.9876543209877 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 443 0 0 1.23456790123456
-6 885 2 0
-6 886 1 0
-0
-
-0101000
-+2192 0 -2190 0 *
-Ve
-1e-07
-70.3703703703704 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 444 0 0 1.23456790123456
-6 887 2 0
-6 888 1 0
-0
-
-0101000
-+2190 0 -2188 0 *
-Ve
-1e-07
-69.1358024691358 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 445 0 0 1.23456790123457
-6 889 2 0
-6 890 1 0
-0
-
-0101000
-+2188 0 -2186 0 *
-Ve
-1e-07
-68.5185185185185 58.8041940841286 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 446 0 0 1.23456790123457
-6 891 2 0
-6 892 1 0
-0
-
-0101000
-+2186 0 -2184 0 *
-Ve
-1e-07
-67.9012345679012 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 447 0 0 1.23456790123458
-6 893 2 0
-6 894 1 0
-0
-
-0101000
-+2184 0 -2182 0 *
-Ve
-1e-07
-66.6666666666667 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 448 0 0 1.23456790123457
-6 895 2 0
-6 896 1 0
-0
-
-0101000
-+2182 0 -2180 0 *
-Ve
-1e-07
-66.0493827160494 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 449 0 0 1.23456790123456
-6 897 2 0
-6 898 1 0
-0
-
-0101000
-+2180 0 -2178 0 *
-Ve
-1e-07
-66.6666666666667 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 450 0 0 1.23456790123456
-6 899 2 0
-6 900 1 0
-0
-
-0101000
-+2178 0 -2176 0 *
-Ve
-1e-07
-65.4320987654321 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 451 0 0 1.23456790123457
-6 901 2 0
-6 902 1 0
-0
-
-0101000
-+2176 0 -2174 0 *
-Ve
-1e-07
-64.8148148148148 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 452 0 0 1.23456790123456
-6 903 2 0
-6 904 1 0
-0
-
-0101000
-+2174 0 -2172 0 *
-Ve
-1e-07
-65.4320987654321 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 453 0 0 1.23456790123456
-6 905 2 0
-6 906 1 0
-0
-
-0101000
-+2172 0 -2170 0 *
-Ve
-1e-07
-66.6666666666667 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 454 0 0 1.23456790123457
-6 907 2 0
-6 908 1 0
-0
-
-0101000
-+2170 0 -2168 0 *
-Ve
-1e-07
-66.0493827160494 63.0808627447924 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 455 0 0 1.23456790123456
-6 909 2 0
-6 910 1 0
-0
-
-0101000
-+2168 0 -2166 0 *
-Ve
-1e-07
-66.6666666666667 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 456 0 0 1.23456790123456
-6 911 2 0
-6 912 1 0
-0
-
-0101000
-+2166 0 -2164 0 *
-Ve
-1e-07
-65.4320987654321 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 457 0 0 1.23456790123457
-6 913 2 0
-6 914 1 0
-0
-
-0101000
-+2164 0 -2162 0 *
-Ve
-1e-07
-64.8148148148148 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 458 0 0 1.23456790123457
-6 915 2 0
-6 916 1 0
-0
-
-0101000
-+2162 0 -2160 0 *
-Ve
-1e-07
-64.1975308641975 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 459 0 0 1.23456790123458
-6 917 2 0
-6 918 1 0
-0
-
-0101000
-+2160 0 -2158 0 *
-Ve
-1e-07
-62.962962962963 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 460 0 0 1.23456790123456
-6 919 2 0
-6 920 1 0
-0
-
-0101000
-+2158 0 -2156 0 *
-Ve
-1e-07
-62.3456790123457 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 461 0 0 1.23456790123457
-6 921 2 0
-6 922 1 0
-0
-
-0101000
-+2156 0 -2154 0 *
-Ve
-1e-07
-62.962962962963 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 462 0 0 1.23456790123457
-6 923 2 0
-6 924 1 0
-0
-
-0101000
-+2154 0 -2152 0 *
-Ve
-1e-07
-61.7283950617284 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 463 0 0 1.23456790123457
-6 925 2 0
-6 926 1 0
-0
-
-0101000
-+2152 0 -2150 0 *
-Ve
-1e-07
-61.1111111111111 67.3575314054563 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 464 0 0 1.23456790123457
-6 927 2 0
-6 928 1 0
-0
-
-0101000
-+2150 0 -2148 0 *
-Ve
-1e-07
-61.7283950617284 68.4266985706223 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 465 0 0 1.23456790123457
-6 929 2 0
-6 930 1 0
-0
-
-0101000
-+2148 0 -2146 0 *
-Ve
-1e-07
-62.962962962963 68.4266985706223 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 466 0 0 1.23456790123457
-6 931 2 0
-6 932 1 0
-0
-
-0101000
-+2146 0 -2144 0 *
-Ve
-1e-07
-62.3456790123457 69.4958657357883 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 467 0 0 1.23456790123457
-6 933 2 0
-6 934 1 0
-0
-
-0101000
-+2144 0 -2142 0 *
-Ve
-1e-07
-62.962962962963 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 468 0 0 1.23456790123457
-6 935 2 0
-6 936 1 0
-0
-
-0101000
-+2142 0 -2140 0 *
-Ve
-1e-07
-64.1975308641975 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 469 0 0 1.23456790123456
-6 937 2 0
-6 938 1 0
-0
-
-0101000
-+2140 0 -2138 0 *
-Ve
-1e-07
-64.8148148148148 69.4958657357883 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 470 0 0 1.23456790123456
-6 939 2 0
-6 940 1 0
-0
-
-0101000
-+2138 0 -2136 0 *
-Ve
-1e-07
-65.4320987654321 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 471 0 0 1.23456790123456
-6 941 2 0
-6 942 1 0
-0
-
-0101000
-+2136 0 -2134 0 *
-Ve
-1e-07
-66.6666666666667 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 472 0 0 1.23456790123457
-6 943 2 0
-6 944 1 0
-0
-
-0101000
-+2134 0 -2132 0 *
-Ve
-1e-07
-66.0493827160494 71.6342000661202 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 473 0 0 1.23456790123457
-6 945 2 0
-6 946 1 0
-0
-
-0101000
-+2132 0 -2130 0 *
-Ve
-1e-07
-66.6666666666667 72.7033672312862 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 474 0 0 1.23456790123456
-6 947 2 0
-6 948 1 0
-0
-
-0101000
-+2130 0 -2128 0 *
-Ve
-1e-07
-65.4320987654321 72.7033672312862 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 475 0 0 1.23456790123457
-6 949 2 0
-6 950 1 0
-0
-
-0101000
-+2128 0 -2126 0 *
-Ve
-1e-07
-64.8148148148148 73.7725343964522 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 476 0 0 1.23456790123457
-6 951 2 0
-6 952 1 0
-0
-
-0101000
-+2126 0 -2124 0 *
-Ve
-1e-07
-65.4320987654321 74.8417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 477 0 0 1.23456790123457
-6 953 2 0
-6 954 1 0
-0
-
-0101000
-+2124 0 -2122 0 *
-Ve
-1e-07
-66.6666666666667 74.8417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 478 0 0 1.23456790123457
-6 955 2 0
-6 956 1 0
-0
-
-0101000
-+2122 0 -2120 0 *
-Ve
-1e-07
-66.0493827160494 75.9108687267841 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 479 0 0 1.23456790123456
-6 957 2 0
-6 958 1 0
-0
-
-0101000
-+2120 0 -2118 0 *
-Ve
-1e-07
-66.6666666666667 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 480 0 0 1.23456790123457
-6 959 2 0
-6 960 1 0
-0
-
-0101000
-+2118 0 -2116 0 *
-Ve
-1e-07
-65.4320987654321 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 481 0 0 1.23456790123457
-6 961 2 0
-6 962 1 0
-0
-
-0101000
-+2116 0 -2114 0 *
-Ve
-1e-07
-64.8148148148148 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 482 0 0 1.23456790123457
-6 963 2 0
-6 964 1 0
-0
-
-0101000
-+2114 0 -2112 0 *
-Ve
-1e-07
-64.1975308641975 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 483 0 0 1.23456790123458
-6 965 2 0
-6 966 1 0
-0
-
-0101000
-+2112 0 -2110 0 *
-Ve
-1e-07
-62.962962962963 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 484 0 0 1.23456790123456
-6 967 2 0
-6 968 1 0
-0
-
-0101000
-+2110 0 -2108 0 *
-Ve
-1e-07
-62.3456790123457 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 485 0 0 1.23456790123457
-6 969 2 0
-6 970 1 0
-0
-
-0101000
-+2108 0 -2106 0 *
-Ve
-1e-07
-62.962962962963 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 486 0 0 1.23456790123457
-6 971 2 0
-6 972 1 0
-0
-
-0101000
-+2106 0 -2104 0 *
-Ve
-1e-07
-61.7283950617284 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 487 0 0 1.23456790123458
-6 973 2 0
-6 974 1 0
-0
-
-0101000
-+2104 0 -2102 0 *
-Ve
-1e-07
-61.1111111111111 80.187537387448 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 488 0 0 1.23456790123457
-6 975 2 0
-6 976 1 0
-0
-
-0101000
-+2102 0 -2100 0 *
-Ve
-1e-07
-60.4938271604938 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 489 0 0 1.23456790123457
-6 977 2 0
-6 978 1 0
-0
-
-0101000
-+2100 0 -2098 0 *
-Ve
-1e-07
-59.2592592592593 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 490 0 0 1.23456790123457
-6 979 2 0
-6 980 1 0
-0
-
-0101000
-+2098 0 -2096 0 *
-Ve
-1e-07
-59.8765432098765 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 491 0 0 1.23456790123458
-6 981 2 0
-6 982 1 0
-0
-
-0101000
-+2096 0 -2094 0 *
-Ve
-1e-07
-59.2592592592593 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 492 0 0 1.23456790123457
-6 983 2 0
-6 984 1 0
-0
-
-0101000
-+2094 0 -2092 0 *
-Ve
-1e-07
-58.0246913580247 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 493 0 0 1.23456790123457
-6 985 2 0
-6 986 1 0
-0
-
-0101000
-+2092 0 -2090 0 *
-Ve
-1e-07
-57.4074074074074 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 494 0 0 1.23456790123457
-6 987 2 0
-6 988 1 0
-0
-
-0101000
-+2090 0 -2088 0 *
-Ve
-1e-07
-56.7901234567901 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 495 0 0 1.23456790123457
-6 989 2 0
-6 990 1 0
-0
-
-0101000
-+2088 0 -2086 0 *
-Ve
-1e-07
-55.5555555555556 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 496 0 0 1.23456790123457
-6 991 2 0
-6 992 1 0
-0
-
-0101000
-+2086 0 -2084 0 *
-Ve
-1e-07
-54.9382716049383 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 497 0 0 1.23456790123457
-6 993 2 0
-6 994 1 0
-0
-
-0101000
-+2084 0 -2082 0 *
-Ve
-1e-07
-55.5555555555556 79.118370222282 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 498 0 0 1.23456790123456
-6 995 2 0
-6 996 1 0
-0
-
-0101000
-+2082 0 -2080 0 *
-Ve
-1e-07
-54.320987654321 79.118370222282 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 499 0 0 1.23456790123458
-6 997 2 0
-6 998 1 0
-0
-
-0101000
-+2080 0 -2078 0 *
-Ve
-1e-07
-53.7037037037037 80.187537387448 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 500 0 0 1.23456790123457
-6 999 2 0
-6 1000 1 0
-0
-
-0101000
-+2078 0 -2076 0 *
-Ve
-1e-07
-54.320987654321 81.256704552614 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 501 0 0 1.23456790123457
-6 1001 2 0
-6 1002 1 0
-0
-
-0101000
-+2076 0 -2074 0 *
-Ve
-1e-07
-55.5555555555556 81.256704552614 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 502 0 0 1.23456790123458
-6 1003 2 0
-6 1004 1 0
-0
-
-0101000
-+2074 0 -2072 0 *
-Ve
-1e-07
-54.9382716049383 82.32587171778 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 503 0 0 1.23456790123456
-6 1005 2 0
-6 1006 1 0
-0
-
-0101000
-+2072 0 -2070 0 *
-Ve
-1e-07
-55.5555555555556 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 504 0 0 1.23456790123457
-6 1007 2 0
-6 1008 1 0
-0
-
-0101000
-+2070 0 -2068 0 *
-Ve
-1e-07
-54.320987654321 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 505 0 0 1.23456790123457
-6 1009 2 0
-6 1010 1 0
-0
-
-0101000
-+2068 0 -2066 0 *
-Ve
-1e-07
-53.7037037037037 84.4642060481119 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 506 0 0 1.23456790123457
-6 1011 2 0
-6 1012 1 0
-0
-
-0101000
-+2066 0 -2064 0 *
-Ve
-1e-07
-53.0864197530864 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 507 0 0 1.23456790123457
-6 1013 2 0
-6 1014 1 0
-0
-
-0101000
-+2064 0 -2062 0 *
-Ve
-1e-07
-51.8518518518519 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 508 0 0 1.23456790123457
-6 1015 2 0
-6 1016 1 0
-0
-
-0101000
-+2062 0 -2060 0 *
-Ve
-1e-07
-51.2345679012346 84.4642060481119 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 509 0 0 1.23456790123457
-6 1017 2 0
-6 1018 1 0
-0
-
-0101000
-+2060 0 -2058 0 *
-Ve
-1e-07
-51.8518518518519 85.5333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 510 0 0 1.23456790123456
-6 1019 2 0
-6 1020 1 0
-0
-
-0101000
-+2058 0 -2056 0 *
-Ve
-1e-07
-50.6172839506173 85.5333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 511 0 0 1.23456790123457
-6 1021 2 0
-6 1022 1 0
-0
-
-0101000
-+2056 0 -2054 0 *
-Ve
-1e-07
-50 86.6025403784439 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 512 0 0 1.23456790123457
-6 1023 2 0
-6 1024 1 0
-0
-
-0101000
-+2054 0 -2052 0 *
-Ve
-1e-07
-49.3827160493827 85.5333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 513 0 0 1.23456790123457
-6 1025 2 0
-6 1026 1 0
-0
-
-0101000
-+2052 0 -2050 0 *
-Ve
-1e-07
-48.1481481481481 85.5333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 514 0 0 1.23456790123457
-6 1027 2 0
-6 1028 1 0
-0
-
-0101000
-+2050 0 -2048 0 *
-Ve
-1e-07
-48.7654320987654 84.4642060481119 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 515 0 0 1.23456790123456
-6 1029 2 0
-6 1030 1 0
-0
-
-0101000
-+2048 0 -2046 0 *
-Ve
-1e-07
-48.1481481481481 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 516 0 0 1.23456790123457
-6 1031 2 0
-6 1032 1 0
-0
-
-0101000
-+2046 0 -2044 0 *
-Ve
-1e-07
-46.9135802469136 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 517 0 0 1.23456790123457
-6 1033 2 0
-6 1034 1 0
-0
-
-0101000
-+2044 0 -2042 0 *
-Ve
-1e-07
-46.2962962962963 84.4642060481119 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 518 0 0 1.23456790123457
-6 1035 2 0
-6 1036 1 0
-0
-
-0101000
-+2042 0 -2040 0 *
-Ve
-1e-07
-45.679012345679 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 519 0 0 1.23456790123457
-6 1037 2 0
-6 1038 1 0
-0
-
-0101000
-+2040 0 -2038 0 *
-Ve
-1e-07
-44.4444444444444 83.3950388829459 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 520 0 0 1.23456790123457
-6 1039 2 0
-6 1040 1 0
-0
-
-0101000
-+2038 0 -2036 0 *
-Ve
-1e-07
-45.0617283950617 82.32587171778 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 521 0 0 1.23456790123457
-6 1041 2 0
-6 1042 1 0
-0
-
-0101000
-+2036 0 -2034 0 *
-Ve
-1e-07
-44.4444444444444 81.256704552614 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 522 0 0 1.23456790123456
-6 1043 2 0
-6 1044 1 0
-0
-
-0101000
-+2034 0 -2032 0 *
-Ve
-1e-07
-45.679012345679 81.256704552614 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 523 0 0 1.23456790123458
-6 1045 2 0
-6 1046 1 0
-0
-
-0101000
-+2032 0 -2030 0 *
-Ve
-1e-07
-46.2962962962963 80.187537387448 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 524 0 0 1.23456790123457
-6 1047 2 0
-6 1048 1 0
-0
-
-0101000
-+2030 0 -2028 0 *
-Ve
-1e-07
-45.679012345679 79.118370222282 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 525 0 0 1.23456790123457
-6 1049 2 0
-6 1050 1 0
-0
-
-0101000
-+2028 0 -2026 0 *
-Ve
-1e-07
-44.4444444444444 79.118370222282 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 526 0 0 1.23456790123458
-6 1051 2 0
-6 1052 1 0
-0
-
-0101000
-+2026 0 -2024 0 *
-Ve
-1e-07
-45.0617283950617 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 527 0 0 1.23456790123456
-6 1053 2 0
-6 1054 1 0
-0
-
-0101000
-+2024 0 -2022 0 *
-Ve
-1e-07
-44.4444444444444 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 528 0 0 1.23456790123457
-6 1055 2 0
-6 1056 1 0
-0
-
-0101000
-+2022 0 -2020 0 *
-Ve
-1e-07
-43.2098765432099 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 529 0 0 1.23456790123457
-6 1057 2 0
-6 1058 1 0
-0
-
-0101000
-+2020 0 -2018 0 *
-Ve
-1e-07
-42.5925925925926 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 530 0 0 1.23456790123457
-6 1059 2 0
-6 1060 1 0
-0
-
-0101000
-+2018 0 -2016 0 *
-Ve
-1e-07
-41.9753086419753 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 531 0 0 1.23456790123457
-6 1061 2 0
-6 1062 1 0
-0
-
-0101000
-+2016 0 -2014 0 *
-Ve
-1e-07
-40.7407407407407 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 532 0 0 1.23456790123457
-6 1063 2 0
-6 1064 1 0
-0
-
-0101000
-+2014 0 -2012 0 *
-Ve
-1e-07
-40.1234567901235 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 533 0 0 1.23456790123457
-6 1065 2 0
-6 1066 1 0
-0
-
-0101000
-+2012 0 -2010 0 *
-Ve
-1e-07
-40.7407407407407 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 534 0 0 1.23456790123458
-6 1067 2 0
-6 1068 1 0
-0
-
-0101000
-+2010 0 -2008 0 *
-Ve
-1e-07
-39.5061728395062 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 535 0 0 1.23456790123457
-6 1069 2 0
-6 1070 1 0
-0
-
-0101000
-+2008 0 -2006 0 *
-Ve
-1e-07
-38.8888888888889 80.187537387448 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 536 0 0 1.23456790123457
-6 1071 2 0
-6 1072 1 0
-0
-
-0101000
-+2006 0 -2004 0 *
-Ve
-1e-07
-38.2716049382716 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 537 0 0 1.23456790123457
-6 1073 2 0
-6 1074 1 0
-0
-
-0101000
-+2004 0 -2002 0 *
-Ve
-1e-07
-37.037037037037 79.1183702222821 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 538 0 0 1.23456790123458
-6 1075 2 0
-6 1076 1 0
-0
-
-0101000
-+2002 0 -2000 0 *
-Ve
-1e-07
-37.6543209876543 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 539 0 0 1.23456790123458
-6 1077 2 0
-6 1078 1 0
-0
-
-0101000
-+2000 0 -1998 0 *
-Ve
-1e-07
-37.037037037037 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 540 0 0 1.23456790123457
-6 1079 2 0
-6 1080 1 0
-0
-
-0101000
-+1998 0 -1996 0 *
-Ve
-1e-07
-35.8024691358025 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 541 0 0 1.23456790123457
-6 1081 2 0
-6 1082 1 0
-0
-
-0101000
-+1996 0 -1994 0 *
-Ve
-1e-07
-35.1851851851852 78.0492030571161 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 542 0 0 1.23456790123457
-6 1083 2 0
-6 1084 1 0
-0
-
-0101000
-+1994 0 -1992 0 *
-Ve
-1e-07
-34.5679012345679 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 543 0 0 1.23456790123457
-6 1085 2 0
-6 1086 1 0
-0
-
-0101000
-+1992 0 -1990 0 *
-Ve
-1e-07
-33.3333333333333 76.9800358919501 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 544 0 0 1.23456790123457
-6 1087 2 0
-6 1088 1 0
-0
-
-0101000
-+1990 0 -1988 0 *
-Ve
-1e-07
-33.9506172839506 75.9108687267841 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 545 0 0 1.23456790123457
-6 1089 2 0
-6 1090 1 0
-0
-
-0101000
-+1988 0 -1986 0 *
-Ve
-1e-07
-33.3333333333333 74.8417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 546 0 0 1.23456790123457
-6 1091 2 0
-6 1092 1 0
-0
-
-0101000
-+1986 0 -1984 0 *
-Ve
-1e-07
-34.5679012345679 74.8417015616182 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 547 0 0 1.23456790123457
-6 1093 2 0
-6 1094 1 0
-0
-
-0101000
-+1984 0 -1982 0 *
-Ve
-1e-07
-35.1851851851852 73.7725343964522 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 548 0 0 1.23456790123457
-6 1095 2 0
-6 1096 1 0
-0
-
-0101000
-+1982 0 -1980 0 *
-Ve
-1e-07
-34.5679012345679 72.7033672312862 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 549 0 0 1.23456790123457
-6 1097 2 0
-6 1098 1 0
-0
-
-0101000
-+1980 0 -1978 0 *
-Ve
-1e-07
-33.3333333333333 72.7033672312862 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 550 0 0 1.23456790123457
-6 1099 2 0
-6 1100 1 0
-0
-
-0101000
-+1978 0 -1976 0 *
-Ve
-1e-07
-33.9506172839506 71.6342000661202 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 551 0 0 1.23456790123457
-6 1101 2 0
-6 1102 1 0
-0
-
-0101000
-+1976 0 -1974 0 *
-Ve
-1e-07
-33.3333333333333 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 552 0 0 1.23456790123457
-6 1103 2 0
-6 1104 1 0
-0
-
-0101000
-+1974 0 -1972 0 *
-Ve
-1e-07
-34.5679012345679 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 553 0 0 1.23456790123457
-6 1105 2 0
-6 1106 1 0
-0
-
-0101000
-+1972 0 -1970 0 *
-Ve
-1e-07
-35.1851851851852 69.4958657357883 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 554 0 0 1.23456790123457
-6 1107 2 0
-6 1108 1 0
-0
-
-0101000
-+1970 0 -1968 0 *
-Ve
-1e-07
-35.8024691358025 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 555 0 0 1.23456790123457
-6 1109 2 0
-6 1110 1 0
-0
-
-0101000
-+1968 0 -1966 0 *
-Ve
-1e-07
-37.037037037037 70.5650329009543 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 556 0 0 1.23456790123457
-6 1111 2 0
-6 1112 1 0
-0
-
-0101000
-+1966 0 -1964 0 *
-Ve
-1e-07
-37.6543209876543 69.4958657357883 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 557 0 0 1.23456790123457
-6 1113 2 0
-6 1114 1 0
-0
-
-0101000
-+1964 0 -1962 0 *
-Ve
-1e-07
-37.037037037037 68.4266985706223 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 558 0 0 1.23456790123458
-6 1115 2 0
-6 1116 1 0
-0
-
-0101000
-+1962 0 -1960 0 *
-Ve
-1e-07
-38.2716049382716 68.4266985706223 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 559 0 0 1.23456790123458
-6 1117 2 0
-6 1118 1 0
-0
-
-0101000
-+1960 0 -1958 0 *
-Ve
-1e-07
-38.8888888888889 67.3575314054563 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 560 0 0 1.23456790123457
-6 1119 2 0
-6 1120 1 0
-0
-
-0101000
-+1958 0 -1956 0 *
-Ve
-1e-07
-38.2716049382716 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 561 0 0 1.23456790123457
-6 1121 2 0
-6 1122 1 0
-0
-
-0101000
-+1956 0 -1954 0 *
-Ve
-1e-07
-37.037037037037 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 562 0 0 1.23456790123458
-6 1123 2 0
-6 1124 1 0
-0
-
-0101000
-+1954 0 -1952 0 *
-Ve
-1e-07
-37.6543209876543 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 563 0 0 1.23456790123458
-6 1125 2 0
-6 1126 1 0
-0
-
-0101000
-+1952 0 -1950 0 *
-Ve
-1e-07
-37.037037037037 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 564 0 0 1.23456790123457
-6 1127 2 0
-6 1128 1 0
-0
-
-0101000
-+1950 0 -1948 0 *
-Ve
-1e-07
-35.8024691358025 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 565 0 0 1.23456790123457
-6 1129 2 0
-6 1130 1 0
-0
-
-0101000
-+1948 0 -1946 0 *
-Ve
-1e-07
-35.1851851851852 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 566 0 0 1.23456790123457
-6 1131 2 0
-6 1132 1 0
-0
-
-0101000
-+1946 0 -1944 0 *
-Ve
-1e-07
-34.5679012345679 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 567 0 0 1.23456790123457
-6 1133 2 0
-6 1134 1 0
-0
-
-0101000
-+1944 0 -1942 0 *
-Ve
-1e-07
-33.3333333333333 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 568 0 0 1.23456790123457
-6 1135 2 0
-6 1136 1 0
-0
-
-0101000
-+1942 0 -1940 0 *
-Ve
-1e-07
-33.9506172839506 63.0808627447924 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 569 0 0 1.23456790123457
-6 1137 2 0
-6 1138 1 0
-0
-
-0101000
-+1940 0 -1938 0 *
-Ve
-1e-07
-33.3333333333333 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 570 0 0 1.23456790123457
-6 1139 2 0
-6 1140 1 0
-0
-
-0101000
-+1938 0 -1936 0 *
-Ve
-1e-07
-34.5679012345679 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 571 0 0 1.23456790123456
-6 1141 2 0
-6 1142 1 0
-0
-
-0101000
-+1936 0 -1934 0 *
-Ve
-1e-07
-35.1851851851852 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 572 0 0 1.23456790123457
-6 1143 2 0
-6 1144 1 0
-0
-
-0101000
-+1934 0 -1932 0 *
-Ve
-1e-07
-34.5679012345679 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 573 0 0 1.23456790123457
-6 1145 2 0
-6 1146 1 0
-0
-
-0101000
-+1932 0 -1930 0 *
-Ve
-1e-07
-33.3333333333333 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 574 0 0 1.23456790123456
-6 1147 2 0
-6 1148 1 0
-0
-
-0101000
-+1930 0 -1928 0 *
-Ve
-1e-07
-33.9506172839506 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 575 0 0 1.23456790123457
-6 1149 2 0
-6 1150 1 0
-0
-
-0101000
-+1928 0 -1926 0 *
-Ve
-1e-07
-33.3333333333333 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 576 0 0 1.23456790123457
-6 1151 2 0
-6 1152 1 0
-0
-
-0101000
-+1926 0 -1924 0 *
-Ve
-1e-07
-32.0987654320988 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 577 0 0 1.23456790123457
-6 1153 2 0
-6 1154 1 0
-0
-
-0101000
-+1924 0 -1922 0 *
-Ve
-1e-07
-31.4814814814815 58.8041940841286 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 578 0 0 1.23456790123457
-6 1155 2 0
-6 1156 1 0
-0
-
-0101000
-+1922 0 -1920 0 *
-Ve
-1e-07
-30.8641975308642 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 579 0 0 1.23456790123457
-6 1157 2 0
-6 1158 1 0
-0
-
-0101000
-+1920 0 -1918 0 *
-Ve
-1e-07
-29.6296296296296 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 580 0 0 1.23456790123457
-6 1159 2 0
-6 1160 1 0
-0
-
-0101000
-+1918 0 -1916 0 *
-Ve
-1e-07
-29.0123456790123 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 581 0 0 1.23456790123457
-6 1161 2 0
-6 1162 1 0
-0
-
-0101000
-+1916 0 -1914 0 *
-Ve
-1e-07
-29.6296296296296 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 582 0 0 1.23456790123457
-6 1163 2 0
-6 1164 1 0
-0
-
-0101000
-+1914 0 -1912 0 *
-Ve
-1e-07
-28.3950617283951 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 583 0 0 1.23456790123457
-6 1165 2 0
-6 1166 1 0
-0
-
-0101000
-+1912 0 -1910 0 *
-Ve
-1e-07
-27.7777777777778 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 584 0 0 1.23456790123457
-6 1167 2 0
-6 1168 1 0
-0
-
-0101000
-+1910 0 -1908 0 *
-Ve
-1e-07
-27.1604938271605 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 585 0 0 1.23456790123457
-6 1169 2 0
-6 1170 1 0
-0
-
-0101000
-+1908 0 -1906 0 *
-Ve
-1e-07
-25.9259259259259 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 586 0 0 1.23456790123456
-6 1171 2 0
-6 1172 1 0
-0
-
-0101000
-+1906 0 -1904 0 *
-Ve
-1e-07
-26.5432098765432 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 587 0 0 1.23456790123456
-6 1173 2 0
-6 1174 1 0
-0
-
-0101000
-+1904 0 -1902 0 *
-Ve
-1e-07
-25.9259259259259 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 588 0 0 1.23456790123457
-6 1175 2 0
-6 1176 1 0
-0
-
-0101000
-+1902 0 -1900 0 *
-Ve
-1e-07
-24.6913580246914 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 589 0 0 1.23456790123457
-6 1177 2 0
-6 1178 1 0
-0
-
-0101000
-+1900 0 -1898 0 *
-Ve
-1e-07
-24.0740740740741 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 590 0 0 1.23456790123457
-6 1179 2 0
-6 1180 1 0
-0
-
-0101000
-+1898 0 -1896 0 *
-Ve
-1e-07
-23.4567901234568 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 591 0 0 1.23456790123457
-6 1181 2 0
-6 1182 1 0
-0
-
-0101000
-+1896 0 -1894 0 *
-Ve
-1e-07
-22.2222222222222 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 592 0 0 1.23456790123457
-6 1183 2 0
-6 1184 1 0
-0
-
-0101000
-+1894 0 -1892 0 *
-Ve
-1e-07
-21.6049382716049 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 593 0 0 1.23456790123457
-6 1185 2 0
-6 1186 1 0
-0
-
-0101000
-+1892 0 -1890 0 *
-Ve
-1e-07
-22.2222222222222 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 594 0 0 1.23456790123457
-6 1187 2 0
-6 1188 1 0
-0
-
-0101000
-+1890 0 -1888 0 *
-Ve
-1e-07
-20.9876543209877 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 595 0 0 1.23456790123456
-6 1189 2 0
-6 1190 1 0
-0
-
-0101000
-+1888 0 -1886 0 *
-Ve
-1e-07
-20.3703703703704 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 596 0 0 1.23456790123457
-6 1191 2 0
-6 1192 1 0
-0
-
-0101000
-+1886 0 -1884 0 *
-Ve
-1e-07
-20.9876543209877 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 597 0 0 1.23456790123457
-6 1193 2 0
-6 1194 1 0
-0
-
-0101000
-+1884 0 -1882 0 *
-Ve
-1e-07
-22.2222222222222 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 598 0 0 1.23456790123457
-6 1195 2 0
-6 1196 1 0
-0
-
-0101000
-+1882 0 -1880 0 *
-Ve
-1e-07
-21.6049382716049 63.0808627447924 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 599 0 0 1.23456790123457
-6 1197 2 0
-6 1198 1 0
-0
-
-0101000
-+1880 0 -1878 0 *
-Ve
-1e-07
-22.2222222222222 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 600 0 0 1.23456790123457
-6 1199 2 0
-6 1200 1 0
-0
-
-0101000
-+1878 0 -1876 0 *
-Ve
-1e-07
-20.9876543209877 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 601 0 0 1.23456790123457
-6 1201 2 0
-6 1202 1 0
-0
-
-0101000
-+1876 0 -1874 0 *
-Ve
-1e-07
-20.3703703703704 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 602 0 0 1.23456790123457
-6 1203 2 0
-6 1204 1 0
-0
-
-0101000
-+1874 0 -1872 0 *
-Ve
-1e-07
-19.7530864197531 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 603 0 0 1.23456790123457
-6 1205 2 0
-6 1206 1 0
-0
-
-0101000
-+1872 0 -1870 0 *
-Ve
-1e-07
-18.5185185185185 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 604 0 0 1.23456790123457
-6 1207 2 0
-6 1208 1 0
-0
-
-0101000
-+1870 0 -1868 0 *
-Ve
-1e-07
-17.9012345679012 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 605 0 0 1.23456790123457
-6 1209 2 0
-6 1210 1 0
-0
-
-0101000
-+1868 0 -1866 0 *
-Ve
-1e-07
-18.5185185185185 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 606 0 0 1.23456790123456
-6 1211 2 0
-6 1212 1 0
-0
-
-0101000
-+1866 0 -1864 0 *
-Ve
-1e-07
-17.283950617284 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 607 0 0 1.23456790123457
-6 1213 2 0
-6 1214 1 0
-0
-
-0101000
-+1864 0 -1862 0 *
-Ve
-1e-07
-16.6666666666667 67.3575314054563 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 608 0 0 1.23456790123457
-6 1215 2 0
-6 1216 1 0
-0
-
-0101000
-+1862 0 -1860 0 *
-Ve
-1e-07
-16.0493827160494 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 609 0 0 1.23456790123457
-6 1217 2 0
-6 1218 1 0
-0
-
-0101000
-+1860 0 -1858 0 *
-Ve
-1e-07
-14.8148148148148 66.2883642402904 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 610 0 0 1.23456790123457
-6 1219 2 0
-6 1220 1 0
-0
-
-0101000
-+1858 0 -1856 0 *
-Ve
-1e-07
-15.4320987654321 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 611 0 0 1.23456790123456
-6 1221 2 0
-6 1222 1 0
-0
-
-0101000
-+1856 0 -1854 0 *
-Ve
-1e-07
-14.8148148148148 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 612 0 0 1.23456790123457
-6 1223 2 0
-6 1224 1 0
-0
-
-0101000
-+1854 0 -1852 0 *
-Ve
-1e-07
-13.5802469135803 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 613 0 0 1.23456790123457
-6 1225 2 0
-6 1226 1 0
-0
-
-0101000
-+1852 0 -1850 0 *
-Ve
-1e-07
-12.962962962963 65.2191970751244 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 614 0 0 1.23456790123457
-6 1227 2 0
-6 1228 1 0
-0
-
-0101000
-+1850 0 -1848 0 *
-Ve
-1e-07
-12.3456790123457 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 615 0 0 1.23456790123457
-6 1229 2 0
-6 1230 1 0
-0
-
-0101000
-+1848 0 -1846 0 *
-Ve
-1e-07
-11.1111111111111 64.1500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 616 0 0 1.23456790123457
-6 1231 2 0
-6 1232 1 0
-0
-
-0101000
-+1846 0 -1844 0 *
-Ve
-1e-07
-11.7283950617284 63.0808627447924 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 617 0 0 1.23456790123457
-6 1233 2 0
-6 1234 1 0
-0
-
-0101000
-+1844 0 -1842 0 *
-Ve
-1e-07
-11.1111111111111 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 618 0 0 1.23456790123457
-6 1235 2 0
-6 1236 1 0
-0
-
-0101000
-+1842 0 -1840 0 *
-Ve
-1e-07
-12.3456790123457 62.0116955796265 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 619 0 0 1.23456790123457
-6 1237 2 0
-6 1238 1 0
-0
-
-0101000
-+1840 0 -1838 0 *
-Ve
-1e-07
-12.962962962963 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 620 0 0 1.23456790123457
-6 1239 2 0
-6 1240 1 0
-0
-
-0101000
-+1838 0 -1836 0 *
-Ve
-1e-07
-12.3456790123457 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 621 0 0 1.23456790123457
-6 1241 2 0
-6 1242 1 0
-0
-
-0101000
-+1836 0 -1834 0 *
-Ve
-1e-07
-11.1111111111111 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 622 0 0 1.23456790123457
-6 1243 2 0
-6 1244 1 0
-0
-
-0101000
-+1834 0 -1832 0 *
-Ve
-1e-07
-11.7283950617284 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 623 0 0 1.23456790123457
-6 1245 2 0
-6 1246 1 0
-0
-
-0101000
-+1832 0 -1830 0 *
-Ve
-1e-07
-11.1111111111111 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 624 0 0 1.23456790123457
-6 1247 2 0
-6 1248 1 0
-0
-
-0101000
-+1830 0 -1828 0 *
-Ve
-1e-07
-9.87654320987655 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 625 0 0 1.23456790123457
-6 1249 2 0
-6 1250 1 0
-0
-
-0101000
-+1828 0 -1826 0 *
-Ve
-1e-07
-9.25925925925926 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 626 0 0 1.23456790123457
-6 1251 2 0
-6 1252 1 0
-0
-
-0101000
-+1826 0 -1824 0 *
-Ve
-1e-07
-8.64197530864198 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 627 0 0 1.23456790123457
-6 1253 2 0
-6 1254 1 0
-0
-
-0101000
-+1824 0 -1822 0 *
-Ve
-1e-07
-7.40740740740741 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 628 0 0 1.23456790123457
-6 1255 2 0
-6 1256 1 0
-0
-
-0101000
-+1822 0 -1820 0 *
-Ve
-1e-07
-6.79012345679013 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 629 0 0 1.23456790123457
-6 1257 2 0
-6 1258 1 0
-0
-
-0101000
-+1820 0 -1818 0 *
-Ve
-1e-07
-7.40740740740741 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 630 0 0 1.23456790123457
-6 1259 2 0
-6 1260 1 0
-0
-
-0101000
-+1818 0 -1816 0 *
-Ve
-1e-07
-6.17283950617284 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 631 0 0 1.23456790123457
-6 1261 2 0
-6 1262 1 0
-0
-
-0101000
-+1816 0 -1814 0 *
-Ve
-1e-07
-5.55555555555556 60.9425284144605 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 632 0 0 1.23456790123457
-6 1263 2 0
-6 1264 1 0
-0
-
-0101000
-+1814 0 -1812 0 *
-Ve
-1e-07
-4.93827160493827 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 633 0 0 1.23456790123457
-6 1265 2 0
-6 1266 1 0
-0
-
-0101000
-+1812 0 -1810 0 *
-Ve
-1e-07
-3.70370370370371 59.8733612492945 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 634 0 0 1.23456790123457
-6 1267 2 0
-6 1268 1 0
-0
-
-0101000
-+1810 0 -1808 0 *
-Ve
-1e-07
-4.32098765432099 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 635 0 0 1.23456790123457
-6 1269 2 0
-6 1270 1 0
-0
-
-0101000
-+1808 0 -1806 0 *
-Ve
-1e-07
-3.70370370370371 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 636 0 0 1.23456790123457
-6 1271 2 0
-6 1272 1 0
-0
-
-0101000
-+1806 0 -1804 0 *
-Ve
-1e-07
-2.46913580246914 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 637 0 0 1.23456790123457
-6 1273 2 0
-6 1274 1 0
-0
-
-0101000
-+1804 0 -1802 0 *
-Ve
-1e-07
-1.85185185185186 58.8041940841285 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 638 0 0 1.23456790123457
-6 1275 2 0
-6 1276 1 0
-0
-
-0101000
-+1802 0 -1800 0 *
-Ve
-1e-07
-1.23456790123457 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 639 0 0 1.23456790123457
-6 1277 2 0
-6 1278 1 0
-0
-
-0101000
-+1800 0 -1798 0 *
-Ve
-1e-07
-3.5527136788005e-15 57.7350269189626 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 640 0 0 1.23456790123457
-6 1279 2 0
-6 1280 1 0
-0
-
-0101000
-+1798 0 -1796 0 *
-Ve
-1e-07
-0.617283950617287 56.6658597537966 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 641 0 0 1.23456790123457
-6 1281 2 0
-6 1282 1 0
-0
-
-0101000
-+1796 0 -1794 0 *
-Ve
-1e-07
-4.44089209850063e-15 55.5966925886306 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 642 0 0 1.23456790123457
-6 1283 2 0
-6 1284 1 0
-0
-
-0101000
-+1794 0 -1792 0 *
-Ve
-1e-07
-1.23456790123457 55.5966925886306 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 643 0 0 1.23456790123457
-6 1285 2 0
-6 1286 1 0
-0
-
-0101000
-+1792 0 -1790 0 *
-Ve
-1e-07
-1.85185185185185 54.5275254234647 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 644 0 0 1.23456790123457
-6 1287 2 0
-6 1288 1 0
-0
-
-0101000
-+1790 0 -1788 0 *
-Ve
-1e-07
-1.23456790123457 53.4583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 645 0 0 1.23456790123457
-6 1289 2 0
-6 1290 1 0
-0
-
-0101000
-+1788 0 -1786 0 *
-Ve
-1e-07
-3.88578058618805e-15 53.4583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 646 0 0 1.23456790123457
-6 1291 2 0
-6 1292 1 0
-0
-
-0101000
-+1786 0 -1784 0 *
-Ve
-1e-07
-0.617283950617286 52.3891910931327 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 647 0 0 1.23456790123457
-6 1293 2 0
-6 1294 1 0
-0
-
-0101000
-+1784 0 -1782 0 *
-Ve
-1e-07
-2.22044604925031e-15 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 648 0 0 1.23456790123457
-6 1295 2 0
-6 1296 1 0
-0
-
-0101000
-+1782 0 -1780 0 *
-Ve
-1e-07
-1.23456790123457 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 649 0 0 1.23456790123457
-6 1297 2 0
-6 1298 1 0
-0
-
-0101000
-+1780 0 -1778 0 *
-Ve
-1e-07
-1.85185185185186 50.2508567628008 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 650 0 0 1.23456790123457
-6 1299 2 0
-6 1300 1 0
-0
-
-0101000
-+1778 0 -1776 0 *
-Ve
-1e-07
-2.46913580246914 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 651 0 0 1.23456790123457
-6 1301 2 0
-6 1302 1 0
-0
-
-0101000
-+1776 0 -1774 0 *
-Ve
-1e-07
-3.70370370370371 51.3200239279667 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 652 0 0 1.23456790123457
-6 1303 2 0
-6 1304 1 0
-0
-
-0101000
-+1774 0 -1772 0 *
-Ve
-1e-07
-4.32098765432099 50.2508567628008 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 653 0 0 1.23456790123457
-6 1305 2 0
-6 1306 1 0
-0
-
-0101000
-+1772 0 -1770 0 *
-Ve
-1e-07
-3.70370370370371 49.1816895976348 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 654 0 0 1.23456790123457
-6 1307 2 0
-6 1308 1 0
-0
-
-0101000
-+1770 0 -1768 0 *
-Ve
-1e-07
-4.93827160493827 49.1816895976348 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 655 0 0 1.23456790123457
-6 1309 2 0
-6 1310 1 0
-0
-
-0101000
-+1768 0 -1766 0 *
-Ve
-1e-07
-5.55555555555556 48.1125224324688 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 656 0 0 1.23456790123457
-6 1311 2 0
-6 1312 1 0
-0
-
-0101000
-+1766 0 -1764 0 *
-Ve
-1e-07
-4.93827160493827 47.0433552673028 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 657 0 0 1.23456790123457
-6 1313 2 0
-6 1314 1 0
-0
-
-0101000
-+1764 0 -1762 0 *
-Ve
-1e-07
-3.70370370370371 47.0433552673028 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 658 0 0 1.23456790123457
-6 1315 2 0
-6 1316 1 0
-0
-
-0101000
-+1762 0 -1760 0 *
-Ve
-1e-07
-4.32098765432099 45.9741881021369 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 659 0 0 1.23456790123457
-6 1317 2 0
-6 1318 1 0
-0
-
-0101000
-+1760 0 -1758 0 *
-Ve
-1e-07
-3.70370370370371 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 660 0 0 1.23456790123457
-6 1319 2 0
-6 1320 1 0
-0
-
-0101000
-+1758 0 -1756 0 *
-Ve
-1e-07
-2.46913580246914 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 661 0 0 1.23456790123457
-6 1321 2 0
-6 1322 1 0
-0
-
-0101000
-+1756 0 -1754 0 *
-Ve
-1e-07
-1.85185185185186 45.9741881021369 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 662 0 0 1.23456790123457
-6 1323 2 0
-6 1324 1 0
-0
-
-0101000
-+1754 0 -1752 0 *
-Ve
-1e-07
-1.23456790123457 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 663 0 0 1.23456790123457
-6 1325 2 0
-6 1326 1 0
-0
-
-0101000
-+1752 0 -1750 0 *
-Ve
-1e-07
-2.22044604925031e-15 44.9050209369709 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 664 0 0 1.23456790123457
-6 1327 2 0
-6 1328 1 0
-0
-
-0101000
-+1750 0 -1748 0 *
-Ve
-1e-07
-0.617283950617286 43.8358537718049 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 665 0 0 1.23456790123457
-6 1329 2 0
-6 1330 1 0
-0
-
-0101000
-+1748 0 -1746 0 *
-Ve
-1e-07
-3.88578058618805e-15 42.7666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 666 0 0 1.23456790123457
-6 1331 2 0
-6 1332 1 0
-0
-
-0101000
-+1746 0 -1744 0 *
-Ve
-1e-07
-1.23456790123457 42.7666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 667 0 0 1.23456790123457
-6 1333 2 0
-6 1334 1 0
-0
-
-0101000
-+1744 0 -1742 0 *
-Ve
-1e-07
-1.85185185185185 41.697519441473 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 668 0 0 1.23456790123457
-6 1335 2 0
-6 1336 1 0
-0
-
-0101000
-+1742 0 -1740 0 *
-Ve
-1e-07
-1.23456790123457 40.628352276307 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 669 0 0 1.23456790123457
-6 1337 2 0
-6 1338 1 0
-0
-
-0101000
-+1740 0 -1738 0 *
-Ve
-1e-07
-4.44089209850063e-15 40.628352276307 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 670 0 0 1.23456790123457
-6 1339 2 0
-6 1340 1 0
-0
-
-0101000
-+1738 0 -1736 0 *
-Ve
-1e-07
-0.617283950617287 39.559185111141 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 671 0 0 1.23456790123457
-6 1341 2 0
-6 1342 1 0
-0
-
-0101000
-+1736 0 -1734 0 *
-Ve
-1e-07
-3.5527136788005e-15 38.4900179459751 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 672 0 0 1.23456790123457
-6 1343 2 0
-6 1344 1 0
-0
-
-0101000
-+1734 0 -1732 0 *
-Ve
-1e-07
-1.23456790123457 38.4900179459751 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 673 0 0 1.23456790123457
-6 1345 2 0
-6 1346 1 0
-0
-
-0101000
-+1732 0 -1730 0 *
-Ve
-1e-07
-1.85185185185185 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 674 0 0 1.23456790123457
-6 1347 2 0
-6 1348 1 0
-0
-
-0101000
-+1730 0 -1728 0 *
-Ve
-1e-07
-2.46913580246914 38.4900179459751 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 675 0 0 1.23456790123457
-6 1349 2 0
-6 1350 1 0
-0
-
-0101000
-+1728 0 -1726 0 *
-Ve
-1e-07
-3.70370370370371 38.4900179459751 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 676 0 0 1.23456790123457
-6 1351 2 0
-6 1352 1 0
-0
-
-0101000
-+1726 0 -1724 0 *
-Ve
-1e-07
-4.32098765432099 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 677 0 0 1.23456790123457
-6 1353 2 0
-6 1354 1 0
-0
-
-0101000
-+1724 0 -1722 0 *
-Ve
-1e-07
-3.70370370370371 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 678 0 0 1.23456790123457
-6 1355 2 0
-6 1356 1 0
-0
-
-0101000
-+1722 0 -1720 0 *
-Ve
-1e-07
-4.93827160493827 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 679 0 0 1.23456790123457
-6 1357 2 0
-6 1358 1 0
-0
-
-0101000
-+1720 0 -1718 0 *
-Ve
-1e-07
-5.55555555555556 35.2825164504771 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 680 0 0 1.23456790123457
-6 1359 2 0
-6 1360 1 0
-0
-
-0101000
-+1718 0 -1716 0 *
-Ve
-1e-07
-6.17283950617284 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 681 0 0 1.23456790123457
-6 1361 2 0
-6 1362 1 0
-0
-
-0101000
-+1716 0 -1714 0 *
-Ve
-1e-07
-7.40740740740741 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 682 0 0 1.23456790123457
-6 1363 2 0
-6 1364 1 0
-0
-
-0101000
-+1714 0 -1712 0 *
-Ve
-1e-07
-6.79012345679013 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 683 0 0 1.23456790123456
-6 1365 2 0
-6 1366 1 0
-0
-
-0101000
-+1712 0 -1710 0 *
-Ve
-1e-07
-7.40740740740741 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 684 0 0 1.23456790123457
-6 1367 2 0
-6 1368 1 0
-0
-
-0101000
-+1710 0 -1708 0 *
-Ve
-1e-07
-8.64197530864198 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 685 0 0 1.23456790123457
-6 1369 2 0
-6 1370 1 0
-0
-
-0101000
-+1708 0 -1706 0 *
-Ve
-1e-07
-9.25925925925926 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 686 0 0 1.23456790123457
-6 1371 2 0
-6 1372 1 0
-0
-
-0101000
-+1706 0 -1704 0 *
-Ve
-1e-07
-9.87654320987654 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 687 0 0 1.23456790123457
-6 1373 2 0
-6 1374 1 0
-0
-
-0101000
-+1704 0 -1702 0 *
-Ve
-1e-07
-11.1111111111111 38.490017945975 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 688 0 0 1.23456790123457
-6 1375 2 0
-6 1376 1 0
-0
-
-0101000
-+1702 0 -1700 0 *
-Ve
-1e-07
-11.7283950617284 37.4208507808091 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 689 0 0 1.23456790123457
-6 1377 2 0
-6 1378 1 0
-0
-
-0101000
-+1700 0 -1698 0 *
-Ve
-1e-07
-11.1111111111111 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 690 0 0 1.23456790123456
-6 1379 2 0
-6 1380 1 0
-0
-
-0101000
-+1698 0 -1696 0 *
-Ve
-1e-07
-12.3456790123457 36.3516836156431 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 691 0 0 1.23456790123457
-6 1381 2 0
-6 1382 1 0
-0
-
-0101000
-+1696 0 -1694 0 *
-Ve
-1e-07
-12.962962962963 35.2825164504771 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 692 0 0 1.23456790123457
-6 1383 2 0
-6 1384 1 0
-0
-
-0101000
-+1694 0 -1692 0 *
-Ve
-1e-07
-12.3456790123457 34.2133492853112 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 693 0 0 1.23456790123457
-6 1385 2 0
-6 1386 1 0
-0
-
-0101000
-+1692 0 -1690 0 *
-Ve
-1e-07
-11.1111111111111 34.2133492853112 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 694 0 0 1.23456790123456
-6 1387 2 0
-6 1388 1 0
-0
-
-0101000
-+1690 0 -1688 0 *
-Ve
-1e-07
-11.7283950617284 33.1441821201452 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 695 0 0 1.23456790123457
-6 1389 2 0
-6 1390 1 0
-0
-
-0101000
-+1688 0 -1686 0 *
-Ve
-1e-07
-11.1111111111111 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 696 0 0 1.23456790123457
-6 1391 2 0
-6 1392 1 0
-0
-
-0101000
-+1686 0 -1684 0 *
-Ve
-1e-07
-12.3456790123457 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 697 0 0 1.23456790123457
-6 1393 2 0
-6 1394 1 0
-0
-
-0101000
-+1684 0 -1682 0 *
-Ve
-1e-07
-12.962962962963 31.0058477898132 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 698 0 0 1.23456790123457
-6 1395 2 0
-6 1396 1 0
-0
-
-0101000
-+1682 0 -1680 0 *
-Ve
-1e-07
-13.5802469135802 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 699 0 0 1.23456790123457
-6 1397 2 0
-6 1398 1 0
-0
-
-0101000
-+1680 0 -1678 0 *
-Ve
-1e-07
-14.8148148148148 32.0750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 700 0 0 1.23456790123457
-6 1399 2 0
-6 1400 1 0
-0
-
-0101000
-+1678 0 -1676 0 *
-Ve
-1e-07
-15.4320987654321 31.0058477898132 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 701 0 0 1.23456790123457
-6 1401 2 0
-6 1402 1 0
-0
-
-0101000
-+1676 0 -1674 0 *
-Ve
-1e-07
-14.8148148148148 29.9366806246473 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 702 0 0 1.23456790123457
-6 1403 2 0
-6 1404 1 0
-0
-
-0101000
-+1674 0 -1672 0 *
-Ve
-1e-07
-16.0493827160494 29.9366806246473 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 703 0 0 1.23456790123457
-6 1405 2 0
-6 1406 1 0
-0
-
-0101000
-+1672 0 -1670 0 *
-Ve
-1e-07
-16.6666666666667 28.8675134594813 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 704 0 0 1.23456790123457
-6 1407 2 0
-6 1408 1 0
-0
-
-0101000
-+1670 0 -1668 0 *
-Ve
-1e-07
-16.0493827160494 27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 705 0 0 1.23456790123457
-6 1409 2 0
-6 1410 1 0
-0
-
-0101000
-+1668 0 -1666 0 *
-Ve
-1e-07
-14.8148148148148 27.7983462943153 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 706 0 0 1.23456790123457
-6 1411 2 0
-6 1412 1 0
-0
-
-0101000
-+1666 0 -1664 0 *
-Ve
-1e-07
-15.4320987654321 26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 707 0 0 1.23456790123457
-6 1413 2 0
-6 1414 1 0
-0
-
-0101000
-+1664 0 -1662 0 *
-Ve
-1e-07
-14.8148148148148 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 708 0 0 1.23456790123457
-6 1415 2 0
-6 1416 1 0
-0
-
-0101000
-+1662 0 -1660 0 *
-Ve
-1e-07
-13.5802469135802 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 709 0 0 1.23456790123457
-6 1417 2 0
-6 1418 1 0
-0
-
-0101000
-+1660 0 -1658 0 *
-Ve
-1e-07
-12.962962962963 26.7291791291493 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 710 0 0 1.23456790123457
-6 1419 2 0
-6 1420 1 0
-0
-
-0101000
-+1658 0 -1656 0 *
-Ve
-1e-07
-12.3456790123457 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 711 0 0 1.23456790123457
-6 1421 2 0
-6 1422 1 0
-0
-
-0101000
-+1656 0 -1654 0 *
-Ve
-1e-07
-11.1111111111111 25.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 712 0 0 1.23456790123457
-6 1423 2 0
-6 1424 1 0
-0
-
-0101000
-+1654 0 -1652 0 *
-Ve
-1e-07
-11.7283950617284 24.5908447988174 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 713 0 0 1.23456790123457
-6 1425 2 0
-6 1426 1 0
-0
-
-0101000
-+1652 0 -1650 0 *
-Ve
-1e-07
-11.1111111111111 23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 714 0 0 1.23456790123457
-6 1427 2 0
-6 1428 1 0
-0
-
-0101000
-+1650 0 -1648 0 *
-Ve
-1e-07
-12.3456790123457 23.5216776336514 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 715 0 0 1.23456790123456
-6 1429 2 0
-6 1430 1 0
-0
-
-0101000
-+1648 0 -1646 0 *
-Ve
-1e-07
-12.962962962963 22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 716 0 0 1.23456790123457
-6 1431 2 0
-6 1432 1 0
-0
-
-0101000
-+1646 0 -1644 0 *
-Ve
-1e-07
-12.3456790123457 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 717 0 0 1.23456790123457
-6 1433 2 0
-6 1434 1 0
-0
-
-0101000
-+1644 0 -1642 0 *
-Ve
-1e-07
-11.1111111111111 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 718 0 0 1.23456790123457
-6 1435 2 0
-6 1436 1 0
-0
-
-0101000
-+1642 0 -1640 0 *
-Ve
-1e-07
-11.7283950617284 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 719 0 0 1.23456790123457
-6 1437 2 0
-6 1438 1 0
-0
-
-0101000
-+1640 0 -1638 0 *
-Ve
-1e-07
-11.1111111111111 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 720 0 0 1.23456790123457
-6 1439 2 0
-6 1440 1 0
-0
-
-0101000
-+1638 0 -1636 0 *
-Ve
-1e-07
-9.87654320987654 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 721 0 0 1.23456790123457
-6 1441 2 0
-6 1442 1 0
-0
-
-0101000
-+1636 0 -1634 0 *
-Ve
-1e-07
-9.25925925925926 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 722 0 0 1.23456790123457
-6 1443 2 0
-6 1444 1 0
-0
-
-0101000
-+1634 0 -1632 0 *
-Ve
-1e-07
-8.64197530864198 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 723 0 0 1.23456790123457
-6 1445 2 0
-6 1446 1 0
-0
-
-0101000
-+1632 0 -1630 0 *
-Ve
-1e-07
-7.40740740740741 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 724 0 0 1.23456790123457
-6 1447 2 0
-6 1448 1 0
-0
-
-0101000
-+1630 0 -1628 0 *
-Ve
-1e-07
-6.79012345679012 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 725 0 0 1.23456790123457
-6 1449 2 0
-6 1450 1 0
-0
-
-0101000
-+1628 0 -1626 0 *
-Ve
-1e-07
-7.40740740740741 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 726 0 0 1.23456790123457
-6 1451 2 0
-6 1452 1 0
-0
-
-0101000
-+1626 0 -1624 0 *
-Ve
-1e-07
-6.17283950617284 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 727 0 0 1.23456790123457
-6 1453 2 0
-6 1454 1 0
-0
-
-0101000
-+1624 0 -1622 0 *
-Ve
-1e-07
-5.55555555555556 22.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 728 0 0 1.23456790123457
-6 1455 2 0
-6 1456 1 0
-0
-
-0101000
-+1622 0 -1620 0 *
-Ve
-1e-07
-4.93827160493827 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 729 0 0 1.23456790123457
-6 1457 2 0
-6 1458 1 0
-0
-
-0101000
-+1620 0 -1618 0 *
-Ve
-1e-07
-3.7037037037037 21.3833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 730 0 0 1.23456790123457
-6 1459 2 0
-6 1460 1 0
-0
-
-0101000
-+1618 0 -1616 0 *
-Ve
-1e-07
-4.32098765432099 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 731 0 0 1.23456790123457
-6 1461 2 0
-6 1462 1 0
-0
-
-0101000
-+1616 0 -1614 0 *
-Ve
-1e-07
-3.7037037037037 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 732 0 0 1.23456790123457
-6 1463 2 0
-6 1464 1 0
-0
-
-0101000
-+1614 0 -1612 0 *
-Ve
-1e-07
-2.46913580246914 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 733 0 0 1.23456790123457
-6 1465 2 0
-6 1466 1 0
-0
-
-0101000
-+1612 0 -1610 0 *
-Ve
-1e-07
-1.85185185185185 20.3141761381535 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 734 0 0 1.23456790123457
-6 1467 2 0
-6 1468 1 0
-0
-
-0101000
-+1610 0 -1608 0 *
-Ve
-1e-07
-1.23456790123457 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 735 0 0 1.23456790123457
-6 1469 2 0
-6 1470 1 0
-0
-
-0101000
-+1608 0 -1606 0 *
-Ve
-1e-07
-0 19.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 736 0 0 1.23456790123457
-6 1471 2 0
-6 1472 1 0
-0
-
-0101000
-+1606 0 -1604 0 *
-Ve
-1e-07
-0.617283950617284 18.1758418078216 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 737 0 0 1.23456790123457
-6 1473 2 0
-6 1474 1 0
-0
-
-0101000
-+1604 0 -1602 0 *
-Ve
-1e-07
-1.4432899320127e-15 17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 738 0 0 1.23456790123457
-6 1475 2 0
-6 1476 1 0
-0
-
-0101000
-+1602 0 -1600 0 *
-Ve
-1e-07
-1.23456790123457 17.1066746426556 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 739 0 0 1.23456790123457
-6 1477 2 0
-6 1478 1 0
-0
-
-0101000
-+1600 0 -1598 0 *
-Ve
-1e-07
-1.85185185185185 16.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 740 0 0 1.23456790123457
-6 1479 2 0
-6 1480 1 0
-0
-
-0101000
-+1598 0 -1596 0 *
-Ve
-1e-07
-1.23456790123457 14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 741 0 0 1.23456790123457
-6 1481 2 0
-6 1482 1 0
-0
-
-0101000
-+1596 0 -1594 0 *
-Ve
-1e-07
-1.11022302462516e-15 14.9683403123236 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 742 0 0 1.23456790123457
-6 1483 2 0
-6 1484 1 0
-0
-
-0101000
-+1594 0 -1592 0 *
-Ve
-1e-07
-0.617283950617285 13.8991731471577 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 743 0 0 1.23456790123457
-6 1485 2 0
-6 1486 1 0
-0
-
-0101000
-+1592 0 -1590 0 *
-Ve
-1e-07
-1.77635683940025e-15 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 744 0 0 1.23456790123457
-6 1487 2 0
-6 1488 1 0
-0
-
-0101000
-+1590 0 -1588 0 *
-Ve
-1e-07
-1.23456790123457 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 745 0 0 1.23456790123457
-6 1489 2 0
-6 1490 1 0
-0
-
-0101000
-+1588 0 -1586 0 *
-Ve
-1e-07
-1.85185185185185 11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 746 0 0 1.23456790123457
-6 1491 2 0
-6 1492 1 0
-0
-
-0101000
-+1586 0 -1584 0 *
-Ve
-1e-07
-2.46913580246914 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 747 0 0 1.23456790123457
-6 1493 2 0
-6 1494 1 0
-0
-
-0101000
-+1584 0 -1582 0 *
-Ve
-1e-07
-3.7037037037037 12.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 748 0 0 1.23456790123457
-6 1495 2 0
-6 1496 1 0
-0
-
-0101000
-+1582 0 -1580 0 *
-Ve
-1e-07
-4.32098765432099 11.7608388168257 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 749 0 0 1.23456790123457
-6 1497 2 0
-6 1498 1 0
-0
-
-0101000
-+1580 0 -1578 0 *
-Ve
-1e-07
-3.7037037037037 10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 750 0 0 1.23456790123457
-6 1499 2 0
-6 1500 1 0
-0
-
-0101000
-+1578 0 -1576 0 *
-Ve
-1e-07
-4.93827160493827 10.6916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 751 0 0 1.23456790123457
-6 1501 2 0
-6 1502 1 0
-0
-
-0101000
-+1576 0 -1574 0 *
-Ve
-1e-07
-5.55555555555556 9.62250448649376 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 752 0 0 1.23456790123457
-6 1503 2 0
-6 1504 1 0
-0
-
-0101000
-+1574 0 -1572 0 *
-Ve
-1e-07
-4.93827160493827 8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 753 0 0 1.23456790123457
-6 1505 2 0
-6 1506 1 0
-0
-
-0101000
-+1572 0 -1570 0 *
-Ve
-1e-07
-3.7037037037037 8.55333732132779 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 754 0 0 1.23456790123457
-6 1507 2 0
-6 1508 1 0
-0
-
-0101000
-+1570 0 -1568 0 *
-Ve
-1e-07
-4.32098765432099 7.48417015616181 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 755 0 0 1.23456790123457
-6 1509 2 0
-6 1510 1 0
-0
-
-0101000
-+1568 0 -1566 0 *
-Ve
-1e-07
-3.7037037037037 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 756 0 0 1.23456790123457
-6 1511 2 0
-6 1512 1 0
-0
-
-0101000
-+1566 0 -1564 0 *
-Ve
-1e-07
-2.46913580246914 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 757 0 0 1.23456790123457
-6 1513 2 0
-6 1514 1 0
-0
-
-0101000
-+1564 0 -1562 0 *
-Ve
-1e-07
-1.85185185185185 7.48417015616181 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 758 0 0 1.23456790123457
-6 1515 2 0
-6 1516 1 0
-0
-
-0101000
-+1562 0 -1560 0 *
-Ve
-1e-07
-1.23456790123457 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 759 0 0 1.23456790123457
-6 1517 2 0
-6 1518 1 0
-0
-
-0101000
-+1560 0 -1558 0 *
-Ve
-1e-07
-8.88178419700125e-16 6.41500299099584 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 760 0 0 1.23456790123457
-6 1519 2 0
-6 1520 1 0
-0
-
-0101000
-+1558 0 -1556 0 *
-Ve
-1e-07
-0.617283950617285 5.34583582582987 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 761 0 0 1.23456790123457
-6 1521 2 0
-6 1522 1 0
-0
-
-0101000
-+1556 0 -1554 0 *
-Ve
-1e-07
-6.66133814775094e-16 4.27666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 762 0 0 1.23456790123457
-6 1523 2 0
-6 1524 1 0
-0
-
-0101000
-+1554 0 -1552 0 *
-Ve
-1e-07
-1.23456790123457 4.27666866066389 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 763 0 0 1.23456790123457
-6 1525 2 0
-6 1526 1 0
-0
-
-0101000
-+1552 0 -1550 0 *
-Ve
-1e-07
-1.85185185185185 3.20750149549792 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 764 0 0 1.23456790123457
-6 1527 2 0
-6 1528 1 0
-0
-
-0101000
-+1550 0 -1548 0 *
-Ve
-1e-07
-1.23456790123457 2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 765 0 0 1.23456790123457
-6 1529 2 0
-6 1530 1 0
-0
-
-0101000
-+1548 0 -1546 0 *
-Ve
-1e-07
-2.22044604925031e-16 2.13833433033195 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 766 0 0 1.23456790123457
-6 1531 2 0
-6 1532 1 0
-0
-
-0101000
-+1546 0 -1544 0 *
-Ve
-1e-07
-0.617283950617284 1.06916716516597 0
-0 0
-
-0101100
-*
-Ed
- 1e-07 1 1 0
-1 767 0 0 1.23456790123457
-6 1533 2 0
-6 1534 1 0
-0
-
-0101000
-+1544 0 -1542 0 *
-Ed
- 1e-07 1 1 0
-1 768 0 0 1.23456790123457
-6 1535 2 0
-6 1536 1 0
-0
-
-0101000
-+1542 0 -3075 0 *
-Wi
-
-0101000
-+3073 0 +3071 0 +3069 0 +3067 0 +3065 0 +3063 0 +3061 0 +3059 0 +3057 0 +3055 0
-+3053 0 +3051 0 +3049 0 +3047 0 +3045 0 +3043 0 +3041 0 +3039 0 +3037 0 +3035 0
-+3033 0 +3031 0 +3029 0 +3027 0 +3025 0 +3023 0 +3021 0 +3019 0 +3017 0 +3015 0
-+3013 0 +3011 0 +3009 0 +3007 0 +3005 0 +3003 0 +3001 0 +2999 0 +2997 0 +2995 0
-+2993 0 +2991 0 +2989 0 +2987 0 +2985 0 +2983 0 +2981 0 +2979 0 +2977 0 +2975 0
-+2973 0 +2971 0 +2969 0 +2967 0 +2965 0 +2963 0 +2961 0 +2959 0 +2957 0 +2955 0
-+2953 0 +2951 0 +2949 0 +2947 0 +2945 0 +2943 0 +2941 0 +2939 0 +2937 0 +2935 0
-+2933 0 +2931 0 +2929 0 +2927 0 +2925 0 +2923 0 +2921 0 +2919 0 +2917 0 +2915 0
-+2913 0 +2911 0 +2909 0 +2907 0 +2905 0 +2903 0 +2901 0 +2899 0 +2897 0 +2895 0
-+2893 0 +2891 0 +2889 0 +2887 0 +2885 0 +2883 0 +2881 0 +2879 0 +2877 0 +2875 0
-+2873 0 +2871 0 +2869 0 +2867 0 +2865 0 +2863 0 +2861 0 +2859 0 +2857 0 +2855 0
-+2853 0 +2851 0 +2849 0 +2847 0 +2845 0 +2843 0 +2841 0 +2839 0 +2837 0 +2835 0
-+2833 0 +2831 0 +2829 0 +2827 0 +2825 0 +2823 0 +2821 0 +2819 0 +2817 0 +2815 0
-+2813 0 +2811 0 +2809 0 +2807 0 +2805 0 +2803 0 +2801 0 +2799 0 +2797 0 +2795 0
-+2793 0 +2791 0 +2789 0 +2787 0 +2785 0 +2783 0 +2781 0 +2779 0 +2777 0 +2775 0
-+2773 0 +2771 0 +2769 0 +2767 0 +2765 0 +2763 0 +2761 0 +2759 0 +2757 0 +2755 0
-+2753 0 +2751 0 +2749 0 +2747 0 +2745 0 +2743 0 +2741 0 +2739 0 +2737 0 +2735 0
-+2733 0 +2731 0 +2729 0 +2727 0 +2725 0 +2723 0 +2721 0 +2719 0 +2717 0 +2715 0
-+2713 0 +2711 0 +2709 0 +2707 0 +2705 0 +2703 0 +2701 0 +2699 0 +2697 0 +2695 0
-+2693 0 +2691 0 +2689 0 +2687 0 +2685 0 +2683 0 +2681 0 +2679 0 +2677 0 +2675 0
-+2673 0 +2671 0 +2669 0 +2667 0 +2665 0 +2663 0 +2661 0 +2659 0 +2657 0 +2655 0
-+2653 0 +2651 0 +2649 0 +2647 0 +2645 0 +2643 0 +2641 0 +2639 0 +2637 0 +2635 0
-+2633 0 +2631 0 +2629 0 +2627 0 +2625 0 +2623 0 +2621 0 +2619 0 +2617 0 +2615 0
-+2613 0 +2611 0 +2609 0 +2607 0 +2605 0 +2603 0 +2601 0 +2599 0 +2597 0 +2595 0
-+2593 0 +2591 0 +2589 0 +2587 0 +2585 0 +2583 0 +2581 0 +2579 0 +2577 0 +2575 0
-+2573 0 +2571 0 +2569 0 +2567 0 +2565 0 +2563 0 +2561 0 +2559 0 +2557 0 +2555 0
-+2553 0 +2551 0 +2549 0 +2547 0 +2545 0 +2543 0 +2541 0 +2539 0 +2537 0 +2535 0
-+2533 0 +2531 0 +2529 0 +2527 0 +2525 0 +2523 0 +2521 0 +2519 0 +2517 0 +2515 0
-+2513 0 +2511 0 +2509 0 +2507 0 +2505 0 +2503 0 +2501 0 +2499 0 +2497 0 +2495 0
-+2493 0 +2491 0 +2489 0 +2487 0 +2485 0 +2483 0 +2481 0 +2479 0 +2477 0 +2475 0
-+2473 0 +2471 0 +2469 0 +2467 0 +2465 0 +2463 0 +2461 0 +2459 0 +2457 0 +2455 0
-+2453 0 +2451 0 +2449 0 +2447 0 +2445 0 +2443 0 +2441 0 +2439 0 +2437 0 +2435 0
-+2433 0 +2431 0 +2429 0 +2427 0 +2425 0 +2423 0 +2421 0 +2419 0 +2417 0 +2415 0
-+2413 0 +2411 0 +2409 0 +2407 0 +2405 0 +2403 0 +2401 0 +2399 0 +2397 0 +2395 0
-+2393 0 +2391 0 +2389 0 +2387 0 +2385 0 +2383 0 +2381 0 +2379 0 +2377 0 +2375 0
-+2373 0 +2371 0 +2369 0 +2367 0 +2365 0 +2363 0 +2361 0 +2359 0 +2357 0 +2355 0
-+2353 0 +2351 0 +2349 0 +2347 0 +2345 0 +2343 0 +2341 0 +2339 0 +2337 0 +2335 0
-+2333 0 +2331 0 +2329 0 +2327 0 +2325 0 +2323 0 +2321 0 +2319 0 +2317 0 +2315 0
-+2313 0 +2311 0 +2309 0 +2307 0 +2305 0 +2303 0 +2301 0 +2299 0 +2297 0 +2295 0
-+2293 0 +2291 0 +2289 0 +2287 0 +2285 0 +2283 0 +2281 0 +2279 0 +2277 0 +2275 0
-+2273 0 +2271 0 +2269 0 +2267 0 +2265 0 +2263 0 +2261 0 +2259 0 +2257 0 +2255 0
-+2253 0 +2251 0 +2249 0 +2247 0 +2245 0 +2243 0 +2241 0 +2239 0 +2237 0 +2235 0
-+2233 0 +2231 0 +2229 0 +2227 0 +2225 0 +2223 0 +2221 0 +2219 0 +2217 0 +2215 0
-+2213 0 +2211 0 +2209 0 +2207 0 +2205 0 +2203 0 +2201 0 +2199 0 +2197 0 +2195 0
-+2193 0 +2191 0 +2189 0 +2187 0 +2185 0 +2183 0 +2181 0 +2179 0 +2177 0 +2175 0
-+2173 0 +2171 0 +2169 0 +2167 0 +2165 0 +2163 0 +2161 0 +2159 0 +2157 0 +2155 0
-+2153 0 +2151 0 +2149 0 +2147 0 +2145 0 +2143 0 +2141 0 +2139 0 +2137 0 +2135 0
-+2133 0 +2131 0 +2129 0 +2127 0 +2125 0 +2123 0 +2121 0 +2119 0 +2117 0 +2115 0
-+2113 0 +2111 0 +2109 0 +2107 0 +2105 0 +2103 0 +2101 0 +2099 0 +2097 0 +2095 0
-+2093 0 +2091 0 +2089 0 +2087 0 +2085 0 +2083 0 +2081 0 +2079 0 +2077 0 +2075 0
-+2073 0 +2071 0 +2069 0 +2067 0 +2065 0 +2063 0 +2061 0 +2059 0 +2057 0 +2055 0
-+2053 0 +2051 0 +2049 0 +2047 0 +2045 0 +2043 0 +2041 0 +2039 0 +2037 0 +2035 0
-+2033 0 +2031 0 +2029 0 +2027 0 +2025 0 +2023 0 +2021 0 +2019 0 +2017 0 +2015 0
-+2013 0 +2011 0 +2009 0 +2007 0 +2005 0 +2003 0 +2001 0 +1999 0 +1997 0 +1995 0
-+1993 0 +1991 0 +1989 0 +1987 0 +1985 0 +1983 0 +1981 0 +1979 0 +1977 0 +1975 0
-+1973 0 +1971 0 +1969 0 +1967 0 +1965 0 +1963 0 +1961 0 +1959 0 +1957 0 +1955 0
-+1953 0 +1951 0 +1949 0 +1947 0 +1945 0 +1943 0 +1941 0 +1939 0 +1937 0 +1935 0
-+1933 0 +1931 0 +1929 0 +1927 0 +1925 0 +1923 0 +1921 0 +1919 0 +1917 0 +1915 0
-+1913 0 +1911 0 +1909 0 +1907 0 +1905 0 +1903 0 +1901 0 +1899 0 +1897 0 +1895 0
-+1893 0 +1891 0 +1889 0 +1887 0 +1885 0 +1883 0 +1881 0 +1879 0 +1877 0 +1875 0
-+1873 0 +1871 0 +1869 0 +1867 0 +1865 0 +1863 0 +1861 0 +1859 0 +1857 0 +1855 0
-+1853 0 +1851 0 +1849 0 +1847 0 +1845 0 +1843 0 +1841 0 +1839 0 +1837 0 +1835 0
-+1833 0 +1831 0 +1829 0 +1827 0 +1825 0 +1823 0 +1821 0 +1819 0 +1817 0 +1815 0
-+1813 0 +1811 0 +1809 0 +1807 0 +1805 0 +1803 0 +1801 0 +1799 0 +1797 0 +1795 0
-+1793 0 +1791 0 +1789 0 +1787 0 +1785 0 +1783 0 +1781 0 +1779 0 +1777 0 +1775 0
-+1773 0 +1771 0 +1769 0 +1767 0 +1765 0 +1763 0 +1761 0 +1759 0 +1757 0 +1755 0
-+1753 0 +1751 0 +1749 0 +1747 0 +1745 0 +1743 0 +1741 0 +1739 0 +1737 0 +1735 0
-+1733 0 +1731 0 +1729 0 +1727 0 +1725 0 +1723 0 +1721 0 +1719 0 +1717 0 +1715 0
-+1713 0 +1711 0 +1709 0 +1707 0 +1705 0 +1703 0 +1701 0 +1699 0 +1697 0 +1695 0
-+1693 0 +1691 0 +1689 0 +1687 0 +1685 0 +1683 0 +1681 0 +1679 0 +1677 0 +1675 0
-+1673 0 +1671 0 +1669 0 +1667 0 +1665 0 +1663 0 +1661 0 +1659 0 +1657 0 +1655 0
-+1653 0 +1651 0 +1649 0 +1647 0 +1645 0 +1643 0 +1641 0 +1639 0 +1637 0 +1635 0
-+1633 0 +1631 0 +1629 0 +1627 0 +1625 0 +1623 0 +1621 0 +1619 0 +1617 0 +1615 0
-+1613 0 +1611 0 +1609 0 +1607 0 +1605 0 +1603 0 +1601 0 +1599 0 +1597 0 +1595 0
-+1593 0 +1591 0 +1589 0 +1587 0 +1585 0 +1583 0 +1581 0 +1579 0 +1577 0 +1575 0
-+1573 0 +1571 0 +1569 0 +1567 0 +1565 0 +1563 0 +1561 0 +1559 0 +1557 0 +1555 0
-+1553 0 +1551 0 +1549 0 +1547 0 +1545 0 +1543 0 +1541 0 +1540 0 *
-Ve
-1e-07
-35 35 0
-0 0
-
-0101100
-*
-Ve
-1e-07
-35.3703703703704 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 769 0 0 0.37037037037037
-6 1537 1 0
-0
-
-0101000
-+1538 0 -1537 0 *
-Ve
-1e-07
-35.5555555555556 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 770 0 0 0.37037037037037
-6 1538 1 0
-0
-
-0101000
-+1537 0 -1535 0 *
-Ve
-1e-07
-35.7407407407407 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 771 0 0 0.37037037037037
-6 1539 1 0
-0
-
-0101000
-+1535 0 -1533 0 *
-Ve
-1e-07
-36.1111111111111 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 772 0 0 0.37037037037037
-6 1540 1 0
-0
-
-0101000
-+1533 0 -1531 0 *
-Ve
-1e-07
-36.2962962962963 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 773 0 0 0.37037037037037
-6 1541 1 0
-0
-
-0101000
-+1531 0 -1529 0 *
-Ve
-1e-07
-36.1111111111111 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 774 0 0 0.37037037037037
-6 1542 1 0
-0
-
-0101000
-+1529 0 -1527 0 *
-Ve
-1e-07
-36.4814814814815 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 775 0 0 0.370370370370371
-6 1543 1 0
-0
-
-0101000
-+1527 0 -1525 0 *
-Ve
-1e-07
-36.6666666666667 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 776 0 0 0.37037037037037
-6 1544 1 0
-0
-
-0101000
-+1525 0 -1523 0 *
-Ve
-1e-07
-36.8518518518519 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 777 0 0 0.37037037037037
-6 1545 1 0
-0
-
-0101000
-+1523 0 -1521 0 *
-Ve
-1e-07
-37.2222222222222 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 778 0 0 0.37037037037037
-6 1546 1 0
-0
-
-0101000
-+1521 0 -1519 0 *
-Ve
-1e-07
-37.037037037037 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 779 0 0 0.37037037037037
-6 1547 1 0
-0
-
-0101000
-+1519 0 -1517 0 *
-Ve
-1e-07
-37.2222222222222 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 780 0 0 0.37037037037037
-6 1548 1 0
-0
-
-0101000
-+1517 0 -1515 0 *
-Ve
-1e-07
-37.5925925925926 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 781 0 0 0.37037037037037
-6 1549 1 0
-0
-
-0101000
-+1515 0 -1513 0 *
-Ve
-1e-07
-37.7777777777778 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 782 0 0 0.37037037037037
-6 1550 1 0
-0
-
-0101000
-+1513 0 -1511 0 *
-Ve
-1e-07
-37.962962962963 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 783 0 0 0.370370370370371
-6 1551 1 0
-0
-
-0101000
-+1511 0 -1509 0 *
-Ve
-1e-07
-38.3333333333333 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 784 0 0 0.37037037037037
-6 1552 1 0
-0
-
-0101000
-+1509 0 -1507 0 *
-Ve
-1e-07
-38.5185185185185 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 785 0 0 0.37037037037037
-6 1553 1 0
-0
-
-0101000
-+1507 0 -1505 0 *
-Ve
-1e-07
-38.3333333333333 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 786 0 0 0.37037037037037
-6 1554 1 0
-0
-
-0101000
-+1505 0 -1503 0 *
-Ve
-1e-07
-38.7037037037037 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 787 0 0 0.37037037037037
-6 1555 1 0
-0
-
-0101000
-+1503 0 -1501 0 *
-Ve
-1e-07
-38.8888888888889 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 788 0 0 0.37037037037037
-6 1556 1 0
-0
-
-0101000
-+1501 0 -1499 0 *
-Ve
-1e-07
-38.7037037037037 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 789 0 0 0.370370370370371
-6 1557 1 0
-0
-
-0101000
-+1499 0 -1497 0 *
-Ve
-1e-07
-38.3333333333333 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 790 0 0 0.37037037037037
-6 1558 1 0
-0
-
-0101000
-+1497 0 -1495 0 *
-Ve
-1e-07
-38.5185185185185 33.396249252251 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 791 0 0 0.37037037037037
-6 1559 1 0
-0
-
-0101000
-+1495 0 -1493 0 *
-Ve
-1e-07
-38.3333333333333 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 792 0 0 0.37037037037037
-6 1560 1 0
-0
-
-0101000
-+1493 0 -1491 0 *
-Ve
-1e-07
-38.7037037037037 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 793 0 0 0.37037037037037
-6 1561 1 0
-0
-
-0101000
-+1491 0 -1489 0 *
-Ve
-1e-07
-38.8888888888889 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 794 0 0 0.37037037037037
-6 1562 1 0
-0
-
-0101000
-+1489 0 -1487 0 *
-Ve
-1e-07
-39.0740740740741 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 795 0 0 0.37037037037037
-6 1563 1 0
-0
-
-0101000
-+1487 0 -1485 0 *
-Ve
-1e-07
-39.4444444444444 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 796 0 0 0.37037037037037
-6 1564 1 0
-0
-
-0101000
-+1485 0 -1483 0 *
-Ve
-1e-07
-39.6296296296296 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 797 0 0 0.37037037037037
-6 1565 1 0
-0
-
-0101000
-+1483 0 -1481 0 *
-Ve
-1e-07
-39.4444444444444 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 798 0 0 0.37037037037037
-6 1566 1 0
-0
-
-0101000
-+1481 0 -1479 0 *
-Ve
-1e-07
-39.8148148148148 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 799 0 0 0.37037037037037
-6 1567 1 0
-0
-
-0101000
-+1479 0 -1477 0 *
-Ve
-1e-07
-40 32.1132486540519 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 800 0 0 0.37037037037037
-6 1568 1 0
-0
-
-0101000
-+1477 0 -1475 0 *
-Ve
-1e-07
-40.1851851851852 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 801 0 0 0.37037037037037
-6 1569 1 0
-0
-
-0101000
-+1475 0 -1473 0 *
-Ve
-1e-07
-40.5555555555556 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 802 0 0 0.370370370370371
-6 1570 1 0
-0
-
-0101000
-+1473 0 -1471 0 *
-Ve
-1e-07
-40.3703703703704 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 803 0 0 0.370370370370371
-6 1571 1 0
-0
-
-0101000
-+1471 0 -1469 0 *
-Ve
-1e-07
-40.5555555555556 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 804 0 0 0.37037037037037
-6 1572 1 0
-0
-
-0101000
-+1469 0 -1467 0 *
-Ve
-1e-07
-40.9259259259259 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 805 0 0 0.370370370370371
-6 1573 1 0
-0
-
-0101000
-+1467 0 -1465 0 *
-Ve
-1e-07
-41.1111111111111 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 806 0 0 0.370370370370371
-6 1574 1 0
-0
-
-0101000
-+1465 0 -1463 0 *
-Ve
-1e-07
-41.2962962962963 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 807 0 0 0.37037037037037
-6 1575 1 0
-0
-
-0101000
-+1463 0 -1461 0 *
-Ve
-1e-07
-41.6666666666667 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 808 0 0 0.370370370370371
-6 1576 1 0
-0
-
-0101000
-+1461 0 -1459 0 *
-Ve
-1e-07
-41.4814814814815 33.396249252251 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 809 0 0 0.37037037037037
-6 1577 1 0
-0
-
-0101000
-+1459 0 -1457 0 *
-Ve
-1e-07
-41.6666666666667 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 810 0 0 0.370370370370371
-6 1578 1 0
-0
-
-0101000
-+1457 0 -1455 0 *
-Ve
-1e-07
-41.2962962962963 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 811 0 0 0.37037037037037
-6 1579 1 0
-0
-
-0101000
-+1455 0 -1453 0 *
-Ve
-1e-07
-41.1111111111111 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 812 0 0 0.370370370370371
-6 1580 1 0
-0
-
-0101000
-+1453 0 -1451 0 *
-Ve
-1e-07
-41.2962962962963 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 813 0 0 0.37037037037037
-6 1581 1 0
-0
-
-0101000
-+1451 0 -1449 0 *
-Ve
-1e-07
-41.6666666666667 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 814 0 0 0.37037037037037
-6 1582 1 0
-0
-
-0101000
-+1449 0 -1447 0 *
-Ve
-1e-07
-41.4814814814815 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 815 0 0 0.37037037037037
-6 1583 1 0
-0
-
-0101000
-+1447 0 -1445 0 *
-Ve
-1e-07
-41.6666666666667 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 816 0 0 0.370370370370371
-6 1584 1 0
-0
-
-0101000
-+1445 0 -1443 0 *
-Ve
-1e-07
-42.037037037037 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 817 0 0 0.37037037037037
-6 1585 1 0
-0
-
-0101000
-+1443 0 -1441 0 *
-Ve
-1e-07
-42.2222222222222 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 818 0 0 0.37037037037037
-6 1586 1 0
-0
-
-0101000
-+1441 0 -1439 0 *
-Ve
-1e-07
-42.4074074074074 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 819 0 0 0.37037037037037
-6 1587 1 0
-0
-
-0101000
-+1439 0 -1437 0 *
-Ve
-1e-07
-42.7777777777778 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 820 0 0 0.37037037037037
-6 1588 1 0
-0
-
-0101000
-+1437 0 -1435 0 *
-Ve
-1e-07
-42.962962962963 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 821 0 0 0.37037037037037
-6 1589 1 0
-0
-
-0101000
-+1435 0 -1433 0 *
-Ve
-1e-07
-42.7777777777778 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 822 0 0 0.37037037037037
-6 1590 1 0
-0
-
-0101000
-+1433 0 -1431 0 *
-Ve
-1e-07
-43.1481481481481 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 823 0 0 0.37037037037037
-6 1591 1 0
-0
-
-0101000
-+1431 0 -1429 0 *
-Ve
-1e-07
-43.3333333333333 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 824 0 0 0.37037037037037
-6 1592 1 0
-0
-
-0101000
-+1429 0 -1427 0 *
-Ve
-1e-07
-43.5185185185185 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 825 0 0 0.37037037037037
-6 1593 1 0
-0
-
-0101000
-+1427 0 -1425 0 *
-Ve
-1e-07
-43.8888888888889 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 826 0 0 0.37037037037037
-6 1594 1 0
-0
-
-0101000
-+1425 0 -1423 0 *
-Ve
-1e-07
-43.7037037037037 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 827 0 0 0.37037037037037
-6 1595 1 0
-0
-
-0101000
-+1423 0 -1421 0 *
-Ve
-1e-07
-43.8888888888889 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 828 0 0 0.37037037037037
-6 1596 1 0
-0
-
-0101000
-+1421 0 -1419 0 *
-Ve
-1e-07
-44.2592592592593 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 829 0 0 0.37037037037037
-6 1597 1 0
-0
-
-0101000
-+1419 0 -1417 0 *
-Ve
-1e-07
-44.4444444444444 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 830 0 0 0.37037037037037
-6 1598 1 0
-0
-
-0101000
-+1417 0 -1415 0 *
-Ve
-1e-07
-44.6296296296296 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 831 0 0 0.37037037037037
-6 1599 1 0
-0
-
-0101000
-+1415 0 -1413 0 *
-Ve
-1e-07
-45 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 832 0 0 0.370370370370371
-6 1600 1 0
-0
-
-0101000
-+1413 0 -1411 0 *
-Ve
-1e-07
-45.1851851851852 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 833 0 0 0.370370370370371
-6 1601 1 0
-0
-
-0101000
-+1411 0 -1409 0 *
-Ve
-1e-07
-45 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 834 0 0 0.37037037037037
-6 1602 1 0
-0
-
-0101000
-+1409 0 -1407 0 *
-Ve
-1e-07
-45.3703703703704 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 835 0 0 0.370370370370369
-6 1603 1 0
-0
-
-0101000
-+1407 0 -1405 0 *
-Ve
-1e-07
-45.5555555555556 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 836 0 0 0.37037037037037
-6 1604 1 0
-0
-
-0101000
-+1405 0 -1403 0 *
-Ve
-1e-07
-45.3703703703704 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 837 0 0 0.370370370370371
-6 1605 1 0
-0
-
-0101000
-+1403 0 -1401 0 *
-Ve
-1e-07
-45 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 838 0 0 0.370370370370369
-6 1606 1 0
-0
-
-0101000
-+1401 0 -1399 0 *
-Ve
-1e-07
-45.1851851851852 33.396249252251 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 839 0 0 0.37037037037037
-6 1607 1 0
-0
-
-0101000
-+1399 0 -1397 0 *
-Ve
-1e-07
-45 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 840 0 0 0.37037037037037
-6 1608 1 0
-0
-
-0101000
-+1397 0 -1395 0 *
-Ve
-1e-07
-45.3703703703704 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 841 0 0 0.370370370370371
-6 1609 1 0
-0
-
-0101000
-+1395 0 -1393 0 *
-Ve
-1e-07
-45.5555555555556 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 842 0 0 0.370370370370371
-6 1610 1 0
-0
-
-0101000
-+1393 0 -1391 0 *
-Ve
-1e-07
-45.7407407407407 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 843 0 0 0.37037037037037
-6 1611 1 0
-0
-
-0101000
-+1391 0 -1389 0 *
-Ve
-1e-07
-46.1111111111111 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 844 0 0 0.370370370370371
-6 1612 1 0
-0
-
-0101000
-+1389 0 -1387 0 *
-Ve
-1e-07
-46.2962962962963 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 845 0 0 0.37037037037037
-6 1613 1 0
-0
-
-0101000
-+1387 0 -1385 0 *
-Ve
-1e-07
-46.1111111111111 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 846 0 0 0.370370370370371
-6 1614 1 0
-0
-
-0101000
-+1385 0 -1383 0 *
-Ve
-1e-07
-46.4814814814815 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 847 0 0 0.370370370370371
-6 1615 1 0
-0
-
-0101000
-+1383 0 -1381 0 *
-Ve
-1e-07
-46.6666666666667 32.1132486540519 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 848 0 0 0.37037037037037
-6 1616 1 0
-0
-
-0101000
-+1381 0 -1379 0 *
-Ve
-1e-07
-46.4814814814815 31.7924985045021 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 849 0 0 0.37037037037037
-6 1617 1 0
-0
-
-0101000
-+1379 0 -1377 0 *
-Ve
-1e-07
-46.1111111111111 31.7924985045021 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 850 0 0 0.370370370370371
-6 1618 1 0
-0
-
-0101000
-+1377 0 -1375 0 *
-Ve
-1e-07
-46.2962962962963 31.4717483549523 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 851 0 0 0.37037037037037
-6 1619 1 0
-0
-
-0101000
-+1375 0 -1373 0 *
-Ve
-1e-07
-46.1111111111111 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 852 0 0 0.37037037037037
-6 1620 1 0
-0
-
-0101000
-+1373 0 -1371 0 *
-Ve
-1e-07
-45.7407407407407 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 853 0 0 0.370370370370371
-6 1621 1 0
-0
-
-0101000
-+1371 0 -1369 0 *
-Ve
-1e-07
-45.5555555555556 31.4717483549523 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 854 0 0 0.37037037037037
-6 1622 1 0
-0
-
-0101000
-+1369 0 -1367 0 *
-Ve
-1e-07
-45.3703703703704 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 855 0 0 0.370370370370371
-6 1623 1 0
-0
-
-0101000
-+1367 0 -1365 0 *
-Ve
-1e-07
-45 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 856 0 0 0.370370370370371
-6 1624 1 0
-0
-
-0101000
-+1365 0 -1363 0 *
-Ve
-1e-07
-45.1851851851852 30.8302480558527 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 857 0 0 0.37037037037037
-6 1625 1 0
-0
-
-0101000
-+1363 0 -1361 0 *
-Ve
-1e-07
-45 30.5094979063029 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 858 0 0 0.370370370370369
-6 1626 1 0
-0
-
-0101000
-+1361 0 -1359 0 *
-Ve
-1e-07
-45.3703703703704 30.5094979063029 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 859 0 0 0.370370370370369
-6 1627 1 0
-0
-
-0101000
-+1359 0 -1357 0 *
-Ve
-1e-07
-45.5555555555556 30.1887477567531 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 860 0 0 0.37037037037037
-6 1628 1 0
-0
-
-0101000
-+1357 0 -1355 0 *
-Ve
-1e-07
-45.3703703703704 29.8679976072033 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 861 0 0 0.370370370370371
-6 1629 1 0
-0
-
-0101000
-+1355 0 -1353 0 *
-Ve
-1e-07
-45 29.8679976072033 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 862 0 0 0.370370370370369
-6 1630 1 0
-0
-
-0101000
-+1353 0 -1351 0 *
-Ve
-1e-07
-45.1851851851852 29.5472474576535 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 863 0 0 0.37037037037037
-6 1631 1 0
-0
-
-0101000
-+1351 0 -1349 0 *
-Ve
-1e-07
-45 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 864 0 0 0.370370370370371
-6 1632 1 0
-0
-
-0101000
-+1349 0 -1347 0 *
-Ve
-1e-07
-45.3703703703704 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 865 0 0 0.370370370370371
-6 1633 1 0
-0
-
-0101000
-+1347 0 -1345 0 *
-Ve
-1e-07
-45.5555555555556 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 866 0 0 0.370370370370371
-6 1634 1 0
-0
-
-0101000
-+1345 0 -1343 0 *
-Ve
-1e-07
-45.7407407407407 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 867 0 0 0.37037037037037
-6 1635 1 0
-0
-
-0101000
-+1343 0 -1341 0 *
-Ve
-1e-07
-46.1111111111111 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 868 0 0 0.370370370370371
-6 1636 1 0
-0
-
-0101000
-+1341 0 -1339 0 *
-Ve
-1e-07
-46.2962962962963 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 869 0 0 0.37037037037037
-6 1637 1 0
-0
-
-0101000
-+1339 0 -1337 0 *
-Ve
-1e-07
-46.1111111111111 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 870 0 0 0.370370370370371
-6 1638 1 0
-0
-
-0101000
-+1337 0 -1335 0 *
-Ve
-1e-07
-46.4814814814815 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 871 0 0 0.370370370370369
-6 1639 1 0
-0
-
-0101000
-+1335 0 -1333 0 *
-Ve
-1e-07
-46.6666666666667 28.2642468594544 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 872 0 0 0.37037037037037
-6 1640 1 0
-0
-
-0101000
-+1333 0 -1331 0 *
-Ve
-1e-07
-46.8518518518518 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 873 0 0 0.37037037037037
-6 1641 1 0
-0
-
-0101000
-+1331 0 -1329 0 *
-Ve
-1e-07
-47.2222222222222 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 874 0 0 0.370370370370369
-6 1642 1 0
-0
-
-0101000
-+1329 0 -1327 0 *
-Ve
-1e-07
-47.037037037037 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 875 0 0 0.37037037037037
-6 1643 1 0
-0
-
-0101000
-+1327 0 -1325 0 *
-Ve
-1e-07
-47.2222222222222 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 876 0 0 0.37037037037037
-6 1644 1 0
-0
-
-0101000
-+1325 0 -1323 0 *
-Ve
-1e-07
-47.5925925925926 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 877 0 0 0.370370370370371
-6 1645 1 0
-0
-
-0101000
-+1323 0 -1321 0 *
-Ve
-1e-07
-47.7777777777778 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 878 0 0 0.370370370370371
-6 1646 1 0
-0
-
-0101000
-+1321 0 -1319 0 *
-Ve
-1e-07
-47.962962962963 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 879 0 0 0.37037037037037
-6 1647 1 0
-0
-
-0101000
-+1319 0 -1317 0 *
-Ve
-1e-07
-48.3333333333333 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 880 0 0 0.370370370370371
-6 1648 1 0
-0
-
-0101000
-+1317 0 -1315 0 *
-Ve
-1e-07
-48.5185185185185 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 881 0 0 0.370370370370371
-6 1649 1 0
-0
-
-0101000
-+1315 0 -1313 0 *
-Ve
-1e-07
-48.3333333333333 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 882 0 0 0.370370370370371
-6 1650 1 0
-0
-
-0101000
-+1313 0 -1311 0 *
-Ve
-1e-07
-48.7037037037037 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 883 0 0 0.370370370370371
-6 1651 1 0
-0
-
-0101000
-+1311 0 -1309 0 *
-Ve
-1e-07
-48.8888888888889 28.2642468594544 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 884 0 0 0.370370370370371
-6 1652 1 0
-0
-
-0101000
-+1309 0 -1307 0 *
-Ve
-1e-07
-48.7037037037037 27.9434967099046 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 885 0 0 0.370370370370371
-6 1653 1 0
-0
-
-0101000
-+1307 0 -1305 0 *
-Ve
-1e-07
-48.3333333333333 27.9434967099046 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 886 0 0 0.370370370370371
-6 1654 1 0
-0
-
-0101000
-+1305 0 -1303 0 *
-Ve
-1e-07
-48.5185185185185 27.6227465603548 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 887 0 0 0.370370370370371
-6 1655 1 0
-0
-
-0101000
-+1303 0 -1301 0 *
-Ve
-1e-07
-48.3333333333333 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 888 0 0 0.370370370370371
-6 1656 1 0
-0
-
-0101000
-+1301 0 -1299 0 *
-Ve
-1e-07
-48.7037037037037 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 889 0 0 0.370370370370371
-6 1657 1 0
-0
-
-0101000
-+1299 0 -1297 0 *
-Ve
-1e-07
-48.8888888888889 26.9812462612552 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 890 0 0 0.37037037037037
-6 1658 1 0
-0
-
-0101000
-+1297 0 -1295 0 *
-Ve
-1e-07
-49.0740740740741 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 891 0 0 0.370370370370372
-6 1659 1 0
-0
-
-0101000
-+1295 0 -1293 0 *
-Ve
-1e-07
-49.4444444444444 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 892 0 0 0.370370370370371
-6 1660 1 0
-0
-
-0101000
-+1293 0 -1291 0 *
-Ve
-1e-07
-49.6296296296296 26.9812462612552 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 893 0 0 0.370370370370371
-6 1661 1 0
-0
-
-0101000
-+1291 0 -1289 0 *
-Ve
-1e-07
-49.4444444444444 26.6604961117054 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 894 0 0 0.37037037037037
-6 1662 1 0
-0
-
-0101000
-+1289 0 -1287 0 *
-Ve
-1e-07
-49.8148148148148 26.6604961117054 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 895 0 0 0.370370370370369
-6 1663 1 0
-0
-
-0101000
-+1287 0 -1285 0 *
-Ve
-1e-07
-50 26.3397459621556 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 896 0 0 0.370370370370371
-6 1664 1 0
-0
-
-0101000
-+1285 0 -1283 0 *
-Ve
-1e-07
-50.1851851851852 26.6604961117054 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 897 0 0 0.370370370370371
-6 1665 1 0
-0
-
-0101000
-+1283 0 -1281 0 *
-Ve
-1e-07
-50.5555555555556 26.6604961117054 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 898 0 0 0.370370370370369
-6 1666 1 0
-0
-
-0101000
-+1281 0 -1279 0 *
-Ve
-1e-07
-50.3703703703704 26.9812462612552 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 899 0 0 0.37037037037037
-6 1667 1 0
-0
-
-0101000
-+1279 0 -1277 0 *
-Ve
-1e-07
-50.5555555555556 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 900 0 0 0.370370370370371
-6 1668 1 0
-0
-
-0101000
-+1277 0 -1275 0 *
-Ve
-1e-07
-50.9259259259259 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 901 0 0 0.370370370370371
-6 1669 1 0
-0
-
-0101000
-+1275 0 -1273 0 *
-Ve
-1e-07
-51.1111111111111 26.9812462612552 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 902 0 0 0.370370370370372
-6 1670 1 0
-0
-
-0101000
-+1273 0 -1271 0 *
-Ve
-1e-07
-51.2962962962963 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 903 0 0 0.37037037037037
-6 1671 1 0
-0
-
-0101000
-+1271 0 -1269 0 *
-Ve
-1e-07
-51.6666666666667 27.301996410805 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 904 0 0 0.370370370370371
-6 1672 1 0
-0
-
-0101000
-+1269 0 -1267 0 *
-Ve
-1e-07
-51.4814814814815 27.6227465603548 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 905 0 0 0.370370370370371
-6 1673 1 0
-0
-
-0101000
-+1267 0 -1265 0 *
-Ve
-1e-07
-51.6666666666667 27.9434967099046 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 906 0 0 0.370370370370371
-6 1674 1 0
-0
-
-0101000
-+1265 0 -1263 0 *
-Ve
-1e-07
-51.2962962962963 27.9434967099046 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 907 0 0 0.370370370370371
-6 1675 1 0
-0
-
-0101000
-+1263 0 -1261 0 *
-Ve
-1e-07
-51.1111111111111 28.2642468594544 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 908 0 0 0.370370370370371
-6 1676 1 0
-0
-
-0101000
-+1261 0 -1259 0 *
-Ve
-1e-07
-51.2962962962963 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 909 0 0 0.370370370370371
-6 1677 1 0
-0
-
-0101000
-+1259 0 -1257 0 *
-Ve
-1e-07
-51.6666666666667 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 910 0 0 0.370370370370371
-6 1678 1 0
-0
-
-0101000
-+1257 0 -1255 0 *
-Ve
-1e-07
-51.4814814814815 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 911 0 0 0.370370370370371
-6 1679 1 0
-0
-
-0101000
-+1255 0 -1253 0 *
-Ve
-1e-07
-51.6666666666667 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 912 0 0 0.370370370370371
-6 1680 1 0
-0
-
-0101000
-+1253 0 -1251 0 *
-Ve
-1e-07
-52.037037037037 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 913 0 0 0.370370370370371
-6 1681 1 0
-0
-
-0101000
-+1251 0 -1249 0 *
-Ve
-1e-07
-52.2222222222222 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 914 0 0 0.37037037037037
-6 1682 1 0
-0
-
-0101000
-+1249 0 -1247 0 *
-Ve
-1e-07
-52.4074074074074 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 915 0 0 0.370370370370371
-6 1683 1 0
-0
-
-0101000
-+1247 0 -1245 0 *
-Ve
-1e-07
-52.7777777777778 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 916 0 0 0.370370370370371
-6 1684 1 0
-0
-
-0101000
-+1245 0 -1243 0 *
-Ve
-1e-07
-52.962962962963 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 917 0 0 0.37037037037037
-6 1685 1 0
-0
-
-0101000
-+1243 0 -1241 0 *
-Ve
-1e-07
-52.7777777777778 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 918 0 0 0.37037037037037
-6 1686 1 0
-0
-
-0101000
-+1241 0 -1239 0 *
-Ve
-1e-07
-53.1481481481481 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 919 0 0 0.370370370370369
-6 1687 1 0
-0
-
-0101000
-+1239 0 -1237 0 *
-Ve
-1e-07
-53.3333333333333 28.2642468594544 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 920 0 0 0.37037037037037
-6 1688 1 0
-0
-
-0101000
-+1237 0 -1235 0 *
-Ve
-1e-07
-53.5185185185185 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 921 0 0 0.37037037037037
-6 1689 1 0
-0
-
-0101000
-+1235 0 -1233 0 *
-Ve
-1e-07
-53.8888888888889 28.5849970090042 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 922 0 0 0.370370370370369
-6 1690 1 0
-0
-
-0101000
-+1233 0 -1231 0 *
-Ve
-1e-07
-53.7037037037037 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 923 0 0 0.37037037037037
-6 1691 1 0
-0
-
-0101000
-+1231 0 -1229 0 *
-Ve
-1e-07
-53.8888888888889 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 924 0 0 0.37037037037037
-6 1692 1 0
-0
-
-0101000
-+1229 0 -1227 0 *
-Ve
-1e-07
-54.2592592592593 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 925 0 0 0.370370370370369
-6 1693 1 0
-0
-
-0101000
-+1227 0 -1225 0 *
-Ve
-1e-07
-54.4444444444444 28.905747158554 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 926 0 0 0.37037037037037
-6 1694 1 0
-0
-
-0101000
-+1225 0 -1223 0 *
-Ve
-1e-07
-54.6296296296296 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 927 0 0 0.370370370370368
-6 1695 1 0
-0
-
-0101000
-+1223 0 -1221 0 *
-Ve
-1e-07
-55 29.2264973081037 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 928 0 0 0.370370370370371
-6 1696 1 0
-0
-
-0101000
-+1221 0 -1219 0 *
-Ve
-1e-07
-54.8148148148148 29.5472474576535 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 929 0 0 0.37037037037037
-6 1697 1 0
-0
-
-0101000
-+1219 0 -1217 0 *
-Ve
-1e-07
-55 29.8679976072033 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 930 0 0 0.370370370370369
-6 1698 1 0
-0
-
-0101000
-+1217 0 -1215 0 *
-Ve
-1e-07
-54.6296296296296 29.8679976072033 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 931 0 0 0.370370370370371
-6 1699 1 0
-0
-
-0101000
-+1215 0 -1213 0 *
-Ve
-1e-07
-54.4444444444444 30.1887477567531 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 932 0 0 0.37037037037037
-6 1700 1 0
-0
-
-0101000
-+1213 0 -1211 0 *
-Ve
-1e-07
-54.6296296296296 30.5094979063029 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 933 0 0 0.370370370370369
-6 1701 1 0
-0
-
-0101000
-+1211 0 -1209 0 *
-Ve
-1e-07
-55 30.5094979063029 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 934 0 0 0.370370370370371
-6 1702 1 0
-0
-
-0101000
-+1209 0 -1207 0 *
-Ve
-1e-07
-54.8148148148148 30.8302480558527 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 935 0 0 0.370370370370368
-6 1703 1 0
-0
-
-0101000
-+1207 0 -1205 0 *
-Ve
-1e-07
-55 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 936 0 0 0.370370370370369
-6 1704 1 0
-0
-
-0101000
-+1205 0 -1203 0 *
-Ve
-1e-07
-54.6296296296296 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 937 0 0 0.370370370370371
-6 1705 1 0
-0
-
-0101000
-+1203 0 -1201 0 *
-Ve
-1e-07
-54.4444444444444 31.4717483549523 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 938 0 0 0.37037037037037
-6 1706 1 0
-0
-
-0101000
-+1201 0 -1199 0 *
-Ve
-1e-07
-54.2592592592593 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 939 0 0 0.370370370370372
-6 1707 1 0
-0
-
-0101000
-+1199 0 -1197 0 *
-Ve
-1e-07
-53.8888888888889 31.1509982054025 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 940 0 0 0.370370370370369
-6 1708 1 0
-0
-
-0101000
-+1197 0 -1195 0 *
-Ve
-1e-07
-53.7037037037037 31.4717483549523 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 941 0 0 0.37037037037037
-6 1709 1 0
-0
-
-0101000
-+1195 0 -1193 0 *
-Ve
-1e-07
-53.8888888888889 31.7924985045021 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 942 0 0 0.370370370370369
-6 1710 1 0
-0
-
-0101000
-+1193 0 -1191 0 *
-Ve
-1e-07
-53.5185185185185 31.7924985045021 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 943 0 0 0.370370370370369
-6 1711 1 0
-0
-
-0101000
-+1191 0 -1189 0 *
-Ve
-1e-07
-53.3333333333333 32.1132486540519 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 944 0 0 0.37037037037037
-6 1712 1 0
-0
-
-0101000
-+1189 0 -1187 0 *
-Ve
-1e-07
-53.5185185185185 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 945 0 0 0.37037037037037
-6 1713 1 0
-0
-
-0101000
-+1187 0 -1185 0 *
-Ve
-1e-07
-53.8888888888889 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 946 0 0 0.370370370370369
-6 1714 1 0
-0
-
-0101000
-+1185 0 -1183 0 *
-Ve
-1e-07
-53.7037037037037 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 947 0 0 0.37037037037037
-6 1715 1 0
-0
-
-0101000
-+1183 0 -1181 0 *
-Ve
-1e-07
-53.8888888888889 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 948 0 0 0.37037037037037
-6 1716 1 0
-0
-
-0101000
-+1181 0 -1179 0 *
-Ve
-1e-07
-54.2592592592593 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 949 0 0 0.370370370370369
-6 1717 1 0
-0
-
-0101000
-+1179 0 -1177 0 *
-Ve
-1e-07
-54.4444444444444 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 950 0 0 0.370370370370371
-6 1718 1 0
-0
-
-0101000
-+1177 0 -1175 0 *
-Ve
-1e-07
-54.6296296296296 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 951 0 0 0.370370370370368
-6 1719 1 0
-0
-
-0101000
-+1175 0 -1173 0 *
-Ve
-1e-07
-55 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 952 0 0 0.370370370370371
-6 1720 1 0
-0
-
-0101000
-+1173 0 -1171 0 *
-Ve
-1e-07
-54.8148148148148 33.396249252251 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 953 0 0 0.370370370370369
-6 1721 1 0
-0
-
-0101000
-+1171 0 -1169 0 *
-Ve
-1e-07
-55 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 954 0 0 0.370370370370369
-6 1722 1 0
-0
-
-0101000
-+1169 0 -1167 0 *
-Ve
-1e-07
-54.6296296296296 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 955 0 0 0.370370370370371
-6 1723 1 0
-0
-
-0101000
-+1167 0 -1165 0 *
-Ve
-1e-07
-54.4444444444444 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 956 0 0 0.37037037037037
-6 1724 1 0
-0
-
-0101000
-+1165 0 -1163 0 *
-Ve
-1e-07
-54.6296296296296 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 957 0 0 0.370370370370369
-6 1725 1 0
-0
-
-0101000
-+1163 0 -1161 0 *
-Ve
-1e-07
-55 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 958 0 0 0.370370370370371
-6 1726 1 0
-0
-
-0101000
-+1161 0 -1159 0 *
-Ve
-1e-07
-54.8148148148148 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 959 0 0 0.370370370370369
-6 1727 1 0
-0
-
-0101000
-+1159 0 -1157 0 *
-Ve
-1e-07
-55 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 960 0 0 0.370370370370369
-6 1728 1 0
-0
-
-0101000
-+1157 0 -1155 0 *
-Ve
-1e-07
-55.3703703703704 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 961 0 0 0.370370370370371
-6 1729 1 0
-0
-
-0101000
-+1155 0 -1153 0 *
-Ve
-1e-07
-55.5555555555556 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 962 0 0 0.370370370370372
-6 1730 1 0
-0
-
-0101000
-+1153 0 -1151 0 *
-Ve
-1e-07
-55.7407407407407 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 963 0 0 0.37037037037037
-6 1731 1 0
-0
-
-0101000
-+1151 0 -1149 0 *
-Ve
-1e-07
-56.1111111111111 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 964 0 0 0.370370370370371
-6 1732 1 0
-0
-
-0101000
-+1149 0 -1147 0 *
-Ve
-1e-07
-56.2962962962963 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 965 0 0 0.37037037037037
-6 1733 1 0
-0
-
-0101000
-+1147 0 -1145 0 *
-Ve
-1e-07
-56.1111111111111 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 966 0 0 0.370370370370369
-6 1734 1 0
-0
-
-0101000
-+1145 0 -1143 0 *
-Ve
-1e-07
-56.4814814814815 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 967 0 0 0.370370370370371
-6 1735 1 0
-0
-
-0101000
-+1143 0 -1141 0 *
-Ve
-1e-07
-56.6666666666667 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 968 0 0 0.37037037037037
-6 1736 1 0
-0
-
-0101000
-+1141 0 -1139 0 *
-Ve
-1e-07
-56.8518518518518 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 969 0 0 0.37037037037037
-6 1737 1 0
-0
-
-0101000
-+1139 0 -1137 0 *
-Ve
-1e-07
-57.2222222222222 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 970 0 0 0.370370370370371
-6 1738 1 0
-0
-
-0101000
-+1137 0 -1135 0 *
-Ve
-1e-07
-57.037037037037 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 971 0 0 0.370370370370369
-6 1739 1 0
-0
-
-0101000
-+1135 0 -1133 0 *
-Ve
-1e-07
-57.2222222222222 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 972 0 0 0.37037037037037
-6 1740 1 0
-0
-
-0101000
-+1133 0 -1131 0 *
-Ve
-1e-07
-57.5925925925926 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 973 0 0 0.370370370370371
-6 1741 1 0
-0
-
-0101000
-+1131 0 -1129 0 *
-Ve
-1e-07
-57.7777777777778 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 974 0 0 0.37037037037037
-6 1742 1 0
-0
-
-0101000
-+1129 0 -1127 0 *
-Ve
-1e-07
-57.962962962963 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 975 0 0 0.370370370370372
-6 1743 1 0
-0
-
-0101000
-+1127 0 -1125 0 *
-Ve
-1e-07
-58.3333333333333 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 976 0 0 0.370370370370371
-6 1744 1 0
-0
-
-0101000
-+1125 0 -1123 0 *
-Ve
-1e-07
-58.5185185185185 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 977 0 0 0.37037037037037
-6 1745 1 0
-0
-
-0101000
-+1123 0 -1121 0 *
-Ve
-1e-07
-58.3333333333333 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 978 0 0 0.370370370370369
-6 1746 1 0
-0
-
-0101000
-+1121 0 -1119 0 *
-Ve
-1e-07
-58.7037037037037 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 979 0 0 0.370370370370371
-6 1747 1 0
-0
-
-0101000
-+1119 0 -1117 0 *
-Ve
-1e-07
-58.8888888888889 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 980 0 0 0.37037037037037
-6 1748 1 0
-0
-
-0101000
-+1117 0 -1115 0 *
-Ve
-1e-07
-58.7037037037037 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 981 0 0 0.37037037037037
-6 1749 1 0
-0
-
-0101000
-+1115 0 -1113 0 *
-Ve
-1e-07
-58.3333333333333 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 982 0 0 0.370370370370367
-6 1750 1 0
-0
-
-0101000
-+1113 0 -1111 0 *
-Ve
-1e-07
-58.5185185185185 33.396249252251 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 983 0 0 0.370370370370368
-6 1751 1 0
-0
-
-0101000
-+1111 0 -1109 0 *
-Ve
-1e-07
-58.3333333333333 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 984 0 0 0.370370370370369
-6 1752 1 0
-0
-
-0101000
-+1109 0 -1107 0 *
-Ve
-1e-07
-58.7037037037037 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 985 0 0 0.370370370370371
-6 1753 1 0
-0
-
-0101000
-+1107 0 -1105 0 *
-Ve
-1e-07
-58.8888888888889 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 986 0 0 0.37037037037037
-6 1754 1 0
-0
-
-0101000
-+1105 0 -1103 0 *
-Ve
-1e-07
-59.0740740740741 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 987 0 0 0.37037037037037
-6 1755 1 0
-0
-
-0101000
-+1103 0 -1101 0 *
-Ve
-1e-07
-59.4444444444444 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 988 0 0 0.370370370370371
-6 1756 1 0
-0
-
-0101000
-+1101 0 -1099 0 *
-Ve
-1e-07
-59.6296296296296 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 989 0 0 0.370370370370369
-6 1757 1 0
-0
-
-0101000
-+1099 0 -1097 0 *
-Ve
-1e-07
-59.4444444444444 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 990 0 0 0.370370370370369
-6 1758 1 0
-0
-
-0101000
-+1097 0 -1095 0 *
-Ve
-1e-07
-59.8148148148148 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 991 0 0 0.370370370370371
-6 1759 1 0
-0
-
-0101000
-+1095 0 -1093 0 *
-Ve
-1e-07
-60 32.1132486540519 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 992 0 0 0.370370370370369
-6 1760 1 0
-0
-
-0101000
-+1093 0 -1091 0 *
-Ve
-1e-07
-60.1851851851852 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 993 0 0 0.370370370370369
-6 1761 1 0
-0
-
-0101000
-+1091 0 -1089 0 *
-Ve
-1e-07
-60.5555555555556 32.4339988036017 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 994 0 0 0.370370370370371
-6 1762 1 0
-0
-
-0101000
-+1089 0 -1087 0 *
-Ve
-1e-07
-60.3703703703704 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 995 0 0 0.370370370370369
-6 1763 1 0
-0
-
-0101000
-+1087 0 -1085 0 *
-Ve
-1e-07
-60.5555555555556 33.0754991027012 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 996 0 0 0.370370370370369
-6 1764 1 0
-0
-
-0101000
-+1085 0 -1083 0 *
-Ve
-1e-07
-60.9259259259259 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 997 0 0 0.370370370370371
-6 1765 1 0
-0
-
-0101000
-+1083 0 -1081 0 *
-Ve
-1e-07
-61.1111111111111 32.7547489531515 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 998 0 0 0.37037037037037
-6 1766 1 0
-0
-
-0101000
-+1081 0 -1079 0 *
-Ve
-1e-07
-61.2962962962963 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 999 0 0 0.37037037037037
-6 1767 1 0
-0
-
-0101000
-+1079 0 -1077 0 *
-Ve
-1e-07
-61.6666666666667 33.0754991027013 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1000 0 0 0.370370370370371
-6 1768 1 0
-0
-
-0101000
-+1077 0 -1075 0 *
-Ve
-1e-07
-61.4814814814815 33.396249252251 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1001 0 0 0.370370370370369
-6 1769 1 0
-0
-
-0101000
-+1075 0 -1073 0 *
-Ve
-1e-07
-61.6666666666667 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1002 0 0 0.370370370370369
-6 1770 1 0
-0
-
-0101000
-+1073 0 -1071 0 *
-Ve
-1e-07
-61.2962962962963 33.7169994018008 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1003 0 0 0.370370370370371
-6 1771 1 0
-0
-
-0101000
-+1071 0 -1069 0 *
-Ve
-1e-07
-61.1111111111111 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1004 0 0 0.370370370370369
-6 1772 1 0
-0
-
-0101000
-+1069 0 -1067 0 *
-Ve
-1e-07
-61.2962962962963 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1005 0 0 0.37037037037037
-6 1773 1 0
-0
-
-0101000
-+1067 0 -1065 0 *
-Ve
-1e-07
-61.6666666666667 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1006 0 0 0.370370370370371
-6 1774 1 0
-0
-
-0101000
-+1065 0 -1063 0 *
-Ve
-1e-07
-61.4814814814815 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1007 0 0 0.370370370370369
-6 1775 1 0
-0
-
-0101000
-+1063 0 -1061 0 *
-Ve
-1e-07
-61.6666666666667 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1008 0 0 0.37037037037037
-6 1776 1 0
-0
-
-0101000
-+1061 0 -1059 0 *
-Ve
-1e-07
-62.037037037037 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1009 0 0 0.370370370370371
-6 1777 1 0
-0
-
-0101000
-+1059 0 -1057 0 *
-Ve
-1e-07
-62.2222222222222 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1010 0 0 0.37037037037037
-6 1778 1 0
-0
-
-0101000
-+1057 0 -1055 0 *
-Ve
-1e-07
-62.4074074074074 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1011 0 0 0.370370370370372
-6 1779 1 0
-0
-
-0101000
-+1055 0 -1053 0 *
-Ve
-1e-07
-62.7777777777778 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1012 0 0 0.370370370370371
-6 1780 1 0
-0
-
-0101000
-+1053 0 -1051 0 *
-Ve
-1e-07
-62.962962962963 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1013 0 0 0.37037037037037
-6 1781 1 0
-0
-
-0101000
-+1051 0 -1049 0 *
-Ve
-1e-07
-62.7777777777778 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1014 0 0 0.370370370370369
-6 1782 1 0
-0
-
-0101000
-+1049 0 -1047 0 *
-Ve
-1e-07
-63.1481481481481 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1015 0 0 0.370370370370371
-6 1783 1 0
-0
-
-0101000
-+1047 0 -1045 0 *
-Ve
-1e-07
-63.3333333333333 34.0377495513506 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1016 0 0 0.37037037037037
-6 1784 1 0
-0
-
-0101000
-+1045 0 -1043 0 *
-Ve
-1e-07
-63.5185185185185 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1017 0 0 0.37037037037037
-6 1785 1 0
-0
-
-0101000
-+1043 0 -1041 0 *
-Ve
-1e-07
-63.8888888888889 34.3584997009004 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1018 0 0 0.370370370370371
-6 1786 1 0
-0
-
-0101000
-+1041 0 -1039 0 *
-Ve
-1e-07
-63.7037037037037 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1019 0 0 0.370370370370369
-6 1787 1 0
-0
-
-0101000
-+1039 0 -1037 0 *
-Ve
-1e-07
-63.8888888888889 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1020 0 0 0.37037037037037
-6 1788 1 0
-0
-
-0101000
-+1037 0 -1035 0 *
-Ve
-1e-07
-64.2592592592593 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1021 0 0 0.370370370370371
-6 1789 1 0
-0
-
-0101000
-+1035 0 -1033 0 *
-Ve
-1e-07
-64.4444444444444 34.6792498504502 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1022 0 0 0.370370370370372
-6 1790 1 0
-0
-
-0101000
-+1033 0 -1031 0 *
-Ve
-1e-07
-64.6296296296296 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1023 0 0 0.37037037037037
-6 1791 1 0
-0
-
-0101000
-+1031 0 -1029 0 *
-Ve
-1e-07
-65 35 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1024 0 0 0.370370370370371
-6 1792 1 0
-0
-
-0101000
-+1029 0 -1027 0 *
-Ve
-1e-07
-64.8148148148148 35.3207501495498 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1025 0 0 0.370370370370369
-6 1793 1 0
-0
-
-0101000
-+1027 0 -1025 0 *
-Ve
-1e-07
-65 35.6415002990996 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1026 0 0 0.370370370370369
-6 1794 1 0
-0
-
-0101000
-+1025 0 -1023 0 *
-Ve
-1e-07
-64.6296296296296 35.6415002990996 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1027 0 0 0.370370370370371
-6 1795 1 0
-0
-
-0101000
-+1023 0 -1021 0 *
-Ve
-1e-07
-64.4444444444444 35.9622504486494 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1028 0 0 0.370370370370369
-6 1796 1 0
-0
-
-0101000
-+1021 0 -1019 0 *
-Ve
-1e-07
-64.6296296296296 36.2830005981992 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1029 0 0 0.370370370370369
-6 1797 1 0
-0
-
-0101000
-+1019 0 -1017 0 *
-Ve
-1e-07
-65 36.2830005981992 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1030 0 0 0.370370370370371
-6 1798 1 0
-0
-
-0101000
-+1017 0 -1015 0 *
-Ve
-1e-07
-64.8148148148148 36.603750747749 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1031 0 0 0.370370370370369
-6 1799 1 0
-0
-
-0101000
-+1015 0 -1013 0 *
-Ve
-1e-07
-65 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1032 0 0 0.370370370370369
-6 1800 1 0
-0
-
-0101000
-+1013 0 -1011 0 *
-Ve
-1e-07
-64.6296296296296 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1033 0 0 0.370370370370371
-6 1801 1 0
-0
-
-0101000
-+1011 0 -1009 0 *
-Ve
-1e-07
-64.4444444444444 37.2452510468485 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1034 0 0 0.37037037037037
-6 1802 1 0
-0
-
-0101000
-+1009 0 -1007 0 *
-Ve
-1e-07
-64.2592592592593 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1035 0 0 0.370370370370372
-6 1803 1 0
-0
-
-0101000
-+1007 0 -1005 0 *
-Ve
-1e-07
-63.8888888888889 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1036 0 0 0.370370370370371
-6 1804 1 0
-0
-
-0101000
-+1005 0 -1003 0 *
-Ve
-1e-07
-63.7037037037037 37.2452510468485 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1037 0 0 0.370370370370369
-6 1805 1 0
-0
-
-0101000
-+1003 0 -1001 0 *
-Ve
-1e-07
-63.8888888888889 37.5660011963983 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1038 0 0 0.370370370370369
-6 1806 1 0
-0
-
-0101000
-+1001 0 -999 0 *
-Ve
-1e-07
-63.5185185185185 37.5660011963983 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1039 0 0 0.370370370370371
-6 1807 1 0
-0
-
-0101000
-+999 0 -997 0 *
-Ve
-1e-07
-63.3333333333333 37.8867513459481 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1040 0 0 0.370370370370369
-6 1808 1 0
-0
-
-0101000
-+997 0 -995 0 *
-Ve
-1e-07
-63.5185185185185 38.2075014954979 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1041 0 0 0.370370370370369
-6 1809 1 0
-0
-
-0101000
-+995 0 -993 0 *
-Ve
-1e-07
-63.8888888888889 38.2075014954979 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1042 0 0 0.370370370370371
-6 1810 1 0
-0
-
-0101000
-+993 0 -991 0 *
-Ve
-1e-07
-63.7037037037037 38.5282516450477 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1043 0 0 0.370370370370369
-6 1811 1 0
-0
-
-0101000
-+991 0 -989 0 *
-Ve
-1e-07
-63.8888888888889 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1044 0 0 0.370370370370369
-6 1812 1 0
-0
-
-0101000
-+989 0 -987 0 *
-Ve
-1e-07
-64.2592592592593 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1045 0 0 0.370370370370371
-6 1813 1 0
-0
-
-0101000
-+987 0 -985 0 *
-Ve
-1e-07
-64.4444444444444 38.5282516450477 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1046 0 0 0.370370370370372
-6 1814 1 0
-0
-
-0101000
-+985 0 -983 0 *
-Ve
-1e-07
-64.6296296296296 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1047 0 0 0.37037037037037
-6 1815 1 0
-0
-
-0101000
-+983 0 -981 0 *
-Ve
-1e-07
-65 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1048 0 0 0.370370370370371
-6 1816 1 0
-0
-
-0101000
-+981 0 -979 0 *
-Ve
-1e-07
-64.8148148148148 39.1697519441473 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1049 0 0 0.370370370370372
-6 1817 1 0
-0
-
-0101000
-+979 0 -977 0 *
-Ve
-1e-07
-65 39.4905020936971 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1050 0 0 0.370370370370372
-6 1818 1 0
-0
-
-0101000
-+977 0 -975 0 *
-Ve
-1e-07
-64.6296296296296 39.4905020936971 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1051 0 0 0.370370370370371
-6 1819 1 0
-0
-
-0101000
-+975 0 -973 0 *
-Ve
-1e-07
-64.4444444444444 39.8112522432469 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1052 0 0 0.370370370370372
-6 1820 1 0
-0
-
-0101000
-+973 0 -971 0 *
-Ve
-1e-07
-64.6296296296296 40.1320023927967 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1053 0 0 0.37037037037037
-6 1821 1 0
-0
-
-0101000
-+971 0 -969 0 *
-Ve
-1e-07
-65 40.1320023927967 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1054 0 0 0.370370370370371
-6 1822 1 0
-0
-
-0101000
-+969 0 -967 0 *
-Ve
-1e-07
-64.8148148148148 40.4527525423465 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1055 0 0 0.370370370370369
-6 1823 1 0
-0
-
-0101000
-+967 0 -965 0 *
-Ve
-1e-07
-65 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1056 0 0 0.37037037037037
-6 1824 1 0
-0
-
-0101000
-+965 0 -963 0 *
-Ve
-1e-07
-64.6296296296296 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1057 0 0 0.370370370370371
-6 1825 1 0
-0
-
-0101000
-+963 0 -961 0 *
-Ve
-1e-07
-64.4444444444444 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1058 0 0 0.37037037037037
-6 1826 1 0
-0
-
-0101000
-+961 0 -959 0 *
-Ve
-1e-07
-64.2592592592593 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1059 0 0 0.37037037037037
-6 1827 1 0
-0
-
-0101000
-+959 0 -957 0 *
-Ve
-1e-07
-63.8888888888889 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1060 0 0 0.370370370370371
-6 1828 1 0
-0
-
-0101000
-+957 0 -955 0 *
-Ve
-1e-07
-63.7037037037037 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1061 0 0 0.370370370370371
-6 1829 1 0
-0
-
-0101000
-+955 0 -953 0 *
-Ve
-1e-07
-63.8888888888889 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1062 0 0 0.37037037037037
-6 1830 1 0
-0
-
-0101000
-+953 0 -951 0 *
-Ve
-1e-07
-63.5185185185185 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1063 0 0 0.370370370370367
-6 1831 1 0
-0
-
-0101000
-+951 0 -949 0 *
-Ve
-1e-07
-63.3333333333333 41.7357531405456 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1064 0 0 0.370370370370371
-6 1832 1 0
-0
-
-0101000
-+949 0 -947 0 *
-Ve
-1e-07
-63.1481481481481 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1065 0 0 0.370370370370369
-6 1833 1 0
-0
-
-0101000
-+947 0 -945 0 *
-Ve
-1e-07
-62.7777777777778 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1066 0 0 0.370370370370371
-6 1834 1 0
-0
-
-0101000
-+945 0 -943 0 *
-Ve
-1e-07
-62.962962962963 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1067 0 0 0.370370370370368
-6 1835 1 0
-0
-
-0101000
-+943 0 -941 0 *
-Ve
-1e-07
-62.7777777777778 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1068 0 0 0.370370370370369
-6 1836 1 0
-0
-
-0101000
-+941 0 -939 0 *
-Ve
-1e-07
-62.4074074074074 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1069 0 0 0.370370370370371
-6 1837 1 0
-0
-
-0101000
-+939 0 -937 0 *
-Ve
-1e-07
-62.2222222222222 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1070 0 0 0.37037037037037
-6 1838 1 0
-0
-
-0101000
-+937 0 -935 0 *
-Ve
-1e-07
-62.037037037037 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1071 0 0 0.37037037037037
-6 1839 1 0
-0
-
-0101000
-+935 0 -933 0 *
-Ve
-1e-07
-61.6666666666667 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1072 0 0 0.370370370370371
-6 1840 1 0
-0
-
-0101000
-+933 0 -931 0 *
-Ve
-1e-07
-61.4814814814815 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1073 0 0 0.37037037037037
-6 1841 1 0
-0
-
-0101000
-+931 0 -929 0 *
-Ve
-1e-07
-61.6666666666667 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1074 0 0 0.370370370370369
-6 1842 1 0
-0
-
-0101000
-+929 0 -927 0 *
-Ve
-1e-07
-61.2962962962963 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1075 0 0 0.370370370370371
-6 1843 1 0
-0
-
-0101000
-+927 0 -925 0 *
-Ve
-1e-07
-61.1111111111111 41.7357531405456 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1076 0 0 0.37037037037037
-6 1844 1 0
-0
-
-0101000
-+925 0 -923 0 *
-Ve
-1e-07
-61.2962962962963 42.0565032900954 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1077 0 0 0.370370370370369
-6 1845 1 0
-0
-
-0101000
-+923 0 -921 0 *
-Ve
-1e-07
-61.6666666666667 42.0565032900954 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1078 0 0 0.370370370370371
-6 1846 1 0
-0
-
-0101000
-+921 0 -919 0 *
-Ve
-1e-07
-61.4814814814815 42.3772534396452 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1079 0 0 0.370370370370369
-6 1847 1 0
-0
-
-0101000
-+919 0 -917 0 *
-Ve
-1e-07
-61.6666666666667 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1080 0 0 0.370370370370369
-6 1848 1 0
-0
-
-0101000
-+917 0 -915 0 *
-Ve
-1e-07
-61.2962962962963 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1081 0 0 0.370370370370371
-6 1849 1 0
-0
-
-0101000
-+915 0 -913 0 *
-Ve
-1e-07
-61.1111111111111 43.0187537387448 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1082 0 0 0.37037037037037
-6 1850 1 0
-0
-
-0101000
-+913 0 -911 0 *
-Ve
-1e-07
-60.9259259259259 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1083 0 0 0.370370370370372
-6 1851 1 0
-0
-
-0101000
-+911 0 -909 0 *
-Ve
-1e-07
-60.5555555555556 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1084 0 0 0.370370370370371
-6 1852 1 0
-0
-
-0101000
-+909 0 -907 0 *
-Ve
-1e-07
-60.3703703703704 43.0187537387448 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1085 0 0 0.37037037037037
-6 1853 1 0
-0
-
-0101000
-+907 0 -905 0 *
-Ve
-1e-07
-60.5555555555556 43.3395038882946 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1086 0 0 0.370370370370369
-6 1854 1 0
-0
-
-0101000
-+905 0 -903 0 *
-Ve
-1e-07
-60.1851851851852 43.3395038882946 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1087 0 0 0.370370370370371
-6 1855 1 0
-0
-
-0101000
-+903 0 -901 0 *
-Ve
-1e-07
-60 43.6602540378444 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1088 0 0 0.37037037037037
-6 1856 1 0
-0
-
-0101000
-+901 0 -899 0 *
-Ve
-1e-07
-60.1851851851852 43.9810041873942 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1089 0 0 0.37037037037037
-6 1857 1 0
-0
-
-0101000
-+899 0 -897 0 *
-Ve
-1e-07
-60.5555555555556 43.9810041873942 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1090 0 0 0.370370370370371
-6 1858 1 0
-0
-
-0101000
-+897 0 -895 0 *
-Ve
-1e-07
-60.3703703703704 44.301754336944 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1091 0 0 0.370370370370369
-6 1859 1 0
-0
-
-0101000
-+895 0 -893 0 *
-Ve
-1e-07
-60.5555555555556 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1092 0 0 0.37037037037037
-6 1860 1 0
-0
-
-0101000
-+893 0 -891 0 *
-Ve
-1e-07
-60.9259259259259 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1093 0 0 0.370370370370371
-6 1861 1 0
-0
-
-0101000
-+891 0 -889 0 *
-Ve
-1e-07
-61.1111111111111 44.301754336944 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1094 0 0 0.370370370370372
-6 1862 1 0
-0
-
-0101000
-+889 0 -887 0 *
-Ve
-1e-07
-61.2962962962963 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1095 0 0 0.37037037037037
-6 1863 1 0
-0
-
-0101000
-+887 0 -885 0 *
-Ve
-1e-07
-61.6666666666667 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1096 0 0 0.370370370370371
-6 1864 1 0
-0
-
-0101000
-+885 0 -883 0 *
-Ve
-1e-07
-61.4814814814815 44.9432546360436 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1097 0 0 0.370370370370369
-6 1865 1 0
-0
-
-0101000
-+883 0 -881 0 *
-Ve
-1e-07
-61.6666666666667 45.2640047855933 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1098 0 0 0.370370370370369
-6 1866 1 0
-0
-
-0101000
-+881 0 -879 0 *
-Ve
-1e-07
-61.2962962962963 45.2640047855933 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1099 0 0 0.370370370370371
-6 1867 1 0
-0
-
-0101000
-+879 0 -877 0 *
-Ve
-1e-07
-61.1111111111111 45.5847549351431 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1100 0 0 0.370370370370369
-6 1868 1 0
-0
-
-0101000
-+877 0 -875 0 *
-Ve
-1e-07
-61.2962962962963 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1101 0 0 0.370370370370369
-6 1869 1 0
-0
-
-0101000
-+875 0 -873 0 *
-Ve
-1e-07
-61.6666666666667 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1102 0 0 0.370370370370371
-6 1870 1 0
-0
-
-0101000
-+873 0 -871 0 *
-Ve
-1e-07
-61.4814814814815 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1103 0 0 0.370370370370369
-6 1871 1 0
-0
-
-0101000
-+871 0 -869 0 *
-Ve
-1e-07
-61.6666666666667 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1104 0 0 0.370370370370369
-6 1872 1 0
-0
-
-0101000
-+869 0 -867 0 *
-Ve
-1e-07
-62.037037037037 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1105 0 0 0.370370370370371
-6 1873 1 0
-0
-
-0101000
-+867 0 -865 0 *
-Ve
-1e-07
-62.2222222222222 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1106 0 0 0.370370370370369
-6 1874 1 0
-0
-
-0101000
-+865 0 -863 0 *
-Ve
-1e-07
-62.4074074074074 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1107 0 0 0.370370370370369
-6 1875 1 0
-0
-
-0101000
-+863 0 -861 0 *
-Ve
-1e-07
-62.7777777777778 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1108 0 0 0.370370370370371
-6 1876 1 0
-0
-
-0101000
-+861 0 -859 0 *
-Ve
-1e-07
-62.962962962963 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1109 0 0 0.370370370370369
-6 1877 1 0
-0
-
-0101000
-+859 0 -857 0 *
-Ve
-1e-07
-62.7777777777778 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1110 0 0 0.370370370370367
-6 1878 1 0
-0
-
-0101000
-+857 0 -855 0 *
-Ve
-1e-07
-63.1481481481481 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1111 0 0 0.370370370370371
-6 1879 1 0
-0
-
-0101000
-+855 0 -853 0 *
-Ve
-1e-07
-63.3333333333333 45.5847549351431 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1112 0 0 0.370370370370369
-6 1880 1 0
-0
-
-0101000
-+853 0 -851 0 *
-Ve
-1e-07
-63.5185185185185 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1113 0 0 0.370370370370371
-6 1881 1 0
-0
-
-0101000
-+851 0 -849 0 *
-Ve
-1e-07
-63.8888888888889 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1114 0 0 0.370370370370367
-6 1882 1 0
-0
-
-0101000
-+849 0 -847 0 *
-Ve
-1e-07
-63.7037037037037 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1115 0 0 0.370370370370369
-6 1883 1 0
-0
-
-0101000
-+847 0 -845 0 *
-Ve
-1e-07
-63.8888888888889 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1116 0 0 0.370370370370371
-6 1884 1 0
-0
-
-0101000
-+845 0 -843 0 *
-Ve
-1e-07
-64.2592592592593 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1117 0 0 0.370370370370371
-6 1885 1 0
-0
-
-0101000
-+843 0 -841 0 *
-Ve
-1e-07
-64.4444444444444 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1118 0 0 0.370370370370369
-6 1886 1 0
-0
-
-0101000
-+841 0 -839 0 *
-Ve
-1e-07
-64.6296296296296 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1119 0 0 0.370370370370369
-6 1887 1 0
-0
-
-0101000
-+839 0 -837 0 *
-Ve
-1e-07
-65 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1120 0 0 0.370370370370371
-6 1888 1 0
-0
-
-0101000
-+837 0 -835 0 *
-Ve
-1e-07
-64.8148148148148 46.8677555333423 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1121 0 0 0.370370370370369
-6 1889 1 0
-0
-
-0101000
-+835 0 -833 0 *
-Ve
-1e-07
-65 47.1885056828921 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1122 0 0 0.370370370370369
-6 1890 1 0
-0
-
-0101000
-+833 0 -831 0 *
-Ve
-1e-07
-64.6296296296296 47.1885056828921 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1123 0 0 0.370370370370371
-6 1891 1 0
-0
-
-0101000
-+831 0 -829 0 *
-Ve
-1e-07
-64.4444444444444 47.5092558324419 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1124 0 0 0.370370370370369
-6 1892 1 0
-0
-
-0101000
-+829 0 -827 0 *
-Ve
-1e-07
-64.6296296296296 47.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1125 0 0 0.370370370370371
-6 1893 1 0
-0
-
-0101000
-+827 0 -825 0 *
-Ve
-1e-07
-65 47.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1126 0 0 0.370370370370371
-6 1894 1 0
-0
-
-0101000
-+825 0 -823 0 *
-Ve
-1e-07
-64.8148148148148 48.1507561315415 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1127 0 0 0.370370370370373
-6 1895 1 0
-0
-
-0101000
-+823 0 -821 0 *
-Ve
-1e-07
-65 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1128 0 0 0.370370370370371
-6 1896 1 0
-0
-
-0101000
-+821 0 -819 0 *
-Ve
-1e-07
-64.6296296296296 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1129 0 0 0.370370370370371
-6 1897 1 0
-0
-
-0101000
-+819 0 -817 0 *
-Ve
-1e-07
-64.4444444444444 48.7922564306411 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1130 0 0 0.370370370370371
-6 1898 1 0
-0
-
-0101000
-+817 0 -815 0 *
-Ve
-1e-07
-64.2592592592593 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1131 0 0 0.370370370370371
-6 1899 1 0
-0
-
-0101000
-+815 0 -813 0 *
-Ve
-1e-07
-63.8888888888889 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1132 0 0 0.370370370370371
-6 1900 1 0
-0
-
-0101000
-+813 0 -811 0 *
-Ve
-1e-07
-63.7037037037037 48.7922564306411 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1133 0 0 0.370370370370369
-6 1901 1 0
-0
-
-0101000
-+811 0 -809 0 *
-Ve
-1e-07
-63.8888888888889 49.1130065801908 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1134 0 0 0.370370370370369
-6 1902 1 0
-0
-
-0101000
-+809 0 -807 0 *
-Ve
-1e-07
-63.5185185185185 49.1130065801909 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1135 0 0 0.370370370370371
-6 1903 1 0
-0
-
-0101000
-+807 0 -805 0 *
-Ve
-1e-07
-63.3333333333333 49.4337567297406 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1136 0 0 0.370370370370369
-6 1904 1 0
-0
-
-0101000
-+805 0 -803 0 *
-Ve
-1e-07
-63.5185185185185 49.7545068792904 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1137 0 0 0.370370370370369
-6 1905 1 0
-0
-
-0101000
-+803 0 -801 0 *
-Ve
-1e-07
-63.8888888888889 49.7545068792904 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1138 0 0 0.370370370370371
-6 1906 1 0
-0
-
-0101000
-+801 0 -799 0 *
-Ve
-1e-07
-63.7037037037037 50.0752570288402 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1139 0 0 0.370370370370369
-6 1907 1 0
-0
-
-0101000
-+799 0 -797 0 *
-Ve
-1e-07
-63.8888888888889 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1140 0 0 0.370370370370369
-6 1908 1 0
-0
-
-0101000
-+797 0 -795 0 *
-Ve
-1e-07
-64.2592592592593 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1141 0 0 0.370370370370371
-6 1909 1 0
-0
-
-0101000
-+795 0 -793 0 *
-Ve
-1e-07
-64.4444444444444 50.0752570288402 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1142 0 0 0.370370370370375
-6 1910 1 0
-0
-
-0101000
-+793 0 -791 0 *
-Ve
-1e-07
-64.6296296296296 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1143 0 0 0.370370370370371
-6 1911 1 0
-0
-
-0101000
-+791 0 -789 0 *
-Ve
-1e-07
-65 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1144 0 0 0.370370370370371
-6 1912 1 0
-0
-
-0101000
-+789 0 -787 0 *
-Ve
-1e-07
-64.8148148148148 50.7167573279398 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1145 0 0 0.370370370370369
-6 1913 1 0
-0
-
-0101000
-+787 0 -785 0 *
-Ve
-1e-07
-65 51.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1146 0 0 0.370370370370369
-6 1914 1 0
-0
-
-0101000
-+785 0 -783 0 *
-Ve
-1e-07
-64.6296296296296 51.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1147 0 0 0.370370370370371
-6 1915 1 0
-0
-
-0101000
-+783 0 -781 0 *
-Ve
-1e-07
-64.4444444444444 51.3582576270394 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1148 0 0 0.370370370370369
-6 1916 1 0
-0
-
-0101000
-+781 0 -779 0 *
-Ve
-1e-07
-64.6296296296296 51.6790077765892 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1149 0 0 0.370370370370369
-6 1917 1 0
-0
-
-0101000
-+779 0 -777 0 *
-Ve
-1e-07
-65 51.6790077765892 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1150 0 0 0.370370370370371
-6 1918 1 0
-0
-
-0101000
-+777 0 -775 0 *
-Ve
-1e-07
-64.8148148148148 51.999757926139 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1151 0 0 0.370370370370369
-6 1919 1 0
-0
-
-0101000
-+775 0 -773 0 *
-Ve
-1e-07
-65 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1152 0 0 0.370370370370369
-6 1920 1 0
-0
-
-0101000
-+773 0 -771 0 *
-Ve
-1e-07
-64.6296296296296 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1153 0 0 0.370370370370371
-6 1921 1 0
-0
-
-0101000
-+771 0 -769 0 *
-Ve
-1e-07
-64.4444444444444 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1154 0 0 0.370370370370371
-6 1922 1 0
-0
-
-0101000
-+769 0 -767 0 *
-Ve
-1e-07
-64.2592592592593 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1155 0 0 0.370370370370373
-6 1923 1 0
-0
-
-0101000
-+767 0 -765 0 *
-Ve
-1e-07
-63.8888888888889 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1156 0 0 0.370370370370371
-6 1924 1 0
-0
-
-0101000
-+765 0 -763 0 *
-Ve
-1e-07
-63.7037037037037 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1157 0 0 0.370370370370369
-6 1925 1 0
-0
-
-0101000
-+763 0 -761 0 *
-Ve
-1e-07
-63.8888888888889 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1158 0 0 0.370370370370369
-6 1926 1 0
-0
-
-0101000
-+761 0 -759 0 *
-Ve
-1e-07
-63.5185185185185 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1159 0 0 0.370370370370371
-6 1927 1 0
-0
-
-0101000
-+759 0 -757 0 *
-Ve
-1e-07
-63.3333333333333 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1160 0 0 0.370370370370369
-6 1928 1 0
-0
-
-0101000
-+757 0 -755 0 *
-Ve
-1e-07
-63.1481481481481 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1161 0 0 0.370370370370369
-6 1929 1 0
-0
-
-0101000
-+755 0 -753 0 *
-Ve
-1e-07
-62.7777777777778 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1162 0 0 0.370370370370371
-6 1930 1 0
-0
-
-0101000
-+753 0 -751 0 *
-Ve
-1e-07
-62.962962962963 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1163 0 0 0.370370370370369
-6 1931 1 0
-0
-
-0101000
-+751 0 -749 0 *
-Ve
-1e-07
-62.7777777777778 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1164 0 0 0.370370370370369
-6 1932 1 0
-0
-
-0101000
-+749 0 -747 0 *
-Ve
-1e-07
-62.4074074074074 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1165 0 0 0.370370370370371
-6 1933 1 0
-0
-
-0101000
-+747 0 -745 0 *
-Ve
-1e-07
-62.2222222222222 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1166 0 0 0.370370370370373
-6 1934 1 0
-0
-
-0101000
-+745 0 -743 0 *
-Ve
-1e-07
-62.037037037037 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1167 0 0 0.370370370370371
-6 1935 1 0
-0
-
-0101000
-+743 0 -741 0 *
-Ve
-1e-07
-61.6666666666667 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1168 0 0 0.370370370370371
-6 1936 1 0
-0
-
-0101000
-+741 0 -739 0 *
-Ve
-1e-07
-61.4814814814815 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1169 0 0 0.370370370370369
-6 1937 1 0
-0
-
-0101000
-+739 0 -737 0 *
-Ve
-1e-07
-61.6666666666667 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1170 0 0 0.370370370370369
-6 1938 1 0
-0
-
-0101000
-+737 0 -735 0 *
-Ve
-1e-07
-61.2962962962963 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1171 0 0 0.370370370370371
-6 1939 1 0
-0
-
-0101000
-+735 0 -733 0 *
-Ve
-1e-07
-61.1111111111111 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1172 0 0 0.370370370370369
-6 1940 1 0
-0
-
-0101000
-+733 0 -731 0 *
-Ve
-1e-07
-61.2962962962963 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1173 0 0 0.370370370370371
-6 1941 1 0
-0
-
-0101000
-+731 0 -729 0 *
-Ve
-1e-07
-61.6666666666667 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1174 0 0 0.370370370370367
-6 1942 1 0
-0
-
-0101000
-+729 0 -727 0 *
-Ve
-1e-07
-61.4814814814815 53.9242588234377 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1175 0 0 0.370370370370371
-6 1943 1 0
-0
-
-0101000
-+727 0 -725 0 *
-Ve
-1e-07
-61.6666666666667 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1176 0 0 0.370370370370371
-6 1944 1 0
-0
-
-0101000
-+725 0 -723 0 *
-Ve
-1e-07
-61.2962962962963 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1177 0 0 0.370370370370371
-6 1945 1 0
-0
-
-0101000
-+723 0 -721 0 *
-Ve
-1e-07
-61.1111111111111 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1178 0 0 0.370370370370373
-6 1946 1 0
-0
-
-0101000
-+721 0 -719 0 *
-Ve
-1e-07
-60.9259259259259 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1179 0 0 0.370370370370371
-6 1947 1 0
-0
-
-0101000
-+719 0 -717 0 *
-Ve
-1e-07
-60.5555555555556 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1180 0 0 0.370370370370371
-6 1948 1 0
-0
-
-0101000
-+717 0 -715 0 *
-Ve
-1e-07
-60.3703703703704 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1181 0 0 0.370370370370371
-6 1949 1 0
-0
-
-0101000
-+715 0 -713 0 *
-Ve
-1e-07
-60.5555555555556 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1182 0 0 0.370370370370367
-6 1950 1 0
-0
-
-0101000
-+713 0 -711 0 *
-Ve
-1e-07
-60.1851851851852 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1183 0 0 0.370370370370371
-6 1951 1 0
-0
-
-0101000
-+711 0 -709 0 *
-Ve
-1e-07
-60 55.2072594216369 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1184 0 0 0.370370370370371
-6 1952 1 0
-0
-
-0101000
-+709 0 -707 0 *
-Ve
-1e-07
-59.8148148148148 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1185 0 0 0.370370370370371
-6 1953 1 0
-0
-
-0101000
-+707 0 -705 0 *
-Ve
-1e-07
-59.4444444444444 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1186 0 0 0.370370370370371
-6 1954 1 0
-0
-
-0101000
-+705 0 -703 0 *
-Ve
-1e-07
-59.6296296296296 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1187 0 0 0.370370370370367
-6 1955 1 0
-0
-
-0101000
-+703 0 -701 0 *
-Ve
-1e-07
-59.4444444444444 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1188 0 0 0.370370370370371
-6 1956 1 0
-0
-
-0101000
-+701 0 -699 0 *
-Ve
-1e-07
-59.0740740740741 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1189 0 0 0.370370370370371
-6 1957 1 0
-0
-
-0101000
-+699 0 -697 0 *
-Ve
-1e-07
-58.8888888888889 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1190 0 0 0.370370370370371
-6 1958 1 0
-0
-
-0101000
-+697 0 -695 0 *
-Ve
-1e-07
-58.7037037037037 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1191 0 0 0.370370370370371
-6 1959 1 0
-0
-
-0101000
-+695 0 -693 0 *
-Ve
-1e-07
-58.3333333333333 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1192 0 0 0.370370370370371
-6 1960 1 0
-0
-
-0101000
-+693 0 -691 0 *
-Ve
-1e-07
-58.5185185185185 53.9242588234377 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1193 0 0 0.370370370370369
-6 1961 1 0
-0
-
-0101000
-+691 0 -689 0 *
-Ve
-1e-07
-58.3333333333333 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1194 0 0 0.370370370370369
-6 1962 1 0
-0
-
-0101000
-+689 0 -687 0 *
-Ve
-1e-07
-58.7037037037037 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1195 0 0 0.370370370370367
-6 1963 1 0
-0
-
-0101000
-+687 0 -685 0 *
-Ve
-1e-07
-58.8888888888889 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1196 0 0 0.370370370370369
-6 1964 1 0
-0
-
-0101000
-+685 0 -683 0 *
-Ve
-1e-07
-58.7037037037037 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1197 0 0 0.370370370370369
-6 1965 1 0
-0
-
-0101000
-+683 0 -681 0 *
-Ve
-1e-07
-58.3333333333333 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1198 0 0 0.370370370370371
-6 1966 1 0
-0
-
-0101000
-+681 0 -679 0 *
-Ve
-1e-07
-58.5185185185185 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1199 0 0 0.370370370370369
-6 1967 1 0
-0
-
-0101000
-+679 0 -677 0 *
-Ve
-1e-07
-58.3333333333333 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1200 0 0 0.370370370370369
-6 1968 1 0
-0
-
-0101000
-+677 0 -675 0 *
-Ve
-1e-07
-57.962962962963 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1201 0 0 0.370370370370371
-6 1969 1 0
-0
-
-0101000
-+675 0 -673 0 *
-Ve
-1e-07
-57.7777777777778 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1202 0 0 0.370370370370373
-6 1970 1 0
-0
-
-0101000
-+673 0 -671 0 *
-Ve
-1e-07
-57.5925925925926 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1203 0 0 0.370370370370371
-6 1971 1 0
-0
-
-0101000
-+671 0 -669 0 *
-Ve
-1e-07
-57.2222222222222 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1204 0 0 0.370370370370371
-6 1972 1 0
-0
-
-0101000
-+669 0 -667 0 *
-Ve
-1e-07
-57.037037037037 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1205 0 0 0.370370370370369
-6 1973 1 0
-0
-
-0101000
-+667 0 -665 0 *
-Ve
-1e-07
-57.2222222222222 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1206 0 0 0.370370370370369
-6 1974 1 0
-0
-
-0101000
-+665 0 -663 0 *
-Ve
-1e-07
-56.8518518518518 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1207 0 0 0.370370370370371
-6 1975 1 0
-0
-
-0101000
-+663 0 -661 0 *
-Ve
-1e-07
-56.6666666666667 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1208 0 0 0.370370370370369
-6 1976 1 0
-0
-
-0101000
-+661 0 -659 0 *
-Ve
-1e-07
-56.4814814814815 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1209 0 0 0.370370370370369
-6 1977 1 0
-0
-
-0101000
-+659 0 -657 0 *
-Ve
-1e-07
-56.1111111111111 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1210 0 0 0.370370370370371
-6 1978 1 0
-0
-
-0101000
-+657 0 -655 0 *
-Ve
-1e-07
-56.2962962962963 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1211 0 0 0.370370370370369
-6 1979 1 0
-0
-
-0101000
-+655 0 -653 0 *
-Ve
-1e-07
-56.1111111111111 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1212 0 0 0.370370370370369
-6 1980 1 0
-0
-
-0101000
-+653 0 -651 0 *
-Ve
-1e-07
-55.7407407407407 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1213 0 0 0.370370370370371
-6 1981 1 0
-0
-
-0101000
-+651 0 -649 0 *
-Ve
-1e-07
-55.5555555555556 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1214 0 0 0.370370370370371
-6 1982 1 0
-0
-
-0101000
-+649 0 -647 0 *
-Ve
-1e-07
-55.3703703703704 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1215 0 0 0.370370370370373
-6 1983 1 0
-0
-
-0101000
-+647 0 -645 0 *
-Ve
-1e-07
-55 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1216 0 0 0.370370370370371
-6 1984 1 0
-0
-
-0101000
-+645 0 -643 0 *
-Ve
-1e-07
-54.8148148148148 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1217 0 0 0.370370370370369
-6 1985 1 0
-0
-
-0101000
-+643 0 -641 0 *
-Ve
-1e-07
-55 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1218 0 0 0.370370370370369
-6 1986 1 0
-0
-
-0101000
-+641 0 -639 0 *
-Ve
-1e-07
-54.6296296296296 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1219 0 0 0.370370370370371
-6 1987 1 0
-0
-
-0101000
-+639 0 -637 0 *
-Ve
-1e-07
-54.4444444444444 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1220 0 0 0.370370370370369
-6 1988 1 0
-0
-
-0101000
-+637 0 -635 0 *
-Ve
-1e-07
-54.6296296296296 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1221 0 0 0.370370370370369
-6 1989 1 0
-0
-
-0101000
-+635 0 -633 0 *
-Ve
-1e-07
-55 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1222 0 0 0.370370370370371
-6 1990 1 0
-0
-
-0101000
-+633 0 -631 0 *
-Ve
-1e-07
-54.8148148148148 53.9242588234377 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1223 0 0 0.370370370370369
-6 1991 1 0
-0
-
-0101000
-+631 0 -629 0 *
-Ve
-1e-07
-55 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1224 0 0 0.370370370370369
-6 1992 1 0
-0
-
-0101000
-+629 0 -627 0 *
-Ve
-1e-07
-54.6296296296296 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1225 0 0 0.370370370370371
-6 1993 1 0
-0
-
-0101000
-+627 0 -625 0 *
-Ve
-1e-07
-54.4444444444444 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1226 0 0 0.370370370370371
-6 1994 1 0
-0
-
-0101000
-+625 0 -623 0 *
-Ve
-1e-07
-54.2592592592593 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1227 0 0 0.370370370370373
-6 1995 1 0
-0
-
-0101000
-+623 0 -621 0 *
-Ve
-1e-07
-53.8888888888889 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1228 0 0 0.370370370370369
-6 1996 1 0
-0
-
-0101000
-+621 0 -619 0 *
-Ve
-1e-07
-53.7037037037037 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1229 0 0 0.370370370370372
-6 1997 1 0
-0
-
-0101000
-+619 0 -617 0 *
-Ve
-1e-07
-53.8888888888889 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1230 0 0 0.370370370370372
-6 1998 1 0
-0
-
-0101000
-+617 0 -615 0 *
-Ve
-1e-07
-53.5185185185185 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1231 0 0 0.370370370370371
-6 1999 1 0
-0
-
-0101000
-+615 0 -613 0 *
-Ve
-1e-07
-53.3333333333333 55.2072594216369 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1232 0 0 0.370370370370372
-6 2000 1 0
-0
-
-0101000
-+613 0 -611 0 *
-Ve
-1e-07
-53.5185185185185 55.5280095711867 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1233 0 0 0.370370370370372
-6 2001 1 0
-0
-
-0101000
-+611 0 -609 0 *
-Ve
-1e-07
-53.8888888888889 55.5280095711867 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1234 0 0 0.370370370370371
-6 2002 1 0
-0
-
-0101000
-+609 0 -607 0 *
-Ve
-1e-07
-53.7037037037037 55.8487597207365 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1235 0 0 0.370370370370372
-6 2003 1 0
-0
-
-0101000
-+607 0 -605 0 *
-Ve
-1e-07
-53.8888888888889 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1236 0 0 0.370370370370372
-6 2004 1 0
-0
-
-0101000
-+605 0 -603 0 *
-Ve
-1e-07
-54.2592592592593 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1237 0 0 0.370370370370369
-6 2005 1 0
-0
-
-0101000
-+603 0 -601 0 *
-Ve
-1e-07
-54.4444444444444 55.8487597207365 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1238 0 0 0.370370370370369
-6 2006 1 0
-0
-
-0101000
-+601 0 -599 0 *
-Ve
-1e-07
-54.6296296296296 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1239 0 0 0.370370370370367
-6 2007 1 0
-0
-
-0101000
-+599 0 -597 0 *
-Ve
-1e-07
-55 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1240 0 0 0.370370370370371
-6 2008 1 0
-0
-
-0101000
-+597 0 -595 0 *
-Ve
-1e-07
-54.8148148148148 56.4902600198361 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1241 0 0 0.370370370370371
-6 2009 1 0
-0
-
-0101000
-+595 0 -593 0 *
-Ve
-1e-07
-55 56.8110101693859 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1242 0 0 0.370370370370367
-6 2010 1 0
-0
-
-0101000
-+593 0 -591 0 *
-Ve
-1e-07
-54.6296296296296 56.8110101693859 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1243 0 0 0.370370370370371
-6 2011 1 0
-0
-
-0101000
-+591 0 -589 0 *
-Ve
-1e-07
-54.4444444444444 57.1317603189357 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1244 0 0 0.370370370370371
-6 2012 1 0
-0
-
-0101000
-+589 0 -587 0 *
-Ve
-1e-07
-54.6296296296296 57.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1245 0 0 0.370370370370371
-6 2013 1 0
-0
-
-0101000
-+587 0 -585 0 *
-Ve
-1e-07
-55 57.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1246 0 0 0.370370370370371
-6 2014 1 0
-0
-
-0101000
-+585 0 -583 0 *
-Ve
-1e-07
-54.8148148148148 57.7732606180352 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1247 0 0 0.370370370370367
-6 2015 1 0
-0
-
-0101000
-+583 0 -581 0 *
-Ve
-1e-07
-55 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1248 0 0 0.370370370370371
-6 2016 1 0
-0
-
-0101000
-+581 0 -579 0 *
-Ve
-1e-07
-54.6296296296296 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1249 0 0 0.370370370370371
-6 2017 1 0
-0
-
-0101000
-+579 0 -577 0 *
-Ve
-1e-07
-54.4444444444444 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1250 0 0 0.370370370370371
-6 2018 1 0
-0
-
-0101000
-+577 0 -575 0 *
-Ve
-1e-07
-54.2592592592593 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1251 0 0 0.370370370370373
-6 2019 1 0
-0
-
-0101000
-+575 0 -573 0 *
-Ve
-1e-07
-53.8888888888889 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1252 0 0 0.370370370370369
-6 2020 1 0
-0
-
-0101000
-+573 0 -571 0 *
-Ve
-1e-07
-53.7037037037037 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1253 0 0 0.370370370370372
-6 2021 1 0
-0
-
-0101000
-+571 0 -569 0 *
-Ve
-1e-07
-53.8888888888889 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1254 0 0 0.370370370370372
-6 2022 1 0
-0
-
-0101000
-+569 0 -567 0 *
-Ve
-1e-07
-53.5185185185185 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1255 0 0 0.370370370370373
-6 2023 1 0
-0
-
-0101000
-+567 0 -565 0 *
-Ve
-1e-07
-53.3333333333333 59.0562612162344 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1256 0 0 0.370370370370372
-6 2024 1 0
-0
-
-0101000
-+565 0 -563 0 *
-Ve
-1e-07
-53.1481481481481 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1257 0 0 0.370370370370372
-6 2025 1 0
-0
-
-0101000
-+563 0 -561 0 *
-Ve
-1e-07
-52.7777777777778 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1258 0 0 0.370370370370371
-6 2026 1 0
-0
-
-0101000
-+561 0 -559 0 *
-Ve
-1e-07
-52.962962962963 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1259 0 0 0.370370370370373
-6 2027 1 0
-0
-
-0101000
-+559 0 -557 0 *
-Ve
-1e-07
-52.7777777777778 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1260 0 0 0.370370370370372
-6 2028 1 0
-0
-
-0101000
-+557 0 -555 0 *
-Ve
-1e-07
-52.4074074074074 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1261 0 0 0.370370370370371
-6 2029 1 0
-0
-
-0101000
-+555 0 -553 0 *
-Ve
-1e-07
-52.2222222222222 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1262 0 0 0.370370370370372
-6 2030 1 0
-0
-
-0101000
-+553 0 -551 0 *
-Ve
-1e-07
-52.037037037037 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1263 0 0 0.370370370370371
-6 2031 1 0
-0
-
-0101000
-+551 0 -549 0 *
-Ve
-1e-07
-51.6666666666667 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1264 0 0 0.370370370370371
-6 2032 1 0
-0
-
-0101000
-+549 0 -547 0 *
-Ve
-1e-07
-51.4814814814815 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1265 0 0 0.370370370370372
-6 2033 1 0
-0
-
-0101000
-+547 0 -545 0 *
-Ve
-1e-07
-51.6666666666667 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1266 0 0 0.370370370370369
-6 2034 1 0
-0
-
-0101000
-+545 0 -543 0 *
-Ve
-1e-07
-51.2962962962963 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1267 0 0 0.370370370370373
-6 2035 1 0
-0
-
-0101000
-+543 0 -541 0 *
-Ve
-1e-07
-51.1111111111111 59.0562612162344 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1268 0 0 0.370370370370372
-6 2036 1 0
-0
-
-0101000
-+541 0 -539 0 *
-Ve
-1e-07
-51.2962962962963 59.3770113657842 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1269 0 0 0.370370370370372
-6 2037 1 0
-0
-
-0101000
-+539 0 -537 0 *
-Ve
-1e-07
-51.6666666666667 59.3770113657842 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1270 0 0 0.370370370370373
-6 2038 1 0
-0
-
-0101000
-+537 0 -535 0 *
-Ve
-1e-07
-51.4814814814815 59.697761515334 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1271 0 0 0.370370370370369
-6 2039 1 0
-0
-
-0101000
-+535 0 -533 0 *
-Ve
-1e-07
-51.6666666666667 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1272 0 0 0.370370370370372
-6 2040 1 0
-0
-
-0101000
-+533 0 -531 0 *
-Ve
-1e-07
-51.2962962962963 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1273 0 0 0.370370370370371
-6 2041 1 0
-0
-
-0101000
-+531 0 -529 0 *
-Ve
-1e-07
-51.1111111111111 60.3392618144336 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1274 0 0 0.370370370370371
-6 2042 1 0
-0
-
-0101000
-+529 0 -527 0 *
-Ve
-1e-07
-50.9259259259259 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1275 0 0 0.370370370370372
-6 2043 1 0
-0
-
-0101000
-+527 0 -525 0 *
-Ve
-1e-07
-50.5555555555556 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1276 0 0 0.370370370370371
-6 2044 1 0
-0
-
-0101000
-+525 0 -523 0 *
-Ve
-1e-07
-50.3703703703704 60.3392618144336 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1277 0 0 0.370370370370372
-6 2045 1 0
-0
-
-0101000
-+523 0 -521 0 *
-Ve
-1e-07
-50.5555555555556 60.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1278 0 0 0.370370370370368
-6 2046 1 0
-0
-
-0101000
-+521 0 -519 0 *
-Ve
-1e-07
-50.1851851851852 60.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1279 0 0 0.370370370370371
-6 2047 1 0
-0
-
-0101000
-+519 0 -517 0 *
-Ve
-1e-07
-50 60.9807621135332 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1280 0 0 0.370370370370372
-6 2048 1 0
-0
-
-0101000
-+517 0 -515 0 *
-Ve
-1e-07
-49.8148148148148 60.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1281 0 0 0.370370370370372
-6 2049 1 0
-0
-
-0101000
-+515 0 -513 0 *
-Ve
-1e-07
-49.4444444444444 60.6600119639834 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1282 0 0 0.370370370370371
-6 2050 1 0
-0
-
-0101000
-+513 0 -511 0 *
-Ve
-1e-07
-49.6296296296296 60.3392618144336 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1283 0 0 0.370370370370368
-6 2051 1 0
-0
-
-0101000
-+511 0 -509 0 *
-Ve
-1e-07
-49.4444444444444 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1284 0 0 0.370370370370372
-6 2052 1 0
-0
-
-0101000
-+509 0 -507 0 *
-Ve
-1e-07
-49.0740740740741 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1285 0 0 0.370370370370371
-6 2053 1 0
-0
-
-0101000
-+507 0 -505 0 *
-Ve
-1e-07
-48.8888888888889 60.3392618144336 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1286 0 0 0.370370370370372
-6 2054 1 0
-0
-
-0101000
-+505 0 -503 0 *
-Ve
-1e-07
-48.7037037037037 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1287 0 0 0.370370370370371
-6 2055 1 0
-0
-
-0101000
-+503 0 -501 0 *
-Ve
-1e-07
-48.3333333333333 60.0185116648838 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1288 0 0 0.370370370370371
-6 2056 1 0
-0
-
-0101000
-+501 0 -499 0 *
-Ve
-1e-07
-48.5185185185185 59.697761515334 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1289 0 0 0.370370370370372
-6 2057 1 0
-0
-
-0101000
-+499 0 -497 0 *
-Ve
-1e-07
-48.3333333333333 59.3770113657842 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1290 0 0 0.370370370370369
-6 2058 1 0
-0
-
-0101000
-+497 0 -495 0 *
-Ve
-1e-07
-48.7037037037037 59.3770113657842 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1291 0 0 0.370370370370373
-6 2059 1 0
-0
-
-0101000
-+495 0 -493 0 *
-Ve
-1e-07
-48.8888888888889 59.0562612162344 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1292 0 0 0.370370370370372
-6 2060 1 0
-0
-
-0101000
-+493 0 -491 0 *
-Ve
-1e-07
-48.7037037037037 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1293 0 0 0.370370370370372
-6 2061 1 0
-0
-
-0101000
-+491 0 -489 0 *
-Ve
-1e-07
-48.3333333333333 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1294 0 0 0.370370370370373
-6 2062 1 0
-0
-
-0101000
-+489 0 -487 0 *
-Ve
-1e-07
-48.5185185185185 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1295 0 0 0.370370370370369
-6 2063 1 0
-0
-
-0101000
-+487 0 -485 0 *
-Ve
-1e-07
-48.3333333333333 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1296 0 0 0.370370370370372
-6 2064 1 0
-0
-
-0101000
-+485 0 -483 0 *
-Ve
-1e-07
-47.962962962963 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1297 0 0 0.370370370370371
-6 2065 1 0
-0
-
-0101000
-+483 0 -481 0 *
-Ve
-1e-07
-47.7777777777778 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1298 0 0 0.370370370370371
-6 2066 1 0
-0
-
-0101000
-+481 0 -479 0 *
-Ve
-1e-07
-47.5925925925926 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1299 0 0 0.370370370370372
-6 2067 1 0
-0
-
-0101000
-+479 0 -477 0 *
-Ve
-1e-07
-47.2222222222222 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1300 0 0 0.370370370370371
-6 2068 1 0
-0
-
-0101000
-+477 0 -475 0 *
-Ve
-1e-07
-47.037037037037 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1301 0 0 0.370370370370372
-6 2069 1 0
-0
-
-0101000
-+475 0 -473 0 *
-Ve
-1e-07
-47.2222222222222 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1302 0 0 0.370370370370373
-6 2070 1 0
-0
-
-0101000
-+473 0 -471 0 *
-Ve
-1e-07
-46.8518518518519 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1303 0 0 0.370370370370371
-6 2071 1 0
-0
-
-0101000
-+471 0 -469 0 *
-Ve
-1e-07
-46.6666666666667 59.0562612162344 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1304 0 0 0.370370370370372
-6 2072 1 0
-0
-
-0101000
-+469 0 -467 0 *
-Ve
-1e-07
-46.4814814814815 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1305 0 0 0.370370370370372
-6 2073 1 0
-0
-
-0101000
-+467 0 -465 0 *
-Ve
-1e-07
-46.1111111111111 58.7355110666846 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1306 0 0 0.370370370370373
-6 2074 1 0
-0
-
-0101000
-+465 0 -463 0 *
-Ve
-1e-07
-46.2962962962963 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1307 0 0 0.370370370370373
-6 2075 1 0
-0
-
-0101000
-+463 0 -461 0 *
-Ve
-1e-07
-46.1111111111111 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1308 0 0 0.370370370370372
-6 2076 1 0
-0
-
-0101000
-+461 0 -459 0 *
-Ve
-1e-07
-45.7407407407407 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1309 0 0 0.370370370370371
-6 2077 1 0
-0
-
-0101000
-+459 0 -457 0 *
-Ve
-1e-07
-45.5555555555556 58.4147609171348 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1310 0 0 0.370370370370371
-6 2078 1 0
-0
-
-0101000
-+457 0 -455 0 *
-Ve
-1e-07
-45.3703703703704 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1311 0 0 0.370370370370372
-6 2079 1 0
-0
-
-0101000
-+455 0 -453 0 *
-Ve
-1e-07
-45 58.094010767585 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1312 0 0 0.370370370370371
-6 2080 1 0
-0
-
-0101000
-+453 0 -451 0 *
-Ve
-1e-07
-45.1851851851852 57.7732606180352 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1313 0 0 0.370370370370372
-6 2081 1 0
-0
-
-0101000
-+451 0 -449 0 *
-Ve
-1e-07
-45 57.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1314 0 0 0.370370370370372
-6 2082 1 0
-0
-
-0101000
-+449 0 -447 0 *
-Ve
-1e-07
-45.3703703703704 57.4525104684854 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1315 0 0 0.370370370370371
-6 2083 1 0
-0
-
-0101000
-+447 0 -445 0 *
-Ve
-1e-07
-45.5555555555556 57.1317603189357 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1316 0 0 0.370370370370372
-6 2084 1 0
-0
-
-0101000
-+445 0 -443 0 *
-Ve
-1e-07
-45.3703703703704 56.8110101693859 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1317 0 0 0.370370370370372
-6 2085 1 0
-0
-
-0101000
-+443 0 -441 0 *
-Ve
-1e-07
-45 56.8110101693859 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1318 0 0 0.370370370370371
-6 2086 1 0
-0
-
-0101000
-+441 0 -439 0 *
-Ve
-1e-07
-45.1851851851852 56.4902600198361 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1319 0 0 0.370370370370372
-6 2087 1 0
-0
-
-0101000
-+439 0 -437 0 *
-Ve
-1e-07
-45 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1320 0 0 0.370370370370372
-6 2088 1 0
-0
-
-0101000
-+437 0 -435 0 *
-Ve
-1e-07
-45.3703703703704 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1321 0 0 0.370370370370371
-6 2089 1 0
-0
-
-0101000
-+435 0 -433 0 *
-Ve
-1e-07
-45.5555555555556 55.8487597207365 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1322 0 0 0.370370370370372
-6 2090 1 0
-0
-
-0101000
-+433 0 -431 0 *
-Ve
-1e-07
-45.7407407407407 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1323 0 0 0.370370370370371
-6 2091 1 0
-0
-
-0101000
-+431 0 -429 0 *
-Ve
-1e-07
-46.1111111111111 56.1695098702863 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1324 0 0 0.370370370370371
-6 2092 1 0
-0
-
-0101000
-+429 0 -427 0 *
-Ve
-1e-07
-46.2962962962963 55.8487597207365 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1325 0 0 0.370370370370372
-6 2093 1 0
-0
-
-0101000
-+427 0 -425 0 *
-Ve
-1e-07
-46.1111111111111 55.5280095711867 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1326 0 0 0.370370370370373
-6 2094 1 0
-0
-
-0101000
-+425 0 -423 0 *
-Ve
-1e-07
-46.4814814814815 55.5280095711867 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1327 0 0 0.370370370370373
-6 2095 1 0
-0
-
-0101000
-+423 0 -421 0 *
-Ve
-1e-07
-46.6666666666667 55.2072594216369 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1328 0 0 0.370370370370372
-6 2096 1 0
-0
-
-0101000
-+421 0 -419 0 *
-Ve
-1e-07
-46.4814814814815 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1329 0 0 0.370370370370372
-6 2097 1 0
-0
-
-0101000
-+419 0 -417 0 *
-Ve
-1e-07
-46.1111111111111 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1330 0 0 0.370370370370373
-6 2098 1 0
-0
-
-0101000
-+417 0 -415 0 *
-Ve
-1e-07
-46.2962962962963 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1331 0 0 0.370370370370373
-6 2099 1 0
-0
-
-0101000
-+415 0 -413 0 *
-Ve
-1e-07
-46.1111111111111 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1332 0 0 0.370370370370372
-6 2100 1 0
-0
-
-0101000
-+413 0 -411 0 *
-Ve
-1e-07
-45.7407407407407 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1333 0 0 0.370370370370371
-6 2101 1 0
-0
-
-0101000
-+411 0 -409 0 *
-Ve
-1e-07
-45.5555555555556 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1334 0 0 0.370370370370371
-6 2102 1 0
-0
-
-0101000
-+409 0 -407 0 *
-Ve
-1e-07
-45.3703703703704 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1335 0 0 0.370370370370372
-6 2103 1 0
-0
-
-0101000
-+407 0 -405 0 *
-Ve
-1e-07
-45 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1336 0 0 0.370370370370371
-6 2104 1 0
-0
-
-0101000
-+405 0 -403 0 *
-Ve
-1e-07
-45.1851851851852 53.9242588234377 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1337 0 0 0.37037037037037
-6 2105 1 0
-0
-
-0101000
-+403 0 -401 0 *
-Ve
-1e-07
-45 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1338 0 0 0.370370370370371
-6 2106 1 0
-0
-
-0101000
-+401 0 -399 0 *
-Ve
-1e-07
-45.3703703703704 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1339 0 0 0.370370370370369
-6 2107 1 0
-0
-
-0101000
-+399 0 -397 0 *
-Ve
-1e-07
-45.5555555555556 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1340 0 0 0.37037037037037
-6 2108 1 0
-0
-
-0101000
-+397 0 -395 0 *
-Ve
-1e-07
-45.3703703703704 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1341 0 0 0.37037037037037
-6 2109 1 0
-0
-
-0101000
-+395 0 -393 0 *
-Ve
-1e-07
-45 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1342 0 0 0.370370370370369
-6 2110 1 0
-0
-
-0101000
-+393 0 -391 0 *
-Ve
-1e-07
-45.1851851851852 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1343 0 0 0.370370370370371
-6 2111 1 0
-0
-
-0101000
-+391 0 -389 0 *
-Ve
-1e-07
-45 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1344 0 0 0.37037037037037
-6 2112 1 0
-0
-
-0101000
-+389 0 -387 0 *
-Ve
-1e-07
-44.6296296296296 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1345 0 0 0.370370370370371
-6 2113 1 0
-0
-
-0101000
-+387 0 -385 0 *
-Ve
-1e-07
-44.4444444444444 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1346 0 0 0.370370370370371
-6 2114 1 0
-0
-
-0101000
-+385 0 -383 0 *
-Ve
-1e-07
-44.2592592592593 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1347 0 0 0.370370370370372
-6 2115 1 0
-0
-
-0101000
-+383 0 -381 0 *
-Ve
-1e-07
-43.8888888888889 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1348 0 0 0.37037037037037
-6 2116 1 0
-0
-
-0101000
-+381 0 -379 0 *
-Ve
-1e-07
-43.7037037037037 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1349 0 0 0.37037037037037
-6 2117 1 0
-0
-
-0101000
-+379 0 -377 0 *
-Ve
-1e-07
-43.8888888888889 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1350 0 0 0.370370370370371
-6 2118 1 0
-0
-
-0101000
-+377 0 -375 0 *
-Ve
-1e-07
-43.5185185185185 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1351 0 0 0.37037037037037
-6 2119 1 0
-0
-
-0101000
-+375 0 -373 0 *
-Ve
-1e-07
-43.3333333333333 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1352 0 0 0.37037037037037
-6 2120 1 0
-0
-
-0101000
-+373 0 -371 0 *
-Ve
-1e-07
-43.1481481481481 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1353 0 0 0.37037037037037
-6 2121 1 0
-0
-
-0101000
-+371 0 -369 0 *
-Ve
-1e-07
-42.7777777777778 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1354 0 0 0.370370370370369
-6 2122 1 0
-0
-
-0101000
-+369 0 -367 0 *
-Ve
-1e-07
-42.962962962963 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1355 0 0 0.370370370370369
-6 2123 1 0
-0
-
-0101000
-+367 0 -365 0 *
-Ve
-1e-07
-42.7777777777778 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1356 0 0 0.37037037037037
-6 2124 1 0
-0
-
-0101000
-+365 0 -363 0 *
-Ve
-1e-07
-42.4074074074074 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1357 0 0 0.37037037037037
-6 2125 1 0
-0
-
-0101000
-+363 0 -361 0 *
-Ve
-1e-07
-42.2222222222222 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1358 0 0 0.37037037037037
-6 2126 1 0
-0
-
-0101000
-+361 0 -359 0 *
-Ve
-1e-07
-42.037037037037 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1359 0 0 0.37037037037037
-6 2127 1 0
-0
-
-0101000
-+359 0 -357 0 *
-Ve
-1e-07
-41.6666666666667 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1360 0 0 0.37037037037037
-6 2128 1 0
-0
-
-0101000
-+357 0 -355 0 *
-Ve
-1e-07
-41.4814814814815 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1361 0 0 0.37037037037037
-6 2129 1 0
-0
-
-0101000
-+355 0 -353 0 *
-Ve
-1e-07
-41.6666666666667 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1362 0 0 0.370370370370371
-6 2130 1 0
-0
-
-0101000
-+353 0 -351 0 *
-Ve
-1e-07
-41.2962962962963 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1363 0 0 0.370370370370369
-6 2131 1 0
-0
-
-0101000
-+351 0 -349 0 *
-Ve
-1e-07
-41.1111111111111 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1364 0 0 0.37037037037037
-6 2132 1 0
-0
-
-0101000
-+349 0 -347 0 *
-Ve
-1e-07
-41.2962962962963 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1365 0 0 0.37037037037037
-6 2133 1 0
-0
-
-0101000
-+347 0 -345 0 *
-Ve
-1e-07
-41.6666666666667 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1366 0 0 0.37037037037037
-6 2134 1 0
-0
-
-0101000
-+345 0 -343 0 *
-Ve
-1e-07
-41.4814814814815 53.9242588234377 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1367 0 0 0.370370370370371
-6 2135 1 0
-0
-
-0101000
-+343 0 -341 0 *
-Ve
-1e-07
-41.6666666666667 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1368 0 0 0.37037037037037
-6 2136 1 0
-0
-
-0101000
-+341 0 -339 0 *
-Ve
-1e-07
-41.2962962962963 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1369 0 0 0.370370370370371
-6 2137 1 0
-0
-
-0101000
-+339 0 -337 0 *
-Ve
-1e-07
-41.1111111111111 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1370 0 0 0.370370370370372
-6 2138 1 0
-0
-
-0101000
-+337 0 -335 0 *
-Ve
-1e-07
-40.9259259259259 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1371 0 0 0.370370370370371
-6 2139 1 0
-0
-
-0101000
-+335 0 -333 0 *
-Ve
-1e-07
-40.5555555555556 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1372 0 0 0.370370370370371
-6 2140 1 0
-0
-
-0101000
-+333 0 -331 0 *
-Ve
-1e-07
-40.3703703703704 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1373 0 0 0.370370370370372
-6 2141 1 0
-0
-
-0101000
-+331 0 -329 0 *
-Ve
-1e-07
-40.5555555555556 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1374 0 0 0.370370370370369
-6 2142 1 0
-0
-
-0101000
-+329 0 -327 0 *
-Ve
-1e-07
-40.1851851851852 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1375 0 0 0.370370370370371
-6 2143 1 0
-0
-
-0101000
-+327 0 -325 0 *
-Ve
-1e-07
-40 55.2072594216369 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1376 0 0 0.370370370370372
-6 2144 1 0
-0
-
-0101000
-+325 0 -323 0 *
-Ve
-1e-07
-39.8148148148148 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1377 0 0 0.370370370370372
-6 2145 1 0
-0
-
-0101000
-+323 0 -321 0 *
-Ve
-1e-07
-39.4444444444444 54.8865092720871 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1378 0 0 0.370370370370371
-6 2146 1 0
-0
-
-0101000
-+321 0 -319 0 *
-Ve
-1e-07
-39.6296296296296 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1379 0 0 0.370370370370369
-6 2147 1 0
-0
-
-0101000
-+319 0 -317 0 *
-Ve
-1e-07
-39.4444444444444 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1380 0 0 0.370370370370372
-6 2148 1 0
-0
-
-0101000
-+317 0 -315 0 *
-Ve
-1e-07
-39.0740740740741 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1381 0 0 0.37037037037037
-6 2149 1 0
-0
-
-0101000
-+315 0 -313 0 *
-Ve
-1e-07
-38.8888888888889 54.5657591225373 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1382 0 0 0.370370370370372
-6 2150 1 0
-0
-
-0101000
-+313 0 -311 0 *
-Ve
-1e-07
-38.7037037037037 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1383 0 0 0.370370370370372
-6 2151 1 0
-0
-
-0101000
-+311 0 -309 0 *
-Ve
-1e-07
-38.3333333333333 54.2450089729875 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1384 0 0 0.37037037037037
-6 2152 1 0
-0
-
-0101000
-+309 0 -307 0 *
-Ve
-1e-07
-38.5185185185185 53.9242588234377 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1385 0 0 0.37037037037037
-6 2153 1 0
-0
-
-0101000
-+307 0 -305 0 *
-Ve
-1e-07
-38.3333333333333 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1386 0 0 0.370370370370372
-6 2154 1 0
-0
-
-0101000
-+305 0 -303 0 *
-Ve
-1e-07
-38.7037037037037 53.6035086738879 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1387 0 0 0.37037037037037
-6 2155 1 0
-0
-
-0101000
-+303 0 -301 0 *
-Ve
-1e-07
-38.8888888888889 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1388 0 0 0.37037037037037
-6 2156 1 0
-0
-
-0101000
-+301 0 -299 0 *
-Ve
-1e-07
-38.7037037037037 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1389 0 0 0.37037037037037
-6 2157 1 0
-0
-
-0101000
-+299 0 -297 0 *
-Ve
-1e-07
-38.3333333333333 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1390 0 0 0.37037037037037
-6 2158 1 0
-0
-
-0101000
-+297 0 -295 0 *
-Ve
-1e-07
-38.5185185185185 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1391 0 0 0.370370370370372
-6 2159 1 0
-0
-
-0101000
-+295 0 -293 0 *
-Ve
-1e-07
-38.3333333333333 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1392 0 0 0.37037037037037
-6 2160 1 0
-0
-
-0101000
-+293 0 -291 0 *
-Ve
-1e-07
-37.962962962963 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1393 0 0 0.37037037037037
-6 2161 1 0
-0
-
-0101000
-+291 0 -289 0 *
-Ve
-1e-07
-37.7777777777778 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1394 0 0 0.37037037037037
-6 2162 1 0
-0
-
-0101000
-+289 0 -287 0 *
-Ve
-1e-07
-37.5925925925926 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1395 0 0 0.37037037037037
-6 2163 1 0
-0
-
-0101000
-+287 0 -285 0 *
-Ve
-1e-07
-37.2222222222222 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1396 0 0 0.37037037037037
-6 2164 1 0
-0
-
-0101000
-+285 0 -283 0 *
-Ve
-1e-07
-37.037037037037 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1397 0 0 0.37037037037037
-6 2165 1 0
-0
-
-0101000
-+283 0 -281 0 *
-Ve
-1e-07
-37.2222222222222 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1398 0 0 0.370370370370371
-6 2166 1 0
-0
-
-0101000
-+281 0 -279 0 *
-Ve
-1e-07
-36.8518518518519 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1399 0 0 0.37037037037037
-6 2167 1 0
-0
-
-0101000
-+279 0 -277 0 *
-Ve
-1e-07
-36.6666666666667 53.2827585243381 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1400 0 0 0.37037037037037
-6 2168 1 0
-0
-
-0101000
-+277 0 -275 0 *
-Ve
-1e-07
-36.4814814814815 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1401 0 0 0.37037037037037
-6 2169 1 0
-0
-
-0101000
-+275 0 -273 0 *
-Ve
-1e-07
-36.1111111111111 52.9620083747884 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1402 0 0 0.37037037037037
-6 2170 1 0
-0
-
-0101000
-+273 0 -271 0 *
-Ve
-1e-07
-36.2962962962963 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1403 0 0 0.37037037037037
-6 2171 1 0
-0
-
-0101000
-+271 0 -269 0 *
-Ve
-1e-07
-36.1111111111111 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1404 0 0 0.37037037037037
-6 2172 1 0
-0
-
-0101000
-+269 0 -267 0 *
-Ve
-1e-07
-35.7407407407407 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1405 0 0 0.37037037037037
-6 2173 1 0
-0
-
-0101000
-+267 0 -265 0 *
-Ve
-1e-07
-35.5555555555556 52.6412582252386 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1406 0 0 0.37037037037037
-6 2174 1 0
-0
-
-0101000
-+265 0 -263 0 *
-Ve
-1e-07
-35.3703703703704 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1407 0 0 0.37037037037037
-6 2175 1 0
-0
-
-0101000
-+263 0 -261 0 *
-Ve
-1e-07
-35 52.3205080756888 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1408 0 0 0.37037037037037
-6 2176 1 0
-0
-
-0101000
-+261 0 -259 0 *
-Ve
-1e-07
-35.1851851851852 51.999757926139 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1409 0 0 0.37037037037037
-6 2177 1 0
-0
-
-0101000
-+259 0 -257 0 *
-Ve
-1e-07
-35 51.6790077765892 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1410 0 0 0.37037037037037
-6 2178 1 0
-0
-
-0101000
-+257 0 -255 0 *
-Ve
-1e-07
-35.3703703703704 51.6790077765892 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1411 0 0 0.37037037037037
-6 2179 1 0
-0
-
-0101000
-+255 0 -253 0 *
-Ve
-1e-07
-35.5555555555556 51.3582576270394 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1412 0 0 0.37037037037037
-6 2180 1 0
-0
-
-0101000
-+253 0 -251 0 *
-Ve
-1e-07
-35.3703703703704 51.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1413 0 0 0.37037037037037
-6 2181 1 0
-0
-
-0101000
-+251 0 -249 0 *
-Ve
-1e-07
-35 51.0375074774896 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1414 0 0 0.37037037037037
-6 2182 1 0
-0
-
-0101000
-+249 0 -247 0 *
-Ve
-1e-07
-35.1851851851852 50.7167573279398 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1415 0 0 0.370370370370372
-6 2183 1 0
-0
-
-0101000
-+247 0 -245 0 *
-Ve
-1e-07
-35 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1416 0 0 0.37037037037037
-6 2184 1 0
-0
-
-0101000
-+245 0 -243 0 *
-Ve
-1e-07
-35.3703703703704 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1417 0 0 0.37037037037037
-6 2185 1 0
-0
-
-0101000
-+243 0 -241 0 *
-Ve
-1e-07
-35.5555555555556 50.0752570288402 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1418 0 0 0.37037037037037
-6 2186 1 0
-0
-
-0101000
-+241 0 -239 0 *
-Ve
-1e-07
-35.7407407407407 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1419 0 0 0.370370370370371
-6 2187 1 0
-0
-
-0101000
-+239 0 -237 0 *
-Ve
-1e-07
-36.1111111111111 50.39600717839 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1420 0 0 0.37037037037037
-6 2188 1 0
-0
-
-0101000
-+237 0 -235 0 *
-Ve
-1e-07
-36.2962962962963 50.0752570288402 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1421 0 0 0.37037037037037
-6 2189 1 0
-0
-
-0101000
-+235 0 -233 0 *
-Ve
-1e-07
-36.1111111111111 49.7545068792904 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1422 0 0 0.370370370370371
-6 2190 1 0
-0
-
-0101000
-+233 0 -231 0 *
-Ve
-1e-07
-36.4814814814815 49.7545068792904 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1423 0 0 0.37037037037037
-6 2191 1 0
-0
-
-0101000
-+231 0 -229 0 *
-Ve
-1e-07
-36.6666666666667 49.4337567297406 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1424 0 0 0.37037037037037
-6 2192 1 0
-0
-
-0101000
-+229 0 -227 0 *
-Ve
-1e-07
-36.4814814814815 49.1130065801909 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1425 0 0 0.37037037037037
-6 2193 1 0
-0
-
-0101000
-+227 0 -225 0 *
-Ve
-1e-07
-36.1111111111111 49.1130065801908 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1426 0 0 0.37037037037037
-6 2194 1 0
-0
-
-0101000
-+225 0 -223 0 *
-Ve
-1e-07
-36.2962962962963 48.7922564306411 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1427 0 0 0.37037037037037
-6 2195 1 0
-0
-
-0101000
-+223 0 -221 0 *
-Ve
-1e-07
-36.1111111111111 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1428 0 0 0.37037037037037
-6 2196 1 0
-0
-
-0101000
-+221 0 -219 0 *
-Ve
-1e-07
-35.7407407407407 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1429 0 0 0.37037037037037
-6 2197 1 0
-0
-
-0101000
-+219 0 -217 0 *
-Ve
-1e-07
-35.5555555555556 48.7922564306411 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1430 0 0 0.370370370370371
-6 2198 1 0
-0
-
-0101000
-+217 0 -215 0 *
-Ve
-1e-07
-35.3703703703704 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1431 0 0 0.37037037037037
-6 2199 1 0
-0
-
-0101000
-+215 0 -213 0 *
-Ve
-1e-07
-35 48.4715062810913 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1432 0 0 0.37037037037037
-6 2200 1 0
-0
-
-0101000
-+213 0 -211 0 *
-Ve
-1e-07
-35.1851851851852 48.1507561315415 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1433 0 0 0.37037037037037
-6 2201 1 0
-0
-
-0101000
-+211 0 -209 0 *
-Ve
-1e-07
-35 47.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1434 0 0 0.370370370370372
-6 2202 1 0
-0
-
-0101000
-+209 0 -207 0 *
-Ve
-1e-07
-35.3703703703704 47.8300059819917 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1435 0 0 0.37037037037037
-6 2203 1 0
-0
-
-0101000
-+207 0 -205 0 *
-Ve
-1e-07
-35.5555555555556 47.5092558324419 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1436 0 0 0.37037037037037
-6 2204 1 0
-0
-
-0101000
-+205 0 -203 0 *
-Ve
-1e-07
-35.3703703703704 47.1885056828921 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1437 0 0 0.37037037037037
-6 2205 1 0
-0
-
-0101000
-+203 0 -201 0 *
-Ve
-1e-07
-35 47.1885056828921 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1438 0 0 0.37037037037037
-6 2206 1 0
-0
-
-0101000
-+201 0 -199 0 *
-Ve
-1e-07
-35.1851851851852 46.8677555333423 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1439 0 0 0.37037037037037
-6 2207 1 0
-0
-
-0101000
-+199 0 -197 0 *
-Ve
-1e-07
-35 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1440 0 0 0.37037037037037
-6 2208 1 0
-0
-
-0101000
-+197 0 -195 0 *
-Ve
-1e-07
-35.3703703703704 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1441 0 0 0.37037037037037
-6 2209 1 0
-0
-
-0101000
-+195 0 -193 0 *
-Ve
-1e-07
-35.5555555555556 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1442 0 0 0.37037037037037
-6 2210 1 0
-0
-
-0101000
-+193 0 -191 0 *
-Ve
-1e-07
-35.7407407407407 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1443 0 0 0.37037037037037
-6 2211 1 0
-0
-
-0101000
-+191 0 -189 0 *
-Ve
-1e-07
-36.1111111111111 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1444 0 0 0.37037037037037
-6 2212 1 0
-0
-
-0101000
-+189 0 -187 0 *
-Ve
-1e-07
-36.2962962962963 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1445 0 0 0.37037037037037
-6 2213 1 0
-0
-
-0101000
-+187 0 -185 0 *
-Ve
-1e-07
-36.1111111111111 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1446 0 0 0.37037037037037
-6 2214 1 0
-0
-
-0101000
-+185 0 -183 0 *
-Ve
-1e-07
-36.4814814814815 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1447 0 0 0.37037037037037
-6 2215 1 0
-0
-
-0101000
-+183 0 -181 0 *
-Ve
-1e-07
-36.6666666666667 45.5847549351431 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1448 0 0 0.37037037037037
-6 2216 1 0
-0
-
-0101000
-+181 0 -179 0 *
-Ve
-1e-07
-36.8518518518519 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1449 0 0 0.37037037037037
-6 2217 1 0
-0
-
-0101000
-+179 0 -177 0 *
-Ve
-1e-07
-37.2222222222222 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1450 0 0 0.37037037037037
-6 2218 1 0
-0
-
-0101000
-+177 0 -175 0 *
-Ve
-1e-07
-37.037037037037 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1451 0 0 0.370370370370369
-6 2219 1 0
-0
-
-0101000
-+175 0 -173 0 *
-Ve
-1e-07
-37.2222222222222 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1452 0 0 0.37037037037037
-6 2220 1 0
-0
-
-0101000
-+173 0 -171 0 *
-Ve
-1e-07
-37.5925925925926 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1453 0 0 0.37037037037037
-6 2221 1 0
-0
-
-0101000
-+171 0 -169 0 *
-Ve
-1e-07
-37.7777777777778 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1454 0 0 0.37037037037037
-6 2222 1 0
-0
-
-0101000
-+169 0 -167 0 *
-Ve
-1e-07
-37.962962962963 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1455 0 0 0.37037037037037
-6 2223 1 0
-0
-
-0101000
-+167 0 -165 0 *
-Ve
-1e-07
-38.3333333333333 46.5470053837925 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1456 0 0 0.37037037037037
-6 2224 1 0
-0
-
-0101000
-+165 0 -163 0 *
-Ve
-1e-07
-38.5185185185185 46.2262552342427 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1457 0 0 0.37037037037037
-6 2225 1 0
-0
-
-0101000
-+163 0 -161 0 *
-Ve
-1e-07
-38.3333333333333 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1458 0 0 0.370370370370369
-6 2226 1 0
-0
-
-0101000
-+161 0 -159 0 *
-Ve
-1e-07
-38.7037037037037 45.9055050846929 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1459 0 0 0.37037037037037
-6 2227 1 0
-0
-
-0101000
-+159 0 -157 0 *
-Ve
-1e-07
-38.8888888888889 45.5847549351431 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1460 0 0 0.37037037037037
-6 2228 1 0
-0
-
-0101000
-+157 0 -155 0 *
-Ve
-1e-07
-38.7037037037037 45.2640047855933 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1461 0 0 0.37037037037037
-6 2229 1 0
-0
-
-0101000
-+155 0 -153 0 *
-Ve
-1e-07
-38.3333333333333 45.2640047855934 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1462 0 0 0.370370370370369
-6 2230 1 0
-0
-
-0101000
-+153 0 -151 0 *
-Ve
-1e-07
-38.5185185185185 44.9432546360436 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1463 0 0 0.370370370370371
-6 2231 1 0
-0
-
-0101000
-+151 0 -149 0 *
-Ve
-1e-07
-38.3333333333333 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1464 0 0 0.37037037037037
-6 2232 1 0
-0
-
-0101000
-+149 0 -147 0 *
-Ve
-1e-07
-38.7037037037037 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1465 0 0 0.37037037037037
-6 2233 1 0
-0
-
-0101000
-+147 0 -145 0 *
-Ve
-1e-07
-38.8888888888889 44.301754336944 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1466 0 0 0.370370370370371
-6 2234 1 0
-0
-
-0101000
-+145 0 -143 0 *
-Ve
-1e-07
-39.0740740740741 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1467 0 0 0.370370370370371
-6 2235 1 0
-0
-
-0101000
-+143 0 -141 0 *
-Ve
-1e-07
-39.4444444444444 44.6225044864938 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1468 0 0 0.37037037037037
-6 2236 1 0
-0
-
-0101000
-+141 0 -139 0 *
-Ve
-1e-07
-39.6296296296296 44.301754336944 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1469 0 0 0.370370370370371
-6 2237 1 0
-0
-
-0101000
-+139 0 -137 0 *
-Ve
-1e-07
-39.4444444444444 43.9810041873942 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1470 0 0 0.37037037037037
-6 2238 1 0
-0
-
-0101000
-+137 0 -135 0 *
-Ve
-1e-07
-39.8148148148148 43.9810041873942 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1471 0 0 0.37037037037037
-6 2239 1 0
-0
-
-0101000
-+135 0 -133 0 *
-Ve
-1e-07
-40 43.6602540378444 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1472 0 0 0.370370370370371
-6 2240 1 0
-0
-
-0101000
-+133 0 -131 0 *
-Ve
-1e-07
-39.8148148148148 43.3395038882946 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1473 0 0 0.370370370370371
-6 2241 1 0
-0
-
-0101000
-+131 0 -129 0 *
-Ve
-1e-07
-39.4444444444444 43.3395038882946 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1474 0 0 0.37037037037037
-6 2242 1 0
-0
-
-0101000
-+129 0 -127 0 *
-Ve
-1e-07
-39.6296296296296 43.0187537387448 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1475 0 0 0.37037037037037
-6 2243 1 0
-0
-
-0101000
-+127 0 -125 0 *
-Ve
-1e-07
-39.4444444444444 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1476 0 0 0.370370370370371
-6 2244 1 0
-0
-
-0101000
-+125 0 -123 0 *
-Ve
-1e-07
-39.0740740740741 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1477 0 0 0.37037037037037
-6 2245 1 0
-0
-
-0101000
-+123 0 -121 0 *
-Ve
-1e-07
-38.8888888888889 43.0187537387448 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1478 0 0 0.370370370370371
-6 2246 1 0
-0
-
-0101000
-+121 0 -119 0 *
-Ve
-1e-07
-38.7037037037037 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1479 0 0 0.370370370370371
-6 2247 1 0
-0
-
-0101000
-+119 0 -117 0 *
-Ve
-1e-07
-38.3333333333333 42.698003589195 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1480 0 0 0.37037037037037
-6 2248 1 0
-0
-
-0101000
-+117 0 -115 0 *
-Ve
-1e-07
-38.5185185185185 42.3772534396452 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1481 0 0 0.37037037037037
-6 2249 1 0
-0
-
-0101000
-+115 0 -113 0 *
-Ve
-1e-07
-38.3333333333333 42.0565032900954 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1482 0 0 0.37037037037037
-6 2250 1 0
-0
-
-0101000
-+113 0 -111 0 *
-Ve
-1e-07
-38.7037037037037 42.0565032900954 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1483 0 0 0.370370370370369
-6 2251 1 0
-0
-
-0101000
-+111 0 -109 0 *
-Ve
-1e-07
-38.8888888888889 41.7357531405456 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1484 0 0 0.37037037037037
-6 2252 1 0
-0
-
-0101000
-+109 0 -107 0 *
-Ve
-1e-07
-38.7037037037037 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1485 0 0 0.370370370370371
-6 2253 1 0
-0
-
-0101000
-+107 0 -105 0 *
-Ve
-1e-07
-38.3333333333333 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1486 0 0 0.370370370370371
-6 2254 1 0
-0
-
-0101000
-+105 0 -103 0 *
-Ve
-1e-07
-38.5185185185185 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1487 0 0 0.37037037037037
-6 2255 1 0
-0
-
-0101000
-+103 0 -101 0 *
-Ve
-1e-07
-38.3333333333333 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1488 0 0 0.370370370370371
-6 2256 1 0
-0
-
-0101000
-+101 0 -99 0 *
-Ve
-1e-07
-37.962962962963 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1489 0 0 0.37037037037037
-6 2257 1 0
-0
-
-0101000
-+99 0 -97 0 *
-Ve
-1e-07
-37.7777777777778 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1490 0 0 0.370370370370371
-6 2258 1 0
-0
-
-0101000
-+97 0 -95 0 *
-Ve
-1e-07
-37.5925925925926 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1491 0 0 0.370370370370371
-6 2259 1 0
-0
-
-0101000
-+95 0 -93 0 *
-Ve
-1e-07
-37.2222222222222 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1492 0 0 0.37037037037037
-6 2260 1 0
-0
-
-0101000
-+93 0 -91 0 *
-Ve
-1e-07
-37.037037037037 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1493 0 0 0.370370370370371
-6 2261 1 0
-0
-
-0101000
-+91 0 -89 0 *
-Ve
-1e-07
-37.2222222222222 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1494 0 0 0.37037037037037
-6 2262 1 0
-0
-
-0101000
-+89 0 -87 0 *
-Ve
-1e-07
-36.8518518518519 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1495 0 0 0.370370370370371
-6 2263 1 0
-0
-
-0101000
-+87 0 -85 0 *
-Ve
-1e-07
-36.6666666666667 41.7357531405456 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1496 0 0 0.370370370370371
-6 2264 1 0
-0
-
-0101000
-+85 0 -83 0 *
-Ve
-1e-07
-36.4814814814815 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1497 0 0 0.370370370370371
-6 2265 1 0
-0
-
-0101000
-+83 0 -81 0 *
-Ve
-1e-07
-36.1111111111111 41.4150029909958 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1498 0 0 0.370370370370371
-6 2266 1 0
-0
-
-0101000
-+81 0 -79 0 *
-Ve
-1e-07
-36.2962962962963 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1499 0 0 0.37037037037037
-6 2267 1 0
-0
-
-0101000
-+79 0 -77 0 *
-Ve
-1e-07
-36.1111111111111 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1500 0 0 0.370370370370371
-6 2268 1 0
-0
-
-0101000
-+77 0 -75 0 *
-Ve
-1e-07
-35.7407407407407 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1501 0 0 0.37037037037037
-6 2269 1 0
-0
-
-0101000
-+75 0 -73 0 *
-Ve
-1e-07
-35.5555555555556 41.094252841446 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1502 0 0 0.370370370370371
-6 2270 1 0
-0
-
-0101000
-+73 0 -71 0 *
-Ve
-1e-07
-35.3703703703704 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1503 0 0 0.370370370370371
-6 2271 1 0
-0
-
-0101000
-+71 0 -69 0 *
-Ve
-1e-07
-35 40.7735026918963 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1504 0 0 0.37037037037037
-6 2272 1 0
-0
-
-0101000
-+69 0 -67 0 *
-Ve
-1e-07
-35.1851851851852 40.4527525423465 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1505 0 0 0.37037037037037
-6 2273 1 0
-0
-
-0101000
-+67 0 -65 0 *
-Ve
-1e-07
-35 40.1320023927967 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1506 0 0 0.37037037037037
-6 2274 1 0
-0
-
-0101000
-+65 0 -63 0 *
-Ve
-1e-07
-35.3703703703704 40.1320023927967 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1507 0 0 0.37037037037037
-6 2275 1 0
-0
-
-0101000
-+63 0 -61 0 *
-Ve
-1e-07
-35.5555555555556 39.8112522432469 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1508 0 0 0.37037037037037
-6 2276 1 0
-0
-
-0101000
-+61 0 -59 0 *
-Ve
-1e-07
-35.3703703703704 39.4905020936971 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1509 0 0 0.37037037037037
-6 2277 1 0
-0
-
-0101000
-+59 0 -57 0 *
-Ve
-1e-07
-35 39.4905020936971 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1510 0 0 0.37037037037037
-6 2278 1 0
-0
-
-0101000
-+57 0 -55 0 *
-Ve
-1e-07
-35.1851851851852 39.1697519441473 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1511 0 0 0.37037037037037
-6 2279 1 0
-0
-
-0101000
-+55 0 -53 0 *
-Ve
-1e-07
-35 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1512 0 0 0.37037037037037
-6 2280 1 0
-0
-
-0101000
-+53 0 -51 0 *
-Ve
-1e-07
-35.3703703703704 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1513 0 0 0.37037037037037
-6 2281 1 0
-0
-
-0101000
-+51 0 -49 0 *
-Ve
-1e-07
-35.5555555555556 38.5282516450477 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1514 0 0 0.370370370370371
-6 2282 1 0
-0
-
-0101000
-+49 0 -47 0 *
-Ve
-1e-07
-35.7407407407407 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1515 0 0 0.37037037037037
-6 2283 1 0
-0
-
-0101000
-+47 0 -45 0 *
-Ve
-1e-07
-36.1111111111111 38.8490017945975 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1516 0 0 0.37037037037037
-6 2284 1 0
-0
-
-0101000
-+45 0 -43 0 *
-Ve
-1e-07
-36.2962962962963 38.5282516450477 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1517 0 0 0.37037037037037
-6 2285 1 0
-0
-
-0101000
-+43 0 -41 0 *
-Ve
-1e-07
-36.1111111111111 38.2075014954979 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1518 0 0 0.370370370370371
-6 2286 1 0
-0
-
-0101000
-+41 0 -39 0 *
-Ve
-1e-07
-36.4814814814815 38.2075014954979 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1519 0 0 0.37037037037037
-6 2287 1 0
-0
-
-0101000
-+39 0 -37 0 *
-Ve
-1e-07
-36.6666666666667 37.8867513459481 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1520 0 0 0.37037037037037
-6 2288 1 0
-0
-
-0101000
-+37 0 -35 0 *
-Ve
-1e-07
-36.4814814814815 37.5660011963983 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1521 0 0 0.37037037037037
-6 2289 1 0
-0
-
-0101000
-+35 0 -33 0 *
-Ve
-1e-07
-36.1111111111111 37.5660011963983 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1522 0 0 0.37037037037037
-6 2290 1 0
-0
-
-0101000
-+33 0 -31 0 *
-Ve
-1e-07
-36.2962962962963 37.2452510468485 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1523 0 0 0.370370370370371
-6 2291 1 0
-0
-
-0101000
-+31 0 -29 0 *
-Ve
-1e-07
-36.1111111111111 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1524 0 0 0.37037037037037
-6 2292 1 0
-0
-
-0101000
-+29 0 -27 0 *
-Ve
-1e-07
-35.7407407407407 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1525 0 0 0.37037037037037
-6 2293 1 0
-0
-
-0101000
-+27 0 -25 0 *
-Ve
-1e-07
-35.5555555555556 37.2452510468485 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1526 0 0 0.37037037037037
-6 2294 1 0
-0
-
-0101000
-+25 0 -23 0 *
-Ve
-1e-07
-35.3703703703704 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1527 0 0 0.37037037037037
-6 2295 1 0
-0
-
-0101000
-+23 0 -21 0 *
-Ve
-1e-07
-35 36.9245008972987 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1528 0 0 0.37037037037037
-6 2296 1 0
-0
-
-0101000
-+21 0 -19 0 *
-Ve
-1e-07
-35.1851851851852 36.603750747749 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1529 0 0 0.37037037037037
-6 2297 1 0
-0
-
-0101000
-+19 0 -17 0 *
-Ve
-1e-07
-35 36.2830005981992 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1530 0 0 0.37037037037037
-6 2298 1 0
-0
-
-0101000
-+17 0 -15 0 *
-Ve
-1e-07
-35.3703703703704 36.2830005981992 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1531 0 0 0.37037037037037
-6 2299 1 0
-0
-
-0101000
-+15 0 -13 0 *
-Ve
-1e-07
-35.5555555555556 35.9622504486494 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1532 0 0 0.37037037037037
-6 2300 1 0
-0
-
-0101000
-+13 0 -11 0 *
-Ve
-1e-07
-35.3703703703704 35.6415002990996 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1533 0 0 0.37037037037037
-6 2301 1 0
-0
-
-0101000
-+11 0 -9 0 *
-Ve
-1e-07
-35 35.6415002990996 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1534 0 0 0.37037037037037
-6 2302 1 0
-0
-
-0101000
-+9 0 -7 0 *
-Ve
-1e-07
-35.1851851851852 35.3207501495498 0
-0 0
-
-0101100
-*
-Ed
- 3e-08 1 1 0
-1 1535 0 0 0.37037037037037
-6 2303 1 0
-0
-
-0101000
-+7 0 -5 0 *
-Ed
- 3e-08 1 1 0
-1 1536 0 0 0.37037037037037
-6 2304 1 0
-0
-
-0101000
-+5 0 -1538 0 *
-Wi
-
-0101000
-+1536 0 +1534 0 +1532 0 +1530 0 +1528 0 +1526 0 +1524 0 +1522 0 +1520 0 +1518 0
-+1516 0 +1514 0 +1512 0 +1510 0 +1508 0 +1506 0 +1504 0 +1502 0 +1500 0 +1498 0
-+1496 0 +1494 0 +1492 0 +1490 0 +1488 0 +1486 0 +1484 0 +1482 0 +1480 0 +1478 0
-+1476 0 +1474 0 +1472 0 +1470 0 +1468 0 +1466 0 +1464 0 +1462 0 +1460 0 +1458 0
-+1456 0 +1454 0 +1452 0 +1450 0 +1448 0 +1446 0 +1444 0 +1442 0 +1440 0 +1438 0
-+1436 0 +1434 0 +1432 0 +1430 0 +1428 0 +1426 0 +1424 0 +1422 0 +1420 0 +1418 0
-+1416 0 +1414 0 +1412 0 +1410 0 +1408 0 +1406 0 +1404 0 +1402 0 +1400 0 +1398 0
-+1396 0 +1394 0 +1392 0 +1390 0 +1388 0 +1386 0 +1384 0 +1382 0 +1380 0 +1378 0
-+1376 0 +1374 0 +1372 0 +1370 0 +1368 0 +1366 0 +1364 0 +1362 0 +1360 0 +1358 0
-+1356 0 +1354 0 +1352 0 +1350 0 +1348 0 +1346 0 +1344 0 +1342 0 +1340 0 +1338 0
-+1336 0 +1334 0 +1332 0 +1330 0 +1328 0 +1326 0 +1324 0 +1322 0 +1320 0 +1318 0
-+1316 0 +1314 0 +1312 0 +1310 0 +1308 0 +1306 0 +1304 0 +1302 0 +1300 0 +1298 0
-+1296 0 +1294 0 +1292 0 +1290 0 +1288 0 +1286 0 +1284 0 +1282 0 +1280 0 +1278 0
-+1276 0 +1274 0 +1272 0 +1270 0 +1268 0 +1266 0 +1264 0 +1262 0 +1260 0 +1258 0
-+1256 0 +1254 0 +1252 0 +1250 0 +1248 0 +1246 0 +1244 0 +1242 0 +1240 0 +1238 0
-+1236 0 +1234 0 +1232 0 +1230 0 +1228 0 +1226 0 +1224 0 +1222 0 +1220 0 +1218 0
-+1216 0 +1214 0 +1212 0 +1210 0 +1208 0 +1206 0 +1204 0 +1202 0 +1200 0 +1198 0
-+1196 0 +1194 0 +1192 0 +1190 0 +1188 0 +1186 0 +1184 0 +1182 0 +1180 0 +1178 0
-+1176 0 +1174 0 +1172 0 +1170 0 +1168 0 +1166 0 +1164 0 +1162 0 +1160 0 +1158 0
-+1156 0 +1154 0 +1152 0 +1150 0 +1148 0 +1146 0 +1144 0 +1142 0 +1140 0 +1138 0
-+1136 0 +1134 0 +1132 0 +1130 0 +1128 0 +1126 0 +1124 0 +1122 0 +1120 0 +1118 0
-+1116 0 +1114 0 +1112 0 +1110 0 +1108 0 +1106 0 +1104 0 +1102 0 +1100 0 +1098 0
-+1096 0 +1094 0 +1092 0 +1090 0 +1088 0 +1086 0 +1084 0 +1082 0 +1080 0 +1078 0
-+1076 0 +1074 0 +1072 0 +1070 0 +1068 0 +1066 0 +1064 0 +1062 0 +1060 0 +1058 0
-+1056 0 +1054 0 +1052 0 +1050 0 +1048 0 +1046 0 +1044 0 +1042 0 +1040 0 +1038 0
-+1036 0 +1034 0 +1032 0 +1030 0 +1028 0 +1026 0 +1024 0 +1022 0 +1020 0 +1018 0
-+1016 0 +1014 0 +1012 0 +1010 0 +1008 0 +1006 0 +1004 0 +1002 0 +1000 0 +998 0
-+996 0 +994 0 +992 0 +990 0 +988 0 +986 0 +984 0 +982 0 +980 0 +978 0
-+976 0 +974 0 +972 0 +970 0 +968 0 +966 0 +964 0 +962 0 +960 0 +958 0
-+956 0 +954 0 +952 0 +950 0 +948 0 +946 0 +944 0 +942 0 +940 0 +938 0
-+936 0 +934 0 +932 0 +930 0 +928 0 +926 0 +924 0 +922 0 +920 0 +918 0
-+916 0 +914 0 +912 0 +910 0 +908 0 +906 0 +904 0 +902 0 +900 0 +898 0
-+896 0 +894 0 +892 0 +890 0 +888 0 +886 0 +884 0 +882 0 +880 0 +878 0
-+876 0 +874 0 +872 0 +870 0 +868 0 +866 0 +864 0 +862 0 +860 0 +858 0
-+856 0 +854 0 +852 0 +850 0 +848 0 +846 0 +844 0 +842 0 +840 0 +838 0
-+836 0 +834 0 +832 0 +830 0 +828 0 +826 0 +824 0 +822 0 +820 0 +818 0
-+816 0 +814 0 +812 0 +810 0 +808 0 +806 0 +804 0 +802 0 +800 0 +798 0
-+796 0 +794 0 +792 0 +790 0 +788 0 +786 0 +784 0 +782 0 +780 0 +778 0
-+776 0 +774 0 +772 0 +770 0 +768 0 +766 0 +764 0 +762 0 +760 0 +758 0
-+756 0 +754 0 +752 0 +750 0 +748 0 +746 0 +744 0 +742 0 +740 0 +738 0
-+736 0 +734 0 +732 0 +730 0 +728 0 +726 0 +724 0 +722 0 +720 0 +718 0
-+716 0 +714 0 +712 0 +710 0 +708 0 +706 0 +704 0 +702 0 +700 0 +698 0
-+696 0 +694 0 +692 0 +690 0 +688 0 +686 0 +684 0 +682 0 +680 0 +678 0
-+676 0 +674 0 +672 0 +670 0 +668 0 +666 0 +664 0 +662 0 +660 0 +658 0
-+656 0 +654 0 +652 0 +650 0 +648 0 +646 0 +644 0 +642 0 +640 0 +638 0
-+636 0 +634 0 +632 0 +630 0 +628 0 +626 0 +624 0 +622 0 +620 0 +618 0
-+616 0 +614 0 +612 0 +610 0 +608 0 +606 0 +604 0 +602 0 +600 0 +598 0
-+596 0 +594 0 +592 0 +590 0 +588 0 +586 0 +584 0 +582 0 +580 0 +578 0
-+576 0 +574 0 +572 0 +570 0 +568 0 +566 0 +564 0 +562 0 +560 0 +558 0
-+556 0 +554 0 +552 0 +550 0 +548 0 +546 0 +544 0 +542 0 +540 0 +538 0
-+536 0 +534 0 +532 0 +530 0 +528 0 +526 0 +524 0 +522 0 +520 0 +518 0
-+516 0 +514 0 +512 0 +510 0 +508 0 +506 0 +504 0 +502 0 +500 0 +498 0
-+496 0 +494 0 +492 0 +490 0 +488 0 +486 0 +484 0 +482 0 +480 0 +478 0
-+476 0 +474 0 +472 0 +470 0 +468 0 +466 0 +464 0 +462 0 +460 0 +458 0
-+456 0 +454 0 +452 0 +450 0 +448 0 +446 0 +444 0 +442 0 +440 0 +438 0
-+436 0 +434 0 +432 0 +430 0 +428 0 +426 0 +424 0 +422 0 +420 0 +418 0
-+416 0 +414 0 +412 0 +410 0 +408 0 +406 0 +404 0 +402 0 +400 0 +398 0
-+396 0 +394 0 +392 0 +390 0 +388 0 +386 0 +384 0 +382 0 +380 0 +378 0
-+376 0 +374 0 +372 0 +370 0 +368 0 +366 0 +364 0 +362 0 +360 0 +358 0
-+356 0 +354 0 +352 0 +350 0 +348 0 +346 0 +344 0 +342 0 +340 0 +338 0
-+336 0 +334 0 +332 0 +330 0 +328 0 +326 0 +324 0 +322 0 +320 0 +318 0
-+316 0 +314 0 +312 0 +310 0 +308 0 +306 0 +304 0 +302 0 +300 0 +298 0
-+296 0 +294 0 +292 0 +290 0 +288 0 +286 0 +284 0 +282 0 +280 0 +278 0
-+276 0 +274 0 +272 0 +270 0 +268 0 +266 0 +264 0 +262 0 +260 0 +258 0
-+256 0 +254 0 +252 0 +250 0 +248 0 +246 0 +244 0 +242 0 +240 0 +238 0
-+236 0 +234 0 +232 0 +230 0 +228 0 +226 0 +224 0 +222 0 +220 0 +218 0
-+216 0 +214 0 +212 0 +210 0 +208 0 +206 0 +204 0 +202 0 +200 0 +198 0
-+196 0 +194 0 +192 0 +190 0 +188 0 +186 0 +184 0 +182 0 +180 0 +178 0
-+176 0 +174 0 +172 0 +170 0 +168 0 +166 0 +164 0 +162 0 +160 0 +158 0
-+156 0 +154 0 +152 0 +150 0 +148 0 +146 0 +144 0 +142 0 +140 0 +138 0
-+136 0 +134 0 +132 0 +130 0 +128 0 +126 0 +124 0 +122 0 +120 0 +118 0
-+116 0 +114 0 +112 0 +110 0 +108 0 +106 0 +104 0 +102 0 +100 0 +98 0
-+96 0 +94 0 +92 0 +90 0 +88 0 +86 0 +84 0 +82 0 +80 0 +78 0
-+76 0 +74 0 +72 0 +70 0 +68 0 +66 0 +64 0 +62 0 +60 0 +58 0
-+56 0 +54 0 +52 0 +50 0 +48 0 +46 0 +44 0 +42 0 +40 0 +38 0
-+36 0 +34 0 +32 0 +30 0 +28 0 +26 0 +24 0 +22 0 +20 0 +18 0
-+16 0 +14 0 +12 0 +10 0 +8 0 +6 0 +4 0 +3 0 *
-Fa
-0 1e-07 1 0
-2 1
-1111000
--1539 0 +2 0 *
-
-+1 0
-0
-
+++ /dev/null
-DBRep_DrawableShape
-
-CASCADE Topology V1, (c) Matra-Datavision
-Locations 5
-1
- 1 0 0 0
- 0 1.11022302462516e-16 -1 0
- 0 1 6.1257422745431e-17 0
-1
-6.1257422745431e-17 -1 0 0
- 1 1.11022302462516e-16 0 0
- 0 0 1 0
-1
- 1 0 0 6.505
- 0 1 0 0
- 0 0 1 0
-1
- 1 0 0 0
- 0 1 0 0
- 0 0 1 -0.2
-2 1 1 2 1 3 1 4 1 0
-Curve2ds 0
-Curves 4
-1 -1 0.20000000000000001 -7.9000000000000004 1 0 0
-1 -2 0.20000000000000001 0.10000000000000001 0 0 1
-1 -1 0.20000000000000001 1.1000000000000001 1 0 0
-1 2 0.20000000000000001 0.10000000000000001 0 0 1
-Polygon3D 0
-PolygonOnTriangulations 0
-Surfaces 1
-1 -1 0.20000000000000001 0.10000000000000001 0 1 0 0 -0 1 1 0 -0
-Triangulations 0
-
-TShapes 10
-Ve
-1e-07
--2 0.2 -7.9
-0 0
-
-0101100
-*
-Ve
-1e-07
-2 0.2 -7.9
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 1 0 -1 3
-0
-
-0101000
-+10 0 -9 0 *
-Ve
-1e-07
--2 0.2 1.1
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 2 0 -8 1
-0
-
-0101000
-+10 0 -7 0 *
-Ve
-1e-07
-2 0.2 1.1
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 3 0 -1 3
-0
-
-0101000
-+7 0 -5 0 *
-Ed
- 1e-10 1 1 0
-1 4 0 -8 1
-0
-
-0101000
-+9 0 -5 0 *
-Wi
-
-0101100
--8 0 +6 0 +4 0 -3 0 *
-Fa
-1 1e-10 1 0
-
-1111000
-+2 0 *
-
-+1 5
-0
-
+++ /dev/null
-DBRep_DrawableShape
-
-CASCADE Topology V1, (c) Matra-Datavision
-Locations 0
-Curve2ds 27
-1 0 0 1 0
-1 0 10 1 0
-1 30 0 0 -1
-1 10 0 0 1
-1 0 30 1 0
-1 0 -20 1 0
-1 0 10 1 0
-1 0 0 0 -1
-1 10 0 0 1
-1 0 0 0 1
-1 0 0 1 0
-1 30 0 0 1
-1 0 0 1 0
-1 0 0 1 0
-1 0 0 1 0
-1 0 0 0 1
-1 0 20 1 0
-1 30 0 0 1
-1 0 20 1 0
-1 0 -20 1 0
-1 0 0 1 0
-1 0 0 -1 0
-1 0 0 -0.4472135954999579 -0.8944271909999159
-1 30 0 0 -1
-1 0 0 0 1
-1 0 0 0 -1
-1 0 0 0 1
-Curves 14
-1 10 0 0 0 0 1
-1 10 0 30 0 1 0
-1 0 0 30 0.4472135954999579 0.8944271909999159 0
-1 10 20 0 0 0 1
-1 10 0 0 -0 1 0
-1 0 0 0 1 0 -0
-1 0 0 30 1 0 -0
-1 0 0 0 0 0 1
-1 0 20 0 1 0 -0
-1 0 20 30 1 0 -0
-1 0 20 0 0 0 1
-1 0 0 0 -0.4472135954999579 -0.8944271909999159 0
-1 0 0 30 -0 1 0
-1 0 0 0 -0 1 0
-Polygon3D 0
-PolygonOnTriangulations 0
-Surfaces 7
-1 10 0 0 1 0 -0 0 0 1 0 -1 0
-1 0 0 0 -0 1 0 0 0 1 1 0 -0
-1 0 0 30 0 0 1 1 0 -0 -0 1 0
-1 0 0 0 0.8944271909999159 -0.4472135954999579 0 0.4472135954999579 0.8944271909999159 0 -0 0 1
-1 0 20 0 -0 1 0 0 0 1 1 0 -0
-1 0 0 0 0 0 1 1 0 -0 -0 1 0
-1 0 0 0 1 0 -0 0 0 1 0 -1 0
-Triangulations 0
-
-TShapes 38
-Ve
-1e-07
-10 0 30
-0 0
-
-0101101
-*
-Ve
-1e-07
-10 0 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 1 0 0 30
-2 1 1 0 0 30
-2 2 2 0 0 30
-0
-
-0101000
--38 0 +37 0 *
-Ve
-1e-07
-10 20 30
-22.3606797749979 1 3 0
-22.3606797749979 2 5 4 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 2 0 0 20
-2 3 1 0 0 20
-2 4 3 0 0 20
-0
-
-0101000
--35 0 +38 0 *
-Ve
-1e-07
-10 20 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 4 0 0 30
-2 6 1 0 0 30
-2 7 5 0 0 30
-0
-
-0101000
--35 0 +33 0 *
-Ed
- 1e-07 1 1 0
-1 5 0 0 20
-2 8 1 0 0 20
-2 9 6 0 0 20
-0
-
-0101000
--33 0 +37 0 *
-Wi
-
-0101000
--36 0 -34 0 +32 0 +31 0 *
-Fa
-0 1e-07 1 0
-
-0111000
-+30 0 *
-Ve
-1e-07
-0 0 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 6 0 0 10
-2 10 2 0 0 10
-2 11 6 0 0 10
-0
-
-0101000
--37 0 +28 0 *
-Ve
-1e-07
-0 0 30
-0 1 3 0
-0 2 5 4 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 7 0 0 10
-2 12 2 0 0 10
-2 13 3 0 0 10
-0
-
-0101000
--38 0 +26 0 *
-Ed
- 1e-07 1 1 0
-1 8 0 0 30
-2 14 7 0 0 30
-2 15 2 0 0 30
-0
-
-0101000
--26 0 +28 0 *
-Wi
-
-0101000
--27 0 -36 0 +25 0 +24 0 *
-Fa
-0 1e-07 2 0
-
-0111000
-+23 0 *
-Ve
-1e-07
-0 20 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 9 0 0 10
-2 16 5 0 0 10
-2 17 6 0 0 10
-0
-
-0101000
--33 0 +21 0 *
-Ve
-1e-07
-0 20 30
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 10 0 0 10
-2 18 5 0 0 10
-2 19 3 0 0 10
-0
-
-0101000
--35 0 +19 0 *
-Ed
- 1e-07 1 1 0
-1 11 0 0 30
-2 20 7 0 0 30
-2 21 5 0 0 30
-0
-
-0101000
--19 0 +21 0 *
-Wi
-
-0101000
--20 0 -32 0 +18 0 +17 0 *
-Fa
-0 1e-07 5 0
-
-0111000
-+16 0 *
-Ed
- 1e-07 1 1 0
-1 12 0 -22.3606797749979 0
-2 22 4 0 -22.3606797749979 0
-2 23 6 0 -22.3606797749979 0
-0
-
-0101000
-+33 0 -28 0 *
-Wi
-
-0101000
-+14 0 +27 0 +31 0 *
-Fa
-0 1e-07 6 0
-
-0111000
-+13 0 *
-Ed
- 1e-07 1 1 0
-1 13 0 0 20
-2 24 7 0 0 20
-2 25 3 0 0 20
-0
-
-0101000
--19 0 +26 0 *
-Ed
- 1e-07 1 1 0
-1 14 0 0 20
-2 26 7 0 0 20
-2 27 6 0 0 20
-0
-
-0101000
--21 0 +28 0 *
-Wi
-
-0101000
--24 0 -11 0 +17 0 +10 0 *
-Fa
-0 1e-07 7 0
-
-0111000
-+9 0 *
-Wi
-
-0101000
--14 0 -20 0 -10 0 *
-Fa
-0 1e-07 6 0
-
-0111000
-+7 0 *
-Sh
-
-0101000
-+29 0 -22 0 +15 0 -12 0 -8 0 -6 0 *
-Ed
- 1e-07 1 1 0
-1 3 0 0 22.3606797749979
-2 5 4 0 0 22.3606797749979
-0
-
-0101000
-+26 0 -35 0 *
-Wi
-
-0101000
-+32 0 -4 0 -24 0 -14 0 *
-Fa
-0 1e-07 4 0
-
-0111000
-+3 0 *
-Co
-
-1100000
-+5 0 +2 0 *
-
-+1 0
\ No newline at end of file
+++ /dev/null
-DBRep_DrawableShape
-
-CASCADE Topology V1, (c) Matra-Datavision
-Locations 5
-1
- 1 0 0 0
- 0 1.11022302462516e-16 -1 0
- 0 1 6.1257422745431e-17 0
-1
-6.1257422745431e-17 -1 0 0
- 1 1.11022302462516e-16 0 0
- 0 0 1 0
-1
- 1 0 0 6.505
- 0 1 0 0
- 0 0 1 0
-1
- 1 0 0 0
- 0 1 0 0
- 0 0 1 -0.2
-2 1 1 2 1 3 1 4 1 0
-Curve2ds 0
-Curves 3
-7 0 0 5 36 8 -1.4336500000000001 0.64996799999999999 -6.5049999999999999 -1.4336605 0.64972076670000001 -6.5049999999999999 -1.4336178749999999 0.64945686670000002 -6.5049999999999999 -1.4336992083 0.6492221333 -6.5049999999999999 -1.4336128333 0.64895823330000002 -6.5049999999999999 -1.43364 0.64871100000000004 -6.5049999999999999 -1.4334536667 0.61781496670000002 -6.5049999999999999 -1.4338860833000002 0.58679560000000008 -6.5049999999999999 -1.4337184999999999 0.55586383750000001 -6.5049999999999999 -1.4339196667 0.52489728330000007 -6.5049999999999999 -1.4339999999999999 0.49393500000000001 -6.5049999999999999 -1.4203730000000001 0.44235658329999999 -6.5049999999999999 -1.4019439167000001 0.39482056250000003 -6.5049999999999999 -1.3786762917000002 0.35127068750000001 -6.5049999999999999 -1.3506378333 0.31178091669999997 -6.5049999999999999 -1.3177400000000001 0.27629500000000001 -6.5049999999999999 -1.2811151667 0.23680705000000002 -6.5049999999999999 -1.238647625 0.2022839958 -6.5049999999999999 -1.1916550832999999 0.172336775 -6.5049999999999999 -1.1423406667 0.1464565333 -6.5049999999999999 -1.0919700000000001 0.124249 -6.5049999999999999 -1.0352280833 0.099204750000000008 -6.5049999999999999 -0.97734481250000005 0.078821291700000004 -6.5049999999999999 -0.91855039580000009 0.062216593699999996 -6.5049999999999999 -0.85908024999999999 0.048575291700000002 -6.5049999999999999 -0.79917499999999997 0.037031500000000002 -6.5049999999999999 -0.71422663330000002 0.020663891799999997 -6.5049999999999999 -0.62839160000000005 0.0085204118000000006 -6.5049999999999999 -0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999 -0.4554365333 -0.0055199242999999995 -6.5049999999999999 -0.36900400000000005 -0.0092480200000000009 -6.5049999999999999 -0.29509078329999999 -0.012436537700000002 -6.5049999999999999 -0.2212840875 -0.014272503300000001 -6.5049999999999999 -0.1475632875 -0.0151237605 -6.5049999999999999 -0.073806716699999997 -0.015365757300000001 -6.5049999999999999 0 -0.0153654 -6.5049999999999999
- 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 36 8 1.4336500000000001 0.64996799999999999 -6.5049999999999999 1.4336605 0.64972076670000001 -6.5049999999999999 1.4336178749999999 0.64945686670000002 -6.5049999999999999 1.4336992083 0.6492221333 -6.5049999999999999 1.4336128333 0.64895823330000002 -6.5049999999999999 1.43364 0.64871100000000004 -6.5049999999999999 1.4334536667 0.61781496670000002 -6.5049999999999999 1.4338860833000002 0.58679560000000008 -6.5049999999999999 1.4337184999999999 0.55586383750000001 -6.5049999999999999 1.4339196667 0.52489728330000007 -6.5049999999999999 1.4339999999999999 0.49393500000000001 -6.5049999999999999 1.4203730000000001 0.44235658329999999 -6.5049999999999999 1.4019439167000001 0.39482056250000003 -6.5049999999999999 1.3786762917000002 0.35127068750000001 -6.5049999999999999 1.3506378333 0.31178091669999997 -6.5049999999999999 1.3177400000000001 0.27629500000000001 -6.5049999999999999 1.2811151667 0.23680705000000002 -6.5049999999999999 1.238647625 0.2022839958 -6.5049999999999999 1.1916550832999999 0.172336775 -6.5049999999999999 1.1423406667 0.1464565333 -6.5049999999999999 1.0919700000000001 0.124249 -6.5049999999999999 1.0352280833 0.099204750000000008 -6.5049999999999999 0.97734481250000005 0.078821291700000004 -6.5049999999999999 0.91855039580000009 0.062216593699999996 -6.5049999999999999 0.85908024999999999 0.048575291700000002 -6.5049999999999999 0.79917499999999997 0.037031500000000002 -6.5049999999999999 0.71422663330000002 0.020663891799999997 -6.5049999999999999 0.62839160000000005 0.0085204118000000006 -6.5049999999999999 0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999 0.4554365333 -0.0055199242999999995 -6.5049999999999999 0.36900400000000005 -0.0092480200000000009 -6.5049999999999999 0.29509078329999999 -0.012436537700000002 -6.5049999999999999 0.2212840875 -0.014272503300000001 -6.5049999999999999 0.1475632875 -0.0151237605 -6.5049999999999999 0.073806716699999997 -0.015365757300000001 -6.5049999999999999 0 -0.0153654 -6.5049999999999999
- 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-1 -1.4336500000000001 0.64996799999999999 -6.5049999999999999 1 0 0
-Polygon3D 0
-PolygonOnTriangulations 0
-Surfaces 1
-1 0 0 -6.5049999999999999 0 0 1 1 0 -0 -0 1 0
-Triangulations 0
-
-TShapes 8
-Ve
-1e-07
--1.43365 0.649968 -6.505
-0 0
-
-0101100
-*
-Ve
-1e-07
--5.6843418860808e-17 -0.0153654 -6.505
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 1 0 4 11
-0
-
-0101000
-+8 0 -7 0 *
-Ve
-1e-07
-1.43365 0.649968 -6.505
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 2 0 4 11
-0
-
-0101000
-+5 0 -7 0 *
-Ed
- 1e-10 1 1 0
-1 3 0 0 2.8673
-0
-
-0101000
-+8 0 -5 0 *
-Wi
-
-0101100
--6 0 +4 0 +3 0 *
-Fa
-0 1e-10 1 0
-
-1111000
--2 0 *
-
-+1 5
-0
-
+++ /dev/null
-DBRep_DrawableShape
-
-CASCADE Topology V1, (c) Matra-Datavision
-Locations 9
-1
- 1 0 0 0
- 0 1.11022302462516e-16 -1 0
- 0 1 6.1257422745431e-17 0
-1
-6.1257422745431e-17 -1 0 0
- 1 1.11022302462516e-16 0 0
- 0 0 1 0
-1
- -1 1.22460635382238e-16 0 0
--1.22460635382238e-16 -1 0 0
- 0 0 1 0
-1
- -1 -1.22460635382238e-16 0 0
-1.22460635382238e-16 -1 0 0
- 0 0 1 0
-1
- 1 0 0 0.649968
- 0 1 0 0
- 0 0 1 0
-1
- 1 0 0 -0.649968
- 0 1 0 0
- 0 0 1 0
-1
- 1 0 0 6.505
- 0 1 0 0
- 0 0 1 0
-1
- 1 0 0 0
- 0 1 0 0
- 0 0 1 -0.2
-2 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 0
-Curve2ds 0
-Curves 12
-7 0 0 5 56 12 0 0.79500000000000004 -6.5049999999999999 0.14010613330000002 0.79499680000000006 -6.5049999999999999 0.28021293329999997 0.79154040000000003 -6.5049999999999999 0.42020413330000006 0.78461479999999995 -6.5049999999999999 0.55996773329999994 0.7742424 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.69939600000000002 0.76048400000000005 -6.5049999999999999 0.84625513330000002 0.7459903833 -6.5049999999999999 0.9930767667 0.72768416250000001 -6.5049999999999999 1.1399697542 0.70559137920000004 -6.5049999999999999 1.2867929499999999 0.67968078330000004 -6.5049999999999999 1.4336500000000001 0.64996799999999999 -6.5049999999999999 1.4336605 0.64972076670000001 -6.5049999999999999 1.4336178749999999 0.64945686670000002 -6.5049999999999999 1.4336992083 0.6492221333 -6.5049999999999999 1.4336128333 0.64895823330000002 -6.5049999999999999 1.43364 0.64871100000000004 -6.5049999999999999 1.4334536667 0.61781496670000002 -6.5049999999999999 1.4338860833000002 0.58679560000000008 -6.5049999999999999 1.4337184999999999 0.55586383750000001 -6.5049999999999999 1.4339196667 0.52489728330000007 -6.5049999999999999 1.4339999999999999 0.49393500000000001 -6.5049999999999999 1.4203730000000001 0.44235658329999999 -6.5049999999999999 1.4019439167000001 0.39482056250000003 -6.5049999999999999 1.3786762917000002 0.35127068750000001 -6.5049999999999999 1.3506378333 0.31178091669999997 -6.5049999999999999 1.3177400000000001 0.27629500000000001 -6.5049999999999999 1.2811151667 0.23680705000000002 -6.5049999999999999 1.238647625 0.2022839958 -6.5049999999999999 1.1916550832999999 0.172336775 -6.5049999999999999 1.1423406667 0.1464565333 -6.5049999999999999 1.0919700000000001 0.124249 -6.5049999999999999 1.0352280833 0.099204750000000008 -6.5049999999999999 0.97734481250000005 0.078821291700000004 -6.5049999999999999 0.91855039580000009 0.062216593699999996 -6.5049999999999999 0.85908024999999999 0.048575291700000002 -6.5049999999999999 0.79917499999999997 0.037031500000000002 -6.5049999999999999 0.71422663330000002 0.020663891799999997 -6.5049999999999999 0.62839160000000005 0.0085204118000000006 -6.5049999999999999 0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999 0.4554365333 -0.0055199242999999995 -6.5049999999999999 0.36900400000000005 -0.0092480200000000009 -6.5049999999999999 0.29509078329999999 -0.012436537700000002 -6.5049999999999999 0.2212840875 -0.014272503300000001 -6.5049999999999999 0.1475632875 -0.0151237605 -6.5049999999999999 0.073806716699999997 -0.015365757300000001 -6.5049999999999999 0 -0.0153654 -6.5049999999999999
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 0.81518699999999999 -5.9402499999999998 0.14384228329999998 0.81518840000000004 -5.9402271667000006 0.2876959208 0.81165896669999993 -5.9404387083000003 0.43153278750000001 0.80463047080000005 -5.9405512916999994 0.57538205000000009 0.79405134999999993 -5.9410128333000003 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.71922600000000003 0.77996900000000002 -5.9414899999999999 0.87021246670000008 0.76517558330000002 -5.9420155000000001 1.0213308082999999 0.74651331249999997 -5.9426253749999995 1.1721950875 0.72395041670000004 -5.9434967083000005 1.3233256167 0.69752283329999998 -5.9443378333000005 1.4742999999999999 0.66720400000000002 -5.94543 1.4742628333000001 0.66694476669999991 -5.94543 1.4743392083000002 0.66666886670000003 -5.94543 1.4742478750000001 0.66642213330000011 -5.94543 1.4742805000000001 0.6661462333 -5.94543 1.4742600000000001 0.66588700000000001 -5.94543 1.4733971667000001 0.63350796669999998 -5.9455041667000001 1.4727687083000001 0.60103934999999997 -5.9444543750000003 1.4720204583000001 0.56866240000000001 -5.9446347917000004 1.4690795000000001 0.53647503330000001 -5.9439725000000001 1.4638 0.50459600000000004 -5.9437800000000003 1.4549993333 0.4521639167 -5.943314 1.438882 0.40055589580000001 -5.9430417500000008 1.4164532082999999 0.35102818750000003 -5.9427913749999997 1.3883015000000001 0.30469641669999997 -5.9427034999999995 1.35538 0.26279599999999997 -5.94245 1.324343 0.22336788329999999 -5.9422016666999999 1.2891893333 0.1878346625 -5.9420512500000005 1.25038775 0.1560968583 -5.9416706249999995 1.2092403332999999 0.1279352 -5.9414608332999999 1.16632 0.103245 -5.9412500000000001 1.1074375167000001 0.069367640800000005 -5.9409051667000004 1.0454588874999999 0.041985586900000003 -5.9408280416999997 0.9811059875 0.019924968300000002 -5.9405238332999994 0.91553298329999999 0.001964155 -5.9404873333000001 0.84949300000000005 -0.0130764 -5.9403800000000002 0.75863771670000002 -0.033773601700000003 -5.9401899999999994 0.66700587080000007 -0.048953626300000004 -5.9401854167000003 0.57483235830000001 -0.059760275800000005 -5.9399964583000004 0.48236770000000001 -0.067346206699999994 -5.9399825000000002 0.38985199999999998 -0.072854699999999994 -5.9399300000000004 0.31188001669999998 -0.077497590000000005 -5.9398936666999997 0.2339049708 -0.080689167499999992 -5.9398094167000002 0.15594738330000002 -0.082971932499999998 -5.9399376666999997 0.077968400000000007 -0.084685259999999998 -5.9398096667000004 0 -0.086465399999999998 -5.9397900000000003
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 0.85399999999999998 -4.7359999999999998 0.14557136670000001 0.85400048330000011 -4.7360015000000004 0.29113294170000004 0.85043107080000002 -4.7359832083000004 0.43659826670000002 0.84327978329999997 -4.7360492917000006 0.58180796670000001 0.83259193330000003 -4.7360435000000001 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.72668600000000005 0.81839200000000012 -4.7360699999999998 0.87926013330000008 0.80344020000000005 -4.7361535000000003 1.0318636417 0.7845623583000001 -4.7360463749999999 1.1844210042000001 0.76176212080000005 -4.7362590417000003 1.3370129500000001 0.73503271670000003 -4.7362081667 1.48959 0.70438300000000009 -4.7363 1.4895799999999999 0.70410828330000008 -4.7363105000000001 1.4895700000000001 0.70382262920000005 -4.7362678749999993 1.48956 0.70355937079999997 -4.7363492083000001 1.4895499999999999 0.70327371670000005 -4.7362628333000005 1.4895400000000001 0.70299900000000004 -4.7362900000000003 1.4883074999999999 0.66898976669999999 -4.7361213332999998 1.4868468749999999 0.63499178329999995 -4.7356401667000005 1.4845070833 0.60102640419999998 -4.7356902499999993 1.4814183333000002 0.56711498329999999 -4.7352403333000002 1.47719 0.53335699999999997 -4.7350300000000001 1.4695433333000001 0.47218751670000003 -4.7345794999999997 1.4581237499999999 0.41091501250000001 -4.7340675417 1.4419468750000002 0.35102177920000005 -4.7337441250000003 1.4192991666999999 0.29414114999999996 -4.7331821667000007 1.3890400000000001 0.24174500000000002 -4.7328400000000004 1.3659131667 0.20172963500000002 -4.7325548333 1.3383665416999999 0.16434605120000001 -4.7322373749999995 1.3070511667 0.12985310290000002 -4.7320126250000003 1.2729826666999999 0.0985018317 -4.7317451666999997 1.2367600000000001 0.070556299999999988 -4.7315600000000009 1.1823987833 0.028624045000000001 -4.7312213332999997 1.1236330875 -0.0056422058000000002 -4.7310034999999999 1.0611087457999999 -0.03370364 -4.7307658750000003 0.99700805000000003 -0.056946653300000004 -4.7305761666999997 0.93208100000000005 -0.076839100000000007 -4.7304500000000003 0.83284490000000011 -0.1072510383 -4.7301764999999998 0.73213525830000004 -0.1298199038 -4.7300811249999999 0.63046978330000003 -0.14603751919999999 -4.7298982500000006 0.52810576669999998 -0.1575118533 -4.7298309999999999 0.42561300000000002 -0.16570400000000002 -4.7297700000000003 0.34062735830000002 -0.17248840000000001 -4.7296896667000006 0.25551287290000002 -0.1770692583 -4.7297947499999999 0.17035438750000001 -0.17971792919999999 -4.7295383750000006 0.085153933300000012 -0.18088284999999998 -4.7297278333000001 0 -0.18085100000000001 -4.72966
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 1.25 -4.6500000000000004 0.15215610000000002 1.2490129999999999 -4.6503093333000001 0.3041980333 1.2280551666999999 -4.6483290833000002 0.45258569580000002 1.1870900417000001 -4.6540019583000003 0.5938623167 1.1271228332999998 -4.6454998333000006 0.72499300000000011 1.0499400000000001 -4.6481300000000001 0.72499300000000011 1.0041264833000001 -4.6484799999999993 0.72499300000000011 0.95828494580000001 -4.6488300000000002 0.72499300000000011 0.91248934580000007 -4.6491800000000003 0.72499300000000011 0.86665218330000005 -4.6495299999999995 0.72499300000000011 0.82083700000000004 -4.6498800000000005 0.72499300000000011 0.82083700000000004 -4.6498800000000005 0.72499300000000011 0.82083700000000004 -4.6498800000000005 0.72499300000000011 0.82083700000000004 -4.6498800000000005 0.72499300000000011 0.82083700000000004 -4.6498800000000005 0.72499300000000011 0.82083700000000004 -4.6498800000000005 0.87723131669999999 0.80591211669999996 -4.6498498333000002 1.0294126541999999 0.78707858750000004 -4.6497498750000004 1.1816812832999999 0.76431037079999997 -4.6497051250000005 1.3339054333 0.73763871670000003 -4.6495801666999999 1.4861199999999999 0.70704800000000001 -4.6494999999999997 1.4859351667 0.70492375000000007 -4.6495660000000001 1.4858951250000001 0.70276960420000001 -4.64951325 1.4856300833 0.70066837500000001 -4.6496959167000007 1.4856556667 0.69851016669999999 -4.6495306667000005 1.4855499999999999 0.69638300000000009 -4.6495800000000003 1.4842755000000001 0.66414660000000003 -4.6494689999999999 1.4830082917 0.63192186670000006 -4.6488163333000001 1.480389 0.5997140083000001 -4.649168875 1.4778186666999999 0.56756989999999996 -4.6485318332999999 1.4739900000000001 0.53552599999999995 -4.6483999999999996 1.4664688333 0.47394724999999999 -4.6479491667000001 1.4554091249999999 0.41230339579999997 -4.6474618750000003 1.4398785833000001 0.35201162499999999 -4.6470110416999999 1.4177470000000001 0.29468183329999997 -4.6466175000000005 1.3880300000000001 0.241726 -4.6462500000000002 1.3654083333000002 0.2015433267 -4.6459891667000006 1.3384470833 0.16388219500000001 -4.6456293750000004 1.3075472916999999 0.12907531329999999 -4.6454883333000003 1.2738391667000002 0.0973783067 -4.6452066667 1.2378800000000001 0.069146799999999994 -4.6450500000000003 1.1841907 0.026986339999999998 -4.6447436667000002 1.1259447333000001 -0.0074947846000000002 -4.6447248332999997 1.0639238708000001 -0.0357101363 -4.6443945417000005 1.0001807166999999 -0.0590525483 -4.6444038333000002 0.93572100000000002 -0.079065999999999997 -4.6443100000000008 0.83618071669999994 -0.10998645000000001 -4.6441473333000003 0.73517137079999995 -0.1329607542 -4.6439242500000004 0.63318827499999997 -0.14945974580000002 -4.6440990832999995 0.53049236670000011 -0.16113654999999999 -4.6437759999999999 0.42760500000000001 -0.169462 -4.6438300000000003 0.3422222083 -0.17633065000000001 -4.6437124999999995 0.25668234379999999 -0.18097086250000002 -4.6438939583000005 0.17108483330000002 -0.1836383667 -4.64354625 0.085482749999999996 -0.1847607667 -4.6437683333000006 0 -0.18459899999999999 -4.6436800000000007
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 1.1796199999999999 -3.5097399999999999 0.12660276670000001 1.1796199999999999 -3.5097528332999999 0.25318886670000001 1.1628699999999998 -3.5084437917 0.37980413330000001 1.12937 -3.5059014167 0.50639023329999999 1.0791199999999999 -3.5020579999999999 0.63299300000000003 1.0121200000000001 -3.49695 0.63299300000000003 0.98001348329999993 -3.4971771666999998 0.63299300000000003 0.94791102920000003 -3.4975137083000001 0.63299300000000003 0.91581263750000008 -3.4976262917000001 0.63299300000000003 0.88370268330000001 -3.4979628332999999 0.63299300000000003 0.85160199999999997 -3.4981900000000001 0.63299300000000003 0.85160199999999997 -3.4981900000000001 0.63299300000000003 0.85160199999999997 -3.4981900000000001 0.63299300000000003 0.85160199999999997 -3.4981900000000001 0.63299300000000003 0.85160199999999997 -3.4981900000000001 0.63299300000000003 0.85160199999999997 -3.4981900000000001 0.78440114999999999 0.83793553330000003 -3.4973270000000003 0.93581982080000004 0.82017823330000006 -3.4961285833000004 1.0872104707999999 0.7983420792 -3.4948760000000001 1.2386335167 0.77241821669999999 -3.4931213333 1.3900399999999999 0.74240300000000004 -3.49125 1.3795311667000001 0.71938443330000001 -3.4932913333000002 1.3714275416999999 0.69602795000000006 -3.4946930833000001 1.3656562082999999 0.6723283417 -3.4956844167000001 1.3625088333000002 0.6483012333 -3.4959736667000003 1.3615999999999999 0.62393100000000001 -3.49579 1.3612356666999998 0.61218349999999999 -3.4957256667000003 1.3606650833000002 0.60043724999999992 -3.4955050833000003 1.360310125 0.58869224999999992 -3.4955501250000003 1.3596551667000001 0.57694849999999998 -3.4953451667 1.35907 0.56520599999999999 -3.4952600000000005 1.3552455000000001 0.50416276670000004 -3.4946509999999997 1.3493949583000002 0.44317390830000003 -3.4940857500000004 1.3402579583000001 0.38278786250000002 -3.4934288332999999 1.3260011667000002 0.32377181669999999 -3.4928573332999999 1.3052600000000001 0.26666899999999999 -3.49234 1.2897483332999999 0.2236584033 -3.4918976667000003 1.27045125 0.18171228579999998 -3.4915761667000003 1.2469468750000001 0.14168543919999999 -3.4910994583000003 1.2187091667000001 0.1046086967 -3.4910248333 1.1864100000000002 0.071730599999999992 -3.49092 1.1439457167 0.028756556700000001 -3.4908718333000004 1.0945404958 -0.0071325846000000002 -3.4911434583000003 1.0407573583 -0.036036365399999999 -3.4912817500000002 0.98458119999999993 -0.059293181700000003 -3.4917190000000002 0.92817399999999994 -0.079615700000000011 -3.4919500000000001 0.83247646669999997 -0.114569985 -3.4925128332999997 0.73571685000000009 -0.1408576554 -3.4927162917000003 0.63791806670000006 -0.16001261750000001 -3.493201 0.53933219999999993 -0.17369950670000001 -3.4932013333 0.43950299999999998 -0.18340899999999999 -3.4934099999999999 0.3516732333 -0.19168111669999999 -3.493395 0.26309763329999997 -0.19715167080000001 -3.4932320833000001 0.17437984579999999 -0.20025764169999999 -3.4932910417 0.086352683299999997 -0.20151413330000001 -3.4932125000000003 0 -0.20128000000000001 -3.4932099999999999
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 1.14174 -3.1168200000000001 0.113468 1.1417358 -3.116825 0.226936 1.1275149332999999 -3.1167175000000005 0.34040399999999998 1.0990919833000001 -3.1164974999999999 0.453872 1.0564398667000001 -3.1161650000000001 0.56734000000000007 0.99959400000000009 -3.11572 0.56734000000000007 0.97172700000000001 -3.1159123332999998 0.56734000000000007 0.94386000000000003 -3.1161109166999998 0.56734000000000007 0.91599300000000006 -3.1162272082999998 0.56734000000000007 0.88812599999999997 -3.1164851667 0.56734000000000007 0.860259 -3.1166399999999999 0.56734000000000007 0.860259 -3.1166399999999999 0.56734000000000007 0.860259 -3.1166399999999999 0.56734000000000007 0.860259 -3.1166399999999999 0.56734000000000007 0.860259 -3.1166399999999999 0.56734000000000007 0.860259 -3.1166399999999999 0.71923733330000006 0.8475436167 -3.1159591667000002 0.87122112500000004 0.83057458750000002 -3.1148418750000002 1.0230179375000001 0.80935035000000011 -3.113850625 1.1750314167 0.78386413330000004 -3.1122458332999998 1.32691 0.75412999999999997 -3.1105900000000002 1.3132021667 0.72679229999999995 -3.1134065 1.3025432917000002 0.69897439169999998 -3.1155032083000003 1.2952146250000001 0.67067262919999993 -3.1167395 1.2909245 0.64189378330000002 -3.1173393332999999 1.2898499999999999 0.61262899999999998 -3.1171100000000003 1.2895323332999999 0.60526955000000005 -3.1170248332999999 1.2893563333 0.59790603750000004 -3.1170427917000003 1.2888636667000002 0.5905561708 -3.1169190833 1.2886376666999999 0.58319078330000007 -3.1168776667000002 1.2882200000000001 0.57583799999999996 -3.1168300000000002 1.2851213333 0.51654396670000002 -3.1164191667000001 1.2802435000000001 0.4572882667 -3.1158843750000003 1.2717062917000002 0.39844694170000006 -3.1155433333000002 1.2590878333000002 0.34047936670000001 -3.1150366667 1.2405599999999999 0.28377200000000002 -3.11463 1.2265088333 0.2405753367 -3.1142991667000004 1.209081625 0.19811461080000001 -3.1139318750000005 1.1875387917 0.15727065579999999 -3.1136010417000004 1.1611928333000001 0.11915243 -3.1133275 1.1304500000000002 0.085086600000000012 -3.1130800000000001 1.0920986499999998 0.042636905000000003 -3.1127266667 1.0468257375000001 0.0064868453999999999 -3.1125233333 0.99702397080000005 -0.023019203799999999 -3.1122043749999997 0.94491418329999999 -0.046987388300000002 -3.1121291666999999 0.89233700000000005 -0.067989999999999995 -3.11198 0.80297288330000005 -0.10368361670000001 -3.1117471666999998 0.7122799125 -0.13082567080000002 -3.1114507917000003 0.6203820458 -0.1508776208 -3.1113721249999999 0.52765845 -0.16531655000000001 -3.1112195000000002 0.43380599999999997 -0.17553100000000002 -3.11117 0.3470663833 -0.18501991670000001 -3.1111336667000002 0.25950420420000003 -0.19082935420000002 -3.1110390000000003 0.17184946249999999 -0.1938603542 -3.111026625 0.084985283300000006 -0.19498791670000001 -3.1110288332999998 0 -0.19506100000000001 -3.1110300000000004
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 1.1000000000000001 -2.75 0.094907283300000006 1.0999895 -2.7500070000000001 0.18980042080000001 1.088782125 -2.7497910833000003 0.28472014169999998 1.0662007917 -2.7493887083000002 0.37961446669999999 1.0325371667000001 -2.7487321667 0.47452100000000003 0.98751 -2.7479100000000001 0.47452100000000003 0.96360900000000005 -2.7479923333 0.47452100000000003 0.93970799999999999 -2.7482413333000002 0.47452100000000003 0.91580700000000004 -2.7481986667 0.47452100000000003 0.89190599999999998 -2.7484476666999997 0.47452100000000003 0.86800500000000003 -2.7485300000000001 0.47452100000000003 0.86800500000000003 -2.7485300000000001 0.47452100000000003 0.86800500000000003 -2.7485300000000001 0.47452100000000003 0.86800500000000003 -2.7485300000000001 0.47452100000000003 0.86800500000000003 -2.7485300000000001 0.47452100000000003 0.86800500000000003 -2.7485300000000001 0.62846621670000002 0.85670495000000002 -2.7475849999999999 0.78243299579999992 0.84082771249999999 -2.7462525000000002 0.9363577958 0.82035557920000002 -2.7445325 1.0903489500000001 0.79531771670000007 -2.7424250000000003 1.24427 0.76568600000000009 -2.7399299999999998 1.2285086667 0.73564211670000001 -2.7407615000000001 1.2162014999999999 0.70500729579999999 -2.7413357083000003 1.2074891250000002 0.6738169542000001 -2.7415120000000002 1.2023038333 0.64202838330000001 -2.7415143333000001 1.2006300000000001 0.60967700000000002 -2.7411500000000002 1.2003698332999999 0.6051600667 -2.7410895000000002 1.2002002917000001 0.60066709169999999 -2.7410821250000001 1.1998765833 0.59614182500000001 -2.7409507917 1.1996226667000001 0.59164260000000002 -2.7409871667000001 1.1993499999999999 0.58713400000000004 -2.74091 1.1961191667000002 0.52989149999999996 -2.7403843333000002 1.1907872917 0.47272483330000004 -2.7398670000000003 1.1823647917000002 0.41587827080000001 -2.7395507083000004 1.1699141666999999 0.35967941669999998 -2.7392115000000001 1.15255 0.30440899999999999 -2.7389899999999998 1.1391876666999998 0.26188363329999997 -2.7387964999999999 1.12261075 0.21991785 -2.7387082083000003 1.1028296666999999 0.17933404580000001 -2.7385845 1.078084 0.14103795 -2.7386493332999997 1.0495300000000001 0.106253 -2.7387100000000002 1.01552335 0.064614781699999999 -2.7387136666999998 0.97520388749999998 0.0280628975 -2.7388590000000002 0.93077734170000004 -0.0027325035 -2.7389793332999997 0.88384006670000004 -0.028418293299999998 -2.7393246667 0.835978 -0.050930500000000004 -2.7395200000000002 0.75649318330000004 -0.087429624999999997 -2.740065 0.67474138750000001 -0.1156382604 -2.7405370833000005 0.5912606333 -0.1368773958 -2.7409987500000002 0.50681290000000001 -0.1522925 -2.7414083332999999 0.42168099999999997 -0.16315299999999999 -2.7416200000000002 0.33734505000000004 -0.1744378667 -2.7420231666999997 0.25225782920000001 -0.18068419170000002 -2.7421815416999999 0.16711371249999998 -0.18340655829999999 -2.7424857499999997 0.082720616699999999 -0.1841716333 -2.7424409999999999 0 -0.18449399999999999 -2.7424899999999997
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 0.99530300000000005 -1.99949 0.040001766699999997 0.99530066669999995 -1.9995306667000001 0.079997741700000013 0.99207083330000001 -1.9994525833000001 0.12000667500000001 0.98558693750000004 -1.9996776250000001 0.15999940000000001 0.97588491669999999 -1.9996901667 0.20000299999999999 0.96293300000000004 -1.99986 0.20000299999999999 0.94608026670000001 -1.9999073332999999 0.20000299999999999 0.92921759999999998 -1.9999086666999999 0.20000299999999999 0.91236046669999993 -1.9999333333 0.20000299999999999 0.89550940000000001 -1.9999866666999999 0.20000299999999999 0.87865000000000004 -2.0000100000000001 0.20000299999999999 0.87865000000000004 -2.0000100000000001 0.20000299999999999 0.87865000000000004 -2.0000100000000001 0.20000299999999999 0.87865000000000004 -2.0000100000000001 0.20000299999999999 0.87865000000000004 -2.0000100000000001 0.20000299999999999 0.87865000000000004 -2.0000100000000001 0.36301123330000001 0.87273829999999997 -2.0000255 0.52602009169999997 0.86080639169999995 -2.0000003749999999 0.6890207208000001 0.84285062919999998 -2.0001117083 0.8520355167 0.81887778330000005 -2.0000678333000002 1.0150399999999999 0.788879 -2.0001500000000001 0.99888873330000005 0.75871720000000009 -1.9963305 0.98603913330000004 0.72789539999999997 -1.9931724583000001 0.97650057500000009 0.69638026669999997 -1.9912227499999999 0.97026160000000006 0.66420096669999995 -1.9898303333 0.96734200000000004 0.63134500000000005 -1.98949 0.96701046670000013 0.62742145000000005 -1.9894376667 0.96658309999999992 0.62350446250000002 -1.9893790833 0.96629375419999997 0.61957632920000005 -1.9894027917000001 0.96585545000000006 0.61566621669999999 -1.9892848332999999 0.965476 0.61174600000000001 -1.9892700000000001 0.96036185000000007 0.5590851 -1.9887049999999999 0.95314301250000011 0.50655128329999999 -1.9885504166999999 0.94317521669999993 0.45442996670000002 -1.9883739583 0.93029856670000011 0.40290239999999999 -1.9884725000000001 0.91387400000000008 0.35225400000000001 -1.9885699999999999 0.9010318167000001 0.31270085000000003 -1.9886845000000002 0.88603077919999995 0.27373322080000001 -1.9887146250000001 0.86863286670000006 0.23558600830000001 -1.988972875 0.84841776670000002 0.19878056670000002 -1.9889905000000001 0.82548600000000005 0.16368199999999999 -1.98908 0.80051349999999999 0.1250089583 -1.9890911667 0.771937875 0.0885375313 -1.9890554583000002 0.74032162500000009 0.055169541700000005 -1.9890822500000001 0.706071 0.025338583300000002 -1.9891246667 0.66943600000000003 -0.001003 -1.9892400000000001 0.61593634999999991 -0.038091566700000003 -1.9893941666999999 0.55786242919999995 -0.068330925000000001 -1.9899077083000001 0.49669080000000004 -0.092223470799999999 -1.9902337500000002 0.43392406670000006 -0.11020701669999999 -1.9906066667 0.37116899999999997 -0.12278500000000001 -1.99074 0.29749095000000003 -0.13825399999999999 -1.9912273333000001 0.22305971250000001 -0.14603049999999998 -1.9916813333000001 0.14830007919999999 -0.14861606250000001 -1.9918884583000001 0.073821216699999997 -0.14876224999999998 -1.9920518333000001 0 -0.14908000000000002 -1.9920100000000001
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 0.95471400000000006 -1.75 0 0.95471400000000006 -1.7499985 0 0.95471400000000006 -1.7499917917000001 0 0.95471400000000006 -1.7498757083000001 0 0.95471400000000006 -1.7498065 0 0.95471400000000006 -1.7496800000000001 0 0.93972376670000013 -1.7497023332999999 0 0.92471686669999997 -1.7498913333000001 0 0.90973913330000011 -1.7497886667 0 0.89473223329999996 -1.7499776667000002 0 0.87974200000000002 -1.75 0 0.87974200000000002 -1.75 0 0.87974200000000002 -1.75 0 0.87974200000000002 -1.75 0 0.87974200000000002 -1.75 0 0.87974200000000002 -1.75 0.18435865000000001 0.87974056670000012 -1.7500406666999999 0.36873011250000004 0.87140205000000004 -1.7508625833000002 0.55308782499999998 0.85473165830000009 -1.7528876250000001 0.73745209999999994 0.82971376669999997 -1.7556001667000001 0.92181200000000008 0.79636400000000007 -1.7593699999999999 0.90634578330000004 0.76800801669999996 -1.7536823333 0.89400425419999996 0.73897880420000006 -1.7493884167000002 0.88472335000000002 0.70920240420000003 -1.7461549167000001 0.87864213329999996 0.67876631669999998 -1.744586 0.87560799999999994 0.64760699999999993 -1.7441400000000002 0.87505961669999999 0.64212846670000001 -1.7440823333000002 0.87458550419999992 0.6366857667000001 -1.7440309167000001 0.87391378750000004 0.63118723330000004 -1.7438972083000002 0.87337155 0.62574953330000005 -1.7439051667000001 0.87273900000000004 0.62028099999999997 -1.7438100000000001 0.86704589999999993 0.56913656670000001 -1.7433211667000001 0.85919259169999995 0.5181823417000001 -1.7429625417000001 0.84924834580000008 0.46756884580000002 -1.7428435 0.83641785000000002 0.41762368329999999 -1.7428130000000002 0.82078600000000002 0.36851299999999998 -1.74272 0.80851695000000001 0.33007278330000001 -1.7426714999999999 0.79443696250000007 0.29215621250000001 -1.7426407083 0.7783397875000001 0.2550028708 -1.7424870000000001 0.76000355000000008 0.21879505000000002 -1.7424343332999999 0.73934699999999998 0.18381400000000001 -1.7422899999999999 0.71751703329999994 0.14663480500000001 -1.7421043333000001 0.69293915000000006 0.1108760996 -1.7420020000000001 0.66571855830000004 0.077365748300000009 -1.741686125 0.63579380000000008 0.046782136700000004 -1.7416931667 0.60309299999999999 0.019547399999999999 -1.7415700000000001 0.55839658329999997 -0.017056796700000001 -1.7414321666999999 0.50867818749999993 -0.047628722500000005 -1.7415391250000001 0.45552322919999999 -0.07231369 -1.7416148333000001 0.40042858330000003 -0.091214303299999994 -1.7416436667000001 0.34506300000000001 -0.104479 -1.7416099999999999 0.27712948330000003 -0.1210494 -1.7417974999999999 0.20821236250000003 -0.1296023 -1.7418735417 0.13867392920000002 -0.13270176250000001 -1.7421141667 0.069144183299999995 -0.13297434999999999 -1.7421183332999999 0 -0.13303100000000001 -1.7421099999999998
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0 0.878023 -1.6075299999999999 0.17303380000000002 0.878023 -1.6075016666999999 0.34606864170000001 0.87027549999999998 -1.6091858333 0.51910087920000003 0.85478049999999994 -1.6123168750000001 0.69213728330000002 0.831538 -1.6172541667 0.86516899999999997 0.80054800000000004 -1.62368 0.85023486670000004 0.77371643329999995 -1.6169156667 0.8383046917000001 0.74615319999999996 -1.6115950832999999 0.82935555829999996 0.71787757079999992 -1.608140125 0.82341663329999992 0.68886715000000009 -1.6060351667000001 0.820465 0.65913599999999994 -1.60565 0.81979441670000008 0.6523367833 -1.6055515 0.8190776875000001 0.64555267080000001 -1.6054957082999999 0.81834658329999999 0.63875553749999991 -1.605342 0.81756516670000001 0.63197455000000002 -1.6053143333000002 0.81676000000000004 0.62519199999999997 -1.6052200000000001 0.81075936670000004 0.57490893329999992 -1.6046903333 0.80288373330000007 0.52478274169999994 -1.6042148333000001 0.79286018330000008 0.47504519579999999 -1.6040955833000001 0.78047829999999996 0.42589681670000001 -1.6038013332999999 0.765486 0.377585 -1.6035299999999999 0.75374010000000002 0.33972093330000003 -1.6032726666999999 0.7403862833 0.30237124170000002 -1.6031215833000001 0.72525423750000007 0.2656744667 -1.6026757083000001 0.70813198330000005 0.22980039999999999 -1.6024715 0.68884400000000001 0.19489799999999999 -1.60216 0.6688467333 0.1587130967 -1.6018515 0.6465175917 0.12357315169999999 -1.6016107083 0.62169772079999996 0.090287487900000005 -1.601297 0.59419701669999991 0.059561261700000007 -1.6011343333000001 0.56371599999999999 0.032018900000000003 -1.6009300000000002 0.52376369999999994 -0.0040854966999999999 -1.6006711667 0.47870910830000002 -0.034722941300000004 -1.6005154583000001 0.43006159999999999 -0.059795834800000003 -1.6002649582999999 0.37925763330000001 -0.079220432500000007 -1.6001905000000001 0.32781700000000003 -0.09289950000000001 -1.59999 0.26374218330000004 -0.1099328083 -1.5997586667000001 0.1984458875 -0.1190460646 -1.5998377500000001 0.1323224875 -0.122586925 -1.5997480833 0.066015316700000007 -0.12309315 -1.5997396667000001 0 -0.12291500000000001 -1.59975
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0 0.85780800000000001 -0.397343 0.053087000000000002 0.8578101333 -0.397343 0.106174 0.85580080829999994 -0.39736300000000002 0.15926099999999999 0.85180294170000004 -0.39740300000000001 0.21234800000000001 0.84578736669999999 -0.39746300000000001 0.26543500000000003 0.8377770000000001 -0.39754300000000004 0.26543500000000003 0.8377770000000001 -0.39754300000000004 0.26543500000000003 0.8377770000000001 -0.39754300000000004 0.26543500000000003 0.8377770000000001 -0.39754300000000004 0.26543500000000003 0.8377770000000001 -0.39754300000000004 0.26543500000000003 0.8377770000000001 -0.39754300000000004 0.26023665000000001 0.80229934999999997 -0.39728268329999999 0.25508673749999999 0.76681992920000008 -0.39699851250000001 0.2501316167 0.73129759169999997 -0.39674986249999999 0.24528326670000003 0.69577973329999998 -0.3964763167 0.24066200000000001 0.66022000000000003 -0.396206 0.2349186667 0.61608993329999995 -0.39587099999999997 0.22949093330000001 0.571913 -0.3955392667 0.2244342667 0.52769613330000009 -0.39520920000000004 0.21981693329999999 0.48343560000000002 -0.3948770667 0.21572 0.43911700000000004 -0.39453699999999997 0.21257005000000001 0.40500583330000001 -0.39427393330000005 0.2097397875 0.37081237499999997 -0.3940214917 0.2066854625 0.33673089579999999 -0.39376196670000002 0.20294145 0.30275774999999999 -0.39350889999999999 0.197964 0.26908199999999999 -0.39325500000000002 0.19391998330000002 0.24165523329999999 -0.39304698330000004 0.18902377920000002 0.2143938833 -0.3928484458 0.1829753875 0.18736305419999999 -0.39262917920000001 0.17545918330000002 0.1605445167 -0.3924475167 0.16619600000000001 0.134019 -0.39224200000000004 0.15790633330000001 0.1106346933 -0.39207744999999999 0.148204375 0.087460053300000007 -0.3918584208 0.13655470829999999 0.065537736200000002 -0.39176355829999998 0.122349 0.045914565000000004 -0.39157046670000001 0.10490600000000001 0.029623300000000002 -0.39146300000000001 0.087864383300000001 0.013733990000000001 -0.3913505833 0.067597245799999997 0.0012001696 -0.39122952080000001 0.045259795800000002 -0.0075859217000000005 -0.3912091875 0.022177033300000003 -0.0121690233 -0.39114375000000001 0 -0.012247000000000001 -0.39115300000000003
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-7 0 0 5 56 12 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.84999999999999998 0 0 0.81282595000000002 0 0 0.77565721250000008 0 0 0.73847607920000002 0 0 0.70131171670000003 0 0 0.66413599999999995 0 0 0.62103916670000003 0 0 0.57789566670000003 0 0 0.53463570830000007 0 0 0.49133533330000001 0 0 0.44795600000000002 0 0 0.41525483329999996 0 0 0.38255970830000002 0 0 0.34975604170000002 0 0 0.31698966670000001 0 0 0.28414600000000001 0 0 0.25740194999999999 0 0 0.23066321249999999 0 0 0.20391207919999998 0 0 0.17717771669999999 0 0 0.15043199999999998 0 0 0.13462360000000001 0 0 0.11881520000000001 0 0 0.1030068 0 0 0.087198400000000009 0 0 0.071389999999999995 0 0 0.058010406699999996 -2.8231699999999999e-05 0 0.046883854999999995 -0.0027701008 0 0.038008417900000001 -0.0087236282999999994 0 0.031386335000000001 -0.017509960000000001 0 0.027016200000000001 -0.029331700000000002
- 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
-Polygon3D 0
-PolygonOnTriangulations 0
-Surfaces 0
-Triangulations 0
-
-TShapes 37
-Ve
-1e-07
-1.43365 0.649968 -6.505
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.0153654 -6.505
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 1 0 4 11
-0
-
-0101000
-+37 0 -36 0 *
-Ve
-1e-07
-1.4743 0.667204 -5.94543
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.0864654 -5.93979
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 2 0 4 11
-0
-
-0101000
-+34 0 -33 0 *
-Ve
-1e-07
-1.48959 0.704383 -4.7363
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.180851 -4.72966
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 3 0 4 11
-0
-
-0101000
-+31 0 -30 0 *
-Ve
-1e-07
-1.48612 0.707048 -4.6495
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.184599 -4.64368
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 4 0 4 11
-0
-
-0101000
-+28 0 -27 0 *
-Ve
-1e-07
-1.39004 0.742403 -3.49125
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.20128 -3.49321
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 5 0 4 11
-0
-
-0101000
-+25 0 -24 0 *
-Ve
-1e-07
-1.32691 0.75413 -3.11059
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.195061 -3.11103
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 6 0 4 11
-0
-
-0101000
-+22 0 -21 0 *
-Ve
-1e-07
-1.24427 0.765686 -2.73993
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.184494 -2.74249
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 7 0 4 11
-0
-
-0101000
-+19 0 -18 0 *
-Ve
-1e-07
-1.01504 0.788879 -2.00015
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.14908 -1.99201
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 8 0 4 11
-0
-
-0101000
-+16 0 -15 0 *
-Ve
-1e-07
-0.921812 0.796364 -1.75937
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.133031 -1.74211
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 9 0 4 11
-0
-
-0101000
-+13 0 -12 0 *
-Ve
-1e-07
-0.865169 0.800548 -1.62368
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.122915 -1.59975
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 10 0 4 11
-0
-
-0101000
-+10 0 -9 0 *
-Ve
-1e-07
-0.265435 0.837777 -0.397543
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 -0.012247 -0.391153
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 11 0 4 11
-0
-
-0101000
-+7 0 -6 0 *
-Ve
-1e-07
-0 0.85 0
-0 0
-
-0101100
-*
-Ve
-1e-07
-0 0.0270162 -0.0293317
-0 0
-
-0101100
-*
-Ed
- 1e-10 1 1 0
-1 12 0 4 11
-0
-
-0101000
-+4 0 -3 0 *
-Co
-
-1100000
-+35 9 +32 9 +29 9 +26 9 +23 9 +20 9 +17 9 +14 9 +11 9 +8 9
-+5 9 +2 9 *
-
-+1 0
-0
-
+++ /dev/null
-DBRep_DrawableShape
-
-CASCADE Topology V1, (c) Matra-Datavision
-Locations 10
-1
- 1 0 0 0
- 0 1 0 0
- 0 0 1 0
-1
- 1 -0 0 -0
- 0 1 0 0
- -0 0 1 -0
-1
- 1 0 0 0
- 0 1 0 0
- 0 0 1 100
-2 2 1 3 1 0
-1
- 1 0 0 -0
- 0 1 0 -0
- 0 0 1 -32
-2 2 1 3 1 5 1 0
-2 5 -1 3 -1 2 -1 0
-2 3 -1 2 -1 0
-1
- -0.5 -0.866025403784439 0 0
-0.866025403784439 -0.5 0 0
- 0 0 1 0
-1
- -0.5 0.866025403784438 0 0
--0.866025403784438 -0.5 0 0
- 0 0 1 0
-Curve2ds 0
-Curves 8
-1 -110 -10 100 -0 -0 -1
-1 110 -10 100 -0 -0 -1
-1 -110 -10 0 1 0 0
-1 110 10 100 -0 -0 -1
-1 110 -10 0 0 1 0
-1 -110 10 100 -0 -0 -1
-1 110 10 0 -1 0 0
-1 -110 10 0 0 -1 -0
-Polygon3D 0
-PolygonOnTriangulations 17
-2 3 4
-p 3.20000002 1 0 32
-2 1 2
-p 3.20000002 1 0 32
-2 2 4
-p 22.00000002 1 0 220
-2 1 3
-p 22.00000002 1 0 220
-2 1 2
-p 22.00000002 1 0 220
-2 3 4
-p 3.20000002 1 0 32
-2 1 2
-p 12.80000008 1 0 32
-2 2 4
-p 3.20000002 1 0 20
-2 1 3
-p 3.20000002 1 0 20
-2 2 3
-p 8.00000008 1 0 20
-2 1 2
-p 3.20000002 1 0 32
-2 2 4
-p 22.00000002 1 0 220
-2 1 3
-p 22.00000002 1 0 220
-2 3 4
-p 22.00000002 1 0 220
-2 1 3
-p 3.20000002 1 0 20
-2 2 4
-p 3.20000002 1 0 20
-2 4 1
-p 8.00000008 1 0 20
-Surfaces 5
-1 -110 -10 100 0 -1 0 1 0 0 -0 0 1
-1 110 -10 100 1 0 0 -0 1 0 0 -0 1
-1 110 10 100 0 1 -0 -1 0 0 0 0 1
-1 -110 10 100 -1 -0 0 0 -1 -0 0 0 1
-1 -110 -10 100 0 0 -1 -1 0 -0 0 1 0
-Triangulations 5
-4 2 1 0
--110 -10 100 -110 -10 68 110 -10 100 110 -10 68 0 0 0 -32 220 0 220 -32 1 2 3 4 3 2
-4 2 1 0
--110 10 100 -110 10 68 -110 -10 100 -110 -10 68 0 0 0 -32 20 0 20 -32 1 2 3 4 3 2
-4 2 1 0
-110 -10 100 110 -10 68 110 10 100 110 10 68 0 0 0 -32 20 0 20 -32 1 2 3 4 3 2
-4 2 1 0
--110 -10 100 110 -10 100 110 10 100 -110 10 100 0 0 -220 0 -220 20 0 20 3 2 1 1 4 3
-4 2 1 0
-110 10 100 110 10 68 -110 10 100 -110 10 68 0 0 0 -32 220 0 220 -32 1 2 3 4 3 2
-
-TShapes 25
-Ve
-1e-07
--110 -10 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 1 0 0 32
-6 1 2 0
-0
-
-0101000
-+25 4 -25 6 *
-Ve
-1e-07
-110 -10 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 2 0 0 32
-6 2 3 0
-0
-
-0101000
-+23 4 -23 6 *
-Ed
- 1e-07 1 1 0
-1 3 0 0 220
-6 3 1 7
-6 4 1 8
-6 5 4 8
-0
-
-0101000
-+25 0 -23 0 *
-Wi
-
-0101000
-+24 0 -22 0 -21 4 +21 6 *
-Fa
-0 1e-07 1 0
-2 1
-0101000
-+20 0 *
-Ve
-1e-07
-110 10 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 4 0 0 32
-6 6 3 0
-6 7 5 0
-0
-
-0101000
-+18 4 -18 6 *
-Ed
- 1e-07 1 1 0
-1 5 0 0 20
-6 8 3 7
-6 9 3 8
-6 10 4 8
-0
-
-0101000
-+23 0 -18 0 *
-Wi
-
-0101000
-+22 0 -17 0 -16 4 +16 6 *
-Fa
-0 1e-07 2 0
-2 3
-0101000
-+15 0 *
-Ve
-1e-07
--110 10 0
-0 0
-
-0101101
-*
-Ed
- 1e-07 1 1 0
-1 6 0 0 32
-6 11 2 0
-0
-
-0101000
-+13 4 -13 6 *
-Ed
- 1e-07 1 1 0
-1 7 0 0 220
-6 12 5 7
-6 13 5 8
-6 14 4 8
-0
-
-0101000
-+18 0 -13 0 *
-Wi
-
-0101000
-+17 0 -12 0 -11 4 +11 6 *
-Fa
-0 1e-07 3 0
-2 5
-0101000
-+10 0 *
-Ed
- 1e-07 1 1 0
-1 8 0 0 20
-6 15 2 8
-6 16 2 7
-6 17 4 8
-0
-
-0101000
-+13 0 -25 0 *
-Wi
-
-0101000
-+12 0 -24 0 -8 4 +8 6 *
-Fa
-0 1e-07 4 0
-2 2
-0101000
-+7 0 *
-Wi
-
-0101100
-+21 0 +16 0 +11 0 +8 0 *
-Fa
-0 1e-07 5 0
-2 4
-0101000
--5 4 *
-Sh
-
-0101000
--19 0 -14 0 -9 0 -6 0 +4 0 -4 5 *
-So
-
-0100000
--3 0 *
-Co
-
-0100000
-+2 1 +2 9 +2 10 *
-
-+1 0
\ No newline at end of file
+++ /dev/null
-#ifndef _SALOME_COMM_IDL_
-#define _SALOME_COMM_IDL_
-
-#include "SALOME_Exception.idl"
-
-module SALOME {
-
- enum TypeOfDataTransmitted { _DOUBLE_,_INT_ };
-
- enum TypeOfCommunication { CORBA_ , MPI_ , SOCKET_ };
-
- typedef sequence<double> vectorOfDouble;
-
- typedef sequence<long> vectorOfLong;
-
- interface MultiCommClass {
- void setProtocol(in TypeOfCommunication typ);
- };
-
- interface ServantLifeCycle {
- void release();
- };
-
- interface Sender {
- TypeOfDataTransmitted getTypeOfDataTransmitted();
- void release();
- };
-
- interface SenderDouble : Sender {
- SenderDouble buildOtherWithProtocol(in TypeOfCommunication type);
- };
-
- interface SenderInt : Sender {
- SenderInt buildOtherWithProtocol(in TypeOfCommunication type);
- };
-
- //No compulsory copy between double and CORBA::Double
- interface CorbaDoubleNCSender : SenderDouble {
- unsigned long getSize();
- vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
- vectorOfDouble send();
- };
-
- //Compulsory copy between double and CORBA::Double
- interface CorbaDoubleCSender : SenderDouble {
- unsigned long getSize();
- //unsigned long getSize2();
- vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
- };
-
- //No compulsory copy between int and CORBA::Long
- interface CorbaLongNCSender : SenderInt {
- unsigned long getSize();
- vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
- vectorOfLong send();
- };
-
- //Compulsory copy between int and CORBA::Long
- interface CorbaLongCSender : SenderInt {
- unsigned long getSize();
- vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
- };
-
- interface MPISender : Sender {
- typedef struct Parameter {
- unsigned long myproc;
- unsigned long tag1;
- unsigned long tag2;
- string service;
- } param;
- param getParam();
- void send();
- void close(in param p);
- };
-
- interface MPISenderDouble : SenderDouble,MPISender {
- };
-
- interface MPISenderInt : SenderInt,MPISender {
- };
-
- interface SocketSender : Sender {
- typedef struct Parameter {
- unsigned long lstart;
- unsigned long lend;
- unsigned long myport;
- string internet_address;
- } param;
- param getParam();
- void initCom() raises(SALOME_Exception);
- void acceptCom() raises(SALOME_Exception);
- void closeCom();
- void endOfCom() raises(SALOME_Exception);
- void send();
- };
-
- interface SocketSenderDouble : SenderDouble,SocketSender {
- };
-
- interface SocketSenderInt : SenderInt,SocketSender {
- };
-};
-
-#endif
+++ /dev/null
-#ifndef _SALOME_CONTAINERMANAGER_IDL_
-#define _SALOME_CONTAINERMANAGER_IDL_
-
-#include "SALOME_Exception.idl"
-#include "SALOME_Component.idl"
-
-module Engines
-{
-
-/*!
- Type to describe properties of wanted resource.
-*/
-struct MachineParameters
-{
- string container_name;
- string hostname;
- string OS;
- long mem_mb;
- long cpu_clock;
- long nb_proc_per_node;
- long nb_node;
- boolean isMPI;
-};
-
-/*!
- Type to transmit list of machines.
-*/
- typedef sequence<string> MachineList;
-
-/*!
- exception thrown if a computer is not found in the catalog
-*/
- exception NotFound {};
-
-
-/*! \brief Interface of the %containerManager
- This interface is used for interaction with the unique instance
- of ContainerManager
-*/
- interface ContainerManager
- {
- Container FindOrStartContainer( in MachineParameters params,
- in MachineList possibleComputers);
-
- string FindBest(in MachineList possibleComputers);
-
- MachineList GetFittingResources( in MachineParameters params,
- in string componentName )
- raises (SALOME::SALOME_Exception);
-
- void Shutdown();
-
- void ShutdownContainers();
- } ;
-};
-
-#endif
+++ /dev/null
-//=============================================================================
-// File : SALOME_MPITestComponent.idl
-// Created : mer jui 04 12:08:17 CEST 2003
-// Author : Bernard SECHER, CEA
-// Project : SALOME
-// Copyright : CEA 2003
-// $Header$
-//=============================================================================
-
-#include "SALOME_Component.idl"
-#include "SALOME_MPIObject.idl"
-
-module Engines
-{
-
- interface TestMPIComponent : Component, MPIObject
- {
- // version synchrone (process 0)
- void Coucou(in long L);
- // version asynchrone (autres process)
- oneway void SPCoucou(in long L);
- };
-
-};
+++ /dev/null
-<!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_3.1.0a" moduleName="MED" />
-<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
-<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
-<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
-<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" 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_3.1.0a" moduleName="MED" />
-<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
-<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
-<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
-<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" 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_3.1.0a" moduleName="MED" />
-<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
-<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
-<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
-<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" 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_3.1.0a" moduleName="MED" />
-<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
-<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
-<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
-<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" moduleName="VISU" />
-<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
-<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
-</machine>
-
-</resources>
+++ /dev/null
-<?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>3.1.0a</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>3.1.0a</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>3.1.0a</component-version>
- <component-comment>GUI Neutral Context</component-comment>
- <component-multistudy>1</component-multistudy>
- <constraint>'linux' ~ OS</constraint>
- </component>
-</component-list>
-</begin-catalog>
+++ /dev/null
-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_CAS],[
-AC_REQUIRE([AC_PROG_CXX])dnl
-AC_REQUIRE([AC_PROG_CXXCPP])dnl
-
-AC_CHECKING(for OpenCascade)
-
-AC_LANG_SAVE
-AC_LANG_CPLUSPLUS
-
-AC_SUBST(CAS_CPPFLAGS)
-AC_SUBST(CAS_CXXFLAGS)
-AC_SUBST(CAS_KERNEL)
-AC_SUBST(CAS_VIEWER)
-AC_SUBST(CAS_MODELER)
-AC_SUBST(CAS_OCAF)
-AC_SUBST(CAS_DATAEXCHANGE)
-AC_SUBST(CAS_LDFLAGS)
-AC_SUBST(CAS_LDPATH)
-AC_SUBST(CAS_STDPLUGIN)
-
-OWN_CONFIG_H=no
-
-CAS_CPPFLAGS=""
-CAS_CXXFLAGS=""
-CAS_LDFLAGS=""
-occ_ok=no
-own_config_h=no
-
-dnl libraries directory location
-case $host_os in
- linux*)
- casdir=Linux
- ;;
- freebsd*)
- casdir=Linux
- ;;
- irix5.*)
- casdir=Linux
- ;;
- irix6.*)
- casdir=Linux
- ;;
- osf*)
- casdir=Linux
- ;;
- solaris2.*)
- casdir=Linux
- ;;
- *)
- casdir=Linux
- ;;
-esac
-
-AC_MSG_CHECKING(for OpenCascade directories)
-
-if test -z $CASROOT; then
- AC_MSG_RESULT(CASROOT not defined)
- for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
- if test -f $d/libTKernel.so ; then
- AC_MSG_RESULT(libTKernel.so detected in $d)
- CASROOT=$d
- CASROOT=`echo ${CASROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
- break
- fi
- done
-fi
-
-if test -d ${CASROOT}/${casdir}/lib; then
- CAS_LDPATH="-L$CASROOT/$casdir/lib "
- AC_MSG_RESULT(yes)
-else
- if test -d ${CASROOT}/lib; then
- CAS_LDPATH="-L$CASROOT/lib "
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
-fi
-
-
-dnl were is OCC ?
-if test -z $CASROOT; then
- AC_MSG_WARN(You must provide CASROOT variable : see OCC installation manual)
-else
- occ_ok=yes
- OCC_VERSION_MAJOR=0
- OCC_VERSION_MINOR=0
- ff=$CASROOT/inc/Standard_Version.hxx
- if test -f $ff ; then
- grep "define OCC_VERSION_MAJOR" $ff > /dev/null
- if test $? = 0 ; then
- OCC_VERSION_MAJOR=`grep "define OCC_VERSION_MAJOR" $ff | awk '{i=3 ; print $i}'`
- fi
- grep "define OCC_VERSION_MINOR" $ff > /dev/null
- if test $? = 0 ; then
- OCC_VERSION_MINOR=`grep "define OCC_VERSION_MINOR" $ff | awk '{i=3 ; print $i}'`
- fi
- fi
-fi
-
-if test "x$occ_ok" = "xyes"; then
-
-dnl test c++ compiler flag for unsigned character
- for opt in -funsigned-char -unsigned ; do
- AC_CXX_OPTION($opt,CAS_CXXFLAGS,flag=yes,flag=no)
- if test "$flag" = "yes"; then
- break
- fi
- done
-
-dnl cascade headers
-
- CPPFLAGS_old="$CPPFLAGS"
-case $host_os in
- linux*)
- CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DHAVE_WOK_CONFIG_H -I$CASROOT/inc"
- ;;
- osf*)
- CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DLIN -DLINTEL -DCSFDB -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DHAVE_WOK_CONFIG_H -I$CASROOT/inc"
- ;;
-esac
- CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
-
- if test -n $KERNEL_ROOT_DIR; then
- if test -d $KERNEL_ROOT_DIR/include/salome; then
- CAS_CPPFLAGS="$CAS_CPPFLAGS -I$KERNEL_ROOT_DIR/include/salome"
- CPPFLAGS="$CPPFLAGS -I$KERNEL_ROOT_DIR/include/salome"
- fi
- fi
- CAS_CPPFLAGS="$CAS_CPPFLAGS -I${ROOT_BUILDDIR}/include/salome"
- CPPFLAGS="$CPPFLAGS -I${ROOT_BUILDDIR}/salome_adm/unix"
-
- echo
- echo
- echo testing config.h
- echo
- echo
-
- AC_CHECK_HEADER(config.h, own_config_h=no, [
- echo
- echo
- echo "config.h file not found! Generating it..."
- echo
- echo
- mv confdefs.h backup_confdefs.h
- ${ROOT_SRCDIR}/make_config
- rm -rf ${ROOT_BUILDDIR}/*.log
- rm -rf ${ROOT_BUILDDIR}/*.status
- mv backup_confdefs.h confdefs.h
- rm -f backup_confdefs.h
- own_config_h=yes
- echo
- echo
- ])
-
- if test "x$own_config_h" = xyes ; then
- OWN_CONFIG_H=yes
- fi
-
- AC_CHECK_HEADER(Standard_Type.hxx,occ_ok=yes ,occ_ok=no)
-
-fi
-
-AC_SUBST(OWN_CONFIG_H)
-
-if test "x$occ_ok" = xyes ; then
-
- AC_MSG_CHECKING(for OpenCascade libraries)
-
- LIBS_old="$LIBS"
- LIBS="$LIBS $CAS_LDPATH -lTKernel"
-
- AC_CACHE_VAL(salome_cv_lib_occ,[
- AC_TRY_LINK(
-#include <Standard_Type.hxx>
-, size_t size;
- const Standard_CString aName="toto";
- Standard_Type myST(aName) ;
- myST.Find(aName);,
- eval "salome_cv_lib_occ=yes",eval "salome_cv_lib_occ=no")
- ])
- occ_ok="$salome_cv_lib_occ"
-
-fi
-CPPFLAGS="$CPPFLAGS_old"
-LIBS="$LIBS_old"
-
-if test "x$occ_ok" = xno ; then
- AC_MSG_RESULT(no)
- AC_MSG_WARN(Opencascade libraries not found)
-else
- AC_MSG_RESULT(yes)
- CAS_KERNEL="$CAS_LDPATH -lTKernel -lTKMath"
-
- # E.A. compatibility version 4 and 5.x
- CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKPShape -lTKCDF -lTKCAF -lTKShapeSchema -lTKPCAF -lFWOSPlugin -lTKStdSchema"
- if test $OCC_VERSION_MAJOR -lt 5 ; then
- CAS_OCAF="$CAS_OCAF -lTKPAppStd"
- fi
- if test -f $CASROOT/$casdir/lib/libPAppStdPlugin.so ; then
- # this library is absent in CASCADE 5.2.3
- CAS_OCAF="$CAS_OCAF -lPAppStdPlugin"
- CAS_STDPLUGIN="PAppStdPlugin"
- fi
- if test -f $CASROOT/$casdir/lib/libStdPlugin.so ; then
- # this libraries are only for CASCADE 5.2.3
- CAS_STDPLUGIN="StdPlugin"
- CAS_OCAF="$CAS_OCAF -lStdPlugin -lStdLPlugin -lTKLCAF -lTKPLCAF -lTKStdLSchema"
- fi
-
- CAS_VIEWER="$CAS_LDPATH -lTKOpenGl -lTKV3d -lTKService"
- CAS_MODELER="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBO -lTKBool -lTKHLR -lTKFillet -lTKOffset -lTKFeat"
-
- # E.A. compatibility version 4 and 5.x
- CAS_DATAEXCHANGE="$CAS_LDPATH -lTKXSBase -lTKIGES -lTKSTEP -lTKShHealing"
- if test $OCC_VERSION_MAJOR -lt 5 ; then
- CAS_DATAEXCHANGE="$CAS_DATAEXCHANGE -lTKShHealingStd"
- fi
-
-
- CAS_LDFLAGS="$CAS_KERNEL $CAS_OCAF $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"
-
-fi
-
-AC_LANG_RESTORE
-
-])dnl
-
-
+++ /dev/null
-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_LAM],[
-
-AC_REQUIRE([AC_PROG_CC])dnl
-
-AC_ARG_WITH(lam,
- --with-lam=DIR root directory path of LAM installation,
- WITHLAM="yes",WITHLAM="no")
-
-MPI_INCLUDES=""
-MPI_LIBS=""
-if test "$WITHLAM" = yes; then
-
- echo
- echo ---------------------------------------------
- echo testing lam
- echo ---------------------------------------------
- echo
- LAM_HOME=$withval
-
- if test "$LAM_HOME"; then
- MPI_INCLUDES="-I$LAM_HOME/include"
- if test "x$LAM_HOME" = "x/usr"
- then
- MPI_LIBS=""
- else
- MPI_LIBS="-L$LAM_HOME/lib"
- fi
- fi
-
- CPPFLAGS_old="$CPPFLAGS"
- CPPFLAGS="$MPI_INCLUDES $CPPFLAGS"
- AC_CHECK_HEADER(mpi.h,WITHLAM="yes",WITHLAM="no")
- CPPFLAGS="$CPPFLAGS_old"
-
- if test "$WITHLAM" = "yes";then
- AC_CHECK_LIB(util,openpty,,WITHLAM="no")
- LIBS_old="$LIBS"
- LDFLAGS_old="$LDFLAGS"
- LDFLAGS="$MPI_LIBS $LDFLAGS"
- AC_CHECK_LIB(lam,lam_mp_init,,WITHLAM="no")
- AC_CHECK_LIB(mpi,MPI_Init,WITHLAM="yes",WITHLAM="no")
- AC_CHECK_LIB(mpi,MPI_Publish_name,WITHMPI2="yes",WITHMPI2="no")
- LDFLAGS="$LDFLAGS_old"
- LIBS="$LIBS_old"
- fi
-
- if test "$WITHLAM" = "yes";then
- WITHMPI="yes"
- mpi_ok=yes
- MPI_LIBS="$MPI_LIBS -lmpi -llam"
- else
- mpi_ok=no
- fi
-
-fi
-
-
-])dnl
+++ /dev/null
-
-AC_DEFUN([CHECK_OMNIORB],[
-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 omniORB)
-omniORB_ok=yes
-
-if test "x$PYTHON" = "x"
-then
- CHECK_PYTHON
-fi
-
-AC_LANG_SAVE
-AC_LANG_CPLUSPLUS
-
-AC_PATH_PROG(OMNIORB_IDL, omniidl)
-if test "xOMNIORB_IDL" = "x"
-then
- omniORB_ok=no
- AC_MSG_RESULT(omniORB binaries not in PATH variable)
-else
- omniORB_ok=yes
-fi
-
-if test "x$omniORB_ok" = "xyes"
-then
- AC_SUBST(OMNIORB_IDL)
-
- OMNIORB_BIN=`echo ${OMNIORB_IDL} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
- OMNIORB_ROOT=${OMNIORB_BIN}
- # one-level up
- OMNIORB_ROOT=`echo ${OMNIORB_ROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
- #
- #
- if test -d $OMNIORB_ROOT/include ; then
- # if $OMNIORB_ROOT/include exists, there are a lot of chance that
- # this is omniORB4.x installed via configure && make && make install
- OMNIORB_LIB=`echo ${OMNIORB_BIN} | sed -e "s,bin\$,lib,"`
- OMNIORB_VERSION=4
- else
- # omniORB has been installed old way
- OMNIORB_LIB=`echo ${OMNIORB_BIN} | sed -e "s,bin/,lib/,"`
- # one-level up again
- OMNIORB_ROOT=`echo ${OMNIORB_ROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
- if test -d $OMNIORB_ROOT/include/omniORB4 ; then
- OMNIORB_VERSION=4
- else
- OMNIORB_VERSION=3
- fi
- fi
- AC_SUBST(OMNIORB_ROOT)
-
- OMNIORB_INCLUDES="-I$OMNIORB_ROOT/include -I$OMNIORB_ROOT/include/omniORB${OMNIORB_VERSION} -I$OMNIORB_ROOT/include/COS"
- AC_SUBST(OMNIORB_INCLUDES)
-
- ENABLE_PTHREADS
-
- OMNIORB_CXXFLAGS="-DOMNIORB_VERSION=$OMNIORB_VERSION"
- case $build_cpu in
- sparc*)
- AC_DEFINE(__sparc__)
- OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__sparc__"
- ;;
- *86*)
- AC_DEFINE(__x86__)
- OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__x86__"
- ;;
- esac
- case $build_os in
- solaris*)
- AC_DEFINE(__sunos__)
- __OSVERSION__=5
- AC_DEFINE(__OSVERSION__)
- OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__sunos__"
- ;;
- linux*)
- AC_DEFINE(__linux__)
- __OSVERSION__=2
- AC_DEFINE(__OSVERSION__)
- OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__linux__"
- ;;
- esac
- AC_SUBST(OMNIORB_CXXFLAGS)
-
- CPPFLAGS_old=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
-
- AC_LANG_CPLUSPLUS
- AC_CHECK_HEADER(CORBA.h,omniORB_ok="yes",omniORB_ok="no")
-
- CPPFLAGS=$CPPFLAGS_old
-
-fi
-
-dnl omniORB_ok=yes
-
-if test "x$omniORB_ok" = "xyes"
-then
- if test "x$OMNIORB_LIB" = "x/usr/lib"
- then
- OMNIORB_LDFLAGS=""
- else
- OMNIORB_LDFLAGS="-L$OMNIORB_LIB"
- fi
-
- LIBS_old=$LIBS
- LIBS="$LIBS $OMNIORB_LDFLAGS -lomnithread"
-
- CXXFLAGS_old=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
-
- AC_MSG_CHECKING(whether we can link with omnithreads)
- AC_CACHE_VAL(salome_cv_lib_omnithreads,[
- AC_TRY_LINK(
-#include <omnithread.h>
-, omni_mutex my_mutex,
- eval "salome_cv_lib_omnithreads=yes",eval "salome_cv_lib_omnithreads=no")
- ])
-
- omniORB_ok="$salome_cv_lib_omnithreads"
- if test "x$omniORB_ok" = "xno"
- then
- AC_MSG_RESULT(omnithreads not found)
- else
- AC_MSG_RESULT(yes)
- fi
-
- LIBS=$LIBS_old
- CXXFLAGS=$CXXFLAGS_old
-fi
-
-
-dnl omniORB_ok=yes
-if test "x$omniORB_ok" = "xyes"
-then
-
- AC_CHECK_LIB(socket,socket, LIBS="-lsocket $LIBS",,)
- AC_CHECK_LIB(nsl,gethostbyname, LIBS="-lnsl $LIBS",,)
-
- LIBS_old=$LIBS
- OMNIORB_LIBS="$OMNIORB_LDFLAGS"
- OMNIORB_LIBS="$OMNIORB_LIBS -lomniORB${OMNIORB_VERSION}"
- OMNIORB_LIBS="$OMNIORB_LIBS -lomniDynamic${OMNIORB_VERSION}"
- OMNIORB_LIBS="$OMNIORB_LIBS -lCOS${OMNIORB_VERSION}"
- OMNIORB_LIBS="$OMNIORB_LIBS -lCOSDynamic${OMNIORB_VERSION}"
- OMNIORB_LIBS="$OMNIORB_LIBS -lomnithread"
- if test $OMNIORB_VERSION = 3 ; then
- OMNIORB_LIBS="$OMNIORB_LIBS -ltcpwrapGK"
- fi
- AC_SUBST(OMNIORB_LIBS)
-
- LIBS="$OMNIORB_LIBS $LIBS"
- CXXFLAGS_old=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
-
- AC_MSG_CHECKING(whether we can link with omniORB)
- AC_CACHE_VAL(salome_cv_lib_omniorb,[
- AC_TRY_LINK(
-#include <CORBA.h>
-, CORBA::ORB_var orb,
- eval "salome_cv_lib_omniorb3=yes",eval "salome_cv_lib_omniorb3=no")
- ])
- omniORB_ok="$salome_cv_lib_omniorb3"
-
- omniORB_ok=yes
- if test "x$omniORB_ok" = "xno"
- then
- AC_MSG_RESULT(omniORB library linking failed)
- omniORB_ok=no
- else
- AC_MSG_RESULT(yes)
- fi
- LIBS="$LIBS_old"
- CXXFLAGS=$CXXFLAGS_old
-fi
-
-
-if test "x$omniORB_ok" = "xyes"
-then
-
- OMNIORB_IDLCXXFLAGS="-nf -I$OMNIORB_ROOT/idl"
- OMNIORB_IDLPYFLAGS="-bpython -I$OMNIORB_ROOT/idl"
- AC_SUBST(OMNIORB_IDLCXXFLAGS)
- AC_SUBST(OMNIORB_IDLPYFLAGS)
-
- OMNIORB_IDL_CLN_H=.hh
- OMNIORB_IDL_CLN_CXX=SK.cc
- OMNIORB_IDL_CLN_OBJ=SK.o
- AC_SUBST(OMNIORB_IDL_CLN_H)
- AC_SUBST(OMNIORB_IDL_CLN_CXX)
- AC_SUBST(OMNIORB_IDL_CLN_OBJ)
-
- OMNIORB_IDL_SRV_H=.hh
- OMNIORB_IDL_SRV_CXX=SK.cc
- OMNIORB_IDL_SRV_OBJ=SK.o
- AC_SUBST(OMNIORB_IDL_SRV_H)
- AC_SUBST(OMNIORB_IDL_SRV_CXX)
- AC_SUBST(OMNIORB_IDL_SRV_OBJ)
-
- OMNIORB_IDL_TIE_H=
- OMNIORB_IDL_TIE_CXX=
- AC_SUBST(OMNIORB_IDL_TIE_H)
- AC_SUBST(OMNIORB_IDL_TIE_CXX)
-
- AC_DEFINE(OMNIORB)
-
- CORBA_HAVE_POA=1
- AC_DEFINE(CORBA_HAVE_POA)
-
- CORBA_ORB_INIT_HAVE_3_ARGS=1
- AC_DEFINE(CORBA_ORB_INIT_HAVE_3_ARGS)
- CORBA_ORB_INIT_THIRD_ARG='"omniORB"'
- AC_DEFINE(CORBA_ORB_INIT_THIRD_ARG, "omniORB")
-
-fi
-
-omniORBpy_ok=no
-if test "x$omniORB_ok" = "xyes"
-then
- AC_MSG_CHECKING(omniORBpy)
- $PYTHON -c "import omniORB" &> /dev/null
- if test $? = 0 ; then
- AC_MSG_RESULT(yes)
- omniORBpy_ok=yes
- else
- AC_MSG_RESULT(no, check your installation of omniORBpy)
- omniORBpy_ok=no
- fi
-fi
-
-dnl AC_LANG_RESTORE
-
-AC_MSG_RESULT(for omniORBpy: $omniORBpy_ok)
-AC_MSG_RESULT(for omniORB: $omniORB_ok)
-
-# Save cache
-AC_CACHE_SAVE
-
-dnl AC_LANG_CPLUSPLUS
-
-CXXFLAGS_old=$CXXFLAGS
-CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
-LIBS_old=$LIBS
-LIBS="$LIBS $OMNIORB_LDFLAGS $OMNIORB_LIBS"
-AC_MSG_CHECKING(whether we have double and CORBA::Double compatibility)
-AC_TRY_RUN(
-#include <stdlib.h>
-#include <CORBA.h>
-int main ()
-{
- CORBA::Double *a=new CORBA::Double(2.5);
- double c=2.5;
- double *b;
- b=(double *)a;
-
- if( (c==*b) && (sizeof(double)==sizeof(CORBA::Double)) ){
- delete a;
- exit(0);
- }
- else{
- delete a;
- exit(1);
- }
-}
-,DOUBLECOMP="yes",DOUBLECOMP="no")
-if test "$DOUBLECOMP" = yes; then
- OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -DCOMP_CORBA_DOUBLE"
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-AC_MSG_CHECKING(whether we have int and CORBA::Long compatibility)
-AC_TRY_RUN(
-#include <stdlib.h>
-#include <CORBA.h>
-int main ()
-{
- CORBA::Long *a=new CORBA::Long(2);
- int c=2;
- int *b;
- b=(int *)a;
-
- if( (c==*b) && (sizeof(int)==sizeof(CORBA::Long)) )
- exit(0);
- else
- exit(1);
-}
-,LONGCOMP="yes",LONGCOMP="no")
-if test "$LONGCOMP" = yes; then
- OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -DCOMP_CORBA_LONG"
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-CXXFLAGS=$CXXFLAGS_old
-LIBS=$LIBS_old
-
-AC_LANG_RESTORE
-
-AC_SUBST(OMNIORB_CXXFLAGS)
-
-])dnl
-dnl
+++ /dev/null
-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_QT],[
-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_REQUIRE([CHECK_OPENGL])dnl
-
-AC_CHECKING(for QT)
-qt_ok=yes
-
-AC_LANG_SAVE
-AC_LANG_CPLUSPLUS
-
-if test "x$QTDIR" = "x"
-then
- AC_MSG_RESULT(please define QTDIR variable)
- qt_ok=no
-else
- AC_MSG_RESULT(QTDIR is $QTDIR)
- qt_inc_ok=no
- QTINC=""
- AC_CHECK_FILE(${QTDIR}/include/qt3/qglobal.h,QTINC="/qt3",QTINC="")
- QT_VERS=`grep "QT_VERSION_STR" ${QTDIR}/include${QTINC}/qglobal.h | sed -e 's%^#define QT_VERSION_STR\([[:space:]]*\)%%g' -e 's%\"%%g'`
- AC_MSG_RESULT(Qt version is $QT_VERS)
- QT_VERS="Qt_"`echo $QT_VERS | sed -e 's%\"%%g' -e 's%\.%_%g'`
-fi
-
-if test "x$qt_ok" = "xyes"
-then
- if test -f ${QTDIR}/bin/moc
- then
- MOC=${QTDIR}/bin/moc
- else
- AC_PATH_PROG(MOC, moc)
- fi
- if test "x$MOC" = "x"
- then
- qt_ok=no
- AC_MSG_RESULT(moc qt-compiler not in PATH variable)
- else
- qt_ok=yes
- AC_MSG_RESULT(moc found)
- fi
-fi
-
-if test "x$qt_ok" = "xyes"
-then
- if test -f ${QTDIR}/bin/uic
- then
- UIC=${QTDIR}/bin/uic
- else
- AC_PATH_PROG(UIC, uic)
- fi
- if test "x$UIC" = "x"
- then
- qt_ok=no
- AC_MSG_RESULT(uic qt-interface compiler not in PATH variable)
- else
- qt_ok=yes
- AC_MSG_RESULT(uic found)
- fi
-fi
-
-AC_SUBST(QTDIR)
-QT_ROOT=$QTDIR
-
-if test "x$qt_ok" = "xyes"
-then
- CPPFLAGS_old=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$QTDIR/include${QTINC}"
-
- AC_LANG_CPLUSPLUS
- AC_CHECK_HEADER(qaction.h,qt_ok=yes ,qt_ok=no)
-
- CPPFLAGS=$CPPFLAGS_old
-
- AC_MSG_CHECKING(include of qt headers)
-
- if test "x$qt_ok" = "xno"
- then
- AC_MSG_RESULT(qt headers not found, or too old qt version, in $QTDIR/include)
- AC_MSG_RESULT(QTDIR environment variable may be wrong)
- else
- AC_MSG_RESULT(yes)
- QT_INCLUDES="-I${QT_ROOT}/include${QTINC} -DQT_THREAD_SUPPORT"
- QT_MT_INCLUDES="-I${QT_ROOT}/include${QTINC} -DQT_THREAD_SUPPORT"
- fi
-fi
-
-if test "x$qt_ok" = "xyes"
-then
- AC_MSG_CHECKING(linking qt library)
- LIBS_old=$LIBS
- if test "x$QTDIR" = "x/usr"
- then
- LIBS="$LIBS -lqt-mt $OGL_LIBS"
- else
- LIBS="$LIBS -L$QTDIR/lib -lqt-mt $OGL_LIBS"
- fi
-
- CXXFLAGS_old=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS $QT_INCLUDES"
-
- AC_CACHE_VAL(salome_cv_lib_qt,[
- AC_TRY_LINK(
-#include <qapplication.h>
-, int n;
- char **s;
- QApplication a(n, s);
- a.exec();,
- eval "salome_cv_lib_qt=yes",eval "salome_cv_lib_qt=no")
- ])
- qt_ok="$salome_cv_lib_qt"
-
- if test "x$qt_ok" = "xno"
- then
- AC_MSG_RESULT(unable to link with qt library)
- AC_MSG_RESULT(QTDIR environment variable may be wrong)
- else
- AC_MSG_RESULT(yes)
- if test "x$QTDIR" = "x/usr"
- then
- QT_LIBS=" -lqt-mt"
- QT_MT_LIBS=" -lqt-mt"
- else
- QT_LIBS="-L$QTDIR/lib -lqt-mt"
- QT_MT_LIBS="-L$QTDIR/lib -lqt-mt"
- fi
- fi
-
- LIBS=$LIBS_old
- CXXFLAGS=$CXXFLAGS_old
-
-fi
-
-AC_SUBST(MOC)
-AC_SUBST(UIC)
-
-AC_SUBST(QT_ROOT)
-AC_SUBST(QT_INCLUDES)
-AC_SUBST(QT_LIBS)
-AC_SUBST(QT_MT_LIBS)
-AC_SUBST(QT_VERS)
-
-AC_LANG_RESTORE
-
-AC_MSG_RESULT(for qt: $qt_ok)
-
-# Save cache
-AC_CACHE_SAVE
-
-])dnl
-dnl
+++ /dev/null
-dnl Copyright (C) 2003 CEA/DEN, EDF R&D
-
-AC_DEFUN([CHECK_QWT],[
-AC_REQUIRE([CHECK_QT])dnl
-
-AC_CHECKING(for qwt)
-
-qwt_ok=yes
-
-dnl were is qwt ?
-
-AC_ARG_WITH(qwt,
- [ --with-qwt=DIR directory path to QWT installation ],
- [QWTHOME="$withval"
- AC_MSG_RESULT("select $withval as path to QWT")
- ])
-
-AC_ARG_WITH(qwt_inc,
- [ --with-qwt_inc=DIR directory path to QWT includes ],
- [QWT_INCLUDES="$withval"
- AC_MSG_RESULT("select $withval as path to QWT includes")
- ])
-
-if test -z $QWTHOME; then
- AC_MSG_RESULT(QWTHOME not defined)
- exits_ok=no
- if test "x$exits_ok" = "xno"; then
- for d in /usr/local /usr ; do
- AC_CHECK_FILE(${d}/lib/libqwt.so,exits_ok=yes,exits_ok=no)
- if test "x$exits_ok" = "xyes"; then
- QWTHOME=$d
- AC_MSG_RESULT(libqwt.so detected in $d/lib)
- fi
- done
- fi
- if test "x$exits_ok" = "xno"; then
- for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
- if test -f $d/libqwt.so ; then
- AC_MSG_RESULT(libqwt.so detected in $d)
- QWTHOME=$d
- QWTHOME=`echo ${QWTHOME} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
- exits_ok=yes
- break
- fi
- done
- fi
- if test "x$exits_ok" = "xyes"; then
- if test -z $QWT_INCLUDES; then
- QWT_INCLUDES=$QWTHOME"/include/qwt"
- if test ! -d $QWT_INCLUDES; then
- QWT_INCLUDES=$QWTHOME"/include"
- fi
- fi
- fi
-else
- if test -z $QWT_INCLUDES; then
- QWT_INCLUDES="$QWTHOME/include"
- fi
-fi
-
-if test "x$qwt_ok" = xno -o ! -d "$QWTHOME" ; then
- AC_MSG_RESULT(no)
- AC_MSG_WARN(qwt not found)
- qwt_ok=no
-else
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- CPPFLAGS_old=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$QWT_INCLUDES"
- CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
-
- AC_CHECK_HEADER(qwt.h,qwt_ok=yes,qwt_ok=no)
-
- CPPFLAGS=$CPPFLAGS_old
-
- if test "x$qwt_ok" = xno ; then
- AC_MSG_RESULT(no)
- AC_MSG_WARN(qwt not found)
- else
- qwt_ok=yes
- fi
-
-if test "x$qwt_ok" = "xyes"
-then
- AC_MSG_CHECKING(linking qwt library)
- LIBS_old=$LIBS
- if test "x$QTDIR" = "x/usr"
- then
- LIBS="$LIBS -lqt-mt"
- else
- LIBS="$LIBS -L$QTDIR/lib -lqt-mt"
- fi
- if test "x$QWTHOME" = "x/usr/lib"
- then
- LIBS="$LIBS -lqwt"
- else
- LIBS="$LIBS -L$QWTHOME/lib -lqwt"
- fi
-
- CXXFLAGS_old=$CXXFLAGS
- CXXFLAGS="$CXXFLAGS $QT_INCLUDES -I$QWT_INCLUDES"
-
- AC_CACHE_VAL(salome_cv_lib_qwt,[
- AC_TRY_LINK(
-#include <qapplication.h>
-#include <qwt_plot.h>
-, int n;
- char **s;
- QApplication a(n, s);
- QwtPlot* p;
- a.setMainWidget(p);
- a.exec();,
- eval "salome_cv_lib_qwt=yes",eval "salome_cv_lib_qwt=no")
- ])
- qwt_ok="$salome_cv_lib_qwt"
-
- if test "x$qwt_ok" = "xno"
- then
- AC_MSG_RESULT(unable to link with qwt library)
- AC_MSG_RESULT(QWTHOME environment variable may be wrong)
- else
- QWT_INCLUDES="-I$QWT_INCLUDES"
- if test "x$QWTHOME" = "x/usr/lib"
- then
- QWT_LIBS=" -lqwt"
- else
- QWT_LIBS="-L$QWTHOME/lib -lqwt"
- fi
-
- AC_SUBST(QWT_INCLUDES)
- AC_SUBST(QWT_LIBS)
-
- AC_MSG_RESULT(yes)
- fi
-
- LIBS=$LIBS_old
- CXXFLAGS=$CXXFLAGS_old
-
-fi
-
-
- AC_LANG_RESTORE
-
-fi
-
-
-])dnl
-dnl
+++ /dev/null
-# 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 ?= $(RESOURCES_FILES_ALL)
-
-resources: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
- @@SETX@; for d in $(SUBDIRS); do \
- (cd $$d && $(MAKE) $@) || exit 1; \
- done
-
-$(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:
-# one resources directory for all salome modules
- $(INSTALL) -d $(datadir)/resources
- for f in X $(RESOURCES_FILES:%=$(srcdir)/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
-
+++ /dev/null
-#ifndef _BASICMAINTEST_HXX_
-#define _BASICMAINTEST_HXX_
-
-#include <cppunit/CompilerOutputter.h>
-#include <cppunit/TestResult.h>
-#include <cppunit/TestResultCollector.h>
-#include <cppunit/TextTestProgressListener.h>
-#include <cppunit/BriefTestProgressListener.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <cppunit/TestRunner.h>
-#include <stdexcept>
-
-#include <iostream>
-#include <fstream>
-
-// ============================================================================
-/*!
- * Main program source for Unit Tests with cppunit package does not depend
- * on actual tests, so we use the same for all partial unit tests.
- */
-// ============================================================================
-
-int main(int argc, char* argv[])
-{
- // --- Create the event manager and test controller
- CPPUNIT_NS::TestResult controller;
-
- // --- Add a listener that colllects test result
- CPPUNIT_NS::TestResultCollector result;
- controller.addListener( &result );
-
- // --- Add a listener that print dots as test run.
-#ifdef WIN32
- CPPUNIT_NS::TextTestProgressListener progress;
-#else
- CPPUNIT_NS::BriefTestProgressListener progress;
-#endif
- controller.addListener( &progress );
-
- // --- Get the top level suite from the registry
-
- CPPUNIT_NS::Test *suite =
- CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest();
-
- // --- Adds the test to the list of test to run
-
- CPPUNIT_NS::TestRunner runner;
- runner.addTest( suite );
- runner.run( controller);
-
- // --- Print test in a compiler compatible format.
-
- std::ofstream testFile;
- testFile.open("UnitTestsResult", std::ios::out | std::ios::trunc);
- //CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr );
- CPPUNIT_NS::CompilerOutputter outputter( &result, testFile );
- outputter.write();
-
- // --- Run the tests.
-
- bool wasSucessful = result.wasSuccessful();
- testFile.close();
-
- // --- Return error code 1 if the one of test failed.
-
- return wasSucessful ? 0 : 1;
-}
-
-#endif
+++ /dev/null
-/*
- * APIInternalFailureException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Nov 20 15:15:42 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_APIInternalFailureException.hxx"
-using namespace std;
-
-namespace Batch {
-
-}
+++ /dev/null
-/*
- * APIInternalFailureException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Nov 20 15:15:41 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _APIINTERNALFAILUREEXCEPTION_H_
-#define _APIINTERNALFAILUREEXCEPTION_H_
-
-
-#include "Batch_GenericException.hxx"
-#include "Batch_GenericException.hxx"
-
-namespace Batch {
-
- class APIInternalFailureException : public GenericException
- {
- public:
- // Constructeur
- APIInternalFailureException(std::string ch = "undefined") : GenericException("APIInternalFailureException", ch) {}
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * BatchManager.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <netdb.h>
-//#include "MEDMEM_STRING.hxx"
-#include "Batch_Job.hxx"
-#include "Batch_JobId.hxx"
-#include "Batch_JobInfo.hxx"
-#include "Batch_InvalidArgumentException.hxx"
-#include "Batch_FactBatchManager.hxx"
-#include "Batch_BatchManager.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Constructeur
-// BatchManager::BatchManager(string host) throw(InvalidArgumentException) : _hostname(host), jobid_map()
-// {
-// // On verifie que le hostname est correct
-// if (!gethostbyname(_hostname.c_str())) { // hostname unknown from network
-// string msg = "hostname \"";
-// msg += _hostname;
-// msg += "\" unknown from the network";
-// throw InvalidArgumentException(msg.c_str());
-// }
-// }
- BatchManager::BatchManager(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException) : _hostname(host), jobid_map(), _parent(parent)
- {
- // On verifie que le hostname est correct
- if (!gethostbyname(_hostname.c_str())) { // hostname unknown from network
- string msg = "hostname \"";
- msg += _hostname;
- msg += "\" unknown from the network";
- throw InvalidArgumentException(msg.c_str());
- }
- }
-
- // Destructeur
- BatchManager::~BatchManager()
- {
- // Nothing to do
- }
-
- string BatchManager::__repr__() const
- {
- ostringstream oss;
- oss << "<BatchManager of type '" << (_parent ? _parent->getType() : "unknown (no factory)") << "' connected to server '" << _hostname << "'>";
- return oss.str();
- }
-
- // Recupere le l'identifiant d'un job deja soumis au BatchManager
-// const JobId BatchManager::getJobIdByReference(const string & ref)
-// {
-// return JobId(this, ref);
-// }
- const JobId BatchManager::getJobIdByReference(const char * ref)
- {
- return JobId(this, ref);
- }
-
-// // Methode pour le controle des jobs : soumet un job au gestionnaire
-// const JobId BatchManager::submitJob(const Job & job)
-// {
-// static int idx = 0;
-// //MEDMEM::STRING sst;
-// ostringstream sst;
-// sst << "Jobid_" << idx++;
-// JobId id(this, sst.str());
-// return id;
-// }
-
-// // Methode pour le controle des jobs : retire un job du gestionnaire
-// void BatchManager::deleteJob(const JobId & jobid)
-// {
-// // Nothing to do
-// }
-
-// // Methode pour le controle des jobs : suspend un job en file d'attente
-// void BatchManager::holdJob(const JobId & jobid)
-// {
-// // Nothing to do
-// }
-
-// // Methode pour le controle des jobs : relache un job suspendu
-// void BatchManager::releaseJob(const JobId & jobid)
-// {
-// // Nothing to do
-// }
-
-// // Methode pour le controle des jobs : modifie un job en file d'attente
-// void BatchManager::alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)
-// {
-// // Nothing to do
-// }
-
-// // Methode pour le controle des jobs : modifie un job en file d'attente
-// void BatchManager::alterJob(const JobId & jobid, const Parametre & param)
-// {
-// // Nothing to do
-// }
-
-// // Methode pour le controle des jobs : modifie un job en file d'attente
-// void BatchManager::alterJob(const JobId & jobid, const Environnement & env)
-// {
-// // Nothing to do
-// }
-
-// // Methode pour le controle des jobs : renvoie l'etat du job
-// JobInfo BatchManager::queryJob(const JobId & jobid)
-// {
-// return JobInfo();
-// }
-
-}
+++ /dev/null
-/*
- * BatchManager.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _BATCHMANAGER_H_
-#define _BATCHMANAGER_H_
-
-#include <string>
-#include <map>
-#include "Batch_Job.hxx"
-#include "Batch_JobId.hxx"
-#include "Batch_JobInfo.hxx"
-#include "Batch_InvalidArgumentException.hxx"
-
-namespace Batch {
-
- class Job;
- class JobId;
- class JobInfo;
- class FactBatchManager;
-
- class BatchManager
- {
- public:
- // Constructeur et destructeur
- //BatchManager(std::string host="localhost") throw(InvalidArgumentException); // connexion a la machine host
- BatchManager(const Batch::FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException); // connexion a la machine host
- virtual ~BatchManager();
- virtual std::string __repr__() const;
-
- // Recupere le l'identifiant d'un job deja soumis au BatchManager
- //virtual const JobId getJobIdByReference(const std::string & ref);
- virtual const Batch::JobId getJobIdByReference(const char * ref);
-
- // Methodes pour le controle des jobs : virtuelles pures
- virtual const Batch::JobId submitJob(const Batch::Job & job) = 0; // soumet un job au gestionnaire
- virtual void deleteJob(const Batch::JobId & jobid) = 0; // retire un job du gestionnaire
- virtual void holdJob(const Batch::JobId & jobid) = 0; // suspend un job en file d'attente
- virtual void releaseJob(const Batch::JobId & jobid) = 0; // relache un job suspendu
- virtual void alterJob(const Batch::JobId & jobid, const Batch::Parametre & param, const Batch::Environnement & env) = 0; // modifie un job en file d'attente
- virtual void alterJob(const Batch::JobId & jobid, const Batch::Parametre & param) = 0; // modifie un job en file d'attente
- virtual void alterJob(const Batch::JobId & jobid, const Batch::Environnement & env) = 0; // modifie un job en file d'attente
- virtual Batch::JobInfo queryJob(const Batch::JobId & jobid) = 0; // renvoie l'etat du job
-
- protected:
- std::string _hostname; // serveur ou tourne le BatchManager
- // std::map< const std::string, const Batch::JobId * > jobid_map; // table des jobs deja soumis
- std::map< std::string, const Batch::JobId * > jobid_map; // table des jobs deja soumis
- const Batch::FactBatchManager * _parent;
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * BatchManagerCatalog.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include <sstream>
-#include <map>
-#include "Batch_BatchManagerCatalog.hxx"
-#include "Batch_FactBatchManager.hxx"
-using namespace std;
-
-namespace Batch {
-
- pthread_mutex_t BatchManagerCatalog::_mutex = PTHREAD_MUTEX_INITIALIZER;
- std::map<string, FactBatchManager *> * BatchManagerCatalog::_p_catalog = 0;
-
- // Constructeur
- BatchManagerCatalog::BatchManagerCatalog()
- {
- // Nothing to do
- }
-
- // Destructeur
- BatchManagerCatalog::~BatchManagerCatalog()
- {
- // Nothing to do
- }
-
- // Functor
- FactBatchManager * BatchManagerCatalog::getFactBatchManager(const char * type)
- {
- return (* BatchManagerCatalog::_p_catalog)[type];
- }
-
- void BatchManagerCatalog::addFactBatchManager(const char * type, FactBatchManager * pFBM)
- {
- if (pFBM) { // *** section critique ***
- pthread_mutex_lock(&_mutex);
-
- if (! BatchManagerCatalog::_p_catalog) BatchManagerCatalog::_p_catalog = new std::map<string, FactBatchManager *>;
- (*BatchManagerCatalog::_p_catalog)[type] = pFBM;
-
- pthread_mutex_unlock(&_mutex);
- }
- }
-
- FactBatchManager * BatchManagerCatalog::operator() (const char * type) const
- {
- return BatchManagerCatalog::getFactBatchManager(type);
- }
-
- std::map<string, FactBatchManager *> * BatchManagerCatalog::dict() const
- {
- return _p_catalog;
- }
-
- string BatchManagerCatalog::__repr__() const
- {
- ostringstream oss;
- oss << "<BatchManagerCatalog contains {";
- string sep;
- for(std::map<string, FactBatchManager *>::const_iterator it = (*_p_catalog).begin(); it != (*_p_catalog).end(); it++, sep=", ") {
- oss << sep << "'" << (*it).first << "' : '" << (*it).second->__repr__() << "'";
- }
- oss << "}>";
- return oss.str();
- }
-
-}
+++ /dev/null
-/*
- * BatchManagerCatalog.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#ifndef _CATALOG_H_
-#define _CATALOG_H_
-
-#include <string>
-#include <map>
-#include <pthread.h>
-
-namespace Batch {
-
- class FactBatchManager;
-
- class BatchManagerCatalog
- {
- public:
- // Constructeur
- BatchManagerCatalog();
- // Destructeur
- virtual ~BatchManagerCatalog();
-
- static Batch::FactBatchManager * getFactBatchManager(const char * type);
- static void addFactBatchManager(const char * type, Batch::FactBatchManager * pFBM);
- virtual Batch::FactBatchManager * operator() (const char * type) const;
-
- virtual std::map<std::string, FactBatchManager *> * dict() const;
- virtual std::string __repr__() const;
-
- protected:
- static std::map<std::string, FactBatchManager *> * _p_catalog;
- static pthread_mutex_t _mutex;
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * BatchManager_LSF.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
- *
- */
-
-extern "C" {
-#include <lsf/lsf.h>
-#include <lsf/lsbatch.h>
-}
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include "Batch_BatchManager_LSF.hxx"
-
-namespace Batch {
-
- BatchManager_LSF::BatchManager_LSF(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager(parent, host)
- {
- // On se connecte au serveur LSF
- _connect = lsb_init("Salome2 Batch library");
- if (_connect < 0) { // si erreur
- char * errmsg = lsb_sysmsg();
- string msg = "LSF Server on host \"";
- msg += _hostname;
- msg += "\" : ";
- msg += errmsg ? errmsg : "Reason unknown";
- throw ConnexionFailureException(msg.c_str());
- }
- }
-
- // Destructeur
- BatchManager_LSF::~BatchManager_LSF()
- {
- // Nothing to do
- }
-
- // Methode pour le controle des jobs : soumet un job au gestionnaire
- const JobId BatchManager_LSF::submitJob(const Job & job)
- {
- Job_LSF joblsf = job;
- struct submitReply reply;
- int ref = lsb_submit(joblsf.getSubmitStruct(),
- &reply);
- if (ref < 0) { // si erreur
- char * msg = lsb_sysmsg();
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("LSF submit error. Reason : ") + msg);
- }
-
- ostringstream oss;
- oss << ref;
- JobId id(this, oss.str());
- return id;
- }
-
- // Methode pour le controle des jobs : retire un job du gestionnaire
- void BatchManager_LSF::deleteJob(const JobId & jobid)
- {
- int ref;
- istringstream iss(jobid.getReference());
- iss >> ref;
- int rc = lsb_deletejob(ref, 0, 0);
- if (rc < 0) { // si erreur
- char * msg = lsb_sysmsg();
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("LSF deljob error. Reason : ") + msg);
- }
- }
-
- // Methode pour le controle des jobs : suspend un job en file d'attente
- void BatchManager_LSF::holdJob(const JobId & jobid)
- {
- int ref;
- istringstream iss(jobid.getReference());
- iss >> ref;
- int rc = lsb_signaljob(ref, SIGSTOP);
- if (rc < 0) { // si erreur
- char * msg = lsb_sysmsg();
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("LSF signaljob error. Reason : ") + msg);
- }
- }
-
- // Methode pour le controle des jobs : relache un job suspendu
- void BatchManager_LSF::releaseJob(const JobId & jobid)
- {
- int ref;
- istringstream iss(jobid.getReference());
- iss >> ref;
- int rc = lsb_signaljob(ref, SIGCONT);
- if (rc < 0) { // si erreur
- char * msg = lsb_sysmsg();
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("LSF signaljob error. Reason : ") + msg);
- }
- }
-
-
- // Methode pour le controle des jobs : modifie un job en file d'attente
- void BatchManager_LSF::alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)
- {
- int ref;
- istringstream iss(jobid.getReference());
- iss >> ref;
-
- Job_LSF joblsf = Job(param, env);
- struct submitReply reply;
- ref = lsb_modify(joblsf.getSubmitStruct(),
- &reply,
- ref);
- if (ref < 0) { // si erreur
- ostringstream msg_sst;
- char * msg = lsb_sysmsg();
- if (!msg) msg = "unknown";
- msg_sst << msg << endl;
-// msg_sst << "BadJobId = " << (long) reply.badJobId << endl
-// << "BadJobName = " << reply.badJobName << endl
-// << "BadReqIndx = " << reply.badReqIndx << endl;
- throw APIInternalFailureException(string("LSF modify error. Reason : ") + msg_sst.str());
- }
- }
-
- // Methode pour le controle des jobs : modifie un job en file d'attente
- void BatchManager_LSF::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_LSF::alterJob(const JobId & jobid, const Environnement & env)
- {
- alterJob(jobid, Parametre(), env);
- }
-
-
-
- // Methode pour le controle des jobs : renvoie l'etat du job
- JobInfo BatchManager_LSF::queryJob(const JobId & jobid)
- {
- int id;
- istringstream iss(jobid.getReference());
- iss >> id;
-
- JobInfo_LSF ji = JobInfo_LSF(id);
-
- return ji;
- }
-
-
-
- // Methode pour le controle des jobs : teste si un job est present en machine
- bool BatchManager_LSF::isRunning(const JobId & jobid)
- {
- int id;
- istringstream iss(jobid.getReference());
- iss >> id;
-
- JobInfo_LSF ji = JobInfo_LSF(id);
-
- return ji.isRunning();
- }
-
-
-
-}
+++ /dev/null
-/*
- * BatchManager_LSF.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_LSF_H_
-#define _BATCHMANAGER_LSF_H_
-
-
-#include "Batch_Job.hxx"
-#include "Batch_Job.hxx"
-#include "Batch_JobId.hxx"
-#include "Batch_JobInfo.hxx"
-#include "Batch_JobInfo_LSF.hxx"
-#include "Batch_Job_LSF.hxx"
-#include "Batch_InvalidArgumentException.hxx"
-#include "Batch_ConnexionFailureException.hxx"
-#include "Batch_APIInternalFailureException.hxx"
-#include "Batch_NotYetImplementedException.hxx"
-#include "Batch_BatchManager.hxx"
-
-namespace Batch {
-
- class Job;
- class JobId;
- class JobInfo;
- class FactBatchManager;
-
- class BatchManager_LSF : public BatchManager
- {
- public:
- // Constructeur et destructeur
- BatchManager_LSF(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host
- virtual ~BatchManager_LSF();
-
- // Recupere le nom du serveur par defaut
- // static string BatchManager_LSF::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; // LSF connect id
-
- private:
-
-#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
+++ /dev/null
-/*
- * BatchManager_PBS.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
- *
- */
-
-extern "C" {
-#include <pbs_error.h>
-#include <pbs_ifl.h>
-}
-#include <iostream>
-#include <fstream>
-#include <sstream>
-//#include "MEDMEM_STRING.hxx"
-#include "Batch_BatchManager_PBS.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Recupere le nom du serveur par defaut
-// string BatchManager_PBS::getDefaultServer() {
-// string server_name = "localhost";
-
-// const char * server_name_path = "@openpbsspooldir@/server_name";
-// ifstream server_name_file(server_name_path);
-// if (server_name_file) {
-// server_name_file >> server_name;
-// server_name_file.close();
-// }
-
-// return server_name;
-// }
-
- // Constructeur
-// BatchManager_PBS::BatchManager_PBS() throw(InvalidArgumentException,ConnexionFailureException) : BatchManager(BatchManager_PBS::getDefaultServer())
-// {
-// // On se connecte au serveur PBS
-// _connect = pbs_connect(const_cast< char * >(_hostname.c_str()));
-// if (_connect < 0) { // si erreur
-// char * errmsg = pbs_geterrmsg(_connect);
-// string msg = "PBS Server on host \"";
-// msg += _hostname;
-// msg += "\" : ";
-// msg += errmsg ? errmsg : "Reason unknown";
-// throw ConnexionFailureException(msg.c_str());
-// }
-// }
-
- // Constructeur
-// BatchManager_PBS::BatchManager_PBS(string host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager(host)
-// {
-// // On se connecte au serveur PBS
-// _connect = pbs_connect(const_cast< char * >(_hostname.c_str()));
-// if (_connect < 0) { // si erreur
-// char * errmsg = pbs_geterrmsg(_connect);
-// string msg = "PBS Server on host \"";
-// msg += _hostname;
-// msg += "\" : ";
-// msg += errmsg ? errmsg : "Reason unknown";
-// throw ConnexionFailureException(msg.c_str());
-// }
-// }
- BatchManager_PBS::BatchManager_PBS(const FactBatchManager * parent, const char * host) throw(InvalidArgumentException,ConnexionFailureException) : BatchManager(parent, host)
- {
- // On se connecte au serveur PBS
- _connect = pbs_connect(const_cast< char * >(_hostname.c_str()));
- if (_connect < 0) { // si erreur
- char * errmsg = pbs_geterrmsg(_connect);
- string msg = "PBS Server on host \"";
- msg += _hostname;
- msg += "\" : ";
- msg += errmsg ? errmsg : "Reason unknown";
- throw ConnexionFailureException(msg.c_str());
- }
- }
-
- // Destructeur
- BatchManager_PBS::~BatchManager_PBS()
- {
- // On se deconnecte du serveur PBS
- int rc = pbs_disconnect(_connect);
- if (rc < 0) { // si erreur
- string msg = "PBS Server on host \"";
- msg += _hostname;
- msg += "\" : ";
- msg += pbs_geterrmsg(_connect);
- throw ConnexionFailureException(msg.c_str());
- }
- }
-
- // Methode pour le controle des jobs : soumet un job au gestionnaire
- const JobId BatchManager_PBS::submitJob(const Job & job)
- {
- Job_PBS jobpbs = job;
- char * ref = pbs_submit(_connect,
- jobpbs.getAttributesOP(),
- jobpbs.getScript(),
- jobpbs.getDestination(),
- NULL);
- if (!ref) { // si erreur
- char * msg = pbs_geterrmsg(_connect);
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("PBS submit error. Reason : ") + msg);
- }
-
- JobId id(this, string(ref));
- free(ref);
- return id;
- }
-
- // Methode pour le controle des jobs : retire un job du gestionnaire
- void BatchManager_PBS::deleteJob(const JobId & jobid)
- {
- char * ref = const_cast< char * >(jobid.getReference().c_str());
- int rc = pbs_deljob(_connect, ref, 0);
- if (rc) { // si erreur
- char * msg = pbs_geterrmsg(_connect);
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("PBS deljob error. Reason : ") + msg);
- }
- }
-
- // Methode pour le controle des jobs : suspend un job en file d'attente
- void BatchManager_PBS::holdJob(const JobId & jobid)
- {
- char * ref = const_cast< char * >(jobid.getReference().c_str());
- int rc = pbs_holdjob(_connect, ref, USER_HOLD, 0);
- if (rc) { // si erreur
- char * msg = pbs_geterrmsg(_connect);
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("PBS holdjob error. Reason : ") + msg);
- }
- }
-
- // Methode pour le controle des jobs : relache un job suspendu
- void BatchManager_PBS::releaseJob(const JobId & jobid)
- {
- char * ref = const_cast< char * >(jobid.getReference().c_str());
- int rc = pbs_rlsjob(_connect, ref, USER_HOLD, 0);
- if (rc) { // si erreur
- char * msg = pbs_geterrmsg(_connect);
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("PBS rlsjob error. Reason : ") + msg);
- }
- }
-
-
- // Methode pour le controle des jobs : modifie un job en file d'attente
- void BatchManager_PBS::alterJob(const JobId & jobid, const Parametre & param, const Environnement & env)
- {
- Job job(param, env);
- Job_PBS jobpbs(job);
-
- char * ref = const_cast< char * >(jobid.getReference().c_str());
- int rc = pbs_alterjob(_connect,
- ref,
- jobpbs.getAttributes(),
- NULL);
- if (rc) { // si erreur
- char * msg = pbs_geterrmsg(_connect);
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("PBS alterjob error. Reason : ") + msg);
- }
-
- }
-
- // Methode pour le controle des jobs : modifie un job en file d'attente
- void BatchManager_PBS::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_PBS::alterJob(const JobId & jobid, const Environnement & env)
- {
- alterJob(jobid, Parametre(), env);
- }
-
-
-
- // Methode pour le controle des jobs : renvoie l'etat du job
- JobInfo BatchManager_PBS::queryJob(const JobId & jobid)
- {
- char * id = const_cast< char * >(jobid.getReference().c_str());
- JobInfo_PBS ji = JobInfo_PBS(pbs_statjob(_connect, id, 0, 0), true);
- return ji;
- }
-
-
-
-}
+++ /dev/null
-/*
- * BatchManager_PBS.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_PBS_H_
-#define _BATCHMANAGER_PBS_H_
-
-
-#include "Batch_Job.hxx"
-#include "Batch_Job.hxx"
-#include "Batch_JobId.hxx"
-#include "Batch_JobInfo.hxx"
-#include "Batch_JobInfo_PBS.hxx"
-#include "Batch_Job_PBS.hxx"
-#include "Batch_InvalidArgumentException.hxx"
-#include "Batch_ConnexionFailureException.hxx"
-#include "Batch_APIInternalFailureException.hxx"
-#include "Batch_NotYetImplementedException.hxx"
-#include "Batch_BatchManager.hxx"
-
-namespace Batch {
-
- class Job;
- class JobId;
- class JobInfo;
- class FactBatchManager;
-
- class BatchManager_PBS : public BatchManager
- {
- public:
- // Constructeur et destructeur
- //BatchManager_PBS() throw(InvalidArgumentException,ConnexionFailureException); // connexion au serveur par defaut
- //BatchManager_PBS(std::string host) throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host
- BatchManager_PBS(const FactBatchManager * parent, const char * host="localhost") throw(InvalidArgumentException,ConnexionFailureException); // connexion a la machine host
- virtual ~BatchManager_PBS();
-
- // Recupere le nom du serveur par defaut
- // static std::string BatchManager_PBS::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 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; // PBS connect id
-
- private:
-
-#ifdef SWIG
- public:
- // Recupere le l'identifiant d'un job deja soumis au BatchManager
- //virtual const JobId getJobIdByReference(const std::string & ref) { return BatchManager::getJobIdByReference(ref); }
- virtual const JobId getJobIdByReference(const char * ref) { return BatchManager::getJobIdByReference(ref); }
-#endif
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * BoolType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include <assert.h>
-#include "Batch_BoolType.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Conversion en chaine
- string BoolType::affiche() const
- {
- return _data ? string("true") : string("false");
- }
-
- // Operateur d'affectation
- BoolType & BoolType::operator =(bool b)
- {
- _data = b;
- return *this;
- }
-
- // Conversion en bool
- BoolType::operator bool() const
- {
- return this->_data;
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * BoolType::clone() const
- {
- BoolType * pB = new BoolType(this->_data);
- assert(pB != 0);
- return pB;
- }
-
-}
+++ /dev/null
-/*
- * BoolType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _BOOLTYPE_H_
-#define _BOOLTYPE_H_
-
-#include <string>
-#include "Batch_GenericType.hxx"
-
-namespace Batch {
-
- class BoolType : public GenericType
- {
- public:
- // Constructeur
- BoolType(const bool b=false) : _data(b) {}
-
- // Conversion en chaine
- virtual std::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:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * CharType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include <assert.h>
-#include "Batch_CharType.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Conversion en chaine
- string CharType::affiche() const
- {
- return string(1, _data);
- }
-
- // Operateur d'affectation
- CharType & CharType::operator =(char c)
- {
- _data = c;
- return *this;
- }
-
- // Conversion en char
- CharType::operator char() const
- {
- return this->_data;
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * CharType::clone() const
- {
- CharType * pC = new CharType(this->_data);
- assert(pC != 0);
- return pC;
- }
-
-}
+++ /dev/null
-/*
- * CharType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _CHARTYPE_H_
-#define _CHARTYPE_H_
-
-#include <string>
-#include "Batch_GenericType.hxx"
-
-namespace Batch {
-
- class CharType : public GenericType
- {
- public:
- // Constructeur
- CharType(const char c=0) : _data(c) {}
-
- // Conversion en chaine
- virtual std::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:
-
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * ConnexionFailureException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Nov 13 11:24:31 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_ConnexionFailureException.hxx"
-using namespace std;
-
-namespace Batch {
-
-}
+++ /dev/null
-/*
- * ConnexionFailureException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Nov 13 11:24:31 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _CONNEXIONFAILUREEXCEPTION_H_
-#define _CONNEXIONFAILUREEXCEPTION_H_
-
-
-#include "Batch_GenericException.hxx"
-
-namespace Batch {
-
- class ConnexionFailureException : public GenericException
- {
- public:
- // Constructeur
- ConnexionFailureException(std::string ch = "undefined") : GenericException("ConnexionFailureException", ch) {}
-
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * Couple.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Dec 9 15:00:35 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_Couple.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Operateur d'affectation
- Couple & Couple::operator =(const Couple & C)
- {
- _local = C._local;
- _remote = C._remote;
- return *this;
- }
-
- // Conversion en chaine
- string Couple::str() const
- {
- string res;
- res = "Couple(local : ";
- res += _local;
- res += ", remote : ";
- res += _remote;
- res += ")";
- return res;
- }
-
- // Operateur pour l'affichage sur un stream
- ostream & operator << (ostream & os, const Couple & cp)
- {
- return os << cp.str();
- }
-
-}
+++ /dev/null
-/*
- * Couple.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Dec 9 15:00:35 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _COUPLE_H_
-#define _COUPLE_H_
-
-#include <string>
-
-namespace Batch {
-
- class Couple
- {
- public:
- // Constructeur standard
- Couple(const std::string & local="", const std::string & remote="") : _local(local), _remote(remote) {}
-
- // Constructeur par recopie
- Couple(const Couple & C) : _local(C._local), _remote(C._remote) {}
-
- // Operateur pour l'affichage sur un stream
- friend std::ostream & operator << (std::ostream & os, const Couple & cp);
-
- // Operateur d'affectation
- virtual Couple & operator =(const Couple &);
-
- // Conversion en chaine
- virtual std::string str() const;
-
- // Accesseurs
- virtual std::string getLocal() const { return _local; }
- virtual std::string getRemote() const { return _remote; }
-
- protected:
- std::string _local; // chemin d'acces au fichier local
- std::string _remote; // chemin d'acees au fichier distant
-
- private:
-
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * CoupleType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Dec 9 14:51:53 2003
- * Projet : Salome 2
- *
- */
-
-#include <assert.h>
-#include "Batch_CoupleType.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Conversion en chaine
- string CoupleType::affiche() const
- {
- return _data.str();
- }
-
- // Operateur d'affectation
- CoupleType & CoupleType::operator =(const Couple & C)
- {
- _data = C;
- return *this;
- }
-
- // Conversion en char
- CoupleType::operator Couple() const
- {
- return _data;
- }
-
- // Conversion en chaine
- CoupleType::operator string() const
- {
- return _data.str();
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * CoupleType::clone() const
- {
- CoupleType * pC = new CoupleType(this->_data);
- assert(pC != 0);
- return pC;
- }
-
-}
-
+++ /dev/null
-/*
- * CoupleType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Dec 9 14:51:53 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _COUPLETYPE_H_
-#define _COUPLETYPE_H_
-
-#include <string>
-#include "Batch_GenericType.hxx"
-#include "Batch_Couple.hxx"
-
-namespace Batch {
-
- class CoupleType : public GenericType
- {
- public:
- // Constructeur
- CoupleType(const Couple & C) : _data(C) {}
-
- // Conversion en chaine
- virtual std::string affiche() const;
- virtual operator std::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:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * Date.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Nov 26 14:11:42 2003
- * Projet : Salome 2
- *
- */
-
-#include <cstdio>
-#include <ctime>
-#include "Batch_Date.hxx"
-using namespace std;
-
-namespace Batch {
-
- Date::Date(const long l)
- {
- time_t l_t = l;
- struct tm * p_tm = localtime(&l_t);
- _day = p_tm->tm_mday;
- _month = p_tm->tm_mon + 1;
- _year = p_tm->tm_year + 1900;
- _hour = p_tm->tm_hour;
- _min = p_tm->tm_min;
- _sec = p_tm->tm_sec;
- }
-
- Date::Date(const string s)
- {
- if ((s == "now") || (s == "Now") || (s == "NOW")) {
- long l = time(0);
- time_t l_t = l;
- struct tm * p_tm = localtime(&l_t);
- _day = p_tm->tm_mday;
- _month = p_tm->tm_mon + 1;
- _year = p_tm->tm_year + 1900;
- _hour = p_tm->tm_hour;
- _min = p_tm->tm_min;
- _sec = p_tm->tm_sec;
-
- } else {
- char c;
-// istringstream ist(s);
-// ist >> _day >> c
-// >> _month >> c
-// >> _year >> c
-// >> _hour >> c
-// >> _min >> c
-// >> _sec;
- sscanf(s.c_str(), "%ld/%ld/%ld-%ld:%ld:%ld", &_day, &_month, &_year, &_hour, &_min, &_sec);
- }
- }
-
- Date & Date::operator =(long l)
- {
- time_t l_t = l;
- struct tm * p_tm = localtime(&l_t);
- _day = p_tm->tm_mday;
- _month = p_tm->tm_mon + 1;
- _year = p_tm->tm_year + 1900;
- _hour = p_tm->tm_hour;
- _min = p_tm->tm_min;
- _sec = p_tm->tm_sec;
-
- return *this;
- }
-
- Date & Date::operator +(long l)
- {
- *this = epoch() + l;
- return *this;
- }
-
- Date & Date::operator -(long l)
- {
- *this = epoch() - l;
- return *this;
- }
-
- Date & Date::operator +=(long l)
- {
- *this = epoch() + l;
- return *this;
- }
-
- Date & Date::operator -=(long l)
- {
- *this = epoch() - l;
- return *this;
- }
-
- Date & Date::operator =(const string & s)
- {
- if ((s == "now") || (s == "Now") || (s == "NOW")) {
- long l = time(0);
- time_t l_t = l;
- struct tm * p_tm = localtime(&l_t);
- _day = p_tm->tm_mday;
- _month = p_tm->tm_mon + 1;
- _year = p_tm->tm_year + 1900;
- _hour = p_tm->tm_hour;
- _min = p_tm->tm_min;
- _sec = p_tm->tm_sec;
-
- } else {
- char c;
-// istringstream ist(s);
-// ist >> _day >> c
-// >> _month >> c
-// >> _year >> c
-// >> _hour >> c
-// >> _min >> c
-// >> _sec;
- sscanf(s.c_str(), "%ld/%ld/%ld-%ld:%ld:%ld", &_day, &_month, &_year, &_hour, &_min, &_sec);
- }
-
- return *this;
- }
-
- string Date::str() const
- {
- char buf[64];
- string datestr;
-
- // _day to char *
- sprintf(buf, "%02ld", _day);
- datestr += buf;
- datestr += "/";
-
- // _month to char *
- sprintf(buf, "%02ld", _month);
- datestr += buf;
- datestr += "/";
-
- // _year to char *
- sprintf(buf, "%04ld", _year);
- datestr += buf;
- datestr += "-";
-
- // _hour to char *
- sprintf(buf, "%02ld", _hour);
- datestr += buf;
- datestr += ":";
-
- // _min to char *
- sprintf(buf, "%02ld", _min);
- datestr += buf;
- datestr += ":";
-
- // _sec to char *
- sprintf(buf, "%02ld", _sec);
- datestr += buf;
-
- return datestr;
- }
-
- long Date::epoch() const
- {
- struct tm T;
- T.tm_mday = _day;
- T.tm_mon = _month - 1;
- T.tm_year = _year - 1900;
- T.tm_hour = _hour;
- T.tm_min = _min;
- T.tm_sec = _sec;
- return mktime(&T);
- }
-
-}
-
-
-// COMMENTS
+++ /dev/null
-/*
- * Date.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Nov 26 14:11:42 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _DATE_H_
-#define _DATE_H_
-
-#include <string>
-
-namespace Batch {
-
- class Date
- {
- public:
- Date(const long l=0);
- Date(const std::string s);
- 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 std::string & s);
- virtual std::string str() const;
- virtual long epoch() const;
-
- protected:
- int _day, _month, _year;
- int _hour, _min, _sec;
-
- private:
-
- };
-
-}
-
-#endif
-
-// COMMENTS
+++ /dev/null
-/*
- * DateType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Nov 26 11:15:34 2003
- * Projet : Salome 2
- *
- */
-extern "C" {
-#include <time.h>
-}
-#include <assert.h>
-#include "Batch_DateType.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Conversion en chaine
- string DateType::affiche() const
- {
- return _data.str();
- }
-
- // Operateur d'affectation
- DateType & DateType::operator =(const Date & d)
- {
- _data = d;
- return *this;
- }
-
- // Conversion en Date
- DateType::operator Date() const
- {
- return _data;
- }
-
- // Conversion en long
- DateType::operator long() const
- {
- return _data.epoch();
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * DateType::clone() const
- {
- DateType * pD = new DateType(this->_data);
- assert(pD != 0);
- return pD;
- }
-
-}
+++ /dev/null
-/*
- * DateType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Nov 26 11:15:34 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _DATETYPE_H_
-#define _DATETYPE_H_
-
-#include <string>
-#include "Batch_GenericType.hxx"
-#include "Batch_Date.hxx"
-
-namespace Batch {
-
- class DateType : public GenericType
- {
- public:
- // Constructeur
- DateType(const Date & d) : _data(d) {};
-
- // Conversion en chaine
- virtual std::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:
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * Environnement.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Oct 16 11:37:47 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_Environnement.hxx"
-using namespace std;
-
-namespace Batch {
-
-
-}
+++ /dev/null
-/*
- * Environnement.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Oct 16 11:37:47 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _ENVIRONNEMENT_H_
-#define _ENVIRONNEMENT_H_
-
-
-#include <string>
-#include <map>
-
-namespace Batch {
-
- typedef std::map < std::string, std::string > Environnement;
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * FactBatchManager.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include <sstream>
-#include "Batch_BatchManagerCatalog.hxx"
-#include "Batch_FactBatchManager.hxx"
-#include "utilities.h"
-using namespace std;
-
-namespace Batch {
-
- // Constructeur
- FactBatchManager::FactBatchManager(const string & _t) : type(_t)
- {
- BatchManagerCatalog::addFactBatchManager(type.c_str(), this);
- ostringstream msg;
- msg << "FactBatchManager of type '" << type << "' inserted into catalog";
- MESSAGE(msg.str().c_str());
- }
-
- // Destructeur
- FactBatchManager::~FactBatchManager()
- {
- // Nothing to do
- }
-
- // Accesseur
- string FactBatchManager::getType() const
- {
- return type;
- }
-
- string FactBatchManager::__repr__() const
- {
- ostringstream oss;
- oss << "<FactBatchManager of type '" << type << "'>";
- return oss.str();
- }
-
-}
+++ /dev/null
-/*
- * FactBatchManager.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#ifndef _FACTBATCHMANAGER_H_
-#define _FACTBATCHMANAGER_H_
-
-#include <string>
-#include <map>
-
-namespace Batch {
-
- class BatchManager;
-
- class FactBatchManager
- {
- public:
- // Constructeur et destructeur
- FactBatchManager(const std::string & type);
- virtual ~FactBatchManager();
-
- virtual Batch::BatchManager * operator() (const char * hostname) const = 0;
- std::string getType() const;
- std::string __repr__() const;
-
- protected:
- std::string type;
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * FactBatchManager_LSF.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include "Batch_BatchManager_LSF.hxx"
-#include "Batch_FactBatchManager_LSF.hxx"
-//#include "utilities.h"
-
-namespace Batch {
-
- static FactBatchManager_LSF sFBM_LSF;
-
- // Constructeur
- FactBatchManager_LSF::FactBatchManager_LSF() : FactBatchManager("LSF")
- {
- // Nothing to do
- }
-
- // Destructeur
- FactBatchManager_LSF::~FactBatchManager_LSF()
- {
- // Nothing to do
- }
-
- // Functor
- BatchManager * FactBatchManager_LSF::operator() (const char * hostname) const
- {
- // MESSAGE("Building new BatchManager_LSF on host '" << hostname << "'");
- return new BatchManager_LSF(this, hostname);
- }
-
-
-}
+++ /dev/null
-/*
- * FactBatchManager_LSF.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#ifndef _FACTBATCHMANAGER_LSF_H_
-#define _FACTBATCHMANAGER_LSF_H_
-
-using namespace std;
-#include <string>
-#include <map>
-#include "Batch_FactBatchManager.hxx"
-
-namespace Batch {
-
- class BatchManager_LSF;
-
- class FactBatchManager_LSF : public FactBatchManager
- {
- public:
- // Constructeur et destructeur
- FactBatchManager_LSF();
- virtual ~FactBatchManager_LSF();
-
- virtual BatchManager * operator() (const char * hostname) const;
-
- protected:
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * FactBatchManager_PBS.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include "Batch_BatchManager_PBS.hxx"
-#include "Batch_FactBatchManager_PBS.hxx"
-#include "utilities.h"
-using namespace std;
-
-namespace Batch {
-
- static FactBatchManager_PBS sFBM_PBS;
-
- // Constructeur
- FactBatchManager_PBS::FactBatchManager_PBS() : FactBatchManager("PBS")
- {
- // Nothing to do
- }
-
- // Destructeur
- FactBatchManager_PBS::~FactBatchManager_PBS()
- {
- // Nothing to do
- }
-
- // Functor
- BatchManager * FactBatchManager_PBS::operator() (const char * hostname) const
- {
- MESSAGE("Building new BatchManager_PBS on host '" << hostname << "'");
- return new BatchManager_PBS(this, hostname);
- }
-
-
-}
+++ /dev/null
-/*
- * FactBatchManager_PBS.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2004
- * Projet : SALOME 2
- *
- */
-
-#ifndef _FACTBATCHMANAGER_PBS_H_
-#define _FACTBATCHMANAGER_PBS_H_
-
-#include "Batch_FactBatchManager.hxx"
-
-namespace Batch {
-
- class BatchManager_PBS;
-
- class FactBatchManager_PBS : public FactBatchManager
- {
- public:
- // Constructeur et destructeur
- FactBatchManager_PBS();
- virtual ~FactBatchManager_PBS();
-
- virtual BatchManager * operator() (const char * hostname) const;
-
- protected:
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * GenericException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Nov 26 10:15:57 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_GenericException.hxx"
-using namespace std;
-
-namespace Batch {
-
-}
+++ /dev/null
-/*
- * GenericException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Nov 26 10:15:56 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _GENERICEXCEPTION_H_
-#define _GENERICEXCEPTION_H_
-
-
-#include <string>
-
-namespace Batch {
-
- class GenericException
- {
- public:
- const std::string type; // la nature de l'exception
- const std::string message; // la raison de l'exception
-
- // Constructeur
- GenericException(const std::string tp = "GenericException", const std::string ch = "undefined") : type(tp), message(ch) {}
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * GenericType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-
-#include <iostream>
-#include <string>
-#include <assert.h>
-#include "Batch_GenericType.hxx"
-using namespace std;
-
-namespace Batch {
-
- // nombre total d'objet GenericType et al.
- int GenericType::_nb = 0;
-
- // Operateur pour l'affichage sur un stream
- ostream & operator << (ostream & os, const GenericType & obj)
- {
- return os << obj.affiche();
- }
-
- // Conversion en chaine
- string GenericType::affiche() const
- {
- return string("(GenericType : si ce message apparait, vous devez avoir un probleme)");
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * GenericType::clone() const
- {
- GenericType * pG = new GenericType;
- assert(pG != 0);
- return pG;
- }
-
-}
-
+++ /dev/null
-/*
- * GenericType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _GENERICTYPE_H_
-#define _GENERICTYPE_H_
-
-
-#include <iostream>
-#include <string>
-
-namespace Batch {
-
- class GenericType
- {
- public:
- // Constructeur et destructeur
- GenericType() { _nb++; }
- virtual ~GenericType() { _nb--; }
-
- // Operateur pour l'affichage sur un stream
- friend std::ostream & operator << (std::ostream & os, const GenericType & obj);
-
- // Conversion en chaine
- virtual std::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() { return _nb; }
-
- protected:
-
- private:
- static int _nb; // nombre total d'objets GenericType et al.
-
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * IntType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include <sstream>
-#include <assert.h>
-//#include "MEDMEM_STRING.hxx"
-#include "Batch_IntType.hxx"
-using namespace std;
-
-
-namespace Batch {
-
- // Conversion en chaine
- string IntType::affiche() const
- {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << _data;
- return sst.str();
- }
-
- // Operateur d'affectation
- IntType & IntType::operator =(int i)
- {
- _data = i;
- return *this;
- }
-
- // Conversion en int
- IntType::operator int() const
- {
- return this->_data;
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * IntType::clone() const
- {
- IntType * pI = new IntType(this->_data);
- assert(pI != 0);
- return pI;
- }
-
-}
+++ /dev/null
-/*
- * IntType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _INTTYPE_H_
-#define _INTTYPE_H_
-
-#include <string>
-#include "Batch_GenericType.hxx"
-
-namespace Batch {
-
- class IntType : public GenericType
- {
- public:
- // Constructeur
- IntType(const int i=0) : _data(i) {}
-
- // Conversion en chaine
- virtual std::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:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * InvalidArgumentException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Oct 16 16:18:00 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_InvalidArgumentException.hxx"
-using namespace std;
-
-namespace Batch {
-
-}
+++ /dev/null
-/*
- * InvalidArgumentException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Oct 16 16:18:00 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _INVALIDARGUMENTEXCEPTION_H_
-#define _INVALIDARGUMENTEXCEPTION_H_
-
-
-#include "Batch_GenericException.hxx"
-#include "Batch_GenericException.hxx"
-
-namespace Batch {
-
- class InvalidArgumentException : public GenericException
- {
- public:
- // Constructeur
- InvalidArgumentException(std::string ch = "undefined") : GenericException("InvalidArgumentException", ch) {}
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * InvalidKeyException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Oct 15 10:39:51 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_InvalidKeyException.hxx"
-using namespace std;
-
-namespace Batch {
-
-}
-
+++ /dev/null
-/*
- * InvalidKeyException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Wed Oct 15 10:39:51 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _INVALIDKEYEXCEPTION_H_
-#define _INVALIDKEYEXCEPTION_H_
-
-
-#include "Batch_GenericException.hxx"
-#include "Batch_GenericException.hxx"
-
-namespace Batch {
-
- class InvalidKeyException : public GenericException
- {
- public:
- // Constructeur
- InvalidKeyException(std::string ch = "undefined") : GenericException("InvalidKeyException", ch) {}
-
- protected:
-
- private:
-
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * Job.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include "Batch_Job.hxx"
-#include "Batch_Parametre.hxx"
-#include <sstream>
-//#include "MEDMEM_STRING.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Constructeur
- Job::Job() : _param(), _env()
- {
- // Nothing to do
- }
-
-
- // Constructeur
- Job::Job(Parametre param) : _param(param), _env()
- {
- // Nothing to do
- }
-
-
- // Constructeur
- Job::Job(Environnement env) : _param(), _env(env)
- {
- // Nothing to do
- }
-
-
- // Constructeur
- Job::Job(Parametre param, Environnement env) : _param(param), _env(env)
- {
- // Nothing to do
- }
-
- // Operateur pour l'affichage sur un stream
- ostream & operator <<(ostream & os, const Job & job)
- {
- return os << job.__str__();
- }
-
- // Accesseur
- Parametre Job::getParametre() const
- {
- return _param;
- }
-
- // Accesseur
- void Job::setParametre(const Parametre & param)
- {
- _param = param;
- }
-
- // Accesseur
- Environnement Job::getEnvironnement() const
- {
- return _env;
- }
-
- // Accesseur
- void Job::setEnvironnement(const Environnement & env)
- {
- _env = env;
- }
-
-
- // Methode pour l'interfacage avec Python (SWIG) : affichage en Python
- string Job::__str__() const {
- //MEDMEM::STRING str;
- ostringstream str;
- str << "<Job (" << this << ") :" << endl;
- str << " Parametre :" << endl;
- Parametre::const_iterator itp;
- for(itp=_param.begin(); itp!=_param.end(); itp++) {
- str << " * " << (*itp).first << " : " << (*itp).second << endl;
- }
- str << " Environnement :" << endl;
- Environnement::const_iterator ite;
- for(ite=_env.begin(); ite!=_env.end(); ite++) {
- str << " * " << (*ite).first << " : " << (*ite).second << endl;
- }
- str << " >";
- return str.str();
- }
-
-
-}
+++ /dev/null
-/*
- * Job.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _JOB_H_
-#define _JOB_H_
-
-
-#include "Batch_Parametre.hxx"
-#include "Batch_Environnement.hxx"
-
-namespace Batch {
-
- class Job
- {
- public:
- // Constructeurs et destructeur
- Job();
- Job(Batch::Parametre param);
- Job(Batch::Environnement env);
- Job(Batch::Parametre param, Batch::Environnement env);
- virtual ~Job() {}
-
- // Operateur pour l'affichage sur un stream
- friend std::ostream & operator <<(std::ostream & os, const Job & job);
-
- // Accesseurs
- Batch::Parametre getParametre() const;
- void setParametre(const Batch::Parametre &);
-
- // Accesseurs
- Batch::Environnement getEnvironnement() const;
- void setEnvironnement(const Batch::Environnement &);
-
- // Methodes pour l'interfacage avec Python (SWIG)
- // TODO : supprimer ces methodes et transferer leur definitions dans SWIG
- std::string __str__() const; // SWIG : affichage en Python
- std::string __repr__() const { return __str__(); }; // SWIG : affichage en Python
-
- protected:
- Batch::Parametre _param; // table des parametres batch du job
- Batch::Environnement _env; // table des variables d'environnement
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * JobId.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include "Batch_JobId.hxx"
-#include "Batch_BatchManager.hxx"
-#include <sstream>
-#include <assert.h>
-//#include "MEDMEM_STRING.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Constructeur standard
- JobId::JobId() : _p_batchmanager(), _reference("undefined")
- {
- // Nothing to do
- }
-
- // Constructeur avec le pointeur sur le BatchManager associe et avec une reference
- JobId::JobId(BatchManager * _p_bm, string ref) : _p_batchmanager(_p_bm), _reference(ref)
- {
- // Nothing to do
- }
-
- // Destructeur
- JobId::~JobId()
- {
- // Nothing to do
- }
-
- // Operateur d'affectation entre objets
- JobId & JobId::operator =(const JobId & jobid)
- {
- _p_batchmanager = jobid._p_batchmanager;
- _reference = jobid._reference;
-
- return *this;
- }
-
- // Constructeur par recopie
- JobId::JobId(const JobId & jobid) : _p_batchmanager(jobid._p_batchmanager), _reference(jobid._reference)
- {
- // Nothing to do
- }
-
- // Accesseur pour la reference interne
- string JobId::getReference() const
- {
- return _reference;
- }
-
- // Methode pour le controle du job : retire le job du gestionnaire
- void JobId::deleteJob() const
- {
- assert(_p_batchmanager != 0);
- _p_batchmanager->deleteJob(*this);
- }
-
- // Methode pour le controle du job : suspend le job en file d'attente
- void JobId::holdJob() const
- {
- assert(_p_batchmanager != 0);
- _p_batchmanager->holdJob(*this);
- }
-
- // Methode pour le controle du job : relache le job suspendu
- void JobId::releaseJob() const
- {
- assert(_p_batchmanager != 0);
- _p_batchmanager->releaseJob(*this);
- }
-
- // Methode pour le controle du job : modifie le job en file d'attente
- void JobId::alterJob(const Parametre & param, const Environnement & env) const
- {
- assert(_p_batchmanager != 0);
- _p_batchmanager->alterJob(*this, param, env);
- }
-
- // Methode pour le controle du job : modifie le job en file d'attente
- void JobId::alterJob(const Parametre & param) const
- {
- assert(_p_batchmanager != 0);
- _p_batchmanager->alterJob(*this, param);
- }
-
- // Methode pour le controle du job : modifie le job en file d'attente
- void JobId::alterJob(const Environnement & env) const
- {
- assert(_p_batchmanager != 0);
- _p_batchmanager->alterJob(*this, env);
- }
-
- // Methode pour le controle du job : renvoie l'etat du job
- JobInfo JobId::queryJob() const
- {
- assert(_p_batchmanager != 0);
- return _p_batchmanager->queryJob(*this);
- }
-
-
- // Methode pour l'interfacage avec Python (SWIG) : affichage en Python
- string JobId::__str__() const {
- //MEDMEM::STRING str;
- ostringstream str;
- str << "<JobId (" << this << ") : referenced '" << _reference << "'>";
- return str.str();
- }
-
-}
+++ /dev/null
-/*
- * JobId.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _JOBID_H_
-#define _JOBID_H_
-
-
-#include "Batch_JobInfo.hxx"
-#include "Batch_BatchManager.hxx"
-
-namespace Batch {
-
- class BatchManager;
-
- 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(Batch::BatchManager *, std::string ref);
-
- // Operateur d'affectation entre objets
- virtual JobId & operator =(const Batch::JobId &);
-
- // Constructeur par recopie
- JobId(const Batch::JobId &);
-
- // Accesseur pour la reference interne
- virtual std::string getReference() const;
-
- // Methodes pour le controle du job
- virtual void deleteJob() const; // retire un job du gestionnaire
- virtual void holdJob() const; // suspend un job en file d'attente
- virtual void releaseJob() const; // relache un job suspendu
- virtual void alterJob(const Batch::Parametre & param, const Batch::Environnement & env) const; // modifie un job en file d'attente
- virtual void alterJob(const Batch::Parametre & param) const; // modifie un job en file d'attente
- virtual void alterJob(const Batch::Environnement & env) const; // modifie un job en file d'attente
- virtual void setParametre(const Batch::Parametre & param) { return alterJob(param); } // modifie un job en file d'attente
- virtual void setEnvironnement(const Batch::Environnement & env) { return alterJob(env); } // modifie un job en file d'attente
- virtual Batch::JobInfo queryJob() const; // renvoie l'etat du job
-
- // Methodes pour l'interfacage avec Python (SWIG)
- // TODO : supprimer ces methodes et transferer leur definitions dans SWIG
- std::string __str__() const; // SWIG : affichage en Python
- std::string __repr__() const { return __str__(); }; // SWIG : affichage en Python
-
- protected:
- Batch::BatchManager * _p_batchmanager; // pointeur sur le BatchManager qui controle le job
- std::string _reference; // reference du job au sein du BatchManager
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * JobInfo.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Nov 6 10:05:30 2003
- * Projet : Salome 2
- *
- */
-
-#include <iostream>
-#include <string>
-#include <sstream>
-//#include "MEDMEM_STRING.hxx"
-#include "Batch_JobInfo.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Destructeur
- JobInfo::~JobInfo()
- {
- // Nothing to do
- }
-
-
- // Operateur pour l'affichage sur un stream
- ostream & operator <<(ostream & os, const JobInfo & ji)
- {
- return os << ji.__str__();
- }
-
-
- // Methodes pour l'interfacage avec Python (SWIG) : affichage en Python
- string JobInfo::__str__() const
- {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << "<JobInfo (" << this << ") :" << endl;
- sst << " ID = " <<_param[ID] << endl;
-
- sst << " + Parametre :" << endl;
- Parametre::const_iterator itp;
- for(itp=_param.begin(); itp!=_param.end(); itp++) {
- if ( (*itp).first != ID ) {
- sst << " * " << (*itp).first << " = " << (*itp).second << endl;
- }
- }
-
- sst << " + Environnement :" << endl;
- Environnement::const_iterator ite;
- for(ite=_env.begin(); ite!=_env.end(); ite++) {
- sst << " * " << (*ite).first << " = " << (*ite).second << endl;
- }
-
- sst << " >";
-
- return sst.str();
- }
-
- // Accesseur
- Parametre JobInfo::getParametre() const
- {
- return _param;
- }
-
- // Accesseur
- Environnement JobInfo::getEnvironnement() const
- {
- return _env;
- }
-
-
-}
+++ /dev/null
-/*
- * JobInfo.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Thu Nov 6 10:05:30 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _JOBINFO_H_
-#define _JOBINFO_H_
-
-#include <iostream>
-#include <string>
-#include "Batch_Parametre.hxx"
-#include "Batch_Environnement.hxx"
-
-namespace Batch {
-
- class JobInfo
- {
- public:
- // Constructeur standard et destructeur
- JobInfo() : _param(), _env() {};
- virtual ~JobInfo();
-
- // Constructeur par recopie
- JobInfo(const Batch::JobInfo & jinfo) : _param(jinfo._param), _env(jinfo._env) {};
-
- // Operateur pour l'affichage sur un stream
- friend std::ostream & operator <<(std::ostream & os, const Batch::JobInfo & ji);
-
- // Accesseurs
- virtual Batch::Parametre getParametre() const;
- virtual Batch::Environnement getEnvironnement() const;
-
- // Methodes pour l'interfacage avec Python (SWIG)
- // TODO : supprimer ces methodes et transferer leur definitions dans SWIG
- std::string __str__() const; // SWIG : affichage en Python
- std::string __repr__() const { return __str__(); }; // SWIG : affichage en Python
-
- protected:
- Batch::Parametre _param; // parametres du job
- Batch::Environnement _env; // variables d'environnement du job
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * JobInfo_LSF.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 <sstream>
-#include "Batch_Parametre.hxx"
-#include "Batch_Environnement.hxx"
-#include "Batch_RunTimeException.hxx"
-#include "Batch_APIInternalFailureException.hxx"
-#include "Batch_JobInfo_LSF.hxx"
-
-namespace Batch {
-
-
-
- // Constructeurs
- JobInfo_LSF::JobInfo_LSF(int id) : JobInfo()
- {
- struct loadIndexLog * p_ld = new struct loadIndexLog;
- struct jobInfoHead * p_jInfoHead = lsb_openjobinfo_a(id, NULL, NULL, NULL, NULL, ALL_JOB);
-
- int more = p_jInfoHead->numJobs;
- if (more != 1) {
- char * msg = lsb_sysmsg();
- if (!msg) msg = "unknown";
- throw APIInternalFailureException(string("LSF lsb_openjobinfo error. Reason : ") + msg);
- }
-
- // on remplit une structure contenant <more> elements
- struct jobInfoEnt & jobInfo = * lsb_readjobinfo(&more);
-
-
- // On remplit les membres _param et _env
- _param[ACCOUNT] = jobInfo.submit.projectName;
- _param[CHECKPOINT] = jobInfo.submit.chkpntPeriod != 0;
- _param[CKPTINTERVAL] = jobInfo.submit.chkpntPeriod;
- _param[CREATIONTIME] = jobInfo.submitTime;
- // _param[EGROUP] = jobInfo.;
- _param[ELIGIBLETIME] = jobInfo.reserveTime;
- _param[ENDTIME] = jobInfo.endTime;
- _param[EUSER] = jobInfo.execUsername;
- _param[EXECUTABLE] = jobInfo.submit.command;
- _param[EXITCODE] = jobInfo.exitStatus;
- _param[HOLD] = jobInfo.status & (JOB_STAT_PSUSP | JOB_STAT_SSUSP | JOB_STAT_USUSP);
- _param[MAIL] = jobInfo.submit.mailUser;
- _param[MAXCPUTIME] = jobInfo.submit.rLimits[LSF_RLIMIT_CPU];
- _param[MAXDISKSIZE] = jobInfo.submit.rLimits[LSF_RLIMIT_FSIZE];
- _param[MAXRAMSIZE] = jobInfo.submit.rLimits[LSF_RLIMIT_SWAP];
- _param[MAXWALLTIME] = jobInfo.submit.rLimits[LSF_RLIMIT_RUN];
- _param[MODIFICATIONTIME] = jobInfo.lastEvent;
- _param[NAME] = jobInfo.jName;
- _param[NBPROC] = jobInfo.submit.numProcessors;
- _param[PID] = jobInfo.jobPid;
- _param[QUEUE] = jobInfo.submit.queue;
- _param[QUEUEDTIME] = jobInfo.submitTime;
- // _param[SERVER] = jobInfo.;
- _param[STARTTIME] = jobInfo.startTime;
- _param[TEXT] = jobInfo.numReasons ? lsb_pendreason(jobInfo.numReasons,
- jobInfo.reasonTb,
- p_jInfoHead,
- p_ld) : "";
- // _param[TMPDIR] = jobInfo.;
- _param[USEDCPUTIME] = static_cast<long>(jobInfo.cpuTime);
- // _param[USEDDISKSIZE] = jobInfo.;
- _param[USEDRAMSIZE] = jobInfo.runRusage.mem;
- _param[USEDWALLTIME] = jobInfo.duration * 60L;
- _param[USER] = jobInfo.user;
-
-
- ostringstream oss;
- int jobid = jobInfo.jobId;
- oss << jobid;
- _param[ID] = oss.str();
-
-
- string hosts, sep;
- for(int i=0; i < jobInfo.numExHosts; i++, sep="+") {
- hosts += jobInfo.exHosts[i];
- hosts += sep;
- }
- _param[EXECUTIONHOST] = hosts;
-
- ostringstream status;
-
- if (IS_PEND(jobInfo.status))
- status << " Job is pending;";
- if (IS_START(jobInfo.status))
- status << " Job is started;";
- if (IS_FINISH(jobInfo.status))
- status << " Job is finished;";
- if (IS_SUSP(jobInfo.status))
- status << " Job is suspended;";
- if (IS_POST_DONE(jobInfo.status))
- status << " Job is post-done;";
- if (IS_POST_ERR(jobInfo.status))
- status << " Job is post-error;";
-
- _param[STATE] = status.str();
- _running = IS_FINISH(jobInfo.status) ? false : true;
-
-
- if (strlen(jobInfo.submit.inFile))
- _param[INFILE] += Couple(jobInfo.submit.inFile, "stdin");
- if (strlen(jobInfo.submit.outFile))
- _param[OUTFILE] += Couple(jobInfo.submit.outFile, "stdout");
- if (strlen(jobInfo.submit.errFile))
- _param[OUTFILE] += Couple(jobInfo.submit.errFile, "stderr");
-
- for(int i=0; i < jobInfo.submit.nxf; i++) {
- switch (jobInfo.submit.xf[i].options) {
- case XF_OP_SUB2EXEC:
- _param[INFILE] += Couple(jobInfo.submit.xf[i].subFn, jobInfo.submit.xf[i].execFn);
- break;
-
- case XF_OP_EXEC2SUB:
- _param[OUTFILE] += Couple(jobInfo.submit.xf[i].subFn, jobInfo.submit.xf[i].execFn);
- break;
-
- default:
- break;
- }
- }
-
-
- lsb_closejobinfo();
- delete p_ld;
- }
-
-
-
- // Teste si un job est present en machine
- bool JobInfo_LSF::isRunning() const
- {
- return _running;
- }
-
-
- // Destructeur
- JobInfo_LSF::~JobInfo_LSF()
- {
- // Nothing to do
- }
-
-
-
- // Convertit une date HH:MM:SS en secondes
- long JobInfo_LSF::HMStoLong(const string & s)
- {
- long hour, min, sec;
-
- sscanf( s.c_str(), "%ld:%ld:%ld", &hour, &min, &sec);
- return ( ( ( hour * 60L ) + min ) * 60L ) + sec;
- }
-
- // Methode pour l'interfacage avec Python (SWIG) : affichage en Python
- string JobInfo_LSF::__str__() const
- {
- ostringstream sst;
- sst << "<JobInfo_LSF (" << this << ") :" << endl;
- sst << " ID = " <<_param[ID] << endl;
-
- sst << " + Parametre :" << endl;
- Parametre::const_iterator itp;
- for(itp=_param.begin(); itp!=_param.end(); itp++) {
- if ( (*itp).first != ID ) {
- sst << " * " << (*itp).first << " = " << (*itp).second << endl;
- }
- }
- return sst.str();
- }
-
-
-}
+++ /dev/null
-/*
- * JobInfo_LSF.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_LSF_H_
-#define _JOBINFO_LSF_H_
-
-extern "C" {
-
-#include <lsf/lsf.h>
-#include <lsf/lsbatch.h>
-}
-#include <string>
-#include "Batch_RunTimeException.hxx"
-#include "Batch_JobInfo.hxx"
-
-namespace Batch {
-
- class JobInfo_LSF : public JobInfo
- {
- public:
- // Constructeurs et destructeur
- JobInfo_LSF() : _running(false) {};
- JobInfo_LSF(int id);
- virtual ~JobInfo_LSF();
-
- // Constructeur par recopie
- JobInfo_LSF(const JobInfo_LSF & jinfo) : JobInfo(jinfo) {};
-
- // Teste si un job est present en machine
- virtual bool isRunning() const;
-
- // Methodes pour l'interfacage avec Python (SWIG)
- // TODO : supprimer ces methodes et transferer leur definitions dans SWIG
- string __str__() const; // SWIG : affichage en Python
- string __repr__() const { return __str__(); }; // SWIG : affichage en Python
-
- protected:
- bool _running; // etat du job en machine
-
- private:
- // Convertit une date HH:MM:SS en secondes
- long HMStoLong(const string &);
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * JobInfo_PBS.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 <sstream>
-//#include "MEDMEM_STRING.hxx"
-#include "Batch_Parametre.hxx"
-#include "Batch_Environnement.hxx"
-#include "Batch_RunTimeException.hxx"
-#include "Batch_JobInfo_PBS.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Constructeurs
- JobInfo_PBS::JobInfo_PBS(struct batch_status * list, bool tobedeleted) : JobInfo()
- {
- // On ne considere que le premier element de la liste
- // Si tout est OK, la liste ne devrait contenir qu'un element
- // Sinon on leve une exception.
- struct batch_status * p_job = list;
- int i;
- for(i=0; p_job; p_job = p_job->next) i++;
- if (i == 0) throw RunTimeException("Liste vide (le job est absent de la file)");
- if (i > 1) {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << "JobInfo_PBS::JobInfo_PBS(struct batch_status * list, bool tobedeleted) : la liste contient "
- << i << " elements" << " (1 seul requis)" << endl;
- throw RunTimeException(sst.str());
- }
- p_job = list;
-
- // On remplit les membres _param et _env
-
- if (p_job->name && strlen(p_job->name)) _param[ID] = p_job->name;
- if (p_job->text && strlen(p_job->text)) _param[TEXT] = p_job->text;
-
- for(struct attrl * p_attr = p_job->attribs; p_attr; p_attr = p_attr->next) {
-
- string name, res, value;
- if (p_attr->name && strlen(p_attr->name)) name = p_attr->name;
- if (p_attr->resource && strlen(p_attr->resource)) res = p_attr->resource;
- if (p_attr->value && strlen(p_attr->value)) value = p_attr->value;
-
- if (name == ATTR_N) {
- _param[NAME] = value;
-
- } else if (name == ATTR_owner) {
- _param[USER] = value;
-
- } else if (name == ATTR_state) {
- _param[STATE] = value;
-
- } else if (name == ATTR_queue) {
- _param[QUEUE] = value;
-
- } else if (name == ATTR_A) {
- _param[ACCOUNT] = value;
-
- } else if (name == ATTR_M) {
- _param[MAIL] = value;
-
- } else if (name == ATTR_c) {
- if (!strcmp(value.c_str(), CHECKPOINT_UNSPECIFIED)) _param[CHECKPOINT] = 1L;
- else _param[CHECKPOINT] = 0L;
-
- } else if (name == ATTR_h) {
- if (!strcmp(value.c_str(), NO_HOLD)) _param[HOLD] = 0L;
- else _param[HOLD] = 1L;
-
- } else if (name == ATTR_ctime) {
- _param[CREATIONTIME] = atol(value.c_str());
-
- } else if (name == ATTR_etime) {
- _param[ELIGIBLETIME] = atol(value.c_str());
-
- } else if (name == ATTR_mtime) {
- _param[MODIFICATIONTIME] = atol(value.c_str());
-
- } else if (name == ATTR_qtime) {
- _param[QUEUEDTIME] = atol(value.c_str());
-
- } else if (name == ATTR_exechost) {
- _param[EXECUTIONHOST] = value;
-
- } else if (name == ATTR_session) {
- _param[PID] = atol(value.c_str());
-
- } else if (name == ATTR_euser) {
- _param[EUSER] = value;
-
- } else if (name == ATTR_egroup) {
- _param[EGROUP] = value;
-
- } else if (name == ATTR_l) {
- if (res == "cput") {
- _param[MAXCPUTIME] = HMStoLong(value);
-
- } else if (res == "walltime") {
- _param[MAXWALLTIME] = HMStoLong(value);
-
- }
-
- } else if (name == ATTR_used) {
- if (res == "cput") {
- _param[USEDCPUTIME] = HMStoLong(value);
-
- } else if (res == "walltime") {
- _param[USEDWALLTIME] = HMStoLong(value);
-
- }
-
- } else if (name == ATTR_v) {
- int deb = 0;
- int pos = 0;
- bool ok = true;
-
- while (ok) {
- pos = value.find(",", deb);
- string sub = value.substr(deb, pos-deb);
- deb = pos + 1;
- if (pos < 0) ok = false;
-
- int eq = sub.find("=");
- _env[sub.substr(0, eq)] = sub.substr(eq+1);
- }
-
- }
- }
-
-
- if (tobedeleted) pbs_statfree(list);
- }
-
- // Destructeur
- JobInfo_PBS::~JobInfo_PBS()
- {
- // Nothing to do
- }
-
- // Convertit une date HH:MM:SS en secondes
- long JobInfo_PBS::HMStoLong(const string & s)
- {
- long hour, min, sec;
-
- sscanf( s.c_str(), "%ld:%ld:%ld", &hour, &min, &sec);
- return ( ( ( hour * 60L ) + min ) * 60L ) + sec;
- }
-
- // Methode pour l'interfacage avec Python (SWIG) : affichage en Python
- string JobInfo_PBS::__str__() const
- {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << "<JobInfo_PBS (" << this << ") :" << endl;
- sst << " ID = " <<_param[ID] << endl;
-
- sst << " + Parametre :" << endl;
- Parametre::const_iterator itp;
- for(itp=_param.begin(); itp!=_param.end(); itp++) {
- if ( (*itp).first != ID ) {
- sst << " * " << (*itp).first << " = " << (*itp).second << endl;
- }
- }
- return sst.str();
- }
-
-
-}
+++ /dev/null
-/*
- * JobInfo_PBS.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_PBS_H_
-#define _JOBINFO_PBS_H_
-
-extern "C" {
-
-#include <pbs_error.h>
-#include <pbs_ifl.h>
-}
-#include <string>
-#include "Batch_RunTimeException.hxx"
-#include "Batch_JobInfo.hxx"
-
-namespace Batch {
-
- class JobInfo_PBS : public JobInfo
- {
- public:
- // Constructeurs et destructeur
- JobInfo_PBS() : JobInfo() {};
- JobInfo_PBS(struct batch_status * stat_list, bool tobedeleted = false);
- virtual ~JobInfo_PBS();
-
- // Constructeur par recopie
- JobInfo_PBS(const JobInfo_PBS & jinfo) : JobInfo(jinfo) {};
-
- // Methodes pour l'interfacage avec Python (SWIG)
- // TODO : supprimer ces methodes et transferer leur definitions dans SWIG
- std::string __str__() const; // SWIG : affichage en Python
- std::string __repr__() const { return __str__(); }; // SWIG : affichage en Python
-
- protected:
-
- private:
- // Convertit une date HH:MM:SS en secondes
- long HMStoLong(const std::string &);
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * Job_LSF.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 <string.h>
-#include <vector>
-#include "Batch_Job_LSF.hxx"
-
-namespace Batch {
-
-
- // Constructeur
- Job_LSF::Job_LSF(const Job & job) : _p_submit(0)
- {
- Parametre P = job.getParametre();
- _p_submit = ParametreToSubmitStruct(P);
- }
-
-
- // Destructeur
- Job_LSF::~Job_LSF()
- {
- if (_p_submit) {
- if (_p_submit->jobName) delete [] _p_submit->jobName;
- if (_p_submit->queue) delete [] _p_submit->queue;
- if (_p_submit->askedHosts) {
- delete [] *(_p_submit->askedHosts);
- delete [] _p_submit->askedHosts;
- }
- if (_p_submit->resReq) delete [] _p_submit->resReq;
- if (_p_submit->hostSpec) delete [] _p_submit->hostSpec;
- if (_p_submit->dependCond) delete [] _p_submit->dependCond;
- if (_p_submit->timeEvent) delete [] _p_submit->timeEvent;
- if (_p_submit->inFile) delete [] _p_submit->inFile;
- if (_p_submit->outFile) delete [] _p_submit->outFile;
- if (_p_submit->errFile) delete [] _p_submit->errFile;
- if (_p_submit->command) delete [] _p_submit->command;
- if (_p_submit->newCommand) delete [] _p_submit->newCommand;
- if (_p_submit->chkpntDir) delete [] _p_submit->chkpntDir;
- if (_p_submit->xf) delete [] _p_submit->xf;
- if (_p_submit->preExecCmd) delete [] _p_submit->preExecCmd;
- if (_p_submit->mailUser) delete [] _p_submit->mailUser;
- if (_p_submit->projectName) delete [] _p_submit->projectName;
- if (_p_submit->loginShell) delete [] _p_submit->loginShell;
- if (_p_submit->exceptList) delete [] _p_submit->exceptList;
- delete _p_submit;
- }
- }
-
-
- // Accesseur
- struct submit * Job_LSF::getSubmitStruct()
- {
- return _p_submit;
- }
-
-
- char * Job_LSF::string2char(const string & s)
- {
- char * ch = new char [s.size() + 1];
- memset(ch, 0, s.size() + 1);
- strncat(ch, s.c_str(), s.size());
- return ch;
- }
-
-
- struct submit * Job_LSF::ParametreToSubmitStruct(const Parametre & P)
- {
- if (! _p_submit) _p_submit = new struct submit;
-
- memset( (void *) _p_submit, 0, sizeof(struct submit));
-
- struct submit & sub = * _p_submit;
- sub.options = 0;
- sub.options2 = 0;
-
- sub.beginTime = 0; // job can run as soon as possible (default)
- sub.termTime = 0; // job can run as long as it wishes (default)
-
- sub.numProcessors = 1; // job can run on one single processor (default)
- sub.maxNumProcessors = 1; // job can run on one single processor (default)
-
- for(int i = 0; i< LSF_RLIM_NLIMITS; i++) sub.rLimits[i] = DEFAULT_RLIMIT;
-
- typedef std::vector< struct xFile > XFTAB;
- XFTAB xf_tab;
-
- string st_second;
- for(Parametre::const_iterator it = P.begin(); it != P.end(); it++) {
- if ( (*it).first == ACCOUNT ) {
- sub.options |= SUB_PROJECT_NAME;
- st_second = (*it).second.str();
- sub.projectName = string2char(st_second);
-
- } else if ( (*it).first == CHECKPOINT ) {
- if (static_cast< long >((*it).second))
- sub.options |= SUB_CHKPNT_PERIOD;
- else
- sub.options &= ~ SUB_CHKPNT_PERIOD;
-
- } else if ( (*it).first == CKPTINTERVAL ) {
- sub.chkpntPeriod = static_cast< long >((*it).second);
-
- } else if ( (*it).first == EXECUTABLE ) {
- st_second = (*it).second.str();
- sub.command = string2char(st_second);
-
- } else if ( (*it).first == EXECUTIONHOST ) {
- sub.options |= SUB_HOST;
- if (! sub.numAskedHosts) {
- sub.numAskedHosts = 1;
- sub.askedHosts = new char* [1];
- }
- st_second = (*it).second.str();
- sub.askedHosts[0] = string2char(st_second);
-
- } else if ( (*it).first == HOLD ) {
- if (static_cast< long >((*it).second))
- sub.options2 |= SUB2_HOLD;
- else
- sub.options2 &= ~ SUB2_HOLD;
-
- } else if ( (*it).first == INFILE ) {
- 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();
-
- // ATTENTION : les notions de fichier "local" ou "remote" sont inverses de celle de PBS qui a un point de vue serveur et non pas utilisateur
- if (remote == "stdin"){
- sub.options |= SUB_IN_FILE;
- sub.inFile = string2char(local);
-
- } else {
- struct xFile xf;
- strncpy(xf.subFn, local.c_str(), MAXFILENAMELEN - 1); xf.subFn[MAXFILENAMELEN - 1] = 0;
- strncpy(xf.execFn, remote.c_str(), MAXFILENAMELEN - 1); xf.execFn[MAXFILENAMELEN - 1] = 0;
- xf.options = XF_OP_SUB2EXEC;
- xf_tab.push_back(xf);
- }
- }
-
- } else if ( (*it).first == MAIL ) {
- sub.options |= SUB_MAIL_USER;
- st_second = (*it).second.str();
- sub.mailUser = string2char(st_second);
-
- } else if ( (*it).first == MAXCPUTIME ) {
- sub.rLimits[LSF_RLIMIT_CPU] = static_cast< long >((*it).second);
-
- } else if ( (*it).first == MAXDISKSIZE ) {
- sub.rLimits[LSF_RLIMIT_FSIZE] = static_cast< long >((*it).second);
-
- } else if ( (*it).first == MAXRAMSIZE ) {
- sub.rLimits[LSF_RLIMIT_SWAP] = static_cast< long >((*it).second);
-
- } else if ( (*it).first == MAXWALLTIME ) {
- sub.rLimits[LSF_RLIMIT_RUN] = static_cast< long >((*it).second);
-
- } else if ( (*it).first == NAME ) {
- sub.options |= SUB_JOB_NAME;
- st_second = (*it).second.str();
- sub.jobName = string2char(st_second);
-
- } else if ( (*it).first == NBPROC ) {
- sub.numProcessors = static_cast< long >((*it).second);
- sub.maxNumProcessors = static_cast< long >((*it).second);
-
- } else if ( (*it).first == OUTFILE ) {
- 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();
-
- // ATTENTION : les notions de fichier "local" ou "remote" sont inverses de celle de PBS qui a un point de vue serveur et non pas utilisateur
- if (remote == "stdout"){
- sub.options |= SUB_OUT_FILE;
- sub.outFile = string2char(local);
-
- } else if (remote == "stderr"){
- sub.options |= SUB_ERR_FILE;
- sub.errFile = string2char(local);
-
- } else {
- struct xFile xf;
- strncpy(xf.subFn, local.c_str(), MAXFILENAMELEN - 1); xf.subFn[MAXFILENAMELEN - 1] = 0;
- strncpy(xf.execFn, remote.c_str(), MAXFILENAMELEN - 1); xf.execFn[MAXFILENAMELEN - 1] = 0;
- xf.options = XF_OP_EXEC2SUB;
- xf_tab.push_back(xf);
- }
- }
-
-
- } else if ( (*it).first == QUEUE ) {
- sub.options |= SUB_QUEUE;
- st_second = (*it).second.str();
- sub.queue = string2char(st_second);
-
- } else if ( (*it).first == STARTTIME ) {
- sub.beginTime = static_cast< long >((*it).second);
-
- } else if ( (*it).first == TMPDIR ) {
- // TODO
-
- } else if ( (*it).first == USER ) {
- // TODO
-
- }
- }
-
-
- // Transfert de fichiers en entree et sortie
- sub.options |= SUB_OTHER_FILES;
- sub.nxf = xf_tab.size();
- sub.xf = new struct xFile [sub.nxf];
- int ixf = 0;
- for(XFTAB::const_iterator it_xf=xf_tab.begin(); it_xf != xf_tab.end(); it_xf++, ixf++)
- sub.xf[ixf] = *it_xf; // *it_xf == xf_tab[ixf]
-
-
- return _p_submit;
- }
-
-}
+++ /dev/null
-/*
- * Job_LSF.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_LSF_H_
-#define _JOB_LSF_H_
-
-extern "C" {
-
-#include <lsf/lsf.h>
-#include <lsf/lsbatch.h>
-}
-#include "Batch_Job.hxx"
-
-namespace Batch {
-
- class Job_LSF
- {
- public:
- // Constructeur et destructeur
- Job_LSF(const Job & job);
- virtual ~Job_LSF();
-
- // Accesseurs
- struct submit * getSubmitStruct();
-
- protected:
- struct submit * _p_submit; // structure pour soumettre les jobs
-
- private:
- struct submit * ParametreToSubmitStruct(const Parametre & P);
- char * string2char(const string &);
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * Job_PBS.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_PBS.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Ajoute un element (name,resource,value) a la liste chainee d'attributs + operateur
- void Job_PBS::setResourceAttributeOP(struct attropl ** attr_list, const char * attr_name, const char * attr_resource, const char * attr_value)
- {
- // L'element (name,resource,value) existe-t-il deja ? si oui ptr != 0
- struct attropl * ptr = findResourceAttributeOP(*attr_list, attr_name, attr_resource);
-
- if (!ptr) { // L'element n'existe pas, il faut le creer
- if (ptr = lastAttributeOP(*attr_list)) { // la liste n'est pas vide
- ptr->next = new struct attropl;
- ptr = ptr->next;
- ptr->next = 0;
-
- } else { // la liste est completement vide
- ptr = *attr_list = new struct attropl;
- ptr->next = 0;
- }
-
- // On remplit les champs (name,resource,value)
- ptr->name = new char[strlen(attr_name) + 1];
- strncpy(ptr->name, attr_name, strlen(attr_name));
- ptr->name[strlen(attr_name)] = 0;
-
- ptr->resource = new char[strlen(attr_resource) + 1];
- strncpy(ptr->resource, attr_resource, strlen(attr_resource));
- ptr->resource[strlen(attr_resource)] = 0;
-
- ptr->value = new char[strlen(attr_value) + 1];
- strncpy(ptr->value, attr_value, strlen(attr_value));
- ptr->value[strlen(attr_value)] = 0;
-
- } else { // L'attribut existe, on change sa valeur
- delete[] ptr->value; // On efface la valeur precedente
- ptr->value = new char[strlen(attr_value) + 1];
- strncpy(ptr->value, attr_value, strlen(attr_value));
- ptr->value[strlen(attr_value)] = 0;
-
- }
- }
-
-
- // Recherche un element (name,resource,value) dans la liste chainee d'attributs + operateur
- struct attropl * Job_PBS::findResourceAttributeOP(struct attropl * attr_list, const char * attr_name, const char * attr_resource)
- {
- // On parcoure la liste chainee pour trouver l'element dont les champs name et resource coincident
- struct attropl * ptr = attr_list;
- while (ptr) {
- if (!strcmp(ptr->name, attr_name) && !strcmp(ptr->resource, attr_resource)) break;
- ptr = ptr->next;
- }
- return ptr;
- }
-
-
- // Recherche le dernier element de la liste chainee d'attributs + operateur
- struct attropl * Job_PBS::lastAttributeOP(struct attropl * attr_list)
- {
- struct attropl * ptr = attr_list;
- while (ptr && ptr->next) {
- ptr = ptr->next;
- }
- return ptr;
- }
-
-
- // Convertit un objet Parametre en liste chainee d'attributs + operateur
- struct attropl * Job_PBS::ParametreToAttributeOPList(struct attropl ** _p_attr_list, Parametre & P)
- {
- Parametre::iterator it;
- string st_second;
- for(it=P.begin(); it!=P.end(); it++) {
- if ( (*it).first == ACCOUNT ) {
- st_second = (*it).second.str();
- setResourceAttributeOP(_p_attr_list, ATTR_A, "", st_second.c_str());
-
-
- } else if ( (*it).first == CHECKPOINT ) {
- setResourceAttributeOP(_p_attr_list, ATTR_c, "", "u");
-
-
- } else if ( (*it).first == CKPTINTERVAL ) {
- // Not significant
-
- } else if ( (*it).first == EXECUTABLE ) {
- // Already done
-
- } else if ( (*it).first == HOLD ) {
- if (static_cast< long >((*it).second))
- setResourceAttributeOP(_p_attr_list, ATTR_h, "", USER_HOLD);
- else
- setResourceAttributeOP(_p_attr_list, ATTR_h, "", NO_HOLD);
-
- } else if ( (*it).first == INFILE ) {
- Versatile V = (*it).second;
- Versatile::iterator Vit;
-
- string sep = "";
- string stagein;
-
- for(Vit=V.begin(); Vit!=V.end(); Vit++, sep=",") {
- CoupleType cpt = *static_cast< CoupleType * >(*Vit);
- Couple cp = cpt;
- string local = cp.getLocal();
- string remote = cp.getRemote();
-
- // ATTENTION : les notions de fichier "local" ou "remote" sont inverses de celle de PBS qui a un point de vue serveur et non pas utilisateur
- stagein += sep + remote + "@" + local;
- }
-
- if (stagein.size())
- setResourceAttributeOP(_p_attr_list, ATTR_stagein, "", stagein.c_str());
-
-
- } else if ( (*it).first == MAIL ) {
- st_second = (*it).second.str();
- setResourceAttributeOP(_p_attr_list, ATTR_M, "", st_second.c_str());
-
- } else if ( (*it).first == MAXCPUTIME ) {
- char attr_value[32];
- long secondes = (*it).second;
- long heures = secondes / 3600L;
- long minutes = (secondes - 3600L * heures) / 60L;
- secondes = secondes % 60L;
- sprintf(attr_value, "%02ld:%02ld:%02ld", heures, minutes, secondes);
-
- setResourceAttributeOP(_p_attr_list, ATTR_l, "cput", attr_value);
-
-
- } else if ( (*it).first == MAXDISKSIZE ) {
-
- } else if ( (*it).first == MAXRAMSIZE ) {
-
- } else if ( (*it).first == MAXWALLTIME ) {
- char attr_value[32];
- long secondes = (*it).second;
- long heures = secondes / 3600L;
- long minutes = (secondes - 3600L * heures) / 60L;
- secondes = secondes % 60L;
- sprintf(attr_value, "%02ld:%02ld:%02ld", heures, minutes, secondes);
-
- setResourceAttributeOP(_p_attr_list, ATTR_l, "walltime", attr_value);
-
-
- } else if ( (*it).first == NAME ) {
- st_second = (*it).second.str();
- setResourceAttributeOP(_p_attr_list, ATTR_N, "", st_second.c_str());
-
-
- } else if ( (*it).first == OUTFILE ) {
- Versatile V = (*it).second;
- Versatile::iterator Vit;
-
- string sep = "";
- string stageout;
-
- for(Vit=V.begin(); Vit!=V.end(); Vit++, sep=",") {
- CoupleType cpt = *static_cast< CoupleType * >(*Vit);
- Couple cp = cpt;
- string local = cp.getLocal();
- string remote = cp.getRemote();
-
- if (remote == "stdout")
- setResourceAttributeOP(_p_attr_list, ATTR_o, "", local.c_str());
-
- else if (remote == "stderr")
- setResourceAttributeOP(_p_attr_list, ATTR_e, "", local.c_str());
-
- else
- // ATTENTION : les notions de fichier "local" ou "remote" sont inverses de celle de PBS qui a un point de vue serveur et non pas utilisateur
- stageout += sep + remote + "@" + local;
- }
-
- if (stageout.size())
- setResourceAttributeOP(_p_attr_list, ATTR_stageout, "", stageout.c_str());
-
- } else if ( (*it).first == QUEUE ) {
- // Already done
-
- } else if ( (*it).first == STARTTIME ) {
-
- } else if ( (*it).first == TMPDIR ) {
-
- } else if ( (*it).first == USER ) {
- st_second = (*it).second.str();
- setResourceAttributeOP(_p_attr_list, ATTR_u, "", st_second.c_str());
-
- }
- }
- return *_p_attr_list;
- }
-
-
- // Convertit un objet Environnement en liste chainee d'attributs + operateur
- struct attropl * Job_PBS::EnvironnementToAttributeOPList(struct attropl ** _p_attr_list, Environnement & E)
- {
- Environnement::iterator it;
- for(it=E.begin(); it!=E.end(); it++) {
- setResourceAttributeOP(_p_attr_list, ATTR_v, (*it).first.c_str(), ( (*it).first + "=" + (*it).second ).c_str());
- }
- return *_p_attr_list;
- }
-
-
- // Ajoute les variables d'environnement presentes dans tout job PBS
- void Job_PBS::addPBSEnvironnement(Environnement & E)
- {
- char * c;
-
- c = getenv("HOME");
- if (c) E["PBS_O_HOME"] = c;
-
- c = getenv("LANG");
- if (c) E["PBS_O_LANG"] = c;
-
- c = getenv("LOGNAME");
- if (c) E["PBS_O_LOGNAME"] = c;
-
- c = getenv("PATH");
- if (c) E["PBS_O_PATH"] = c;
-
- c = getenv("LD_LIBRARY_PATH");
- if (c) E["PBS_O_LD_LIBRARY_PATH"] = c;
-
- c = getenv("MAIL");
- if (c) E["PBS_O_MAIL"] = c;
-
- c = getenv("SHELL");
- if (c) E["PBS_O_SHELL"] = c;
-
- c = getenv("TZ");
- if (c) E["PBS_O_TZ"] = c;
-
- /* Recuperation du working directory */
- size_t size = 256;
- char * buf = 0;
- char * rc = 0;
- do {
- if (buf) delete[] buf;
- buf = new char[size];
- rc = getcwd(buf, size);
- size += size;
- } while (!rc);
- E["PBS_O_WORKDIR"] = buf;
- delete[] buf;
- }
-
-
- // Ajoute un element (name,resource,value) a la liste chainee d'attributs
- void Job_PBS::setResourceAttribute(struct attrl ** attr_list, const char * attr_name, const char * attr_resource, const char * attr_value)
- {
- // L'element (name,resource,value) existe-t-il deja ? si oui ptr != 0
- struct attrl * ptr = findResourceAttribute(*attr_list, attr_name, attr_resource);
-
- if (!ptr) { // L'attribut n'existe pas, il faut le creer
- if (ptr = lastAttribute(*attr_list)) { // la liste n'est pas vide
- ptr->next = new struct attrl;
- ptr = ptr->next;
- ptr->next = 0;
-
- } else { // la liste est completement vide
- ptr = *attr_list = new struct attrl;
- ptr->next = 0;
- }
-
- // On remplit les champs (name,resource,value)
- ptr->name = new char[strlen(attr_name) + 1];
- strncpy(ptr->name, attr_name, strlen(attr_name));
- ptr->name[strlen(attr_name)] = 0;
-
- ptr->resource = new char[strlen(attr_resource) + 1];
- strncpy(ptr->resource, attr_resource, strlen(attr_resource));
- ptr->resource[strlen(attr_resource)] = 0;
-
- ptr->value = new char[strlen(attr_value) + 1];
- strncpy(ptr->value, attr_value, strlen(attr_value));
- ptr->value[strlen(attr_value)] = 0;
-
- } else { // L'attribut existe, on change sa valeur
- delete[] ptr->value; // On efface la valeur precedente
- ptr->value = new char[strlen(attr_value) + 1];
- strncpy(ptr->value, attr_value, strlen(attr_value));
- ptr->value[strlen(attr_value)] = 0;
-
- }
- }
-
- // Recherche un element (name,resource,value) dans la liste chainee d'attributs
- struct attrl * Job_PBS::findResourceAttribute(struct attrl * attr_list, const char * attr_name, const char * attr_resource)
- {
- // On parcoure la liste chainee pour trouver l'element dont les champs name et resource coincident
- struct attrl * ptr = attr_list;
- while (ptr) {
- if (!strcmp(ptr->name, attr_name) && !strcmp(ptr->resource, attr_resource)) break;
- ptr = ptr->next;
- }
- return ptr;
- }
-
-
- // Recherche le dernier element de la liste chainee d'attributs
- struct attrl * Job_PBS::lastAttribute(struct attrl * attr_list)
- {
- struct attrl * ptr = attr_list;
- while (ptr && ptr->next) {
- ptr = ptr->next;
- }
- return ptr;
- }
-
-
- // Constructeur
- Job_PBS::Job_PBS(const Job & job) : _p_attropl(0), _p_attrl(0), _script(0), _destination(0)
- {
- Parametre P = job.getParametre();
- Parametre::iterator it;
-
- // On extrait de l'objet Parametre le champ EXECUTABLE qui deviendra le script PBS
- if ( (it=P.find(EXECUTABLE)) != P.end()) {
- Versatile V = (*it).second;
- string st_exe = V.str();
- const char * exe = st_exe.c_str();
- int lg = strlen(exe);
- _script = new char[lg + 1];
- for (int ii=0; ii<lg+1; ii++) _script[ii] = 0;
- strcpy(_script, exe);
- _script[lg] = 0;
-
- } else {
- _script = new char[1];
- _script[0] = 0;
- }
-
- // On extrait de l'objet Parametre le champ QUEUE qui deviendra la destination
- if ( (it=P.find(QUEUE)) != P.end()) {
- Versatile V = (*it).second;
- string st_dest = V.str();
- const char * dest = st_dest.c_str();
- _destination = new char[strlen(dest) + 2 + 1];
- _destination[0] = 0;
- strcat(_destination, dest);
- _destination[strlen(dest)] = 0;
- } else {
- _destination = new char[1];
- _destination[0] = 0;
- }
-
- // On convertit les objets Parametre et Environnement en liste chainee d'attributs + operateur
- Environnement E = job.getEnvironnement();
- addPBSEnvironnement(E);
-
- _p_attropl = ParametreToAttributeOPList(&_p_attropl, P);
- _p_attropl = EnvironnementToAttributeOPList(&_p_attropl, E);
-
- }
-
-
- // Destructeur
- Job_PBS::~Job_PBS()
- {
- // On detruit la liste chainee d'attributs + operateur
- struct attropl * current_p_attropl = _p_attropl;
- while (current_p_attropl) {
- struct attropl * next = current_p_attropl->next;
- delete[] current_p_attropl->name;
- delete[] current_p_attropl->resource;
- delete[] current_p_attropl->value;
- delete current_p_attropl;
- current_p_attropl = next;
- }
-
- // On detruit la liste chainee d'attributs
- struct attrl * current_p_attrl = _p_attrl;
- while (current_p_attrl) {
- struct attrl * next = current_p_attrl->next;
- delete[] current_p_attrl->name;
- delete[] current_p_attrl->resource;
- delete[] current_p_attrl->value;
- delete current_p_attrl;
- current_p_attrl = next;
- }
-
- // On detruit les champs alloues
- delete[] _script;
- delete[] _destination;
- }
-
-
- // Accesseur
- struct attropl * Job_PBS::getAttributesOP()
- {
- return _p_attropl;
- }
-
- // Accesseur
- // Cette methode sert pour les pbs_alter de PBS
- // Pbs_alter est buggé par rapport a la specification ers_all.ps car les
- // variables d'environnement ne sont pas supportees (ATTR_v)
- struct attrl * Job_PBS::getAttributes()
- {
- if (_p_attrl == 0) {
-
- // On remplit la structure attrl a partir de la strucuture attropl
- // (elles ne different que par le parametre op, mais elles ne sont pas interchangeables
- // dans les appels)
-
- struct attropl * current_p_attropl = _p_attropl;
- while (current_p_attropl) {
- if (strcmp(current_p_attropl->name, ATTR_v)) // Bug fix for ATTR_v
- setResourceAttribute(&_p_attrl,
- current_p_attropl->name,
- current_p_attropl->resource,
- current_p_attropl->value);
-
- current_p_attropl = current_p_attropl->next;
- }
-
- }
-
- return _p_attrl;
- }
-
- // Accesseur
- char * Job_PBS::getScript()
- {
- return _script;
- }
-
- // Accesseur
- char * Job_PBS::getDestination()
- {
- return _destination;
- }
-
-}
+++ /dev/null
-/*
- * Job_PBS.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_PBS_H_
-#define _JOB_PBS_H_
-
-extern "C" {
-
-#include <pbs_error.h>
-#include <pbs_ifl.h>
-}
-#include "Batch_Job.hxx"
-
-namespace Batch {
-
- class Job_PBS
- {
- public:
- // Constructeur 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 chainee d'attributs + operateur
- struct attrl * _p_attrl; // liste chainee d'attributs
- char * _script; // chemin d'acces au script du job
- char * _destination; // queue dans laquelle le job est soumis
-
- private:
- // Ajoute un element (name,resource,value) a la liste chainee d'attributs + operateur
- void setResourceAttributeOP(struct attropl ** attr_list, const char * attr_name, const char * attr_resource, const char * attr_value);
-
- // Recherche un element (name,resource,value) dans la liste chainee d'attributs + operateur
- struct attropl * findResourceAttributeOP(struct attropl * attr_list, const char * attr_name, const char * attr_resource);
-
- // Recherche le dernier element de la liste chainee d'attributs + operateur
- struct attropl * lastAttributeOP(struct attropl * attr_list);
-
- // Convertit un objet Parametre en liste chainee d'attributs + operateur
- struct attropl * ParametreToAttributeOPList(struct attropl ** _p_attr_list, Parametre & param);
-
- // Convertit un objet Environnement en liste chainee d'attributs + operateur
- struct attropl * EnvironnementToAttributeOPList(struct attropl ** _p_attr_list, Environnement & env);
-
- // Ajoute les variables d'environnement presentes dans tout job PBS
- void addPBSEnvironnement(Environnement & E);
-
-
- // Ajoute un element (name,resource,value) a la liste chainee d'attributs
- void setResourceAttribute(struct attrl ** attr_list, const char * attr_name, const char * attr_resource, const char * attr_value);
-
- // Recherche un element (name,resource,value) dans la liste chainee d'attributs
- struct attrl * findResourceAttribute(struct attrl * attr_list, const char * attr_name, const char * attr_resource);
-
- // Recherche le dernier element de la liste chainee d'attributs
- struct attrl * lastAttribute(struct attrl * attr_list);
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * ListIsFullException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include "Batch_ListIsFullException.hxx"
-using namespace std;
-
-
-namespace Batch {
-
-}
+++ /dev/null
-/*
- * ListIsFullException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _LISTISFULLEXCEPTION_H_
-#define _LISTISFULLEXCEPTION_H_
-
-#include "Batch_GenericException.hxx"
-
-namespace Batch {
-
- class ListIsFullException : public GenericException
- {
- public:
- // Constructeur
- ListIsFullException(std::string ch = "undefined") : GenericException("ListIsFullException", ch) {}
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * LongType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include <sstream>
-#include <assert.h>
-//#include "MEDMEM_STRING.hxx"
-#include "Batch_LongType.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Conversion en chaine
- string LongType::affiche() const
- {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << _data;
- return sst.str();
- }
-
- // Operateur d'affectation
- LongType & LongType::operator =(long l)
- {
- _data = l;
- return *this;
- }
-
- // Conversion en long
- LongType::operator long() const
- {
- return this->_data;
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * LongType::clone() const
- {
- LongType * pL = new LongType(this->_data);
- assert(pL != 0);
- return pL;
- }
-
-}
+++ /dev/null
-/*
- * LongType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _LONGTYPE_H_
-#define _LONGTYPE_H_
-
-#include <string>
-#include "Batch_GenericType.hxx"
-
-namespace Batch {
-
- class LongType : public GenericType
- {
- public:
- // Constructeur
- LongType(const long l=0L) : _data(l) {}
-
- // Conversion en chaine
- virtual std::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:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * MapKey.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Oct 14 14:00:30 2003
- * Projet : Salome 2
- *
- */
-
-#include <string>
-#include "Batch_MapKey.hxx"
-using namespace std;
-
-namespace Batch {
-
-
-}
-
-
-// COMMENTS
+++ /dev/null
-/*
- * MapKey.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Oct 14 14:00:29 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _MAPKEY_H_
-#define _MAPKEY_H_
-
-
-#include <string>
-
-namespace Batch {
-
- // une classe privee pour les differents types
- // ces types ne peuvent pas etre redefinis
- class MapKey : public std::string
- {
- private:
- friend class Parametre; // seule la classe Parametre peut creer des MapKey
- MapKey() : std::string() {}
- MapKey(const MapKey & mk, size_type pos, size_type npos) : std::string(mk, pos, npos) {}
- MapKey(const char * s, size_type n) : std::string(s, n) {}
- MapKey(const char * s) : std::string(s) {}
- MapKey(size_type n, char c) : std::string(n, c) {}
-#ifdef __STL_MEMBER_TEMPLATES
- template<class InputIterator>
- MapKey(InputIterator __begin, InputIterator __end) : std::string(__begin, __end) {}
-#else
- MapKey(const_iterator __begin, const_iterator __end) : std::string(__begin, __end) {}
-#endif
-
- public:
- MapKey(const MapKey & mk) : std::string(mk) {}
-
- };
-
-}
-
-#endif
-
-// COMMENTS
+++ /dev/null
-/*
- * NotYetImplementedException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Nov 25 11:35:07 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_NotYetImplementedException.hxx"
-
-namespace Batch {
-
-}
-
+++ /dev/null
-/*
- * NotYetImplementedException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Nov 25 11:35:07 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _NOTYETIMPLEMENTEDEXCEPTION_H_
-#define _NOTYETIMPLEMENTEDEXCEPTION_H_
-
-
-#include "Batch_GenericException.hxx"
-using namespace std;
-
-namespace Batch {
-
- class NotYetImplementedException : public GenericException
- {
- public:
- // Constructeur
- NotYetImplementedException(string ch = "undefined") : GenericException("NotYetImplementedException", ch) {}
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * Parametre.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <map>
-#include "Batch_Versatile.hxx"
-#include "Batch_InvalidKeyException.hxx"
-#include "Batch_Parametre.hxx"
-using namespace std;
-
-// Definition des membres constants statiques
-// Definition des noms globaux pour les clefs en tant que references
-// TODO : supprimer les declarations statiques des clefs de la map
-def_static_MapKey(ACCOUNT);
-def_static_MapKey(ARGUMENTS);
-def_static_MapKey(CHECKPOINT);
-def_static_MapKey(CKPTINTERVAL);
-def_static_MapKey(CREATIONTIME);
-def_static_MapKey(EGROUP);
-def_static_MapKey(ELIGIBLETIME);
-def_static_MapKey(ENDTIME);
-def_static_MapKey(EUSER);
-def_static_MapKey(EXECUTABLE);
-def_static_MapKey(EXECUTIONHOST);
-def_static_MapKey(EXITCODE);
-def_static_MapKey(HOLD);
-def_static_MapKey(ID);
-def_static_MapKey(INFILE);
-def_static_MapKey(MAIL);
-def_static_MapKey(MAXCPUTIME);
-def_static_MapKey(MAXDISKSIZE);
-def_static_MapKey(MAXRAMSIZE);
-def_static_MapKey(MAXWALLTIME);
-def_static_MapKey(MODIFICATIONTIME);
-def_static_MapKey(NAME);
-def_static_MapKey(NBPROC);
-def_static_MapKey(OUTFILE);
-def_static_MapKey(PID);
-def_static_MapKey(QUEUE);
-def_static_MapKey(QUEUEDTIME);
-def_static_MapKey(SERVER);
-def_static_MapKey(STARTTIME);
-def_static_MapKey(STATE);
-def_static_MapKey(TEXT);
-def_static_MapKey(TMPDIR);
-def_static_MapKey(USEDCPUTIME);
-def_static_MapKey(USEDDISKSIZE);
-def_static_MapKey(USEDRAMSIZE);
-def_static_MapKey(USEDWALLTIME);
-def_static_MapKey(USER);
-
-namespace Batch {
-
- // Constructeur standard
- // La map interne TypeMap possede les memes clefs que la map principale, mais les
- // valeurs associees contiennent le type des clefs de la map principale ainsi que
- // le nombre de valeurs autorisees dans l'objet Versatile (0=nombre quelconque,
- // sinon valeur precisee)
- Parametre::Parametre() : map< string, Versatile >()
- {
- TypeMap[ACCOUNT].type = STRING;
- TypeMap[ACCOUNT].maxelem = 1;
-
- TypeMap[ARGUMENTS].type = STRING;
- TypeMap[ARGUMENTS].maxelem = 0;
-
- TypeMap[CHECKPOINT].type = LONG;
- TypeMap[CHECKPOINT].maxelem = 1;
-
- TypeMap[CKPTINTERVAL].type = LONG;
- TypeMap[CKPTINTERVAL].maxelem = 1;
-
- TypeMap[CREATIONTIME].type = LONG;
- TypeMap[CREATIONTIME].maxelem = 1;
-
- TypeMap[EGROUP].type = STRING;
- TypeMap[EGROUP].maxelem = 1;
-
- TypeMap[ELIGIBLETIME].type = LONG;
- TypeMap[ELIGIBLETIME].maxelem = 1;
-
- TypeMap[ENDTIME].type = LONG;
- TypeMap[ENDTIME].maxelem = 1;
-
- TypeMap[EUSER].type = STRING;
- TypeMap[EUSER].maxelem = 1;
-
- TypeMap[EXECUTABLE].type = STRING;
- TypeMap[EXECUTABLE].maxelem = 1;
-
- TypeMap[EXECUTIONHOST].type = STRING;
- TypeMap[EXECUTIONHOST].maxelem = 0;
-
- TypeMap[EXITCODE].type = LONG;
- TypeMap[EXITCODE].maxelem = 1;
-
- TypeMap[HOLD].type = LONG;
- TypeMap[HOLD].maxelem = 1;
-
- TypeMap[ID].type = STRING;
- TypeMap[ID].maxelem = 1;
-
- TypeMap[INFILE].type = COUPLE;
- TypeMap[INFILE].maxelem = 0;
-
- TypeMap[MAIL].type = STRING;
- TypeMap[MAIL].maxelem = 1;
-
- TypeMap[MAXCPUTIME].type = LONG;
- TypeMap[MAXCPUTIME].maxelem = 1;
-
- TypeMap[MAXDISKSIZE].type = LONG;
- TypeMap[MAXDISKSIZE].maxelem = 1;
-
- TypeMap[MAXRAMSIZE].type = LONG;
- TypeMap[MAXRAMSIZE].maxelem = 1;
-
- TypeMap[MAXWALLTIME].type = LONG;
- TypeMap[MAXWALLTIME].maxelem = 1;
-
- TypeMap[MODIFICATIONTIME].type = LONG;
- TypeMap[MODIFICATIONTIME].maxelem = 1;
-
- TypeMap[NAME].type = STRING;
- TypeMap[NAME].maxelem = 1;
-
- TypeMap[NBPROC].type = LONG;
- TypeMap[NBPROC].maxelem = 1;
-
- TypeMap[OUTFILE].type = COUPLE;
- TypeMap[OUTFILE].maxelem = 0;
-
- TypeMap[PID].type = LONG;
- TypeMap[PID].maxelem = 1;
-
- TypeMap[QUEUE].type = STRING;
- TypeMap[QUEUE].maxelem = 1;
-
- TypeMap[QUEUEDTIME].type = LONG;
- TypeMap[QUEUEDTIME].maxelem = 1;
-
- TypeMap[SERVER].type = STRING;
- TypeMap[SERVER].maxelem = 1;
-
- TypeMap[STARTTIME].type = LONG;
- TypeMap[STARTTIME].maxelem = 1;
-
- TypeMap[STATE].type = STRING;
- TypeMap[STATE].maxelem = 1;
-
- TypeMap[TEXT].type = STRING;
- TypeMap[TEXT].maxelem = 1;
-
- TypeMap[TMPDIR].type = STRING;
- TypeMap[TMPDIR].maxelem = 1;
-
- TypeMap[USEDCPUTIME].type = LONG;
- TypeMap[USEDCPUTIME].maxelem = 1;
-
- TypeMap[USEDDISKSIZE].type = LONG;
- TypeMap[USEDDISKSIZE].maxelem = 1;
-
- TypeMap[USEDRAMSIZE].type = LONG;
- TypeMap[USEDRAMSIZE].maxelem = 1;
-
- TypeMap[USEDWALLTIME].type = LONG;
- TypeMap[USEDWALLTIME].maxelem = 1;
-
- TypeMap[USER].type = STRING;
- TypeMap[USER].maxelem = 1;
- }
-
- // Operateur de recherche dans la map
- // Cet operateur agit sur les objets NON CONSTANTS, il autorise la modification de
- // la valeur associée à la clef car il retourne une reference non constante
- Versatile & Parametre::operator [] (const string & mk)
- {
- // On controle que la clef est valide
- if (TypeMap.find(mk) == TypeMap.end()) throw InvalidKeyException(mk.c_str());
-
- // On recherche la valeur associee...
- Versatile & V = map< string, Versatile >::operator [] (mk);
-
- // ... et on l'initialise systematiquement
- // ATTENTION : si un probleme de type survient (ie, on stocke une valeur d'un type
- // different de celui inscrit dans TypeMap) une exception TypeMismatchException est
- // levee
- V.setName(mk);
- V.setType(TypeMap[mk].type);
- V.setMaxSize(TypeMap[mk].maxelem);
-
- return V;
- }
-
- // Operateur de recherche dans la map
- // Cet operateur agit sur les objets CONSTANTS
- const Versatile & Parametre::operator [] (const string & mk) const
- {
- // On controle que la clef est valide
- if (TypeMap.find(mk) == TypeMap.end()) throw InvalidKeyException(mk.c_str());
-
- // On recherche la valeur associee
- Parametre::const_iterator it = find(mk);
- const Versatile & V = (*it).second;
-
- return V;
- }
-
- // Operateur d'affectation
- Parametre & Parametre::operator =(const Parametre & PM)
- {
- // On ne reaffecte pas l'objet a lui-meme, sinon aie, aie, aie
- if (this == &PM) return *this;
-
- // On efface toute la map
- erase(begin(), end());
-
- // On recopie la map interne
- // Meme si cela ne sert a rien pour le moment car les maps internes sont identiques,
- // il n'est pas exclu que dans un avenir proche elles puissent etre differentes
- (*this).TypeMap = PM.TypeMap;
-
- // On recree la structure interne de la map avec les valeurs de celle passee en argument
- Parametre::const_iterator it;
- for(it=PM.begin(); it!=PM.end(); it++)
- insert(make_pair( (*it).first ,
- Versatile( (*it).second)
- ) );
-
- return *this;
- }
-
- // Constructeur par recopie
- Parametre::Parametre(const Parametre & PM)
- {
- // inutile car l'objet est vierge : il vient d'etre cree
- // On efface toute la map
- // erase(begin(), end());
-
- // On recopie la map interne
- (*this).TypeMap = PM.TypeMap;
-
- // On cree la structure interne de la map avec les valeurs de celle passee en argument
- Parametre::const_iterator it;
- for(it=PM.begin();
- it!=PM.end();
- it++)
- insert(
- make_pair(
- (*it).first ,
- Versatile( (*it).second)
- ) );
- }
-
- // map< string, TypeParam > Parametre::getTypeMap() const
- // {
- // return TypeMap;
- // }
-
-}
+++ /dev/null
-/*
- * Parametre.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _PARAMETRE_H_
-#define _PARAMETRE_H_
-
-#include <map>
-#include <string>
-#include "Batch_InvalidKeyException.hxx"
-#include "Batch_Versatile.hxx"
-
-
-// Ces macros permettent de simplifier l'ajout de nouvelles
-// clefs dans la map Parametre
-// TODO : remplacer ce mecanisme statique par la lecture
-// TODO : d'une descrption dans un fichier exterieur (genre XML)
-
-#define def_extern_MapKey(mk) extern const std::string & mk;
-#define def_static_MapKey(mk) const std::string Batch::Parametre::mk(#mk); \
- const std::string & mk = Batch::Parametre::mk;
-
-namespace Batch {
-
- class Parametre : public std::map< std::string, Versatile >
- {
- public:
- // Constructeur standard
- Parametre();
-
- // Constructeur par recopie
- Parametre(const Batch::Parametre & PM);
-
- // Operateur de recherche dans la map
- Versatile & operator [] (const std::string &);
- const Versatile & operator [] (const std::string &) const;
-
- // Operateur d'affectation
- Parametre & operator =(const Batch::Parametre & PM);
-
- // Declarations statique des clefs de la map
- // TODO : supprimer les declarations statiques des clefs de la map
- static const std::string ACCOUNT;
- static const std::string ARGUMENTS;
- static const std::string CHECKPOINT;
- static const std::string CKPTINTERVAL;
- static const std::string CREATIONTIME;
- static const std::string EGROUP;
- static const std::string ELIGIBLETIME;
- static const std::string ENDTIME;
- static const std::string EUSER;
- static const std::string EXECUTABLE;
- static const std::string EXECUTIONHOST;
- static const std::string EXITCODE;
- static const std::string HOLD;
- static const std::string ID;
- static const std::string INFILE;
- static const std::string MAIL;
- static const std::string MAXCPUTIME;
- static const std::string MAXDISKSIZE;
- static const std::string MAXRAMSIZE;
- static const std::string MAXWALLTIME;
- static const std::string MODIFICATIONTIME;
- static const std::string NAME;
- static const std::string NBPROC;
- static const std::string OUTFILE;
- static const std::string PID;
- static const std::string QUEUE;
- static const std::string QUEUEDTIME;
- static const std::string SERVER;
- static const std::string STARTTIME;
- static const std::string STATE;
- static const std::string TEXT;
- static const std::string TMPDIR;
- static const std::string USEDCPUTIME;
- static const std::string USEDDISKSIZE;
- static const std::string USEDRAMSIZE;
- static const std::string USEDWALLTIME;
- static const std::string USER;
-
- protected:
- std::map< std::string, TypeParam > TypeMap; // map interne servant a controler le type de la valeur associee a chaque clef
-
- private:
-
- };
-
-}
-
-def_extern_MapKey(ACCOUNT);
-def_extern_MapKey(ARGUMENTS);
-def_extern_MapKey(CHECKPOINT);
-def_extern_MapKey(CKPTINTERVAL);
-def_extern_MapKey(CREATIONTIME);
-def_extern_MapKey(EGROUP);
-def_extern_MapKey(ELIGIBLETIME);
-def_extern_MapKey(ENDTIME);
-def_extern_MapKey(EUSER);
-def_extern_MapKey(EXECUTABLE);
-def_extern_MapKey(EXECUTIONHOST);
-def_extern_MapKey(EXITCODE);
-def_extern_MapKey(HOLD);
-def_extern_MapKey(ID);
-def_extern_MapKey(INFILE);
-def_extern_MapKey(MAIL);
-def_extern_MapKey(MAXCPUTIME);
-def_extern_MapKey(MAXDISKSIZE);
-def_extern_MapKey(MAXRAMSIZE);
-def_extern_MapKey(MAXWALLTIME);
-def_extern_MapKey(MODIFICATIONTIME);
-def_extern_MapKey(NAME);
-def_extern_MapKey(NBPROC);
-def_extern_MapKey(OUTFILE);
-def_extern_MapKey(PID);
-def_extern_MapKey(QUEUE);
-def_extern_MapKey(QUEUEDTIME);
-def_extern_MapKey(SERVER);
-def_extern_MapKey(STARTTIME);
-def_extern_MapKey(STATE);
-def_extern_MapKey(TEXT);
-def_extern_MapKey(TMPDIR);
-def_extern_MapKey(USEDCPUTIME);
-def_extern_MapKey(USEDDISKSIZE);
-def_extern_MapKey(USEDRAMSIZE);
-def_extern_MapKey(USEDWALLTIME);
-def_extern_MapKey(USER);
-
-#endif
+++ /dev/null
-/*
- * PyVersatile.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Mon Oct 13 12:01:12 2003
- * Projet : Salome 2
- *
- */
-
-#include <string>
-#include <Python.h>
-#include "Batch_TypeMismatchException.hxx"
-#include "Batch_ListIsFullException.hxx"
-#include "Batch_InvalidArgumentException.hxx"
-#include "Batch_PyVersatile.hxx"
-
-namespace Batch {
-
- // Constructeur a partir d'un objet Versatile
- PyVersatile::PyVersatile(const Versatile & V) : Versatile(V)
- {
- // Nothing to do
- }
-
-
- // Constructeur a partir d'un PyObject
- // Les objets autorises sont les strings et les ints,
- // ainsi que les listes de strings
- PyVersatile::PyVersatile(const PyObject * PyO) throw(TypeMismatchException, ListIsFullException, InvalidArgumentException) : Versatile()
- {
- PyObject * _PyO = const_cast<PyObject *>(PyO);
-
- if (PyList_Check(_PyO)) { // c'est une liste
- _maxsize = PyList_Size(_PyO);
- for(int i=0; i<_maxsize; i++) {
- PyObject * val = PyList_GetItem(_PyO, i);
- if (PyString_Check(val)) {
- *this += PyString_AsString(val);
-
- } else if (PyTuple_Check(val) &&
- (PyTuple_Size(val) == 2) &&
- PyString_Check( PyTuple_GetItem(val,0) ) &&
- PyString_Check( PyTuple_GetItem(val,1) ) ) {
- *this += Couple( PyString_AsString( PyTuple_GetItem(val,0) ),
- PyString_AsString( PyTuple_GetItem(val,1) )
- );
-
- } else {
- PyErr_SetString(PyExc_RuntimeWarning, "PyVersatile::PyVersatile(const PyObject * PyO) : invalid PyObject");
- }
- }
-
- } else if (PyString_Check(_PyO)) { // c'est une string
- const char * s = PyString_AsString(_PyO);
- Versatile V = string(s);
- *this = V;
-
- } else if (PyInt_Check(_PyO)) { // c'est un int
- *this = PyInt_AsLong(_PyO);
-
- } else { // erreur
- PyErr_SetString(PyExc_RuntimeWarning, "PyVersatile::PyVersatile(const PyObject * PyO) : invalid PyObject");
- }
- }
-
-
-
- // Conversion de type vers un PyObject
- PyVersatile::operator PyObject *() const
- {
- PyObject * obj;
-
- if (_maxsize != 1) { // une liste
- obj = PyList_New(0);
- for(Versatile::const_iterator it=begin(); it!=end(); it++) {
- char ch[2] = {0, 0};
- string st;
- Couple cp;
-// PyObject * tuple;
- switch (_discriminator) {
- // case BOOL:
- // PyList_Append(obj, PyInt_FromLong(* static_cast<BoolType *>(*it)));
- // break;
-
- // case CHAR:
- // *ch = * static_cast<CharType *>(*it);
- // PyList_Append(obj, PyString_FromString(ch));
- // break;
-
- // case INT:
- // PyList_Append(obj, PyInt_FromLong(* static_cast<IntType *>(*it)));
- // break;
-
- case LONG:
- PyList_Append(obj, PyInt_FromLong(* static_cast<LongType *>(*it)));
- break;
-
- case STRING:
- st = * static_cast<StringType *>(*it);
- PyList_Append(obj, PyString_FromString(st.c_str()));
- break;
-
- case COUPLE:
- cp = * static_cast<CoupleType *>(*it);
-// tuple = PyTuple_New(2);
-// PyTuple_SetItem(tuple, 0, PyString_FromString( cp.getLocal().c_str() ) );
-// PyTuple_SetItem(tuple, 1, PyString_FromString( cp.getRemote().c_str() ) );
-// PyList_Append(obj, tuple);
- PyList_Append(obj, Py_BuildValue("(ss)", cp.getLocal().c_str(), cp.getRemote().c_str() ));
- break;
-
- case UNDEFINED:
- PyList_Append(obj, Py_None);
- break;
- }
-
- }
-
- } else { // un scalaire
- char ch[2] = {0, 0};
- string st;
- Couple cp;
-// PyObject * tuple;
- switch (_discriminator) {
- // case BOOL:
- // obj = PyInt_FromLong(* static_cast<BoolType *>(front()));
- // break;
-
- // case CHAR:
- // *ch = * static_cast<CharType *>(front());
- // obj = PyString_FromString(ch);
- // break;
-
- // case INT:
- // obj = PyInt_FromLong(* static_cast<IntType *>(front()));
- // break;
-
- case LONG:
- obj = PyInt_FromLong(* static_cast<LongType *>(front()));
- break;
-
- case STRING:
- st = * static_cast<StringType *>(front());
- obj = PyString_FromString(st.c_str());
- break;
-
- case COUPLE:
- cp = * static_cast<CoupleType *>(front());
-// tuple = PyTuple_New(2);
-// PyTuple_SetItem(tuple, 0, PyString_FromString( cp.getLocal().c_str() ) );
-// PyTuple_SetItem(tuple, 1, PyString_FromString( cp.getRemote().c_str() ) );
-// obj = PyList_New(0);
-// PyList_Append(obj, tuple);
- obj = Py_BuildValue("[(ss)]", cp.getLocal().c_str(), cp.getRemote().c_str() );
- break;
-
- case UNDEFINED:
- obj = Py_None;
- break;
- }
- }
-
- return obj;
- }
-
-
- // Operateur d'affectation a partir d'un objet Versatile
- PyVersatile & PyVersatile::operator =(const Versatile & V)
- {
- Versatile * me = this;
- *me = V;
- return *this;
- }
-
-}
-
-
-// COMMENTS
+++ /dev/null
-/*
- * PyVersatile.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Mon Oct 13 12:01:12 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _PYVERSATILE_H_
-#define _PYVERSATILE_H_
-
-
-#include <Python.h>
-#include "Batch_Versatile.hxx"
-#include "Batch_TypeMismatchException.hxx"
-#include "Batch_ListIsFullException.hxx"
-#include "Batch_InvalidArgumentException.hxx"
-using namespace std;
-
-namespace Batch {
-
- 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:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * RunTimeException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Nov 25 14:04:13 2003
- * Projet : Salome 2
- *
- */
-
-#include "Batch_RunTimeException.hxx"
-using namespace std;
-
-namespace Batch {
-
-}
+++ /dev/null
-/*
- * RunTimeException.hxx :
- *
- * Auteur : %author% - EDF R&D
- * Mail : mailto:ivan.dutka-malen@der.edf.fr
- * Date : Tue Nov 25 14:04:13 2003
- * Projet : Salome 2
- *
- */
-
-#ifndef _RUNTIMEEXCEPTION_H_
-#define _RUNTIMEEXCEPTION_H_
-
-
-#include "Batch_GenericException.hxx"
-
-namespace Batch {
-
- class RunTimeException : public GenericException
- {
- public:
- // Constructeur
- RunTimeException(std::string ch = "undefined") : GenericException("RunTimeException", ch) {}
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * StringType.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <string>
-#include <assert.h>
-#include "Batch_StringType.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Conversion en chaine
- string StringType::affiche() const
- {
- return _data;
- }
-
- // Operateur d'affectation
- StringType & StringType::operator =(string s)
- {
- _data = s;
- return *this;
- }
-
- // Conversion en chaine
- StringType::operator string() const
- {
- return this->_data;
- }
-
- // Clone duplique l'objet et en fabrique un nouveau a l'aide de new
- // qu'il faudra detruire ensuite manuellement
- GenericType * StringType::clone() const
- {
- StringType * pS = new StringType(this->_data);
- assert(pS != 0);
- return pS;
- }
-
-}
+++ /dev/null
-/*
- * StringType.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _STRINGTYPE_H_
-#define _STRINGTYPE_H_
-
-#include <string>
-#include "Batch_GenericType.hxx"
-
-namespace Batch {
-
- class StringType : public GenericType
- {
- public:
- // Constructeur
- StringType(const std::string & s="") : _data(s) {}
-
- // Conversion en chaine
- virtual std::string affiche() const;
- virtual operator std::string() const;
-
- // Operateur d'affectation
- virtual StringType & operator =(std::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:
- std::string _data;
-
- private:
-
- };
-
-}
-
-#endif
+++ /dev/null
-/*
- * TypeMismatchException.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include "Batch_TypeMismatchException.hxx"
-using namespace std;
-
-namespace Batch {
-
-}
+++ /dev/null
-/*
- * TypeMismatchException.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _TYPEMISMATCHEXCEPTION_H_
-#define _TYPEMISMATCHEXCEPTION_H_
-
-
-#include "Batch_GenericException.hxx"
-
-namespace Batch {
-
- class TypeMismatchException : public GenericException
- {
- public:
- // Constructeur
- TypeMismatchException(std::string ch = "undefined") : GenericException("TypeMismatchException", ch) {}
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * Versatile.cxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#include <iostream>
-#include <list>
-#include <string>
-#include <sstream>
-#include <assert.h>
-//#include "MEDMEM_STRING.hxx"
-#include "Batch_GenericType.hxx"
-#include "Batch_IntType.hxx"
-#include "Batch_BoolType.hxx"
-#include "Batch_CharType.hxx"
-#include "Batch_LongType.hxx"
-#include "Batch_StringType.hxx"
-#include "Batch_Versatile.hxx"
-#include "Batch_TypeMismatchException.hxx"
-#include "Batch_ListIsFullException.hxx"
-using namespace std;
-
-namespace Batch {
-
- // Constructeur par recopie
- Versatile::Versatile(const Versatile & V) : _discriminator(V._discriminator), _maxsize(V._maxsize), _name(V._name) // , _str_value(0)
- {
- Versatile::const_iterator it;
-
- // On prend un a un les elements de l'objet passe en argument qu'on duplique
- for(it=V.begin(); it!=V.end(); it++)
- push_back( (*it)->clone() ); // Attention, la methode clone fait un new implicite
- }
-
- // Destructeur
- Versatile::~Versatile()
- {
- eraseAll();
- }
-
- // Operateur d'affectation entre objets
- Versatile & Versatile::operator = (const Versatile & Vrhs) throw(TypeMismatchException)
- {
- // ATTENTION : le forçage de type leve une exception TypeMismatchException entre cas de conflit
- setType(Vrhs._discriminator);
- setMaxSize(Vrhs._maxsize);
- _name = Vrhs._name;
-
- // On efface les donnees precedentes
- eraseAll();
-
- // On copie les donnees de Vrhs
- Versatile::const_iterator it;
-
- for(it=Vrhs.begin(); it!=Vrhs.end(); it++)
- push_back( (*it)->clone() ); // Attention, la methode clone fait un new implicite
-
- return *this;
- }
-
- // Operateur d'affectation a partir d'un long
- Versatile & Versatile::operator = (const long l) throw(TypeMismatchException)
- {
- // ATTENTION : le forçage de type leve une exception TypeMismatchException entre cas de conflit
- setType(LONG);
-
- // On efface les donnees precedentes
- eraseAll();
-
- // On ajoute un element interne de type long a l'objet
- LongType * pL = new LongType(l);
- assert(pL != 0);
- push_back(pL);
- return *this;
- }
-
- // Operateur d'affectation a partir d'une string
- Versatile & Versatile::operator = (const string & ch) throw(TypeMismatchException)
- {
- // ATTENTION : le forçage de type leve une exception TypeMismatchException entre cas de conflit
- setType(STRING);
-
- // On efface les donnees precedentes
- eraseAll();
-
- // On ajoute un element interne de type string a l'objet
- StringType * pS = new StringType(ch);
- assert(pS != 0);
- push_back(pS);
-
- return *this;
- }
-
- // Operateur de concatenation a partir d'une string
- Versatile & Versatile::operator +=(const string & ch) throw(TypeMismatchException,ListIsFullException)
- {
- // ATTENTION : le forçage de type leve une exception TypeMismatchException entre cas de conflit
- setType(STRING);
-
- // Si la taille maximale est atteinte, on leve une exception ListIsFullException
- if (_maxsize == 0) push_back(new StringType(ch));
- else if ((_maxsize > 0) && (size() < _maxsize)) push_back(new StringType(ch));
- else {
- //MEDMEM::STRING msg;
- ostringstream msg;
- msg << "Taille maximum : " << _maxsize;
- throw(ListIsFullException(msg.str()));
- }
- return *this;
- }
-
- // Operateur de concatenation a partir d'une string
- Versatile & Versatile::operator , (const string & ch) throw(TypeMismatchException,ListIsFullException)
- {
- *this += ch;
- return *this;
- }
-
- // Operateur d'affectation a partir d'un Couple
- Versatile & Versatile::operator = (const Couple & cp) throw(TypeMismatchException)
- {
- // ATTENTION : le forçage de type leve une exception TypeMismatchException entre cas de conflit
- setType(COUPLE);
-
- // On efface les donnees precedentes
- eraseAll();
-
- // On ajoute un element interne de type Couple a l'objet
- CoupleType * pC = new CoupleType(cp);
- assert(pC != 0);
- push_back(pC);
-
- return *this;
- }
-
- // Operateur de concatenation a partir d'un Couple
- Versatile & Versatile::operator +=(const Couple & cp) throw(TypeMismatchException,ListIsFullException)
- {
- // ATTENTION : le forçage de type leve une exception TypeMismatchException entre cas de conflit
- setType(COUPLE);
-
- // Si la taille maximale est atteinte, on leve une exception ListIsFullException
- if (_maxsize == 0) push_back(new CoupleType(cp));
- else if ((_maxsize > 0) && (size() < _maxsize)) push_back(new CoupleType(cp));
- else {
- //MEDMEM::STRING msg;
- ostringstream msg;
- msg << "Taille maximum : " << _maxsize;
- throw(ListIsFullException(msg.str()));
- }
- return *this;
- }
-
- // Operateur de concatenation a partir d'un Couple
- Versatile & Versatile::operator , (const Couple & cp) throw(TypeMismatchException,ListIsFullException)
- {
- *this += cp;
- return *this;
- }
-
- ostream & operator << (ostream & os, const Versatile & V)
- {
- Versatile::const_iterator it;
- char * sep = "";
-
- for(it=V.begin(); it!=V.end(); it++, sep=" ") {
- string s = (*it)->affiche();
- os << sep << s;
- }
- return os;
- }
-
- // Positionnement du type de l'element interne
- void Versatile::setType(DiscriminatorType t) throw(TypeMismatchException)
- {
- // Si le type est deja defini et ne correspond pas au type en argument
- // une exception TypeMismatchException est levee
- if ( (_discriminator == UNDEFINED) || (_discriminator == t) )
- _discriminator = t;
- else {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << "Trying to change type of Versatile object \""
- << _name << "\"";
- throw(TypeMismatchException(sst.str()));
- }
- }
-
- // Positionnement du nombre d'elements internes
- void Versatile::setMaxSize(int i)
- {
- _maxsize = i;
- if (i <= 0) return;
- // Si la nouvelle taille est inferieure au nombre d'elements deja
- // presents, les elements en surplus sont effaces (troncature)
- if (size() > _maxsize)
- {
- int reste = size() - _maxsize;
- Versatile::iterator it;
- for(it=end(); (it!=begin()) && reste; it--, reste--)
- {
- delete back();
- pop_back();
- }
- }
- }
-
-
- // Conversion de type vers un long
- Versatile::operator long() const throw(TypeMismatchException)
- {
- // Si le type ne correspond pas ou si la liste contient plus d'un element,
- // la conversion est impossible et une exception TypeMismatchException
- // est levee
- if ( (_maxsize != 1) || (_discriminator != LONG) || (size() == 0) ) {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << "Cannot cast Versatile object \""
- << _name << "\" to long";
- throw(TypeMismatchException(sst.str()));
- }
- return *( static_cast<LongType *>(this->front()) );
- }
-
- // Conversion de type vers un Couple
- Versatile::operator Couple() const throw(TypeMismatchException)
- {
- // Si le type ne correspond pas ou si la liste contient plus d'un element,
- // la conversion est impossible et une exception TypeMismatchException
- // est levee
- if ( (_maxsize != 1) || (_discriminator != COUPLE) || (size() == 0) ) {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << "Cannot cast Versatile object \""
- << _name << "\" to Couple";
- throw(TypeMismatchException(sst.str()));
- }
- return *( static_cast<CoupleType *>(this->front()) );
- }
-
- // Conversion de type vers une string
- string Versatile::str() const throw(TypeMismatchException)
- {
- // Si le type ne correspond pas, la conversion est impossible et
- // une exception TypeMismatchException est levee
- if ( (_discriminator != STRING) || (size() == 0) ) {
- //MEDMEM::STRING sst;
- ostringstream sst;
- sst << "Cannot cast Versatile object \""
- << _name << "\" to string";
- throw(TypeMismatchException(sst.str()));
- }
-
- // La chaine renvoyee est la concatenation des chaines internes
- string s;
- Versatile::const_iterator it;
- const char * sep = "";
- for(it=begin(); it!=end(); it++, s+=sep, sep=" ")
- s += *( static_cast<StringType *>(*it));
-
- return s;
- }
-
- // Conversion de type vers une string
- Versatile::operator string () const throw(TypeMismatchException)
- {
- return str();
- }
-
- // Efface tous les elements internes de l'objet
- void Versatile::eraseAll()
- {
- while(!empty())
- {
- delete back();
- pop_back();
- }
- }
-
-
- // Recuperation du type de l'element interne
- DiscriminatorType Versatile::getType() const
- {
- return _discriminator;
- }
-
- // Recuperation du nom de l'objet
- string Versatile::getName() const
- {
- return _name;
- }
-
- // Positionnement du nom de l'objet
- void Versatile::setName(const string & name)
- {
- _name = name;
- }
-}
+++ /dev/null
-/*
- * Versatile.hxx :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-#ifndef _VERSATILE_H_
-#define _VERSATILE_H_
-
-#include <iostream>
-#include <list>
-#include <string>
-#include "Batch_GenericType.hxx"
-#include "Batch_IntType.hxx"
-#include "Batch_BoolType.hxx"
-#include "Batch_CharType.hxx"
-#include "Batch_LongType.hxx"
-#include "Batch_StringType.hxx"
-#include "Batch_CoupleType.hxx"
-#include "Batch_TypeMismatchException.hxx"
-#include "Batch_ListIsFullException.hxx"
-
-namespace Batch {
-
- // Les types autorises
- // enum DiscriminatorType { UNDEFINED, BOOL, CHAR, INT, LONG, STRING};
- 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 std::list< GenericType * >
- {
- public:
- // Constructeur standard et destructeur
- Versatile() : _discriminator(UNDEFINED), _maxsize(1), _name("undefined") {}
- virtual ~Versatile();
-
- // Constructeur par recopie
- Versatile(const Versatile & V);
-
- // Constructeur depuis le type de "base"
- Versatile(long l) : _discriminator(LONG), _maxsize(1), _name("long") { push_back(new LongType(l)); }
- Versatile(const std::string & s) : _discriminator(STRING), _maxsize(1), _name("string") { push_back(new StringType(s)); }
- Versatile(const Couple & c) : _discriminator(COUPLE), _maxsize(1), _name("couple") { push_back(new CoupleType(c)); }
-
- // Operateur d'affectation et de concatenation a partir d'un type de "base"
- Versatile & operator = (const long l) throw(TypeMismatchException);
- Versatile & operator = (const std::string & ch) throw(TypeMismatchException);
- Versatile & operator +=(const std::string & ch) throw(TypeMismatchException,ListIsFullException);
- Versatile & operator , (const std::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 std::string() const throw(TypeMismatchException);
- operator Couple() const throw(TypeMismatchException);
- std::string str() const throw(TypeMismatchException);
-
- // Operateur pour l'affichage sur un stream
- friend std::ostream & operator << (std::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 { return _maxsize; }
-
- // Positionnement et recuperation du nom de l'objet
- std::string getName() const;
- void setName(const std::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
- std::string _name; // nom de l'objet (sert pour les exceptions)
-
- private:
-
- };
-
-}
-
-#endif
-
+++ /dev/null
-/*
- * libBatch_Swig.i :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-/* ATTENTION:
- ==========
- Certaines classes ont des methodes surchargees et SWIG ne gere pas bien
- ces surcharges, d'ou un probleme d'utilisation en Python de celles-ci.
- En bref, ça ne marche pas et il faudra corriger le probleme...
-
- TODO : corriger le probleme de surcharge des methodes en Python
-
- IDM.
-*/
-
-
-/* Le nom du module Python tel qu'il est importe */
-%module libBatch_Swig
-
-/* Inclusion des conversions de type */
-%include libBatch_Swig_typemap.i
-
-/* Inclusion de la gestion des exceptions */
-%include libBatch_Swig_exception.i
-
-%{
-#include "Batch_Job.hxx"
-#include "Batch_JobId.hxx"
-#include "Batch_JobInfo.hxx"
-
-#include "Batch_BatchManager.hxx"
-#include "Batch_BatchManagerCatalog.hxx"
-#include "Batch_FactBatchManager.hxx"
-%}
-
-/* Les classes exportees en Python */
-%include Batch_Job.hxx
-%include Batch_JobId.hxx
-%include Batch_JobInfo.hxx
-
-%include Batch_BatchManager.hxx
-%include Batch_BatchManagerCatalog.hxx
-%include Batch_FactBatchManager.hxx
-
-
-
-/* Les methodes alterJob (surchargees et mal gerees en Python) sont
- remplacees par des methodes setParametre et setEnvironnement.
- cf. remarque ci-dessus.
-*/
-%ignore JobId::alterJob(const Parametre & param, const Environnement & env) const;
-%ignore JobId::alterJob(const Parametre & param) const;
-%ignore JobId::alterJob(const Environnement & env) const;
+++ /dev/null
-/*
- * _exception.i :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-%exception {
- try {
- $action
- }
- catch (Batch::GenericException & ex) {
- std::string msg = ex.type + " : " + ex.message;
- PyErr_SetString(PyExc_RuntimeWarning, msg.c_str());
- return NULL;
- }
- catch (...) {
- PyErr_SetString(PyExc_RuntimeWarning, "unknown exception");
- return NULL;
- }
-}
-
+++ /dev/null
-/*
- * _typemap.i :
- *
- * Auteur : Ivan DUTKA-MALEN - EDF R&D
- * Date : Septembre 2003
- * Projet : SALOME 2
- *
- */
-
-%{
-#include <string>
-#include <list>
-#include <map>
-#include "Batch_Parametre.hxx"
-#include "Batch_PyVersatile.hxx"
-#include "Batch_JobId.hxx"
-#include "Batch_FactBatchManager.hxx"
-%}
-
-# // supprime toutes les definitions par defaut => sert au debug
-# %typemap(in) SWIGTYPE ;
-
-
-# // construction d'un dictionnaire Python a partir d'un objet BatchManagerCatalog C++
-%typemap(out) std::map<std::string, Batch::FactBatchManager *> *
-{
- $result = PyDict_New();
-
- // on itere sur toutes les clefs de la map
- for(std::map<std::string, Batch::FactBatchManager *>::const_iterator it=(* $1).begin(); it!=(* $1).end(); it++) {
- std::string key = (*it).first;
- PyObject * obj = SWIG_NewPointerObj((void *) (*it).second, SWIGTYPE_p_Batch__FactBatchManager, 0);
- PyDict_SetItem($result, PyString_FromString(key.c_str()), obj);
- }
-}
-
-
-# // construction d'un dictionnaire Python a partir d'un objet Parametre C++
-%typemap(out) Batch::Parametre
-{
- $result = PyDict_New();
-
- // on itere sur toutes les clefs de la map, et on passe par la classe PyVersatile
- // qui convertit un Versatile en PyObject et vice versa
- for(Batch::Parametre::const_iterator it=$1.begin(); it!=$1.end(); it++) {
- std::string key = (*it).first;
- Batch::PyVersatile PyV = (*it).second;
- PyDict_SetItem($result, PyString_FromString(key.c_str()), PyV);
- }
-}
-
-
-# // construction d'un objet Parametre C++ a partir d'un dictionnaire Python
-%typemap(in) Batch::Parametre & (Batch::Parametre PM)
-{
- if (!PyDict_Check($input)) {
- PyErr_SetString(PyExc_ValueError,"Expected a dictionnary");
- return NULL;
- }
-
- try {
- // on itere sur toutes les clefs du dictionnaire, et on passe par la classe PyVersatile
- // qui convertit un Versatile en PyObject et vice versa
- PyObject *key, *value;
- int pos = 0;
- while (PyDict_Next($input, &pos, &key, &value)) {
- std::string mk = PyString_AsString(key);
- Batch::PyVersatile PyV = value;
- PyV.setName(mk);
- PM[mk] = PyV;
- }
-
- $1 = &PM; // $1 est une reference donc on lui passe une adresse
- }
- catch (Batch::GenericException & ex) {
- std::string msg = ex.type + " : " + ex.message;
- PyErr_SetString(PyExc_RuntimeWarning, msg.c_str());
- return NULL;
- }
- catch (...) {
- PyErr_SetString(PyExc_RuntimeWarning, "unknown exception");
- return NULL;
- }
-}
-
-
-# // construction d'un objet Parametre C++ a partir d'un dictionnaire Python
-%typemap(in) Batch::Parametre (Batch::Parametre PM)
-{
- if (!PyDict_Check($input)) {
- PyErr_SetString(PyExc_ValueError,"Expected a dictionnary");
- return NULL;
- }
-
- try {
- // on itere sur toutes les clefs du dictionnaire, et on passe par la classe PyVersatile
- // qui convertit un Versatile en PyObject et vice versa
- PyObject *key, *value;
- int pos = 0;
- while (PyDict_Next($input, &pos, &key, &value)) {
- std::string mk = PyString_AsString(key);
- Batch::PyVersatile PyV = value;
- PyV.setName(mk);
- PM[mk] = PyV;
- }
-
- $1 = PM;
- }
- catch (Batch::GenericException & ex) {
- std::string msg = ex.type + " : " + ex.message;
- PyErr_SetString(PyExc_RuntimeWarning, msg.c_str());
- return NULL;
- }
- catch (...) {
- PyErr_SetString(PyExc_RuntimeWarning, "unknown exception");
- return NULL;
- }
-}
-
-
-# // construction d'un dictionnaire Python a partir d'un objet Environnement C++
-%typemap(out) Batch::Environnement
-{
- $result = PyDict_New();
-
- // on itere sur toutes les clefs de la map
- for(Batch::Environnement::const_iterator it=$1.begin(); it!=$1.end(); it++) {
- std::string key = (*it).first;
- std::string val = (*it).second;
- PyDict_SetItem($result,
- PyString_FromString(key.c_str()),
- PyString_FromString(val.c_str()));
- }
-}
-
-
-# // construction d'un objet Environnement C++ a partir d'un dictionnaire Python
-%typemap(in) Batch::Environnement & (Batch::Environnement E)
-{
- if (!PyDict_Check($input)) {
- PyErr_SetString(PyExc_ValueError,"Expected a dictionnary");
- return NULL;
- }
-
- // on itere sur toutes les clefs du dictionnaire
- PyObject *key, *value;
- int pos = 0;
- while (PyDict_Next($input, &pos, &key, &value)) {
- std::string mk = PyString_AsString(key);
- std::string val = PyString_AsString(value);
- E[mk] = val;
- }
-
- $1 = &E; // $1 est une reference donc on lui passe une adresse
-}
-
-
-
-# // construction d'un objet Environnement C++ a partir d'un dictionnaire Python
-%typemap(in) Batch::Environnement (Batch::Environnement E)
-{
- if (!PyDict_Check($input)) {
- PyErr_SetString(PyExc_ValueError,"Expected a dictionnary");
- return NULL;
- }
-
- // on itere sur toutes les clefs du dictionnaire
- PyObject *key, *value;
- int pos = 0;
- while (PyDict_Next($input, &pos, &key, &value)) {
- std::string mk = PyString_AsString(key);
- std::string val = PyString_AsString(value);
- E[mk] = val;
- }
-
- $1 = E;
-}
-
-
-
-# // construction d'une string Python a partir d'une string STL
-%typemap(python,out) std::string
-{
- $result = PyString_FromString($1.c_str());
-}
-
-
-
-# // construction d'une string STL a partir d'une string Python
-#%typemap(in) string & (string S)
-#{
-## if (!PyString_Check($input)) {
-# PyErr_SetString(PyExc_ValueError,"Expected a string");
-# return NULL;
-# }
-#
-# S = string(PyString_AsString($input));
-# $1 = &S; // $1 est une reference donc on lui passe une adresse
-#}
-
-
-
-# // construction d'une string STL a partir d'une string Python
-#%typemap(in) string (string S)
-#{
-## if (!PyString_Check($input)) {
-# PyErr_SetString(PyExc_ValueError,"Expected a string");
-# return NULL;
-# }
-#
-# S = string(PyString_AsString($input));
-# $1 = S;
-#}
+++ /dev/null
-#include "CASCatch_CatchSignals.hxx"
-
-#include "CASCatch_Failure.hxx"
-#include "CASCatch_ErrorHandler.hxx"
-#include <TCollection_AsciiString.hxx>
-
-#define MAX_HANDLER_NUMBER 6
-
-
-//================================================================================
-/*! Public -
- * \brief creates a CASCatch_CatchSignals
- */
-//================================================================================
-CASCatch_CatchSignals::CASCatch_CatchSignals()
- :myIsActivated(Standard_False)
-{
-
- Standard_Integer i = 0;
- for(; i<=MAX_HANDLER_NUMBER; i++)
- mySigStates[i] = NULL;
-}
-
-#ifndef WNT
-
-//================================ UNIX part ==================================================
-
-#include <OSD.hxx>
-#include <OSD_WhoAmI.hxx>
-#include <OSD_SIGHUP.hxx>
-#include <OSD_SIGINT.hxx>
-#include <OSD_SIGQUIT.hxx>
-#include <OSD_SIGILL.hxx>
-#include <OSD_SIGKILL.hxx>
-#include <OSD_SIGBUS.hxx>
-#include <OSD_SIGSEGV.hxx>
-#include <OSD_SIGSYS.hxx>
-#ifndef LIN
-#include <exception.h>
-#endif
-
-//==============================
-typedef void (ACT_SIGIO_HANDLER)(void) ;
-
-ACT_SIGIO_HANDLER *ADR_ACT_SIGIO_HANDLER = NULL ;
-
-typedef void (* SIG_PFV) (int);
-
-#ifdef SUN
-# include <floatingpoint.h>
-#endif
-
-#ifdef SOLARIS
-# include <floatingpoint.h>
-# include <sys/machsig.h>
-# include <stdlib.h>
-# include <stdio.h>
-#endif
-
-#include <signal.h>
-#include <sys/signal.h>
-
-#ifdef LIN
-# include <stdlib.h>
-# include <stdio.h>
-#else
-# ifdef SA_SIGINFO
-# ifndef AIX
-# include <sys/siginfo.h>
-# endif
-# endif
-#endif
-
-
-#ifdef IRIX
-# include <sigfpe.h>
-# include <sys/siginfo.h>
-#endif
-
-
-//================================================================================
-/*! Private -
- * \brief universal handler for signals
- */
-//================================================================================
-static void Handler(const OSD_Signals theSig, const OSD_Signals)
-{
- sigset_t set;
- sigemptyset(&set);
- sigaddset(&set, theSig);
- sigprocmask(SIG_UNBLOCK, &set, NULL) ;
-
- TCollection_AsciiString aMessage(theSig);
- aMessage+=" signal detected";
-
- CASCatch_Failure::Raise(aMessage.ToCString());
-}
-
-
-#ifdef SA_SIGINFO
-//================================================================================
-/*! Private -
- * \brief handler for SIGSEGV signal
- */
-//================================================================================
-static void SegvHandler(const OSD_Signals, const Standard_Address, const Standard_Address)
-{
- sigset_t set;
- sigemptyset(&set);
- sigaddset(&set, SIGSEGV);
- sigprocmask (SIG_UNBLOCK, &set, NULL);
-
- CASCatch_Failure::Raise("SIGSEGV detected");
-}
-#endif
-
-
-//================================================================================
-/*! Public -
- * \brief activates a signals handling
- */
-//================================================================================
-void CASCatch_CatchSignals::Activate()
-{
- if(myIsActivated) return;
-
- struct sigaction act;
-
- Standard_Integer i = 0;
- for(; i<=MAX_HANDLER_NUMBER; i++)
- mySigStates[i] = new struct sigaction(); //Initialize structures
-
- int stat;
- act.sa_handler = (SIG_PFV) &Handler ;
- sigemptyset(&act.sa_mask) ;
-
-
- stat = sigaction(SIGHUP,&act,(struct sigaction*)mySigStates[0]); // ...... hangup
- stat = sigaction(SIGFPE,&act,(struct sigaction*) mySigStates[1]); // ...... floating point exception
- stat = sigaction(SIGINT,&act,(struct sigaction*)mySigStates[2]); // ...... interrupt
- stat = sigaction(SIGQUIT,&act,(struct sigaction*)mySigStates[3]); // ...... quit
- stat = sigaction(SIGBUS,&act,(struct sigaction*)mySigStates[4]); // ...... bus error
- stat = sigaction(SIGILL,&act,(struct sigaction*)mySigStates[5]); // ...... illegal instruction
-
-#ifdef SA_RESTART
- act.sa_flags = SA_RESTART ;
-#else
- act.sa_flags = 0 ;
-#endif
- act.sa_handler = (SIG_PFV) &SegvHandler ;
-
-#ifdef SA_SIGINFO // OSF,SOLARIS,IRIX
- act.sa_flags = act.sa_flags | SA_SIGINFO ;
-# ifdef SOLARIS
- act.sa_sigaction = (void(*)(int, siginfo_t *, void*)) &SegvHandler ;
-# endif
-#endif
-
- stat = sigaction( SIGSEGV , &act , (struct sigaction*)mySigStates[6]); // ...... segmentation violation
-
- myIsActivated = Standard_True;
-}
-
-
-//================================================================================
-/*! Public -
- * \brief deactivates a signals handling
- */
-//================================================================================
-void CASCatch_CatchSignals::Deactivate()
-{
- if(!myIsActivated) return;
-
- struct sigaction oact;
- int stat;
-
- stat = sigaction(SIGHUP,(struct sigaction*)mySigStates[0],&oact); // ...... hangup
- stat = sigaction(SIGFPE,(struct sigaction*)mySigStates[1],&oact); // ...... floating point exception
- stat = sigaction(SIGINT,(struct sigaction*)mySigStates[2],&oact); // ...... interrupt
- stat = sigaction(SIGQUIT,(struct sigaction*)mySigStates[3],&oact); // ...... quit
- stat = sigaction(SIGBUS,(struct sigaction*)mySigStates[4],&oact); // ...... bus error
- stat = sigaction(SIGILL,(struct sigaction*)mySigStates[5],&oact); // ...... illegal instruction
- stat = sigaction(SIGSEGV,(struct sigaction*)mySigStates[6],&oact); // ...... segmentation violation
-
-
- Standard_Integer i = 0;
- for(; i<=MAX_HANDLER_NUMBER; i++)
- delete (struct sigaction*)mySigStates[i];
-
- myIsActivated = Standard_False;
-}
-
-
-
-#else
-//====================================== WNT part ====================================================
-#include <OSD_WNT_1.hxx>
-
-#include <process.h>
-#include <signal.h>
-#include <float.h>
-
-#define _OSD_FPX ( _EM_DENORMAL | _EM_INEXACT | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_OVERFLOW) //Mask these exceptions
-
-//================================================================================
-/*! Private -
- * \brief handler for unexpected exceptions
- */
-//================================================================================
-static Standard_Integer WntHandler(const Standard_Address theExceptionInfo)
-{
- LPEXCEPTION_POINTERS lpXP = ( LPEXCEPTION_POINTERS )theExceptionInfo;
- DWORD dwExceptionCode = lpXP -> ExceptionRecord -> ExceptionCode;
-
- TCollection_AsciiString aMessage((Standard_Integer)dwExceptionCode);
- aMessage+=" Exception code - unexpected exception";
-
- CASCatch_Failure::Raise(aMessage.ToCString());
-
- return EXCEPTION_EXECUTE_HANDLER;
-}
-
-void SIGWntHandler(int , int ) ;
-static void (*SIGWNTHANDLER)(int) = ( void (*)(int) ) ( &SIGWntHandler ) ;
-
-
-//================================================================================
-/*! Private -
- * \brief handler for signals
- */
-//================================================================================
-static void SIGWntHandler(const int signum , const int theCode)
-{
-
- void (*OLDSIGWNTHANDLER)(int) ;
- switch( signum ) {
- case SIGFPE :
- _fpreset() ;
- _clearfp() ;
- _controlfp ( _OSD_FPX, _MCW_EM );
- OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
-
- if(theCode == _FPE_UNDERFLOW || theCode == _FPE_INEXACT) return;
- CASCatch_Failure::Raise ("Floating point error");
- break;
- case SIGSEGV :
- OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
- CASCatch_Failure::Raise("Access violation");
- break;
- case SIGILL :
- OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
- CASCatch_Failure::Raise("Illegal instruction" );
- break;
- }
-}
-
-
-//================================================================================
-/*! Public -
- * \brief activates a signals handling
- */
-//================================================================================
-void CASCatch_CatchSignals::Activate()
-{
- if(myIsActivated) return;
-
- mySigStates[0] = SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )&WntHandler);
-
- myFloatOpWord = _controlfp(0, 0);
- _controlfp ( _OSD_FPX, _MCW_EM ); //Enable floating point exceptions
-
- mySigStates[1] = signal( SIGSEGV , SIGWNTHANDLER );
- mySigStates[2] = signal( SIGFPE , SIGWNTHANDLER );
- mySigStates[3] = signal( SIGILL , SIGWNTHANDLER );
-
- myIsActivated = Standard_True;
-}
-
-//================================================================================
-/*! Public -
- * \brief deactivates a signals handling
- */
-//================================================================================
-void CASCatch_CatchSignals::Deactivate()
-{
- if(!myIsActivated) return;
-
- SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )mySigStates[0]);
-
- _controlfp ( myFloatOpWord, _MCW_EM );
-
- signal( SIGSEGV , ( void (*)(int) )mySigStates[1]);
- signal( SIGFPE , ( void (*)(int) )mySigStates[2]);
- signal( SIGILL , ( void (*)(int) )mySigStates[3]);
-
- Standard_Integer i = 0;
- for(; i<=MAX_HANDLER_NUMBER; i++)
- mySigStates[i] = NULL;
-
- myIsActivated = Standard_False;
-}
-
-#endif
-
-//================================================================================
-/*! Private -
- * \brief deactivates a signals handling
- */
-//================================================================================
-void CASCatch_CatchSignals::Destroy()
-{
- if(myIsActivated) Deactivate();
-}
-
+++ /dev/null
-
-#ifndef _CASCatch_CatchSignals_HeaderFile
-#define _CASCatch_CatchSignals_HeaderFile
-
-#include <Standard.hxx>
-
-/*!
- * \class CASCatch_CatchSignals
- * \brief This class controls an exception handling
- *
- */
-class CASCatch_CatchSignals {
-
-public:
-
- // Methods PUBLIC
- //
-Standard_EXPORT CASCatch_CatchSignals();
-Standard_EXPORT void Destroy() ;
-~CASCatch_CatchSignals() { Destroy(); }
-Standard_EXPORT void Activate() ;
-Standard_EXPORT void Deactivate() ;
-
-private:
-
-/*!\var mySigStates[7], private
- * \brief stores signals' handler functions
- */
-Standard_Address mySigStates[7];
-
-/*!\var myFloatOpWord
- * \brief stores a float operation word, private
- */
-Standard_Integer myFloatOpWord;
-
-/*!\var myIsActivated
- * \brief stores a flag whether a catcher is activated, private]
- */
-Standard_Boolean myIsActivated;
-
-};
-
-
-#endif
+++ /dev/null
-
-#ifdef NO_CXX_EXCEPTION
-
-#include "CASCatch_ErrorHandler.hxx"
-
-// During setjmp()/longjmp() K_SETJMP_CASCatch is non zero (try)
-// So if there is an abort request and if K_SETJMP_CASCatch is non zero, the abort
-// request will be ignored. If the abort request do a raise during a setjmp
-// or a longjmp, there will be a "terminating SEGV" impossible to handle.
-
-
-Standard_EXPORT int K_SETJMP_CASCatch = 0 ;
-
-static Handle(CASCatch_Failure) GlbError; //Last caught Error, Null if there is no error
-
-static CASCatch_ErrorHandler* Top = 0; //The top of the Errors Stack
-
-//=======================================================================
-//function : CASCatch_ErrorHandler
-//purpose : Constructor
-//=======================================================================
-CASCatch_ErrorHandler::CASCatch_ErrorHandler ()
-{
- Previous = Top;
- Top = this;
- CaughtError.Nullify();
- GlbError.Nullify();
-}
-
-//=======================================================================
-//function : ~CASCatch_ErrorHandler
-//purpose : Destructor : Delete the ErrorHandler and Abort if there is a 'Error'.
-//=======================================================================
-CASCatch_ErrorHandler::~CASCatch_ErrorHandler()
-{
- Top = Top->Previous;
- if( !GlbError.IsNull() ) Abort();
-}
-
-//=======================================================================
-//function : Abort: make a longjmp to the saved Context.
-//purpose : Abort if there is a non null 'Error'
-//=======================================================================
-void CASCatch_ErrorHandler::Abort ()
-{
- //==== Check if can do the "longjmp" =======================================
- if(Top == NULL || Top->Label == NULL) {
- cout << "*** Abort *** an exception was raised, but no catch was found." << endl;
- cout << "\t... The exception is:" << GlbError;
- exit(1);
- }
-
-#ifdef DO_ABORT
- if ( K_SETJMP_CASCatch )
- cout << "Recursive abort ===> Terminating SEGV ..." << endl ;
- K_SETJMP_CASCatch = 1 ;
-#endif
-
- longjmp(Top->Label, Standard_True);
-}
-
-//=======================================================================
-//function : Catches
-//purpose : If there is a 'Error', and it is in good type
-// returns True and clean 'Error', else returns False.
-//=======================================================================
-Standard_Boolean CASCatch_ErrorHandler::Catches
- (const Handle(Standard_Type)& AType)
-{
-#ifdef DO_ABORT
- K_SETJMP_CASCatch = 0 ;
-#endif
- if(GlbError.IsNull())
- return Standard_False;
-
- if(GlbError->IsKind(AType)){
- CaughtError = GlbError;
- GlbError.Nullify();
- return Standard_True;
- } else {
- return Standard_False;
- }
-}
-
-//=======================================================================
-//function : LastCaughtError
-//purpose :
-//=======================================================================
-Handle(CASCatch_Failure) CASCatch_ErrorHandler::LastCaughtError()
-{
- return Top->CaughtError;
-}
-
-//=======================================================================
-//function : Error
-//purpose :
-//=======================================================================
-void CASCatch_ErrorHandler::Error(const Handle(CASCatch_Failure)& aError)
-{
- GlbError = aError;
-}
-
-#endif
+++ /dev/null
-
-#ifndef _CASCatch_ErrorHandler_HeaderFile
-#define _CASCatch_ErrorHandler_HeaderFile
-
-#include "CASCatch_Failure.hxx"
-
-#include <stdlib.h>
-#include <setjmp.h>
-
-
-extern int K_SETJMP_CASCatch ;
-
-/*!
- * \class CASCatch_ErrorHandler
- * \brief This class is an exception handler, private
- *
- */
-class CASCatch_ErrorHandler
-{
- friend class CASCatch_Failure; // To execute the raise exception.
-
- public:
-
- Standard_EXPORT CASCatch_ErrorHandler();
- Standard_EXPORT ~CASCatch_ErrorHandler();
- Standard_EXPORT Standard_Boolean Catches (const Handle(Standard_Type)&);
-
- private:
- Standard_EXPORT static void Abort();
- Standard_EXPORT static void Error(const Handle(CASCatch_Failure)&);
- Standard_EXPORT static Handle(CASCatch_Failure) LastCaughtError();
-
- //==== The fields ===========================================================
- private:
- CASCatch_ErrorHandler* Previous;
- Handle(CASCatch_Failure) CaughtError;
-
- public:
- jmp_buf Label;
-
-};
-
-#undef CASCatch_TRY
-#define CASCatch_TRY try
-
-#undef CASCatch_CATCH
-#define CASCatch_CATCH catch
-
-
-#ifdef NO_CXX_EXCEPTION
-# undef CASCatch_TRY
-# undef CASCatch_CATCH
-
-# if defined(DO_ABORT)
-
-# define DoesNotAbort_CASCatch(aHandler) !(K_SETJMP_CASCatch = setjmp(aHandler.Label))
-
-# define CASCatch_TRY CASCatch_ErrorHandler _Function; \
- K_SETJMP_CASCatch = 1 ; \
- if(DoesNotAbort_CASCatch(_Function))
-
-# else //If DO_ABORT is not defined
-# define DoesNotAbort_CASCatch(aHandler) !setjmp(aHandler.Label)
-
-# define CASCatch_TRY CASCatch_ErrorHandler _Function; \
- if(DoesNotAbort_CASCatch(_Function))
-# endif //DO_ABORT
-
-
-# define CASCatch_CATCH(Error) else if(_Function.Catches(STANDARD_TYPE(Error)))
-#endif //NO_CXX_EXCEPTION
-
-#endif //_CASCatch_ErrorHandler_HeaderFile
+++ /dev/null
-#include "CASCatch_Failure.hxx"
-#include "CASCatch_ErrorHandler.hxx"
-#include <Standard_TypeMismatch.hxx>
-#include <Standard_Type.hxx>
-#include <string.h>
-
-IMPLEMENT_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
-IMPLEMENT_STANDARD_RTTIEXT( CASCatch_Failure, Standard_Transient )
-
-
-#ifndef NO_CXX_EXCEPTION
-static Handle(CASCatch_Failure) RaisedError;
-#endif
-
-//================================================================================
-/*! Public -
- * \brief creates a CASCatch_Failure
- */
-//================================================================================
-CASCatch_Failure::CASCatch_Failure () { myMessage = "Signal detected";}
-
-
-//================================================================================
-/*! Public -
- * \brief creates a CASCatch_Failure with a message
- * \param an exception message
- */
-//================================================================================
-CASCatch_Failure::CASCatch_Failure (const Standard_CString AString)
-{
- if(AString) {
- myMessage = new Standard_Character[strlen(AString) + 1];
- strcpy(myMessage,AString);
- }
-}
-
-//================================================================================
-/*! Public -
- * \brief returns the last caught exception
- */
-//================================================================================
-Handle(CASCatch_Failure) CASCatch_Failure::Caught()
-{
-#ifdef NO_CXX_EXCEPTION
- return CASCatch_ErrorHandler::LastCaughtError();
-#else
- return RaisedError ;
-#endif
-}
-
-//================================================================================
-/*! Public -
- * \brief raises a CASCatch_Failure exception
- * \param an exception message
- */
-//================================================================================
-void CASCatch_Failure::Raise (const Standard_CString AString)
-{
- Handle(CASCatch_Failure) E = new CASCatch_Failure() ;
- E->Reraise (AString) ;
-}
-
-
-//================================================================================
-/*! Public -
- * \brief re-raises a CASCatch_Failure exception
- * \param an exception message
- */
-//================================================================================
-void CASCatch_Failure::Reraise (const Standard_CString AString)
-{
- if(AString){
- myMessage = new Standard_Character[strlen(AString) + 1];
- strcpy(myMessage,AString);
- }
-
-#ifdef NO_CXX_EXCEPTION
- CASCatch_ErrorHandler::Error(this) ;
- CASCatch_ErrorHandler::Abort();
-#else
- RaisedError = this ;
- Throw() ;
-#endif
-}
-
-//================================================================================
-/*! Public -
- * \brief returns an exception message
- */
-//================================================================================
-Standard_CString CASCatch_Failure::GetError() const
-{
- return myMessage;
-}
-
-//================================================================================
-/*! Public -
- * \brief Is called when using standard C++ exceptions
- */
-//================================================================================
-void CASCatch_Failure::Throw() const
-{
-#ifndef NO_CXX_EXCEPTION
- throw CASCatch_Failure() ;
-#endif
-}
-
+++ /dev/null
-#ifndef _CASCATCH_FAILURE_HeaderFile
-#define _CASCATCH_FAILURE_HeaderFile
-
-#include <Standard_Transient.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
-
-#include <Standard.hxx>
-
-/*!
- * \class CASCatch_Failure
- * \brief This class presents an exception to be thrown
- *
- */
-class CASCatch_Failure : public Standard_Transient
-{
-
-public:
-
-Standard_EXPORT CASCatch_Failure();
-Standard_EXPORT CASCatch_Failure(const Standard_CString aString);
-Standard_EXPORT void Reraise(const Standard_CString aMessage) ;
-Standard_EXPORT Standard_CString GetError() const;
-Standard_EXPORT static Handle_CASCatch_Failure Caught() ;
-Standard_EXPORT static void Raise(const Standard_CString aMessage = "") ;
-Standard_EXPORT virtual void Throw() const;public:
-
-public:
-
-DEFINE_STANDARD_RTTI( CASCatch_Failure )
-
-private:
-/*!\var myMessage
- * \brief stores an exception message
- */
-Standard_CString myMessage;
-
-};
-
-
-#endif
+++ /dev/null
-# File : Makefile.in
-# Author : Sergey RUIN (OCN)
-# Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
-
-
-@COMMENCE@
-
-# header files
-EXPORT_HEADERS= CASCatch_Failure.hxx \
- CASCatch_CatchSignals.hxx \
- CASCatch_ErrorHandler.hxx
-
-# Libraries targets
-LIB = libCASCatch.la
-
-LIB_SRC = CASCatch_Failure.cxx \
- CASCatch_ErrorHandler.cxx \
- CASCatch_CatchSignals.cxx
-
-CPPFLAGS += $(OCC_INCLUDES)
-CXXFLAGS += $(OCC_CXXFLAGS)
-LDFLAGS+= $(CAS_KERNEL)
-
-@CONCLUDE@
-
-
+++ /dev/null
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS =
-
-EXPORT_HEADERS = \
- ReceiverFactory.hxx \
- SenderFactory.hxx \
- SALOMEMultiComm.hxx \
- MultiCommException.hxx
-# Libraries targets
-
-LIB = libSalomeCommunication.la
-LIB_SRC = SALOME_Comm_i.cxx SenderFactory.cxx MultiCommException.cxx SALOMEMultiComm.cxx ReceiverFactory.cxx
-LIB_SERVER_IDL = SALOME_Comm.idl SALOME_Exception.idl
-
-# Executables targets
-BIN =
-BIN_SRC =
-BIN_SERVER_IDL =
-
-CPPFLAGS+= $(PYTHON_INCLUDES) $(MPI_INCLUDES)
-
-LDFLAGS+= -lOpUtil -lSALOMELocalTrace
-
-LIBS += -Xlinker -export-dynamic $(PYTHON_LIBS) $(MPI_LIBS)
-
-@CONCLUDE@
+++ /dev/null
-#include "MultiCommException.hxx"
-using namespace std;
-
-MultiCommException::MultiCommException(const char *message)
-{
- _message=message;
-}
-
-const char *MultiCommException::what() const
-{
- return _message.c_str();
-}
+++ /dev/null
-#ifndef _MULTICOMMEXCEPTION_HXX_
-#define _MULTICOMMEXCEPTION_HXX_
-
-#include <string>
-
-#if defined WNT && defined COMMUNICATION_EXPORTS
-#define COMMUNICATION_EXPORT __declspec( dllexport )
-#else
-#define COMMUNICATION_EXPORT
-#endif
-
-class COMMUNICATION_EXPORT MultiCommException {
-private:
- std::string _message;
-public:
- MultiCommException(const char *message);
- const char *what() const;
-};
-
-#endif
-
+++ /dev/null
-#include "Receiver.hxx"
-#include <string.h>
-using namespace std;
-
-/*!
- return a deep copy of the array contained in the servant.
- */
-void *Receiver::getLocalValue(long &size,SALOME_Sender_i* servant)
-{
- const void *src=servant->getData(size);
- long lgr=size*servant->getSizeOf();
- void *ret=new char[lgr];
- memcpy(ret,src,lgr);
- return ret;
- //return (void *)servant->getData(size);
-}
-
-void *Receiver::getValue(long &size,SALOME::Sender_ptr sender)
-{
- SALOME_Sender_i* data=SALOME_Sender_i::find(sender);
- if(data)
- return getLocalValue(size,data);
- else
- return getDistValue(size);
-}
-
+++ /dev/null
-#ifndef _RECEIVER_HXX_
-#define _RECEIVER_HXX_
-
-#include "SALOME_Comm_i.hxx"
-
-/*! Abstract class factorizing common methods of all the receivers. All of the receivers have to inheritate from it.
- */
-template<class T,class senderPtr, class senderSrv>
-class Receiver
-{
-public:
- virtual T *getValue(long &size)=0;
- virtual ~Receiver() {}
-protected:
- virtual T *getValue(long &size,senderPtr sender);
- static inline T *getLocalValue(long &size,senderSrv* servant);
- virtual T *getDistValue(long &size)=0;
-};
-
-template<class T,class senderPtr, class senderSrv>
-T *Receiver<T,senderPtr,senderSrv>::getLocalValue(long &size,senderSrv* servant)
-{
- const T *src=(const T *)servant->getData(size);
- long lgr=size*servant->getSizeOf();
- void *ret=new char[lgr];
- memcpy(ret,src,lgr);
- return (T *)ret;
- //return (void *)servant->getData(size);
-}
-
-template<class T,class senderPtr, class senderSrv>
-T *Receiver<T,senderPtr,senderSrv>::getValue(long &size,senderPtr sender)
-{
- senderSrv* data=senderSrv::find(sender);
- if(data)
- return getLocalValue(size,data);
- else
- return getDistValue(size);
-}
-
-#endif
-
+++ /dev/null
-#include "ReceiverFactory.hxx"
-#include "Receivers.hxx"
-using namespace std;
-
-#ifdef COMP_CORBA_DOUBLE
-#define CorbaDNoCopyReceiver CorbaNCNoCopyReceiver
-#define CorbaDWithCopyReceiver CorbaNCWithCopyReceiver
-#else
-#define CorbaDNoCopyReceiver CorbaWCNoCopyReceiver
-#define CorbaDWithCopyReceiver CorbaWCWithCopyReceiver
-#endif
-
-#ifdef COMP_CORBA_LONG
-#define CorbaINoCopyReceiver CorbaNCNoCopyReceiver
-#define CorbaIWithCopyReceiver CorbaNCWithCopyReceiver
-#else
-#define CorbaINoCopyReceiver CorbaWCNoCopyReceiver
-#define CorbaIWithCopyReceiver CorbaWCWithCopyReceiver
-#endif
-
-#ifdef HAVE_SOCKET
-#include <rpc/xdr.h>
-#endif
-
-/*!
- This method performs the transfert of double array with the remote SenderDouble given. If it fails with this SenderDouble it tries with an another protocol (CORBA by default).
- */
-double *ReceiverFactory::getValue(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException)
-{
- double *ret;
- try{
- ret=getValueOneShot(sender,size);
- }
- catch(MultiCommException&)
- {
- SALOME::SenderDouble_ptr newSender=sender->buildOtherWithProtocol(SALOME::CORBA_);
- MESSAGE("PROTOCOL CHANGED TO CORBA");
- sender->release();
- ret=getValueOneShot(newSender,size);
- CORBA::release(newSender);
- }
- return ret;
-}
-
-/*!
- This method performs the transfert of int array with the remote SenderInt given. If it fails with this SenderInt it tries with an another protocol (CORBA by default).
- */
-int *ReceiverFactory::getValue(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException)
-{
- int *ret;
- try{
- ret=getValueOneShot(sender,size);
- }
- catch(MultiCommException&)
- {
- SALOME::SenderInt_ptr newSender=sender->buildOtherWithProtocol(SALOME::CORBA_);
- MESSAGE("PROTOCOL CHANGED TO CORBA");
- sender->release();
- ret=getValueOneShot(newSender,size);
- CORBA::release(newSender);
- }
- return ret;
-}
-
-/*!
- This method performs the transfert with the remote SenderDouble given. If it fails an exception is thrown.
- */
-double *ReceiverFactory::getValueOneShot(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException)
-{
- SALOME::CorbaDoubleNCSender_ptr cncD_ptr;
- SALOME::CorbaDoubleCSender_ptr cwcD_ptr;
-#ifdef HAVE_MPI2
- SALOME::MPISenderDouble_ptr mpi_ptr=SALOME::MPISenderDouble::_narrow(sender);
-#endif
-#ifdef HAVE_SOCKET
- SALOME::SocketSenderDouble_ptr sock_ptr=SALOME::SocketSenderDouble::_narrow(sender);
-#endif
- cncD_ptr=SALOME::CorbaDoubleNCSender::_narrow(sender);
- cwcD_ptr=SALOME::CorbaDoubleCSender::_narrow(sender);
- if(!CORBA::is_nil(cncD_ptr))
- {
- CORBA::release(sender);
- CorbaDNoCopyReceiver<double,CORBA::Double,SALOME::vectorOfDouble_var,SALOME::CorbaDoubleNCSender_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(cncD_ptr);
- return rec.getValue(size);
- }
- else if(!CORBA::is_nil(cwcD_ptr))
- {
- CORBA::release(sender);
- CorbaDWithCopyReceiver<double,CORBA::Double,SALOME::vectorOfDouble_var,SALOME::CorbaDoubleCSender_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(cwcD_ptr);
- return rec.getValue(size);
- }
-#ifdef HAVE_MPI2
- else if(!CORBA::is_nil(mpi_ptr))
- {
- CORBA::release(sender);
- MPIReceiver<double,MPI_DOUBLE,SALOME::MPISenderDouble_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(mpi_ptr);
- return rec.getValue(size);
- }
-#endif
-#ifdef HAVE_SOCKET
- else if(!CORBA::is_nil(sock_ptr))
- {
- CORBA::release(sender);
- SocketReceiver<double,xdr_double,SALOME::SocketSenderDouble_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(sock_ptr);
- return rec.getValue(size);
- }
-#endif
- else
- {
- throw MultiCommException("Unknown sender protocol");
- return 0;
- }
-}
-
-/*!
- This method performs the transfert with the remote SenderInt given. If it fails an exception is thrown.
- */
-int *ReceiverFactory::getValueOneShot(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException)
-{
- SALOME::CorbaLongNCSender_ptr cncL_ptr;
- SALOME::CorbaLongCSender_ptr cwcL_ptr;
-#ifdef HAVE_MPI2
- SALOME::MPISenderInt_ptr mpi_ptr=SALOME::MPISenderInt::_narrow(sender);
-#endif
-#ifdef HAVE_SOCKET
- SALOME::SocketSenderInt_ptr sock_ptr=SALOME::SocketSenderInt::_narrow(sender);
-#endif
- cncL_ptr=SALOME::CorbaLongNCSender::_narrow(sender);
- cwcL_ptr=SALOME::CorbaLongCSender::_narrow(sender);
- if(!CORBA::is_nil(cncL_ptr))
- {
- CORBA::release(sender);
- CorbaINoCopyReceiver<int,CORBA::Long,SALOME::vectorOfLong_var,SALOME::CorbaLongNCSender_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(cncL_ptr);
- return rec.getValue(size);
- }
- else if(!CORBA::is_nil(cwcL_ptr))
- {
- CORBA::release(sender);
- CorbaIWithCopyReceiver<int,CORBA::Long,SALOME::vectorOfLong_var,SALOME::CorbaLongCSender_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(cwcL_ptr);
- return rec.getValue(size);
- }
-#ifdef HAVE_MPI2
- else if(!CORBA::is_nil(mpi_ptr))
- {
- CORBA::release(sender);
- MPIReceiver<int,MPI_INT,SALOME::MPISenderInt_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(mpi_ptr);
- return rec.getValue(size);
- }
-#endif
-#ifdef HAVE_SOCKET
- else if(!CORBA::is_nil(sock_ptr))
- {
- CORBA::release(sender);
- SocketReceiver<int,xdr_int,SALOME::SocketSenderInt_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(sock_ptr);
- return rec.getValue(size);
- }
-#endif
- else
- {
- throw MultiCommException("Unknown sender protocol");
- return 0;
- }
-}
-
+++ /dev/null
-#ifndef _RECEIVERFACTORY_HXX_
-#define _RECEIVERFACTORY_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_Comm)
-#include "MultiCommException.hxx"
-
-/*!
- This class internally builds a receiver associated with the sender given. It also performs transfert completely and clean up the objects.
- This is the only class used client side of an array.
- */
-class ReceiverFactory
-{
-public:
- static double *getValue(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException);
- static int *getValue(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException);
-private:
- static double *getValueOneShot(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException);
- static int *getValueOneShot(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException);
-};
-
-#endif
-
+++ /dev/null
-#include "poa.h"
-#include "utilities.h"
-using namespace std;
-
-#define TAILLE_SPLIT 100000
-#define TIMEOUT 20
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaNCNoCopyReceiver(CorbaSender mySender):_mySender(mySender){
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaNCNoCopyReceiver(){
- _mySender->release();
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size)
-{
- TSeqCorba seq=_mySender->send();
- size=seq->length();
- return (T *)seq->get_buffer(1);
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
-{
- return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaNCWithCopyReceiver(CorbaSender mySender):_mySender(mySender){
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaNCWithCopyReceiver(){
- _mySender->release();
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
- size=_mySender->getSize();
- long n;
- T *ret=new T[size];
- T *iter=ret;
- for(long i=0;i<size;i+=TAILLE_SPLIT)
- {
- if(size-i>TAILLE_SPLIT)
- n=TAILLE_SPLIT;
- else
- n=size-i;
- TSeqCorba seq=_mySender->sendPart(i,n);
- T *seqd=(T *)seq->get_buffer(0);
- for(long j=0;j<n;j++)
- *iter++=*seqd++;
- }
- return ret;
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
-{
- return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaWCNoCopyReceiver(CorbaSender mySender):_mySender(mySender){
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaWCNoCopyReceiver(){
- _mySender->release();
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
- size=_mySender->getSize();
- long n;
- T *ret=new T[size];
- T *iter=ret;
- for(long i=0;i<size;i+=TAILLE_SPLIT)
- {
- if(size-i>TAILLE_SPLIT)
- n=TAILLE_SPLIT;
- else
- n=size-i;
- TSeqCorba seq=_mySender->sendPart(i,n);
- TCorba *seqd=seq->get_buffer(0);
- for(long j=0;j<n;j++)
- *iter++=*seqd++;
- }
- return ret;
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
-{
- return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaWCWithCopyReceiver(CorbaSender mySender):_mySender(mySender){
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaWCWithCopyReceiver(){
- _mySender->release();
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
- size=_mySender->getSize();
- long n;
- T *ret=new T[size];
- T *iter=ret;
- for(long i=0;i<size;i+=TAILLE_SPLIT)
- {
- if(size-i>TAILLE_SPLIT)
- n=TAILLE_SPLIT;
- else
- n=size-i;
- TSeqCorba seq=_mySender->sendPart(i,n);
- TCorba *seqd=seq->get_buffer(0);
- for(long j=0;j<n;j++)
- *iter++=*seqd++;
- }
- return ret;
-}
-
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-T *CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
-{
- return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
-}
-
-#ifdef HAVE_MPI2
-
-template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
-MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::MPIReceiver(CorbaSender mySender):_mySender(mySender){
-}
-
-template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
-MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::~MPIReceiver(){
- _mySender->release();
-}
-
-template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
-T *MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
- int i=0;
- int myproc;
- int sproc;
- MPI_Status status;
- MPI_Comm com;
- char port_name_clt [MPI_MAX_PORT_NAME];
- float telps, tuser, tsys, tcpu;
- T *_v;
- long _n;
-
-
- CORBA::Any a;
- MPI_Comm_rank(MPI_COMM_WORLD, &myproc);
- SALOME::MPISender::param_var p =_mySender->getParam();
- _mySender->send();
- sproc = p->myproc;
- MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
- while ( i != TIMEOUT && MPI_Lookup_name((char*)p->service,MPI_INFO_NULL,port_name_clt) != MPI_SUCCESS) {
- i++;
- }
- MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
- if ( i == TIMEOUT ) {
- MPI_Finalize();
- exit(-1);
- }
- else{
- // Connect to service, get the inter-communicator server
- // Attention MPI_Comm_connect est un appel collectif :
- // - Si lancement mpirun -c n -----> uniquement MPI_COMM_SELF fonctionne
- // - Si lancement client_server&client_server ----> MPI_COMM_WORLD fonctionne
-
- // TIMEOUT is inefficient since MPI_Comm_Connect doesn't return if we asked for
- // a service that has been unpublished !
- MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
- i = 0;
- while ( i != TIMEOUT && MPI_Comm_connect(port_name_clt, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &com)!=MPI_SUCCESS ) {
- i++;
- }
- MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
- if ( i == TIMEOUT ) {
- MPI_Finalize();
- exit(-1);
- }
- }
- MPI_Recv( &_n, 1, MPI_LONG, sproc,p->tag1,com,&status);
- _v = new T[_n];
- MPI_Recv( _v, _n, T2, sproc,p->tag2,com,&status);
- _mySender->close(p);
- MPI_Comm_disconnect( &com );
- size=_n;
- return _v;
-}
-
-template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
-T *MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::getValue(long &size)
-{
- return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
-}
-
-#endif
-
-#ifdef HAVE_SOCKET
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <unistd.h>
-#include <rpc/xdr.h>
-
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::SocketReceiver(CorbaSender mySender) : _mySender(mySender)
-{
- _clientSockfd = -1;
- _senderDestruc=true;
-}
-
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::~SocketReceiver()
-{
- if(_senderDestruc)
- {
- _mySender->release();
- }
-}
-
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-T *SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::getValue(long &size)
-{
- return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
-}
-
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-T* SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::getDistValue(long &size)
-{
- int n=0, m;
- T *v;
- XDR xp; /* pointeur sur le decodeur XDR */
-
- try{
- initCom();
-
- SALOME::SocketSender::param_var p = _mySender->getParam();
-
- size = p->lend - p->lstart + 1;
- v = new T[size];
-
- connectCom(p->internet_address, p->myport);
-
- _mySender->send();
-
- xdrmem_create(&xp,(char*)v,size*sizeof(T),XDR_DECODE );
- while( n < size*sizeof(T) ){
- m = read(_clientSockfd, (char*)v+n, size*sizeof(T)-n);
- if( m < 0 ){
- closeCom();
- delete [] v;
- SALOME::ExceptionStruct es;
- es.type = SALOME::COMM;
- es.text = "error read Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
- n += m;
- }
- xdr_vector( &xp, (char*)v, size, sizeof(T), (xdrproc_t)myFunc);
- xdr_destroy( &xp );
-
- _mySender->endOfCom();
- closeCom();
- }
- catch(SALOME::SALOME_Exception &ex){
- if( ex.details.type == SALOME::COMM )
- {
- _senderDestruc=false;
- cout << ex.details.text << endl;
- throw MultiCommException("Unknown sender protocol");
- }
- else
- throw ex;
- }
-
- return v;
-}
-
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-void SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::initCom()
-{
- try{
- _mySender->initCom();
-
- /* Ouverture de la socket */
- _clientSockfd = socket(AF_INET, SOCK_STREAM, 0);
- if (_clientSockfd < 0) {
- closeCom();
- SALOME::ExceptionStruct es;
- es.type = SALOME::COMM;
- es.text = "error Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
- }
- catch(SALOME::SALOME_Exception &ex){
- if( ex.details.type == SALOME::COMM )
- {
- _senderDestruc=false;
- cout << ex.details.text << endl;
- throw MultiCommException("Unknown sender protocol");
- }
- else
- throw ex;
- }
-
-}
-
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-void SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::connectCom(const char *dest_address, int port)
-{
- struct sockaddr_in serv_addr;
- struct hostent * server;
- SALOME::ExceptionStruct es;
-
- try{
- /* reception of the host structure on the remote process */
- server = gethostbyname(dest_address);
- if( server == NULL ) {
- closeCom();
- es.type = SALOME::COMM;
- es.text = "error unknown host Socket exception";
- _senderDestruc=false;
- throw SALOME::SALOME_Exception(es);
- }
-
- /* Initialisation of the socket structure */
- bzero((char*)&serv_addr,sizeof(serv_addr));
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = INADDR_ANY;
- bcopy((char *)server->h_addr,
- (char *)&serv_addr.sin_addr.s_addr,
- server->h_length);
- serv_addr.sin_port = htons(port);
-
- if( connect(_clientSockfd, (struct sockaddr *) & serv_addr, sizeof(struct sockaddr)) < 0 ){
- closeCom();
- es.type = SALOME::COMM;
- es.text = "error connect Socket exception";
- _senderDestruc=false;
- throw SALOME::SALOME_Exception(es);
- }
-
- _mySender->acceptCom();
-
- }
- catch(SALOME::SALOME_Exception &ex){
- if( ex.details.type == SALOME::COMM )
- {
- _senderDestruc=false;
- cout << ex.details.text << endl;
- throw MultiCommException("Unknown sender protocol");
- }
- else
- throw ex;
- }
-
-}
-
-
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-void SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::closeCom()
-{
- _mySender->closeCom();
- if( _clientSockfd >= 0 ){
- close(_clientSockfd);
- _clientSockfd = -1;
- }
-
-}
-
-#endif
+++ /dev/null
-#ifndef _RECEIVERS_HXX_
-#define _RECEIVERS_HXX_
-
-#include "SALOME_Comm_i.hxx"
-#include "Receiver.hxx"
-#ifdef HAVE_MPI2
-#include "mpi.h"
-#endif
-
-/*!
- Receiver used for transfert with CORBA when no copy is required remotely and locally.
- */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-class CorbaNCNoCopyReceiver : public Receiver<T,servForT,ptrForT>
-{
-private:
- CorbaSender _mySender;
-public:
- CorbaNCNoCopyReceiver(CorbaSender mySender);
- ~CorbaNCNoCopyReceiver();
- T *getValue(long &size);
-private:
- T *getDistValue(long &size);
-};
-
-/*!
- Receiver used for transfert with CORBA when copy is not required remotely but required locally.
- */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-class CorbaNCWithCopyReceiver : public Receiver<T,servForT,ptrForT>
-{
-private:
- CorbaSender _mySender;
-public:
- CorbaNCWithCopyReceiver(CorbaSender mySender);
- ~CorbaNCWithCopyReceiver();
- T *getValue(long &size);
-private:
- T *getDistValue(long &size);
-};
-
-/*!
- Receiver used for transfert with CORBA when copy is required remotely but not required locally.
- */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-class CorbaWCNoCopyReceiver : public Receiver<T,servForT,ptrForT>
-{
-private:
- CorbaSender _mySender;
-public:
- CorbaWCNoCopyReceiver(CorbaSender mySender);
- ~CorbaWCNoCopyReceiver();
- T *getValue(long &size);
-private:
- T *getDistValue(long &size);
-};
-
-/*!
- Receiver used for transfert with CORBA when copy is required both remotely and locally.
- */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
-class CorbaWCWithCopyReceiver : public Receiver<T,servForT,ptrForT>
-{
-private:
- CorbaSender _mySender;
-public:
- CorbaWCWithCopyReceiver(CorbaSender mySender);
- ~CorbaWCWithCopyReceiver();
- T *getValue(long &size);
-private:
- T *getDistValue(long &size);
-};
-
-#ifdef HAVE_MPI2
-/*!
- Receiver for MPI transfert.
- */
-template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
-class MPIReceiver : public Receiver<T,servForT,ptrForT>
-{
-private:
- CorbaSender _mySender;
-public:
- MPIReceiver(CorbaSender mySender);
- ~MPIReceiver();
- T *getValue(long &size);
-private:
- T *getDistValue(long &size);
-};
-#endif
-
-#ifdef HAVE_SOCKET
-
-class XDR;
-
-/*!
- Receiver for transfert with sockets.
- */
-template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
-class SocketReceiver : public Receiver<T,servForT,ptrForT>
-{
-private:
- CorbaSender _mySender;
- int _clientSockfd;
- bool _senderDestruc;
-public:
- SocketReceiver(CorbaSender mySender);
- ~SocketReceiver();
- T *getValue(long &size);
-private:
- T *getDistValue(long &size);
- void initCom();
- void connectCom(const char *, int);
- void closeCom();
-};
-#endif
-
-#include "Receivers.cxx"
-
-#endif
-
+++ /dev/null
-#include "SALOMEMultiComm.hxx"
-#ifndef WNT
-using namespace std;
-#endif
-
-SALOMEMultiComm::SALOMEMultiComm():_type(SALOME::CORBA_)
-{
-}
-
-SALOMEMultiComm::SALOMEMultiComm(SALOME::TypeOfCommunication type):_type(type)
-{
-}
-
-void SALOMEMultiComm::setProtocol(SALOME::TypeOfCommunication type)
-{
- _type=type;
-}
-
-SALOME::TypeOfCommunication SALOMEMultiComm::getProtocol() const
-{
- return _type;
-}
-
-
+++ /dev/null
-#ifndef _SALOMEMULTICOMM_HXX_
-#define _SALOMEMULTICOMM_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_Comm)
-
-#if defined WNT && defined COMMUNICATION_EXPORTS
-#define COMMUNICATION_EXPORT __declspec( dllexport )
-#else
-#define COMMUNICATION_EXPORT
-#endif
-
-/*!
- Class is designed to ease the use of multi communication.\n
- Simply inherite from it your servant class you want to emit data with senders.
- */
-class COMMUNICATION_EXPORT SALOMEMultiComm : public virtual POA_SALOME::MultiCommClass {
-protected:
- SALOME::TypeOfCommunication _type;
-public:
- SALOMEMultiComm();
- SALOMEMultiComm(SALOME::TypeOfCommunication type);
- virtual void setProtocol(SALOME::TypeOfCommunication type);
- SALOME::TypeOfCommunication getProtocol() const;
-};
-
-#endif
+++ /dev/null
-#ifndef WNT
-#include <rpc/xdr.h>
-#endif
-#include "SALOME_Comm_i.hxx"
-#include "poa.h"
-#include "omnithread.h"
-#include "Utils_SINGLETON.hxx"
-#include "Utils_ORB_INIT.hxx"
-#include "utilities.h"
-
-#include "SenderFactory.hxx"
-using namespace std;
-
-#ifndef WNT
-CORBA::ORB_var &getGlobalORB(){
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
- CORBA::ORB_var &orb = init(0,0);
- return orb;
-}
-#endif
-
-/*! Return the C++ data associated to the array to transmit.
- Used when sender and receiver are collocalized.
- */
-const void *SALOME_Sender_i::getData(long &size) const{
- size=_lgrTabToSend;
- return _tabToSend;
-}
-
-/*! Return the sizeof() of each component of the generic array
- */
-int SALOME_Sender_i::getSizeOf() const {
- return _sizeOf;
-}
-
-/*! Unique constructor */
-SALOME_Sender_i::SALOME_Sender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend):_tabToSend(tabToSend),_lgrTabToSend(lgrTabToSend),_sizeOf(sizeOf),_ownTabToSend(ownTabToSend){
-}
-
-/*! To force ownerShip status */
-void SALOME_Sender_i::setOwnerShip(bool own)
-{
- _ownTabToSend=own;
-}
-
-/*! Method for the remote destroy of the current servant. This method is used by the receiver to destroy the sender when the transfert is complete.
- */
-void SALOME_Sender_i::release()
-{
- PortableServer::ObjectId_var oid = _default_POA()->servant_to_id(this);
- _default_POA()->deactivate_object(oid);
- _remove_ref();
-}
-
-SALOME_SenderDouble_i::SALOME_SenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
-{
-}
-
-/*! Destructor.
- */
-SALOME_SenderDouble_i::~SALOME_SenderDouble_i()
-{
- if(_ownTabToSend)
- delete [] (double *)_tabToSend;
-}
-
-/*! Return a new sender of the same array but with an another protocol and delegates to the returned sender the ownership of array.
- */
-SALOME::SenderDouble_ptr SALOME_SenderDouble_i::buildOtherWithProtocol(SALOME::TypeOfCommunication type)
-{
- return SenderFactory::buildSender(type,this);
-}
-
-/*! Method to establish if the CORBA object refered by pCorba is collocalised.\n
- If it is, the pointer to the servant that incarnates the CORBA object is returned.
-*/
-SALOME_SenderDouble_i *SALOME_SenderDouble_i::find(SALOME::SenderDouble_ptr pCorba){
- PortableServer::ServantBase *ret;
- try {
- ret=PortableServer::POA::_the_root_poa()->reference_to_servant(pCorba);
- }
- catch(...){
- return 0;
- }
- ret->_remove_ref();
- return dynamic_cast<SALOME_SenderDouble_i *>(ret);
-}
-
-SALOME_SenderInt_i::SALOME_SenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
-{
-}
-
-/*! Destructor.
- */
-SALOME_SenderInt_i::~SALOME_SenderInt_i()
-{
- if(_ownTabToSend)
- delete [] (int *)_tabToSend;
-}
-
-/*! Return a new sender of the same array but with an another protocol.
- */
-SALOME::SenderInt_ptr SALOME_SenderInt_i::buildOtherWithProtocol(SALOME::TypeOfCommunication type)
-{
- return SenderFactory::buildSender(type,this);
-}
-
-/*! Method to establish if the CORBA object refered by pCorba is collocalised.\n
- If it is, the pointer to the servant that incarnates the CORBA object is returned.
-*/
-SALOME_SenderInt_i *SALOME_SenderInt_i::find(SALOME::SenderInt_ptr pCorba){
- PortableServer::ServantBase *ret;
- try {
- ret=PortableServer::POA::_the_root_poa()->reference_to_servant(pCorba);
- }
- catch(...){
- return 0;
- }
- ret->_remove_ref();
- return dynamic_cast<SALOME_SenderInt_i *>(ret);
-}
-
-SALOME_CorbaDoubleNCSender_i::SALOME_CorbaDoubleNCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend){
-}
-
-SALOME_CorbaDoubleNCSender_i::~SALOME_CorbaDoubleNCSender_i(){
-}
-
-CORBA::ULong SALOME_CorbaDoubleNCSender_i::getSize(){
- CORBA::ULong ret=_lgrTabToSend;
- return ret;
-}
-
-SALOME::vectorOfDouble* SALOME_CorbaDoubleNCSender_i::sendPart(CORBA::ULong offset, CORBA::ULong length){
- SALOME::vectorOfDouble_var c1 = new SALOME::vectorOfDouble(length,length,(CORBA::Double *)((double *)_tabToSend+(long)offset),0);
- return c1._retn();
-}
-
-SALOME::vectorOfDouble* SALOME_CorbaDoubleNCSender_i::send(){
- SALOME::vectorOfDouble_var c1 = new SALOME::vectorOfDouble(_lgrTabToSend,_lgrTabToSend,(CORBA::Double *)_tabToSend,0);
- return c1._retn();
-}
-
-SALOME_CorbaDoubleCSender_i::SALOME_CorbaDoubleCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend){
-}
-
-SALOME_CorbaDoubleCSender_i::~SALOME_CorbaDoubleCSender_i(){
-}
-
-CORBA::ULong SALOME_CorbaDoubleCSender_i::getSize(){
- CORBA::ULong ret=_lgrTabToSend;
- return ret;
-}
-
-SALOME::vectorOfDouble* SALOME_CorbaDoubleCSender_i::sendPart(CORBA::ULong offset, CORBA::ULong length){
- SALOME::vectorOfDouble_var c1 = new SALOME::vectorOfDouble;
- c1->length(length);
- for (long i=0; i<length; i++)
- c1[i] = ((double *)_tabToSend)[i+offset];
- return c1._retn();
-}
-
-////////////////////////
-
-SALOME_CorbaLongNCSender_i::SALOME_CorbaLongNCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend){
-}
-
-SALOME_CorbaLongNCSender_i::~SALOME_CorbaLongNCSender_i(){
-}
-
-CORBA::ULong SALOME_CorbaLongNCSender_i::getSize(){
- CORBA::ULong ret=_lgrTabToSend;
- return ret;
-}
-
-SALOME::vectorOfLong* SALOME_CorbaLongNCSender_i::sendPart(CORBA::ULong offset, CORBA::ULong length){
- SALOME::vectorOfLong_var c1 = new SALOME::vectorOfLong(length,length,(CORBA::Long *)((long *)_tabToSend+(long)offset),0);
- return c1._retn();
-}
-
-SALOME::vectorOfLong* SALOME_CorbaLongNCSender_i::send(){
- SALOME::vectorOfLong_var c1 = new SALOME::vectorOfLong(_lgrTabToSend,_lgrTabToSend,(CORBA::Long *)_tabToSend,0);
- return c1._retn();
-}
-
-SALOME_CorbaLongCSender_i::SALOME_CorbaLongCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend){
-}
-
-SALOME_CorbaLongCSender_i::~SALOME_CorbaLongCSender_i(){
-}
-
-CORBA::ULong SALOME_CorbaLongCSender_i::getSize(){
- CORBA::ULong ret=_lgrTabToSend;
- return ret;
-}
-
-SALOME::vectorOfLong* SALOME_CorbaLongCSender_i::sendPart(CORBA::ULong offset, CORBA::ULong length){
- SALOME::vectorOfLong_var c1 = new SALOME::vectorOfLong;
- c1->length(length);
- for (long i=0; i<length; i++)
- c1[i] = ((long *)_tabToSend)[i+offset];
- return c1._retn();
-}
-
-#ifdef HAVE_MPI2
-
-unsigned long SALOME_MPISender_i::_tag1=0;
-
-unsigned long SALOME_MPISender_i::_tag2=1;
-
-SALOME_MPISender_i::SALOME_MPISender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeOf,ownTabToSend){
- _portName=new char[MPI_MAX_PORT_NAME];
-}
-
-SALOME_MPISender_i::~SALOME_MPISender_i(){
- delete [] _portName;
-}
-
-SALOME::MPISender::param* SALOME_MPISender_i::getParam()
-{
- char stag[12];
- int myproc,i=0;
-
- SALOME::MPISender::param_var p = new SALOME::MPISender::param;
- MPI_Comm_rank(MPI_COMM_WORLD,&_cproc);
- p->myproc = _cproc;
- p->tag1 = _tag1;
- _tag1Inst=_tag1;
- p->tag2 =_tag2;
- _tag2Inst=_tag2;
- std::string service("toto_");
- sprintf(stag,"%d_",_tag1);
- service += stag;
- sprintf(stag,"%d_",p->tag2);
- service += stag;
- p->service = CORBA::string_dup(service.c_str());
- MPI_Open_port(MPI_INFO_NULL, _portName);
- MPI_Errhandler_set(MPI_COMM_WORLD,MPI_ERRORS_RETURN);
- while ( i != TIMEOUT && MPI_Publish_name((char*)service.c_str(),MPI_INFO_NULL,_portName) != MPI_SUCCESS) {
- i++;
- }
- MPI_Errhandler_set(MPI_COMM_WORLD,MPI_ERRORS_ARE_FATAL);
- if ( i == TIMEOUT ) {
- MPI_Close_port(_portName);
- MPI_Finalize();
- exit(-1);
- }
- _tag1 += 2;
- _tag2 += 2;
- return p._retn();
-}
-
-void SALOME_MPISender_i::send()
-{
- _type=getTypeOfDataTransmitted();
- _argsForThr=new (void *)[8];
- _argsForThr[0]=_portName;
- _argsForThr[1]=&_lgrTabToSend;
- _argsForThr[2]=(void *)_tabToSend;
- _argsForThr[3]=&_cproc;
- _argsForThr[4]=&_tag1Inst;
- _argsForThr[5]=&_tag2Inst;
- _argsForThr[6]=&_com;
- _argsForThr[7]=&_type;
-
- _newThr=new omni_thread(SALOME_MPISender_i::myThread,_argsForThr);
- _newThr->start();
-}
-
-void* SALOME_MPISender_i::myThread(void *args)
-{
- void **argsTab=(void **)args;
- long *lgrTabToSend=(long *)argsTab[1];
- int *cproc=(int *)argsTab[3];
- int *tag1=(int *)argsTab[4];
- int *tag2=(int *)argsTab[5];
- MPI_Comm *com=(MPI_Comm *)argsTab[6];
- SALOME::TypeOfDataTransmitted *type=(SALOME::TypeOfDataTransmitted *)argsTab[7];
-
- MPI_Comm_accept((char *)argsTab[0],MPI_INFO_NULL,0,MPI_COMM_SELF,com);
- MPI_Send(lgrTabToSend,1,MPI_LONG,*cproc,*tag1,*com);
- switch(*type)
- {
- case SALOME::DOUBLE_:
- MPI_Send(argsTab[2],*lgrTabToSend,MPI_DOUBLE,*cproc,*tag2,*com);
- break;
- case SALOME::INT_:
- MPI_Send(argsTab[2],*lgrTabToSend,MPI_INT,*cproc,*tag2,*com);
- }
- omni_thread::exit();
- return args;
-}
-
-void SALOME_MPISender_i::close(const SALOME::MPISender::param& p)
-{
- std::string service(p.service);
- const char *st=p.service;
- void *r;
- _newThr->join(&r);
- MPI_Comm_free(&_com);
- MPI_Unpublish_name((char *)service.c_str(),MPI_INFO_NULL,_portName);
- MPI_Close_port(_portName);
- delete [] _argsForThr;
-}
-
-SALOME_MPISenderDouble_i::SALOME_MPISenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend)
- :SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_MPISender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
- ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
-{
-}
-
-SALOME_MPISenderInt_i::SALOME_MPISenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend)
- :SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_MPISender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
- ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
-{
-}
-
-#endif
-
-#ifdef HAVE_SOCKET
-
-//CCRT porting
-#define _POSIX_PII_SOCKET
-#define _LIBC_POLLUTION_H_
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <unistd.h>
-
-SALOME_SocketSender_i::SALOME_SocketSender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeOf,ownTabToSend){
- _IPAddress = inetAddress();
- _serverSockfd = -1;
- _clientSockfd = -1;
-}
-
-SALOME_SocketSender_i::~SALOME_SocketSender_i(){
-}
-
-std::string SALOME_SocketSender_i::inetAddress()
-{
- char s[256];
- char t[INET_ADDRSTRLEN+1];
- struct hostent *host;
- struct in_addr saddr;
-
- gethostname(s, 255);
-
- *t = '\0';
-
- saddr.s_addr = inet_addr(s);
- if (saddr.s_addr != -1)
- inet_ntop(AF_INET, &saddr, t, INET_ADDRSTRLEN);
- else {
- host = gethostbyname(s);
- if (host != NULL)
- inet_ntop(AF_INET, (struct in_addr *) *host->h_addr_list,
- t, INET_ADDRSTRLEN);
- }
- return std::string(t);
-}
-
-SALOME::SocketSender::param * SALOME_SocketSender_i::getParam()
-{
-
- SALOME::SocketSender::param_var p = new SALOME::SocketSender::param;
-
- p->lstart = 0;
- p->lend = _lgrTabToSend - 1;
- p->myport = _port;
- p->internet_address = CORBA::string_dup(_IPAddress.c_str());
-
- return p._retn();
-}
-
-void SALOME_SocketSender_i::send()
-{
- _type=getTypeOfDataTransmitted();
- _argsForThr=new void *[6];
- _argsForThr[0]=&_serverSockfd;
- _argsForThr[1]=&_clientSockfd;
- _argsForThr[2]=&_lgrTabToSend;
- _argsForThr[3]=(void *)_tabToSend;
- _argsForThr[4]=&_errorFlag;
- _argsForThr[5]=&_type;
-
- _newThr=new omni_thread(SALOME_SocketSender_i::myThread,_argsForThr);
- _newThr->start();
-}
-
-void* SALOME_SocketSender_i::myThread(void *args)
-{
- int n=0, m;
- void **argsTab=(void **)args;
- int *serverSockfd=(int *)argsTab[0];
- int *clientSockfd=(int *)argsTab[1];
- long *lgrTabToSend=(long *)argsTab[2];
- void *tabToSend=argsTab[3];
- bool *errorFlag=(bool*)argsTab[4];
- SALOME::TypeOfDataTransmitted *type=(SALOME::TypeOfDataTransmitted *)argsTab[5];
-
- XDR xp; /* pointeur sur le decodeur XDR */
-
- switch(*type)
- {
- case SALOME::DOUBLE_:
- xdrmem_create(&xp,(char*)tabToSend,(*lgrTabToSend)*sizeof(double),XDR_ENCODE );
- xdr_vector( &xp, (char*)tabToSend, *lgrTabToSend, sizeof(double), (xdrproc_t)xdr_double );
-
- *errorFlag = false;
- while( n < *lgrTabToSend*sizeof(double) ){
- m = write(*clientSockfd, (char*)tabToSend+n, *lgrTabToSend*sizeof(double)-n);
- if( m < 0 ){
- if( *clientSockfd >= 0 ){
- ::close(*clientSockfd);
- *clientSockfd = -1;
- }
- if( *serverSockfd >= 0 ){
- ::close(*serverSockfd);
- *serverSockfd = -1;
- }
- *errorFlag = true;
- }
- n += m;
- }
- xdr_destroy( &xp );
-
- xdrmem_create(&xp,(char*)tabToSend,(*lgrTabToSend)*sizeof(double),XDR_DECODE );
- xdr_vector( &xp, (char*)tabToSend, *lgrTabToSend, sizeof(double), (xdrproc_t)xdr_double );
- xdr_destroy( &xp );
- break;
- case SALOME::INT_:
- xdrmem_create(&xp,(char*)tabToSend,(*lgrTabToSend)*sizeof(int),XDR_ENCODE );
- xdr_vector( &xp, (char*)tabToSend, *lgrTabToSend, sizeof(int), (xdrproc_t)xdr_int );
-
- *errorFlag = false;
- while( n < *lgrTabToSend*sizeof(int) ){
- m = write(*clientSockfd, (char*)tabToSend+n, *lgrTabToSend*sizeof(int)-n);
- if( m < 0 ){
- if( *clientSockfd >= 0 ){
- ::close(*clientSockfd);
- *clientSockfd = -1;
- }
- if( *serverSockfd >= 0 ){
- ::close(*serverSockfd);
- *serverSockfd = -1;
- }
- *errorFlag = true;
- }
- n += m;
- }
- xdr_destroy( &xp );
-
- xdrmem_create(&xp,(char*)tabToSend,(*lgrTabToSend)*sizeof(int),XDR_DECODE );
- xdr_vector( &xp, (char*)tabToSend, *lgrTabToSend, sizeof(int), (xdrproc_t)xdr_int );
- xdr_destroy( &xp );
- }
- return args;
-}
-
-void SALOME_SocketSender_i::initCom() throw(SALOME::SALOME_Exception)
-{
- struct sockaddr_in serv_addr;
- socklen_t n;
- SALOME::ExceptionStruct es;
-
- /* Ouverture de la socket */
- _serverSockfd = socket(AF_INET , SOCK_STREAM , 0);
- if(_serverSockfd < 0) {
- es.type = SALOME::COMM;
- es.text = "error Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
- /* Socket structure initialisation*/
- bzero((char*)&serv_addr,sizeof(serv_addr));
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_port = 0; /* asking for a free port */
- serv_addr.sin_addr.s_addr = INADDR_ANY;
-
- /* Association of socket with a port */
- if( ::bind(_serverSockfd, (struct sockaddr *) & serv_addr,
- sizeof(struct sockaddr)) < 0 ) {
- closeCom();
- es.type = SALOME::COMM;
- es.text = "error bind Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
- /* Listening to the allocated port */
- if( listen(_serverSockfd, 10) < 0 ) {
- closeCom();
- es.type = SALOME::COMM;
- es.text = "error listen Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
- /* Retrieving port number*/
- if( getsockname(_serverSockfd, (struct sockaddr *) & serv_addr, &n) < 0 ){
- closeCom();
- es.type = SALOME::COMM;
- es.text = "error getName Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
- _port = htons(serv_addr.sin_port);
- SCRUTE(_port);
-}
-
-void SALOME_SocketSender_i::acceptCom() throw(SALOME::SALOME_Exception)
-{
- socklen_t sin_size;
- struct sockaddr_in client_addr;
- SALOME::ExceptionStruct es;
-
- sin_size = sizeof(struct sockaddr_in);
-
- _clientSockfd = accept(_serverSockfd, (struct sockaddr *)&client_addr, &sin_size);
- if( _clientSockfd < 0 ){
- closeCom();
- es.type = SALOME::COMM;
- es.text = "error accept Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
-}
-
-void SALOME_SocketSender_i::closeCom()
-{
- if( _clientSockfd >= 0 ){
- ::close(_clientSockfd);
- _clientSockfd = -1;
- }
- if( _serverSockfd >= 0 ){
- ::close(_serverSockfd);
- _serverSockfd = -1;
- }
-
-}
-
-void SALOME_SocketSender_i::endOfCom()
-{
- void *r;
- _newThr->join(&r);
- if(_errorFlag)
- {
- SALOME::ExceptionStruct es;
- es.type = SALOME::COMM;
- es.text = "error write Socket exception";
- throw SALOME::SALOME_Exception(es);
- }
- delete [] _argsForThr;
-}
-
-SALOME_SocketSenderDouble_i::SALOME_SocketSenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend)
- :SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_SocketSender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
- ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
-{
-}
-
-SALOME_SocketSenderInt_i::SALOME_SocketSenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend)
- :SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_SocketSender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
- ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
-{
-}
-
-//CCRT porting
-#undef _LIBC_POLLUTION_H_
-#undef _POSIX_PII_SOCKET
-
-#endif
+++ /dev/null
-#ifndef _SALOME_COMM_I_HXX_
-#define _SALOME_COMM_I_HXX_
-
-#include <string>
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_Comm)
-#ifdef HAVE_MPI2
-#include "mpi.h"
-#endif
-
-#define TIMEOUT 20
-
-
-/*!
- Generic servant class for senders that factorizes all the common methods and attributes necessary to senders.
- All servant classes for senders have to inheritate from it.
- */
-class SALOME_Sender_i : public virtual POA_SALOME::Sender,
- public PortableServer::RefCountServantBase {
-protected:
- /*! Pointer to the generic array to transmit*/
- const void *_tabToSend;
- /*! Length of the generic array to transmit*/
- long _lgrTabToSend;
- /*! it represents the sizeof() of each component of the generic array:\n
- Practically in terms of bytes the size to be transmitted is _lgrTabToSend*_sizeOf
- */
- int _sizeOf;
- /*! Indicates if _tabToSend has to be deallocated */
- bool _ownTabToSend;
-
- SALOME_Sender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend=false);
-public:
- const void *getData(long &size) const;
- int getSizeOf() const;
- void setOwnerShip(bool own);
- bool getOwnerShip() const { return _ownTabToSend; }
- void release();
- virtual ~SALOME_Sender_i() {}
-};
-
-class SALOME_SenderDouble_i : public virtual POA_SALOME::SenderDouble,
- public virtual SALOME_Sender_i
-{
-public:
- SALOME_SenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
- SALOME::TypeOfDataTransmitted getTypeOfDataTransmitted() { return SALOME::DOUBLE_; }
- SALOME::SenderDouble_ptr buildOtherWithProtocol(SALOME::TypeOfCommunication type);
- virtual ~SALOME_SenderDouble_i();
- static SALOME_SenderDouble_i *find(SALOME::SenderDouble_ptr pCorba);
-};
-
-class SALOME_SenderInt_i : public virtual POA_SALOME::SenderInt,
- public virtual SALOME_Sender_i
-{
-public:
- SALOME_SenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
- SALOME::TypeOfDataTransmitted getTypeOfDataTransmitted() { return SALOME::INT_; }
- SALOME::SenderInt_ptr buildOtherWithProtocol(SALOME::TypeOfCommunication type);
- virtual ~SALOME_SenderInt_i();
- static SALOME_SenderInt_i *find(SALOME::SenderInt_ptr pCorba);
-};
-
-/*! Servant class for CORBA sender for double* when no copy of array _tabToSend is required, that is to say double and CORBA::Double are binary equal.
- */
-class SALOME_CorbaDoubleNCSender_i : public POA_SALOME::CorbaDoubleNCSender,
- public SALOME_SenderDouble_i
-{
-public:
- SALOME_CorbaDoubleNCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
- ~SALOME_CorbaDoubleNCSender_i();
- CORBA::ULong getSize();
- SALOME::vectorOfDouble* sendPart(CORBA::ULong offset, CORBA::ULong length);
- SALOME::vectorOfDouble* send();
-};
-
-/*! Servant class for CORBA sender for double* when copy of array _tabToSend is required, that is to say double and CORBA::Double are NOT binary equal.
- */
-class SALOME_CorbaDoubleCSender_i : public POA_SALOME::CorbaDoubleCSender,
- public SALOME_SenderDouble_i
-{
-public:
- SALOME_CorbaDoubleCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
- ~SALOME_CorbaDoubleCSender_i();
- CORBA::ULong getSize();
- SALOME::vectorOfDouble* sendPart(CORBA::ULong offset, CORBA::ULong length);
-};
-
-/*! Servant class for CORBA sender for int* when no copy of array _tabToSend is required, that is to say int and CORBA::Long are binary equal.
- */
-class SALOME_CorbaLongNCSender_i : public POA_SALOME::CorbaLongNCSender,
- public SALOME_SenderInt_i
-{
-public:
- SALOME_CorbaLongNCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
- ~SALOME_CorbaLongNCSender_i();
- CORBA::ULong getSize();
- SALOME::vectorOfLong* sendPart(CORBA::ULong offset, CORBA::ULong length);
- SALOME::vectorOfLong* send();
-};
-
-/*! Servant class for CORBA sender for int* when copy of array _tabToSend is required, that is to say int and CORBA::Long are NOT binary equal.
- */
-class SALOME_CorbaLongCSender_i : public POA_SALOME::CorbaLongCSender,
- public SALOME_SenderInt_i
-{
-public:
- SALOME_CorbaLongCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
- ~SALOME_CorbaLongCSender_i();
- CORBA::ULong getSize();
- SALOME::vectorOfLong* sendPart(CORBA::ULong offset, CORBA::ULong length);
-#ifndef WNT
- SALOME::CorbaLongCSender_ptr _this();
-#endif
-};
-
-#ifdef HAVE_MPI2
-
-/*! Servant class of sender using MPI2.
- */
-class SALOME_MPISender_i : public virtual POA_SALOME::MPISender,
- public virtual SALOME_Sender_i
-{
-private:
- static unsigned long _tag1;
- static unsigned long _tag2;
- /*! Name of the port opened*/
- char *_portName;
- int _cproc;
- /*! Tag 1 that identifies the transfert*/
- int _tag1Inst;
- /*! Tag 2 that identifies the transfert*/
- int _tag2Inst;
- /*! MPI communicator*/
- MPI_Comm _com;
- /*! Array of pointer for asynchronous invocation with omnithread*/
- void **_argsForThr;
- /*! Pointer to thread created on asynchronous invocation*/
- omni_thread *_newThr;
- /*! Type the component of the array*/
- SALOME::TypeOfDataTransmitted _type;
-public:
- SALOME_MPISender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend=false);
- ~SALOME_MPISender_i();
- SALOME::MPISender::param* getParam();
- void send();
- void close(const SALOME::MPISender::param& p);
-private:
- static void* myThread(void *args);
-};
-
-class SALOME_MPISenderDouble_i : public POA_SALOME::MPISenderDouble,
- public SALOME_SenderDouble_i,
- public SALOME_MPISender_i
-{
-public:
- SALOME_MPISenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
-};
-
-class SALOME_MPISenderInt_i : public POA_SALOME::MPISenderInt,
- public SALOME_SenderInt_i,
- public SALOME_MPISender_i
-{
-public:
- SALOME_MPISenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
-};
-
-#endif
-
-#ifdef HAVE_SOCKET
-
-/*! Servant class of sender using Sockets.
- */
-class SALOME_SocketSender_i : public virtual POA_SALOME::SocketSender,
- public virtual SALOME_Sender_i
-{
-private:
- int _serverSockfd;
- int _clientSockfd;
- int _port;
- std::string _IPAddress;
- void **_argsForThr;
- omni_thread *_newThr;
- bool _errorFlag;
- /*! Type the component of the array*/
- SALOME::TypeOfDataTransmitted _type;
-public:
- SALOME_SocketSender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend=false);
- ~SALOME_SocketSender_i();
- SALOME::SocketSender::param* getParam();
- void send();
- void initCom() throw(SALOME::SALOME_Exception);
- void acceptCom() throw(SALOME::SALOME_Exception);
- void endOfCom();
- void closeCom();
-private:
- static void* myThread(void *args);
- std::string inetAddress();
-};
-
-class SALOME_SocketSenderDouble_i : public POA_SALOME::SocketSenderDouble,
- public SALOME_SenderDouble_i,
- public SALOME_SocketSender_i
-{
-public:
- SALOME_SocketSenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
-};
-
-class SALOME_SocketSenderInt_i : public POA_SALOME::SocketSenderInt,
- public SALOME_SenderInt_i,
- public SALOME_SocketSender_i
-{
-public:
- SALOME_SocketSenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
-};
-
-#endif
-
-#endif
-
+++ /dev/null
-#include "SenderFactory.hxx"
-#include "utilities.h"
-#include "SALOMEMultiComm.hxx"
-#include "SALOME_Comm_i.hxx"
-using namespace std;
-
-#ifdef COMP_CORBA_DOUBLE
-#define SALOME_CorbaDoubleSender SALOME_CorbaDoubleNCSender_i
-#else
-#define SALOME_CorbaDoubleSender SALOME_CorbaDoubleCSender_i
-#endif
-
-#ifdef COMP_CORBA_LONG
-#define SALOME_CorbaLongSender SALOME_CorbaLongNCSender_i
-#else
-#define SALOME_CorbaLongSender SALOME_CorbaLongCSender_i
-#endif
-
-SALOME::SenderDouble_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const double *tab,long lgr,bool ownTab)throw(MultiCommException){
- switch(multiCommunicator.getProtocol())
- {
- case SALOME::CORBA_:
- {
- SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr,ownTab);
- return retc->_this();
- }
-#ifdef HAVE_MPI2
- case SALOME::MPI_:
- {
- SALOME_MPISenderDouble_i* retm=new SALOME_MPISenderDouble_i(tab,lgr,ownTab);
- return retm->_this();
- }
-#endif
-#ifdef HAVE_SOCKET
- case SALOME::SOCKET_:
- {
- SALOME_SocketSenderDouble_i* rets=new SALOME_SocketSenderDouble_i(tab,lgr,ownTab);
- return rets->_this();
- }
-#endif
- default:
- {
- multiCommunicator.setProtocol(SALOME::CORBA_);
- MESSAGE("PROTOCOL CHANGED TO CORBA");
- SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr,ownTab);
- return retc->_this();
- }
-// throw MultiCommException("Communication protocol not implemented");
- }
-}
-
-SALOME::SenderInt_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const int *tab,long lgr,bool ownTab)throw(MultiCommException){
- switch(multiCommunicator.getProtocol())
- {
- case SALOME::CORBA_:
- {
- SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr,ownTab);
- return retc->_this();
- }
-#ifdef HAVE_MPI2
- case SALOME::MPI_:
- {
- SALOME_MPISenderInt_i* retm=new SALOME_MPISenderInt_i(tab,lgr,ownTab);
- return retm->_this();
- }
-#endif
-#ifdef HAVE_SOCKET
- case SALOME::SOCKET_:
- {
- SALOME_SocketSenderInt_i* rets=new SALOME_SocketSenderInt_i(tab,lgr,ownTab);
- return rets->_this();
- }
-#endif
- default:
- {
- multiCommunicator.setProtocol(SALOME::CORBA_);
- SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr,ownTab);
- return retc->_this();
- }
-// throw MultiCommException("Communication protocol not implemented");
- }
- }
-
-SALOME::SenderDouble_ptr SenderFactory::buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderDouble_i *src)
-{
- SALOMEMultiComm mc(NewType);
- long n;
- const double *data=(const double *)src->getData(n);
- bool own=src->getOwnerShip();
- src->setOwnerShip(false);
- return buildSender(mc,data,n,own);
-}
-
-SALOME::SenderInt_ptr SenderFactory::buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderInt_i *src)
-{
- SALOMEMultiComm mc(NewType);
- long n;
- const int *data=(const int *)src->getData(n);
- bool own=src->getOwnerShip();
- src->setOwnerShip(false);
- return buildSender(mc,data,n,own);
-}
+++ /dev/null
-#ifndef _SENDERFACTORY_HXX_
-#define _SENDERFACTORY_HXX_
-
-#include "MultiCommException.hxx"
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_Comm)
-
-#if defined WNT && defined COMMUNICATION_EXPORTS
-#define COMMUNICATION_EXPORT __declspec( dllexport )
-#else
-#define COMMUNICATION_EXPORT
-#endif
-
-class SALOMEMultiComm;
-
-class SALOME_SenderDouble_i;
-class SALOME_SenderInt_i;
-
-/*!
- This class implements the factory pattern of GoF by making a sender by giving an array and a communicator.It completely hides the type of sender from the user.
- */
-class COMMUNICATION_EXPORT SenderFactory
-{
-public:
- static SALOME::SenderDouble_ptr buildSender(SALOMEMultiComm &multiCommunicator,const double *tab,long lgr,bool ownTab=false) throw(MultiCommException);
- static SALOME::SenderInt_ptr buildSender(SALOMEMultiComm &multiCommunicator,const int *tab,long lgr,bool ownTab=false) throw(MultiCommException);
- static SALOME::SenderDouble_ptr buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderDouble_i *src);
- static SALOME::SenderInt_ptr buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderInt_i *src);
-};
-
-template<class T>
-struct mapCppSender {
- typedef T SenderVarType;
-};
-
-template<>
-struct mapCppSender<int>
-{
- typedef SALOME::SenderInt_var SenderVarType;
-};
-
-template<>
-struct mapCppSender<double>
-{
- typedef SALOME::SenderDouble_var SenderVarType;
-};
-
-#endif
-
+++ /dev/null
-%{
- #include "ReceiverFactory.hxx"
- #include "SALOME_Comm_i.hxx"
-%}
-
-%typemap(python,in) SALOME::SenderDouble_ptr
-{
- PyObject* pdict = PyDict_New();
- PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
- PyRun_String("import CORBA", Py_single_input, pdict, pdict);
-
- PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
- pdict, pdict);
-
- PyObject* orb = PyDict_GetItemString(pdict, "o");
-
- // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
-
- PyObject* iorSupport = PyObject_CallMethod(orb, "object_to_string", "O", $input);
-
- if (iorSupport == Py_None)
- return NULL;
- char * s = PyString_AsString(PyObject_Str(iorSupport));
-
- // Ask omniORB to convert IOR string to SALOME::SenderDouble_ptr
-
- int argc = 0;
- char *xargv = "";
- char **argv = &xargv;
- CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
- CORBA::Object_var O = ORB->string_to_object(s);
- SALOME::SenderDouble_ptr t = SALOME::SenderDouble::_narrow(O);
- $1 = t;
-}
-
-%typemap(python,in) SALOME::SenderInt_ptr
-{
- PyObject* pdict = PyDict_New();
- PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
- PyRun_String("import CORBA", Py_single_input, pdict, pdict);
-
- PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
- pdict, pdict);
-
- PyObject* orb = PyDict_GetItemString(pdict, "o");
-
- // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
-
- PyObject* iorSupport = PyObject_CallMethod(orb, "object_to_string", "O", $input);
-
- if (iorSupport == Py_None)
- return NULL;
- char * s = PyString_AsString(PyObject_Str(iorSupport));
-
- // Ask omniORB to convert IOR string to SALOME::SenderInt_ptr
-
- int argc = 0;
- char *xargv = "";
- char **argv = &xargv;
- CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
- CORBA::Object_var O = ORB->string_to_object(s);
- SALOME::SenderInt_ptr t = SALOME::SenderInt::_narrow(O);
- $1 = t;
-}
-
-PyObject * getValueForSenderDouble(SALOME::SenderDouble_ptr senderDouble);
-
-%{
-PyObject * getValueForSenderDouble(SALOME::SenderDouble_ptr senderDouble)
-{
- PyObject *py_list;
- long size;
- double *ret=ReceiverFactory::getValue(senderDouble,size);
- py_list = PyList_New(size);
- for (int i=0; i < size; i++)
- {
- int err = PyList_SetItem(py_list, i, Py_BuildValue("d", (double) ret[i]));
- if(err)
- {
- char * message = "Error in SUPPORT::getTypes";
- PyErr_SetString(PyExc_RuntimeError, message);
- return NULL;
- }
- }
- PyObject * result = Py_BuildValue("O", py_list);
- delete [] ret;
- Py_DECREF(py_list);
- return result;
-}
-%}
-
-
-PyObject * getValueForSenderInt(SALOME::SenderInt_ptr senderInt);
-
-%{
-PyObject * getValueForSenderInt(SALOME::SenderInt_ptr senderInt)
-{
- PyObject *py_list;
- long size;
- int *ret=ReceiverFactory::getValue(senderInt,size);
- py_list = PyList_New(size);
- for (int i=0; i < size; i++)
- {
- int err = PyList_SetItem(py_list, i, Py_BuildValue("i", (int) ret[i]));
- if(err)
- {
- char * message = "Error in SUPPORT::getTypes";
- PyErr_SetString(PyExc_RuntimeError, message);
- return NULL;
- }
- }
- PyObject * result = Py_BuildValue("O", py_list);
- delete [] ret;
- Py_DECREF(py_list);
- return result;
-}
-%}
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : Component_i.cxx
-// Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA
-// Module : SALOME
-// $Header$
-
-//#define private protected // for pd_refCount trace
-#include "SALOME_Component_i.hxx"
-#include "SALOME_Container_i.hxx"
-#include "RegistryConnexion.hxx"
-#include "OpUtil.hxx"
-#include <stdio.h>
-#ifndef WNT
-#include <dlfcn.h>
-#endif
-#include <cstdlib>
-#include "utilities.h"
-
-#ifndef WNT
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <unistd.h>
-#else
-#include <sys/timeb.h>
-int SIGUSR11 = 1000;
-#endif
-
-
-using namespace std;
-
-extern bool _Sleeping ;
-static Engines_Component_i * theEngines_Component ;
-
-bool Engines_Component_i::_isMultiStudy = true;
-bool Engines_Component_i::_isMultiInstance = false;
-
-//=============================================================================
-/*!
- * Default constructor, not for use
- */
-//=============================================================================
-
-Engines_Component_i::Engines_Component_i()
-{
- //ASSERT(0);
- INFOS("Default Constructor...");
-}
-
-//=============================================================================
-/*!
- * Standard Constructor for generic Component, used in derived class
- * Connection to Registry and Notification
- * \param orb Object Request broker given by Container
- * \parap poa Portable Object Adapter from Container (normally root_poa)
- * \param contId container CORBA id inside the server
- * \param instanceName unique instance name for this object (see Container_i)
- * \param interfaceName component class name
- * \param notif use of notification
- */
-//=============================================================================
-
-Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
- const char *interfaceName,
- bool notif) :
- _instanceName(instanceName),
- _interfaceName(interfaceName),
- _myConnexionToRegistry(0),
- _ThreadId(0) ,
- _ThreadCpuUsed(0) ,
- _Executed(false) ,
- _graphName("") ,
- _nodeName(""),
- _studyId(-1)
-{
- MESSAGE("Component constructor with instanceName "<< _instanceName);
- //SCRUTE(pd_refCount);
- _orb = CORBA::ORB::_duplicate(orb);
- _poa = PortableServer::POA::_duplicate(poa);
- _contId = contId ;
- CORBA::Object_var o = _poa->id_to_reference(*contId); // container ior...
- const CORBA::String_var ior = _orb->object_to_string(o);
- _myConnexionToRegistry = new RegistryConnexion(0, 0, ior,"theSession",
- _instanceName.c_str());
-
- _notifSupplier = new NOTIFICATION_Supplier(instanceName, notif);
- //SCRUTE(pd_refCount);
-}
-
-//=============================================================================
-/*!
- * Standard constructor for parallel component
- * Connection Notification (no connection to Registry !)
- * \param orb Object Request broker given by Container
- * \parap poa Portable Object Adapter from Container (normally root_poa)
- * \param contId container CORBA id inside the server
- * \param instanceName unique instance name for this object (see Container_i)
- * \param interfaceName component class name
- * \param flag not used...
- * \param notif use of notification
- */
-//=============================================================================
-
-Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
- const char *interfaceName,
- int flag,
- bool notif ) :
- _instanceName(instanceName),
- _interfaceName(interfaceName),
- _myConnexionToRegistry(0),
- _ThreadId(0) ,
- _ThreadCpuUsed(0) ,
- _Executed(false) ,
- _graphName("") ,
- _nodeName(""),
- _studyId(-1)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- _poa = PortableServer::POA::_duplicate(poa);
- _contId = contId ;
-
- _notifSupplier = new NOTIFICATION_Supplier(instanceName, notif);
-}
-
-//=============================================================================
-/*!
- * Destructor: call Container for decrement of instances count.
- * When instances count falls to 0, the container tries to remove the
- * component library (dlclose)
- */
-//=============================================================================
-
-Engines_Component_i::~Engines_Component_i()
-{
- MESSAGE("Component destructor");
- Engines_Container_i::decInstanceCnt(_interfaceName);
-}
-
-//=============================================================================
-/*!
- * CORBA method: return name of the instance, unique in this Container
- */
-//=============================================================================
-
-char* Engines_Component_i::instanceName()
-{
- return CORBA::string_dup(_instanceName.c_str()) ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: return name of the component class
- */
-//=============================================================================
-
-char* Engines_Component_i::interfaceName()
-{
- return CORBA::string_dup(_interfaceName.c_str()) ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: Get study Id
- * \return -1: not initialised (Internal Error)
- * 0: multistudy component instance
- * >0: study id associated to this instance
- */
-//=============================================================================
-
-CORBA::Long Engines_Component_i::getStudyId()
-{
- return _studyId;
-}
-
-//=============================================================================
-/*!
- * CORBA method: Test if instance is alive and responds
- */
-//=============================================================================
-
-void Engines_Component_i::ping()
-{
- MESSAGE("Engines_Component_i::ping() pid "<< getpid() << " threadid "
- << pthread_self());
-}
-
-//=============================================================================
-/*!
- * CORBA method: Deactivate this instance. CORBA object is deactivated (do not
- * respond any more to CORBA calls), the connection to Regsitry is removed
- * (Registry informed of deactivation), internal server reference counter on
- * the derived servant class is decremented, to allow destruction of the class
- * (delete) by POA, when there are no more references.
- * -- TO BE USED BY CONTAINER ONLY (Container housekeeping) --
- */
-//=============================================================================
-
-void Engines_Component_i::destroy()
-{
- MESSAGE("Engines_Component_i::destroy()");
- //SCRUTE(pd_refCount);
-
- delete _notifSupplier;
- _notifSupplier = 0;
-
- delete _myConnexionToRegistry;
- _myConnexionToRegistry = 0 ;
- _poa->deactivate_object(*_id) ;
- CORBA::release(_poa) ;
- delete(_id) ;
- //SCRUTE(pd_refCount);
- _thisObj->_remove_ref();
- //SCRUTE(pd_refCount);
- MESSAGE("Engines_Component_i::destroyed") ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: return CORBA reference of the Container
- *
- */
-//=============================================================================
-
-Engines::Container_ptr Engines_Component_i::GetContainerRef()
-{
- MESSAGE("Engines_Component_i::GetContainerRef");
- CORBA::Object_ptr o = _poa->id_to_reference(*_contId) ;
- return Engines::Container::_narrow(o);
-}
-
-//=============================================================================
-/*!
- * CORBA method:
- * Gives a sequence of (key=string,value=any) to the component.
- * Base class component stores the sequence in a map.
- * The map is cleared before.
- * This map is for use by derived classes.
- * \param dico sequence of (key=string,value=any)
- */
-//=============================================================================
-
-void Engines_Component_i::setProperties(const Engines::FieldsDict& dico)
-{
- _fieldsDict.clear();
- for (CORBA::ULong i=0; i<dico.length(); i++)
- {
- std::string cle(dico[i].key);
- _fieldsDict[cle] = dico[i].value;
- }
-}
-
-//=============================================================================
-/*!
- * CORBA method:
- * returns a previously stored map (key=string,value=any) as a sequence.
- * (see setProperties)
- */
-//=============================================================================
-
-Engines::FieldsDict* Engines_Component_i::getProperties()
-{
- Engines::FieldsDict_var copie = new Engines::FieldsDict;
- copie->length(_fieldsDict.size());
- map<std::string,CORBA::Any>::iterator it;
- CORBA::ULong i = 0;
- for (it = _fieldsDict.begin(); it != _fieldsDict.end(); it++, i++)
- {
- std::string cle((*it).first);
- copie[i].key = CORBA::string_dup(cle.c_str());
- copie[i].value = _fieldsDict[cle];
- }
- return copie._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA method: used by Supervision to give names to this instance
- */
-//=============================================================================
-
-void Engines_Component_i::Names( const char * graphName ,
- const char * nodeName )
-{
- _graphName = graphName ;
- _nodeName = nodeName ;
- // MESSAGE("Engines_Component_i::Names( '" << _graphName << "' , '"
- // << _nodeName << "' )");
-}
-
-//=============================================================================
-/*!
- * CORBA method: used in Supervision
- */
-//=============================================================================
-
-bool Engines_Component_i::Kill_impl()
-{
-// MESSAGE("Engines_Component_i::Kill_i() pthread_t "<< pthread_self()
-// << " pid " << getpid() << " instanceName "
-// << _instanceName.c_str() << " interface " << _interfaceName.c_str()
-// << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
-// << dec << " _ThreadId " << _ThreadId << " this " << hex << this
-// << dec ) ;
-
- bool RetVal = false ;
-#ifndef WNT
- if ( _ThreadId > 0 && pthread_self() != _ThreadId )
- {
- RetVal = Killer( _ThreadId , 0 ) ;
- _ThreadId = (pthread_t ) -1 ;
- }
-
-#else
- if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
- {
- RetVal = Killer( *_ThreadId , 0 ) ;
- _ThreadId = (pthread_t* ) 0 ;
- }
-
-#endif
- return RetVal ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: used in Supervision
- */
-//=============================================================================
-
-bool Engines_Component_i::Stop_impl()
-{
- MESSAGE("Engines_Component_i::Stop_i() pthread_t "<< pthread_self()
- << " pid " << getpid() << " instanceName "
- << _instanceName.c_str() << " interface " << _interfaceName.c_str()
- << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
- << dec << " _ThreadId " << _ThreadId );
-
-
- bool RetVal = false ;
-#ifndef WNT
- if ( _ThreadId > 0 && pthread_self() != _ThreadId )
- {
- RetVal = Killer( _ThreadId , 0 ) ;
- _ThreadId = (pthread_t ) -1 ;
- }
-#else
- if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
- {
- RetVal = Killer( *_ThreadId , 0 ) ;
- _ThreadId = (pthread_t* ) 0 ;
- }
-#endif
- return RetVal ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: used in Supervision
- */
-//=============================================================================
-
-bool Engines_Component_i::Suspend_impl()
-{
- MESSAGE("Engines_Component_i::Suspend_i() pthread_t "<< pthread_self()
- << " pid " << getpid() << " instanceName "
- << _instanceName.c_str() << " interface " << _interfaceName.c_str()
- << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
- << dec << " _ThreadId " << _ThreadId );
-
- bool RetVal = false ;
-#ifndef WNT
- if ( _ThreadId > 0 && pthread_self() != _ThreadId )
-#else
- if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
-#endif
- {
- if ( _Sleeping )
- {
- return false ;
- }
- else
- {
-#ifndef WNT
- RetVal = Killer( _ThreadId ,SIGINT ) ;
-#else
- RetVal = Killer( *_ThreadId ,SIGINT ) ;
-#endif
- //if ( RetVal ) _Sleeping = true;
-
- }
- }
- return RetVal ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: used in Supervision
- */
-//=============================================================================
-
-bool Engines_Component_i::Resume_impl()
-{
- MESSAGE("Engines_Component_i::Resume_i() pthread_t "<< pthread_self()
- << " pid " << getpid() << " instanceName "
- << _instanceName.c_str() << " interface " << _interfaceName.c_str()
- << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
- << dec << " _ThreadId " << _ThreadId );
- bool RetVal = false ;
-#ifndef WNT
- if ( _ThreadId > 0 && pthread_self() != _ThreadId )
-#else
- if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
-#endif
- {
- if ( _Sleeping )
- {
- _Sleeping = false ;
- RetVal = true ;
- }
- else
- {
- RetVal = false ;
- }
- }
- return RetVal ;
-}
-
-//=============================================================================
-/*!
- * CORBA method:
- */
-//=============================================================================
-
-CORBA::Long Engines_Component_i::CpuUsed_impl()
-{
- long cpu = 0 ;
- if ( _ThreadId || _Executed )
- {
- if ( _ThreadId > 0 )
- {
-#ifndef WNT
- if ( pthread_self() != _ThreadId )
-#else
- if ( pthread_self().p != _ThreadId->p )
-#endif
- {
- if ( _Sleeping )
- {
- }
- else
- {
- // Get Cpu in the appropriate thread with that object !...
- theEngines_Component = this ;
-#ifndef WNT
- Killer( _ThreadId ,SIGUSR1 ) ;
-#else
- Killer( *_ThreadId ,SIGUSR11 ) ;
-#endif
- }
- cpu = _ThreadCpuUsed ;
- }
- else
- {
- _ThreadCpuUsed = CpuUsed() ;
- cpu = _ThreadCpuUsed ;
- // cout << pthread_self() << " Engines_Component_i::CpuUsed_impl "
- // << _serviceName << " " << cpu << endl ;
- }
- }
- else
- {
- cpu = _ThreadCpuUsed ;
- // cout << pthread_self() << " Engines_Component_i::CpuUsed_impl "
- // << _serviceName << " " << cpu<< endl ;
- }
- }
- else
- {
- // cout<< pthread_self()<<"Engines_Component_i::CpuUsed_impl _ThreadId "
- // <<_ThreadId <<" "<<_serviceName<<" _StartUsed "<<_StartUsed<<endl;
- }
- return cpu ;
-}
-
-
-//=============================================================================
-/*!
- * C++ method: return Container Servant
- */
-//=============================================================================
-
-Engines_Container_i *Engines_Component_i::GetContainerPtr()
-{
- return dynamic_cast<Engines_Container_i*>(_poa->id_to_servant(*_contId)) ;
-}
-
-//=============================================================================
-/*!
- * C++ method: set study Id
- * \param studyId 0 if instance is not associated to a study,
- * >0 otherwise (== study id)
- * \return true if the set of study Id is OK
- * must be set once by Container, at instance creation,
- * and cannot be changed after.
- */
-//=============================================================================
-
-CORBA::Boolean Engines_Component_i::setStudyId(CORBA::Long studyId)
-{
- ASSERT( studyId >= 0);
- CORBA::Boolean ret = false;
- if (_studyId < 0) // --- not yet initialized
- {
- _studyId = studyId;
- ret = true;
- }
- else
- if ( _studyId == studyId) ret = true;
- return ret;
-}
-
-//=============================================================================
-/*!
- * C++ method: return CORBA instance id, the id is set in derived class
- * constructor, when instance is activated.
- */
-//=============================================================================
-
-PortableServer::ObjectId * Engines_Component_i::getId()
-{
-// MESSAGE("PortableServer::ObjectId * Engines_Component_i::getId()");
- return _id ;
-}
-
-//=============================================================================
-/*!
- * C++ method: used by derived classes for supervision
- */
-//=============================================================================
-
-void Engines_Component_i::beginService(const char *serviceName)
-{
- MESSAGE(pthread_self() << "Send BeginService notification for " <<serviceName
- << endl << "Component instance : " << _instanceName << endl << endl);
-#ifndef WNT
- _ThreadId = pthread_self() ;
-#else
- _ThreadId = new pthread_t;
- _ThreadId->p = pthread_self().p ;
- _ThreadId->x = pthread_self().x ;
-#endif
- _StartUsed = 0 ;
- _StartUsed = CpuUsed_impl() ;
- _ThreadCpuUsed = 0 ;
- _Executed = true ;
- _serviceName = serviceName ;
- if ( pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS , NULL ) )
- {
- perror("pthread_setcanceltype ") ;
- exit(0) ;
- }
- if ( pthread_setcancelstate( PTHREAD_CANCEL_ENABLE , NULL ) )
- {
- perror("pthread_setcancelstate ") ;
- exit(0) ;
- }
-// MESSAGE(pthread_self() << " Return from BeginService for " << serviceName
-// << " ThreadId " << _ThreadId << " StartUsed " << _StartUsed
-// << " _graphName " << _graphName << " _nodeName " << _nodeName );
-
- // --- for supervisor : all strings given with setProperties
- // are set in environment
- bool overwrite = true;
- map<std::string,CORBA::Any>::iterator it;
- for (it = _fieldsDict.begin(); it != _fieldsDict.end(); it++)
- {
- std::string cle((*it).first);
- if ((*it).second.type()->kind() == CORBA::tk_string)
- {
- const char* value;
- (*it).second >>= value;
- // ---todo: replace __GNUC__ test by an autoconf macro AC_CHECK_FUNC.
-#if defined __GNUC__
- int ret = setenv(cle.c_str(), value, overwrite);
-#else
- //CCRT porting : setenv not defined in stdlib.h
- std::string s(cle);
- s+='=';
- s+=value;
- // char* cast because 1st arg of linux putenv function
- // is not a const char* !
- int ret=putenv((char *)s.c_str());
- //End of CCRT porting
-#endif
- MESSAGE("--- setenv: "<<cle<<" = "<< value);
- }
- }
-}
-
-//=============================================================================
-/*!
- * C++ method: used by derived classes for supervision
- */
-//=============================================================================
-
-void Engines_Component_i::endService(const char *serviceName)
-{
- _ThreadCpuUsed = CpuUsed_impl() ;
- MESSAGE(pthread_self() << " Send EndService notification for " << serviceName
- << endl << " Component instance : " << _instanceName << " StartUsed "
- << _StartUsed << " _ThreadCpuUsed "<< _ThreadCpuUsed << endl <<endl);
- _ThreadId = 0 ;
-}
-
-//=============================================================================
-/*!
- * C++ method: -- CHECK IF USED --
- */
-//=============================================================================
-
-char* Engines_Component_i::graphName()
-{
- return CORBA::string_dup( _graphName.c_str() ) ;
-}
-
-//=============================================================================
-/*!
- * C++ method: -- CHECK IF USED --
- */
-//=============================================================================
-
-char* Engines_Component_i::nodeName()
-{
- return CORBA::string_dup( _nodeName.c_str() ) ;
-}
-
-//=============================================================================
-/*!
- * C++ method: used in Supervision (see kill_impl)
- */
-//=============================================================================
-
-bool Engines_Component_i::Killer( pthread_t ThreadId , int signum )
-{
-#ifndef WNT
- if ( ThreadId )
-#else
- if ( ThreadId.p )
-#endif
- {
- if ( signum == 0 )
- {
- if ( pthread_cancel( ThreadId ) )
- {
- perror("Killer pthread_cancel error") ;
- return false ;
- }
- else
- {
- MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId
- << " pthread_canceled") ;
- }
- }
- else
- {
- if ( pthread_kill( ThreadId , signum ) == -1 )
- {
- perror("Killer pthread_kill error") ;
- return false ;
- }
- else
- {
- MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId
- << " pthread_killed(" << signum << ")") ;
- }
- }
- }
- return true ;
-}
-
-//=============================================================================
-/*!
- * C++ method:
- */
-//=============================================================================
-
-void SetCpuUsed()
-{
- theEngines_Component->SetCurCpu() ;
-}
-
-//=============================================================================
-/*!
- * C++ method:
- */
-//=============================================================================
-
-void Engines_Component_i::SetCurCpu()
-{
- _ThreadCpuUsed = CpuUsed() ;
- // MESSAGE(pthread_self() <<
- // " Engines_Component_i::SetCurCpu() _ThreadCpuUsed " << _ThreadCpuUsed) ;
-}
-
-//=============================================================================
-/*!
- * C++ method:
- */
-//=============================================================================
-
-long Engines_Component_i::CpuUsed()
-{
- long cpu = 0 ;
-#ifndef WNT
- struct rusage usage ;
- if ( _ThreadId || _Executed )
- {
- if ( getrusage( RUSAGE_SELF , &usage ) == -1 )
- {
- perror("Engines_Component_i::CpuUsed") ;
- return 0 ;
- }
- cpu = usage.ru_utime.tv_sec - _StartUsed ;
- // cout << pthread_self() << " Engines_Component_i::CpuUsed " << " "
- // << _serviceName << usage.ru_utime.tv_sec << " - " << _StartUsed
- // << " = " << cpu << endl ;
- }
- else
- {
- // cout << pthread_self() << "Engines_Component_i::CpuUsed _ThreadId "
- // << _ThreadId << " " << _serviceName<< " _StartUsed "
- // << _StartUsed << endl ;
- }
-#else
- // NOT implementet yet
-#endif
-
-
- return cpu ;
-}
-
-//=============================================================================
-/*!
- * C++ method: Send message to event channel
- */
-//=============================================================================
-
-void Engines_Component_i::sendMessage(const char *event_type,
- const char *message)
-{
- _notifSupplier->Send(graphName(), nodeName(), event_type, message);
-}
-
-//=============================================================================
-/*!
- * C++ method: return standard library name built on component name
- */
-//=============================================================================
-
-string Engines_Component_i::GetDynLibraryName(const char *componentName)
-{
- string ret="lib";
- ret+=componentName;
- ret+="Engine.so";
- return ret;
-}
-
-//=============================================================================
-/*!
- * C++ method: DumpPython default implementation
- */
-//=============================================================================
-
-Engines::TMPFile* Engines_Component_i::DumpPython(CORBA::Object_ptr theStudy,
- CORBA::Boolean isPublished,
- CORBA::Boolean& isValidScript)
-{
- char* aScript = "def RebuildData(theStudy): pass";
- char* aBuffer = new char[strlen(aScript)+1];
- strcpy(aBuffer, aScript);
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer;
- int aBufferSize = strlen(aBuffer)+1;
- Engines::TMPFile_var aStreamFile = new Engines::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1);
- isValidScript = true;
- return aStreamFile._retn();
-}
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : Container_i.cxx
-// Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA
-// Module : SALOME
-// $Header$
-
-//#define private public
-#include <SALOMEconfig.h>
-#ifndef WNT
-#include CORBA_SERVER_HEADER(SALOME_Component)
-#else
-#include <SALOME_Component.hh>
-#endif
-#include "SALOME_Container_i.hxx"
-#include "SALOME_Component_i.hxx"
-#include "SALOME_NamingService.hxx"
-#include "OpUtil.hxx"
-#include <string.h>
-#include <stdio.h>
-#ifndef WNT
-#include <dlfcn.h>
-#include <unistd.h>
-#else
-#include "../../adm/win32/SALOME_WNT.hxx"
-#include <signal.h>
-#include <process.h>
-int SIGUSR1 = 1000;
-#endif
-#include <Python.h>
-#include "Container_init_python.hxx"
-
-#include "utilities.h"
-using namespace std;
-
-bool _Sleeping = false ;
-
-// // Needed by multi-threaded Python --- Supervision
-int _ArgC ;
-char ** _ArgV ;
-
-
-// Containers with name FactoryServer are started via rsh in LifeCycleCORBA
-// Other Containers are started via start_impl of FactoryServer
-
-extern "C" {void ActSigIntHandler() ; }
-#ifndef WNT
-extern "C" {void SigIntHandler(int, siginfo_t *, void *) ; }
-#else
- extern "C" {void SigIntHandler( int ) ; }
-#endif
-
-
-map<std::string, int> Engines_Container_i::_cntInstances_map;
-map<std::string, void *> Engines_Container_i::_library_map;
-map<std::string, void *> Engines_Container_i::_toRemove_map;
-omni_mutex Engines_Container_i::_numInstanceMutex ;
-
-//=============================================================================
-/*!
- * Default constructor, not for use
- */
-//=============================================================================
-
-Engines_Container_i::Engines_Container_i () :
- _numInstance(0)
-{
-}
-
-//=============================================================================
-/*!
- * Construtor to use
- */
-//=============================================================================
-
-Engines_Container_i::Engines_Container_i (CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- char *containerName ,
- int argc , char* argv[],
- bool activAndRegist,
- bool isServantAloneInProcess
- ) :
- _numInstance(0),_isServantAloneInProcess(isServantAloneInProcess)
-{
- _pid = (long)getpid();
-
- if(activAndRegist)
- ActSigIntHandler() ;
-
- _argc = argc ;
- _argv = argv ;
-
- string hostname = GetHostname();
- MESSAGE(hostname << " " << getpid() << " Engines_Container_i starting argc "
- << _argc << " Thread " << pthread_self() ) ;
-
- int i = 0 ;
- while ( _argv[ i ] )
- {
- MESSAGE(" argv" << i << " " << _argv[ i ]) ;
- i++ ;
- }
-
- if ( argc < 2 )
- {
- INFOS("SALOME_Container usage : SALOME_Container ServerName");
- ASSERT(0) ;
- }
- SCRUTE(argv[1]);
- _isSupervContainer = false;
- if (strcmp(argv[1],"SuperVisionContainer") == 0) _isSupervContainer = true;
-
- if (_isSupervContainer)
- {
- _ArgC = argc ;
- _ArgV = argv ;
- }
-
- _orb = CORBA::ORB::_duplicate(orb) ;
- _poa = PortableServer::POA::_duplicate(poa) ;
-
- // Pour les containers paralleles: il ne faut pas enregistrer et activer
- // le container generique, mais le container specialise
-
- if(activAndRegist)
- {
- _id = _poa->activate_object(this);
- _NS = new SALOME_NamingService();
- _NS->init_orb( CORBA::ORB::_duplicate(_orb) ) ;
- CORBA::Object_var obj=_poa->id_to_reference(*_id);
- Engines::Container_var pCont
- = Engines::Container::_narrow(obj);
-
- _containerName = _NS->BuildContainerNameForNS(containerName,
- hostname.c_str());
- SCRUTE(_containerName);
- _NS->Register(pCont, _containerName.c_str());
- MESSAGE("Engines_Container_i::Engines_Container_i : Container name "
- << _containerName);
-
- // Python:
- // import SALOME_Container
- // pycont = SALOME_Container.SALOME_Container_i(containerIORStr)
-
- CORBA::String_var sior = _orb->object_to_string(pCont);
- string myCommand="pyCont = SALOME_Container.SALOME_Container_i('";
- myCommand += _containerName + "','";
- myCommand += sior;
- myCommand += "')\n";
- SCRUTE(myCommand);
-
- if (!_isSupervContainer)
- {
- Py_ACQUIRE_NEW_THREAD;
-#ifdef WNT
- // mpv: this is temporary solution: there is a unregular crash if not
- Sleep(2000);
- PyRun_SimpleString("import sys\n");
- // first element is the path to Registry.dll, but it's wrong
- PyRun_SimpleString("sys.path = sys.path[1:]\n");
-#endif
- PyRun_SimpleString("import SALOME_Container\n");
- PyRun_SimpleString((char*)myCommand.c_str());
- Py_RELEASE_NEW_THREAD;
- }
- }
-}
-
-//=============================================================================
-/*!
- * Destructor
- */
-//=============================================================================
-
-Engines_Container_i::~Engines_Container_i()
-{
- MESSAGE("Container_i::~Container_i()");
- delete _id;
-}
-
-//=============================================================================
-/*!
- * CORBA attribute: Container name (see constructor)
- */
-//=============================================================================
-
-char* Engines_Container_i::name()
-{
- return CORBA::string_dup(_containerName.c_str()) ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: Get the hostName of the Container (without domain extensions)
- */
-//=============================================================================
-
-char* Engines_Container_i::getHostName()
-{
- string s = GetHostname();
- MESSAGE("Engines_Container_i::getHostName " << s);
- return CORBA::string_dup(s.c_str()) ;
-}
-
-//=============================================================================
-/*!
- * CORBA method: Get the PID (process identification) of the Container
- */
-//=============================================================================
-
-CORBA::Long Engines_Container_i::getPID()
-{
- return (CORBA::Long)getpid();
-}
-
-//=============================================================================
-/*!
- * CORBA method: check if servant is still alive
- */
-//=============================================================================
-
-void Engines_Container_i::ping()
-{
- MESSAGE("Engines_Container_i::ping() pid "<< getpid());
-}
-
-//=============================================================================
-/*!
- * CORBA method, oneway: Server shutdown.
- * - Container name removed from naming service,
- * - servant deactivation,
- * - orb shutdown if no other servants in the process
- */
-//=============================================================================
-
-void Engines_Container_i::Shutdown()
-{
- MESSAGE("Engines_Container_i::Shutdown()");
- _NS->Destroy_FullDirectory(_containerName.c_str());
- //_remove_ref();
- //_poa->deactivate_object(*_id);
- if(_isServantAloneInProcess)
- {
- MESSAGE("Effective Shutdown of container Begins...");
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- bp1->deleteInstance(bp1);
- _orb->shutdown(0);
- }
-}
-
-
-//=============================================================================
-/*!
- * CORBA method: load a new component class (Python or C++ implementation)
- * \param componentName like COMPONENT
- * try to make a Python import of COMPONENT,
- * then a lib open of libCOMPONENTEngine.so
- * \return true if dlopen successfull or already done, false otherwise
- */
-//=============================================================================
-
-bool
-Engines_Container_i::load_component_Library(const char* componentName)
-{
-
- string aCompName = componentName;
-
- // --- try dlopen C++ component
-
-#ifndef WNT
- string impl_name = string ("lib") + aCompName + string("Engine.so");
-#else
- string impl_name = aCompName + string("Engine.dll");
-#endif
- SCRUTE(impl_name);
-
- _numInstanceMutex.lock(); // lock to be alone
- // (see decInstanceCnt, finalize_removal))
- if (_toRemove_map[impl_name]) _toRemove_map.erase(impl_name);
- if (_library_map[impl_name])
- {
- MESSAGE("Library " << impl_name << " already loaded");
- _numInstanceMutex.unlock();
- return true;
- }
-
- void* handle;
-#ifndef WNT
- handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ;
-#else
- handle = dlopen( impl_name.c_str() , 0 ) ;
-#endif
- if ( handle )
- {
- _library_map[impl_name] = handle;
- _numInstanceMutex.unlock();
- return true;
- }
- else
- {
- INFOS("Can't load shared library : " << impl_name);
- INFOS("error dlopen: " << dlerror());
- }
- _numInstanceMutex.unlock();
-
- // --- try import Python component
-
- INFOS("try import Python component "<<componentName);
- if (_isSupervContainer)
- {
- INFOS("Supervision Container does not support Python Component Engines");
- return false;
- }
- if (_library_map[aCompName])
- {
- return true; // Python Component, already imported
- }
- else
- {
- Py_ACQUIRE_NEW_THREAD;
- PyObject *mainmod = PyImport_AddModule("__main__");
- PyObject *globals = PyModule_GetDict(mainmod);
- PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
- PyObject *result = PyObject_CallMethod(pyCont,
- "import_component",
- "s",componentName);
- int ret= PyInt_AsLong(result);
- SCRUTE(ret);
- Py_RELEASE_NEW_THREAD;
-
- if (ret) // import possible: Python component
- {
- _library_map[aCompName] = (void *)pyCont; // any non O value OK
- MESSAGE("import Python: "<<aCompName<<" OK");
- return true;
- }
- }
- return false;
-}
-
-//=============================================================================
-/*!
- * CORBA method: Creates a new servant instance of a component.
- * The servant registers itself to naming service and Registry.
- * \param genericRegisterName Name of the component instance to register
- * in Registry & Name Service (without _inst_n suffix)
- * \param studyId 0 for multiStudy instance,
- * study Id (>0) otherwise
- * \return a loaded component
- */
-//=============================================================================
-
-Engines::Component_ptr
-Engines_Container_i::create_component_instance(const char*genericRegisterName,
- CORBA::Long studyId)
-{
- if (studyId < 0)
- {
- INFOS("studyId must be > 0 for mono study instance, =0 for multiStudy");
- return Engines::Component::_nil() ;
- }
-
- Engines::Component_var iobject = Engines::Component::_nil() ;
-
- string aCompName = genericRegisterName;
- if (_library_map[aCompName]) // Python component
- {
- if (_isSupervContainer)
- {
- INFOS("Supervision Container does not support Python Component Engines");
- return Engines::Component::_nil();
- }
- _numInstanceMutex.lock() ; // lock on the instance number
- _numInstance++ ;
- int numInstance = _numInstance ;
- _numInstanceMutex.unlock() ;
-
- char aNumI[12];
- sprintf( aNumI , "%d" , numInstance ) ;
- string instanceName = aCompName + "_inst_" + aNumI ;
- string component_registerName =
- _containerName + "/" + instanceName;
-
- Py_ACQUIRE_NEW_THREAD;
- PyObject *mainmod = PyImport_AddModule("__main__");
- PyObject *globals = PyModule_GetDict(mainmod);
- PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
- PyObject *result = PyObject_CallMethod(pyCont,
- "create_component_instance",
- "ssl",
- aCompName.c_str(),
- instanceName.c_str(),
- studyId);
- string iors = PyString_AsString(result);
- SCRUTE(iors);
- Py_RELEASE_NEW_THREAD;
-
- CORBA::Object_var obj = _orb->string_to_object(iors.c_str());
- iobject = Engines::Component::_narrow( obj ) ;
- return iobject._retn();
- }
-
- //--- try C++
-
-#ifndef WNT
- string impl_name = string ("lib") + genericRegisterName +string("Engine.so");
-#else
- string impl_name = genericRegisterName +string("Engine.dll");
-#endif
- void* handle = _library_map[impl_name];
- if ( !handle )
- {
- INFOS("shared library " << impl_name <<"must be loaded before instance");
- return Engines::Component::_nil() ;
- }
- else
- {
- iobject = createInstance(genericRegisterName,
- handle,
- studyId);
- return iobject._retn();
- }
-}
-
-//=============================================================================
-/*!
- * CORBA method: Finds a servant instance of a component
- * \param registeredName Name of the component in Registry or Name Service,
- * without instance suffix number
- * \param studyId 0 if instance is not associated to a study,
- * >0 otherwise (== study id)
- * \return the first instance found with same studyId
- */
-//=============================================================================
-
-Engines::Component_ptr
-Engines_Container_i::find_component_instance( const char* registeredName,
- CORBA::Long studyId)
-{
- Engines::Component_var anEngine = Engines::Component::_nil();
- map<string,Engines::Component_var>::iterator itm =_listInstances_map.begin();
- while (itm != _listInstances_map.end())
- {
- string instance = (*itm).first;
- SCRUTE(instance);
- if (instance.find(registeredName) == 0)
- {
- anEngine = (*itm).second;
- if (studyId == anEngine->getStudyId())
- {
- return anEngine._retn();
- }
- }
- itm++;
- }
- return anEngine._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA method: find or create an instance of the component (servant),
- * load a new component class (dynamic library) if required,
- * ---- FOR COMPATIBILITY WITH 2.2 ----
- * ---- USE ONLY FOR MULTISTUDY INSTANCES ! --------
- * The servant registers itself to naming service and Registry.
- * \param genericRegisterName Name of the component to register
- * in Registry & Name Service
- * \param componentName Name of the constructed library of the component
- * \return a loaded component
- */
-//=============================================================================
-
-Engines::Component_ptr
-Engines_Container_i::load_impl( const char* genericRegisterName,
- const char* componentName )
-{
- string impl_name = string ("lib") + genericRegisterName +string("Engine.so");
- Engines::Component_var iobject = Engines::Component::_nil() ;
- if (load_component_Library(genericRegisterName))
- iobject = find_or_create_instance(genericRegisterName, impl_name);
- return iobject._retn();
-}
-
-
-//=============================================================================
-/*!
- * CORBA method: Stops the component servant, and deletes all related objects
- * \param component_i Component to be removed
- */
-//=============================================================================
-
-void Engines_Container_i::remove_impl(Engines::Component_ptr component_i)
-{
- ASSERT(! CORBA::is_nil(component_i));
- string instanceName = component_i->instanceName() ;
- MESSAGE("unload component " << instanceName);
- _listInstances_map.erase(instanceName);
- component_i->destroy() ;
- _NS->Destroy_Name(instanceName.c_str());
-}
-
-//=============================================================================
-/*!
- * CORBA method: Discharges unused libraries from the container.
- */
-//=============================================================================
-
-void Engines_Container_i::finalize_removal()
-{
- MESSAGE("finalize unload : dlclose");
- _numInstanceMutex.lock(); // lock to be alone
- // (see decInstanceCnt, load_component_Library)
- map<string, void *>::iterator ith;
- for (ith = _toRemove_map.begin(); ith != _toRemove_map.end(); ith++)
- {
- void *handle = (*ith).second;
- string impl_name= (*ith).first;
- if (handle)
- {
- SCRUTE(handle);
- SCRUTE(impl_name);
-// dlclose(handle); // SALOME unstable after ...
-// _library_map.erase(impl_name);
- }
- }
- _toRemove_map.clear();
- _numInstanceMutex.unlock();
-}
-
-//=============================================================================
-/*!
- * CORBA method: Kill the container process with exit(0).
- * To remove : never returns !
- */
-//=============================================================================
-
-bool Engines_Container_i::Kill_impl()
-{
- MESSAGE("Engines_Container_i::Kill() pid "<< getpid() << " containerName "
- << _containerName.c_str() << " machineName "
- << GetHostname().c_str());
- INFOS("===============================================================");
- INFOS("= REMOVE calls to Kill_impl in C++ container =");
- INFOS("===============================================================");
- //exit( 0 ) ;
- ASSERT(0);
- return false;
-}
-
-//=============================================================================
-/*!
- * C++ method: Finds an already existing servant instance of a component, or
- * create an instance.
- * ---- USE ONLY FOR MULTISTUDY INSTANCES ! --------
- * \param genericRegisterName Name of the component instance to register
- * in Registry & Name Service,
- * (without _inst_n suffix, like "COMPONENT")
- * \param componentLibraryName like "libCOMPONENTEngine.so"
- * \return a loaded component
- *
- * example with names:
- * aGenRegisterName = COMPONENT (= first argument)
- * impl_name = libCOMPONENTEngine.so (= second argument)
- * _containerName = /Containers/cli76ce/FactoryServer
- * factoryName = COMPONENTEngine_factory
- * component_registerBase = /Containers/cli76ce/FactoryServer/COMPONENT
- *
- * instanceName = COMPONENT_inst_1
- * component_registerName = /Containers/cli76ce/FactoryServer/COMPONENT_inst_1
- */
-//=============================================================================
-
-Engines::Component_ptr
-Engines_Container_i::find_or_create_instance(string genericRegisterName,
- string componentLibraryName)
-{
- string aGenRegisterName = genericRegisterName;
- string impl_name = componentLibraryName;
- void* handle = _library_map[impl_name];
- if ( !handle )
- {
- INFOS("shared library " << impl_name <<"must be loaded before instance");
- return Engines::Component::_nil() ;
- }
- else
- {
- // --- find a registered instance in naming service, or create
-
- string component_registerBase =
- _containerName + "/" + aGenRegisterName;
- Engines::Component_var iobject = Engines::Component::_nil() ;
- try
- {
- CORBA::Object_var obj =
- _NS->ResolveFirst( component_registerBase.c_str());
- if ( CORBA::is_nil( obj ) )
- {
- iobject = createInstance(genericRegisterName,
- handle,
- 0); // force multiStudy instance here !
- }
- else
- {
- iobject = Engines::Component::_narrow( obj ) ;
- Engines_Component_i *servant =
- dynamic_cast<Engines_Component_i*>
- (_poa->reference_to_servant(iobject));
- ASSERT(servant)
- int studyId = servant->getStudyId();
- ASSERT (studyId >= 0);
- if (studyId == 0) // multiStudy instance, OK
- {
- // No ReBind !
- MESSAGE(component_registerBase.c_str()<<" already bound");
- }
- else // monoStudy instance: NOK
- {
- iobject = Engines::Component::_nil();
- INFOS("load_impl & find_component_instance methods "
- << "NOT SUITABLE for mono study components");
- }
- }
- }
- catch (...)
- {
- INFOS( "Container_i::load_impl catched" ) ;
- }
- return iobject._retn();
- }
-}
-
-//=============================================================================
-/*!
- * C++ method: create a servant instance of a component.
- * \param genericRegisterName Name of the component instance to register
- * in Registry & Name Service,
- * (without _inst_n suffix, like "COMPONENT")
- * \param handle loaded library handle
- * \param studyId 0 for multiStudy instance,
- * study Id (>0) otherwise
- * \return a loaded component
- *
- * example with names:
- * aGenRegisterName = COMPONENT (= first argument)
- * _containerName = /Containers/cli76ce/FactoryServer
- * factoryName = COMPONENTEngine_factory
- * component_registerBase = /Containers/cli76ce/FactoryServer/COMPONENT
- * instanceName = COMPONENT_inst_1
- * component_registerName = /Containers/cli76ce/FactoryServer/COMPONENT_inst_1
- */
-//=============================================================================
-
-Engines::Component_ptr
-Engines_Container_i::createInstance(string genericRegisterName,
- void *handle,
- int studyId)
-{
- // --- find the factory
-
- string aGenRegisterName = genericRegisterName;
- string factory_name = aGenRegisterName + string("Engine_factory");
- SCRUTE(factory_name) ;
-
- typedef PortableServer::ObjectId * (*FACTORY_FUNCTION)
- (CORBA::ORB_ptr,
- PortableServer::POA_ptr,
- PortableServer::ObjectId *,
- const char *,
- const char *) ;
-
- FACTORY_FUNCTION Component_factory
- = (FACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
-
- char *error ;
- if ( (error = dlerror() ) != NULL)
- {
- INFOS("Can't resolve symbol: " + factory_name);
- SCRUTE(error);
- return Engines::Component::_nil() ;
- }
-
- // --- create instance
-
- Engines::Component_var iobject = Engines::Component::_nil() ;
-
- try
- {
- _numInstanceMutex.lock() ; // lock on the instance number
- _numInstance++ ;
- int numInstance = _numInstance ;
- _numInstanceMutex.unlock() ;
-
- char aNumI[12];
- sprintf( aNumI , "%d" , numInstance ) ;
- string instanceName = aGenRegisterName + "_inst_" + aNumI ;
- string component_registerName =
- _containerName + "/" + instanceName;
-
- // --- Instanciate required CORBA object
-
- PortableServer::ObjectId *id ; //not owner, do not delete (nore use var)
- id = (Component_factory) ( _orb, _poa, _id, instanceName.c_str(),
- aGenRegisterName.c_str() ) ;
-
- // --- get reference & servant from id
-
- CORBA::Object_var obj = _poa->id_to_reference(*id);
- iobject = Engines::Component::_narrow( obj ) ;
-
- Engines_Component_i *servant =
- dynamic_cast<Engines_Component_i*>(_poa->reference_to_servant(iobject));
- ASSERT(servant);
- //SCRUTE(servant->pd_refCount);
- servant->_remove_ref(); // compensate previous id_to_reference
- //SCRUTE(servant->pd_refCount);
- _listInstances_map[instanceName] = iobject;
- _cntInstances_map[aGenRegisterName] += 1;
- SCRUTE(aGenRegisterName);
- SCRUTE(_cntInstances_map[aGenRegisterName]);
- //SCRUTE(servant->pd_refCount);
- bool ret_studyId = servant->setStudyId(studyId);
- ASSERT(ret_studyId);
-
- // --- register the engine under the name
- // containerName(.dir)/instanceName(.object)
-
- _NS->Register( iobject , component_registerName.c_str() ) ;
- MESSAGE( component_registerName.c_str() << " bound" ) ;
- }
- catch (...)
- {
- INFOS( "Container_i::createInstance exception catched" ) ;
- }
- return iobject._retn();
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-void Engines_Container_i::decInstanceCnt(string genericRegisterName)
-{
- string aGenRegisterName =genericRegisterName;
- MESSAGE("Engines_Container_i::decInstanceCnt " << aGenRegisterName);
- ASSERT(_cntInstances_map[aGenRegisterName] > 0);
- _numInstanceMutex.lock(); // lock to be alone
- // (see finalize_removal, load_component_Library)
- _cntInstances_map[aGenRegisterName] -= 1;
- SCRUTE(_cntInstances_map[aGenRegisterName]);
- if (_cntInstances_map[aGenRegisterName] == 0)
- {
- string impl_name =
- Engines_Component_i::GetDynLibraryName(aGenRegisterName.c_str());
- SCRUTE(impl_name);
- void* handle = _library_map[impl_name];
- ASSERT(handle);
- _toRemove_map[impl_name] = handle;
- }
- _numInstanceMutex.unlock();
-}
-
-//=============================================================================
-/*!
- * Retrieves only with container naming convention if it is a python container
- */
-//=============================================================================
-
-bool Engines_Container_i::isPythonContainer(const char* ContainerName)
-{
- bool ret=false;
- int len=strlen(ContainerName);
- if(len>=2)
- if(strcmp(ContainerName+len-2,"Py")==0)
- ret=true;
- return ret;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-void ActSigIntHandler()
-{
-#ifndef WNT
- struct sigaction SigIntAct ;
- SigIntAct.sa_sigaction = &SigIntHandler ;
- SigIntAct.sa_flags = SA_SIGINFO ;
-#endif
-
-// DEBUG 03.02.2005 : the first parameter of sigaction is not a mask of signals
-// (SIGINT | SIGUSR1) :
-// it must be only one signal ===> one call for SIGINT
-// and an other one for SIGUSR1
-#ifndef WNT
- if ( sigaction( SIGINT , &SigIntAct, NULL ) ) {
- perror("SALOME_Container main ") ;
- exit(0) ;
- }
- if ( sigaction( SIGUSR1 , &SigIntAct, NULL ) ) {
- perror("SALOME_Container main ") ;
- exit(0) ;
- }
- //PAL9042 JR : during the execution of a Signal Handler (and of methods called through Signal Handlers)
- // use of streams (and so on) should never be used because :
- // streams of C++ are naturally thread-safe and use pthread_mutex_lock ===>
- // A stream operation may be interrupted by a signal and if the Handler use stream we
- // may have a "Dead-Lock" ===HangUp
- //==INFOS is commented
- // INFOS(pthread_self() << "SigIntHandler activated") ;
-#else
- signal( SIGINT, SigIntHandler );
- signal( SIGUSR1, SigIntHandler );
-#endif
-
-}
-
-void SetCpuUsed() ;
-
-#ifndef WNT
-void SigIntHandler(int what , siginfo_t * siginfo ,
- void * toto ) {
- //PAL9042 JR : during the execution of a Signal Handler (and of methods called through Signal Handlers)
- // use of streams (and so on) should never be used because :
- // streams of C++ are naturally thread-safe and use pthread_mutex_lock ===>
- // A stream operation may be interrupted by a signal and if the Handler use stream we
- // may have a "Dead-Lock" ===HangUp
- //==MESSAGE is commented
- // MESSAGE(pthread_self() << "SigIntHandler what " << what << endl
- // << " si_signo " << siginfo->si_signo << endl
- // << " si_code " << siginfo->si_code << endl
- // << " si_pid " << siginfo->si_pid) ;
- if ( _Sleeping ) {
- _Sleeping = false ;
- // MESSAGE("SigIntHandler END sleeping.") ;
- return ;
- }
- else {
- ActSigIntHandler() ;
- if ( siginfo->si_signo == SIGUSR1 ) {
- SetCpuUsed() ;
- }
- else {
- _Sleeping = true ;
- // MESSAGE("SigIntHandler BEGIN sleeping.") ;
- int count = 0 ;
- while( _Sleeping ) {
- sleep( 1 ) ;
- count += 1 ;
- }
- // MESSAGE("SigIntHandler LEAVE sleeping after " << count << " s.") ;
- }
- return ;
- }
-}
-#else // Case WNT
-void SigIntHandler( int what ) {
- MESSAGE( pthread_self() << "SigIntHandler what " << what << endl );
- if ( _Sleeping ) {
- _Sleeping = false ;
- MESSAGE("SigIntHandler END sleeping.") ;
- return ;
- }
- else {
- ActSigIntHandler() ;
- if ( what == SIGUSR1 ) {
- SetCpuUsed() ;
- }
- else {
- _Sleeping = true ;
- MESSAGE("SigIntHandler BEGIN sleeping.") ;
- int count = 0 ;
- while( _Sleeping ) {
- Sleep( 1000 ) ;
- count += 1 ;
- }
- MESSAGE("SigIntHandler LEAVE sleeping after " << count << " s.") ;
- }
- return ;
- }
-}
-#endif
-
-//=============================================================================
-/*!
- * CORBA method: Create one instance of componentName component
- * and register it as genericRegisterName in naming service
- */
-//=============================================================================
-
-// Engines::Component_ptr Engines_Container_i::instance( const char* genericRegisterName,
-// const char* componentName )
-// {
-// _numInstanceMutex.lock() ; // lock on the instance number
-// BEGIN_OF( "Container_i::instance " << componentName ) ;
-
-// string _genericRegisterName = genericRegisterName;
-// string component_registerName = _containerName + "/" + _genericRegisterName;
-
-// Engines::Component_var iobject = Engines::Component::_nil() ;
-
-// try
-// {
-// CORBA::Object_var obj = _NS->Resolve( component_registerName.c_str() ) ;
-// if (! CORBA::is_nil( obj ) )
-// {
-// MESSAGE( "Container_i::instance " << component_registerName.c_str() << " already registered" ) ;
-// iobject = Engines::Component::_narrow( obj ) ;
-// }
-// else
-// {
-// string _compo_name = componentName;
-// string _impl_name = "lib" + _compo_name + "Engine.so";
-// SCRUTE(_impl_name);
-
-// void* handle;
-// handle = dlopen( _impl_name.c_str() , RTLD_LAZY ) ;
-
-// if ( handle )
-// {
-// string factory_name = _compo_name + "Engine_factory";
-// SCRUTE(factory_name) ;
-
-// typedef PortableServer::ObjectId * (*FACTORY_FUNCTION)
-// (CORBA::ORB_ptr,
-// PortableServer::POA_ptr,
-// PortableServer::ObjectId *,
-// const char *,
-// const char *) ;
-// FACTORY_FUNCTION Component_factory = (FACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
-
-// char *error ;
-// if ( (error = dlerror() ) == NULL)
-// {
-// // Instanciate required CORBA object
-// _numInstance++ ;
-// char _aNumI[12];
-// sprintf( _aNumI , "%d" , _numInstance ) ;
-// string instanceName = _compo_name + "_inst_" + _aNumI ;
-// SCRUTE(instanceName);
-
-// PortableServer::ObjectId * id ;
-// id = (Component_factory) ( _orb, _poa, _id, instanceName.c_str() ,
-// _genericRegisterName.c_str() ) ;
-// // get reference from id
-// obj = _poa->id_to_reference(*id);
-// iobject = Engines::Component::_narrow( obj ) ;
-
-// // register the engine under the name containerName.dir/genericRegisterName.object
-// _NS->Register( iobject , component_registerName.c_str() ) ;
-// MESSAGE( "Container_i::instance " << component_registerName.c_str() << " registered" ) ;
-// _handle_map[instanceName] = handle;
-// }
-// else
-// {
-// INFOS("Can't resolve symbol: " + factory_name);
-// SCRUTE(error);
-// }
-// }
-// else
-// {
-// INFOS("Can't load shared library : " << _impl_name);
-// INFOS("error dlopen: " << dlerror());
-// }
-// }
-// }
-// catch (...)
-// {
-// INFOS( "Container_i::instance exception caught" ) ;
-// }
-// END_OF("Container_i::instance");
-// _numInstanceMutex.unlock() ;
-// return Engines::Component::_duplicate(iobject);
-// }
-
-//=============================================================================
-/*!
- * CORBA attribute: Machine Name (hostname without domain extensions)
- */
-//=============================================================================
-
-// char* Engines_Container_i::machineName()
-// {
-// string s = GetHostname();
-// MESSAGE("Engines_Container_i::machineName " << s);
-// return CORBA::string_dup(s.c_str()) ;
-// }
-
-
+++ /dev/null
-# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : Makefile.in
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS = SALOME_ComponentPy.py \
- SALOME_ContainerPy.py \
- SALOME_Container.py
-
-EXPORT_HEADERS = \
- SALOME_Component_i.hxx \
- SALOME_Container_i.hxx \
- SALOME_ContainerManager.hxx \
- Container_init_python.hxx
-
-# Libraries targets
-
-LIB = libSalomeContainer.la
-LIB_SRC = Component_i.cxx \
- Container_i.cxx \
- SALOME_ContainerManager.cxx \
- Container_init_python.cxx
-
-LIB_SERVER_IDL = SALOME_Registry.idl SALOME_Component.idl SALOME_ContainerManager.idl SALOME_Exception.idl
-LIB_CLIENT_IDL =
-
-# Executables targets
-BIN = SALOME_Container SALOME_ContainerManagerServer
-BIN_SRC = SALOME_Container_SignalsHandler.cxx
-BIN_SERVER_IDL = SALOME_Component.idl SALOME_ContainerManager.idl
-
-CPPFLAGS+= $(PYTHON_INCLUDES) $(MPI_INCLUDE) $(OCC_INCLUDES) $(QT_MT_INCLUDES)
-CXXFLAGS+=$(OCC_CXXFLAGS)
-
-LDFLAGS+= $(QT_MT_LIBS) -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSALOMELocalTrace -lSalomeResourcesManager
-
-LIBS += @LDEXPDYNFLAGS@ $(PYTHON_LIBS) $(MPI_LIBS)
-
-LDFLAGSFORBIN= $(LDFLAGS) -lSALOMEBasics
-LIBSFORBIN= $(LIBS)
-@CONCLUDE@
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : SALOME_Container.cxx
-// Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA
-// Module : SALOME
-// $Header$
-
-#include <iostream>
-#include <string>
-#include <stdio.h>
-
-#ifndef WNT
-#include <unistd.h>
-#else
-#include <process.h>
-#endif
-#include "SALOME_Container_i.hxx"
-#include "utilities.h"
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-#include "SALOMETraceCollector.hxx"
-#include "OpUtil.hxx"
-
-#ifdef CHECKTIME
-#include <Utils_Timer.hxx>
-#endif
-
-#ifdef HAVE_MPI2
-#include <mpi.h>
-#endif
-
-#include "Container_init_python.hxx"
-
-using namespace std;
-
-extern "C" void HandleServerSideSignals(CORBA::ORB_ptr theORB);
-
-int main(int argc, char* argv[])
-{
-#ifdef HAVE_MPI2
- MPI_Init(&argc,&argv);
-#endif
-
- // Initialise the ORB.
- //SRN: BugID: IPAL9541, it's necessary to set a size of one message to be at least 100Mb
- //CORBA::ORB_var orb = CORBA::ORB_init( argc , argv ) ;
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
- CORBA::ORB_var orb = init(0 , 0 ) ;
-
- // LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
- INFOS_COMPILATION;
- BEGIN_OF(argv[0]);
-
- ASSERT(argc > 1);
- SCRUTE(argv[1]);
- bool isSupervContainer = false;
- if (strcmp(argv[1],"SuperVisionContainer") == 0) isSupervContainer = true;
-
- if (!isSupervContainer)
- {
- int _argc = 1;
- char* _argv[] = {""};
- KERNEL_PYTHON::init_python(argc,argv);
- }
- else
- {
- Py_Initialize() ;
- PySys_SetArgv( argc , argv ) ;
- }
-
- char *containerName = "";
- if(argc > 1)
- {
- containerName = argv[1] ;
- }
-
- try
- {
- CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
- ASSERT(!CORBA::is_nil(obj));
- PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
-
- PortableServer::POAManager_var pman = root_poa->the_POAManager();
-
- // add new container to the kill list
-#ifndef WNT
- char aCommand[40];
- sprintf(aCommand, "addToKillList.py %d SALOME_Container", getpid());
- system(aCommand);
-#endif
-
- Engines_Container_i * myContainer
- = new Engines_Container_i(orb, root_poa, containerName , argc , argv );
-
- pman->activate();
-
-#ifdef CHECKTIME
- Utils_Timer timer;
- timer.Start();
- timer.Stop();
- MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
- timer.ShowAbsolute();
-#endif
-
- HandleServerSideSignals(orb);
-
- }
- catch(CORBA::SystemException&)
- {
- INFOS("Caught CORBA::SystemException.");
- }
- catch(PortableServer::POA::ServantAlreadyActive&)
- {
- INFOS("Caught CORBA::ServantAlreadyActiveException");
- }
- catch(CORBA::Exception&)
- {
- INFOS("Caught CORBA::Exception.");
- }
- catch(std::exception& exc)
- {
- INFOS("Caught std::exception - "<<exc.what());
- }
- catch(...)
- {
- INFOS("Caught unknown exception.");
- }
-
-#ifdef HAVE_MPI2
- MPI_Finalize();
-#endif
-
- //END_OF(argv[0]);
- //LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- //bp1->deleteInstance(bp1);
- return 0 ;
-}
-
+++ /dev/null
-#include "SALOME_ContainerManager.hxx"
-#include "SALOME_NamingService.hxx"
-#include "OpUtil.hxx"
-#include <sys/types.h>
-#ifndef WNT
-#include <unistd.h>
-#endif
-#include <vector>
-#include "Utils_CorbaException.hxx"
-
-#define TIME_OUT_TO_LAUNCH_CONT 21
-
-using namespace std;
-
-const char *SALOME_ContainerManager::_ContainerManagerNameInNS =
- "/ContainerManager";
-
-//=============================================================================
-/*!
- * Constructor
- * \param orb
- * Define a CORBA single thread policy for the server, which avoid to deal
- * with non thread-safe usage like Change_Directory in SALOME naming service
- */
-//=============================================================================
-
-SALOME_ContainerManager::SALOME_ContainerManager(CORBA::ORB_ptr orb)
-{
- MESSAGE("constructor");
- _NS = new SALOME_NamingService(orb);
- _ResManager = new SALOME_ResourcesManager(orb);
- PortableServer::POA_var root_poa = PortableServer::POA::_the_root_poa();
- PortableServer::POAManager_var pman = root_poa->the_POAManager();
- PortableServer::POA_var my_poa;
-
- CORBA::PolicyList policies;
- policies.length(1);
- PortableServer::ThreadPolicy_var threadPol =
- root_poa->create_thread_policy(PortableServer::SINGLE_THREAD_MODEL);
- policies[0] = PortableServer::ThreadPolicy::_duplicate(threadPol);
-
- my_poa =
- root_poa->create_POA("SThreadPOA",pman,policies);
- threadPol->destroy();
- PortableServer::ObjectId_var id = my_poa->activate_object(this);
- CORBA::Object_var obj = my_poa->id_to_reference(id);
- Engines::ContainerManager_var refContMan =
- Engines::ContainerManager::_narrow(obj);
-
- _NS->Register(refContMan,_ContainerManagerNameInNS);
- MESSAGE("constructor end");
-}
-
-//=============================================================================
-/*!
- * destructor
- */
-//=============================================================================
-
-SALOME_ContainerManager::~SALOME_ContainerManager()
-{
- MESSAGE("destructor");
- delete _NS;
- delete _ResManager;
-}
-
-//=============================================================================
-/*! CORBA method:
- * shutdown all the containers, then the ContainerManager servant
- */
-//=============================================================================
-
-void SALOME_ContainerManager::Shutdown()
-{
- MESSAGE("Shutdown");
- ShutdownContainers();
- PortableServer::ObjectId_var oid = _default_POA()->servant_to_id(this);
- _default_POA()->deactivate_object(oid);
- _remove_ref();
-
-}
-
-//=============================================================================
-/*! CORBA Method:
- * Loop on all the containers listed in naming service, ask shutdown on each
- */
-//=============================================================================
-
-void SALOME_ContainerManager::ShutdownContainers()
-{
- MESSAGE("ShutdownContainers");
- _NS->Change_Directory("/Containers");
- vector<string> vec = _NS->list_directory_recurs();
- for(vector<string>::iterator iter = vec.begin();iter!=vec.end();iter++)
- {
- SCRUTE((*iter));
- CORBA::Object_var obj=_NS->Resolve((*iter).c_str());
- Engines::Container_var cont=Engines::Container::_narrow(obj);
- if(!CORBA::is_nil(cont))
- {
- MESSAGE("ShutdownContainers: " << (*iter));
- cont->Shutdown();
- }
- else MESSAGE("ShutdownContainers: no container ref for " << (*iter));
- }
-}
-
-//=============================================================================
-/*! CORBA Method:
- * Find a suitable Container in a list of machines, or start one
- * \param params Machine Parameters required for the container
- * \param possibleComputers list of machines usable for find or start
- */
-//=============================================================================
-
-Engines::Container_ptr
-SALOME_ContainerManager::
-FindOrStartContainer(const Engines::MachineParameters& params,
- const Engines::MachineList& possibleComputers)
-{
- Engines::Container_ptr ret = FindContainer(params,possibleComputers);
- if(!CORBA::is_nil(ret))
- return ret;
- MESSAGE("Container doesn't exist try to launch it ...");
- MESSAGE("SALOME_ContainerManager::FindOrStartContainer " <<
- possibleComputers.length());
- //vector<string> vector;
- string theMachine=_ResManager->FindBest(possibleComputers);
- MESSAGE("try to launch it on " << theMachine);
-
- string command;
- if(theMachine=="")
- {
- MESSAGE("SALOME_ContainerManager::FindOrStartContainer : " <<
- "no possible computer");
- return Engines::Container::_nil();
- }
- else if(theMachine==GetHostname())
- {
- command=_ResManager->BuildCommandToLaunchLocalContainer(params);
- }
- else
- command =
- _ResManager->BuildCommandToLaunchRemoteContainer(theMachine,params);
-
- _ResManager->RmTmpFile();
- int status=system(command.c_str());
- if (status == -1)
- {
- MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed " <<
- "(system command status -1)");
- return Engines::Container::_nil();
- }
- else if (status == 217)
- {
- MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed " <<
- "(system command status 217)");
- return Engines::Container::_nil();
- }
- else
- {
- int count=TIME_OUT_TO_LAUNCH_CONT;
- while ( CORBA::is_nil(ret) && count )
- {
-#ifndef WNT
- sleep( 1 ) ;
-#else
- Sleep(1000);
-#endif
- count-- ;
- if ( count != 10 )
- MESSAGE( count << ". Waiting for FactoryServer on " << theMachine);
- string containerNameInNS =
- _NS->BuildContainerNameForNS(params,theMachine.c_str());
- SCRUTE(containerNameInNS);
- CORBA::Object_var obj = _NS->Resolve(containerNameInNS.c_str());
- ret=Engines::Container::_narrow(obj);
- }
- if ( CORBA::is_nil(ret) )
- {
- MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed");
- }
- return ret;
- }
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-Engines::MachineList *
-SALOME_ContainerManager::
-GetFittingResources(const Engines::MachineParameters& params,
- const char *componentName)
-{
- MESSAGE("SALOME_ContainerManager::GetFittingResources");
- Engines::MachineList *ret=new Engines::MachineList;
- vector<string> vec;
- try
- {
- vec = _ResManager->GetFittingResources(params,componentName);
- }
- catch(const SALOME_Exception &ex)
- {
- INFOS("Caught exception.");
- THROW_SALOME_CORBA_EXCEPTION(ex.what(),SALOME::BAD_PARAM);
- //return ret;
- }
-
- MESSAGE("Machine list length "<<vec.size());
- ret->length(vec.size());
- for(unsigned int i=0;i<vec.size();i++)
- {
- (*ret)[i]=(vec[i]).c_str();
- }
- return ret;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-char*
-SALOME_ContainerManager::
-FindBest(const Engines::MachineList& possibleComputers)
-{
- string theMachine=_ResManager->FindBest(possibleComputers);
- return CORBA::string_dup(theMachine.c_str());
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-Engines::Container_ptr
-SALOME_ContainerManager::
-FindContainer(const Engines::MachineParameters& params,
- const char *theMachine)
-{
- string containerNameInNS(_NS->BuildContainerNameForNS(params,theMachine));
- CORBA::Object_var obj = _NS->Resolve(containerNameInNS.c_str());
- if( !CORBA::is_nil(obj) )
- return Engines::Container::_narrow(obj);
- else
- return Engines::Container::_nil();
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-Engines::Container_ptr
-SALOME_ContainerManager::
-FindContainer(const Engines::MachineParameters& params,
- const Engines::MachineList& possibleComputers)
-{
- MESSAGE("FindContainer "<<possibleComputers.length());
- for(unsigned int i=0;i<possibleComputers.length();i++)
- {
- MESSAGE("FindContainer possible " << possibleComputers[i]);
- Engines::Container_ptr cont = FindContainer(params,possibleComputers[i]);
- if( !CORBA::is_nil(cont) )
- return cont;
- }
- MESSAGE("FindContainer: not found");
- return Engines::Container::_nil();
-}
+++ /dev/null
-#ifndef __SALOME_CONTAINERMANAGER_HXX__
-#define __SALOME_CONTAINERMANAGER_HXX__
-
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOME_Component)
-#include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
-#include "SALOME_ResourcesManager.hxx"
-#include "SALOME_LoadRateManager.hxx"
-
-#include <string>
-
-class SALOME_NamingService;
-
-#if defined CONTAINER_EXPORTS
-#if defined WIN32
-#define CONTAINER_EXPORT __declspec( dllexport )
-#else
-#define CONTAINER_EXPORT
-#endif
-#else
-#if defined WNT
-#define CONTAINER_EXPORT __declspec( dllimport )
-#else
-#define CONTAINER_EXPORT
-#endif
-#endif
-
-class CONTAINER_EXPORT SALOME_ContainerManager:
- public POA_Engines::ContainerManager,
- public PortableServer::RefCountServantBase
-{
-
-public:
- SALOME_ContainerManager(CORBA::ORB_ptr orb);
- ~SALOME_ContainerManager();
-
- Engines::Container_ptr
- FindOrStartContainer(const Engines::MachineParameters& params,
- const Engines::MachineList& possibleComputer);
-
- Engines::MachineList *
- GetFittingResources(const Engines::MachineParameters& params,
- const char *componentName);
-
- char* FindBest(const Engines::MachineList& possibleComputers);
-
- void Shutdown();
- void ShutdownContainers();
-
- static const char *_ContainerManagerNameInNS;
-
-private:
- Engines::Container_ptr
- FindContainer(const Engines::MachineParameters& params,
- const Engines::MachineList& possibleComputers);
-
- Engines::Container_ptr
- FindContainer(const Engines::MachineParameters& params,
- const char *theMachine);
-
- SALOME_ResourcesManager *_ResManager;
- SALOME_NamingService *_NS;
-};
-
-#endif
+++ /dev/null
-#include "SALOME_ContainerManager.hxx"
-#include "SALOMETraceCollector.hxx"
-#include "utilities.h"
-
-int main(int argc, char* argv[])
-{
- PortableServer::POA_var root_poa;
- PortableServer::POAManager_var pman;
- CORBA::Object_var obj;
-
- CORBA::ORB_var orb = CORBA::ORB_init( argc , argv ) ;
- // LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
- INFOS_COMPILATION;
- BEGIN_OF(argv[0]);
- try{
- obj = orb->resolve_initial_references("RootPOA");
- if(!CORBA::is_nil(obj))
- root_poa = PortableServer::POA::_narrow(obj);
- if(!CORBA::is_nil(root_poa))
- pman = root_poa->the_POAManager();
- }
- catch(CORBA::COMM_FAILURE&){
- MESSAGE( "Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
- }
- try{
- SALOME_ContainerManager *cmServ=new SALOME_ContainerManager(orb);
- pman->activate();
- orb->run();
- }catch(CORBA::SystemException&){
- MESSAGE("Caught CORBA::SystemException.");
- }catch(PortableServer::POA::WrongPolicy&){
- MESSAGE("Caught CORBA::WrongPolicyException.");
- }catch(PortableServer::POA::ServantAlreadyActive&){
- MESSAGE("Caught CORBA::ServantAlreadyActiveException");
- }catch(CORBA::Exception&){
- MESSAGE("Caught CORBA::Exception.");
- }catch(std::exception& exc){
- MESSAGE("Caught std::exception - "<<exc.what());
- }catch(...){
- MESSAGE("Caught unknown exception.");
- }
- END_OF(argv[0]);
- // delete myThreadTrace;
-}
-
+++ /dev/null
-#! /usr/bin/env python
-#
-# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : SALOME_ContainerPy.py
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-import os
-import sys
-import string
-from omniORB import CORBA, PortableServer
-# import SALOMEDS before other SALOME modules
-# (if not, incomplete import done by SALOME module: no load of SALOMEDS_attributes)
-import SALOMEDS
-import Engines, Engines__POA
-reload(Engines)
-reload(Engines__POA)
-from SALOME_NamingServicePy import *
-from SALOME_ComponentPy import *
-
-from SALOME_utilities import *
-from Utils_Identity import getShortHostName
-
-#=============================================================================
-
-#define an implementation of the container interface
-
-class SALOME_ContainerPy_i (Engines__POA.Container):
- _orb = None
- _poa = None
- _numInstance = 0
- _listInstances_map = {}
-
- #-------------------------------------------------------------------------
-
- def __init__(self, orb, poa, containerName):
- MESSAGE( "SALOME_ContainerPy_i::__init__" )
- self._orb = orb
- self._poa = poa
- myMachine=getShortHostName()
- Container_path = "/Containers/" + myMachine + "/" + containerName
- #self._containerName = containerName
- self._containerName = Container_path
- print "container name ",self._containerName
-
- naming_service = SALOME_NamingServicePy_i(self._orb)
- self._naming_service = naming_service
- MESSAGE( str(Container_path) )
- naming_service.Register(self._this(), Container_path)
-
- #-------------------------------------------------------------------------
-
- def start_impl(self, ContainerName):
- MESSAGE( "SALOME_ContainerPy_i::start_impl " + str(ContainerName) )
- myMachine=getShortHostName()
- theContainer = "/Containers/" + myMachine + "/" + ContainerName
- try:
- obj = self._naming_service.Resolve(theContainer)
- except :
- obj = None
- MESSAGE( "SALOME_ContainerPy_i::start_impl " + str(ContainerName) + ".object not found in Naming Service" )
- if obj is None:
- container = None
- else:
- container = obj._narrow(Engines.Container)
- if container is None:
- MESSAGE( "SALOME_ContainerPy_i::start_impl " + str(containerName) + ".object exists but is not a Container" )
- else :
- MESSAGE( "SALOME_ContainerPy_i::start_impl " + str(ContainerName) + ".object found without new launch" )
- return container
- #shstr = os.getenv( "PWD" ) + "/"
- #shstr += "runSession ./SALOME_ContainerPy.py "
- shstr = os.getenv("KERNEL_ROOT_DIR") + "/bin/salome/SALOME_ContainerPy.py ";
- #shstr = "runSession SALOME_ContainerPy.py "
- shstr += ContainerName
-
- # mpv: fix for SAL4731 - allways create new file to write log of server
- num = 1
- fileName = ""
- while 1:
- fileName = "/tmp/"+ContainerName+"_%i.log"%num
- if not os.path.exists(fileName):
- break
- num += 1
- pass
-
- shstr += " > "
- shstr += fileName
- shstr += " 2>&1 &"
-
- #shstr += " > /tmp/"
- #shstr += ContainerName
- #shstr += ".log 2>&1 &"
-
- MESSAGE( "SALOME_ContainerPy_i::start_impl " + "os.system(" + str(shstr) + ")" )
- os.system( shstr )
- count = 21
- while container is None :
- time.sleep(1)
- count = count - 1
- MESSAGE( str(count) + ". Waiting for " + str(theContainer) )
- try :
- obj = self._naming_service.Resolve(theContainer)
- except :
- obj = None
- if obj is None:
- container = None
- else:
- container = obj._narrow(Engines.Container)
- if container is None:
- MESSAGE( str(containerName) + ".object exists but is not a Container" )
- return container
- if count == 0 :
- return container
-
- #-------------------------------------------------------------------------
-
- def instance(self, nameToRegister, componentName):
- MESSAGE( "SALOME_ContainerPy_i::instance " + str(nameToRegister) + ' ' + str(componentName) )
- self._numInstance = self._numInstance +1
- instanceName = nameToRegister + "_inst_" + `self._numInstance`
-
- component=__import__(componentName)
- factory=getattr(component,componentName)
- comp_i=factory(self._orb, self._poa, self._this(), self._containerName,
- instanceName, nameToRegister)
-
- MESSAGE( "SALOME_ContainerPy_i::instance : component created")
- comp_o = comp_i._this()
- return comp_o
-
- #-------------------------------------------------------------------------
-
- def load_impl(self, nameToRegister, componentName):
- MESSAGE( "SALOME_ContainerPy_i::load_impl " + str(nameToRegister) + ' ' + str(componentName) )
- self._numInstance = self._numInstance +1
- instanceName = nameToRegister + "_inst_" + `self._numInstance`
- interfaceName = nameToRegister
- the_command = "import " + nameToRegister + "\n"
- the_command = the_command + "comp_i = " + nameToRegister + "." + nameToRegister
- the_command = the_command + "(self._orb, self._poa, self._this(), self._containerName, instanceName, interfaceName)\n"
- MESSAGE( "SALOME_ContainerPy_i::load_impl :" + str (the_command) )
- exec the_command
- comp_o = comp_i._this()
- return comp_o
-
- #-------------------------------------------------------------------------
-
- def import_component(self, componentName):
- MESSAGE( "SALOME_Container_i::import_component" )
- ret=0
- try:
- print "try import ",componentName
- __import__(componentName)
- print "import ",componentName," successful"
- ret=1
- except:
- import traceback
- traceback.print_exc()
- print "import ",componentName," not possible"
- return ret
-
- #-------------------------------------------------------------------------
-
- def load_component_Library(self, componentName):
- MESSAGE( "SALOME_ContainerPy_i::load_component_Library " + str(componentName) )
- ret = 0
- instanceName = componentName + "_inst_" + `self._numInstance`
- interfaceName = componentName
- #the_command = "import " + componentName + "\n"
- #the_command = the_command + "comp_i = " + componentName + "." + componentName
- #the_command = the_command + "(self._orb, self._poa, self._this(), self._containerName, instanceName, interfaceName)\n"
- #MESSAGE( "SALOME_ContainerPy_i::load_component_Library :" + str (the_command) )
- #exec the_command
- #comp_o = comp_i._this()
- #if comp_o is not None:
- # ret = 1
- #else:
- # --- try to import Python component
- # retImpl = self.import_component(componentName)
- # if retImpl == 1:
- #import is possible
- # ret = 1
- # else:
- #import isn't possible
- # ret = 0
- #return ret
- return self.import_component(componentName)
-
- #-------------------------------------------------------------------------
-
- def create_component_instance(self, componentName, studyId):
- MESSAGE( "SALOME_ContainerPy_i::create_component_instance ==> " + str(componentName) + ' ' + str(studyId) )
- if studyId < 0:
- MESSAGE( "Study ID is lower than 0!" )
- return None
- else:
- self._numInstance = self._numInstance +1
- instanceName = componentName + "_inst_" + `self._numInstance`
- comp_iors=""
- try:
- component=__import__(componentName)
- factory=getattr(component,componentName)
- comp_i=factory(self._orb,
- self._poa,
- self._this(),
- self._containerName,
- instanceName,
- componentName)
-
- MESSAGE( "SALOME_Container_i::create_component_instance : OK")
- comp_o = comp_i._this()
- self._listInstances_map[instanceName] = comp_i
- except:
- import traceback
- traceback.print_exc()
- MESSAGE( "SALOME_Container_i::create_component_instance : NOT OK")
- return comp_o
-
- #-------------------------------------------------------------------------
-
- def find_component_instance(self, registeredName, studyId):
- anEngine = None
- keysList = self._listInstances_map.keys()
- i = 0
- while i < len(keysList):
- instance = keysList[i]
- if find(instance,registeredName) == 0:
- anEngine = self._listInstances_map[instance]
- if studyId == anEngine.getStudyId():
- return anEngine._this()
- i = i + 1
- return anEngine._this()
-
-
- #-------------------------------------------------------------------------
-
- def remove_impl(self, component):
- MESSAGE( "SALOME_ContainerPy_i::remove_impl" )
- instanceName = component._get_instanceName()
- MESSAGE( "unload component " + str(instanceName) )
- self._listInstances_map.remove(instanceName)
- component.destroy()
- self._naming_service.Destroy_Name(str(instanceName))
-
- #-------------------------------------------------------------------------
-
- def finalize_removal(self):
- MESSAGE( "SALOME_ContainerPy_i::finalize_removal" )
- return None
-
- #-------------------------------------------------------------------------
-
- def ping(self):
- MESSAGE( "SALOME_ContainerPy_i::ping() pid " + str(os.getpid()) )
- return None
-
- #-------------------------------------------------------------------------
-
- def getPID(self):
- return os.getpid()
-
- #-------------------------------------------------------------------------
-
- def _get_name(self):
- MESSAGE( "SALOME_ContainerPy_i::_get_name" )
- return self._containerName
-
- #-------------------------------------------------------------------------
-
- def getHostName(self):
- MESSAGE( "SALOME_ContainerPy_i::_get_MachineName" )
- self._machineName = "localhost"
- return self._machineName
-
- #-------------------------------------------------------------------------
-
- def _get_machineName(self):
- MESSAGE( "SALOME_ContainerPy_i::_get_MachineName" )
- self._machineName = "localhost"
- return self._machineName
-
- #-------------------------------------------------------------------------
-
- def Shutdown(self):
- self._orb.shutdown(0)
- pass
-
-#=============================================================================
-
-#initialise the ORB and find the root POA
-orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
-poa = orb.resolve_initial_references("RootPOA")
-
-#create an instance of SALOME_ContainerPy_i and a Container reference
-#containerName = "FactoryServerPy"
-MESSAGE( str(sys.argv) )
-containerName = sys.argv[1]
-cpy_i = SALOME_ContainerPy_i(orb, poa, containerName)
-cpy_o = cpy_i._this()
-
-#activate the POA
-poaManager = poa._get_the_POAManager()
-poaManager.activate()
-
-#Block for ever
-orb.run()
-
-
-
-
-
-
+++ /dev/null
-// File : SALOMEDS_Tool.cxx
-// Created : Mon Oct 21 16:24:34 2002
-// Author : Sergey RUIN
-
-// Project : SALOME
-// Module : SALOMEDS
-// Copyright : Open CASCADE
-
-#include "HDFOI.hxx"
-
-#include <OSD_Path.hxx>
-#include <OSD_File.hxx>
-#include <OSD_Protection.hxx>
-#include <OSD_Directory.hxx>
-#include <TCollection_AsciiString.hxx>
-
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <stdio.h>
-
-#ifdef WNT
-#include <io.h>
-#include <time.h>
-#endif
-
-using namespace std;
-
-bool CreateAttributeFromASCII(HDFinternalObject *father, FILE* fp);
-bool CreateDatasetFromASCII(HDFcontainerObject *father, FILE *fp);
-bool CreateGroupFromASCII(HDFcontainerObject *father, FILE *fp);
-
-void SaveAttributeInASCIIfile(HDFattribute *hdf_attribute, FILE* fp, int ident);
-void SaveGroupInASCIIfile(HDFgroup *hdf_group, FILE* fp, int ident);
-void SaveDatasetInASCIIfile(HDFdataset *hdf_dataset, FILE* fp, int ident);
-
-char* GetTmpDir();
-char* makeName(char* name);
-char* restoreName(char* name);
-void write_float64(FILE* fp, hdf_float64* value);
-void read_float64(FILE* fp, hdf_float64* value);
-
-#define MAX_STRING_SIZE 65535
-#define MAX_ID_SIZE 20
-#define NB_FLOAT_IN_ROW 3
-#define NB_INTEGER_IN_ROW 9
-
-#define ASCIIHDF_ID "ASCIIHDF"
-#define ATTRIBUTE_ID "ATTRIBUTE"
-#define DATASET_ID "DATASET"
-#define GROUP_ID "GROUP"
-
-#define ASCIIHDF_ID_END "ASCIIHDF_END"
-#define ATTRIBUTE_ID_END "ATTRIBUTE_END"
-#define DATASET_ID_END "DATASET_END"
-#define GROUP_ID_END "GROUP_END"
-
-
-//============================================================================
-// function : isASCII
-// purpose : Returns True if the file is a converted to ASCII HDF file
-//============================================================================
-bool HDFascii::isASCII(const char* thePath) {
- int fd;
- if(!(fd = open(thePath, O_RDONLY))) return false;
- char* aBuffer = new char[9];
- aBuffer[8] = (char)0;
- read(fd, aBuffer, 8);
- close(fd);
-
- if(strcmp(aBuffer, ASCIIHDF_ID) == 0) return true;
-
- return false;
-}
-
-//############################## HDF => ASCII ################################
-
-//============================================================================
-// function : ConvertFromHDFToASCII
-// purpose : Converts a file pointed by thePath to ASCII format
-// If isReplace is true the newly created file will replace the existent one.
-// If isReplace is false theExtension will be added to a created file name
-// Returns the file name of ASCII file
-//============================================================================
-char* HDFascii::ConvertFromHDFToASCII(const char* thePath,
- bool isReplace,
- const char* theExtension)
-{
- TCollection_AsciiString aPath((char*)thePath);
- if(!isReplace) {
- if(theExtension == NULL) aPath += ".asc";
- else aPath += (char*)theExtension;
- }
-
- TCollection_AsciiString aFileName(aPath);
- if(isReplace) aFileName=aPath+".ascii_tmp";
-
- HDFfile *hdf_file = new HDFfile((char*)thePath);
- hdf_file->OpenOnDisk(HDF_RDONLY);
-
- char name[HDF_NAME_MAX_LEN+1];
- int nbsons = hdf_file->nInternalObjects(), nbAttr = hdf_file->nAttributes();
-
- FILE* fp = fopen(aFileName.ToCString(), "w");
- fprintf(fp, "%s\n", ASCIIHDF_ID);
- fprintf(fp, "%i\n", nbsons+nbAttr);
-
- for(unsigned j=0; j<nbAttr; j++) {
- char* attr_name = hdf_file->GetAttributeName(j);
- HDFattribute *hdf_attribute = new HDFattribute(attr_name, hdf_file);
- delete attr_name;
- SaveAttributeInASCIIfile(hdf_attribute, fp, 0);
- hdf_attribute = 0;
- }
-
- for (Standard_Integer i=0; i<nbsons; i++) {
- hdf_file->InternalObjectIndentify(i,name);
- if (strncmp(name, "INTERNAL_COMPLEX",16) == 0) continue;
-
- hdf_object_type type = hdf_file->InternalObjectType(name);
-
- if(type == HDF_DATASET) {
- HDFdataset* hdf_dataset = new HDFdataset(name, hdf_file);
- SaveDatasetInASCIIfile(hdf_dataset, fp, 0);
- hdf_dataset = 0;
- } else if(type == HDF_GROUP) {
- HDFgroup *hdf_group = new HDFgroup(name, hdf_file);
- SaveGroupInASCIIfile(hdf_group, fp, 0);
- hdf_group = 0;
- }
- }
-
- fprintf(fp, "%s", ASCIIHDF_ID_END);
-
- fclose(fp);
-
- hdf_file->CloseOnDisk();
- delete hdf_file;
-
- if(isReplace) {
- OSD_Path anOSDPath(aFileName);
- OSD_File anOSDFile(anOSDPath);
- if(anOSDFile.Exists())
- anOSDFile.Move(aPath);
- else
- return NULL;
- }
-
- int length = strlen(aPath.ToCString());
- char *new_str = new char[ 1+length ];
- strcpy(new_str , aPath.ToCString()) ;
-
- return new_str;
-}
-
-
-//============================================================================
-// function : SaveGroupInASCIIfile
-// purpose :
-//============================================================================
-void SaveGroupInASCIIfile(HDFgroup *hdf_group, FILE* fp, int ident)
-{
- hdf_group->OpenOnDisk();
-
- TCollection_AsciiString anIdent(ident, '\t');
- int nbsons = hdf_group->nInternalObjects(), nbAttr = hdf_group->nAttributes();
-
- /*fprintf(fp, "%s%s\n", anIdent.ToCString(), GROUP_ID);*/
- fprintf(fp, "%s\n", GROUP_ID);
-
- char* name = makeName(hdf_group->GetName());
-
- /*fprintf(fp, "%s%s %i\n", anIdent.ToCString(), name, nbsons+nbAttr);*/
- fprintf(fp, "%s %i\n", name, nbsons+nbAttr);
- delete name;
-
- for(unsigned j=0; j<nbAttr; j++) {
- name = hdf_group->GetAttributeName(j);
- HDFattribute *hdf_attribute = new HDFattribute(name, hdf_group);
- delete name;
- SaveAttributeInASCIIfile(hdf_attribute, fp, ident+1);
- hdf_attribute = 0;
- }
-
- char objName[HDF_NAME_MAX_LEN+1];
-
- for (int i=0; i<nbsons; i++) {
- hdf_group->InternalObjectIndentify(i, objName);
-
- if (strncmp(objName, "INTERNAL_COMPLEX",16) == 0) continue;
-
- hdf_object_type type = hdf_group->InternalObjectType(objName);
-
- if (type == HDF_DATASET) {
- HDFdataset* hdf_dataset = new HDFdataset(objName, hdf_group);
- SaveDatasetInASCIIfile(hdf_dataset, fp, ident+1);
- hdf_dataset = 0;
- } else if (type == HDF_GROUP) {
- HDFgroup *hdf_subgroup = new HDFgroup(objName, hdf_group);
- SaveGroupInASCIIfile(hdf_subgroup, fp, ident+1);
- hdf_subgroup = 0;
- }
- }
-
- /*fprintf(fp, "%s%s\n", anIdent.ToCString(), GROUP_ID_END);*/
- fprintf(fp, "%s\n", GROUP_ID_END);
-
- hdf_group->CloseOnDisk();
-}
-
-//============================================================================
-// function : SaveDatasetInASCIIfile
-// purpose :
-//============================================================================
-void SaveDatasetInASCIIfile(HDFdataset *hdf_dataset, FILE* fp, int ident)
-{
- hdf_dataset->OpenOnDisk();
-
- long size = hdf_dataset->GetSize();
- long ndim = hdf_dataset->nDim(); //Get number of dimesions
- hdf_size *dim = new hdf_size[ndim];
- hdf_type type = hdf_dataset->GetType();
- int nbAttr = hdf_dataset->nAttributes(), j;
-
- TCollection_AsciiString anIdent(ident, '\t');
- TCollection_AsciiString anIdentChild(ident+1, '\t');
-
- char* name = makeName(hdf_dataset->GetName());
-
- /*fprintf(fp, "%s%s\n", anIdent.ToCString(), DATASET_ID);*/
- fprintf(fp, "%s\n", DATASET_ID);
- /*fprintf(fp, "%s%s %i %i\n", anIdent.ToCString(), name, type, nbAttr);*/
- fprintf(fp, "%s %i %i\n", name, type, nbAttr);
- delete name;
-
- hdf_dataset->GetDim(dim);
- /*fprintf(fp, "%s %i\n", anIdentChild.ToCString(), ndim);*/
- fprintf(fp, " %i\n", ndim);
-
- for(int i = 0;i < ndim;i++) {
- /*fprintf(fp, "%s%i", anIdentChild.ToCString(), dim[i]);*/
- fprintf(fp, " %i", dim[i]);
- }
-
- /*fprintf(fp, "%s\n", anIdentChild.ToCString());*/
- fprintf(fp, "\n");
- delete dim;
-
- /*fprintf(fp, "%s%li:", anIdentChild.ToCString(), size);*/
- fprintf(fp, "%li:", size);
-
- if (type == HDF_STRING) {
- char* val = new char[size];
- hdf_dataset->ReadFromDisk(val);
- fwrite(val, 1, size, fp);
- delete val;
- } else if (type == HDF_FLOAT64) {
- hdf_float64* val = new hdf_float64[size];
- hdf_dataset->ReadFromDisk(val);
- fprintf(fp, "\n");
- for (int i = 0, j = 0; i < size; i++) {
- write_float64(fp, &val[i]);
- if(++j == NB_FLOAT_IN_ROW) {
- fprintf(fp, "\n");
- j = 0;
- }
- else fprintf(fp," ");
- }
- delete val;
- } else if(type == HDF_INT64) {
- hdf_int64* val = new hdf_int64[size];
- hdf_dataset->ReadFromDisk(val);
- fprintf(fp, "\n");
- for (int i = 0, j = 0; i < size; i++) {
- fprintf(fp, " %li", val[i]);
- if(++j == NB_INTEGER_IN_ROW) {
- fprintf(fp, "\n");
- j = 0;
- }
- }
- delete val;
- } else if(type == HDF_INT32) {
- hdf_int32* val = new hdf_int32[size];
- hdf_dataset->ReadFromDisk(val);
- fprintf(fp, "\n");
- for (int i = 0, j = 0; i < size; i++) {
- fprintf(fp, " %i", val[i]);
- if(++j == NB_INTEGER_IN_ROW) {
- fprintf(fp, "\n");
- j = 0;
- }
- }
- delete val;
- }
-
- fprintf(fp, "\n");
-
-#ifndef WNT
- for(unsigned j=0; j<nbAttr; j++) {
-#else
- for(j=0; j<nbAttr; j++) {
-#endif
- name = hdf_dataset->GetAttributeName(j);
- HDFattribute *hdf_attribute = new HDFattribute(name, hdf_dataset);
- delete name;
- SaveAttributeInASCIIfile(hdf_attribute, fp, ident+1);
- hdf_attribute = 0;
- }
-
- /*fprintf(fp, "%s%s\n", anIdent.ToCString(), DATASET_ID_END); */
- fprintf(fp, "%s\n", DATASET_ID_END);
-
- hdf_dataset->CloseOnDisk();
-}
-
-
-//============================================================================
-// function : SaveAttributeInASCIIfile
-// purpose :
-//============================================================================
-void SaveAttributeInASCIIfile(HDFattribute *hdf_attribute, FILE* fp, int ident)
-{
- hdf_attribute->OpenOnDisk();
-
- hdf_type type = hdf_attribute->GetType();
-
- TCollection_AsciiString anIdent(ident, '\t');
- TCollection_AsciiString anIdentChild(ident+1, '\t');
-
- char* name = makeName(hdf_attribute->GetName());
- int size = hdf_attribute->GetSize();
-
- /*fprintf(fp, "%s%s\n", anIdent.ToCString(), ATTRIBUTE_ID);*/
- fprintf(fp, "%s\n", ATTRIBUTE_ID);
- /*fprintf(fp, "%s%s %i %i\n", anIdent.ToCString(), name, type, size);*/
- fprintf(fp, "%s %i %i\n", name, type, size);
-
- delete name;
-
- if (type == HDF_STRING) {
- char* val = new char[size+1];
- hdf_attribute->ReadFromDisk(val);
- /*fprintf(fp, "%s:", anIdentChild.ToCString());*/
- fprintf(fp, ":");
- fwrite(val, 1, size, fp);
- fprintf(fp, "\n");
- delete val;
- } else if (type == HDF_FLOAT64) {
- hdf_float64 val;
- hdf_attribute->ReadFromDisk(&val);
- /*fprintf(fp, "%s", anIdentChild.ToCString());*/
- write_float64(fp, &val);
- fprintf(fp, "\n");
- } else if(type == HDF_INT64) {
- hdf_int64 val;
- hdf_attribute->ReadFromDisk(&val);
- /*fprintf(fp, "%s%li \n", anIdentChild.ToCString(), val);*/
- fprintf(fp, "%li \n", val);
- } else if(type == HDF_INT32) {
- hdf_int32 val;
- hdf_attribute->ReadFromDisk(&val);
- /*fprintf(fp, "%s%i \n", anIdentChild.ToCString(), val);*/
- fprintf(fp, "%i \n", val);
- }
-
- /*fprintf(fp, "%s%s\n", anIdent.ToCString(), ATTRIBUTE_ID_END);*/
- fprintf(fp, "%s\n", ATTRIBUTE_ID_END);
-
- hdf_attribute->CloseOnDisk();
-}
-
-//############################## ASCII => HDF ################################
-
-//============================================================================
-// function : ConvertFromASCIIToHDF
-// purpose : Converts a file pointed by thePath to HDF format
-// Returns a name of directory where a created HDF file is placed
-// The created file is named "hdf_from_ascii.hdf"
-//============================================================================
-char* HDFascii::ConvertFromASCIIToHDF(const char* thePath)
-{
- // Get a temporary directory to store a file
- TCollection_AsciiString aTmpDir = GetTmpDir(), aFileName("hdf_from_ascii.hdf");
- // Build a full file name of temporary file
- TCollection_AsciiString aFullName = aTmpDir + aFileName;
-
- HDFfile *hdf_file = new HDFfile(aFullName.ToCString());
- hdf_file->CreateOnDisk();
-
- FILE *fp = fopen(thePath, "r");
- if(!fp) return NULL;
-
- char type[9];
- int nbsons, i;
- fscanf(fp, "%s", type);
- fscanf(fp, "%i",&nbsons);
-
- if(strcmp(type, ASCIIHDF_ID) != 0) return NULL;
-
- for(i = 0; i < nbsons; i++) {
- char id_of_begin[MAX_ID_SIZE];
- fscanf(fp, "%s\n", id_of_begin);
-
- if(strcmp(id_of_begin, GROUP_ID) == 0) {
- if(!CreateGroupFromASCII(hdf_file, fp)) {
- cout << "ConvertFromASCIIToHDF : Can not create group number " << i << endl;
- return NULL;
- }
- }
- else if(strcmp(id_of_begin, DATASET_ID) == 0) {
- if(!CreateDatasetFromASCII(hdf_file, fp)) {
- cout << "ConvertFromASCIIToHDF :Can not create dataset number " << i << endl;
- return NULL;
- }
- }
- else if(strcmp(id_of_begin, ATTRIBUTE_ID) == 0) {
- if(!CreateAttributeFromASCII(hdf_file, fp)) {
- cout << "ConvertFromASCIIToHDF :Can not create attribute number " << i << endl;
- return NULL;
- }
- }
- else
- cout << "ConvertFromASCIIToHDF : Unrecognized type " << id_of_begin << endl;
- }
-
- char id_of_end[MAX_ID_SIZE];
- fscanf(fp, "%s", id_of_end);
- if(strcmp(id_of_end, ASCIIHDF_ID_END) != 0) {
- cout << "ConvertFromASCIIToHDF : Can not find the end ASCII token " << endl;
- return false;
- }
-
- hdf_file->CloseOnDisk();
- delete hdf_file;
-
- int length = strlen(aTmpDir.ToCString());
- char *new_str = new char[ 1+length ];
- strcpy(new_str , aTmpDir.ToCString()) ;
-
- return new_str;
-}
-
-
-//============================================================================
-// function : CreateGroupFromASCII
-// purpose : Creates a HDF group from a set attributes situated under theLabel
-//============================================================================
-bool CreateGroupFromASCII(HDFcontainerObject *father, FILE *fp)
-{
- char name[HDF_NAME_MAX_LEN+1];
- int nbsons, i;
- fscanf(fp, "%s %i\n", name, &nbsons);
-
- char* new_name = restoreName(name);
-
- HDFgroup* hdf_group = new HDFgroup(new_name, father);
-
- delete new_name;
-
- hdf_group->CreateOnDisk();
-
- for(i = 0; i < nbsons; i++) {
- char id_of_begin[MAX_ID_SIZE];
- fscanf(fp, "%s\n", id_of_begin);
-
- if(strcmp(id_of_begin, GROUP_ID) == 0) {
- if(!CreateGroupFromASCII(hdf_group, fp)) {
- cout << "Can not create subgroup " << i << " for group " << name << endl;
- return false;
- }
- }
- else if(strcmp(id_of_begin, DATASET_ID) == 0) {
- if(!CreateDatasetFromASCII(hdf_group, fp)) {
- cout << "Can not create dataset " << i << " for group " << name << endl;
- return false;
- }
- }
- else if(strcmp(id_of_begin, ATTRIBUTE_ID) == 0) {
- if(!CreateAttributeFromASCII(hdf_group, fp)) {
- cout << "Can not create attribute " << i << " for group " << name << endl;
- return false;
- }
- }
- else
- cout << "CreateGroupFromASCII : Unrecognized type " << id_of_begin << endl;
- }
-
- hdf_group->CloseOnDisk();
- hdf_group = 0; //will be deleted by father destructor
-
- char id_of_end[MAX_ID_SIZE];
- fscanf(fp, "%s\n", id_of_end);
- if(strcmp(id_of_end, GROUP_ID_END) != 0) {
- cout << "CreateGroupFromASCII : Invalid end token : " << id_of_end << endl;
- return false;
- }
-
- return true;
-}
-
-
-//============================================================================
-// function : CreateDatasetFromASCII
-// purpose : Creates a HDF dataset from a set attributes situated under theLabel
-//============================================================================
-bool CreateDatasetFromASCII(HDFcontainerObject *father, FILE *fp)
-{
- char name[HDF_NAME_MAX_LEN+1];
- hdf_type type;
- int nbDim, nbAttr;
- long i, size;
-
- fscanf(fp, "%s %i %i\n", name, &type, &nbAttr);
- char* new_name = restoreName(name);
-
- fscanf(fp, "%i\n", &nbDim);
-
- hdf_size* sizeArray = new hdf_size[nbDim];
- int dim = 0;
- for(i = 0; i<nbDim; i++) {
- fscanf(fp, "%i\n", &dim);
- sizeArray[i] = dim;
- }
-
- HDFdataset* hdf_dataset = new HDFdataset(new_name, father,type, sizeArray, nbDim);
- delete new_name;
- delete sizeArray;
-
- hdf_dataset->CreateOnDisk();
-
- char tmp;
- fscanf(fp, "%li%c", &size, &tmp);
-
- if (type == HDF_STRING) {
- char *val = new char[size+1];
- fread(val, 1, size, fp);
- hdf_dataset->WriteOnDisk(val);
- delete val;
- } else if (type == HDF_FLOAT64) {
- hdf_float64* val = new hdf_float64[size];
- for(i=0; i<size; i++) {
- read_float64(fp, &(val[i]));
- }
- hdf_dataset->WriteOnDisk(val);
- delete val;
- } else if(type == HDF_INT64) {
- hdf_int64* val = new hdf_int64[size];
- for(i=0; i<size; i++) {
- fscanf(fp, " %li", &(val[i]));
- }
- hdf_dataset->WriteOnDisk(val);
- delete val;
- } else if(type == HDF_INT32) {
- hdf_int32* val = new hdf_int32[size];
- for(i=0; i<size; i++) {
- fscanf(fp, " %i", &(val[i]));
- }
- hdf_dataset->WriteOnDisk(val);
- delete val;
- }
-
- char token[MAX_ID_SIZE];
-
- for(i = 0; i < nbAttr; i++) {
- fscanf(fp, "%s\n", token);
-
- if(strcmp(token, ATTRIBUTE_ID) == 0) {
- if(!CreateAttributeFromASCII(hdf_dataset, fp)) {
- cout << "Can not create attribute " << i << " for dataset " << name << endl;
- return false;
- }
- }
- else {
- cout << "CreateGroupFromASCII : Unrecognized type " << token << endl;
- return false;
- }
- }
-
- fscanf(fp, "%s\n", token);
- if(strcmp(token, DATASET_ID_END) != 0) {
- cout << "CreateDatasetFromASCII : Invalid end token : " << token << endl;
- return false;
- }
-
- hdf_dataset->CloseOnDisk();
- hdf_dataset = 0; //will be deleted by father destructor
-
- return true;
-}
-
-
-//============================================================================
-// function : CreateAttributeFromASCII
-// purpose : Creates a HDF attribute from a set attributes situated under theLabel
-//============================================================================
-bool CreateAttributeFromASCII(HDFinternalObject *father, FILE* fp)
-{
- char name[HDF_NAME_MAX_LEN+1];
-
- hdf_type type;
- int size;
- fscanf(fp, "%s %i %i\n", name, &type, &size);
- char* new_name = restoreName(name);
- HDFattribute* hdf_attribute = new HDFattribute(new_name, father, type, size);
-
- hdf_attribute->CreateOnDisk();
-
- delete new_name;
-
- if (type == HDF_STRING) {
- char tmp;
- fscanf(fp, "%c", &tmp);
- char *val = new char[size+1];
- val[size] = (char)0;
- fread(val, 1, size, fp);
- hdf_attribute->WriteOnDisk(val);
- delete val;
- } else if (type == HDF_FLOAT64) {
- hdf_float64 val;
- read_float64(fp, &val);
- hdf_attribute->WriteOnDisk(&val);
- } else if(type == HDF_INT64) {
- hdf_int64 val;
- fscanf(fp, "%li", &val);
- hdf_attribute->WriteOnDisk(&val);
- } else if(type == HDF_INT32) {
- hdf_int32 val;
- fscanf(fp, "%i", &val);
- hdf_attribute->WriteOnDisk(&val);
- }
-
- hdf_attribute->CloseOnDisk();
- hdf_attribute = 0; //will be deleted by father destructor
-
-
- char id_of_end[MAX_ID_SIZE];
- fscanf(fp, "%s\n", id_of_end);
- if(strcmp(id_of_end, ATTRIBUTE_ID_END) != 0) {
- cout << "CreateAttributeFromASCII : Invalid end token : " << id_of_end << endl;
- return false;
- }
-
- return true;
-}
-
-
-//============================================================================
-// function : GetTempDir
-// purpose : Return a temp directory to store created files like "/tmp/sub_dir/"
-//============================================================================
-char* GetTmpDir()
-{
- //Find a temporary directory to store a file
-
- TCollection_AsciiString aTmpDir;
-
-#ifdef WNT
- char *aTmp;
- aTmp = getenv("TMP");
- if(aTmp != NULL)
- aTmpDir = TCollection_AsciiString(aTmp);
- else
- aTmpDir = TCollection_AsciiString("C:\\");
-#else
- aTmpDir = TCollection_AsciiString("/tmp/");
-#endif
-
- srand((unsigned int)time(NULL));
-
- int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
- TCollection_AsciiString aSubDir(aRND);
- if(aSubDir.Length() <= 1) aSubDir = TCollection_AsciiString("123409876");
-
- aTmpDir += aSubDir; //Get RND sub directory
-
-#ifdef WIN32
- if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
-#else
- if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
-#endif
-
- OSD_Path aPath(aTmpDir);
- OSD_Directory aDir(aPath);
-
- for(aRND = 0; aDir.Exists(); aRND++) {
- aTmpDir.Insert((aTmpDir.Length() - 1), TCollection_AsciiString(aRND)); //Build a unique directory name
- aPath = OSD_Path(aTmpDir);
- aDir = OSD_Directory(aPath);
- }
-
- OSD_Protection aProtection(OSD_RW, OSD_RWX, OSD_RX, OSD_RX);
- aDir.Build(aProtection);
-
- int length = strlen(aTmpDir.ToCString());
- char *new_str = new char[ 1+length ];
- strcpy(new_str , aTmpDir.ToCString());
-
- return new_str;
-}
-
-char* makeName(char* name)
-{
- TCollection_AsciiString aName(name), aNewName;
- Standard_Integer i, length = aName.Length();
- char replace = (char)19;
-
- for(i=1; i<=length; i++) {
- if(aName.Value(i) == ' ') aNewName+=replace;
- else aNewName += aName.Value(i);
- }
-
- length = strlen(aNewName.ToCString());
- char *new_str = new char[ 1+length ];
- strcpy(new_str , aNewName.ToCString()) ;
- return new_str;
-}
-
-char* restoreName(char* name)
-{
- TCollection_AsciiString aName(name), aNewName;
- Standard_Integer i, length = aName.Length();
- char replace = (char)19;
-
- for(i=1; i<=length; i++) {
- if(aName.Value(i) == replace) aNewName+=' ';
- else aNewName += aName.Value(i);
- }
-
- length = strlen(aNewName.ToCString());
- char *new_str = new char[ 1+length ];
- strcpy(new_str , aNewName.ToCString()) ;
- return new_str;
-}
-
-void write_float64(FILE* fp, hdf_float64* value)
-{
- unsigned char* array = (unsigned char*)value;
- for(int i = 0; i < sizeof(hdf_float64); i++) {
- unsigned tmp = (unsigned short)array[i];
- fprintf(fp, " %2x", tmp);
- }
-}
-
-void read_float64(FILE* fp, hdf_float64* value)
-{
- unsigned char* array = (unsigned char*)value;
- for(int i = 0; i < sizeof(hdf_float64); i++) {
- unsigned tmp;
- fscanf(fp, " %x", &tmp);
- array[i] = (unsigned char)tmp;
- }
-}
+++ /dev/null
-// File : HDFascii.hxx
-// Created : Mon Jun 10 16:24:50 2003
-// Author : Sergey RUIN
-
-// Project : SALOME
-// Module : HDFPersist
-// Copyright : Open CASCADE
-
-
-#ifndef __HDFascii_H__
-#define __HDFascii_H__
-
-#include <Standard_Macro.hxx>
-
-
-class Standard_EXPORT HDFascii
-{
-public:
-
- static char* ConvertFromHDFToASCII(const char* thePath,
- bool isReplaced = true,
- const char* theExtension = NULL);
-
- static char* ConvertFromASCIIToHDF(const char* thePath);
-
- static bool isASCII(const char* thePath);
-};
-#endif
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : HDFdataset.cc
-// Module : SALOME
-
-extern "C"
-{
-#include "hdfi.h"
-#include <string.h>
-}
-#include "HDFdataset.hxx"
-#include "HDFcontainerObject.hxx"
-#include "HDFexception.hxx"
-
-#include <iostream>
-using namespace std;
-
-herr_t dataset_attr(hid_t loc_id, const char *attr_name, void *operator_data)
-{
- *(char**)operator_data = new char[strlen(attr_name)+1];
- strcpy(*(char**)operator_data, attr_name);
- return 1;
-}
-
-HDFdataset::HDFdataset(char *name, HDFcontainerObject *father,hdf_type type,
- hdf_size dim[], int dimsize)
- : HDFinternalObject(name)
-{
- int i;
-
- _father = father;
- _fid = _father->GetId();
- _father->AddSon(this);
- _type = type;
- _ndim = dimsize;
- _dim = new hdf_size[dimsize];
- _size = 1;
- _attribute = NULL;
- for (i=0;i<dimsize;i++)
- {
- _dim[i] = dim[i];
- _size = _size * _dim[i];
- }
-}
-
-
-HDFdataset::HDFdataset(char *name,HDFcontainerObject *father)
- : HDFinternalObject(name)
-{
- _father = father;
- _fid = _father->GetId();
- _father->AddSon(this);
- _type = HDF_NONE;
- _ndim = -1;
- _dim = 0;
- _size = -1;
- _attribute = NULL;
-}
-
-HDFdataset::~HDFdataset()
-{
- delete [] _dim;
-}
-
-void HDFdataset::CreateOnDisk()
-{
- if ((_id = HDFdatasetCreate(_fid,_name,_type,_dim,_ndim)) < 0)
- throw HDFexception("Can't create dataset");
-}
-
-void HDFdataset::OpenOnDisk()
-{
- if ((_id = HDFdatasetOpen(_fid,_name)) < 0)
- throw HDFexception("Can't open dataset");
-}
-
-void HDFdataset::CloseOnDisk()
-{
- hdf_err ret;
-
- if ((ret = HDFdatasetClose(_id)) < 0)
- throw HDFexception("Can't close dataset");
- _id = -1;
-}
-
-void HDFdataset::WriteOnDisk(void *values)
-{
- hdf_err ret;
-
- if ((ret = HDFdatasetWrite(_id,values)) < 0)
- throw HDFexception("Can't write dataset");
-
-}
-
-void HDFdataset::ReadFromDisk(void *values)
-{
- hdf_err ret;
-
- if ((ret = HDFdatasetRead(_id,values)) < 0)
- throw HDFexception("Can't read dataset");
-}
-
-HDFcontainerObject *HDFdataset::GetFather()
-{
- return _father;
-}
-
-hdf_type HDFdataset::GetType()
-{
- if (_type == HDF_NONE)
- if ((_type = HDFdatasetGetType(_id)) == HDF_NONE)
- throw HDFexception("Can't determine the type of data in the dataset");
-
- return _type;
-}
-
-int HDFdataset::nDim()
-{
- if (_ndim == -1)
- if ((_ndim = HDFdatasetGetnDim(_id)) < 0)
- throw HDFexception("Can't determine the dataset dimensions number");
-
- return _ndim;
-}
-
-void HDFdataset::GetDim(hdf_size dim[])
-{
- int i;
- int ndim;
- hdf_err ret;
-
- if (_dim == 0)
- {
- if (_ndim == -1)
- ndim = HDFdatasetGetnDim(_id);
- else
- ndim = _ndim;
- _dim = new hdf_size[ndim];
- if ((ret == HDFdatasetGetDim(_id,_dim)) < 0)
- throw HDFexception("Can't determine the size dimensions of the dataset ");
- }
-
- for (i=0;i<_ndim;i++)
- dim[i] = _dim[i];
-}
-
-int HDFdataset::GetSize()
-{
- int size_type;
-
- if (_size == -1)
- {
- if ((_size = HDFdatasetGetSize(_id)) < 0)
- throw HDFexception("Can't determine the size of the dataset");
-
- if (_type == HDF_NONE)
- if ((_type = HDFdatasetGetType(_id)) == HDF_NONE)
- throw HDFexception("Can't determine the size of the dataset");
-
- switch (_type)
- {
- case HDF_INT32 :
- size_type = 4;
- break;
-
- case HDF_INT64 :
- case HDF_FLOAT64 :
- size_type = 8;
- break;
-
- default :
- size_type = 1;
- }
- _size = _size / size_type;
- }
-
- return _size;
-}
-
-hdf_object_type HDFdataset::GetObjectType()
-{
- return HDF_DATASET;
-}
-
-
-int HDFdataset::nAttributes()
-{
- int nbAttrs = H5Aget_num_attrs(_id);
- if(nbAttrs <= 0) nbAttrs = 0;
- return nbAttrs;
-}
-
-
-char* HDFdataset::GetAttributeName(unsigned idx)
-{
- int nbAttrs = nAttributes();
- if(nbAttrs == 0) return NULL;
- H5Aiterate(_id, &idx, dataset_attr, &_attribute);
- return _attribute;
-}
-
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : HDFdataset.hxx
-// Module : SALOME
-
-#ifndef HDFDATASET_HXX
-#define HDFDATASET_HXX
-
-extern "C"
-{
-#include "HDFtypes.h"
-}
-#include "HDFinternalObject.hxx"
-#include "HDFcontainerObject.hxx"
-#include <Standard_Macro.hxx>
-
-class Standard_EXPORT HDFdataset : public HDFinternalObject
-{
-private :
- HDFcontainerObject *_father;
- hdf_idt _fid;
- hdf_type _type;
- hdf_size *_dim;
- int _size;
- int _ndim;
- char* _attribute;
-
-public:
- HDFdataset(char *name, HDFcontainerObject *father,hdf_type type,
- hdf_size dim[],int dimsize);
-
- HDFdataset(char *name,HDFcontainerObject *father);
- virtual ~HDFdataset();
-
- void CreateOnDisk();
- void OpenOnDisk();
- void CloseOnDisk();
-
- void WriteOnDisk(void *values);
- void ReadFromDisk(void *values);
-
- HDFcontainerObject *GetFather();
- hdf_type GetType();
- int nDim();
- void GetDim(hdf_size dim[]);
- int GetSize();
- hdf_object_type GetObjectType();
-
- int nAttributes();
- char* GetAttributeName(unsigned idx);
-};
-
-#endif
+++ /dev/null
-/*----------------------------------------------------------------------------
-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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
-
- File : HDFdatasetCreate.c
-Module : SALOME
-----------------------------------------------------------------------------*/
-
-#include "hdfi.h"
-
-/*
- * - Name : HDFdatasetCreate
- * - Description : creates a HDF dataset
- * - Parameters :
- * - pid (IN) : father ID
- * - name (IN) : dataset name
- * - type (IN) : dataset type (HDF_STRING,HDF_INT32,HDF_INT64,HDF_FLOAT64)
- * - dimd (IN) : dataset size
- * - Result :
- * - if success : returns dataset ID
- * - if failure : -1
- */
-
-hdf_idt HDFdatasetCreate(hdf_idt pid,char *name,hdf_type type,
- hdf_size *dimd, int ndim)
-{
- hdf_idt dataset, dataspace = 0;
- hdf_err ret;
- int type_hdf;
-
- switch(type)
- {
- case HDF_FLOAT64 :
-#ifdef PCLINUX
- type_hdf = H5T_IEEE_F64BE;
-#else
- type_hdf = H5T_IEEE_F64LE;
-#endif
- break;
-
- case HDF_INT32 :
-#ifdef PCLINUX
- type_hdf = H5T_STD_I32BE;
-#else
- type_hdf = H5T_NATIVE_INT;
-#endif
- break;
-
- case HDF_INT64 :
- type_hdf = H5T_NATIVE_LONG;
- break;
-
- case HDF_STRING :
- if((type_hdf = H5Tcopy(H5T_C_S1)) < 0)
- return -1;
- if((ret = H5Tset_size(type_hdf,1)) < 0)
- return -1;
- break;
-
- default :
- return -1;
- }
-
- if ((dataset = H5Dopen(pid,name)) < 0)
- {
- if ((dataspace = H5Screate_simple(ndim, dimd, NULL)) < 0)
- return -1;
- if ((dataset = H5Dcreate(pid,name,type_hdf,dataspace, H5P_DEFAULT)) < 0)
- return -1;
- }
- else
- return -1;
-
- if ((ret = H5Sclose(dataspace)) < 0)
- return -1;
-
- return dataset;
-}
+++ /dev/null
-/*----------------------------------------------------------------------------------
- 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
-
- File : HDFtypes.h
- Module : SALOME
-----------------------------------------------------------------------------------*/
-
-#ifndef HDFTYPES_H
-#define HDFTYPES_H
-
-#include <hdf5.h>
-
-/* max length of a HDF object */
-#define HDF_NAME_MAX_LEN 100
-
-/* HDF 5 types */
-typedef size_t hdf_size_type;
-typedef H5T_class_t hdf_class_type;
-typedef hsize_t hdf_size;
-typedef hid_t hdf_idt;
-typedef herr_t hdf_err;
-typedef hbool_t hdf_bool;
-
-typedef int hdf_int32;
-typedef long hdf_int64;
-typedef double hdf_float64;
-
-/* Access Mode */
-typedef enum {HDF_RDONLY,HDF_RDWR} hdf_access_mode;
-
-/* Values types for HDF datasets and attributes */
-typedef enum {HDF_NONE,HDF_STRING, HDF_INT32, HDF_INT64, HDF_FLOAT64} hdf_type;
-/* - HDF_STRING : C string
- - HDF_INT32 : 32 bits integer
- - HDF_INT64 : 64 bits integer
- - HDF_FLOAT64 : IEEE 64 bits float
-*/
-
-/* HDF object types */
-typedef enum {HDF_OBJECT,HDF_FILE,HDF_GROUP,HDF_DATASET,
- HDF_ATTRIBUTE} hdf_object_type;
-
-#endif /* HDFTYPES_H */
+++ /dev/null
-# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : Makefile.in
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_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 = libSalomeHDFPersist.la
-LIB_SRC = \
- 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 \
- 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
-
-#BIN = test9 test8
-
-CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES) -DPCLINUX
-LDFLAGS+= $(CAS_LDPATH) -lTKernel $(HDF5_LIBS)
-
-
-@CONCLUDE@
+++ /dev/null
-/*----------------------------------------------------------------------
- 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
- File : hdfi.h
- Module : SALOME
- ----------------------------------------------------------------------*/
-
-#ifndef HDFI_H
-#define HDFI_H
-
-#include "HDFtypes.h"
-
-/* HDF C INTERFACE */
-
-/* File Interface */
-extern
-hdf_idt HDFfileCreate(char *name);
-
-extern
-hdf_err HDFfileClose(hdf_idt fid);
-
-extern
-hdf_idt HDFfileOpen(char *name,hdf_access_mode access_mode);
-
-extern
-hdf_err HDFfileMount(hdf_idt id,const char *name,hdf_idt fid);
-
-extern
-hdf_err HDFfileUmount(hdf_idt id,const char *name);
-
-/* Group Interface */
-extern
-hdf_idt HDFgroupCreate(hdf_idt pid, char *name);
-
-extern
-hdf_idt HDFgroupOpen(hdf_idt pid, char *name);
-
-extern
-hdf_err HDFgroupClose(hdf_idt id);
-
-/* DataSet Interface */
-extern
-hdf_idt HDFdatasetOpen(hdf_idt pid,char *name);
-
-extern
-hdf_err HDFdatasetClose(hdf_idt id);
-
-extern
-hdf_idt HDFdatasetCreate(hdf_idt pid,char *name,hdf_type type,
- hdf_size *dimd, int ndim);
-
-extern
-hdf_err HDFdatasetWrite(hdf_idt id, void *val);
-
-extern
-hdf_err HDFdatasetRead(hdf_idt id, void *val);
-
-extern
-hdf_type HDFdatasetGetType(hdf_idt id);
-
-extern
-int HDFdatasetGetnDim(hdf_idt id);
-
-extern
-hdf_err HDFdatasetGetDim(hdf_idt id,hdf_size dim[]);
-
-extern
-int HDFdatasetGetSize(hdf_idt id);
-
-/* Attribute interface */
-extern
-hdf_idt HDFattrOpen(hdf_idt pid,char *name);
-
-extern
-hdf_err HDFattrClose(hdf_idt id);
-
-extern
-hdf_idt HDFattrCreate(hdf_idt pid,char *name,hdf_type type, size_t size);
-
-extern
-hdf_err HDFattrWrite(hdf_idt id,void *val);
-
-extern
-hdf_err HDFattrRead(hdf_idt id,void *val);
-
-extern
-hdf_type HDFattrGetType(hdf_idt id);
-
-extern
-hdf_type HDFattrGetSize(hdf_idt id);
-
-/* HDF Tools */
-extern
-void HDFerrorModeLock();
-
-extern
-hdf_err
-HDFnObjects(hdf_idt fid,char *path,int *n);
-
-extern
-hdf_err HDFobjectIdentify(hdf_idt fid,char *path,int i,char *name);
-
-extern
-hdf_err HDFobjectType(hdf_idt id, char *name, hdf_object_type *type);
-
-#endif /* HDFI_H */
+++ /dev/null
-# 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 : Makefile.in
-# Author : Sergey RUIN, OCC
-# Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS = 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
-
-EXPORT_SHAREDPYSCRIPTS=kernel_shared_modules.py
-
-@CONCLUDE@
+++ /dev/null
-"""
-
-"""
-import import_hook
-
-import glob,os,sys,string,imp
-
-from import_hook import register_name
-from import_hook import register_pattern
-
-register_name("qt")
-register_name("libSALOME_LifeCycleCORBA")
-register_pattern(lambda(x):x.endswith("_idl"))
-register_pattern(lambda(x):x.endswith("_Swig"))
-
-register_name("CORBA")
-import CORBA
-
-register_name("omniORB")
-import omniORB
-
-register_name("CosNaming")
-import CosNaming
-
-# Modify omniORB to use right sys.modules dictionnary
-# with multi-interpreter feature
-# openModule and newModule are functions of omniORB/__init__.py module
-# modified to register modules to share
-# Function to return a Python module for the required IDL module name
-def openModule(mname, fname=None):
- # Salome modification start
- import sys
- # Salome modification end
-
- if mname == "CORBA":
- mod = sys.modules["omniORB.CORBA"]
- elif sys.modules.has_key(mname):
- mod = sys.modules[mname]
- else:
- mod = newModule(mname)
-
- # Salome modification start
- import_hook.set_shared_imported(mname,mod)
- # Salome modification end
-
-
- if not hasattr(mod, "__doc__") or mod.__doc__ is None:
- mod.__doc__ = "omniORB IDL module " + mname + "\n\n" + \
- "Generated from:\n\n"
-
- if fname is not None:
- mod.__doc__ = mod.__doc__ + " " + fname + "\n"
-
- return mod
-
-# Function to create a new module, and any parent modules which do not
-# already exist
-def newModule(mname):
- # Salome modification start
- import sys
- # Salome modification end
-
- mlist = string.split(mname, ".")
- current = ""
- mod = None
-
- for name in mlist:
- current = current + name
-
- if sys.modules.has_key(current):
- mod = sys.modules[current]
- else:
- newmod = imp.new_module(current)
- if mod: setattr(mod, name, newmod)
- sys.modules[current] = mod = newmod
-
- current = current + "."
-
- return mod
-# Replace openModule and newModule by modified ones
-# to take into account the sys.modules that matches
-# the right one (multi-interpreter feature)
-omniORB.openModule=openModule
-omniORB.newModule=newModule
-
-# BE CAREFUL
-# Engines, SALOME, SALOMEDS must be imported in that order because :
-# Engines imports SALOME_Component_idl
-# SALOME imports SALOME_Session_idl and SALOME_Exception_idl which imports SALOME_Component_idl
-# and SALOMEDS imports SALOMEDS_idl and SALOMEDS_Attributes_idl which imports SALOME_Exception_idl
-# If SALOME is imported before Engines, that module would not be completely imported
-import Engines
-import SALOME
-import SALOMEDS
-import SALOME_ModuleCatalog
-
-def init_shared_modules():
- """
- This function initializes shared modules that need to be
- """
- # EDF-CCAR:
- # Problem with omniORB : omniORB creates a C Python module named _omnipy
- # this module has sub-modules : omni_func, ...
- # _omnipy is quite a package but import with Python sub-interpreters does not seem to work
- # To make it work we need to add those sub-modules in sys.modules
- import sys
- import _omnipy
- sys.modules["_omnipy.omni_func"]=_omnipy.omni_func
- sys.modules["_omnipy.poa_func"]=_omnipy.poa_func
- sys.modules["_omnipy.poamanager_func"]=_omnipy.poamanager_func
- sys.modules["_omnipy.orb_func"]=_omnipy.orb_func
-
+++ /dev/null
-# 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.py
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-from salome_kernel import *
-from salome_study import *
-from salome_iapp import *
-
-salome_initial=1
-def salome_init(theStudyId=0):
- """
- Performs only once SALOME general purpose intialisation for scripts.
- optional argument : theStudyId
- When in embedded interpreter inside IAPP, theStudyId is not used
- When used without GUI (external interpreter)
- 0 : create a new study (default).
- n (>0) : try connection to study with Id = n, or create a new one
- if study not found.
- If study creation, its Id may be different from theStudyId !
- Provides:
- orb reference to CORBA
- lcc a LifeCycleCorba instance
- naming_service a naming service instance
- cm reference to the container manager
- sg access to SALOME GUI (when linked with IAPP GUI)
- myStudyManager the study manager
- myStudyId active study identifier
- myStudy active study itself (CORBA reference)
- myStudyName active study name
- """
- global salome_initial
- global orb, lcc, naming_service, cm
- global sg
- global myStudyManager, myStudyId, myStudy, myStudyName
-
- if salome_initial:
- salome_initial=0
- sg = salome_iapp_init()
- orb, lcc, naming_service, cm = salome_kernel_init()
- myStudyManager, myStudyId, myStudy, myStudyName =salome_study_init(theStudyId)
-
+++ /dev/null
-# 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_shared_modules.py
-# Module : SALOME
-
-from SALOME_utilities import *
-
-"""
-This module with help of import_hook and *_shared_modules
-filters imports when using the embedded Python interpretor.
-
-Some imports can't be done more than once.
-This is related to the multi study feature that is implemented
-by using the Python multi interpreter feature.
-Some modules register objects or classes by calling modules
-implemented in C. These operations can't be done multiple times.
-So it's very important to control these imports.
-
-Examples:
- - PyQt : import qt calls a C module to register classes
- - OmniORB : import *_idl calls a C module to register CORBA interfaces
-
-Usage:
- - First : the module salome_shared_modules is imported by main Python interpretor.
- It will keep a dictionnary and a list that are shared among all
- the subinterpretors and imports import_hook module that replaces
- the standard import mechanism par one that prevents more than one import
- for some modules identified by name (call register_name) or by a
- validator (call register_pattern).
-
- Calls to register_name and register_pattern are done in modules named *_shared_modules
- that could be found in the path SALOMEPATH
-
-"""
-import glob,os,sys
-
-import import_hook
-# shared_imported, patterns, register_name, register_pattern
-# will be shared by all Python sub interpretors
-from import_hook import shared_imported
-from import_hook import patterns
-from import_hook import register_name
-from import_hook import register_pattern
-
-register_name("salome_shared_modules")
-
-# Get the SALOMEPATH if set or else use KERNEL_ROOT_DIR that should be set.
-salome_path=os.environ.get("SALOMEPATH",os.getenv("KERNEL_ROOT_DIR"))
-
-list_modules=[]
-
-# Import all *_shared_modules in the path and store them in list_modules
-path=salome_path.split(":")
-for rep in path:
- # Import all *_shared_modules in rep
- for f in glob.glob(os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome","shared_modules","*_shared_modules.py")):
- try:
- name=os.path.splitext(os.path.basename(f))[0]
- register_name(name)
- m=__import__(name)
- list_modules.append(m)
- except:
- pass
-
-#
-# If shared modules have been imported before installing import mechanism
-# we add them to shared_imported
-#
-for name,module in sys.modules.items():
- if import_hook.is_shared(name) and shared_imported.get(name) is None:
- #print "Module shared added to shared_imported: ",name
- shared_imported[name]=module
-
+++ /dev/null
-# SALOME SALOME_SWIG : binding of C++ implementation and Python
-#
-# Copyright (C) 2003 CEA/DEN, EDF R&D
-#
-#
-#
-# File : salome_test.py
-# Module : SALOME
-
-print "Test the application loading GEOM, SMESH, VISU, MED, components and doing some"
-print "operation within the components."
-
-import salome
-from salome import sg
-import SALOMEDS
-import os
-
-import SALOME_ModuleCatalog
-
-print "======================================================================"
-print " Get Catalog "
-print "======================================================================"
-obj = salome.naming_service.Resolve('Kernel/ModulCatalog')
-catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog)
-
-print "======================================================================"
-print " Create Study "
-print "======================================================================"
-
-comp = catalog.GetComponent("GEOM")
-if comp is None:
- raise RuntimeError,"Component GEOM not found in Module Catalog."
-
-import geompy
-
-print "================================="
-print " create AttributeReal "
-print "================================="
-A = geompy.myBuilder.FindOrCreateAttribute(geompy.father, "AttributeReal")
-if A == None :
- raise RuntimeError, "Can't create AttributeReal attribute"
-A = A._narrow(SALOMEDS.AttributeReal)
-A.SetValue(0.0001)
-if A.Value() != 0.0001:
- raise RuntimeError, "Error : wrong value of AttributeReal"
-
-print
-print " =========== Test Geometry =========================="
-print
-
-print "==================================="
-print " define a box"
-print "==================================="
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box,"box")
-
-print
-print "============= Test SMESH ============================="
-print
-
-import StdMeshers
-
-comp = catalog.GetComponent("SMESH")
-if comp is None:
- raise RuntimeError,"Component SMESH not found in Module Catalog."
-
-comp = catalog.GetComponent("MED")
-if comp is None:
- raise RuntimeError,"Component MED not found in Module Catalog."
-
-import SMESH
-
-geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
-myBuilder = salome.myStudy.NewBuilder()
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId);
-
-ShapeTypeCompSolid = 1
-ShapeTypeSolid = 2
-ShapeTypeShell = 3
-ShapeTypeFace = 4
-ShapeTypeWire = 5
-ShapeTypeEdge = 6
-ShapeTypeVertex = 7
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box,"box")
-
-# ---- add first face of box in study
-
-subShapeList=geompy.SubShapeAll(box,ShapeTypeFace)
-face=subShapeList[0]
-name = geompy.SubShapeName(face, box)
-print name
-idface=geompy.addToStudyInFather(box,face,name)
-
-# ---- add shell from box in study
-
-subShellList=geompy.SubShapeAll(box,ShapeTypeShell)
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-print name
-idshell=geompy.addToStudyInFather(box,shell,name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face,ShapeTypeEdge)
-edge=edgeList[0];
-name = geompy.SubShapeName(edge, face)
-print name
-idedge=geompy.addToStudyInFather(face,edge,name)
-
-
-# ---- SMESH
-
-# ---- create Hypothesis
-
-print "-------------------------- create Hypothesis"
-print "-------------------------- LocalLength"
-hypLen1 = smesh.CreateHypothesis( "LocalLength", "libStdMeshersEngine.so" )
-hypLen1.SetLength(100)
-print hypLen1.GetName()
-print hypLen1.GetId()
-print hypLen1.GetLength()
-
-smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100")
-
-print "-------------------------- NumberOfSegments"
-hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" )
-hypNbSeg1.SetNumberOfSegments(7)
-print hypNbSeg1.GetName()
-print hypNbSeg1.GetId()
-print hypNbSeg1.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7")
-
-print "-------------------------- MaxElementArea"
-hypArea1 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea1.SetMaxElementArea(2500)
-print hypArea1.GetName()
-print hypArea1.GetId()
-print hypArea1.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500")
-
-print "-------------------------- MaxElementArea"
-hypArea2 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea2.SetMaxElementArea(500)
-print hypArea2.GetName()
-print hypArea2.GetId()
-print hypArea2.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500")
-
-print "-------------------------- Regular_1D"
-algoReg = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" )
-listHyp=algoReg.GetCompatibleHypothesis()
-for hyp in listHyp:
- print hyp
-print algoReg.GetName()
-print algoReg.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" )
-
-print "-------------------------- MEFISTO_2D"
-algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" )
-listHyp=algoMef.GetCompatibleHypothesis()
-for hyp in listHyp:
- print hyp
-print algoMef.GetName()
-print algoMef.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" )
-
-# ---- add hypothesis to box
-
-print "-------------------------- add hypothesis to box"
-box=salome.IDToObject(idbox)
-mesh = smesh.CreateMesh(box)
-
-smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" );
-
-ret=mesh.AddHypothesis(box,algoReg)
-print ret
-ret=mesh.AddHypothesis(box,algoMef)
-print ret
-
-
-ret=mesh.AddHypothesis(box,hypNbSeg1)
-print ret
-ret=mesh.AddHypothesis(box,hypArea1)
-print ret
-
-
-# ---- add hypothesis to edge
-
-print "-------------------------- add hypothesis to edge"
-edge=salome.IDToObject(idedge)
-submesh=mesh.GetSubMesh(edge, "SubMeshEdge")
-
-ret=mesh.AddHypothesis(edge,algoReg)
-print ret
-ret=mesh.AddHypothesis(edge,hypLen1)
-print ret
-
-print "-------------------------- add hypothesis to face"
-face=salome.IDToObject(idface)
-submesh = mesh.GetSubMesh(face, "SubMeshFace")
-
-ret=mesh.AddHypothesis(face,hypArea2)
-print ret
-
-smesh.Compute(mesh, box)
-sg.updateObjBrowser(1);
-
-print
-print "============= Test Supervisor ============================="
-print
-
-comp = catalog.GetComponent("SUPERV")
-if comp is None:
- raise RuntimeError,"Component SUPERV not found in Module Catalog."
-
-from SuperV import *
-import SALOMEDS
-myStudy = salome.myStudy
-myBuilder = myStudy.NewBuilder()
-
-SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
-father = myStudy.FindComponent("SUPERV")
-if father is None:
- father = myBuilder.NewComponent("SUPERV")
- A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
- FName = A1._narrow(SALOMEDS.AttributeName)
- FName.SetValue( salome.sg.getComponentUserName("SUPERV") )
- A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
- aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
- aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
- myBuilder.DefineComponentInstance(father,SuperVision)
-
-def addStudy(ior):
- dataflow = SuperVision.getStreamGraph(ior)
- name=dataflow.Name()
- itr = myStudy.NewChildIterator(father)
- while itr.More():
- item=itr.Value()
- res,A=item.FindAttribute("AttributeName")
- if res:
- aName = A._narrow(SALOMEDS.AttributeName)
- if aName.Value() == name :
- print myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
- A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
- print "A = ", A
- if A is not None :
- #res,A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
- anIOR = A._narrow(SALOMEDS.AttributeIOR);
- print "anIOR.SetValue(dataflow.getIOR())"
- anIOR.SetValue(dataflow.getIOR())
- return
- itr.Next()
- obj = myBuilder.NewObject(father)
- A=myBuilder.FindOrCreateAttribute(obj, "AttributeName")
- aName=A._narrow(SALOMEDS.AttributeName)
- aName.SetValue(name)
- A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR")
- anIOR = A._narrow(SALOMEDS.AttributeIOR)
- anIOR.SetValue(dataflow.getIOR())
-
-import os
-dir= os.getenv("SUPERV_ROOT_DIR")
-if dir == None:
- raise RuntimeError, "SUPERV_ROOT_DIR is not defined"
-xmlfile = dir +"/examples/GraphGeomEssai.xml"
-print "Load dataflow from the file : "
-print xmlfile
-print
-
-myGraph = StreamGraph ( xmlfile )
-
-# This DataFlow is "valid" : no loop, correct links between Nodes etc...
-print "myGraph.IsValid() = ", myGraph.IsValid()
-
-# Get Nodes
-myGraph.PrintNodes()
-
-# This DataFlow is "executable" : all pending Ports are defined with Datas
-print myGraph.IsExecutable()
-
-# Starts only execution of that DataFlow and gets control immediatly
-print myGraph.Run()
-
-# That DataFlow is running ==> 0 (false)
-print myGraph.IsDone()
-
-# Events of execution :
-aStatus,aNode,anEvent,aState = myGraph.Event()
-while aStatus :
- print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
- aStatus,aNode,anEvent,aState = myGraph.Event()
-print "myGraph.IsDone() = ",myGraph.IsDone()
-
-# Wait for Completion (but it is already done after event loop ...)
-print "Done : ",myGraph.DoneW()
-
-print " "
-#print "Type : print myGraph.IsDone()"
-#print " If execution is finished ==> 1 (true)"
-res=myGraph.IsDone()
-if res != 1:
- raise RuntimeError, "myGraph.Run() is not done"
-
-print " "
-print "Type : myGraph.PrintPorts()"
-print " to see input and output values of the graph"
-myGraph.PrintPorts()
-
-# Export will create newsupervisionexample.xml and the corresponding .py file
-tmpdir=os.getenv("TmpDir")
-if tmpdir is None:
- tmpdir="/tmp"
-file = tmpdir + "/newsupervisionexample"
-print "--------------\n"+file+"\n--------------\n"
-myGraph.Export(file)
-
-ior = salome.orb.object_to_string(myGraph.G)
-addStudy(ior)
-
-GraphName = myGraph.Name()
-print "Befor save ",
-#nodes = myGraph.Nodes()
-nodes = myGraph.G.Nodes().FNodes
-length_bs = len(nodes)
-print "ListOfNodes length = ", length_bs
-names=[]
-for node in nodes:
- names.append(node.Name())
-print names
-
-# Graph creation
-GraphInLines = StreamGraph( 'GraphInLines' )
-GraphInLines.SetName( 'GraphInLines' )
-GraphInLines.SetAuthor( '' )
-GraphInLines.SetComment( '' )
-GraphInLines.Coords( 0 , 0 )
-
-# Creation of InLine Nodes
-PyAdd = []
-PyAdd.append( 'def Add(a,b) : ' )
-PyAdd.append( ' return a+b ' )
-PyAdd.append( '' )
-Add = GraphInLines.INode( 'Add' , PyAdd )
-Add.InPort( 'a' , 'long' )
-Add.InPort( 'b' , 'long' )
-Add.OutPort( 'f' , 'long' )
-Add.SetName( 'Add' )
-Add.SetAuthor( '' )
-Add.SetComment( 'Python function' )
-Add.Coords( 351 , 77 )
-PySub = []
-PySub.append( 'def Sub(a,b) : ' )
-PySub.append( ' return a-b ' )
-PySub.append( '' )
-Sub = GraphInLines.INode( 'Sub' , PySub )
-Sub.InPort( 'a' , 'long' )
-Sub.InPort( 'b' , 'long' )
-Sub.OutPort( 'f' , 'long' )
-Sub.SetName( 'Sub' )
-Sub.SetAuthor( '' )
-Sub.SetComment( 'Python function' )
-Sub.Coords( 86 , 333 )
-PyMul = []
-PyMul.append( 'def Mul(a,b) : ' )
-PyMul.append( ' return a*b ' )
-Mul = GraphInLines.INode( 'Mul' , PyMul )
-Mul.InPort( 'a' , 'long' )
-Mul.InPort( 'b' , 'long' )
-Mul.OutPort( 'Result' , 'long' )
-Mul.SetName( 'Mul' )
-Mul.SetAuthor( '' )
-Mul.SetComment( 'Python function' )
-Mul.Coords( 616 , 247 )
-
-# Creation of intermediate Output variables and of Control Links
-Addf = Add.Port( 'f' )
-Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) )
-Mula.AddCoord( 1 , 570 , 356 )
-Mula.AddCoord( 2 , 570 , 186 )
-Subf = Sub.Port( 'f' )
-Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) )
-Mulb.AddCoord( 1 , 282 , 376 )
-Mulb.AddCoord( 2 , 282 , 442 )
-Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) )
-Addb.AddCoord( 1 , 283 , 209 )
-Addb.AddCoord( 2 , 283 , 374 )
-Addb.AddCoord( 3 , 283 , 442 )
-
-# Creation of Input datas
-Adda = Add.Input( 'a' , 1)
-Suba = Sub.Input( 'a' , 3)
-Subb = Sub.Input( 'b' , 4)
-
-# Creation of Output variables
-MulResult = Mul.Port( 'Result' )
-
-GraphInLines.Run()
-
-GraphInLines.DoneW()
-
-GraphInLines.PrintPorts()
-
-sg.updateObjBrowser(1);
-
-print
-print "============= Test VISU and MED ============================="
-print
-
-comp = catalog.GetComponent("VISU")
-if comp is None:
- raise RuntimeError,"Component VISU not found in Module Catalog."
-
-import sys
-import SALOMEDS
-import SALOME
-import SALOME_MED
-import VISU
-
-import visu_gui
-
-medFileName = "pointe.med"
-medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFileName
-print "Load ", medFile
-
-studyCurrent = salome.myStudyName
-
-med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
-myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
-
-try:
- if os.access(medFile, os.R_OK) :
- if not os.access(medFile, os.W_OK) :
- import random
- medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medFileName
- print " -- Copy " + medFile + " to " + medFileNew
- os.system("cp "+ medFile + " " + medFileNew)
- medFile = medFileNew
- os.system("chmod 755 " + medFile)
-
- if os.access(medFile, os.W_OK) :
- med_comp.readStructFileWithFieldType(medFile,studyCurrent)
- med_obj = visu_gui.visu.getMedObjectFromStudy()
- print "med_obj - ", med_obj
-
- myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1)
- aMeshName = "maa1"
- anEntity = VISU.NODE
- aTimeStampId = -1
-
- myResult1 = myVisu.ImportMedField(myField1)
- aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity);
-
- aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId)
-
- myResult2 = myVisu.ImportFile(medFile);
- aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity);
-
- aTimeStampId = 3
- aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId)
-
- sg.updateObjBrowser(0)
- else : print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file";
- else : print "We have no permission to read medFile, it will not be opened";
-
-except:
- if sys.exc_type == SALOME.SALOME_Exception :
- print "There is no permission to read " + medFile
- else :
- print sys.exc_type
- print sys.exc_value
- print sys.exc_traceback
-
-sg.updateObjBrowser(1);
+++ /dev/null
-#include <Launchers.hxx>
-#include "utilities.h"
-
-using namespace std;
-
-static int Launchers_IsLoaded = 0;
-static PyObject * Launchers_module = 0;
-static char * Launchers_name="Launchers";
-
-PyThreadState *mainThreadState=0;
-
-PyThreadState * getMainThreadState(){
- PyInterpreterState *interp;
- PyThreadState *p;
- interp=PyInterpreterState_Head();
- for (interp = PyInterpreterState_Head(); interp != NULL; ){
- if(interp->next == NULL)break;
- interp=interp->next;
- }
- for (p = interp->tstate_head; p != NULL; ){
- if(p->next == NULL)break;
- p=p->next;
- }
- return p;
-}
-PyThreadState *acquireMainThread(){
- PyEval_AcquireLock();
- return PyThreadState_Swap(mainThreadState);
-}
-void releaseMainThread(PyThreadState *tstate){
- PyThreadState_Swap(tstate);
- PyEval_ReleaseLock();
-}
-
-void Launchers_assertInitialized() {
- MESSAGE("===========================================================");
- MESSAGE("Launchers_assertInitialized");
- MESSAGE("===========================================================");
- PyThreadState *_save;
- if( !Py_IsInitialized() ) {
- MESSAGE("===========================================================");
- MESSAGE("Py_Initialize()");
- MESSAGE("===========================================================");
- Py_Initialize();
- PyEval_InitThreads();
- PyEval_SaveThread();
- }
- if( !Launchers_IsLoaded ) {
- mainThreadState=getMainThreadState();
- _save=acquireMainThread();
- Launchers_module=PyImport_ImportModule(Launchers_name);
- if(!Launchers_module){
- PyErr_Print();
- return;
- }
- Py_INCREF(Launchers_module);
- Launchers_IsLoaded = 1;
- releaseMainThread(_save);
- }
-}
-
-PyObject * getLauncher(char* arg0) {
- PyObject *v;
- PyThreadState *_save;
- Launchers_assertInitialized();
- _save=acquireMainThread();
- v=PyObject_CallMethod(Launchers_module,"getLauncher","s",arg0);
- if(!v){
- PyErr_Print();
- return NULL;
- }
- releaseMainThread(_save);
- Py_INCREF(v);
- return v;
-}
-
-void Launcher_Slaunch(PyObject *self, char* arg1, char* arg2) {
- PyObject *v;
- PyThreadState *_save;
- Launchers_assertInitialized();
- _save=acquireMainThread();
- v=PyObject_CallMethod(self,"Slaunch","ss",arg1,arg2);
- if(!v){
- PyErr_Print();
- }
- releaseMainThread(_save);
-}
-
+++ /dev/null
-#include <Python.h>
-#define elDEBUG 0
-
-PyObject * getLauncher(char* );
-void Launcher_Slaunch(PyObject * objId, char*, char* );
-
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : SALOME_LifeCycleCORBA.cxx
-// Author : Paul RASCLE, EDF
-// Module : SALOME
-// $Header$
-
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include <iomanip>
-
-#include "OpUtil.hxx"
-#include "utilities.h"
-#include "Launchers.hxx"
-
-#include <ServiceUnreachable.hxx>
-
-#include "SALOME_LifeCycleCORBA.hxx"
-#include "SALOMETraceCollector.hxx"
-#ifndef WNT
-#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
-#else
-#include "SALOME_ModuleCatalog.hh"
-#endif
-#include "SALOME_ContainerManager.hxx"
-#include "SALOME_Component_i.hxx"
-#include "SALOME_NamingService.hxx"
-using namespace std;
-
-IncompatibleComponent::IncompatibleComponent( void ):
- SALOME_Exception( "IncompatibleComponent" )
-{
-}
-
-IncompatibleComponent::IncompatibleComponent(const IncompatibleComponent &ex):
- SALOME_Exception( ex )
-{
-}
-
-//=============================================================================
-/*!
- * Constructor
- */
-//=============================================================================
-
-SALOME_LifeCycleCORBA::SALOME_LifeCycleCORBA(SALOME_NamingService *ns)
-{
- // be sure to have an instance of traceCollector, when used via SWIG
- // in a Python module
- int argc = 0;
- char *xargv = "";
- char **argv = &xargv;
- CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
- // LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
- if (!ns)
- {
- _NS = new SALOME_NamingService(orb);
- }
- else _NS = ns;
- //add try catch
- _NS->Change_Directory("/"); // mpv 250105: current directory may be not root
- // (in SALOMEDS for an example)
- // not enough: set a current directory in naming service is not thread safe
- // if naming service instance is shared among several threads...
- // ==> allways use absolute path and dot rely on current directory!
-
- CORBA::Object_var obj =
- _NS->Resolve(SALOME_ContainerManager::_ContainerManagerNameInNS);
- ASSERT( !CORBA::is_nil(obj));
- _ContManager=Engines::ContainerManager::_narrow(obj);
-}
-
-//=============================================================================
-/*!
- * Destructor
- */
-//=============================================================================
-
-SALOME_LifeCycleCORBA::~SALOME_LifeCycleCORBA()
-{
-}
-
-//=============================================================================
-/*! Public -
- * Find and aready existing and registered component instance.
- * \param params machine parameters like type or name...
- * \param componentName the name of component class
- * \param studyId default = 0 : multistudy instance
- * \return a CORBA reference of the component instance, or _nil if not found
- */
-//=============================================================================
-
-Engines::Component_ptr
-SALOME_LifeCycleCORBA::FindComponent(const Engines::MachineParameters& params,
- const char *componentName,
- int studyId)
-{
- if (! isKnownComponentClass(componentName))
- return Engines::Component::_nil();
-
- Engines::MachineList_var listOfMachines =
- _ContManager->GetFittingResources(params, componentName);
-
- Engines::Component_var compo = _FindComponent(params,
- componentName,
- studyId,
- listOfMachines);
-
- return compo._retn();
-}
-
-//=============================================================================
-/*! Public -
- * Load a component instance on a container defined by machine parameters
- * \param params machine parameters like type or name...
- * \param componentName the name of component class
- * \param studyId default = 0 : multistudy instance
- * \return a CORBA reference of the component instance, or _nil if problem
- */
-//=============================================================================
-
-Engines::Component_ptr
-SALOME_LifeCycleCORBA::LoadComponent(const Engines::MachineParameters& params,
- const char *componentName,
- int studyId)
-{
- // --- Check if Component Name is known in ModuleCatalog
-
- if (! isKnownComponentClass(componentName))
- return Engines::Component::_nil();
-
- Engines::MachineList_var listOfMachines =
- _ContManager->GetFittingResources(params, componentName);
-
- Engines::Component_var compo = _LoadComponent(params,
- componentName,
- studyId,
- listOfMachines);
-
- return compo._retn();
-}
-
-//=============================================================================
-/*! Public -
- * Find and aready existing and registered component instance or load a new
- * component instance on a container defined by machine parameters.
- * \param params machine parameters like type or name...
- * \param componentName the name of component class
- * \param studyId default = 0 : multistudy instance
- * \return a CORBA reference of the component instance, or _nil if problem
- */
-//=============================================================================
-
-Engines::Component_ptr
-SALOME_LifeCycleCORBA::
-FindOrLoad_Component(const Engines::MachineParameters& params,
- const char *componentName,
- int studyId)
-{
- // --- Check if Component Name is known in ModuleCatalog
-
- if (! isKnownComponentClass(componentName))
- return Engines::Component::_nil();
-
- Engines::MachineList_var listOfMachines =
- _ContManager->GetFittingResources(params,componentName);
-
- Engines::Component_var compo = _FindComponent(params,
- componentName,
- studyId,
- listOfMachines);
-
- if(CORBA::is_nil(compo))
- compo = _LoadComponent(params,
- componentName,
- studyId,
- listOfMachines);
-
- return compo._retn();
-}
-
-//=============================================================================
-/*! Public -
- * Find and aready existing and registered component instance or load a new
- * component instance on a container defined by name
- * \param containerName the name of container, under one of the forms
- * - 1 aContainer (local container)
- * - 2 machine/aContainer (container on hostname = machine)
- * \param componentName the name of component class
- * \return a CORBA reference of the component instance, or _nil if problem
- */
-//=============================================================================
-
-Engines::Component_ptr
-SALOME_LifeCycleCORBA::FindOrLoad_Component(const char *containerName,
- const char *componentName)
-{
- // --- Check if Component Name is known in ModuleCatalog
-
- if (! isKnownComponentClass(componentName))
- return Engines::Component::_nil();
-
- // --- Check if containerName contains machine name (if yes: rg>0)
-
- char *stContainer=strdup(containerName);
- string st2Container(stContainer);
- int rg=st2Container.find("/");
-
- Engines::MachineParameters_var params=new Engines::MachineParameters;
- preSet(params);
- if (rg<0)
- {
- // containerName doesn't contain "/" => Local container
- params->container_name=CORBA::string_dup(stContainer);
- params->hostname=CORBA::string_dup(GetHostname().c_str());
- }
- else
- {
- stContainer[rg]='\0';
- params->container_name=CORBA::string_dup(stContainer+rg+1);
- params->hostname=CORBA::string_dup(stContainer);
- }
- params->isMPI = false;
- SCRUTE(params->container_name);
- SCRUTE(params->hostname);
- SCRUTE(params->OS);
- SCRUTE(params->mem_mb);
- SCRUTE(params->cpu_clock);
- SCRUTE(params->nb_proc_per_node);
- SCRUTE(params->nb_node);
- SCRUTE(params->isMPI);
- free(stContainer);
- return FindOrLoad_Component(params,componentName);
-
-}
-
-//=============================================================================
-/*! Public -
- * Check if the component class is known in module catalog
- * \param componentName the name of component class
- * \return true if found, false otherwise
- */
-//=============================================================================
-
-bool SALOME_LifeCycleCORBA::isKnownComponentClass(const char *componentName)
-{
-
- try
- {
- CORBA::Object_var obj = _NS->Resolve("/Kernel/ModulCatalog");
- SALOME_ModuleCatalog::ModuleCatalog_var Catalog =
- SALOME_ModuleCatalog::ModuleCatalog::_narrow(obj) ;
- ASSERT(! CORBA::is_nil(Catalog));
- SALOME_ModuleCatalog::Acomponent_ptr compoInfo =
- Catalog->GetComponent(componentName);
- if (CORBA::is_nil (compoInfo))
- {
- INFOS("Catalog Error : Component not found in the catalog");
- return false;
- }
- else return true;
- }
- catch (ServiceUnreachable&)
- {
- INFOS("Caught exception: Naming Service Unreachable");
- }
- catch (...)
- {
- INFOS("Caught unknown exception.");
- }
- return false;
-}
-
-//=============================================================================
-/*! Public -
- * Not so complex... useful ?
- */
-//=============================================================================
-
-bool
-SALOME_LifeCycleCORBA::isMpiContainer(const Engines::MachineParameters& params)
- throw(IncompatibleComponent)
-{
- if( params.isMPI )
- return true;
- else
- return false;
-}
-
-
-//=============================================================================
-/*! Public -
- * Pre initialisation of a given Engines::MachineParameters with default
- * values.
- * - container_name = "" : not relevant
- * - hostname = "" : not relevant
- * - OS = "" : not relevant
- * - mem_mb = 0 : not relevant
- * - cpu_clock = 0 : not relevant
- * - nb_proc_per_node = 0 : not relevant
- * - nb_node = 0 : not relevant
- * - isMPI = false : standard components
- */
-//=============================================================================
-
-void SALOME_LifeCycleCORBA::preSet( Engines::MachineParameters& params)
-{
- params.container_name = "";
- params.hostname = "";
- params.OS = "";
- params.mem_mb = 0;
- params.cpu_clock = 0;
- params.nb_proc_per_node = 0;
- params.nb_node = 0;
- params.isMPI = false;
-}
-
-//=============================================================================
-/*! Public -
- * \return a number of processors not 0, only for MPI containers
- */
-//=============================================================================
-
-int SALOME_LifeCycleCORBA::NbProc(const Engines::MachineParameters& params)
-{
- if( !isMpiContainer(params) )
- return 0;
- else if( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
- return 1;
- else if( params.nb_node == 0 )
- return params.nb_proc_per_node;
- else if( params.nb_proc_per_node == 0 )
- return params.nb_node;
- else
- return params.nb_node * params.nb_proc_per_node;
-}
-
-//=============================================================================
-/*! Protected -
- * Find and aready existing and registered component instance.
- * \param params machine parameters like type or name...
- * \param componentName the name of component class
- * \param studyId default = 0 : multistudy instance
- * \param listOfMachines list of machine address
- * \return a CORBA reference of the component instance, or _nil if not found
- * - build a list of machines on which an instance of the component is running,
- * - find the best machine among the list
- */
-//=============================================================================
-
-Engines::Component_ptr
-SALOME_LifeCycleCORBA::
-_FindComponent(const Engines::MachineParameters& params,
- const char *componentName,
- int studyId,
- const Engines::MachineList& listOfMachines)
-{
- // --- build the list of machines on which the component is already running
-
- const char *containerName = params.container_name;
- int nbproc = NbProc(params);
- MESSAGE("_FindComponent, required " << containerName <<
- " " << componentName << " " << nbproc);
-
- Engines::MachineList_var machinesOK = new Engines::MachineList;
-
- unsigned int lghtOfmachinesOK = 0;
- machinesOK->length(listOfMachines.length());
-
- for(unsigned int i=0; i<listOfMachines.length(); i++)
- {
- const char *currentMachine=listOfMachines[i];
- MESSAGE("_FindComponent, look at " << currentMachine);
- CORBA::Object_var obj = _NS->ResolveComponent(currentMachine,
- containerName,
- componentName,
- nbproc);
- if (!CORBA::is_nil(obj))
- machinesOK[lghtOfmachinesOK++] = CORBA::string_dup(currentMachine);
- }
-
- // --- find the best machine among the list
-
- if(lghtOfmachinesOK != 0)
- {
- machinesOK->length(lghtOfmachinesOK);
- CORBA::String_var bestMachine = _ContManager->FindBest(machinesOK);
- CORBA::Object_var obj = _NS->ResolveComponent(bestMachine,
- containerName,
- componentName,
- nbproc);
- return Engines::Component::_narrow(obj);
- }
- else
- return Engines::Component::_nil();
-}
-
-//=============================================================================
-/*! Protected -
- * Load a component instance.
- * \param params machine parameters like type or name...
- * \param componentName the name of component class
- * \param studyId default = 0 : multistudy instance
- * \param listOfMachines list of machine address
- * \return a CORBA reference of the component instance, or _nil if problem
- * - Finds a container in the list of machine or start one.
- * - Try to load the component library in the container,
- * - then create an instance of the component.
- */
-//=============================================================================
-
-Engines::Component_ptr
-SALOME_LifeCycleCORBA::
-_LoadComponent(const Engines::MachineParameters& params,
- const char *componentName,
- int studyId,
- const Engines::MachineList& listOfMachines)
-{
- const char *containerName = params.container_name;
- int nbproc = NbProc(params);
-
- MESSAGE("_LoadComponent, required " << containerName <<
- " " << componentName << " " << nbproc);
-
- Engines::Container_var cont =
- _ContManager->FindOrStartContainer(params,
- listOfMachines);
- if (CORBA::is_nil(cont)) return Engines::Component::_nil();
-
- bool isLoadable = cont->load_component_Library(componentName);
- if (!isLoadable) return Engines::Component::_nil();
-
- Engines::Component_var myInstance =
- cont->create_component_instance(componentName, studyId);
- return myInstance._retn();
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-
-#include "LifeCycleCORBATest.hxx"
-#include "SALOME_LifeCycleCORBA.hxx"
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-#include "OpUtil.hxx"
-
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <cstdlib>
-
-using namespace std;
-
-// --- uncomment to have some traces on standard error
-// (useful only when adding new tests...)
-//#define _DEVDEBUG_
-
-#ifdef _DEVDEBUG_
-#define MYDEVTRACE {std::cerr << __FILE__ << " [" << __LINE__ << "] : ";}
-#define DEVTRACE(msg) {MYDEVTRACE; std::cerr<<msg<<std::endl<<std::flush;}
-#else
-#define MYDEVTRACE
-#define DEVTRACE(msg)
-#endif
-
-#define TRACEFILE "/tmp/traceUnitTest.log"
-
-// ============================================================================
-/*!
- * Set Trace mecanism
- * - delete preexisting trace classes if any
- * - set trace on file
- * Get or initialize the orb
- * Create a SALOME_NamingService instance
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::setUp()
-{
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
- bp1->deleteInstance(bp1);
-
- // --- trace on file
- char *theFileName = TRACEFILE;
-
- string s = "file:";
- s += theFileName;
- //s="local";
- //s="with_logger";
- CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
-
- ofstream traceFile;
- // traceFile.open(theFileName, ios::out | ios::trunc);
- traceFile.open(theFileName, ios::out | ios::app);
- CPPUNIT_ASSERT(traceFile); // file created empty, then closed
- traceFile.close();
-
- 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 ) ;
-
- // --- Create a SALOME_NamingService instance
-
- _NS.init_orb(_orb) ;
-}
-
-// ============================================================================
-/*!
- * - delete trace classes
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::tearDown()
-{
-
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
- bp1->deleteInstance(bp1);
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component.
- * - get a local container (no hostname given),
- * load an engine, check that the CORBA object is not null.
- * - check narrow
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_LaunchContainer()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- get a local container,
- // load an engine, check that the CORBA object is not null
-
- string containerName = "myContainer";
- Engines::Component_var mycompo =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo);
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component.
- * - Call 2 times FindOrLoad_Component with the same parameters
- * - check if we get the same engine
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_SameInstance()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- get a local container,
- // load an engine, check that the CORBA object is not null
-
- string containerName = "myContainer";
-
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
-
- Engines::Component_var mycompo2 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo2));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo1);
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
-
- Engines::TestComponent_var m2;
- m2 = Engines::TestComponent::_narrow(mycompo2);
- CPPUNIT_ASSERT(!CORBA::is_nil(m2));
-
- // --- check equality of instance names
-
- string name1 = m1->instanceName();
- string name2 = m2->instanceName();
- CPPUNIT_ASSERT_EQUAL(name1, name2);
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component with Python Component on C++ Container
- * load an engine, check that the CORBA object is not null.
- * - check narrow
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_PythonInCppContainer()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- get a local container,
- // load an engine, check that the CORBA object is not null
-
- string containerName = "myContainer";
-
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SALOME_TestComponentPy");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo1);
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
-}
-
-// ============================================================================
-/*!
- * 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
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_PythonSameInstance()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- get a local container (with a name based on local hostname),
- // load an engine, check that the CORBA object is not null
-
- string containerName = "myContainer";
-
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SALOME_TestComponentPy");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
-
- Engines::Component_var mycompo2 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SALOME_TestComponentPy");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo2));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo1);
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
-
- Engines::TestComponent_var m2;
- m2 = Engines::TestComponent::_narrow(mycompo2);
- CPPUNIT_ASSERT(!CORBA::is_nil(m2));
-
- // --- check equality of instance names
-
- string name1 = m1->instanceName();
- string name2 = m2->instanceName();
- CPPUNIT_ASSERT_EQUAL(name1, name2);
-}
-
-// ============================================================================
-/*!
- * 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
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_UnknownInCatalog()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- get a local container (with a name based on local hostname),
- // load an engine, check that the CORBA object is not null
-
- string containerName = "myContainer";
-
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"MyNewComponent");
- CPPUNIT_ASSERT(CORBA::is_nil(mycompo1));
-}
-
-// ============================================================================
-/*!
- * 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
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_LaunchContainerHostname()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- get a local container (with a name based on local hostname),
- // load an engine, check that the CORBA object is not null
-
- string containerName = GetHostname();
- containerName += "/theContainer";
- DEVTRACE("containerName = " << containerName);
- Engines::Component_var mycompo =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo);
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component with and without local hostname given.
- * We must get the same container, the same instance of component
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_SameContainer()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- get a local container (with a name based on local hostname),
- // load an engine, check that the CORBA object is not null
-
- string containerName = "aContainer";
-
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
-
- containerName = GetHostname();
- containerName += "/aContainer";
- DEVTRACE("containerName = " << containerName);
- Engines::Component_var mycompo2 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo2));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo1);
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
-
- Engines::TestComponent_var m2;
- m2 = Engines::TestComponent::_narrow(mycompo2);
- CPPUNIT_ASSERT(!CORBA::is_nil(m2));
-
- // --- check equality of instance names
-
- string name1 = m1->instanceName();
- string name2 = m2->instanceName();
- CPPUNIT_ASSERT_EQUAL(name1, name2);
-
- // --- check containers are the same servant (same container name+hostname)
-
- Engines::Container_var c1 = m1->GetContainerRef();
- CPPUNIT_ASSERT(!CORBA::is_nil(c1));
- Engines::Container_var c2 = m2->GetContainerRef();
- CPPUNIT_ASSERT(!CORBA::is_nil(c1));
- string cname1 = c1->name();
- string cname2 = c2->name();
- CPPUNIT_ASSERT_EQUAL(cname1, cname2);
- string hostname1 = c1->getHostName();
- string hostname2 = c2->getHostName();
- CPPUNIT_ASSERT_EQUAL(hostname1, hostname2);
- CORBA::Long pidc1 = c1->getPID();
- CORBA::Long pidc2 = c2->getPID();
- CPPUNIT_ASSERT_EQUAL(pidc1, pidc2);
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component: check behaviour when ask for an unknown computer
- * We must catch a Salome Exception with "unknown host" message
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_UnknownMachine()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- // --- try to get a distant container on an unknown machine (not existing)
- // check that the CORBA object is null
-
- string containerName = "aFarAwayComputer";
- containerName += "/theContainer";
-// CPPUNIT_ASSERT_THROW(Engines::Component_var mycompo =
-// _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");,SALOME::SALOME_Exception);
- try
- {
- Engines::Component_var mycompo =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- }
- catch(const SALOME::SALOME_Exception &ex)
- {
- CPPUNIT_ASSERT(true);
-// string expectedMessage = "BAD PARAM";
-// std::ostream os;
-// os << ex;
-// string actualMessage = os.str();
-// DEVTRACE("actual Exception Message = " << actualMessage);
-// CPPUNIT_ASSERT(actualMessage.find(expectedMessage) != string::npos);
- }
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component, empty params must give an instance
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_ParamsEmpty()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- Engines::MachineParameters params;
- _LCC.preSet(params);
- Engines::Component_var mycompo =
- _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo);
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component params = local container
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_ParamsLocalContainer()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- Engines::MachineParameters params;
- _LCC.preSet(params);
- string hostname=GetHostname();
- params.hostname=hostname.c_str();
- Engines::Component_var mycompo =
- _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo);
-
- // --- check that container is on local computer
-
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
- Engines::Container_var c1 = m1->GetContainerRef();
- CPPUNIT_ASSERT(!CORBA::is_nil(c1));
- string hostname1 = c1->getHostName();
- CPPUNIT_ASSERT_EQUAL(hostname1, GetHostname());
-}
-
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component params = containerName
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_ParamsContainerName()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- Engines::MachineParameters params;
- _LCC.preSet(params);
- string containerName = "myContainer";
- params.container_name = containerName.c_str();
- Engines::Component_var mycompo =
- _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
- CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo);
-
- // --- check that container has good name
-
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
- Engines::Container_var c1 = m1->GetContainerRef();
- CPPUNIT_ASSERT(!CORBA::is_nil(c1));
- string hostname1 = c1->getHostName();
- CPPUNIT_ASSERT_EQUAL(hostname1, GetHostname());
- string cname1 = c1->name();
- CPPUNIT_ASSERT(cname1.find(containerName) != string::npos);
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component on remote computer
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_RemoteComputer()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- string remoteHost = GetRemoteHost();
-
- string containerName = remoteHost;
- containerName += "/aContainer";
- DEVTRACE("containerName = " << containerName);
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
- CPPUNIT_ASSERT_MESSAGE("Test validity requires connection to remote "\
- "computers from ResourcesCatalog",
- !CORBA::is_nil(mycompo1));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo1);
-
- // --- check that container is on good computer
-
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
- Engines::Container_var c1 = m1->GetContainerRef();
- CPPUNIT_ASSERT(!CORBA::is_nil(c1));
- string hostname1 = c1->getHostName();
- CPPUNIT_ASSERT_EQUAL(hostname1, remoteHost);
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component with params on remote computer
- * params empty except hostname
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_ParamsRemoteComputer()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- string remoteHost = GetRemoteHost();
-
- Engines::MachineParameters params;
- _LCC.preSet(params);
- params.hostname = remoteHost.c_str();
-
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
- CPPUNIT_ASSERT_MESSAGE("Test validity requires connection to remote "\
- "computers from ResourcesCatalog",
- !CORBA::is_nil(mycompo1));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo1);
-
- // --- check that container is on good computer
-
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
- Engines::Container_var c1 = m1->GetContainerRef();
- CPPUNIT_ASSERT(!CORBA::is_nil(c1));
- string hostname1 = c1->getHostName();
- CPPUNIT_ASSERT_EQUAL(hostname1, remoteHost);
-}
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component with params on remote computer
- * params empty except hostname and container_name
- */
-// ============================================================================
-
-void
-LifeCycleCORBATest::testFindOrLoad_Component_ParamsRemoteComputer2()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- string remoteHost = GetRemoteHost();
-
- Engines::MachineParameters params;
- _LCC.preSet(params);
- params.hostname = remoteHost.c_str();
- params.container_name = "anotherContainer";
-
- Engines::Component_var mycompo1 =
- _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
- CPPUNIT_ASSERT_MESSAGE("Test validity requires connection to remote "\
- "computers from ResourcesCatalog",
- !CORBA::is_nil(mycompo1));
-
- // --- check narrow
-
- Engines::TestComponent_var m1;
- m1 = Engines::TestComponent::_narrow(mycompo1);
-
- // --- check that container is on good computer
-
- CPPUNIT_ASSERT(!CORBA::is_nil(m1));
- Engines::Container_var c1 = m1->GetContainerRef();
- CPPUNIT_ASSERT(!CORBA::is_nil(c1));
- string hostname1 = c1->getHostName();
- CPPUNIT_ASSERT_EQUAL(hostname1, remoteHost);
-}
-
-
-
-// ============================================================================
-/*!
- * Check FindOrLoad_Component params = containerName
- */
-// ============================================================================
-
-// void
-// LifeCycleCORBATest::testFindOrLoad_Component_()
-// {
-// }
-
-
-
-
-
-
-
-
-// ============================================================================
-/*!
- * Get a remote HostName in the Resource Catalog
- */
-// ============================================================================
-
-string LifeCycleCORBATest::GetRemoteHost()
-{
- SALOME_LifeCycleCORBA _LCC(&_NS);
-
- CORBA::Object_var obj = _NS.Resolve("/ContainerManager");
- CPPUNIT_ASSERT(!CORBA::is_nil(obj));
- Engines::ContainerManager_var containerManager =
- Engines::ContainerManager::_narrow(obj);
- CPPUNIT_ASSERT(!CORBA::is_nil(containerManager));
-
- Engines::MachineParameters params;
- _LCC.preSet(params); // empty params to get all the machines
-
- Engines::MachineList_var hostList =
- containerManager->GetFittingResources(params,"SalomeTestComponent");
- CPPUNIT_ASSERT(hostList->length() > 1);
-
- string localHost = GetHostname();
- string remoteHost;
- for (unsigned int i=0; i < hostList->length(); i++)
- {
- const char* aMachine = hostList[i];
- string machine(aMachine);
- if (machine != localHost)
- {
- remoteHost = machine;
- break;
- }
- }
- CPPUNIT_ASSERT(remoteHost != "");
- return remoteHost;
-}
+++ /dev/null
-
-#ifndef _LIFECYCLECORBATEST_HXX_
-#define _LIFECYCLECORBATEST_HXX_
-
-#include <cppunit/extensions/HelperMacros.h>
-
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOME_Component)
-#include CORBA_CLIENT_HEADER(SALOME_TestComponent)
-#include "SALOME_NamingService.hxx"
-
-class LifeCycleCORBATest : public CppUnit::TestFixture
-{
- CPPUNIT_TEST_SUITE( LifeCycleCORBATest );
- CPPUNIT_TEST( testFindOrLoad_Component_LaunchContainer );
- CPPUNIT_TEST( testFindOrLoad_Component_SameInstance );
- CPPUNIT_TEST( testFindOrLoad_Component_PythonInCppContainer );
- CPPUNIT_TEST( testFindOrLoad_Component_PythonSameInstance );
- CPPUNIT_TEST( testFindOrLoad_Component_UnknownInCatalog );
- CPPUNIT_TEST( testFindOrLoad_Component_LaunchContainerHostname );
- CPPUNIT_TEST( testFindOrLoad_Component_SameContainer );
- CPPUNIT_TEST( testFindOrLoad_Component_UnknownMachine );
- CPPUNIT_TEST( testFindOrLoad_Component_ParamsEmpty );
- CPPUNIT_TEST( testFindOrLoad_Component_ParamsLocalContainer );
- CPPUNIT_TEST( testFindOrLoad_Component_ParamsContainerName );
- CPPUNIT_TEST( testFindOrLoad_Component_RemoteComputer );
- CPPUNIT_TEST( testFindOrLoad_Component_ParamsRemoteComputer );
- CPPUNIT_TEST( testFindOrLoad_Component_ParamsRemoteComputer2 );
-// CPPUNIT_TEST( testFindOrLoad_Component_ );
-// CPPUNIT_TEST( testFindOrLoad_Component_ );
-// CPPUNIT_TEST( );
-// CPPUNIT_TEST( );
- CPPUNIT_TEST_SUITE_END();
-
-public:
-
- void setUp();
- void tearDown();
-
- void testFindOrLoad_Component_LaunchContainer();
- void testFindOrLoad_Component_SameInstance();
- void testFindOrLoad_Component_PythonInCppContainer();
- void testFindOrLoad_Component_PythonSameInstance();
- void testFindOrLoad_Component_UnknownInCatalog();
- void testFindOrLoad_Component_LaunchContainerHostname();
- void testFindOrLoad_Component_SameContainer();
- void testFindOrLoad_Component_UnknownMachine();
- void testFindOrLoad_Component_ParamsEmpty();
- void testFindOrLoad_Component_ParamsLocalContainer();
- void testFindOrLoad_Component_ParamsContainerName();
- void testFindOrLoad_Component_RemoteComputer();
- void testFindOrLoad_Component_ParamsRemoteComputer();
- void testFindOrLoad_Component_ParamsRemoteComputer2();
-// void testFindOrLoad_Component_();
-// void testFindOrLoad_Component_();
-
-protected:
- std::string GetRemoteHost();
- CORBA::ORB_var _orb;
- SALOME_NamingService _NS;
-};
-
-#endif
+++ /dev/null
-# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : Makefile.in
-# Author : Paul RASCLE (EDF)
-# Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# header files
-EXPORT_HEADERS= LifeCycleCORBATest.hxx
-
-EXPORT_PYSCRIPTS = TestLifeCycleCORBA.py
-
-# Libraries targets
-
-LIB = libLifeCycleCORBATest.la
-LIB_SRC = LifeCycleCORBATest.cxx
-LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
- SALOME_Exception.idl
-
-# Executables targets
-
-BIN = TestLifeCycleCORBA
-BIN_SRC =
-
-CXXFLAGS += @CPPUNIT_INCLUDES@
-CPPFLAGS += @CPPUNIT_INCLUDES@
-
-LIBS= @LIBS@ @CPPUNIT_LIBS@
-
-LDFLAGS+=
-
-LDFLAGSFORBIN+= \
- -lSALOMELocalTraceTest -lSALOMELocalTrace -lSALOMEBasics \
- -lSALOMETraceCollectorTest \
- -lUtilsTest -lOpUtil \
- -lSalomeNS -lSalomeContainer -lSalomeResourcesManager \
- -lRegistry -lSalomeNotification \
- -lLifeCycleCORBATest -lSalomeLifeCycleCORBA
-
-
-@CONCLUDE@
+++ /dev/null
-
-// --- include all Unit Test from basics until the present directory
-
-#include "SALOMELocalTraceTest.hxx"
-#include "SALOMETraceCollectorTest.hxx"
-#include "UtilsTest.hxx"
-#include "LifeCycleCORBATest.hxx"
-
-// --- Registers the fixture into the 'registry'
-
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( UtilsTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( LifeCycleCORBATest );
-
-// --- generic Main program from Basic/Test
-
-#include "BasicMainTest.hxx"
+++ /dev/null
-
-
-%module libSALOME_LifeCycleCORBA
-
-%{
-#include "utilities.h"
-#include "SALOME_LifeCycleCORBA.hxx"
-
- using namespace std;
-%}
-
-%typemap(python,out) Engines::Container_ptr, Engines::Component_ptr
-{
- MESSAGE("typemap out on CORBA object ptr");
- SCRUTE($1);
-
- // --- Get the Python orb
-
- PyObject* pdict = PyDict_New();
- PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
- PyRun_String("import CORBA", Py_single_input, pdict, pdict);
- PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
- pdict, pdict);
- PyObject* orb = PyDict_GetItemString(pdict, "o");
-
- // --- Get the C++ orb
-
- int argc = 0;
- char *xargv = "";
- char **argv = &xargv;
- CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
- string s = ORB->object_to_string($1);
- SCRUTE(s);
- PyObject * tmp = PyString_FromString(s.c_str());
- SCRUTE(tmp);
- $result = PyObject_CallMethod(orb, "string_to_object", "O", tmp);
- SCRUTE($result);
-}
-
-
-%typemap(typecheck) const Engines::MachineParameters &
-{
- $1 = ($input != 0);
-}
-
-%typemap(python,in) const Engines::MachineParameters &
-{
- printf("typemap in on Engines::MachineParameters\n");
- //MESSAGE("typemap in on Engines::MachineParameters");
- //ASSERT (PyDict_Check($input))
- if (PyDict_Check($input) == 1)
- {
- Engines::MachineParameters *param = new Engines::MachineParameters ;
- param->container_name = CORBA::string_dup("");
- param->hostname = CORBA::string_dup("");
- param->OS = CORBA::string_dup("");
- param->mem_mb = 0;
- param->cpu_clock = 0;
- param->nb_proc_per_node = 0;
- param->nb_node = 0;
- param->isMPI = false;
- PyObject *key, *value;
- int pos = 0;
- while (PyDict_Next($input, &pos, &key, &value))
- {
- char* keystr = PyString_AsString(key);
- printf("key: %s\n", keystr);
- if (strcmp(keystr,"container_name")==0)
- {
- param->container_name = CORBA::string_dup(PyString_AsString(value));
- }
- else if (strcmp(keystr,"hostname")==0)
- {
- param->hostname = CORBA::string_dup(PyString_AsString(value));
- }
- else if (strcmp(keystr,"OS")==0)
- {
- param->OS = CORBA::string_dup(PyString_AsString(value));
- }
- else if (strcmp(keystr,"mem_mb")==0)
- {
- param->mem_mb = PyLong_AsLong(value);
- }
- else if (strcmp(keystr,"cpu_clock")==0)
- {
- param->cpu_clock = PyLong_AsLong(value);
- }
- else if (strcmp(keystr,"nb_proc_per_node")==0)
- {
- param->nb_proc_per_node = PyLong_AsLong(value);
- }
- else if (strcmp(keystr,"nb_node")==0)
- {
- param->nb_node = PyLong_AsLong(value);
- }
- else if (strcmp(keystr,"isMPI")==0)
- {
- param->isMPI = PyLong_AsLong(value);
- }
- }
- $1 = param;
- }
- else
- {
- printf("pas un dico\n");
- return NULL;
- }
-}
-
-%typemap(python,freearg) const Engines::MachineParameters &
-{
- MESSAGE("delete $1");
- delete $1;
-}
-
-%include "SALOME_LifeCycleCORBA.hxx"
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : MPIContainer_i.cxx
-// Module : SALOME
-
-#include <iostream.h>
-#include <dlfcn.h>
-#include <stdio.h>
-#include "SALOME_Component_i.hxx"
-#include "MPIContainer_i.hxx"
-#include "SALOME_NamingService.hxx"
-#include "Utils_SINGLETON.hxx"
-#include "OpUtil.hxx"
-#include "utilities.h"
-#include <Python.h>
-#include "Container_init_python.hxx"
-using namespace std;
-
-// L'appel au registry SALOME ne se fait que pour le process 0
-Engines_MPIContainer_i::Engines_MPIContainer_i(int nbproc, int numproc,
- CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- char * containerName,
- int argc, char *argv[])
- : Engines_Container_i(orb,poa,containerName,argc,argv,false), MPIObject_i(nbproc,numproc)
-{
- MESSAGE("[" << numproc << "] activate object");
- _id = _poa->activate_object(this);
-// this->_add_ref();
-
- if(numproc==0){
-
- _NS = new SALOME_NamingService();
-// _NS = SINGLETON_<SALOME_NamingService>::Instance() ;
-// ASSERT(SINGLETON_<SALOME_NamingService>::IsAlreadyExisting()) ;
- _NS->init_orb( CORBA::ORB::_duplicate(_orb) ) ;
-
-// Engines::Container_ptr pCont
-// = Engines::Container::_narrow(POA_Engines::MPIContainer::_this());
- CORBA::Object_var obj=_poa->id_to_reference(*_id);
- Engines::Container_var pCont = Engines::Container::_narrow(obj);
- string hostname = GetHostname();
- _containerName = _NS->BuildContainerNameForNS(containerName,hostname.c_str());
- SCRUTE(_containerName);
- _NS->Register(pCont, _containerName.c_str());
- }
-
- // Root recupere les ior des container des autre process
- Engines::MPIObject_var pobj = POA_Engines::MPIContainer::_this();
- BCastIOR(_orb,pobj,true);
-}
-
-Engines_MPIContainer_i::Engines_MPIContainer_i(int nbproc, int numproc)
- : Engines_Container_i(), MPIObject_i(nbproc,numproc)
-{
-}
-
-Engines_MPIContainer_i::~Engines_MPIContainer_i(void)
-{
- MESSAGE("[" << _numproc << "] Engines_MPIContainer_i::~Engines_MPIContainer_i()");
-}
-
-// Load component
-void Engines_MPIContainer_i::Shutdown()
-{
- int ip;
- MESSAGE("[" << _numproc << "] shutdown of MPI Corba Server");
- if( _numproc == 0 ){
- _NS->Destroy_FullDirectory(_containerName.c_str());
- for(ip= 1;ip<_nbproc;ip++)
- (Engines::MPIContainer::_narrow((*_tior)[ip]))->Shutdown();
- }
- _orb->shutdown(0);
-
-}
-
-// Load a component library
-bool Engines_MPIContainer_i::load_component_Library(const char* componentName)
-{
- if( _numproc == 0 ){
- // Invocation du chargement du composant dans les autres process
- for(int ip= 1;ip<_nbproc;ip++)
- (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asload_component_Library(componentName);
- }
-
- return Lload_component_Library(componentName);
-}
-
-void Engines_MPIContainer_i::Asload_component_Library(const char* componentName)
-{
- Lload_component_Library(componentName);
-}
-
-bool Engines_MPIContainer_i::Lload_component_Library(const char* componentName)
-{
- string aCompName = componentName;
-
- // --- try dlopen C++ component
-
- string impl_name = string ("lib") + aCompName + string("Engine.so");
- SCRUTE(impl_name);
-
- _numInstanceMutex.lock(); // lock to be alone
- // (see decInstanceCnt, finalize_removal))
- if (_toRemove_map[impl_name]) _toRemove_map.erase(impl_name);
- if (_library_map[impl_name])
- {
- MESSAGE("[" << _numproc << "] Library " << impl_name << " already loaded");
- _numInstanceMutex.unlock();
- return true;
- }
-
- void* handle;
- handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ;
- if ( handle )
- {
- _library_map[impl_name] = handle;
- _numInstanceMutex.unlock();
- return true;
- }
- else
- {
- INFOS("[" << _numproc << "] Can't load shared library : " << impl_name);
- INFOS("[" << _numproc << "] error dlopen: " << dlerror());
- }
- _numInstanceMutex.unlock();
-
- // --- try import Python component
-
- INFOS("[" << _numproc << "] try import Python component "<<componentName);
- if (_isSupervContainer)
- {
- INFOS("[" << _numproc << "] Supervision Container does not support Python Component Engines");
- return false;
- }
- if (_library_map[aCompName])
- {
- return true; // Python Component, already imported
- }
- else
- {
- Py_ACQUIRE_NEW_THREAD;
- PyObject *mainmod = PyImport_AddModule("__main__");
- PyObject *globals = PyModule_GetDict(mainmod);
- PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
- PyObject *result = PyObject_CallMethod(pyCont,
- "import_component",
- "s",componentName);
- int ret= PyInt_AsLong(result);
- SCRUTE(ret);
- Py_RELEASE_NEW_THREAD;
-
- if (ret) // import possible: Python component
- {
- _library_map[aCompName] = (void *)pyCont; // any non O value OK
- MESSAGE("[" << _numproc << "] import Python: "<<aCompName<<" OK");
- return true;
- }
- }
- return false;
-}
-
-// Create an instance of component
-Engines::Component_ptr
-Engines_MPIContainer_i::create_component_instance( const char* componentName,
- CORBA::Long studyId)
-{
- if( _numproc == 0 ){
- // Invocation du chargement du composant dans les autres process
- for(int ip= 1;ip<_nbproc;ip++)
- (Engines::MPIContainer::_narrow((*_tior)[ip]))->Ascreate_component_instance(componentName,studyId);
- }
-
- return Lcreate_component_instance(componentName,studyId);
-}
-
-void Engines_MPIContainer_i::Ascreate_component_instance( const char* componentName,
- CORBA::Long studyId)
-{
- Lcreate_component_instance(componentName,studyId);
-}
-
-Engines::Component_ptr
-Engines_MPIContainer_i::Lcreate_component_instance( const char* genericRegisterName, CORBA::Long studyId)
-{
- if (studyId < 0) {
- INFOS("studyId must be > 0 for mono study instance, =0 for multiStudy");
- return Engines::Component::_nil() ;
- }
-
- Engines::Component_var iobject = Engines::Component::_nil() ;
- Engines::MPIObject_var pobj;
-
- string aCompName = genericRegisterName;
- if (_library_map[aCompName]) { // Python component
- if (_isSupervContainer) {
- INFOS("Supervision Container does not support Python Component Engines");
- return Engines::Component::_nil();
- }
- _numInstanceMutex.lock() ; // lock on the instance number
- _numInstance++ ;
- int numInstance = _numInstance ;
- _numInstanceMutex.unlock() ;
-
- char aNumI[12];
- sprintf( aNumI , "%d" , numInstance ) ;
- string instanceName = aCompName + "_inst_" + aNumI ;
- string component_registerName =
- _containerName + "/" + instanceName;
-
- Py_ACQUIRE_NEW_THREAD;
- PyObject *mainmod = PyImport_AddModule("__main__");
- PyObject *globals = PyModule_GetDict(mainmod);
- PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
- PyObject *result = PyObject_CallMethod(pyCont,
- "create_component_instance",
- "ssl",
- aCompName.c_str(),
- instanceName.c_str(),
- studyId);
- string iors = PyString_AsString(result);
- SCRUTE(iors);
- Py_RELEASE_NEW_THREAD;
-
- CORBA::Object_var obj = _orb->string_to_object(iors.c_str());
- iobject = Engines::Component::_narrow( obj ) ;
- pobj = Engines::MPIObject::_narrow(obj) ;
- if( _numproc == 0 )
- _NS->Register(iobject, component_registerName.c_str()) ;
- // Root recupere les ior des composants des autre process
- BCastIOR(_orb,pobj,false);
-
- return iobject._retn();
- }
-
- //--- try C++
-
- string impl_name = string ("lib") + genericRegisterName +string("Engine.so");
- void* handle = _library_map[impl_name];
- if ( !handle ) {
- INFOS("shared library " << impl_name <<"must be loaded before instance");
- return Engines::Component::_nil() ;
- }
- else {
- iobject = createMPIInstance(genericRegisterName,
- handle,
- studyId);
- return iobject._retn();
- }
-}
-
-Engines::Component_ptr
-Engines_MPIContainer_i::createMPIInstance(string genericRegisterName,
- void *handle,
- int studyId)
-{
- Engines::Component_var iobject;
- Engines::MPIObject_var pobj;
- // --- find the factory
-
- string aGenRegisterName = genericRegisterName;
- string factory_name = aGenRegisterName + string("Engine_factory");
- SCRUTE(factory_name) ;
-
- typedef PortableServer::ObjectId * (*MPIFACTORY_FUNCTION)
- (int,int,
- CORBA::ORB_ptr,
- PortableServer::POA_ptr,
- PortableServer::ObjectId *,
- const char *,
- const char *) ;
-
- MPIFACTORY_FUNCTION MPIComponent_factory
- = (MPIFACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
-
- char *error ;
- if ( (error = dlerror() ) != NULL) {
- // Try to load a sequential component
- MESSAGE("[" << _numproc << "] Try to load a sequential component");
- _numInstanceMutex.unlock() ;
- iobject = Engines_Container_i::createInstance(genericRegisterName,handle,studyId);
- if( CORBA::is_nil(iobject) ) return Engines::Component::_duplicate(iobject);
- }
-
- // --- create instance
-
- iobject = Engines::Component::_nil() ;
-
- try
- {
- _numInstanceMutex.lock() ; // lock on the instance number
- _numInstance++ ;
- int numInstance = _numInstance ;
- _numInstanceMutex.unlock() ;
-
- char aNumI[12];
- sprintf( aNumI , "%d" , numInstance ) ;
- string instanceName = aGenRegisterName + "_inst_" + aNumI ;
- string component_registerName =
- _containerName + "/" + instanceName;
-
- // --- Instanciate required CORBA object
-
- PortableServer::ObjectId *id ; //not owner, do not delete (nore use var)
- id = (MPIComponent_factory) ( _nbproc,_numproc,_orb, _poa, _id, instanceName.c_str(),
- aGenRegisterName.c_str() ) ;
-
- // --- get reference & servant from id
-
- CORBA::Object_var obj = _poa->id_to_reference(*id);
- iobject = Engines::Component::_narrow( obj ) ;
- pobj = Engines::MPIObject::_narrow(obj) ;
-
- Engines_Component_i *servant =
- dynamic_cast<Engines_Component_i*>(_poa->reference_to_servant(iobject));
- ASSERT(servant);
- //SCRUTE(servant->pd_refCount);
- servant->_remove_ref(); // compensate previous id_to_reference
- //SCRUTE(servant->pd_refCount);
- _listInstances_map[instanceName] = iobject;
- _cntInstances_map[aGenRegisterName] += 1;
- SCRUTE(aGenRegisterName);
- SCRUTE(_cntInstances_map[aGenRegisterName]);
- //SCRUTE(servant->pd_refCount);
- bool ret_studyId = servant->setStudyId(studyId);
- ASSERT(ret_studyId);
-
- // --- register the engine under the name
- // containerName(.dir)/instanceName(.object)
-
- if( _numproc == 0 ){
- _NS->Register( iobject , component_registerName.c_str() ) ;
- MESSAGE( component_registerName.c_str() << " bound" ) ;
- }
- // Root recupere les ior des composants des autre process
- BCastIOR(_orb,pobj,false);
-
- }
- catch (...)
- {
- INFOS( "Container_i::createInstance exception catched" ) ;
- }
- return iobject._retn();
-}
-
-// Load component
-Engines::Component_ptr Engines_MPIContainer_i::load_impl(const char* nameToRegister,
- const char* componentName)
-{
- if( _numproc == 0 ){
- // Invocation du chargement du composant dans les autres process
- for(int ip= 1;ip<_nbproc;ip++)
- (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asload_impl(nameToRegister,
- componentName);
- }
-
- return Lload_impl(nameToRegister,componentName);
-
-}
-
-// Load component
-void Engines_MPIContainer_i::Asload_impl(const char* nameToRegister,
- const char* componentName)
-{
- Lload_impl(nameToRegister,componentName);
-}
-
-Engines::Component_ptr Engines_MPIContainer_i::Lload_impl(
- const char* nameToRegister,
- const char* componentName)
-{
- Engines::Component_var iobject;
- Engines::MPIObject_var pobj;
- char cproc[4];
-
- sprintf(cproc,"_%d",_numproc);
-
- BEGIN_OF("[" << _numproc << "] MPIContainer_i::Lload_impl");
-
- _numInstanceMutex.lock() ; // lock on the instance number
- _numInstance++ ;
- char _aNumI[12];
- sprintf(_aNumI,"%d",_numInstance) ;
-
- string _impl_name = componentName;
- string _nameToRegister = nameToRegister;
- string instanceName = _nameToRegister + "_inst_" + _aNumI + cproc;
- MESSAGE("[" << _numproc << "] instanceName=" << instanceName);
-
- string absolute_impl_name(_impl_name);
- MESSAGE("[" << _numproc << "] absolute_impl_name=" << absolute_impl_name);
- void * handle = dlopen(absolute_impl_name.c_str(), RTLD_LAZY);
- if(!handle){
- INFOS("[" << _numproc << "] Can't load shared library : " << absolute_impl_name);
- INFOS("[" << _numproc << "] error dlopen: " << dlerror());
- return Engines::Component::_nil() ;
- }
-
- string factory_name = _nameToRegister + string("Engine_factory");
- MESSAGE("[" << _numproc << "] factory_name=" << factory_name) ;
-
- PortableServer::ObjectId * (*MPIComponent_factory) (int,int,
- CORBA::ORB_ptr,
- PortableServer::POA_ptr,
- PortableServer::ObjectId *,
- const char *,
- const char *) =
- (PortableServer::ObjectId * (*) (int,int,
- CORBA::ORB_ptr,
- PortableServer::POA_ptr,
- PortableServer::ObjectId *,
- const char *,
- const char *))
- dlsym(handle, factory_name.c_str());
-
- char *error ;
- if ((error = dlerror()) != NULL){
- // Try to load a sequential component
- MESSAGE("[" << _numproc << "] Try to load a sequential component");
- _numInstanceMutex.unlock() ;
- iobject = Engines_Container_i::load_impl(nameToRegister,componentName);
- if( CORBA::is_nil(iobject) ) return Engines::Component::_duplicate(iobject);
- }
- else{
- // Instanciation du composant parallele
- MESSAGE("[" << _numproc << "] Try to load a parallel component");
- PortableServer::ObjectId * id = (MPIComponent_factory)
- (_nbproc,_numproc,_orb, _poa, _id, instanceName.c_str(), _nameToRegister.c_str());
- // get reference from id
- CORBA::Object_var o = _poa->id_to_reference(*id);
- pobj = Engines::MPIObject::_narrow(o) ;
- iobject = Engines::Component::_narrow(o) ;
- }
-
- if( _numproc == 0 ){
- // utiliser + tard le registry ici :
- // register the engine under the name containerName.dir/nameToRegister.object
- string component_registerName = _containerName + "/" + _nameToRegister;
- _NS->Register(iobject, component_registerName.c_str()) ;
- }
-
- _numInstanceMutex.unlock() ;
-
- // Root recupere les ior des composants des autre process
- BCastIOR(_orb,pobj,false);
-
- END_OF("[" <<_numproc << "] MPIContainer_i::Lload_impl");
- return Engines::Component::_duplicate(iobject);
-
-}
-
-void Engines_MPIContainer_i::remove_impl(Engines::Component_ptr component_i)
-{
- int ip;
- Engines::Component_ptr cptr;
- Engines::MPIObject_ptr pcptr;
- Engines::MPIObject_ptr spcptr;
-
- ASSERT(! CORBA::is_nil(component_i));
-
- if( _numproc == 0 ){
- // Invocation de la destruction du composant dans les autres process
- pcptr = (Engines::MPIObject_ptr)component_i;
- for(ip= 1;ip<_nbproc;ip++){
- spcptr = Engines::MPIObject::_narrow((*(pcptr->tior()))[ip]);
- cptr = (Engines::Component_ptr)spcptr;
- (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asremove_impl(cptr);
- }
- }
-
- Lremove_impl(component_i);
-}
-
-void Engines_MPIContainer_i::Asremove_impl(Engines::Component_ptr component_i)
-{
- Lremove_impl(component_i);
-}
-
-void Engines_MPIContainer_i::Lremove_impl(Engines::Component_ptr component_i)
-{
- BEGIN_OF("[" << _numproc << "] MPIContainer_i::Lremove_impl");
-
- ASSERT(! CORBA::is_nil(component_i));
-
- string instanceName = component_i->instanceName() ;
- MESSAGE("[" << _numproc << "] unload component " << instanceName);
- component_i->destroy() ;
- MESSAGE("[" << _numproc << "] test key handle_map");
- _numInstanceMutex.lock() ; // lock on the remove on handle_map
- _numInstanceMutex.unlock() ;
- MESSAGE("[" << _numproc << "] list handle_map");
-
- END_OF("[" << _numproc << "] MPIContainer_i::Lremove_impl");
-
-}
-
-void Engines_MPIContainer_i::finalize_removal()
-{
- int ip;
-
- if( _numproc == 0 ){
- // Invocation de la destruction du composant dans les autres process
- for(ip= 1;ip<_nbproc;ip++)
- (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asfinalize_removal();
- }
-
- Lfinalize_removal();
-}
-
-void Engines_MPIContainer_i::Asfinalize_removal()
-{
- Lfinalize_removal();
-}
-
-void Engines_MPIContainer_i::Lfinalize_removal()
-{
- BEGIN_OF("[" << _numproc << "] MPIContainer_i::Lfinalize_removal");
-
-// map<string, void *>::iterator im ;
-// // lock on the explore remove_map & dlclose
-// _numInstanceMutex.lock() ;
-// for (im = remove_map.begin() ; im != remove_map.end() ; im ++)
-// {
-// void * handle = (*im).second ;
-// MESSAGE("[" << _numproc << "] dlclose " << (*im).first);
-// dlclose(handle) ;
-// }
-// MESSAGE("[" << _numproc << "] remove_map.clear()");
-// remove_map.clear() ;
-// _numInstanceMutex.unlock() ;
-
- END_OF("[" << _numproc << "] MPIContainer_i::Lfinalize_removal");
-}
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : MPIObject_i.cxx
-// Module : SALOME
-
-#include "MPIObject_i.hxx"
-#include "utilities.h"
-#include <mpi.h>
-using namespace std;
-
-MPIObject_i::MPIObject_i()
-{
- MPI_Comm_size( MPI_COMM_WORLD, &_nbproc );
- MPI_Comm_rank( MPI_COMM_WORLD, &_numproc );
- _tior=NULL;
-}
-
-MPIObject_i::MPIObject_i(int nbproc, int numproc)
-{
- _nbproc = nbproc;
- _numproc = numproc;
- _tior=NULL;
-}
-
-MPIObject_i::~MPIObject_i()
-{
- if(_tior) delete _tior;
-}
-
-Engines::IORTab* MPIObject_i::tior()
-{
- Engines::IORTab_var tior = new Engines::IORTab;
- tior->length(_tior->length());
- for(unsigned int ip=0;ip<tior->length();ip++)
- tior[ip] = (*_tior)[ip];
- return tior._retn();
-};
-
-void MPIObject_i::tior(const Engines::IORTab& ior)
-{
- _tior = new Engines::IORTab;
- _tior->length(ior.length());
- for(unsigned int ip=0;ip<ior.length();ip++)
- (*_tior)[ip] = ior[ip];
-}
-
-void MPIObject_i::BCastIOR(CORBA::ORB_ptr orb, Engines::MPIObject_ptr pobj,
- bool amiCont)
-{
- int err, ip, n;
- char *ior;
- MPI_Status status; /* status de reception de message MPI */
-
- if( _numproc == 0 ){
-
- //Allocation du tableau des IOR
- Engines::IORTab_var iort = new Engines::IORTab;
- iort->length(_nbproc);
-
- iort[0] = pobj;
-
- // Process 0 recupere les ior de l'object sur les autres process
- for(ip=1;ip<_nbproc;ip++){
- err = MPI_Recv(&n,1,MPI_INT,ip,ip,MPI_COMM_WORLD,&status);
- if(err){
- MESSAGE("[" << _numproc << "] MPI_RECV error");
- exit(1);
- }
- // Allocation de la chaine de longueur n
- ior = new char[n];
- err = MPI_Recv(ior,n,MPI_CHAR,ip,2*ip,MPI_COMM_WORLD,&status);
- if(err){
- MESSAGE("[" << _numproc << "] MPI_RECV error");
- exit(1);
- }
- iort[ip] = orb->string_to_object(ior);
- delete [] ior;
- }
- // On donne le tableau des ior a l'objet Corba du process 0
- if( amiCont )
- tior(*(iort._retn()));
- else
- pobj->tior(*(iort._retn()));
-
- }
- else{
- // Conversion IOR vers string
- ior = orb->object_to_string(pobj);
- n = strlen(ior) + 1;
- // On envoie l'IOR au process 0
- err = MPI_Send(&n,1,MPI_INT,0,_numproc,MPI_COMM_WORLD);
- if(err){
- MESSAGE("[" << _numproc << "] MPI_SEND error");
- exit(1);
- }
- err = MPI_Send(ior,n,MPI_CHAR,0,2*_numproc,MPI_COMM_WORLD);
- if(err){
- MESSAGE("[" << _numproc << "] MPI_SEND error");
- exit(1);
- }
- CORBA::string_free(ior);
- }
-
-}
-
+++ /dev/null
-# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : Makefile.in
-# Author : Paul RASCLE, EDF
-# Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS =
-
-EXPORT_HEADERS = \
- MPIObject_i.hxx \
- MPIContainer_i.hxx
-
-# Libraries targets
-
-LIB = libSalomeMPIContainer.la
-LIB_SRC = MPIObject_i.cxx MPIContainer_i.cxx
-LIB_CLIENT_IDL = SALOME_Component.idl
-LIB_SERVER_IDL = SALOME_MPIObject.idl SALOME_MPIContainer.idl
-
-# Executables targets
-BIN = SALOME_MPIContainer
-BIN_SRC =
-BIN_SERVER_IDL = SALOME_MPIObject.idl SALOME_MPIContainer.idl
-
-CPPFLAGS+= $(PYTHON_INCLUDES)
-LDFLAGS+= -lSalomeContainer -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSALOMELocalTrace -lSalomeResourcesManager
-
-ifeq (@WITHMPI@,yes)
- LIBS += $(PYTHON_LIBS) $(MPI_LIBS)
- CXXFLAGS+=${MPI_INCLUDES}
- CXX_DEPEND_FLAG+=${MPI_INCLUDES}
- LDFLAGSFORBIN= $(LDFLAGS)
- LIBSFORBIN= $(LIBS)
-endif
-
-@CONCLUDE@
+++ /dev/null
-#include <iostream>
-#include "MPIContainer_i.hxx"
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-#include "utilities.h"
-#include <mpi.h>
-#include "SALOMETraceCollector.hxx"
-using namespace std;
-
-int main(int argc, char* argv[])
-{
- int nbproc, numproc;
- Engines_MPIContainer_i * myContainer=NULL;
-
- MPI_Init(&argc,&argv);
- MPI_Comm_size(MPI_COMM_WORLD,&nbproc);
- MPI_Comm_rank(MPI_COMM_WORLD,&numproc);
-
- // Initialise the ORB.
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- CORBA::ORB_var &orb = init( argc , argv ) ;
- // SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
-
- BEGIN_OF("[" << numproc << "] " << argv[0])
- try {
-
- // Obtain a reference to the root POA.
- CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
- PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
-
- // obtain the root poa manager
- PortableServer::POAManager_var pman = root_poa->the_POAManager();
-
- // define policy objects
- PortableServer::ImplicitActivationPolicy_var implicitActivation =
- root_poa->create_implicit_activation_policy(PortableServer::NO_IMPLICIT_ACTIVATION) ;
-
- // default = NO_IMPLICIT_ACTIVATION
- PortableServer::ThreadPolicy_var threadPolicy =
- root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL) ;
- // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
-
- // create policy list
- CORBA::PolicyList policyList;
- policyList.length(2);
- policyList[0] = PortableServer::ImplicitActivationPolicy::_duplicate(implicitActivation) ;
- policyList[1] = PortableServer::ThreadPolicy::_duplicate(threadPolicy) ;
-
- // create the child POA
- PortableServer::POAManager_var nil_mgr = PortableServer::POAManager::_nil() ;
- PortableServer::POA_var factory_poa =
- root_poa->create_POA("factory_poa", pman, policyList) ;
- //with nil_mgr instead of pman, a new POA manager is created with the new POA
-
- // destroy policy objects
- implicitActivation->destroy() ;
- threadPolicy->destroy() ;
-
- char *containerName = "";
- if (argc >1)
- {
- containerName = argv[1] ;
- }
-
- MESSAGE("[" << numproc << "] MPIContainer: load MPIContainer servant");
- myContainer = new Engines_MPIContainer_i(nbproc,numproc,orb,factory_poa, containerName,argc,argv);
-
- pman->activate();
-
- orb->run();
-
- }
- catch(CORBA::SystemException&){
- INFOS("Caught CORBA::SystemException.");
- }
- catch(PortableServer::POA::WrongPolicy&){
- INFOS("Caught CORBA::WrongPolicyException.");
- }
- catch(PortableServer::POA::ServantAlreadyActive&){
- INFOS("Caught CORBA::ServantAlreadyActiveException");
- }
- catch(CORBA::Exception&){
- INFOS("Caught CORBA::Exception.");
- }
- catch(...){
- INFOS("Caught unknown exception.");
- }
-
- if(myContainer)
- delete myContainer;
-
- END_OF("[" << numproc << "] " << argv[0]);
- // delete myThreadTrace;
-
- MPI_Finalize();
-
-}
-
+++ /dev/null
-# 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 : Makefile.in
-# Author : Patrick GOLDBRONN (CEA)
-# Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-@COMMENCE@
-
-SUBDIRS = \
- Basics \
- SALOMELocalTrace \
- CASCatch \
- HDFPersist \
- Logger \
- SALOMETraceCollector \
- Utils \
- NamingService \
- GenericObj \
- Registry \
- ModuleCatalog \
- DataTypeCatalog \
- RessourcesCatalog \
- ResourcesManager \
- Notification \
- NOTIFICATION_SWIG \
- Container \
- TestContainer \
- LifeCycleCORBA \
- LifeCycleCORBA_SWIG \
- SALOMEDSClient \
- TOOLSDS \
- SALOMEDSImpl \
- SALOMEDS \
- KERNEL_PY \
- ModuleGenerator \
- Communication
-
-ifeq (@mpi_ok@,yes)
- SUBDIRS+= MPIContainer TestMPIContainer
-endif
-
-ifeq (@WITH_BATCH@,yes)
- SUBDIRS += Batch Batch_SWIG
-endif
-
-ifeq (@cppunit_ok@,yes)
- SUBDIRS+= \
- Basics/Test \
- SALOMELocalTrace/Test \
- Logger/Test \
- SALOMETraceCollector/Test \
- Utils/Test \
- LifeCycleCORBA/Test \
- UnitTests
-endif
-
-@MODULE@
-
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : SALOME_ModuleCatalog_impl.cxx
-// Author : Estelle Deville
-// Module : SALOME
-// $Header$
-//
-#include "SALOME_ModuleCatalog_impl.hxx"
-#include "SALOME_ModuleCatalog_Acomponent_impl.hxx"
-#include <fstream>
-#include <map>
-
-#include <qstringlist.h>
-#include <qfileinfo.h>
-using namespace std;
-
-#include "utilities.h"
-
-#ifdef _DEBUG_
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 1;
-#endif
-
-static const char* SEPARATOR = ":";
-
-//----------------------------------------------------------------------
-// Function : SALOME_ModuleCatalogImpl
-// Purpose : Constructor
-//----------------------------------------------------------------------
-SALOME_ModuleCatalogImpl::SALOME_ModuleCatalogImpl(int argc, char** argv, CORBA::ORB_ptr orb) : _orb(orb)
-{
- if(MYDEBUG) MESSAGE("Catalog creation");
-
- // Conversion rules for component types
- ComponentTypeConvert[GEOM]
- = SALOME_ModuleCatalog::GEOM;
- ComponentTypeConvert[MESH]
- = SALOME_ModuleCatalog::MESH;
- ComponentTypeConvert[Med]
- = SALOME_ModuleCatalog::Med;
- ComponentTypeConvert[SOLVER]
- = SALOME_ModuleCatalog::SOLVER;
- ComponentTypeConvert[DATA]
- = SALOME_ModuleCatalog::DATA;
- ComponentTypeConvert[VISU]
- = SALOME_ModuleCatalog::VISU;
- ComponentTypeConvert[SUPERV]
- = SALOME_ModuleCatalog::SUPERV;
- ComponentTypeConvert[OTHER]
- = SALOME_ModuleCatalog::OTHER;
-
- // Conversion rules for datastream parameters type and dependency
- DataStreamTypeConvert["UNKNOWN"]
- = SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
- DataStreamTypeConvert["INTEGER"]
- = SALOME_ModuleCatalog::DATASTREAM_INTEGER;
- DataStreamTypeConvert["FLOAT"]
- = SALOME_ModuleCatalog::DATASTREAM_FLOAT;
- DataStreamTypeConvert["DOUBLE"]
- = SALOME_ModuleCatalog::DATASTREAM_DOUBLE;
- DataStreamTypeConvert["STRING"]
- = SALOME_ModuleCatalog::DATASTREAM_STRING;
- DataStreamTypeConvert["BOOLEAN"]
- = SALOME_ModuleCatalog::DATASTREAM_BOOLEAN;
-
- DataStreamDepConvert["UNDEFINED"]
- = SALOME_ModuleCatalog::DATASTREAM_UNDEFINED;
- DataStreamDepConvert["T"]
- = SALOME_ModuleCatalog::DATASTREAM_TEMPORAL;
- DataStreamDepConvert["I"]
- = SALOME_ModuleCatalog::DATASTREAM_ITERATIVE;
-
- // Empty used variables
- _general_module_list.resize(0);
- _general_path_list.resize(0);
-
- _personal_module_list.resize(0);
- _personal_path_list.resize(0);
-
- // Parse the arguments given at server run
- if (!_parseArguments(argc, argv,&_general_path,&_personal_path))
- if(MYDEBUG) MESSAGE( "Error while argument parsing" );
-
- // Test existency of files
- if (_general_path == NULL){
- if(MYDEBUG) MESSAGE( "Error the general catalog should be indicated" );
- }else{
- // Affect the _general_module_list and _general_path_list members
- // with the common catalog
-
- QStringList dirList
- = QStringList::split( SEPARATOR, _general_path,
- false ); // skip empty entries
-
- for ( int i = 0; i < dirList.count(); i++ ) {
- QFileInfo fileInfo( dirList[ i ] );
- if ( fileInfo.isFile() && fileInfo.exists() ) {
- _parse_xml_file(fileInfo.filePath(),
- _general_module_list,
- _general_path_list);
- }
- }
-
- // Verification of _general_path_list content
- if(!_verify_path_prefix(_general_path_list)){
- if(MYDEBUG) MESSAGE( "Error while parsing the general path list, "
- "differents paths are associated to the same computer,"
- "the first one will be choosen");
- }else{
- if(MYDEBUG) MESSAGE("General path list OK");
- }
-
- if(_personal_path != NULL){
- // Initialize the _personal_module_list and
- // _personal_path_list members with the personal catalog files
- _parse_xml_file(_personal_path,
- _personal_module_list,
- _personal_path_list);
-
- // Verification of _general_path_list content
- if(!_verify_path_prefix(_personal_path_list)){
- if(MYDEBUG) MESSAGE("Error while parsing the personal path list, "
- "differents paths are associated to the same computer, "
- "the first one will be choosen" );
- }else {
- if(MYDEBUG) MESSAGE("Personal path list OK");
- }
- }else
- if(MYDEBUG) MESSAGE("No personal catalog indicated or error while "
- "opening the personal catalog");
- }
-}
-
-//----------------------------------------------------------------------
-// Function : ~SALOME_ModuleCatalogImpl
-// Purpose : Destructor
-//----------------------------------------------------------------------
-SALOME_ModuleCatalogImpl::~SALOME_ModuleCatalogImpl()
-{
- if(MYDEBUG) MESSAGE("Catalog Destruction");
-}
-
-
-//----------------------------------------------------------------------
-// Function : GetComputerList
-// Purpose : get a computer list
-//----------------------------------------------------------------------
-SALOME_ModuleCatalog::ListOfComputers*
-SALOME_ModuleCatalogImpl::GetComputerList()
-{
- SALOME_ModuleCatalog::ListOfComputers_var _list_computers =
- new SALOME_ModuleCatalog::ListOfComputers;
- return _list_computers._retn();
-}
-
-//----------------------------------------------------------------------
-// Function : GetPathPrefix
-// Purpose : get the PathPrefix of a computer
-//----------------------------------------------------------------------
-char *
-SALOME_ModuleCatalogImpl::GetPathPrefix(const char* machinename) {
- if(MYDEBUG) MESSAGE("Begin of GetPathPrefix");
- // Variables initialisation
- char* _path = NULL;
- bool _find = false ;
-
- // Parse all the path prefixes
- // looking for the wanted computer
- for (unsigned int ind = 0 ; ind < _personal_path_list.size() ; ind++)
- {
- for (unsigned int ind1 = 0 ; ind1 < _personal_path_list[ind].listOfComputer.size() ; ind1++)
- {
- if (strcmp(machinename, _personal_path_list[ind].listOfComputer[ind1].c_str()) == 0)
- {
- _find = true ;
- // Wanted computer
- // affect the path to be returned
- const char* _temp = _personal_path_list[ind].path.c_str() ;
- _path = new char[strlen(_temp)+1];
- strcpy(_path,_temp);
- }
- }
- }
-
- if (!_find)
- {
- for (unsigned int ind = 0 ; ind < _general_path_list.size() ; ind++)
- {
- for (unsigned int ind1 = 0 ; ind1 < _general_path_list[ind].listOfComputer.size() ; ind1++)
- {
- if (strcmp(machinename, _general_path_list[ind].listOfComputer[ind1].c_str()) == 0)
- {
- _find = true ;
- // Wanted computer
- // affect the path to be returned
- const char* _temp = _general_path_list[ind].path.c_str() ;
- _path = new char[strlen(_temp)+1];
- strcpy(_path,_temp);
- }
- }
- }
- }
-
- return _path;
-}
-
-//----------------------------------------------------------------------
-// Function : GetComponentList
-// Purpose : get a component list
-// If a component is defined in the personal catalog and
-// in the general catalog (same name), the component defined
-// in the personal catalog is used
-//----------------------------------------------------------------------
-SALOME_ModuleCatalog::ListOfComponents*
-SALOME_ModuleCatalogImpl::GetComponentList()
-{
- if(MYDEBUG) MESSAGE("Begin of GetComponentList");
- SALOME_ModuleCatalog::ListOfComponents_var _list_components =
- new SALOME_ModuleCatalog::ListOfComponents;
-
- _list_components->length(_personal_module_list.size());
-
- // All the components defined in the personal catalog are taken
- for(unsigned int ind=0; ind < _personal_module_list.size();ind++){
- _list_components[ind]=(_personal_module_list[ind].name).c_str();
- if(MYDEBUG) SCRUTE(_list_components[ind]) ;
- }
-
- int indice = _personal_module_list.size() ;
- bool _find = false;
-
- // The components in the general catalog are taken only if they're
- // not defined in the personal catalog
-#ifndef WNT
- for(unsigned int ind=0; ind < _general_module_list.size();ind++){
-#else
- for(ind=0; ind < _general_module_list.size();ind++){
-#endif
- _find = false;
- for(unsigned int ind1=0; ind1 < _personal_module_list.size();ind1++){
- // searching if the component is already defined in
- // the personal catalog
- if ((_general_module_list[ind].name.compare(_personal_module_list[ind1].name)) == 0)
- _find = true;
- }
- if(!_find){
- if(MYDEBUG) MESSAGE("A new component " << _general_module_list[ind].name
- << " has to be to added in the list");
- _list_components->length(indice+1);
- // The component is not already defined => has to be taken
- _list_components[indice]=(_general_module_list[ind].name).c_str();
- if(MYDEBUG) SCRUTE(_list_components[indice]) ;
-
- indice++;
- }else{
- if(MYDEBUG) MESSAGE("The component " <<_general_module_list[ind].name
- << " was already defined in the personal catalog") ;
- }
- }
-
- if(MYDEBUG) MESSAGE ( "End of GetComponentList" );
- return _list_components._retn();
-}
-
-
-//----------------------------------------------------------------------
-// Function : GetComponentIconeList
-// Purpose : get a component list of component name and component icone
-// If a component is defined in the personal catalog and
-// in the general catalog (same name), the component defined
-// in the personal catalog is used
-//----------------------------------------------------------------------
-SALOME_ModuleCatalog::ListOfIAPP_Affich*
-SALOME_ModuleCatalogImpl::GetComponentIconeList()
-{
- if(MYDEBUG) MESSAGE("Begin of GetComponentIconeList");
-
- SALOME_ModuleCatalog::ListOfIAPP_Affich_var _list_components_icone =
- new SALOME_ModuleCatalog::ListOfIAPP_Affich;
-
- _list_components_icone->length(_personal_module_list.size());
-
- // All the components defined in the personal catalog are taken
- for(unsigned int ind=0; ind < _personal_module_list.size();ind++){
- _list_components_icone[ind].modulename=(_personal_module_list[ind].name).c_str();
- _list_components_icone[ind].moduleusername=(_personal_module_list[ind].username).c_str();
- _list_components_icone[ind].moduleicone=(_personal_module_list[ind].icon).c_str();
- _list_components_icone[ind].moduleversion=(_personal_module_list[ind].version).c_str();
- _list_components_icone[ind].modulecomment=(_personal_module_list[ind].comment).c_str();
- //if(MYDEBUG) SCRUTE(_list_components_icone[ind].modulename);
- //if(MYDEBUG) SCRUTE(_list_components_icone[ind].moduleicone);
- }
-
- int indice = _personal_module_list.size() ;
- bool _find = false;
-
- // The components in the general catalog are taken only if they're
- // not defined in the personal catalog
-#ifndef WNT
- for(unsigned int ind=0; ind < _general_module_list.size();ind++){
-#else
- for(ind=0; ind < _general_module_list.size();ind++){
-#endif
- _find = false;
- for(unsigned int ind1=0; ind1 < _personal_module_list.size();ind1++){
- // searching if the component is aleready defined in
- // the personal catalog
- if((_general_module_list[ind].name.compare(_personal_module_list[ind1].name)) == 0)
- _find = true;
- }
- if(!_find){
- // if(MYDEBUG) MESSAGE("A new component " << _general_module_list[ind].name << " has to be to added in the list");
- _list_components_icone->length(indice+1);
- // The component is not already defined => has to be taken
- _list_components_icone[indice].modulename=_general_module_list[ind].name.c_str();
- _list_components_icone[indice].moduleusername=_general_module_list[ind].username.c_str();
- _list_components_icone[indice].moduleicone=_general_module_list[ind].icon.c_str();
- _list_components_icone[indice].moduleversion=_general_module_list[ind].version.c_str();
- _list_components_icone[indice].modulecomment=_general_module_list[ind].comment.c_str();
- //if(MYDEBUG) SCRUTE(_list_components_icone[indice].modulename) ;
- //if(MYDEBUG) SCRUTE(_list_components_icone[indice].moduleicone);
-
- indice++;
- }
- // else
- //if(MYDEBUG) MESSAGE("The component " <<_general_module_list[ind].name << " was already defined in the personal catalog");
- }
-
- return _list_components_icone._retn() ;
-}
-
-//----------------------------------------------------------------------
-// Function : GetTypedComponentList
-// Purpose : get a component list of a wanted type
-// If a component is defined in the personal catalog and
-// in the general catalog (same name), the component defined
-// in the personal catalog is used
-//----------------------------------------------------------------------
-SALOME_ModuleCatalog::ListOfComponents*
-SALOME_ModuleCatalogImpl::GetTypedComponentList(SALOME_ModuleCatalog::ComponentType component_type)
-{
- if(MYDEBUG) MESSAGE("Begin of GetTypedComponentList");
- SALOME_ModuleCatalog::ListOfComponents_var _list_typed_component =
- new SALOME_ModuleCatalog::ListOfComponents;
- int _j = 0;
-
- _list_typed_component->length(0);
- // Transform SALOME_ModuleCatalog::ComponentType in ParserComponentType
- ParserComponentType _temp_component_type;
- switch(component_type){
- case SALOME_ModuleCatalog::GEOM:
- _temp_component_type = GEOM ;
- break;
- case SALOME_ModuleCatalog::MESH:
- _temp_component_type = MESH;
- break;
- case SALOME_ModuleCatalog::Med:
- _temp_component_type = Med;
- break;
- case SALOME_ModuleCatalog::SOLVER:
- _temp_component_type = SOLVER;
- break;
- case SALOME_ModuleCatalog::DATA:
- _temp_component_type = DATA;
- break;
- case SALOME_ModuleCatalog::VISU:
- _temp_component_type = VISU;
- break;
- case SALOME_ModuleCatalog::SUPERV:
- _temp_component_type = SUPERV;
- break;
- case SALOME_ModuleCatalog::OTHER:
- _temp_component_type = OTHER;
- break;
- }
-
- // All the components in the personal catalog are taken
- for (unsigned int ind=0; ind < _personal_module_list.size();ind++)
- {
- if (_personal_module_list[ind].type == _temp_component_type)
- {
- _list_typed_component->length(_j + 1);
- _list_typed_component[_j] = (_moduleList[ind].name).c_str();
- //if(MYDEBUG) SCRUTE(_list_typed_component[_j]);
- _j++;
- }
- }
-
- int indice = _list_typed_component->length() ;
- bool _find = false;
-
- // The components in the general catalog are taken only if they're
- // not defined in the personal catalog
-#ifndef WNT
- for (unsigned int ind=0; ind < _general_module_list.size();ind++)
-#else
- for (ind=0; ind < _general_module_list.size();ind++)
-#endif
- {
- _find = false;
-
- if(_general_module_list[ind].type == _temp_component_type)
- {
- for (unsigned int ind1=0; ind1 < _personal_module_list.size();ind1++)
- {
- // searching if the component is aleready defined in
- // the personal catalog
- if ((_general_module_list[ind].name.compare(_personal_module_list[ind1].name)) == 0)
- _find = true;
- }
- if (!_find)
- {
- //if(MYDEBUG) MESSAGE("A new component " << _general_module_list[ind].name << " has to be to added in the list");
- _list_typed_component->length(indice+1);
- // The component is not already defined => has to be taken
- _list_typed_component[indice]=(_general_module_list[ind].name).c_str();
- //if(MYDEBUG) SCRUTE(_list_typed_component[indice]) ;
-
- indice++;
- }
- //else
- //if(MYDEBUG) MESSAGE("The component " <<_general_module_list[ind].name << " was already defined in the personal catalog") ;
- }
- }
-
-
- return _list_typed_component._retn();
-}
-
-//----------------------------------------------------------------------
-// Function : GetComponent
-// Purpose : get a component
-// If a component is defined in the personal catalog and
-// in the general catalog (same name), the component defined
-// in the personal catalog is used
-//----------------------------------------------------------------------
-SALOME_ModuleCatalog::Acomponent_ptr
-SALOME_ModuleCatalogImpl::GetComponent(const char* name)
-{
- // Looking for component named "componentname" in the personal catalog
- // If found, get name, interfaces and constraint
- // If not found, looking for component named "componentname" in
- // the general catalog
- // If found, get name, interfaces and constraint
- // If not found, NULL pointer is returned
-
- std::string s(name);
- ParserComponent *C_parser = NULL;
- ParserPathPrefixes *pp = NULL;
-
- SALOME_ModuleCatalog::Acomponent_ptr compo
- = SALOME_ModuleCatalog::Acomponent::_nil();
- C_parser = findComponent(s);
- if (C_parser) {
-
- // DebugParserComponent(*C_parser);
-
- SALOME_ModuleCatalog::Component C_corba;
- duplicate(C_corba, *C_parser);
-
-
- SALOME_ModuleCatalog_AcomponentImpl * aComponentImpl =
- new SALOME_ModuleCatalog_AcomponentImpl(C_corba);
-
- compo = aComponentImpl->_this();
- }
- else {
- // Not found in the personal catalog and in the general catalog
- // return NULL object
- if(MYDEBUG) MESSAGE("Component with name " << name
- << " not found in catalog");
- }
-
- return compo;
-}
-
-SALOME_ModuleCatalog::Component *
-SALOME_ModuleCatalogImpl::GetComponentInfo(const char *name)
-{
- std::string s(name);
-
- ParserComponent * C_parser = findComponent(s);
-
- if (C_parser) {
-
- SALOME_ModuleCatalog::Component * C_corba
- = new SALOME_ModuleCatalog::Component;
- duplicate(*C_corba, *C_parser);
- return C_corba;
- }
-
- return NULL;
-}
-
-ParserComponent *
-SALOME_ModuleCatalogImpl::findComponent(const string & name)
-{
- ParserComponent * C_parser = NULL;
-
- if (!C_parser)
- for (unsigned int ind=0; ind < _personal_module_list.size();ind++)
- {
- if (name.compare(_personal_module_list[ind].name) == 0)
- {
- if(MYDEBUG) MESSAGE("Component named " << name
- << " found in the personal catalog");
- C_parser = &(_personal_module_list[ind]);
- break;
- }
- }
-
- if (!C_parser)
- for (unsigned int ind=0; ind < _general_module_list.size();ind++)
- {
- if (name.compare(_general_module_list[ind].name) == 0)
- {
- if(MYDEBUG) MESSAGE("Component named " << name
- << " found in the general catalog");
- C_parser = &(_general_module_list[ind]);
- break;
- }
- }
-
- return C_parser;
-}
-
-//----------------------------------------------------------------------
-// Function : _parse_xml_file
-// Purpose : parse one module catalog
-//----------------------------------------------------------------------
-void
-SALOME_ModuleCatalogImpl::_parse_xml_file(const char* file,
- ParserComponents& modulelist,
- ParserPathPrefixes& pathList)
-{
- if(MYDEBUG) BEGIN_OF("_parse_xml_file");
- if(MYDEBUG) SCRUTE(file);
-
- SALOME_ModuleCatalog_Handler* handler = new SALOME_ModuleCatalog_Handler();
- QFile xmlFile(file);
-
- QXmlInputSource source(xmlFile);
-
- QXmlSimpleReader reader;
- reader.setContentHandler( handler );
- reader.setErrorHandler( handler );
- reader.parse( source );
- xmlFile.close();
-
- unsigned int i, j;
-
- for ( i = 0; i < _moduleList.size(); i++) {
- for (j=0; j<modulelist.size(); j++) {
- if (modulelist[j].name == _moduleList[i].name)
- break;
- }
- if (j < modulelist.size())
- modulelist[j] = _moduleList[i];
- else
- modulelist.push_back(_moduleList[i]);
- }
-
- for ( i=0; i < _pathList.size(); i++)
- pathList.push_back(_pathList[i]) ;
-
- for (j=0; j<modulelist.size(); j++)
- modulelist[j].prefixes = pathList;
-}
-
-void
-SALOME_ModuleCatalogImpl::ImportXmlCatalogFile(const char* file)
-{
- _parse_xml_file(file, _personal_module_list, _personal_path_list);
-}
-
-
-//
-// Duplicate functions create a Corba structure (component,
-// interface, service, parameter) from the corresponding C++
-// parser structure
-//
-
-//----------------------------------------------------------------------
-// Function : duplicate
-// Purpose : create a component from the catalog parsing
-//----------------------------------------------------------------------
-void SALOME_ModuleCatalogImpl::duplicate
-(SALOME_ModuleCatalog::Component & C_corba,
- const ParserComponent & C_parser)
-{
- C_corba.name = CORBA::string_dup(C_parser.name.c_str());
- C_corba.username = CORBA::string_dup(C_parser.username.c_str());
- C_corba.multistudy = C_parser.multistudy;
- C_corba.icon = CORBA::string_dup(C_parser.icon.c_str());
- C_corba.type = ComponentTypeConvert[C_parser.type];
- C_corba.implementationType = C_parser.implementationType;
-
- unsigned int _length = C_parser.interfaces.size();
- C_corba.interfaces.length(_length);
-
- for (unsigned int ind = 0; ind < _length; ind++)
- duplicate(C_corba.interfaces[ind], C_parser.interfaces[ind]);
-}
-
-
-//----------------------------------------------------------------------
-// Function : duplicate
-// Purpose : create an interface from the catalog parsing
-//----------------------------------------------------------------------
-void SALOME_ModuleCatalogImpl::duplicate
-(SALOME_ModuleCatalog::DefinitionInterface & I_corba,
- const ParserInterface & I_parser)
-{
- //duplicate interface name
- I_corba.interfacename = CORBA::string_dup(I_parser.name.c_str());
-
- // duplicate service list
- unsigned int _length = I_parser.services.size();
- if(MYDEBUG) SCRUTE(_length);
- // I_corba.interfaceservicelist
- // = new SALOME_ModuleCatalog::ListOfInterfaceService;
- I_corba.interfaceservicelist.length(_length);
-
- for (unsigned int ind1 = 0; ind1 < _length ; ind1 ++)
- duplicate(I_corba.interfaceservicelist[ind1],
- I_parser.services[ind1]);
-}
-
-//----------------------------------------------------------------------
-// Function : duplicate
-// Purpose : create a service from the catalog parsing
-//----------------------------------------------------------------------
-void SALOME_ModuleCatalogImpl::duplicate
-(SALOME_ModuleCatalog::Service & S_corba,
- const ParserService & S_parser)
-{
- // duplicate service name
- S_corba.ServiceName = CORBA::string_dup(S_parser.name.c_str());
-
- // duplicate service by default
- S_corba.Servicebydefault = S_parser.byDefault;
-
- S_corba.TypeOfNode = S_parser.typeOfNode;
-
- unsigned int _length;
-
- // duplicate in Parameters
- _length = S_parser.inParameters.size();
- S_corba.ServiceinParameter.length(_length);
-
- for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
- duplicate(S_corba.ServiceinParameter[ind2],
- S_parser.inParameters[ind2]);
-
- // duplicate out Parameters
- _length = S_parser.outParameters.size();
- S_corba.ServiceoutParameter.length(_length);
-
-#ifndef WNT
- for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
-#else
- for (ind2 = 0; ind2 < _length ; ind2 ++)
-#endif
- duplicate(S_corba.ServiceoutParameter[ind2],
- S_parser.outParameters[ind2]);
-
- // duplicate in DataStreamParameters
- _length = S_parser.inDataStreamParameters.size();
- S_corba.ServiceinDataStreamParameter.length(_length);
-
-#ifndef WNT
- for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
-#else
- for (ind2 = 0; ind2 < _length ; ind2 ++)
-#endif
- duplicate(S_corba.ServiceinDataStreamParameter[ind2],
- S_parser.inDataStreamParameters[ind2]);
-
- // duplicate out DataStreamParameters
- _length = S_parser.outDataStreamParameters.size();
- if(MYDEBUG) SCRUTE(_length);
- S_corba.ServiceoutDataStreamParameter.length(_length);
-
-#ifndef WNT
- for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
-#else
- for (ind2 = 0; ind2 < _length ; ind2 ++)
-#endif
- duplicate(S_corba.ServiceoutDataStreamParameter[ind2],
- S_parser.outDataStreamParameters[ind2]);
-}
-
-//----------------------------------------------------------------------
-// Function : duplicate
-// Purpose : create a service parameter from the catalog parsing
-//----------------------------------------------------------------------
-void SALOME_ModuleCatalogImpl::duplicate
-(SALOME_ModuleCatalog::ServicesParameter & P_corba,
- const ParserParameter & P_parser)
-{
- // duplicate parameter name
- P_corba.Parametername = CORBA::string_dup(P_parser.name.c_str());
-
- // duplicate parameter type
- P_corba.Parametertype = CORBA::string_dup(P_parser.type.c_str());
-}
-
-
-//----------------------------------------------------------------------
-// Function : duplicate
-// Purpose : create a service datastream parameter from the catalog parsing
-//----------------------------------------------------------------------
-void SALOME_ModuleCatalogImpl::duplicate
-(SALOME_ModuleCatalog::ServicesDataStreamParameter & P_corba,
- const ParserDataStreamParameter & P_parser)
-{
- std::map < std::string,
- SALOME_ModuleCatalog::DataStreamType >::const_iterator it_type;
-
- std::map < std::string,
- SALOME_ModuleCatalog::DataStreamDependency >::const_iterator it_dep;
-
- // duplicate parameter name
- P_corba.Parametername = CORBA::string_dup(P_parser.name.c_str());
-
- // doesn't work ???
- // it_type = DataStreamTypeConvert.find(P_parser.type);
- // P_corba.Parametertype
- // = (it_type == DataStreamTypeConvert.end())
- // ? it_type->second : SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
-
- if(MYDEBUG) SCRUTE(P_parser.type);
- P_corba.Parametertype = SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
- for (it_type = DataStreamTypeConvert.begin();
- it_type != DataStreamTypeConvert.end();
- it_type++)
- if (P_parser.type.compare(it_type->first) == 0) {
- P_corba.Parametertype = it_type->second;
- break;
- }
- if(MYDEBUG) SCRUTE(P_corba.Parametertype);
-
- // duplicate parameter type
-
- // doesn't work ???
- // it_type = DataStreamTypeConvert.find(P_parser.type);
- // P_corba.Parametertype
- // = (it_type == DataStreamTypeConvert.end())
- // ? it_type->second : SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
-
- if(MYDEBUG) SCRUTE(P_parser.dependency);
- P_corba.Parameterdependency = SALOME_ModuleCatalog::DATASTREAM_UNDEFINED;
- for (it_dep = DataStreamDepConvert.begin();
- it_dep != DataStreamDepConvert.end();
- it_dep++)
- if (P_parser.dependency.compare(it_dep->first) == 0) {
- P_corba.Parameterdependency = it_dep->second;
- break;
- }
-
- if(MYDEBUG) SCRUTE(P_corba.Parameterdependency);
-}
-
-//----------------------------------------------------------------------
-// Function : duplicate
-// Purpose : create the path prefix structures from the catalog parsing
-//----------------------------------------------------------------------
-void
-SALOME_ModuleCatalogImpl::duplicate(ParserPathPrefixes &L_out,
- const ParserPathPrefixes &L_in)
-{
- L_out = L_in;
-}
-
-
-//----------------------------------------------------------------------
-// Function : _verify_path_prefix
-// Purpose : verify the path prefix structures from the catalog parsing
-// Verify that there only one path prefix associated to a
-// particular computer
-//----------------------------------------------------------------------
-bool
-SALOME_ModuleCatalogImpl::_verify_path_prefix(ParserPathPrefixes & pathList)
-{
- bool _return_value = true;
- vector<string> _machine_list;
-
- // Fill a list of all computers indicated in the path list
- for (unsigned int ind = 0; ind < pathList.size(); ind++)
- {
- for (unsigned int ind1 = 0 ; ind1 < pathList[ind].listOfComputer.size(); ind1++)
- {
- _machine_list.push_back(pathList[ind].listOfComputer[ind1]);
- }
- }
-
- // Parse if a computer name is twice in the list of computers
-#ifndef WNT
- for (unsigned int ind = 0; ind < _machine_list.size(); ind++)
-#else
- for (ind = 0; ind < _machine_list.size(); ind++)
-#endif
- {
- for (unsigned int ind1 = ind+1 ; ind1 < _machine_list.size(); ind1++)
- {
- if(_machine_list[ind].compare(_machine_list[ind1]) == 0)
- {
- if(MYDEBUG) MESSAGE( "The computer " << _machine_list[ind] << " is indicated more than once in the path list");
- _return_value = false;
- }
- }
- }
- return _return_value;
-}
-
-
-//----------------------------------------------------------------------
-// Function : _parseArguments
-// Purpose : parse arguments to get general and personal catalog files
-//----------------------------------------------------------------------
-bool
-SALOME_ModuleCatalogImpl::_parseArguments(int argc, char **argv,
- char **_general,
- char** _personal)
-{
- bool _return_value = true;
- *_general = NULL;
- *_personal = NULL ;
- for (int ind = 0; ind < argc ; ind++)
- {
-
- if (strcmp(argv[ind],"-help") == 0)
- {
- INFOS( "Usage: " << argv[0]
- << " -common 'path to general catalog' "
- " -personal 'path to personal catalog' "
- " -ORBInitRef NameService=corbaname::localhost");
- _return_value = false ;
- }
-
- if (strcmp(argv[ind],"-common") == 0)
- {
- if (ind + 1 < argc)
- {
- // General catalog file
- *_general = argv[ind + 1] ;
- }
- }
- else if (strcmp(argv[ind],"-personal") == 0)
- {
- if (ind + 1 < argc)
- {
- // Personal catalog file
- *_personal = argv[ind + 1] ;
- }
- }
- }
- return _return_value;
-}
-
-
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : SALOME_NamingService.cxx
-// Author : Estelle Deville
-// Module : SALOME
-// $Header$
-
-#include "SALOME_NamingService.hxx"
-#include "ServiceUnreachable.hxx"
-
-#include "utilities.h"
-
-#include <iostream>
-#include <cstring>
-#include <string>
-
-using namespace std;
-
-//----------------------------------------------------------------------
-/*! Function : SALOME_NamingService
- * Purpose : Constructor and Initialisation of _root_context
- */
-//----------------------------------------------------------------------
-
-SALOME_NamingService::SALOME_NamingService()
-{
- MESSAGE("SALOME_NamingService default constructor");
- _orb = CORBA::ORB::_nil();
-}
-
-//----------------------------------------------------------------------
-/*! Function : SALOME_NamingService
- * \param orb CORBA::ORB_ptr arguments
- */
-//----------------------------------------------------------------------
-
-SALOME_NamingService::SALOME_NamingService(CORBA::ORB_ptr orb)
-{
- MESSAGE("SALOME_NamingService creation");
- _orb = orb ;
- _initialize_root_context();
-}
-
-//----------------------------------------------------------------------
-/*! Function : ~SALOME_NamingService
- * Purpose : Destructor
- */
-//----------------------------------------------------------------------
-
-SALOME_NamingService::~SALOME_NamingService()
-{
- // Problem MESSAGE with singleton: late destruction, after trace system destruction ?
- //MESSAGE("SALOME_NamingService destruction");
-}
-
-//----------------------------------------------------------------------
-/*! Function : init_orb
- * initialize ORB reference after default constructor
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::init_orb(CORBA::ORB_ptr orb)
-{
- MESSAGE("SALOME_NamingService initialisation");
- Utils_Locker lock(&_myMutex);
- _orb = orb ;
- _initialize_root_context();
-}
-
-
-//----------------------------------------------------------------------
-/*! Function : Register
- * Method to create an association in the NamingService between ObjRef
- * and Path.
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- * \param ObjRef CORBA::Object_ptr arguments
- * \param Path const char* arguments
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
- const char* Path)
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Register: "<< Path);
- Utils_Locker lock(&_myMutex);
- int dimension_Path = strlen(Path) + 1;
- char** resultat_resolve_Path = new char* [dimension_Path];
-
- // _current_context is replaced to the _root_context
- // if the Path begins whith '/'
- if (Path[0]=='/') {
- _current_context = _root_context;
- // MESSAGE("Gone to the _root_context");
- }
-
- //the resolution of the directory path has to be done
- //to place the currect_context to the correct node
- int dimension_resultat = 0;
- _result_resolve_Path (Path, dimension_resultat, resultat_resolve_Path);
-
- CosNaming::Name _context_name;
- CORBA::Boolean _not_exist = false ;
- CosNaming::NamingContext_var _temp_context;
-
- if(dimension_resultat>1)
- {
- // A directory is treated (not only an object name)
- // We had to test if the directory where ObjRef should be recorded
- // is already done
- // If not, the new context has to be created
-
- // MESSAGE("A complet Path has to be treated, not only an object name");
- _context_name.length(dimension_resultat-1);
-
- _create_context_name_dir(resultat_resolve_Path,dimension_resultat-1,
- _context_name);
-
- try
- {
- CORBA::Object_var _obj = _current_context->resolve(_context_name);
- _current_context = CosNaming::NamingContext::_narrow(_obj);
- }
- catch (CosNaming::NamingContext::NotFound &)
- {
- // failed to resolve, therefore assume cold start
- _not_exist = true;
- }
- catch (CosNaming::NamingContext::InvalidName &)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::InvalidName");
- }
- catch (CosNaming::NamingContext::CannotProceed &)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::CannotProceed");
- }
- catch(CORBA::SystemException&)
- {
- INFOS("!!!Register() : CORBA::SystemException : unable to contact"
- << " the naming service");
- throw ServiceUnreachable();
- }
- if(_not_exist)
- {
- try
- {
- _context_name.length(1);
- // MESSAGE("The Path indicated is not yet created. It will soon be done");
- for (int i = 0 ; i <dimension_resultat -1 ;i++)
- {
- _context_name[0].id =
- CORBA::string_dup(resultat_resolve_Path[i]);
- _context_name[0].kind = CORBA::string_dup("dir");
- // SCRUTE(_context_name[0].id);
- //The Path could be in part already created.
- //We had to test it
- try
- {
- // this context is already created.
- // Nothing to be done
- CORBA::Object_var _obj =
- _current_context->resolve(_context_name);
- _current_context =
- CosNaming::NamingContext::_narrow(_obj);
- //MESSAGE("This context was already created");
- }
- catch (CosNaming::NamingContext::NotFound &)
- {
- // This context is not created. It will be done
- _temp_context =
- _current_context->bind_new_context(_context_name);
- _current_context = _temp_context;
- //INFOS("This context was'nt created, it's now done");
- }
- }
- }
- catch (CosNaming::NamingContext::AlreadyBound&)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::AlreadyBound");
- }
- catch(CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS("Register() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found");
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS("Register() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context");
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS("Register() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object");
- }
- catch(CosNaming::NamingContext::CannotProceed&)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::CannotProceed");
- }
- catch(CosNaming::NamingContext::InvalidName&)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::InvalidName");
- }
- catch(CORBA::SystemException&)
- {
- INFOS("!!!Register() :CORBA::SystemException : unable to contact"
- << " the naming service");
- throw ServiceUnreachable();
- }
- }
- }
-
- // The current directory is now the directory where the object should
- // be recorded
- _context_name.length(1);
- try
- {
- // the last element is an object an not a directory
- _context_name[0].id =
- CORBA::string_dup(resultat_resolve_Path[dimension_resultat -1]);
- _context_name[0].kind = CORBA::string_dup("object");
- //SCRUTE(_context_name[0].id);
-
- _current_context->bind(_context_name, ObjRef);
- // MESSAGE("A new element " << _context_name[0].id
- // << " is recorded in the _current_context");
- }
- catch(CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS("Register() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found");
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS("Register() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context");
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS("Register() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object");
- }
- catch(CosNaming::NamingContext::CannotProceed&)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::CannotProceed");
- }
- catch(CosNaming::NamingContext::InvalidName&)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::InvalidName");
- }
- catch(CosNaming::NamingContext::AlreadyBound&)
- {
- INFOS("!!!Register() : CosNaming::NamingContext::AlreadyBound, object will be rebind");
- _current_context->rebind(_context_name, ObjRef);
- }
- catch(CORBA::SystemException&)
- {
- INFOS("!!!Register() :CORBA::SystemException : unable to contact"
- << " the naming service");
- throw ServiceUnreachable();
- }
-
-
- // Memory destruction
- for (int i = 0 ; i <dimension_resultat ;i++)
- {
- delete [] resultat_resolve_Path[i];
- }
- delete[] resultat_resolve_Path ;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Resolve
- * Purpose : method to get the ObjRef of a symbolic name
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- * \param Path const char* arguments
- * \return the object reference
- */
-//----------------------------------------------------------------------
-
-CORBA::Object_ptr SALOME_NamingService::Resolve(const char* Path)
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Resolve: " << Path);
- Utils_Locker lock(&_myMutex);
- int dimension_Path = strlen(Path) + 1;
- char** resultat_resolve_Path = new char* [dimension_Path];
-
- // _current_context is replaced to the _root_context
- // if the Path begins whith '/'
- if (Path[0]=='/') _current_context = _root_context;
-
-
- //the resolution of the directory path has to be done
- //to place the currect_context to the correct node
- int dimension_resultat = 0;
- _result_resolve_Path (Path, dimension_resultat, resultat_resolve_Path);
-
- CosNaming::Name _context_name;
- _context_name.length(dimension_resultat);
- CORBA::Object_ptr _obj = NULL ;
-
- _create_context_name_dir(resultat_resolve_Path,dimension_resultat-1,
- _context_name);
- // the last element is an object an not a directory
- _context_name[dimension_resultat -1].id =
- CORBA::string_dup(resultat_resolve_Path[dimension_resultat -1]);
- _context_name[dimension_resultat -1].kind = CORBA::string_dup("object");
- // SCRUTE(_context_name[dimension_resultat -1].id);
- ASSERT(!CORBA::is_nil(_current_context));
- // Context creation
- try
- {
- _obj =_current_context->resolve(_context_name);
- }
- catch(CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS("Resolve() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found");
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS("Resolve() : "
- << (char *) n[0].id << " (" << (char *) n[0].kind
- << ") is not a context");
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS("Resolve() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object");
- }
- catch(CosNaming::NamingContext::CannotProceed&)
- {
- INFOS("!!!Resolve() : CosNaming::NamingContext::CannotProceed");
- }
- catch(CosNaming::NamingContext::InvalidName&)
- {
- INFOS("!!!Resolve() : CosNaming::NamingContext::InvalidName");
- }
- catch(CORBA::SystemException&)
- {
- INFOS("!!!Resolve() :CORBA::SystemException : unable to contact"
- << "the naming service");
- throw ServiceUnreachable();
- }
- // Memory destruction
- for (int i = 0 ; i <dimension_resultat ;i++)
- {
- delete [] resultat_resolve_Path[i];
- }
- delete[] resultat_resolve_Path ;
-
- return _obj;
-}
-
-//----------------------------------------------------------------------
-/*! Function : ResolveFirst
- * Purpose : method to get an ObjRef with a symbolic name
- * \param Path const char* argument like "/path/name"
- * search the fist reference like "/path(.dir)/name*(.kind)"
- * If the NamingService is out, the exception ServiceUnreachable is thrown
-
-
-
-
- * \return the object reference
- */
-//----------------------------------------------------------------------
-
-CORBA::Object_ptr SALOME_NamingService::ResolveFirst(const char* Path)
- throw(ServiceUnreachable)
-{
- MESSAGE("ResolveFirst");
- Utils_Locker lock(&_myMutex);
- SCRUTE(Path);
- string thePath =Path;
- string basePath ="/";
- string name = thePath;
- string::size_type idx = thePath.rfind('/');
- if (idx != string::npos) // at least one '/' found
- {
- basePath = thePath.substr(0,idx);
- name = thePath.substr(idx+1);
- SCRUTE(basePath);
- }
- SCRUTE(name);
- CORBA::Object_ptr obj = CORBA::Object::_nil();
- bool isOk = Change_Directory(basePath.c_str());
- if (isOk)
- {
- vector<string> listElem = list_directory();
- vector<string>::iterator its = listElem.begin();
- while (its != listElem.end())
- {
- MESSAGE(*its);
- if ((*its).find(name) == 0)
- {
- //string instance = basePath + "/" + *its;
- return Resolve((*its).c_str());
- }
- its++;
- }
- }
- return obj;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Resolve Component from hostname, containername, componentName and number of prcoessors
- * Purpose : method to get the ObjRef of a component
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- * \param hostname const char* argument
- * \param containername const char* argument
- * \param componentname const char* argument
- * \param nbproc const int argument
- * \return the object reference
- */
-//----------------------------------------------------------------------
-
-CORBA::Object_ptr SALOME_NamingService::ResolveComponent(const char* hostname, const char* containerName, const char* componentName, const int nbproc)
-{
- MESSAGE("ResolveComponent");
- Utils_Locker lock(&_myMutex);
-
- string name="/Containers/";
- name += hostname;
- if( strlen(containerName) != 0 ){
- name += "/";
- if( nbproc >=1 ){
- char *newContainerName = new char[strlen(containerName)+8];
- sprintf(newContainerName,"%s_%d",containerName,nbproc);
- name += newContainerName;
- }
- else
- name += containerName;
- name += "/";
- name += componentName;
- return ResolveFirst(name.c_str());
- }
- else {
- Change_Directory(name.c_str());
- vector<string> contList = list_directory();
- for(unsigned int ind = 0; ind < contList.size(); ind++){
- name = contList[ind].c_str();
- name += "/";
- name += componentName;
- CORBA::Object_ptr obj = ResolveFirst(name.c_str());
- if( !CORBA::is_nil(obj) )
- return obj;
- }
- return CORBA::Object::_nil();
- }
-
-}
-
-string SALOME_NamingService::ContainerName(const char *containerName)
-{
- string ret;
-
- if (strlen(containerName)== 0)
- ret = "FactoryServer";
- else
- ret = containerName;
-
- return ret;
-}
-
-string SALOME_NamingService::ContainerName(const Engines::MachineParameters& params)
-{
- int nbproc;
- if( !params.isMPI )
- nbproc = 0;
- else if( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
- nbproc = 1;
- else if( params.nb_node == 0 )
- nbproc = params.nb_proc_per_node;
- else if( params.nb_proc_per_node == 0 )
- nbproc = params.nb_node;
- else
- nbproc = params.nb_node * params.nb_proc_per_node;
-
- string ret=ContainerName(params.container_name);
-
- if( nbproc >=1 ){
- char *suffix = new char[8];
- sprintf(suffix,"_%d",nbproc);
- ret += suffix;
- }
-
- return ret;
-}
-
-string SALOME_NamingService::BuildContainerNameForNS(const char *containerName, const char *hostname)
-{
- string ret="/Containers/";
- ret += hostname;
- ret+="/";
- ret+=ContainerName(containerName);
-
- return ret;
-}
-
-string SALOME_NamingService::BuildContainerNameForNS(const Engines::MachineParameters& params, const char *hostname)
-{
- string ret="/Containers/";
- ret += hostname;
- ret+="/";
- ret+=ContainerName(params);
-
- return ret;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Find
- * Purpose : method to research a name from the current directory
- * of the naming service.
- * The naming service changes directory to go to the directory where
- * the last occurence was found.
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- * \param name const char* arguments
- * \return the number of occurences found
- * \sa _Find
- */
-//----------------------------------------------------------------------
-
-int SALOME_NamingService::Find(const char* name)
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Find " << name);
- Utils_Locker lock(&_myMutex);
- CORBA::Long occurence_number = 0 ;
- try
- {
- _Find(name,occurence_number);
- }
- catch(CORBA::SystemException&)
- {
- INFOS("!!!Find() : CORBA::SystemException : unable to contact"
- << " the naming service");
- throw ServiceUnreachable();
- }
- return occurence_number;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Create_Directory
- * Purpose : method to create a directory from the current directory.
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- * \param Path const char* arguments
- * \return a boolean to indicate if the creation succeeded
- */
-//----------------------------------------------------------------------
-
-bool SALOME_NamingService::Create_Directory(const char* Path)
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Create_Directory");
- Utils_Locker lock(&_myMutex);
- int dimension_Path = strlen(Path) + 1;
- char** resultat_resolve_Path= new char* [dimension_Path];;
- CORBA::Boolean _return_code = true ;
-
- // _current_context is replaced to the _root_context
- // if the Path begins whith '/'
- if (Path[0]=='/') _current_context = _root_context;
-
- int dimension_resultat = 0;
- _result_resolve_Path (Path, dimension_resultat, resultat_resolve_Path);
-
-
- // We had to test if a part of the directory to treat
- // is already done
- // If not, the new context has to be created
-
- CosNaming::Name _context_name;
- _context_name.length(1);
- CosNaming::NamingContext_var _temp_context;
- ASSERT(!CORBA::is_nil(_current_context));
- // Context creation
- try
- {
-
- for (int i = 0 ; i <dimension_resultat ;i++)
- {
- _context_name[0].id =
- CORBA::string_dup(resultat_resolve_Path[i]);
- _context_name[0].kind = CORBA::string_dup("dir");
- // SCRUTE(_context_name[0].id);
- //The Path could be in part already created.
- //We had to test it
- try
- {
- // this context is already created.
- // Nothing to be done
- CORBA::Object_var _obj =
- _current_context->resolve(_context_name);
- _current_context =
- CosNaming::NamingContext::_narrow(_obj);
- MESSAGE("This context was already created");
- }
- catch (CosNaming::NamingContext::NotFound &)
- {
- // This context is not created. It will be done
- _temp_context =
- _current_context->bind_new_context(_context_name);
- _current_context = _temp_context;
- INFOS("This context was'nt created, it's now done");
- }
- }
- }
- catch (CosNaming::NamingContext::AlreadyBound&)
- {
- INFOS("!!! Create_Directory() CosNaming::NamingContext::AlreadyBound");
- _return_code = false;
- }
- catch(CosNaming::NamingContext::NotFound& ex)
- {
- _return_code = false;
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS("Create_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found");
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS("Create_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context");
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS("Create_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object");
- }
- catch(CosNaming::NamingContext::CannotProceed&)
- {
- _return_code = false;
- INFOS("!!!Create_Directory():CosNaming::NamingContext::CannotProceed");
- }
- catch(CosNaming::NamingContext::InvalidName&)
- {
- _return_code = false;
- INFOS("!!!Create_Directory():CosNaming::NamingContext::InvalidName");
- }
- catch(CORBA::SystemException&)
- {
- _return_code = false;
- INFOS("!!!Register() :CORBA::SystemException : unable to contact"
- << " the naming service");
- throw ServiceUnreachable();
- }
- // Memory destruction
- for (int i = 0 ; i <dimension_resultat;i++)
- {
- delete [] resultat_resolve_Path[i];
- }
- delete[] resultat_resolve_Path ;
- return _return_code;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Change_Directory
- * Purpose : method to change the current directory to the
- * directory Path indicated in "in" Parameter.
- * If Path ="/", the current directory changes to the root directory.
- * If the NamingService is out, the exception ServiceUnreachable is thrown.
- * \param Path const char* arguments
- * \return a boolean to indicate if the change succeeded
- */
-//----------------------------------------------------------------------
-
-bool SALOME_NamingService::Change_Directory(const char* Path)
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Change_Directory " << Path);
- Utils_Locker lock(&_myMutex);
- int dimension_Path = strlen(Path) + 1;
- char** resultat_resolve_Path = new char* [dimension_Path];
- CORBA::Boolean _return_code = true ;
-
- // _current_context is replaced to the _root_context
- // if the Path begins whith '/'
- if (Path[0]=='/') _current_context = _root_context;
-
- if ((Path[0]=='/') && (dimension_Path == 2))
- {
- MESSAGE("Change_Directory is called to go to the root_context");
- }
- //nothing to de done, the change_dur is called to go to the root_context
- // no Path to resolve
- else
- //the resolution of the directory path has to be done
- //to place the currect_context to the correct node
- {
- int dimension_resultat = 0;
- _result_resolve_Path(Path,dimension_resultat,resultat_resolve_Path);
-
- CosNaming::Name _context_name;
- _context_name.length(dimension_resultat);
- CORBA::Object_var _obj;
-
- _create_context_name_dir(resultat_resolve_Path,dimension_resultat,
- _context_name);
-
- ASSERT(!CORBA::is_nil(_current_context));
- // Context creation
- try
- {
- _obj =_current_context->resolve(_context_name);
- _current_context = CosNaming::NamingContext::_narrow(_obj);
- ASSERT(!CORBA::is_nil(_current_context))
- }
- catch(CosNaming::NamingContext::NotFound& ex)
- {
- _return_code = false;
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS( "Change_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found")
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS("Change_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context" )
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS( "Change_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object" )
- }
- catch(CosNaming::NamingContext::CannotProceed&)
- {
- _return_code = false;
- INFOS( "!!!Change_Directory() : CosNaming::NamingContext::CannotProceed" )
- }
- catch(CosNaming::NamingContext::InvalidName&)
- {
- _return_code = false;
- INFOS( "!!!Change_Directory() : CosNaming::NamingContext::InvalidName" )
- }
- catch(CORBA::SystemException&)
- {
- _return_code = false;
- INFOS( "!!!Change_Directory() :CORBA::SystemException : unable to contact"
- << "the naming service")
- throw ServiceUnreachable();
- }
- // Memory destruction
- for (int i = 0 ; i <dimension_resultat ;i++)
- {
- delete [] resultat_resolve_Path[i];
- }
- delete[] resultat_resolve_Path ;
- }
- return _return_code;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Current_Directory
- * Purpose : method to get the current directory.
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- * \return the path of the current_context
- * \sa _current_directory
- */
-//----------------------------------------------------------------------
-
-char* SALOME_NamingService::Current_Directory()
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Current_Directory");
- Utils_Locker lock(&_myMutex);
-
- CosNaming::NamingContext_var _ref_context = _current_context;
-
- int i = 0;
- int length_path = 0;
- char** result_path = new char*[50]; // 50 is it enough?
-
-
- // We go to the root_context to begin the search from the root
- _current_context = _root_context ;
- CORBA::Boolean _continue = true ;
- try
- {
- _current_directory(result_path,i,_ref_context,_continue );
- }
- catch(CORBA::SystemException&)
- {
- INFOS("!!!Current_Directory(): CORBA::SystemException : unable to contact"
- << " the naming service" )
- throw ServiceUnreachable();
- }
- for (int k = 0 ; k <i ;k++)
- {
- // We count the length of the char* + 1 for the '/' to separate
- // the directories
- length_path = length_path + strlen(result_path[k]) + 1;
- }
- char* return_Path = new char[length_path +2];
- return_Path[0] = '/' ;
- return_Path[1] = '\0' ;
-#ifndef WNT
- for (int k = 0 ; k <i ;k++)
-#else
- for (k = 0 ; k <i ;k++)
-#endif
- {
- //SCRUTE(result_path[k])
- strcat(return_Path,result_path[k]);
- strcat(return_Path,"/");
- }
- //SCRUTE(return_Path)
- _current_context = _ref_context ;
-
- return return_Path;
-}
-
-//----------------------------------------------------------------------
-/*! Function : list
- * Purpose : method to list and print all the context contained from
- * the current context
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::list()
- throw(ServiceUnreachable)
-{
- MESSAGE("Begin of list");
- Utils_Locker lock(&_myMutex);
- CosNaming::BindingList_var _binding_list;
- CosNaming::BindingIterator_var _binding_iterator;
- unsigned long nb=0 ; // for using only the BindingIterator to access the bindings
- CosNaming::Binding_var _binding ;
- CosNaming::NamingContext_var _ref_context = _current_context;
- _current_context->list(nb, _binding_list, _binding_iterator) ;
-
- while (_binding_iterator->next_one(_binding)) {
- CosNaming::Name _bindingName = _binding->binding_name;
- if (_binding->binding_type == CosNaming::ncontext) {
- MESSAGE( "Context : " << _bindingName[0].id );
- try
- {
- Change_Directory(_bindingName[0].id);
- }
- catch (ServiceUnreachable&)
- {
- INFOS( "!!!list(): ServiceUnreachable" )
- throw ServiceUnreachable();
- }
-
- list();
- _current_context = _ref_context ;
- }
- else if (_binding->binding_type == CosNaming::nobject) {
- MESSAGE( "Object : " << _bindingName[0].id );
- }
- }
- _binding_iterator->destroy();
-}
-
-//----------------------------------------------------------------------
-/*! Function : list_directory
- * Purpose : method to get all the contexts contained in the current
- * directory
- * Get only objects, isn't iterative
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- */
-//----------------------------------------------------------------------
-vector<string> SALOME_NamingService::list_directory()
- throw(ServiceUnreachable)
-{
- vector<string> _list ;
- _list.resize(0);
- CosNaming::BindingList_var _binding_list;
- CosNaming::BindingIterator_var _binding_iterator;
- unsigned long nb=0 ; // for using only the BindingIterator to access the bindings
- CosNaming::Binding_var _binding ;
- CosNaming::NamingContext_var _ref_context = _current_context;
- _current_context->list(nb, _binding_list, _binding_iterator) ;
- if (_binding_iterator->_is_nil()) return _list;
-
- while (_binding_iterator->next_one(_binding)) {
- CosNaming::Name _bindingName = _binding->binding_name;
- if (_binding->binding_type == CosNaming::nobject) {
- _list.push_back(CORBA::string_dup(_bindingName[0].id));
- }
- }
- //for (unsigned int ind = 0; ind < _list.size(); ind++)
- // MESSAGE("list_directory : Object : " << _list[ind]);
-
- _binding_iterator->destroy();
- return _list;
-}
-
-//----------------------------------------------------------------------
-/*! Function : list_directory_recurs
- * Purpose : method to get all the contexts contained in the current
- * directory
- * Get only objects and is recursive
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- */
-//----------------------------------------------------------------------
-vector<string> SALOME_NamingService::list_directory_recurs()
- throw(ServiceUnreachable)
-{
- MESSAGE("list_directory_recurs");
- Utils_Locker lock(&_myMutex);
- vector<string> _list ;
- char *currentDir=Current_Directory();
- _list_directory_recurs(_list,0,currentDir);
- delete [] currentDir;
- return _list;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Destroy_Name
- * Purpose : method to destroy an association Path-Object Reference.
- * WARNING : The complete Path should be given.
- * If the NamingService is out, the exception ServiceUnreachable is thrown
- * \param Path const char* arguments
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::Destroy_Name(const char* Path)
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Destroy_Name");
- Utils_Locker lock(&_myMutex);
- int dimension_Path = strlen(Path) + 1;
- char** resultat_resolve_Path = new char* [dimension_Path];
-
- // _current_context is replaced to the _root_context
- // if the Path begins whith '/'
- if (Path[0]=='/') _current_context = _root_context;
-
-
- //the resolution of the directory path has to be done
- //to place the currect_context to the correct node
- int dimension_resultat = 0;
- _result_resolve_Path (Path, dimension_resultat, resultat_resolve_Path);
-
- CosNaming::Name _context_name;
- if (dimension_resultat>1)
- {
- // We go in the directory where the object to destroy is
- _context_name.length(dimension_resultat-1);
-
- _create_context_name_dir(resultat_resolve_Path,dimension_resultat -1,
- _context_name);
- try
- {
- CORBA::Object_var _obj = _current_context->resolve(_context_name);
- _current_context = CosNaming::NamingContext::_narrow(_obj);
- }
- catch (CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS( "Destroy_Name() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found" )
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS( "Destroy_Name() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context" )
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS( "Destroy_Name() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object" )
- }
- catch (CosNaming::NamingContext::InvalidName &)
- {
- INFOS( "!!!Destroy_Name() : CosNaming::NamingContext::InvalidName" )
- }
- catch (CosNaming::NamingContext::CannotProceed &)
- {
- INFOS( "!!!Destroy_Name(): CosNaming::NamingContext::CannotProceed" )
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "!!!Destroy_Name() : CORBA::SystemException : unable to contact"
- << " the naming service")
- throw ServiceUnreachable();
- }
- }
-
- // the last element is the object to destroy
- _context_name.length(1);
- _context_name[0].id =
- CORBA::string_dup(resultat_resolve_Path[dimension_resultat -1]);
- _context_name[0].kind = CORBA::string_dup("object");
- SCRUTE(_context_name[0].id);
- ASSERT(!CORBA::is_nil(_current_context));
- // Object destruction
- try
- {
- _current_context->unbind(_context_name);
- MESSAGE( "The object " << _context_name[0].id << " has been deleted" )
- }
- catch(CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS( "Destroy_Name() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found" )
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS( "Destroy_Name() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context" )
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS( "Destroy_Name() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object" )
- }
- catch(CosNaming::NamingContext::CannotProceed&)
- {
- INFOS( "!!!Destroy_Name() : CosNaming::NamingContext::CannotProceed")
- }
- catch(CosNaming::NamingContext::InvalidName&)
- {
- INFOS( "!!!Destroy_Name() : CosNaming::NamingContext::InvalidName")
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "!!!Destroy_Name() :CORBA::SystemException : unable to contact"
- << " the naming service")
- throw ServiceUnreachable();
- }
- // Memory destruction
- for (int i = 0 ; i <dimension_resultat ;i++)
- {
- delete [] resultat_resolve_Path[i];
- }
- delete[] resultat_resolve_Path ;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Destroy_Directory.
- * Purpose : method to destroy a directory if it is empty.
- * WARNING : The complete Path to the directory (from the root_context)
- * to destroy should be given.
- * If the NamingService is out, the exception ServiceUnreachable is thrown.
- * \param Path const char* arguments
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::Destroy_Directory(const char* Path)
- throw(ServiceUnreachable)
-{
- MESSAGE("BEGIN OF Destroy_Directory");
- Utils_Locker lock(&_myMutex);
- int dimension_Path = strlen(Path) + 1;
- char** resultat_resolve_Path = new char* [dimension_Path];
-
- // _current_context is replaced to the _root_context
- // if the Path begins whith '/'
- if (Path[0]=='/') _current_context = _root_context;
-
- CosNaming::NamingContext_var _ref_context = _current_context;
-
- //the resolution of the directory path has to be done
- //to place the currect_context to the correct node
- int dimension_resultat = 0;
- _result_resolve_Path (Path, dimension_resultat, resultat_resolve_Path);
-
- CosNaming::Name _context_name;
- if (dimension_resultat>1)
- {
- // We go in the directory where the context to destroy is
- _context_name.length(dimension_resultat-1);
-
- _create_context_name_dir(resultat_resolve_Path,dimension_resultat -1,
- _context_name);
- try
- {
- CORBA::Object_var _obj = _current_context->resolve(_context_name);
- _current_context = CosNaming::NamingContext::_narrow(_obj);
- _ref_context = _current_context ;
- }
- catch (CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found")
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context" )
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object" )
- }
- catch (CosNaming::NamingContext::InvalidName &)
- {
- INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::InvalidName" )
- }
- catch (CosNaming::NamingContext::CannotProceed &)
- {
- INFOS("!!!Destroy_Directory(): CosNaming::NamingContext::CannotProceed" )
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "!!!Destroy_Directory() : CORBA::SystemException : unable to contact"
- << " the naming service" )
- throw ServiceUnreachable();
- }
- }
-
- // the last element is the context to destroy
- _context_name.length(1);
- _context_name[0].id =
- CORBA::string_dup(resultat_resolve_Path[dimension_resultat -1]);
- _context_name[0].kind = CORBA::string_dup("dir");
- SCRUTE(_context_name[0].id);
-
- try
- {
- // We go in the context to destroy
- CORBA::Object_var _obj = _current_context->resolve(_context_name);
- _current_context = CosNaming::NamingContext::_narrow(_obj);
- }
- catch (CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found" )
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context" )
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object" )
- }
- catch (CosNaming::NamingContext::InvalidName &)
- {
- INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::InvalidName" )
- }
- catch (CosNaming::NamingContext::CannotProceed &)
- {
- INFOS( "!!!Destroy_Directory(): CosNaming::NamingContext::CannotProceed" )
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "!!!Destroy_Directory() : CORBA::SystemException : unable to contact"
- << " the naming service" )
- throw ServiceUnreachable();
- }
-
- ASSERT(!CORBA::is_nil(_current_context));
- // Context Destruction
- try
- {
- _current_context->destroy();
- MESSAGE( "The context " << _context_name[0].id << " has been deleted" )
- }
- catch(CosNaming::NamingContext::NotEmpty&)
- {
- INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::NoEmpty "
- << Path << " is not empty" )
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "!!!Destroy_Directory() :CORBA::SystemException : "
- << "unable to contact the naming service")
- throw ServiceUnreachable();
- }
- // We go to the directory just before the context to delete
- _current_context = _ref_context ;
- try
- {
- _current_context->unbind(_context_name);
- MESSAGE( "The bind to the context " << _context_name[0].id << " has been deleted" )
- }
- catch(CosNaming::NamingContext::NotFound& ex)
- {
- CosNaming::Name n = ex.rest_of_name;
- if (ex.why == CosNaming::NamingContext::missing_node)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind << ") not found" )
- if (ex.why == CosNaming::NamingContext::not_context)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not a context" )
- if (ex.why == CosNaming::NamingContext::not_object)
- INFOS( "Destroy_Directory() : " << (char *) n[0].id
- << " (" << (char *) n[0].kind
- << ") is not an object" )
- }
- catch(CosNaming::NamingContext::CannotProceed&)
- {
- INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::CannotProceed")
- }
- catch(CosNaming::NamingContext::InvalidName&)
- {
- INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::InvalidName")
- }
- catch(CORBA::SystemException&)
- {
- INFOS( "!!!Destroy_Directory() :CORBA::SystemException : unable to contact"
- << " the naming service")
- throw ServiceUnreachable();
- }
- // Memory destruction
- for (int i = 0 ; i <dimension_resultat ;i++)
- {
- delete [] resultat_resolve_Path[i];
- }
- delete[] resultat_resolve_Path ;
-}
-
-//----------------------------------------------------------------------
-/*! Function : Destroy_Directory.
- * Purpose : method to destroy a directory if it is empty.
- * WARNING : The complete Path to the directory (from the root_context)
- * to destroy should be given.
- * If the NamingService is out, the exception ServiceUnreachable is thrown.
- * \param Path const char* arguments
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::Destroy_FullDirectory(const char* Path)
- throw(ServiceUnreachable)
-{
- Change_Directory(Path);
- vector<string> contList = list_directory();
- for(unsigned int ind = 0; ind < contList.size(); ind++)
- Destroy_Name(contList[ind].c_str());
- Destroy_Directory(Path);
- Destroy_Name(Path);
-}
-
-//----------------------------------------------------------------------
-/*! Function : _initialize_root_context
- * Purpose : method called by constructor to initialize _root_context
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::_initialize_root_context()
-{
- //MESSAGE("Get the root context");
- try
- {
- CORBA::Object_var obj = _orb->resolve_initial_references("NameService");
- _root_context = CosNaming::NamingContext::_narrow(obj);
- _current_context = _root_context ;
- ASSERT(!CORBA::is_nil(_root_context));
- }
-
- catch(CORBA::SystemException&)
- {
- INFOS("CORBA::SystemException: unable to contact the naming service");
- throw ServiceUnreachable();
- }
- catch(...)
- {
- INFOS("Unknown Exception: unable to contact the naming service");
- throw ServiceUnreachable();
- }
-}
-
-//----------------------------------------------------------------------
-/*! Function : _resolve_Path
- * Purpose : method to decompose a Path : /Kernel/Services/Sessions.
- *
- * \return a char* containing the first char between '/' (in this case Kernel)
- */
-//----------------------------------------------------------------------
-
-char* SALOME_NamingService::_resolve_Path(char* Path)
-{
- int i = 0 ;
- int length = strlen(Path);
- char *resultat;
-
- if (length==0) return NULL;
- else
- {
- while ((i<length) && (Path[i]!='/'))
- i++;
- resultat = new char[i+1];
- strncpy(resultat,Path,i);
- resultat[i]='\0';
- return resultat;
- }
-}
-
-//----------------------------------------------------------------------
-/*! Function : _result_resolve_Path.
- * Purpose : method to decompose a Path : /Kernel/Services/Sessions.
- * Gives an array of char* containing Kernel, Services, Sessions.
- * \param Path const char* arguments, the Path to decompose
- * \param j int& arguments, the size of the array of char*
- * \param resultat_resolve_Path char** arguments
- */
-//----------------------------------------------------------------------
-
-void
-SALOME_NamingService::_result_resolve_Path(const char* Path,
- int& j,
- char ** resultat_resolve_Path)
-{
- //MESSAGE("BEGIN OF _result_resolve_Path");
- int dimension_Path = strlen(Path) + 1;
- char** temp= new char* [dimension_Path];
- char** tempslash = new char* [dimension_Path];
-
- temp[j] = new char[dimension_Path];
- strcpy(temp[j],Path);
-
- while (strlen(temp[j])>0)
- {
- // temp[j] contains the characters to be treated :
- // (Path - characters already treted)
- // tempslash[j] = temp[j] if the string temp[j] doesn't begin whith '/'
- // tempslash[j] = temp[j] without '/' if the string begins whith '/'
- int length_temp = strlen(temp[j]);
- if (temp[j][0]=='/')
- {
- // the characters to be treated begin whith '/'
- // we don't have to take the '/'
- tempslash[j] = new char [length_temp] ;
- for (int k = 0; k < length_temp-1; k++)
- tempslash[j][k] = temp[j][k+1];
- tempslash[j][length_temp-1]='\0';
- }
- else
- {
- //the characters to be trated don't begin with '/'
- // Nothing to be done on the char
- tempslash[j] = new char [length_temp+1] ;
- strcpy(tempslash[j],temp[j]);
- }
- // decomposition of the Path
- resultat_resolve_Path[j]= _resolve_Path(tempslash[j]);
- //SCRUTE(resultat_resolve_Path[j]);
-
- int length_resultat = strlen(resultat_resolve_Path[j]) ;
- int dimension_temp = length_temp -length_resultat ;
- j++;
- temp[j] = new char[dimension_temp +1];
- for (int i = 0 ; i <dimension_temp ;i++)
- {
- temp[j][i] =tempslash[j-1][i+ length_resultat];
- }
- temp[j][dimension_temp]= '\0';
- //SCRUTE(temp[j]);
- }
- // Memory destruction
- for (int i = 0 ; i <j;i++)
- {
- delete [] temp[i];
- delete [] tempslash[i];
- }
- delete[] temp;
- delete [] tempslash ;
-}
-
-//----------------------------------------------------------------------
-/*! Function : _Find.
- * Purpose : method to research a name from the current directory
- * of the naming service.
- * The naming service changes directory to go to the directory where
- * the last occurence was found.
- * \param name const char* arguments
- * \param occurence_number CORBA::LONG (by value)
- */
-//----------------------------------------------------------------------
-
-void SALOME_NamingService::_Find(const char* name,
- CORBA::Long& occurence_number)
-{
- //MESSAGE("BEGIN OF _Find") SCRUTE(name);
- CosNaming::BindingList_var _binding_list;
- CosNaming::BindingIterator_var _binding_iterator;
- unsigned long nb=0 ; //for using only the BindingIterator
- // to access the bindings
- CosNaming::Binding_var _binding ;
- CosNaming::NamingContext_var _ref_context = _current_context;
- CosNaming::NamingContext_var _found_context = _current_context;
-
- _current_context->list(nb, _binding_list, _binding_iterator) ;
-
- while (_binding_iterator->next_one(_binding)) {
- CosNaming::Name _bindingName = _binding->binding_name;
- if (_binding->binding_type == CosNaming::ncontext) {
- // We work on a directory, the search should be done in this directory
- Change_Directory(_bindingName[0].id);
- _Find(name,occurence_number);
- // We'll go back to the initial context
- _current_context = _ref_context ;
- }
- else if (_binding->binding_type == CosNaming::nobject) {
- // We work on an object...
- if (!strcmp( _bindingName[0].id,name))
- {
- //MESSAGE("One occurence was found");
- occurence_number++;
- // We keep in memory the directory where one occurence was found
- _found_context = _current_context ;
- }
- }
- }
- _binding_iterator->destroy();
- // We go to the last directory where an occurence was found
- _current_context = _found_context ;
- //SCRUTE(occurence_number);
-}
-
-//----------------------------------------------------------------------
-/*! Function : _create_context_name_dir.
- * Purpose : method to create a Context_name from an array of char.
- * The number of elements to be copied are indicated
- * with lenth_copy.
- *
- * \param resultat_resolve_Path char** arguments
- * \param length_copy int arguments
- * \param _context_name CosNaming::Name arguments (by value)
- */
-//----------------------------------------------------------------------
-
-void
-SALOME_NamingService::_create_context_name_dir(char** resultat_resolve_Path
- ,int length_copy,
- CosNaming::Name& _context_name)
-{
- //MESSAGE("BEGIN OF _create_context_name_dir");
- for (int i = 0 ; i < length_copy;i++)
- {
- _context_name[i].id = CORBA::string_dup(resultat_resolve_Path[i]);
- _context_name[i].kind = CORBA::string_dup("dir");
- //SCRUTE(_context_name[i].id);
- }
-}
-
-//----------------------------------------------------------------------
-/*! Function : _current_directory.
- * Purpose : method to parse the naming service tree to find a context
- * and determine the path to go to this context from the
- * _root_context.
- * \param result_path char** arguments
- * \param length_result int arguments by value
- * \param context_to_found CosNaming::NamingContext_var arguments
- * \param _continue boolean arguments
- */
-//----------------------------------------------------------------------
-
-void
-SALOME_NamingService::_current_directory(char** result_path,
- int& length_result,
- CosNaming::NamingContext_var context_to_found,
- CORBA::Boolean& _continue)
-{
- //MESSAGE("BEGIN OF _current_Directory");
- CosNaming::BindingList_var _binding_list;
- CosNaming::BindingIterator_var _binding_iterator;
- unsigned long nb=0 ; //for using only the BindingIterator
- // to access the bindings
- CosNaming::Binding_var _binding ;
- CosNaming::NamingContext_var _ref_context = _current_context;
- CosNaming::NamingContext_var _temp_context = _current_context;
-
- _current_context->list(nb, _binding_list, _binding_iterator) ;
- if ( !_binding_iterator->_is_nil() ) {
- while ((_binding_iterator->next_one(_binding)) && _continue) {
- CosNaming::Name _bindingName = _binding->binding_name;
- if (_binding->binding_type == CosNaming::ncontext)
- {
- // We work on a directory, the search should be done in this directory
-
- result_path[length_result] = new char(strlen(_bindingName[0].id) + 1);
- strcpy(result_path[length_result],_bindingName[0].id);
- //SCRUTE(result_path[length_result])
- length_result++;
-
- CORBA::Object_var _obj =_current_context->resolve(_bindingName);
- _temp_context = CosNaming::NamingContext::_narrow(_obj);
-
- if (_temp_context->_is_equivalent(context_to_found))
- {
- //MESSAGE("The context is found, we stop the search");
- _continue = false;
- //SCRUTE(_continue);
- }
- if(_continue)
- {
- //SCRUTE(_bindingName[0].id);
- Change_Directory(_bindingName[0].id);
- _current_directory(result_path,length_result,
- context_to_found, _continue );
- if (_continue)
- {
- // We'll go back to the initial context
- _current_context = _ref_context ;
- //MESSAGE("Just before the delete of ")
- //SCRUTE(result_path[length_result-1]);
- delete result_path[length_result-1];
- length_result--;
- }
- }
- }
- }
- _binding_iterator->destroy();
- }
- // We go to the last directory where an occurence was found
- _current_context = _ref_context ;
-}
-
-
-//----------------------------------------------------------------------
-/*! Function :_list_directory_recurs.
- * Purpose : method to list recursively all the objects contained in the tree of absCurDirectory/relativeSubDir.
- * \param myList The list that will be filled.
- * \param relativeSubDir The directory from absCurDirectory in which the objects are found.
- * \param absCurDirectory The directory in ABSOLUTE form.
- * _current_context must refer to absCurDirectory.
- */
-//----------------------------------------------------------------------
-void SALOME_NamingService::_list_directory_recurs(vector<string>& myList, const char *relativeSubDir,const char *absCurDirectory)
-{
- CosNaming::BindingList_var _binding_list;
- CosNaming::BindingIterator_var _binding_iterator;
- unsigned long nb=0 ; // for using only the BindingIterator to access the bindings
- CosNaming::Binding_var _binding ;
- char *absDir;
-
- CosNaming::NamingContext_var _ref_context = _current_context;
- if(relativeSubDir)
- {
- Change_Directory(relativeSubDir);
- absDir=new char[strlen(absCurDirectory)+2+strlen(relativeSubDir)];
- strcpy(absDir,absCurDirectory);
- strcat(absDir,relativeSubDir);
- strcat(absDir,"/");
- }
- else
- absDir=(char *)absCurDirectory;
- _current_context->list(nb, _binding_list, _binding_iterator) ;
-
- while (_binding_iterator->next_one(_binding)) {
- CosNaming::Name _bindingName = _binding->binding_name;
- if (_binding->binding_type == CosNaming::ncontext) {
- _list_directory_recurs(myList,_bindingName[0].id,absDir);
- }
- else if (_binding->binding_type == CosNaming::nobject) {
- char *elt=new char[strlen(absDir)+2+strlen(_bindingName[0].id)];
- strcpy(elt,absDir);
- strcat(elt,_bindingName[0].id);
- myList.push_back(elt);
- delete [] elt;
- }
- }
- if(relativeSubDir)
- {
- _current_context = _ref_context ;
- delete [] absDir;
- }
-
- _binding_iterator->destroy();
-}
-
-//----------------------------------------------------------------------
-
-char * SALOME_NamingService::getIORaddr()
-{
- return _orb->object_to_string(_root_context);
-}
-
+++ /dev/null
-// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : SALOME_NamingService.hxx
-// Author : Estelle Deville
-// Module : SALOME
-// $Header$
-
-#ifndef SALOME_NAMINGSERVICE_H
-#define SALOME_NAMINGSERVICE_H
-
-#include "utilities.h"
-#include <CORBA.h>
-#include <vector>
-#include <string>
-#include "Utils_Mutex.hxx"
-
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
-#include CORBA_CLIENT_HEADER(SALOME_Component)
-//class ServiceUnreachable;
-#include "ServiceUnreachable.hxx"
-
-#if defined NAMINGSERVICE_EXPORTS
-#if defined WIN32
-#define NAMINGSERVICE_EXPORT __declspec( dllexport )
-#else
-#define NAMINGSERVICE_EXPORT
-#endif
-#else
-#if defined WNT
-#define NAMINGSERVICE_EXPORT __declspec( dllimport )
-#else
-#define NAMINGSERVICE_EXPORT
-#endif
-#endif
-
-class NAMINGSERVICE_EXPORT SALOME_NamingService
-{
-public:
- //! default constructor
- SALOME_NamingService();
-
- //! standard constructor
- SALOME_NamingService(CORBA::ORB_ptr orb);
-
- //! standard destructor
- virtual ~SALOME_NamingService();
-
- //! initialize ORB reference after default constructor
- void init_orb(CORBA::ORB_ptr orb);
-
- //! method to create an association in the NamingService between an object reference and a path
- void Register(CORBA::Object_ptr ObjRef, const char* Path)
- throw(ServiceUnreachable);
-
- //! method to get the ObjRef of a symbolic name
- CORBA::Object_ptr Resolve(const char* Path)
- throw( ServiceUnreachable);
-
- //! method to get the ObjRef of a component
- CORBA::Object_ptr ResolveComponent(const char* hostname, const char* containerName, const char* componentName, const int nbproc=0);
-
- //! method to get an ObjRef, given a symbolic name without instance suffix "/Path/Name*.kind"
- CORBA::Object_ptr ResolveFirst(const char* Path)
- throw( ServiceUnreachable);
-
- std::string ContainerName(const char *ContainerName);
- std::string ContainerName(const Engines::MachineParameters& params);
-
- std::string BuildContainerNameForNS(const char *ContainerName, const char *hostname);
- std::string BuildContainerNameForNS(const Engines::MachineParameters& params, const char *hostname);
-
- //! method to research a name from the naming service's current directory
- int Find(const char* name)
- throw(ServiceUnreachable);
-
- //! method to create a directory from the current directory
- bool Create_Directory(const char* Path)
- throw(ServiceUnreachable);
-
- //! method to change the current directory to the directory Path indicated in "in" Parameter
- bool Change_Directory(const char* Path)
- throw(ServiceUnreachable);
-
- //!method to get the current directory
- char* Current_Directory()
- throw(ServiceUnreachable);
-
- //!method to print all the contexts contained from the current directory
- void list()
- throw(ServiceUnreachable);
-
- //!method to get all the contexts contained in the current direcotry
- // Get only objects, isn't iterative
- std::vector<std::string> list_directory()
- throw(ServiceUnreachable);
-
- //!methods that lists all objects RECUSIVELY in the current directory
- std::vector<std::string> list_directory_recurs()
- throw(ServiceUnreachable);
-
- //! method to destroy an association Path-Object Reference
- void Destroy_Name(const char* Path)
- throw(ServiceUnreachable);
-
- //! method to destroy a directory if it is empty
- virtual void Destroy_Directory(const char* Path)
- throw(ServiceUnreachable);
-
- //! method to destroy a directory even if it is not empty
- virtual void Destroy_FullDirectory(const char* Path)
- throw(ServiceUnreachable);
-
- //! get IORstring naming service address
- char * getIORaddr();
-
-protected:
- Utils_Mutex _myMutex;
- CORBA::ORB_ptr _orb;
- CosNaming::NamingContext_var _root_context, _current_context;
-
- //! method called by constructor to initialize _root_context
- void _initialize_root_context();
-
- //! method to decompose a Path : /Kernel/Services/Sessions
- char* _resolve_Path(char* Path);
-
- //! method to decompose a Path : /Kernel/Services/Sessions
- void _result_resolve_Path(const char* Path, int& j,
- char ** resultat_resolve_Path);
-
- //! internal method called by Find to research a name from the naming service's current directory
- void _Find(const char* name, CORBA::Long& occurence_number);
-
- //! internal method to create a context name from a Path
- void _create_context_name_dir(char** resultat_resolve_Path,
- int length_copy,
- CosNaming::Name& _context_name);
-
- //! internal method to create a parse the naming service tree
- void _current_directory(char** result_path,
- int& length_result,
- CosNaming::NamingContext_var context_to_found,
- CORBA::Boolean& _continue);
-
- //! internal method to list all (recursively) the objects contains in absCurDirectory/relativeSubDir.
- void _list_directory_recurs(std::vector<std::string>& myList, const char *relativeSubDir,const char *absCurDirectory);
-
-};
-
-#endif // SALOME_NAMINGSERVICE_H
-
+++ /dev/null
-#! /usr/bin/env python
-#
-# 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-# File : SALOME_NamingServicePy.py
-# Author : Estelle Deville, CEA
-# Module : SALOME
-# $Header$
-
-import sys
-import time
-from omniORB import CORBA
-import CosNaming
-from string import *
-
-from SALOME_utilities import *
-#=============================================================================
-
-class SALOME_NamingServicePy_i:
- _orb = None
- _root_context=None
- _current_context=None
- _obj=None
-
- #-------------------------------------------------------------------------
-
- def __init__(self, orb):
- #MESSAGE ( "SALOME_NamingServicePy_i::__init__" )
- self._orb = orb
- # initialize root context and current context
- ok = 0
- steps = 40
- while steps > 0 and ok == 0:
- try:
- obj =self._orb.resolve_initial_references("NameService")
- self._root_context =obj._narrow(CosNaming.NamingContext)
- self._current_context = self._root_context
-
-
- if self._root_context is None :
- #MESSAGE ( "Name Service Reference is invalid" )
- #sys.exit(1)
- MESSAGE(" Name service not found")
- else:
- ok = 1
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- MESSAGE(" Name service not found")
- time.sleep(0.25)
- steps = steps - 1
- if steps == 0:
- MESSAGE ( "Name Service Reference is invalid" )
- sys.exit(1)
- #-------------------------------------------------------------------------
- def Register(self,ObjRef, Path):
- MESSAGE ( "SALOME_NamingServicePy_i::Register" )
- _not_exist = 0
- path_list = list(Path)
- if path_list[0]=='/':
- self._current_context = self._root_context
- #delete first '/' before split
- Path=Path[1:]
-
- result_resolve_path = split(Path,'/')
- if len(result_resolve_path)>1:
- # A directory is treated (not only an object name)
- # We had to test if the directory where ObjRef should be recorded
- # is already done
- # If not, the new context has to be created
- _context_name = []
- for i in range(len(result_resolve_path)-1):
- _context_name.append(CosNaming.NameComponent(result_resolve_path[i],"dir"))
-
- try:
- obj = self._current_context.resolve(_context_name)
- self._current_context = obj._narrow(CosNaming.NamingContext)
- except CosNaming.NamingContext.NotFound, ex:
- _not_exist = 1
- except CosNaming.NamingContext.InvalidName, ex:
- MESSAGE ( "Register : CosNaming.NamingContext.InvalidName" )
- except CosNaming.NamingContext.CannotProceed, ex:
- MESSAGE ( "Register : CosNaming.NamingContext.CannotProceed" )
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- MESSAGE ( "Register : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
-
- if _not_exist:
- # at least one context of the complete path is not created, we had
- # to create it or them
- _context_name = []
- for i in range(len(result_resolve_path)-1):
- _context_name = [CosNaming.NameComponent(result_resolve_path[i],"dir")]
-
- try:
- obj = self._current_context.resolve(_context_name)
- self._current_context = obj._narrow(CosNaming.NamingContext)
- except CosNaming.NamingContext.NotFound, ex:
- #This context is not created. It will be done
- self._current_context = self._current_context.bind_new_context(_context_name)
-
- #The current directory is now the directory where the object should
- #be recorded
-
- _context_name = [CosNaming.NameComponent(result_resolve_path[len(result_resolve_path)-1],"object")]
- try:
- self._current_context.bind(_context_name,ObjRef)
- except CosNaming.NamingContext.NotFound, ex:
- MESSAGE ( "Register : CosNaming.NamingContext.NotFound" )
- except CosNaming.NamingContext.InvalidName, ex:
- MESSAGE ( "Register : CosNaming.NamingContext.InvalidName" )
- except CosNaming.NamingContext.CannotProceed, ex:
- MESSAGE ( "Register : CosNaming.NamingContext.CannotProceed" )
- except CosNaming.NamingContext.AlreadyBound, ex:
- MESSAGE ( "Register : CosNaming.NamingContext.AlreadyBound, object will be rebind" )
- self._current_context.rebind(_context_name,ObjRef)
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- MESSAGE ( "Register : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
-
-
- #-------------------------------------------------------------------------
- def Resolve(self, Path):
- #MESSAGE ( "SALOME_NamingServicePy_i::Resolve" )
- path_list = list(Path)
- if path_list[0]=='/':
- self._current_context = self._root_context
- #delete first '/' before split
- Path=Path[1:]
-
- result_resolve_path = split(Path,'/')
- _context_name=[]
- for i in range(len(result_resolve_path)-1):
- _context_name.append(CosNaming.NameComponent(result_resolve_path[i],"dir"))
- _context_name.append(CosNaming.NameComponent(result_resolve_path[len(result_resolve_path)-1],"object"))
- try:
- self._obj = self._current_context.resolve(_context_name)
- except CosNaming.NamingContext.NotFound, ex:
- MESSAGE ( "Resolve : CosNaming.NamingContext.NotFound" )
- self._obj = None
- except CosNaming.NamingContext.InvalidName, ex:
- MESSAGE ( "Resolve : CosNaming.NamingContext.InvalidName" )
- self._obj = None
- except CosNaming.NamingContext.CannotProceed, ex:
- MESSAGE ( "Resolve : CosNaming.NamingContext.CannotProceed" )
- self._obj = None
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- MESSAGE ( "Resolve : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
- self._obj = None
- return self._obj
-
-
-
- #-------------------------------------------------------------------------
- def Create_Directory(self,ObjRef, Path):
- MESSAGE ( "SALOME_NamingServicePy_i::Create_Directory" )
- _not_exist = 0
- path_list = list(Path)
- if path_list[0]=='/':
- self._current_context = self._root_context
- #delete first '/' before split
- Path=Path[1:]
-
- result_resolve_path = split(Path,'/')
- _context_name = []
- for i in range(len(result_resolve_path)):
- _context_name[CosNaming.NameComponent(result_resolve_path[i],"dir")]
- try:
- obj = self._current_context.resolve(_context_name)
- self._current_context = obj._narrow(CosNaming.NamingContext)
- except CosNaming.NamingContext.NotFound, ex:
- self._current_context = self._current_context.bind_new_context(_context_name)
- except CosNaming.NamingContext.InvalidName, ex:
- MESSAGE ( "Create_Directory : CosNaming.NamingContext.InvalidName" )
- except CosNaming.NamingContext.CannotProceed, ex:
- MESSAGE ( "Create_Directory : CosNaming.NamingContext.CannotProceed" )
- except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
- MESSAGE ( "Create_Directory : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
-
-
-
-
+++ /dev/null
-#include "SALOME_LoadRateManager.hxx"
-#include "utilities.h"
-#include <iostream>
-
-using namespace std;
-
-string SALOME_LoadRateManager::FindBest(const Engines::MachineList& hosts)
-{
- // for the moment then "maui" will be used for dynamic selection ...
- MESSAGE("SALOME_LoadRateManager::FindBest " << hosts.length());
-
- if (hosts.length() == 0)
- return string("");
-
- return string(hosts[0]);
-}
+++ /dev/null
-#ifndef __SALOME_LOADRATEMANAGER_HXX__
-#define __SALOME_LOADRATEMANAGER_HXX__
-
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
-#include <string>
-
-
-#if defined RESOURCESMANAGER_EXPORTS
-#if defined WIN32
-#define RESOURCESMANAGER_EXPORT __declspec( dllexport )
-#else
-#define RESOURCESMANAGER_EXPORT
-#endif
-#else
-#if defined WNT
-#define RESOURCESMANAGER_EXPORT __declspec( dllimport )
-#else
-#define RESOURCESMANAGER_EXPORT
-#endif
-#endif
-
-class RESOURCESMANAGER_EXPORT SALOME_LoadRateManager
- {
-
- public:
- std::string FindBest(const Engines::MachineList& hosts);
- };
-
-#endif
+++ /dev/null
-// SALOME ResourcesCatalog : implementation of catalog resources parsing (SALOME_ModuleCatalog.idl)
-//
-// 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_ResourcesCatalog_Handler.cxx
-// Author : Estelle Deville
-// Module : SALOME
-//$Header$
-
-#include "SALOME_ResourcesCatalog_Handler.hxx"
-#include <iostream>
-#include <map>
-#include <qdom.h>
-#include "utilities.h"
-
-using namespace std;
-
-//=============================================================================
-/*!
- * Constructor
- * \param listOfResources: map of ParserResourcesType to fill when parsing
- */
-//=============================================================================
-
-SALOME_ResourcesCatalog_Handler::
-SALOME_ResourcesCatalog_Handler(MapOfParserResourcesType& listOfResources):
- _resources_list(listOfResources)
-{
- MESSAGE("SALOME_ResourcesCatalog_Handler creation");
- //XML tags initialisation
- test_machine = "machine";
- test_resources = "resources";
-
- test_hostname = "hostname";
- test_alias = "alias";
- test_protocol = "protocol";
- test_mode = "mode";
- test_user_name = "userName";
- test_appli_path = "appliPath";
- test_modules = "modules";
- test_module_name = "moduleName";
- test_module_path = "modulePath";
- test_pre_req_file_path = "preReqFilePath";
- test_os = "OS";
- test_mem_in_mb = "memInMB";
- test_cpu_freq_mhz = "CPUFreqMHz";
- test_nb_of_nodes = "nbOfNodes";
- test_nb_of_proc_per_node = "nbOfProcPerNode";
-}
-
-//=============================================================================
-/*!
- * Destructor
- */
-//=============================================================================
-
-SALOME_ResourcesCatalog_Handler::~SALOME_ResourcesCatalog_Handler()
-{
- MESSAGE("SALOME_ResourcesCatalog_Handler destruction");
-}
-
-//=============================================================================
-/*!
- * Retrieves DS after the file parse.
- */
-//=============================================================================
-
-const MapOfParserResourcesType&
-SALOME_ResourcesCatalog_Handler::GetResourcesAfterParsing() const
- {
- return _resources_list;
- }
-
-//=============================================================================
-/*!
- * Overload handler function startDocument.
- * Called before an xml file is parsed.
- * Clears the list of resources.
- * \return true (if no error detected...)
- */
-//=============================================================================
-
-bool SALOME_ResourcesCatalog_Handler::startDocument()
-{
- MESSAGE("Begin parse document");
-
- // --- Empty private elements
-
- _resources_list.clear();
- return true;
-}
-
-//=============================================================================
-/*!
- * Overload handler function startElement.
- * \param QString argument by reference (not used here ?)
- * \param QString argument by reference (not used here ?)
- * \param name (not used here ?)
- * \param atts
- * \return true if no error was detected
- */
-//=============================================================================
-
-bool
-SALOME_ResourcesCatalog_Handler::
-startElement( const QString&,
- const QString&,
- const QString& name,
- const QXmlAttributes& attrs )
-{
- for (int i = 0;i < attrs.count();i++)
- {
- QString qName(attrs.localName(i));
- std::string content(attrs.value(i).latin1());
-
- if ((qName.compare(QString(test_hostname)) == 0))
- _resource.DataForSort._hostName = content;
-
- if ((qName.compare(QString(test_alias)) == 0))
- _resource.Alias = content;
-
- if ((qName.compare(QString(test_protocol)) == 0))
- {
- switch (content[0])
- {
-
- case 'r':
- _resource.Protocol = rsh;
- break;
-
- case 's':
- _resource.Protocol = ssh;
- break;
-
- default:
- // If it'not in all theses cases, the protocol is affected to rsh
- _resource.Protocol = rsh;
- break;
- }
- }
-
- if ((qName.compare(QString(test_mode)) == 0))
- {
- switch (content[0])
- {
-
- case 'i':
- _resource.Mode = interactive;
- break;
-
- case 'b':
- _resource.Mode = batch;
- break;
-
- default:
- // If it'not in all theses cases, the mode is affected to interactive
- _resource.Mode = interactive;
- break;
- }
- }
-
- if ((qName.compare(QString(test_user_name)) == 0))
- _resource.UserName = content;
-
- if ((qName.compare(QString(test_appli_path)) == 0))
- _resource.AppliPath = content;
-
- if ((qName.compare(QString(test_module_name)) == 0))
- previous_module_name = content;
-
- if ((qName.compare(QString(test_module_path)) == 0))
- previous_module_path = content;
-
- if ((qName.compare(QString(test_pre_req_file_path)) == 0))
- _resource.PreReqFilePath = content;
-
- if ((qName.compare(QString(test_os)) == 0))
- _resource.OS = content;
-
- if ((qName.compare(QString(test_mem_in_mb)) == 0))
- _resource.DataForSort._memInMB = atoi(content.c_str());
-
- if ((qName.compare(QString(test_cpu_freq_mhz)) == 0))
- _resource.DataForSort._CPUFreqMHz = atoi(content.c_str());
-
- if ((qName.compare(QString(test_nb_of_nodes)) == 0))
- _resource.DataForSort._nbOfNodes = atoi(content.c_str());
-
- if ((qName.compare(QString(test_nb_of_proc_per_node)) == 0))
- _resource.DataForSort._nbOfProcPerNode = atoi(content.c_str());
- }
-
- return true;
-}
-
-//=============================================================================
-/*!
- * Overload handler function endElement.
- * \param QString argument by reference (not used here ?)
- * \param QString argument by reference (not used here ?)
- * \param qName
- * \return true (if no error detected ...)
- */
-//=============================================================================
-
-bool SALOME_ResourcesCatalog_Handler::
-endElement(const QString&,
- const QString&,
- const QString& qName)
-{
- if ((qName.compare(QString(test_modules)) == 0))
- _resource.ModulesPath[previous_module_name] = previous_module_path;
-
- if ((qName.compare(QString(test_machine)) == 0))
- _resources_list[_resource.DataForSort._hostName] = _resource;
-
- return true;
-}
-
-//=============================================================================
-/*!
- * Overload handler function characters.
- * fills the private attribute string 'content'.
- * \param chars
- * \return true (if no error detected ...)
- */
-//=============================================================================
-
-bool SALOME_ResourcesCatalog_Handler::characters(const QString& chars)
-{
- content = (const char *)chars ;
- return true;
-}
-
-//=============================================================================
-/*!
- * Overload handler function endDocument.
- * Called after the document has been parsed.
- * \return true (if no error detected ...)
- */
-//=============================================================================
-
-bool SALOME_ResourcesCatalog_Handler::endDocument()
-{
- for (map<string, ParserResourcesType>::const_iterator iter =
- _resources_list.begin();
- iter != _resources_list.end();
- iter++)
- {
- SCRUTE((*iter).second.Alias);
- SCRUTE((*iter).second.UserName);
- SCRUTE((*iter).second.AppliPath);
- SCRUTE((*iter).second.PreReqFilePath);
- SCRUTE((*iter).second.OS);
- SCRUTE((*iter).second.Protocol);
- SCRUTE((*iter).second.Mode);
- }
-
- MESSAGE("This is the end of document");
- return true;
-}
-
-//=============================================================================
-/*!
- * Overload handler function errorProtocol.
- * \return the error message.
- */
-//=============================================================================
-
-QString SALOME_ResourcesCatalog_Handler::errorProtocol()
-{
- INFOS(" ------------- error protocol !");
- return errorProt;
-}
-
-//=============================================================================
-/*!
- * Overload handler function fatalError.
- * Fills the private string errorProt with details on error.
- * \param exception from parser
- * \return boolean (meaning ?)
- */
-//=============================================================================
-
-bool
-SALOME_ResourcesCatalog_Handler::fatalError
-(const QXmlParseException& exception)
-{
- INFOS(" ------------- fatal error !");
- errorProt += QString( "fatal parsing error: %1 in line %2, column %3\n" )
- .arg( exception.message() )
- .arg( exception.lineNumber() )
- .arg( exception.columnNumber() );
-
- return QXmlDefaultHandler::fatalError( exception );
-}
-
-//=============================================================================
-/*!
- * Fill the document tree in xml file, used to write in an xml file.
- * \param doc document to fill.
- */
-//=============================================================================
-
-void SALOME_ResourcesCatalog_Handler::PrepareDocToXmlFile(QDomDocument& doc)
-{
- QDomElement root = doc.createElement("resources");
- doc.appendChild(root);
-
- for (map<string, ParserResourcesType>::iterator iter =
- _resources_list.begin();
- iter != _resources_list.end();
- iter++)
- {
- QDomElement eltRoot = doc.createElement(test_machine);
- root.appendChild( eltRoot );
- eltRoot.setAttribute((char *)test_hostname, (*iter).first.c_str());
- eltRoot.setAttribute((char *)test_alias, (*iter).second.Alias.c_str());
-
- switch ((*iter).second.Protocol)
- {
-
- case rsh:
- eltRoot.setAttribute((char *)test_protocol, "rsh");
- break;
-
- case ssh:
- eltRoot.setAttribute((char *)test_protocol, "ssh");
- break;
-
- default:
- eltRoot.setAttribute((char *)test_protocol, "rsh");
- }
-
- switch ((*iter).second.Mode)
- {
-
- case interactive:
- eltRoot.setAttribute((char *)test_mode, "interactive");
- break;
-
- case batch:
- eltRoot.setAttribute((char *)test_mode, "batch");
- break;
-
- default:
- eltRoot.setAttribute((char *)test_mode, "interactive");
- }
-
- eltRoot.setAttribute((char *)test_user_name,
- (*iter).second.UserName.c_str());
-
- for (map<string, string>::const_iterator iter2 =
- (*iter).second.ModulesPath.begin();
- iter2 != (*iter).second.ModulesPath.end();
- iter2++)
- {
- QDomElement rootForModulesPaths = doc.createElement(test_modules);
- rootForModulesPaths.setAttribute(test_module_name,
- (*iter2).first.c_str());
- rootForModulesPaths.setAttribute(test_module_path,
- (*iter2).second.c_str());
- eltRoot.appendChild(rootForModulesPaths);
- }
-
- eltRoot.setAttribute(test_pre_req_file_path,
- (*iter).second.PreReqFilePath.c_str());
- eltRoot.setAttribute(test_os, (*iter).second.OS.c_str());
- eltRoot.setAttribute(test_mem_in_mb,
- (*iter).second.DataForSort._memInMB);
- eltRoot.setAttribute(test_cpu_freq_mhz,
- (*iter).second.DataForSort._CPUFreqMHz);
- eltRoot.setAttribute(test_nb_of_nodes,
- (*iter).second.DataForSort._nbOfNodes);
- eltRoot.setAttribute(test_nb_of_proc_per_node,
- (*iter).second.DataForSort._nbOfProcPerNode);
- }
-}
+++ /dev/null
-#include "SALOME_ResourcesCatalog_Parser.hxx"
-#include "utilities.h"
-#include <iostream>
-
-#define NULL_VALUE 0
-
-using namespace std;
-
-unsigned int ResourceDataToSort::_nbOfNodesWanted = NULL_VALUE;
-unsigned int ResourceDataToSort::_nbOfProcPerNodeWanted = NULL_VALUE;
-unsigned int ResourceDataToSort::_CPUFreqMHzWanted = NULL_VALUE;
-unsigned int ResourceDataToSort::_memInMBWanted = NULL_VALUE;
-
-ResourceDataToSort::ResourceDataToSort()
-{}
-
-ResourceDataToSort::ResourceDataToSort(const string& hostname,
- unsigned int nbOfNodes,
- unsigned int nbOfProcPerNode,
- unsigned int CPUFreqMHz,
- unsigned int memInMB):
- _hostName(hostname),
- _nbOfNodes(nbOfNodes),
- _nbOfProcPerNode(nbOfProcPerNode),
- _CPUFreqMHz(CPUFreqMHz),
- _memInMB(memInMB)
-{}
-
-//! Method used by list::sort to sort the resources used in SALOME_ResourcesManager::GetResourcesFitting
-bool ResourceDataToSort::operator< (const ResourceDataToSort& other) const
- {
- unsigned int nbPts = GetNumberOfPoints();
- return nbPts < other.GetNumberOfPoints();
- }
-
-unsigned int ResourceDataToSort::GetNumberOfPoints() const
- {
- unsigned int ret = 0;
- //priority 1 : Nb of nodes
-
- if (_nbOfNodesWanted != NULL_VALUE)
- {
- if (_nbOfNodes == _nbOfNodesWanted)
- ret += 3000;
- else if (_nbOfNodes > _nbOfNodesWanted)
- ret += 2000;
- else
- ret += 1000;
- }
-
- //priority 2 : Nb of proc by node
- if (_nbOfProcPerNodeWanted != NULL_VALUE)
- {
- if (_nbOfProcPerNode == _nbOfProcPerNodeWanted)
- ret += 300;
- else if (_nbOfProcPerNode > _nbOfProcPerNodeWanted)
- ret += 200;
- else
- ret += 100;
- }
-
- //priority 3 : Cpu freq
- if (_CPUFreqMHzWanted != NULL_VALUE)
- {
- if (_CPUFreqMHz == _CPUFreqMHzWanted)
- ret += 30;
- else if (_CPUFreqMHz > _CPUFreqMHzWanted)
- ret += 20;
- else
- ret += 10;
- }
-
- //priority 4 : memory
- if (_memInMBWanted != NULL_VALUE)
- {
- if (_memInMB == _memInMBWanted)
- ret += 3;
- else if (_memInMB > _memInMBWanted)
- ret += 2;
- else
- ret += 1;
- }
-
- return ret;
- }
-
-//! Method used for debug
-void ResourceDataToSort::Print() const
- {
- SCRUTE(_nbOfNodes);
- SCRUTE(_nbOfProcPerNode);
- SCRUTE(_CPUFreqMHz);
- SCRUTE(_memInMB);
- }
-
-void ParserResourcesType::Print()
-{
- MESSAGE("##############*****");
- MESSAGE("HostName : " << DataForSort._hostName);
- MESSAGE("Alias : " << Alias);
- MESSAGE("Protocol : " << Protocol);
- MESSAGE("Mode : " << Mode);
- MESSAGE("UserName : " << UserName);
- MESSAGE("Modules : ");
- int i = 1;
-
- for (std::map<std::string, std::string>::iterator iter = ModulesPath.begin();
- iter != ModulesPath.end();
- iter++)
- {
- MESSAGE("Module " << i++ << " called : " << (*iter).first
- << " with path : " << (*iter).second);
- }
-
- MESSAGE("PreReqFilePath : " << PreReqFilePath);
- MESSAGE("OS : " << OS);
- DataForSort.Print();
-}
+++ /dev/null
-#include "SALOME_ResourcesManager.hxx"
-//#include "SALOME_Container_i.hxx"
-#include "Utils_ExceptHandlers.hxx"
-#include "OpUtil.hxx"
-
-#include <qdom.h>
-
-#include <stdlib.h>
-#ifndef WNT
-#include <unistd.h>
-#else
-#include <io.h>
-#include <process.h>
-#endif
-#include <fstream>
-#include <iostream>
-#include <sstream>
-#include <string.h>
-#include <map>
-#include <list>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "utilities.h"
-
-#define MAX_SIZE_FOR_HOSTNAME 256;
-
-using namespace std;
-
-//=============================================================================
-/*!
- * just for test
- */
-//=============================================================================
-
-SALOME_ResourcesManager::
-SALOME_ResourcesManager(CORBA::ORB_ptr orb,
- const char *xmlFilePath) :
- _path_resources(xmlFilePath)
-{
- _NS = new SALOME_NamingService(orb);
-}
-
-//=============================================================================
-/*!
- * Standard constructor, parse resource file.
- * - if ${APPLI} exists in environment,
- * look for ${HOME}/*{APPLI}/CatalogResources.xml
- * - else look for default:
- * ${KERNEL_ROOT_DIR}/share/salome/resources/CatalogResources.xml
- * - parse XML resource file.
- */
-//=============================================================================
-
-SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb)
-{
- _NS = new SALOME_NamingService(orb);
- _isAppliSalomeDefined = (getenv("APPLI") != 0);
-
- if (_isAppliSalomeDefined)
- {
- _path_resources = getenv("HOME");
- _path_resources += "/";
- _path_resources += getenv("APPLI");
- _path_resources += "/CatalogResources.xml";
- }
-
- else
- {
- _path_resources = getenv("KERNEL_ROOT_DIR");
- _path_resources += "/share/salome/resources/CatalogResources.xml";
- }
-
- ParseXmlFile();
-}
-
-//=============================================================================
-/*!
- * Standard Destructor
- */
-//=============================================================================
-
-SALOME_ResourcesManager::~SALOME_ResourcesManager()
-{
- delete _NS;
-}
-
-//=============================================================================
-/*!
- * get the list of name of ressources fitting for the specified module.
- * If hostname specified, check it is local or known in resources catalog.
- *
- * Else
- * - select first machines with corresponding OS (all machines if
- * parameter OS empty),
- * - then select the sublist of machines on witch the module is known
- * (if the result is empty, that probably means that the inventory of
- * modules is probably not done, so give complete list from previous step)
- */
-//=============================================================================
-
-vector<string>
-SALOME_ResourcesManager::
-GetFittingResources(const Engines::MachineParameters& params,
- const char *moduleName)
-throw(SALOME_Exception)
-{
- MESSAGE("ResourcesManager::GetFittingResources");
- vector <std::string> ret;
-
- // --- To be sure that we search in a correct list.
- ParseXmlFile();
-
- const char *hostname = (const char *)params.hostname;
- MESSAGE("GetFittingResources " << hostname << " " << GetHostname().c_str());
-
- if (hostname[0] != '\0')
- {
- MESSAGE("ResourcesManager::GetFittingResources : hostname specified" );
-
- if ( strcmp(hostname, "localhost") == 0 ||
- strcmp(hostname, GetHostname().c_str()) == 0 )
- {
- MESSAGE("ResourcesManager::GetFittingResources : localhost" );
- ret.push_back(GetHostname().c_str());
- MESSAGE("ResourcesManager::GetFittingResources : " << ret.size());
- }
-
- else if (_resourcesList.find(hostname) != _resourcesList.end())
- {
- // --- params.hostname is in the list of resources so return it.
- ret.push_back(hostname);
- }
-
- else
- {
- // --- user specified an unknown hostame so notify him.
- MESSAGE("ResourcesManager::GetFittingResources : SALOME_Exception");
- throw SALOME_Exception("unknown host");
- }
- }
-
- else
- // --- Search for available resources sorted by priority
- {
- SelectOnlyResourcesWithOS(ret, params.OS);
-
- KeepOnlyResourcesWithModule(ret, moduleName);
-
- if (ret.size() == 0)
- SelectOnlyResourcesWithOS(ret, params.OS);
-
- // --- set wanted parameters
- ResourceDataToSort::_nbOfNodesWanted = params.nb_node;
-
- ResourceDataToSort::_nbOfProcPerNodeWanted = params.nb_proc_per_node;
-
- ResourceDataToSort::_CPUFreqMHzWanted = params.cpu_clock;
-
- ResourceDataToSort::_memInMBWanted = params.mem_mb;
-
- // --- end of set
-
- list<ResourceDataToSort> li;
-
- for (vector<string>::iterator iter = ret.begin();
- iter != ret.end();
- iter++)
- li.push_back(_resourcesList[(*iter)].DataForSort);
-
- li.sort();
-
- unsigned int i = 0;
-
- for (list<ResourceDataToSort>::iterator iter2 = li.begin();
- iter2 != li.end();
- iter2++)
- ret[i++] = (*iter2)._hostName;
- }
-
- MESSAGE("ResourcesManager::GetFittingResources : return" << ret.size());
- return ret;
-}
-
-//=============================================================================
-/*!
- * add an entry in the ressources catalog xml file.
- * Return 0 if OK (KERNEL found in new resources modules) else throw exception
- */
-//=============================================================================
-
-int
-SALOME_ResourcesManager::
-AddResourceInCatalog(const Engines::MachineParameters& paramsOfNewResources,
- const map<string, string>& modulesOnNewResources,
- const char *environPathOfPrerequired,
- const char *alias,
- const char *userName,
- AccessModeType mode,
- AccessProtocolType prot)
-throw(SALOME_Exception)
-{
- map<string, string>::const_iterator iter =
- modulesOnNewResources.find("KERNEL");
-
- if (iter != modulesOnNewResources.end())
- {
- ParserResourcesType newElt;
- newElt.DataForSort._hostName = paramsOfNewResources.hostname;
- newElt.Alias = alias;
- newElt.Protocol = prot;
- newElt.Mode = mode;
- newElt.UserName = userName;
- newElt.ModulesPath = modulesOnNewResources;
- newElt.PreReqFilePath = environPathOfPrerequired;
- newElt.OS = paramsOfNewResources.OS;
- newElt.DataForSort._memInMB = paramsOfNewResources.mem_mb;
- newElt.DataForSort._CPUFreqMHz = paramsOfNewResources.cpu_clock;
- newElt.DataForSort._nbOfNodes = paramsOfNewResources.nb_node;
- newElt.DataForSort._nbOfProcPerNode =
- paramsOfNewResources.nb_proc_per_node;
- _resourcesList[newElt.DataForSort._hostName] = newElt;
- return 0;
- }
-
- else
- throw SALOME_Exception("KERNEL is not present in this resource");
-}
-
-//=============================================================================
-/*!
- * Deletes a resource from the catalog
- */
-//=============================================================================
-
-void SALOME_ResourcesManager::DeleteResourceInCatalog(const char *hostname)
-{
- _resourcesList.erase(hostname);
-}
-
-//=============================================================================
-/*!
- * write the current data in memory in file.
- */
-//=============================================================================
-
-void SALOME_ResourcesManager::WriteInXmlFile()
-{
- QDomDocument doc("ResourcesCatalog");
- SALOME_ResourcesCatalog_Handler* handler =
- new SALOME_ResourcesCatalog_Handler(_resourcesList);
- handler->PrepareDocToXmlFile(doc);
- delete handler;
-
- QFile file( _path_resources );
-
- if ( !file.open( IO_WriteOnly ) )
- INFOS("WRITING ERROR !");
-
- QTextStream ts( &file );
-
- ts << doc.toString();
-
- file.close();
-
- MESSAGE("WRITING DONE!");
-}
-
-//=============================================================================
-/*!
- * parse the data type catalog
- */
-//=============================================================================
-
-const MapOfParserResourcesType& SALOME_ResourcesManager::ParseXmlFile()
-{
- SALOME_ResourcesCatalog_Handler* handler =
- new SALOME_ResourcesCatalog_Handler(_resourcesList);
- QFile xmlFile(_path_resources);
-
- QXmlInputSource source(xmlFile);
-
- QXmlSimpleReader reader;
- reader.setContentHandler( handler );
- reader.setErrorHandler( handler );
- reader.parse( source );
- xmlFile.close();
- delete handler;
- return _resourcesList;
-}
-
-//=============================================================================
-/*!
- * consult the content of the list
- */
-//=============================================================================
-
-const MapOfParserResourcesType& SALOME_ResourcesManager::GetList() const
- {
- return _resourcesList;
- }
-
-
-//=============================================================================
-/*!
- * dynamically obtains the best machines
- */
-//=============================================================================
-
-string
-SALOME_ResourcesManager::FindBest(const Engines::MachineList& listOfMachines)
-{
- return _dynamicResourcesSelecter.FindBest(listOfMachines);
-}
-
-
-//=============================================================================
-/*!
- * This is no longer valid (C++ container are also python containers)
- */
-//=============================================================================
-
-bool isPythonContainer(const char* ContainerName)
-{
- bool ret = false;
- int len = strlen(ContainerName);
-
- if (len >= 2)
- if (strcmp(ContainerName + len - 2, "Py") == 0)
- ret = true;
-
- return ret;
-}
-
-
-//=============================================================================
-/*!
- * Builds the script to be launched
- *
- * If SALOME Application not defined ($APPLI),
- * see BuildTempFileToLaunchRemoteContainer()
- *
- * Else rely on distant configuration. Command is under the form (example):
- * ssh user@machine distantPath/runRemote.sh hostNS portNS \
- * SALOME_Container containerName &"
-
- * - where user is ommited if not specified in CatalogResources,
- * - where distant path is always relative to user@machine $HOME, and
- * equal to $APPLI if not specified in CatalogResources,
- * - where hostNS is the hostname of CORBA naming server (set by scripts to
- * use to launch SALOME and servers in $APPLI: runAppli.sh, runRemote.sh)
- * - where portNS is the port used by CORBA naming server (set by scripts to
- * use to launch SALOME and servers in $APPLI: runAppli.sh, runRemote.sh)
- */
-//=============================================================================
-
-string
-SALOME_ResourcesManager::BuildCommandToLaunchRemoteContainer
-(const string& machine,
- const Engines::MachineParameters& params)
-{
- string command;
-
- if ( ! _isAppliSalomeDefined )
- command = BuildTempFileToLaunchRemoteContainer(machine, params);
-
- else
- {
- const ParserResourcesType& resInfo = _resourcesList[machine];
-
- if (params.isMPI)
- {
- int nbproc;
-
- if ( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
- nbproc = 1;
- else if ( params.nb_node == 0 )
- nbproc = params.nb_proc_per_node;
- else if ( params.nb_proc_per_node == 0 )
- nbproc = params.nb_node;
- else
- nbproc = params.nb_node * params.nb_proc_per_node;
- }
-
- // "ssh user@machine distantPath/runRemote.sh hostNS portNS \
- // SALOME_Container containerName &"
-
- if (resInfo.Protocol == rsh)
- command = "rsh ";
- else if (resInfo.Protocol == ssh)
- command = "ssh ";
- else
- throw SALOME_Exception("Unknown protocol");
-
- if (resInfo.UserName != "")
- {
- command += resInfo.UserName;
- command += "@";
- }
-
- command += machine;
- command += " ";
-
- if (resInfo.AppliPath != "")
- command += resInfo.AppliPath; // path relative to user@machine $HOME
- else
- {
- ASSERT(getenv("APPLI"));
- command += getenv("APPLI"); // path relative to user@machine $HOME
- }
-
- command += "/runRemote.sh ";
-
- ASSERT(getenv("NSHOST"));
- command += getenv("NSHOST"); // hostname of CORBA name server
-
- command += " ";
- ASSERT(getenv("NSPORT"));
- command += getenv("NSPORT"); // port of CORBA name server
-
- command += " SALOME_Container ";
- command += _NS->ContainerName(params);
- command += "&";
-
- MESSAGE("command =" << command);
- }
-
- return command;
-}
-
-
-//=============================================================================
-/*!
- * builds the command to be launched.
- */
-//=============================================================================
-
-string
-SALOME_ResourcesManager::BuildCommandToLaunchLocalContainer
-(const Engines::MachineParameters& params)
-{
- _TmpFileName = "";
- string command;
- int nbproc = 0;
-
- if (params.isMPI)
- {
- command = "mpirun -np ";
-
- if ( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
- nbproc = 1;
- else if ( params.nb_node == 0 )
- nbproc = params.nb_proc_per_node;
- else if ( params.nb_proc_per_node == 0 )
- nbproc = params.nb_node;
- else
- nbproc = params.nb_node * params.nb_proc_per_node;
-
- std::ostringstream o;
-
- o << nbproc << " ";
-
- command += o.str();
-
- if (isPythonContainer(params.container_name))
- command += "pyMPI SALOME_ContainerPy.py ";
- else
- command += "SALOME_MPIContainer ";
- }
-
- else
- {
- if (isPythonContainer(params.container_name))
- command = "SALOME_ContainerPy.py ";
- else
- command = "SALOME_Container ";
- }
-
- command += _NS->ContainerName(params);
- command += " -";
- AddOmninamesParams(command);
- command += " > /tmp/";
- command += _NS->ContainerName(params);
- command += "_";
- command += GetHostname();
- command += "_";
- command += getenv( "USER" ) ;
- command += ".log 2>&1 &" ;
- MESSAGE("Command is ... " << command);
- return command;
-}
-
-
-//=============================================================================
-/*!
- * removes the generated temporary file in case of a remote launch.
- */
-//=============================================================================
-
-void SALOME_ResourcesManager::RmTmpFile()
-{
- if (_TmpFileName != "")
- {
- string command = "rm ";
- command += _TmpFileName;
- char *temp = strdup(command.c_str());
- int lgthTemp = strlen(temp);
- temp[lgthTemp - 3] = '*';
- temp[lgthTemp - 2] = '\0';
- system(temp);
- free(temp);
- }
-}
-
-
-//=============================================================================
-/*!
- * builds the script to be launched
- */
-//=============================================================================
-
-string
-SALOME_ResourcesManager::BuildCommand
-(const string& machine,
- const char *containerName)
-{
- // rsh -n ikkyo /export/home/rahuel/SALOME_ROOT/bin/runSession SALOME_Container -ORBInitRef NameService=corbaname::dm2s0017:1515 &
- const ParserResourcesType& resInfo = _resourcesList[machine];
- bool pyCont = isPythonContainer(containerName);
-
- string command;
-
- if (resInfo.Protocol == rsh)
- command = "rsh -n " ;
- else if (resInfo.Protocol == ssh)
- command = "ssh -f -n ";
- else
- throw SALOME_Exception("Not implemented yet...");
-
- command += machine;
- command += " ";
- string path = (*(resInfo.ModulesPath.find("KERNEL"))).second;
- command += path;
- command += "/bin/salome/";
-
- if ( pyCont )
- command += "SALOME_ContainerPy.py ";
- else
- command += "SALOME_Container ";
-
- command += containerName;
- command += " -";
- AddOmninamesParams(command);
- command += " > /tmp/";
- command += containerName;
- command += "_";
- command += machine;
- command += ".log 2>&1 &" ;
-
- SCRUTE( command );
- return command;
-}
-
-//=============================================================================
-/*!
- * Gives a sublist of machines with matching OS.
- * If parameter OS is empty, gives the complete list of machines
- */
-//=============================================================================
-
-// Warning need an updated parsed list : _resourcesList
-void
-SALOME_ResourcesManager::SelectOnlyResourcesWithOS
-( vector<string>& hosts,
- const char *OS) const
-throw(SALOME_Exception)
-{
- string base(OS);
-
- for (map<string, ParserResourcesType>::const_iterator iter =
- _resourcesList.begin();
- iter != _resourcesList.end();
- iter++)
- {
- if ( (*iter).second.OS == base || base.size() == 0)
- hosts.push_back((*iter).first);
- }
-}
-
-
-//=============================================================================
-/*!
- * Gives a sublist of machines on which the module is known.
- */
-//=============================================================================
-
-//Warning need an updated parsed list : _resourcesList
-void
-SALOME_ResourcesManager::KeepOnlyResourcesWithModule
-( vector<string>& hosts,
- const char *moduleName) const
-throw(SALOME_Exception)
-{
- for (vector<string>::iterator iter = hosts.begin(); iter != hosts.end();)
- {
- MapOfParserResourcesType::const_iterator it = _resourcesList.find(*iter);
- const map<string, string>& mapOfModulesOfCurrentHost =
- (((*it).second).ModulesPath);
-
- if (mapOfModulesOfCurrentHost.find(moduleName) ==
- mapOfModulesOfCurrentHost.end())
- hosts.erase(iter);
- else
- iter++;
- }
-}
-
-
-//=============================================================================
-/*!
- * add to command all options relative to naming service.
- */
-//=============================================================================
-
-void SALOME_ResourcesManager::AddOmninamesParams(string& command) const
- {
- // If env variable OMNIORB_CONFIG is not defined or the file is more complex than one line
- // does not work
- // Even if we use it we have to check if env variable exists
- //string omniORBcfg( getenv( "OMNIORB_CONFIG" ) ) ;
- //ifstream omniORBfile( omniORBcfg.c_str() ) ;
- //char ORBInitRef[11] ;
- //char egal[3] ;
- //char nameservice[132] ;
- //omniORBfile >> ORBInitRef ;
- //command += "ORBInitRef " ;
- //omniORBfile >> egal ;
- //omniORBfile >> nameservice ;
- //omniORBfile.close() ;
- //char * bsn = strchr( nameservice , '\n' ) ;
- //if ( bsn ) {
- //bsn[ 0 ] = '\0' ;
- //}
- //command += nameservice ;
-
- char *iorstr = _NS->getIORaddr();
- command += "ORBInitRef NameService=";
- command += iorstr;
- }
-
-
-//=============================================================================
-/*!
- * add to command all options relative to naming service.
- */
-//=============================================================================
-
-void SALOME_ResourcesManager::AddOmninamesParams(ofstream& fileStream) const
- {
- string omniORBcfg( getenv( "OMNIORB_CONFIG" ) ) ;
- ifstream omniORBfile( omniORBcfg.c_str() ) ;
- char ORBInitRef[11] ;
- char egal[3] ;
- char nameservice[132] ;
- omniORBfile >> ORBInitRef ;
- fileStream << "ORBInitRef ";
- omniORBfile >> egal ;
- omniORBfile >> nameservice ;
- omniORBfile.close() ;
- char * bsn = strchr( nameservice , '\n' ) ;
-
- if ( bsn )
- {
- bsn[ 0 ] = '\0' ;
- }
-
- fileStream << nameservice;
- }
-
-
-//=============================================================================
-/*!
- * generate a file name in /tmp directory
- */
-//=============================================================================
-
-string SALOME_ResourcesManager::BuildTemporaryFileName() const
- {
- //build more complex file name to support multiple salome session
- char *temp = new char[19];
- strcpy(temp, "/tmp/command");
- strcat(temp, "XXXXXX");
-#ifndef WNT
-
- mkstemp(temp);
-#else
-
- char aPID[80];
- itoa(getpid(), aPID, 10);
- strcat(temp, aPID);
-#endif
-
- string command(temp);
- delete [] temp;
- command += ".sh";
- return command;
- }
-
-
-//=============================================================================
-/*!
- * Builds in a temporary file the script to be launched.
- *
- * Used if SALOME Application ($APPLI) is not defined.
- * The command is build with data from CatalogResources, in which every path
- * used on remote computer must be defined.
- */
-//=============================================================================
-
-string
-SALOME_ResourcesManager::BuildTempFileToLaunchRemoteContainer
-(const string& machine,
- const Engines::MachineParameters& params)
-{
- _TmpFileName = BuildTemporaryFileName();
- ofstream tempOutputFile;
- tempOutputFile.open(_TmpFileName.c_str(), ofstream::out );
- const ParserResourcesType& resInfo = _resourcesList[machine];
- tempOutputFile << "#! /bin/sh" << endl;
-
- // --- set env vars
-
- for (map<string, string>::const_iterator iter = resInfo.ModulesPath.begin();
- iter != resInfo.ModulesPath.end();
- iter++)
- {
- string curModulePath((*iter).second);
- tempOutputFile << (*iter).first << "_ROOT_DIR=" << curModulePath << endl;
- tempOutputFile << "export " << (*iter).first << "_ROOT_DIR" << endl;
- tempOutputFile << "LD_LIBRARY_PATH=" << curModulePath
- << "/lib/salome" << ":${LD_LIBRARY_PATH}" << endl;
- tempOutputFile << "PYTHONPATH=" << curModulePath << "/bin/salome:"
- << curModulePath << "/lib/salome:" << curModulePath
- << "/lib/python2.2/site-packages/salome:";
- tempOutputFile << curModulePath
- << "/lib/python2.2/site-packages/salome/shared_modules:${PYTHONPATH}"
- << endl;
- }
-
- tempOutputFile << "export LD_LIBRARY_PATH" << endl;
- tempOutputFile << "export PYTHONPATH" << endl;
- tempOutputFile << "source " << resInfo.PreReqFilePath << endl;
-
- // ! env vars
-
- if (params.isMPI)
- {
- tempOutputFile << "mpirun -np ";
- int nbproc;
-
- if ( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
- nbproc = 1;
- else if ( params.nb_node == 0 )
- nbproc = params.nb_proc_per_node;
- else if ( params.nb_proc_per_node == 0 )
- nbproc = params.nb_node;
- else
- nbproc = params.nb_node * params.nb_proc_per_node;
-
- std::ostringstream o;
-
- tempOutputFile << nbproc << " ";
- }
-
- tempOutputFile << (*(resInfo.ModulesPath.find("KERNEL"))).second
- << "/bin/salome/";
-
- if (params.isMPI)
- {
- if (isPythonContainer(params.container_name))
- tempOutputFile << "pyMPI SALOME_ContainerPy.py ";
- else
- tempOutputFile << "SALOME_MPIContainer ";
- }
-
- else
- {
- if (isPythonContainer(params.container_name))
- tempOutputFile << "SALOME_ContainerPy.py ";
- else
- tempOutputFile << "SALOME_Container ";
- }
-
- tempOutputFile << _NS->ContainerName(params) << " -";
- AddOmninamesParams(tempOutputFile);
- tempOutputFile << " &" << endl;
- tempOutputFile.flush();
- tempOutputFile.close();
- chmod(_TmpFileName.c_str(), 0x1ED);
-
- // --- Build command
-
- string command;
-
- if (resInfo.Protocol == rsh)
- {
- command = "rsh ";
- string commandRcp = "rcp ";
- commandRcp += _TmpFileName;
- commandRcp += " ";
- commandRcp += machine;
- commandRcp += ":";
- commandRcp += _TmpFileName;
- system(commandRcp.c_str());
- }
-
- else if (resInfo.Protocol == ssh)
- command = "ssh ";
- else
- throw SALOME_Exception("Unknown protocol");
-
- command += machine;
- _CommandForRemAccess = command;
- command += " ";
- command += _TmpFileName;
- command += " > ";
- command += "/tmp/";
- command += _NS->ContainerName(params);
- command += "_";
- command += machine;
- command += ".log 2>&1 &";
- SCRUTE(command);
-
- return command;
-
-}
-
-
-
-
+++ /dev/null
-#ifndef __SALOME_RESOURCESMANAGER_HXX__
-#define __SALOME_RESOURCESMANAGER_HXX__
-
-#include "Utils_SALOME_Exception.hxx"
-#include "utilities.h"
-#include <SALOMEconfig.h>
-#include "SALOME_ResourcesCatalog_Handler.hxx"
-#include "SALOME_LoadRateManager.hxx"
-#include "SALOME_NamingService.hxx"
-#include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
-#include <string>
-#include <fstream>
-#include <vector>
-
-
-
-#if defined RESOURCESMANAGER_EXPORTS
-#if defined WIN32
-#define RESOURCESMANAGER_EXPORT __declspec( dllexport )
-#else
-#define RESOURCESMANAGER_EXPORT
-#endif
-#else
-#if defined WNT
-#define RESOURCESMANAGER_EXPORT __declspec( dllimport )
-#else
-#define RESOURCESMANAGER_EXPORT
-#endif
-#endif
-
-// --- WARNING ---
-// The call of BuildTempFileToLaunchRemoteContainer and RmTmpFile must be done
-// in a critical section to be sure to be clean.
-// Only one thread should use the SALOME_ResourcesManager class in a SALOME
-// session.
-
-class RESOURCESMANAGER_EXPORT SALOME_ResourcesManager
- {
-
- public:
-
- SALOME_ResourcesManager(CORBA::ORB_ptr orb, const char *xmlFilePath);
- SALOME_ResourcesManager(CORBA::ORB_ptr orb);
-
- ~SALOME_ResourcesManager();
-
- std::vector<std::string>
- GetFittingResources(const Engines::MachineParameters& params,
- const char *moduleName)
- throw(SALOME_Exception);
-
- std::string FindBest(const Engines::MachineList& listOfMachines);
-
- std::string BuildCommandToLaunchRemoteContainer
- (const std::string& machine,
- const Engines::MachineParameters& params);
-
- std::string BuildCommandToLaunchLocalContainer
- (const Engines::MachineParameters& params);
-
- void RmTmpFile();
-
- std::string BuildCommand(const std::string& machine,
- const char *containerName);
-
- int AddResourceInCatalog
- (const Engines::MachineParameters& paramsOfNewResources,
- const std::map<std::string, std::string>& modulesOnNewResources,
- const char *environPathOfPrerequired,
- const char *alias,
- const char *userName,
- AccessModeType mode,
- AccessProtocolType prot)
- throw(SALOME_Exception);
-
- void DeleteResourceInCatalog(const char *hostname);
-
- void WriteInXmlFile();
-
- const MapOfParserResourcesType& ParseXmlFile();
-
- const MapOfParserResourcesType& GetList() const;
-
- private:
- SALOME_NamingService *_NS;
-
- std::string BuildTempFileToLaunchRemoteContainer
- (const std::string& machine,
- const Engines::MachineParameters& params);
-
- void SelectOnlyResourcesWithOS(std::vector<std::string>& hosts,
- const char *OS) const
- throw(SALOME_Exception);
-
- void KeepOnlyResourcesWithModule(std::vector<std::string>& hosts,
- const char *moduleName) const
- throw(SALOME_Exception);
-
- void AddOmninamesParams(std::string& command) const;
-
- void AddOmninamesParams(std::ofstream& fileStream) const;
-
- std::string BuildTemporaryFileName() const;
-
-
- //! will contain the path to the ressources catalog
- QString _path_resources;
-
- //! attribute that contains current tmp files generated
- std::string _TmpFileName;
-
- //! contains the rsh or ssh command to access directly to machine.
- // Only used by this->RmTmpFile in case of a remote launch.
- std::string _CommandForRemAccess;
-
- //! will contain the informations on the data type catalog(after parsing)
- MapOfParserResourcesType _resourcesList;
-
- SALOME_LoadRateManager _dynamicResourcesSelecter;
-
- //! different behaviour if $APPLI exists (SALOME Application)
- bool _isAppliSalomeDefined;
- };
-
-#endif // RESSOURCESCATALOG_IMPL_H
+++ /dev/null
-#
-# File : Makefile.in
-# Author : Sergey RUIN
-# Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
-
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS = SALOME_DriverPy.py
-
-EXPORT_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
-
-# Libraries targets
-
-LIB = libSalomeDS.la
-LIB_SRC = \
- 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_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
-
-
-# Executables targets
-BIN = SALOMEDS_Server SALOMEDS_Client
-BIN_SRC =
-LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl SALOME_GenericObj.idl
-BIN_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl
-BIN_CLIENT_IDL =
-
-CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS)
-CXXFLAGS+=$(OCC_CXXFLAGS) $(BOOST_CPPFLAGS)
-LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSALOMELocalTrace -lSalomeDSImpl -lSalomeGenericObj $(CAS_LDPATH) -lTKernel -lTKCAF -lTKBO -lTKStdSchema -lSalomeGenericObj -lSalomeLifeCycleCORBA
-
-# _CS_gbo_090604 Ajout Spécifique Calibre 3, pour l'utilisation de la version 5.12 de la bibliothèque OCC.
-# La bibliothèque OCC5.12 a été compilée sur Calibre 3 avec l'extention Xmu (impossible de compiler sans).
-# On est donc obligé ici, pour permettre l'édition de lien avec les bibliothèques OCC, de spécifier le
-# chemin d'accès aux bibliothèques Xmu
-#
-
-# _CS_gbo_090604 Ajout Sp.cifique Calibre 3, pour l'utilisation de la version 5.12 de la biblioth.que OCC.
-# La biblioth.que OCC5.12 a .t. compil.e sur Calibre 3 avec l'extention Xmu (impossible de compiler sans).
-# On est donc oblig. ici, pour permettre l'.dition de lien avec les biblioth.ques OCC, de sp.cifier le
-# chemin d'acc.s aux biblioth.ques Xmu
-#
-LDXMUFLAGS= -L/usr/X11R6/lib -lXmu
-LDFLAGS+=$(LDXMUFLAGS)
-LDFLAGSFORBIN= $(LDFLAGS) -lTKLCAF -lTKMath -lRegistry -lSalomeNotification -lSalomeContainer -lSalomeResourcesManager -lSALOMEBasics
-
-@CONCLUDE@
-
-
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-package SALOMEDS
-
-uses TDocStd,
- TDF,
- TCollection,
- TColStd,
- TDataStd
-
-
-is
-
- class OCAFApplication ;
- class IORAttribute ;
- class PersRefAttribute;
- class SequenceOfRealAttribute;
- class SequenceOfIntegerAttribute;
- class DrawableAttribute;
- class SelectableAttribute;
- class ExpandableAttribute;
- class OpenedAttribute;
- class PixMapAttribute;
- class TextColorAttribute;
- class TextHighlightColorAttribute;
- class LocalIDAttribute;
- class UserIDAttribute;
- class TableOfIntegerAttribute;
- class TableOfRealAttribute;
- class StudyPropertiesAttribute;
- class PythonObjectAttribute;
-
- class DataMapStringLabel instantiates DataMap from TCollection
- (ExtendedString from TColleciton,
- Label from TDF,
- ExtendedString from TCollection);
-
-end SALOMEDS;
+++ /dev/null
-// File : SALOMEDS_AttributeComment.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeComment.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeComment::SALOMEDS_AttributeComment(const Handle(SALOMEDSImpl_AttributeComment)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeComment::SALOMEDS_AttributeComment(SALOMEDS::AttributeComment_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeComment::~SALOMEDS_AttributeComment()
-{}
-
-std::string SALOMEDS_AttributeComment::Value()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeComment)::DownCast(_local_impl)->Value()).ToCString();
- else aValue = SALOMEDS::AttributeComment::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeComment::SetValue(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeComment)::DownCast(_local_impl)->SetValue((char*)value.c_str());
- else SALOMEDS::AttributeComment::_narrow(_corba_impl)->SetValue(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributeComment.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeComment_HeaderFile
-#define SALOMEDS_AttributeComment_HeaderFile
-
-#include "SALOMEDSClient_AttributeComment.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeComment.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeComment: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeComment
-{
-public:
- SALOMEDS_AttributeComment(const Handle(SALOMEDSImpl_AttributeComment)& theAttr);
- SALOMEDS_AttributeComment(SALOMEDS::AttributeComment_ptr theAttr);
- ~SALOMEDS_AttributeComment();
-
- virtual std::string Value();
- virtual void SetValue(const std::string& value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeComment_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeComment_i.hxx"
-
-#include <TCollection_ExtendedString.hxx>
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-char* SALOMEDS_AttributeComment_i::Value()
-{
- SALOMEDS::Locker lock;
-
- CORBA::String_var c_s =
- CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeComment)::DownCast(_impl)->Value()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeComment_i::SetValue(const char* value)
-{
- SALOMEDS::Locker lock;
-
- CheckLocked();
- TCollection_AsciiString aStr((char*)value);
- Handle(SALOMEDSImpl_AttributeComment)::DownCast(_impl)->SetValue(TCollection_ExtendedString(aStr));
-}
+++ /dev/null
-// File : SALOMEDS_AttributeComment_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeComment_i_HeaderFile
-#define SALOMEDS_AttributeComment_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeComment.hxx"
-
-class SALOMEDS_AttributeComment_i: public virtual POA_SALOMEDS::AttributeComment,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
- SALOMEDS_AttributeComment_i(const Handle(SALOMEDSImpl_AttributeComment)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- virtual ~SALOMEDS_AttributeComment_i() {};
-
- char* Value();
- void SetValue(const char* value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeDrawable.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeDrawable.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeDrawable::SALOMEDS_AttributeDrawable(const Handle(SALOMEDSImpl_AttributeDrawable)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeDrawable::SALOMEDS_AttributeDrawable(SALOMEDS::AttributeDrawable_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeDrawable::~SALOMEDS_AttributeDrawable()
-{}
-
-bool SALOMEDS_AttributeDrawable::IsDrawable()
-{
- bool aValue;
- if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_local_impl)->IsDrawable();
- else aValue = SALOMEDS::AttributeDrawable::_narrow(_corba_impl)->IsDrawable();
- return aValue;
-}
-
-void SALOMEDS_AttributeDrawable::SetDrawable(bool value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_local_impl)->SetDrawable((int)value);
- else SALOMEDS::AttributeDrawable::_narrow(_corba_impl)->SetDrawable(value);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeDrawable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeDrawable_HeaderFile
-#define SALOMEDS_AttributeDrawable_HeaderFile
-
-#include "SALOMEDSClient_AttributeDrawable.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeDrawable.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeDrawable: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeDrawable
-{
-public:
- SALOMEDS_AttributeDrawable(const Handle(SALOMEDSImpl_AttributeDrawable)& theAttr);
- SALOMEDS_AttributeDrawable(SALOMEDS::AttributeDrawable_ptr theAttr);
- ~SALOMEDS_AttributeDrawable();
-
- virtual bool IsDrawable();
- virtual void SetDrawable(bool value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeDrawable_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDS_AttributeDrawable_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-CORBA::Boolean SALOMEDS_AttributeDrawable_i::IsDrawable()
-{
- SALOMEDS::Locker lock;
- return (Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_impl)->IsDrawable() == 1);
-}
-
-void SALOMEDS_AttributeDrawable_i::SetDrawable(CORBA::Boolean value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_impl)->SetDrawable(value);
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeDrawable_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeDrawable_i_HeaderFile
-#define SALOMEDS_AttributeDrawable_i_HeaderFile
-
-// IDL headers
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeDrawable.hxx"
-
-class SALOMEDS_AttributeDrawable_i: public virtual POA_SALOMEDS::AttributeDrawable,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeDrawable_i(const Handle(SALOMEDSImpl_AttributeDrawable)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- virtual ~SALOMEDS_AttributeDrawable_i() {};
- CORBA::Boolean IsDrawable();
- void SetDrawable(CORBA::Boolean value);
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeExpandable.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeExpandable.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeExpandable::SALOMEDS_AttributeExpandable(const Handle(SALOMEDSImpl_AttributeExpandable)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeExpandable::SALOMEDS_AttributeExpandable(SALOMEDS::AttributeExpandable_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeExpandable::~SALOMEDS_AttributeExpandable()
-{}
-
-bool SALOMEDS_AttributeExpandable::IsExpandable()
-{
- bool aValue;
- if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_local_impl)->IsExpandable();
- else aValue = SALOMEDS::AttributeExpandable::_narrow(_corba_impl)->IsExpandable();
- return aValue;
-}
-
-void SALOMEDS_AttributeExpandable::SetExpandable(bool value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_local_impl)->SetExpandable((int)value);
- else SALOMEDS::AttributeExpandable::_narrow(_corba_impl)->SetExpandable(value);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeExpandable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeExpandable_HeaderFile
-#define SALOMEDS_AttributeExpandable_HeaderFile
-
-#include "SALOMEDSClient_AttributeExpandable.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeExpandable.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeExpandable: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeExpandable
-{
-public:
- SALOMEDS_AttributeExpandable(const Handle(SALOMEDSImpl_AttributeExpandable)& theAttr);
- SALOMEDS_AttributeExpandable(SALOMEDS::AttributeExpandable_ptr theAttr);
- ~SALOMEDS_AttributeExpandable();
-
- virtual bool IsExpandable();
- virtual void SetExpandable(bool value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeExpandable_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeExpandable_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-CORBA::Boolean SALOMEDS_AttributeExpandable_i::IsExpandable()
-{
- SALOMEDS::Locker lock;
- return (Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_impl)->IsExpandable() == 1);
-}
-
-void SALOMEDS_AttributeExpandable_i::SetExpandable(CORBA::Boolean value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_impl)->SetExpandable(value);
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeExpandable_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDS_AttributeExpandable_i_HeaderFile
-#define SALOMEDS_AttributeExpandable_i_HeaderFile
-
-// IDL headers
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeExpandable.hxx"
-
-class SALOMEDS_AttributeExpandable_i: public virtual POA_SALOMEDS::AttributeExpandable,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeExpandable_i(const Handle(SALOMEDSImpl_AttributeExpandable)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeExpandable_i() {};
- CORBA::Boolean IsExpandable();
- void SetExpandable(CORBA::Boolean value);
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeExternalFileDef.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeExternalFileDef.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeExternalFileDef::SALOMEDS_AttributeExternalFileDef(const Handle(SALOMEDSImpl_AttributeExternalFileDef)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeExternalFileDef::SALOMEDS_AttributeExternalFileDef(SALOMEDS::AttributeExternalFileDef_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeExternalFileDef::~SALOMEDS_AttributeExternalFileDef()
-{}
-
-std::string SALOMEDS_AttributeExternalFileDef::Value()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_local_impl)->Value()).ToCString();
- else aValue = SALOMEDS::AttributeExternalFileDef::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeExternalFileDef::SetValue(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_local_impl)->SetValue((char*)value.c_str());
- else SALOMEDS::AttributeExternalFileDef::_narrow(_corba_impl)->SetValue(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributeExternalFileDef.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeExternalFileDef_HeaderFile
-#define SALOMEDS_AttributeExternalFileDef_HeaderFile
-
-#include "SALOMEDSClient_AttributeExternalFileDef.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeExternalFileDef: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeExternalFileDef
-{
-public:
- SALOMEDS_AttributeExternalFileDef(const Handle(SALOMEDSImpl_AttributeExternalFileDef)& theAttr);
- SALOMEDS_AttributeExternalFileDef(SALOMEDS::AttributeExternalFileDef_ptr theAttr);
- ~SALOMEDS_AttributeExternalFileDef();
-
- virtual std::string Value();
- virtual void SetValue(const std::string& value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeExternalFileDef_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-char* SALOMEDS_AttributeExternalFileDef_i::Value()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var c_s =
- CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_impl)->Value()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeExternalFileDef_i::SetValue(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- CORBA::String_var Str = CORBA::string_dup(value);
- Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
-}
+++ /dev/null
-// File : SALOMEDS_AttributeExternalFileDef_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeExternalFileDef_i_HeaderFile
-#define SALOMEDS_AttributeExternalFileDef_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
-
-class SALOMEDS_AttributeExternalFileDef_i: public virtual POA_SALOMEDS::AttributeExternalFileDef,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeExternalFileDef_i(const Handle(SALOMEDSImpl_AttributeExternalFileDef)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {}
- ~SALOMEDS_AttributeExternalFileDef_i() {};
-
- char* Value();
- void SetValue(const char* value);
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeFileType.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeFileType.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeFileType::SALOMEDS_AttributeFileType(const Handle(SALOMEDSImpl_AttributeFileType)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeFileType::SALOMEDS_AttributeFileType(SALOMEDS::AttributeFileType_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeFileType::~SALOMEDS_AttributeFileType()
-{}
-
-std::string SALOMEDS_AttributeFileType::Value()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_local_impl)->Value()).ToCString();
- else aValue = SALOMEDS::AttributeFileType::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeFileType::SetValue(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_local_impl)->SetValue((char*)value.c_str());
- else SALOMEDS::AttributeFileType::_narrow(_corba_impl)->SetValue(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributeFileType.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeFileType_HeaderFile
-#define SALOMEDS_AttributeFileType_HeaderFile
-
-#include "SALOMEDSClient_AttributeFileType.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeFileType.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeFileType: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeFileType
-{
-public:
- SALOMEDS_AttributeFileType(const Handle(SALOMEDSImpl_AttributeFileType)& theAttr);
- SALOMEDS_AttributeFileType(SALOMEDS::AttributeFileType_ptr theAttr);
- ~SALOMEDS_AttributeFileType();
-
- virtual std::string Value();
- virtual void SetValue(const std::string& value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeFileType_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeFileType_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-char* SALOMEDS_AttributeFileType_i::Value()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var c_s =
- CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_impl)->Value()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeFileType_i::SetValue(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- CORBA::String_var Str = CORBA::string_dup(value);
- Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
-}
+++ /dev/null
-// File : SALOMEDS_AttributeFileType_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeFileType_i_HeaderFile
-#define SALOMEDS_AttributeFileType_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeFileType.hxx"
-
-class SALOMEDS_AttributeFileType_i: public virtual POA_SALOMEDS::AttributeFileType,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeFileType_i(const Handle(SALOMEDSImpl_AttributeFileType)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
- ~SALOMEDS_AttributeFileType_i() {};
-
- char* Value();
- void SetValue(const char* value);
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeFlags.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeFlags.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeFlags::SALOMEDS_AttributeFlags(const Handle(SALOMEDSImpl_AttributeFlags)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeFlags::SALOMEDS_AttributeFlags(SALOMEDS::AttributeFlags_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeFlags::~SALOMEDS_AttributeFlags()
-{}
-
-int SALOMEDS_AttributeFlags::GetFlags()
-{
- int aValue;
- if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_local_impl)->Get();
- else aValue = SALOMEDS::AttributeFlags::_narrow(_corba_impl)->GetFlags();
- return aValue;
-}
-
-void SALOMEDS_AttributeFlags::SetFlags(int theFlags)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_local_impl)->Set(theFlags);
- else SALOMEDS::AttributeFlags::_narrow(_corba_impl)->SetFlags(theFlags);
-}
-
-bool SALOMEDS_AttributeFlags::Get(int theFlag)
-{
- return (GetFlags() & theFlag) ? true : false;
-}
-
-void SALOMEDS_AttributeFlags::Set(int theFlag, bool theValue)
-{
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeFlags) anAttr = Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_local_impl);
- if ( theValue )
- anAttr->Set( anAttr->Get() | theFlag );
- else
- anAttr->Set( anAttr->Get() & ~theFlag );
- }
- else SALOMEDS::AttributeFlags::_narrow(_corba_impl)->Set(theFlag, theValue);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeFlags.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeFlags_HeaderFile
-#define SALOMEDS_AttributeFlags_HeaderFile
-
-#include "SALOMEDSClient_AttributeFlags.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeFlags.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeFlags: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeFlags
-{
-public:
- SALOMEDS_AttributeFlags(const Handle(SALOMEDSImpl_AttributeFlags)& theAttr);
- SALOMEDS_AttributeFlags(SALOMEDS::AttributeFlags_ptr theAttr);
- ~SALOMEDS_AttributeFlags();
-
- virtual int GetFlags();
- virtual void SetFlags(int theFlags);
-
- virtual bool Get(int theFlag);
- virtual void Set(int theFlag, bool theValue);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeFlags_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeFlags_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-/*
- Class : SALOMEDS_AttributeFlags_i
- Description : This class is intended for storing different object attributes that
- have only two states (0 and 1).
-
- Avalable attributes:
-
- IS_VISIBLE - is equal to 1 if object is visible in 3D view (0 - overwise).
- This attribute is valid for active view only.
-*/
-
-
-//=======================================================================
-// function : SALOMEDS_AttributeFlags_i::GetFlags
-// purpose : Get all flags as integer value
-//=======================================================================
-CORBA::Long SALOMEDS_AttributeFlags_i::GetFlags()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl)->Get();
-}
-
-//=======================================================================
-// function : SALOMEDS_AttributeFlags_i::SetFlags
-// purpose : Set all flags as integer value
-//=======================================================================
-void SALOMEDS_AttributeFlags_i::SetFlags( CORBA::Long theFlags )
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl)->Set( theFlags );
-}
-
-//=======================================================================
-// function : SALOMEDS_AttributeFlags_i::Get
-// purpose : Get specified flag
-//=======================================================================
-CORBA::Boolean SALOMEDS_AttributeFlags_i::Get( CORBA::Long theFlag )
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl)->Get() & theFlag ? true : false;
-}
-
-//=======================================================================
-// function : SALOMEDS_AttributeFlags_i::Set
-// purpose : Set/Unset specified flag
-//=======================================================================
-void SALOMEDS_AttributeFlags_i::Set( CORBA::Long theFlag, CORBA::Boolean theValue )
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeFlags) anAttr = Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl);
- if ( theValue )
- anAttr->Set( anAttr->Get() | theFlag );
- else
- anAttr->Set( anAttr->Get() & ~theFlag );
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-// File : SALOMEDS_AttributeFlags_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDS_AttributeFlags_i_HeaderFile
-#define SALOMEDS_AttributeFlags_i_HeaderFile
-
-// IDL headers
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeFlags.hxx"
-
-/*
- Class : SALOMEDS_AttributeFlags_i
- Description : This class is intended for storing different object attributes that
- have only two states (0 and 1).
-
- Avalable attributes:
-
- IS_VISIBLE - is equal to 1 if object is visible in 3D view (0 - overwise).
- This attribute is valid for active view only.
-*/
-
-class SALOMEDS_AttributeFlags_i: public virtual POA_SALOMEDS::AttributeFlags,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeFlags_i( const Handle(SALOMEDSImpl_AttributeFlags)& theAttr, CORBA::ORB_ptr orb )
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- virtual ~SALOMEDS_AttributeFlags_i() {};
-
- CORBA::Long GetFlags();
- void SetFlags( CORBA::Long theFlags );
-
- CORBA::Boolean Get( CORBA::Long theFlag );
- void Set( CORBA::Long theFlag, CORBA::Boolean theValue );
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeGraphic.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeGraphic.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeGraphic::SALOMEDS_AttributeGraphic(const Handle(SALOMEDSImpl_AttributeGraphic)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeGraphic::SALOMEDS_AttributeGraphic(SALOMEDS::AttributeGraphic_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeGraphic::~SALOMEDS_AttributeGraphic()
-{}
-
-
-bool SALOMEDS_AttributeGraphic:: GetVisibility(int theViewId)
-{
- bool aValue;
- if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_local_impl)->GetVisibility(theViewId);
- else aValue = SALOMEDS::AttributeGraphic::_narrow(_corba_impl)->GetVisibility(theViewId);
- return aValue;
-}
-
-void SALOMEDS_AttributeGraphic::SetVisibility(int theViewId, bool theValue)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_local_impl)->SetVisibility(theViewId, theValue);
- else SALOMEDS::AttributeGraphic::_narrow(_corba_impl)->SetVisibility(theViewId, theValue);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeGraphic.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeGraphic_HeaderFile
-#define SALOMEDS_AttributeGraphic_HeaderFile
-
-#include "SALOMEDSClient_AttributeGraphic.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeGraphic.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeGraphic: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeGraphic
-{
-public:
- SALOMEDS_AttributeGraphic(const Handle(SALOMEDSImpl_AttributeGraphic)& theAttr);
- SALOMEDS_AttributeGraphic(SALOMEDS::AttributeGraphic_ptr theAttr);
- ~SALOMEDS_AttributeGraphic();
-
- virtual void SetVisibility(int theViewId, bool theValue);
- virtual bool GetVisibility(int theViewId);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeGraphic_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeGraphic_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-/*
- Class : SALOMEDS_AttributeGraphic_i
- Description : This class is intended for storing information about
- graphic representation of objects in dirrent views
-*/
-
-
-//=======================================================================
-// function : SALOMEDS_AttributeGraphic_i::~SetVisibility
-// purpose : Set visibility of object in given view
-//=======================================================================
-void SALOMEDS_AttributeGraphic_i::SetVisibility( CORBA::Long theViewId,
- CORBA::Boolean theValue )
-{
- SALOMEDS::Locker lock;
- if ( !_impl.IsNull() )
- Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_impl)->SetVisibility( theViewId, theValue );
-}
-
-//=======================================================================
-// function : SALOMEDS_AttributeGraphic_i::~SALOMEDS_AttributeGraphic_i
-// purpose : Get visibility of object in given view
-//=======================================================================
-CORBA::Boolean SALOMEDS_AttributeGraphic_i::GetVisibility( CORBA::Long theViewId )
-{
- SALOMEDS::Locker lock;
- return !_impl.IsNull() ? Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_impl)->GetVisibility( theViewId ) : false;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-// File : SALOMEDS_AttributeFlags_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDS_AttributeGraphic_i_HeaderFile
-#define SALOMEDS_AttributeGraphic_i_HeaderFile
-
-// IDL headers
-
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeGraphic.hxx"
-
-/*
- Class : SALOMEDS_AttributeGraphic_i
- Description : This class is intended for storing information about
- graphic representation of objects in dirrent views
-*/
-
-class SALOMEDS_AttributeGraphic_i: public virtual POA_SALOMEDS::AttributeGraphic,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeGraphic_i( const Handle(SALOMEDSImpl_AttributeGraphic)& theAttr, CORBA::ORB_ptr orb )
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- virtual ~SALOMEDS_AttributeGraphic_i() {};
-
- void SetVisibility( CORBA::Long theViewId,
- CORBA::Boolean theValue );
- CORBA::Boolean GetVisibility( CORBA::Long theViewId );
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeIOR.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeIOR.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeIOR::SALOMEDS_AttributeIOR(const Handle(SALOMEDSImpl_AttributeIOR)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeIOR::SALOMEDS_AttributeIOR(SALOMEDS::AttributeIOR_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeIOR::~SALOMEDS_AttributeIOR()
-{}
-
-std::string SALOMEDS_AttributeIOR::Value()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_local_impl)->Value()).ToCString();
- else aValue = SALOMEDS::AttributeIOR::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeIOR::SetValue(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_local_impl)->SetValue((char*)value.c_str());
- else SALOMEDS::AttributeIOR::_narrow(_corba_impl)->SetValue(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributeIOR.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeIOR_HeaderFile
-#define SALOMEDS_AttributeIOR_HeaderFile
-
-#include "SALOMEDSClient_AttributeIOR.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeIOR: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeIOR
-{
-public:
- SALOMEDS_AttributeIOR(const Handle(SALOMEDSImpl_AttributeIOR)& theAttr);
- SALOMEDS_AttributeIOR(SALOMEDS::AttributeIOR_ptr theAttr);
- ~SALOMEDS_AttributeIOR();
-
- virtual std::string Value();
- virtual void SetValue(const std::string& value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeIOR_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeIOR_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-char* SALOMEDS_AttributeIOR_i::Value()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var c_s =
- CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_impl)->Value()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeIOR_i::SetValue(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- CORBA::String_var Str = CORBA::string_dup(value);
- Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
-}
+++ /dev/null
-// File : SALOMEDS_AttributeIOR_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeIOR_i_HeaderFile
-#define SALOMEDS_AttributeIOR_i_HeaderFile
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-
-class SALOMEDS_AttributeIOR_i: public virtual POA_SALOMEDS::AttributeIOR,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeIOR_i(const Handle(SALOMEDSImpl_AttributeIOR)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeIOR_i() {};
-
- char* Value();
- void SetValue(const char* value);
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeInteger.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeInteger.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeInteger::SALOMEDS_AttributeInteger(const Handle(SALOMEDSImpl_AttributeInteger)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeInteger::SALOMEDS_AttributeInteger(SALOMEDS::AttributeInteger_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeInteger::~SALOMEDS_AttributeInteger()
-{}
-
-int SALOMEDS_AttributeInteger::Value()
-{
- int aValue;
- if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_local_impl)->Value();
- else aValue = SALOMEDS::AttributeInteger::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeInteger::SetValue(int value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_local_impl)->SetValue(value);
- else SALOMEDS::AttributeInteger::_narrow(_corba_impl)->SetValue(value);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeInteger_HeaderFile
-#define SALOMEDS_AttributeInteger_HeaderFile
-
-#include "SALOMEDSClient_AttributeInteger.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeInteger.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeInteger: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeInteger
-{
-public:
- SALOMEDS_AttributeInteger(const Handle(SALOMEDSImpl_AttributeInteger)& theAttr);
- SALOMEDS_AttributeInteger(SALOMEDS::AttributeInteger_ptr theAttr);
- ~SALOMEDS_AttributeInteger();
-
- virtual int Value();
- virtual void SetValue(int value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeInteger_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeInteger_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-CORBA::Long SALOMEDS_AttributeInteger_i::Value()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_impl)->Value();
-}
-
-void SALOMEDS_AttributeInteger_i::SetValue(CORBA::Long value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_impl)->SetValue(value);
-}
-
-
+++ /dev/null
-// File : SALOMEDS_AttributeInteger_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeInteger_i_HeaderFile
-#define SALOMEDS_AttributeInteger_i_HeaderFile
-
-// IDL headers
-
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeInteger.hxx"
-
-class SALOMEDS_AttributeInteger_i: public virtual POA_SALOMEDS::AttributeInteger,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeInteger_i(const Handle(SALOMEDSImpl_AttributeInteger)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeInteger_i() {};
-
- CORBA::Long Value();
- void SetValue(CORBA::Long value);
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeLocalID.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeLocalID.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeLocalID::SALOMEDS_AttributeLocalID(const Handle(SALOMEDSImpl_AttributeLocalID)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeLocalID::SALOMEDS_AttributeLocalID(SALOMEDS::AttributeLocalID_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeLocalID::~SALOMEDS_AttributeLocalID()
-{}
-
-int SALOMEDS_AttributeLocalID::Value()
-{
- int aValue;
- if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_local_impl)->Value();
- else aValue = SALOMEDS::AttributeLocalID::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeLocalID::SetValue(int value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_local_impl)->SetValue(value);
- else SALOMEDS::AttributeLocalID::_narrow(_corba_impl)->SetValue(value);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeLocalID.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeLocalID_HeaderFile
-#define SALOMEDS_AttributeLocalID_HeaderFile
-
-#include "SALOMEDSClient_AttributeLocalID.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeLocalID.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeLocalID: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeLocalID
-{
-public:
- SALOMEDS_AttributeLocalID(const Handle(SALOMEDSImpl_AttributeLocalID)& theAttr);
- SALOMEDS_AttributeLocalID(SALOMEDS::AttributeLocalID_ptr theAttr);
- ~SALOMEDS_AttributeLocalID();
-
- virtual int Value();
- virtual void SetValue(int value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeLocalID_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeLocalID_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-CORBA::Long SALOMEDS_AttributeLocalID_i::Value()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_impl)->Value();
-}
-
-void SALOMEDS_AttributeLocalID_i::SetValue(CORBA::Long value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_impl)->SetValue(value);
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeLocalID_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDS_AttributeLocalID_i_HeaderFile
-#define SALOMEDS_AttributeLocalID_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeLocalID.hxx"
-
-class SALOMEDS_AttributeLocalID_i: public virtual POA_SALOMEDS::AttributeLocalID,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeLocalID_i(const Handle(SALOMEDSImpl_AttributeLocalID)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeLocalID_i() {};
-
- CORBA::Long Value();
- void SetValue(CORBA::Long value);
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeName.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeName.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeName::SALOMEDS_AttributeName(const Handle(SALOMEDSImpl_AttributeName)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeName::SALOMEDS_AttributeName(SALOMEDS::AttributeName_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeName::~SALOMEDS_AttributeName()
-{}
-
-std::string SALOMEDS_AttributeName::Value()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeName)::DownCast(_local_impl)->Value()).ToCString();
- else aValue = SALOMEDS::AttributeName::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeName::SetValue(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeName)::DownCast(_local_impl)->SetValue((char*)value.c_str());
- else SALOMEDS::AttributeName::_narrow(_corba_impl)->SetValue(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributeName.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeName_HeaderFile
-#define SALOMEDS_AttributeName_HeaderFile
-
-#include "SALOMEDSClient_AttributeName.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeName.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeName: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeName
-{
-public:
- SALOMEDS_AttributeName(const Handle(SALOMEDSImpl_AttributeName)& theAttr);
- SALOMEDS_AttributeName(SALOMEDS::AttributeName_ptr theAttr);
- ~SALOMEDS_AttributeName();
-
- virtual std::string Value();
- virtual void SetValue(const std::string& value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeName_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeName_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-char* SALOMEDS_AttributeName_i::Value()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var c_s =
- CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeName)::DownCast(_impl)->Value()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeName_i::SetValue(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeName)::DownCast(_impl)->SetValue(TCollection_ExtendedString((char*)value));
-}
+++ /dev/null
-// File : SALOMEDS_AttributeName_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDS_AttributeName_i_HeaderFile
-#define SALOMEDS_AttributeName_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeName.hxx"
-
-class SALOMEDS_AttributeName_i: public virtual POA_SALOMEDS::AttributeName,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeName_i(const Handle(SALOMEDSImpl_AttributeName)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeName_i() {};
-
- char* Value();
- void SetValue(const char* value);
-
-};
-
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeOpened.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeOpened.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeOpened::SALOMEDS_AttributeOpened(const Handle(SALOMEDSImpl_AttributeOpened)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeOpened::SALOMEDS_AttributeOpened(SALOMEDS::AttributeOpened_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeOpened::~SALOMEDS_AttributeOpened()
-{}
-
-bool SALOMEDS_AttributeOpened::IsOpened()
-{
- bool aValue;
- if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_local_impl)->IsOpened();
- else aValue = SALOMEDS::AttributeOpened::_narrow(_corba_impl)->IsOpened();
- return aValue;
-}
-
-void SALOMEDS_AttributeOpened::SetOpened(bool value)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_local_impl)->SetOpened((int)value);
- else SALOMEDS::AttributeOpened::_narrow(_corba_impl)->SetOpened(value);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeOpened.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeOpened_HeaderFile
-#define SALOMEDS_AttributeOpened_HeaderFile
-
-#include "SALOMEDSClient_AttributeOpened.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeOpened.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeOpened: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeOpened
-{
-public:
- SALOMEDS_AttributeOpened(const Handle(SALOMEDSImpl_AttributeOpened)& theAttr);
- SALOMEDS_AttributeOpened(SALOMEDS::AttributeOpened_ptr theAttr);
- ~SALOMEDS_AttributeOpened();
-
- virtual bool IsOpened();
- virtual void SetOpened(bool value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeOpened_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeOpened_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-CORBA::Boolean SALOMEDS_AttributeOpened_i::IsOpened()
-{
- SALOMEDS::Locker lock;
- return (Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_impl)->IsOpened() == 1);
-}
-
-void SALOMEDS_AttributeOpened_i::SetOpened(CORBA::Boolean value)
-{
- SALOMEDS::Locker lock;
-
- Standard_Integer val = 0;
- if (value != 0) val = 1;
- Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_impl)->SetOpened(val);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeOpened_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDS_AttributeOpened_i_HeaderFile
-#define SALOMEDS_AttributeOpened_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeOpened.hxx"
-
-class SALOMEDS_AttributeOpened_i: public virtual POA_SALOMEDS::AttributeOpened,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeOpened_i(const Handle(SALOMEDSImpl_AttributeOpened)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
- ~SALOMEDS_AttributeOpened_i() {};
-
- CORBA::Boolean IsOpened();
- void SetOpened(CORBA::Boolean value);
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributePersistentRef.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributePersistentRef.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributePersistentRef::SALOMEDS_AttributePersistentRef(const Handle(SALOMEDSImpl_AttributePersistentRef)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributePersistentRef::SALOMEDS_AttributePersistentRef(SALOMEDS::AttributePersistentRef_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributePersistentRef::~SALOMEDS_AttributePersistentRef()
-{}
-
-std::string SALOMEDS_AttributePersistentRef::Value()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_local_impl)->Value()).ToCString();
- else aValue = SALOMEDS::AttributePersistentRef::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributePersistentRef::SetValue(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_local_impl)->SetValue((char*)value.c_str());
- else SALOMEDS::AttributePersistentRef::_narrow(_corba_impl)->SetValue(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributePersistentRef.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributePersistentRef_HeaderFile
-#define SALOMEDS_AttributePersistentRef_HeaderFile
-
-#include "SALOMEDSClient_AttributePersistentRef.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributePersistentRef.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributePersistentRef: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributePersistentRef
-{
-public:
- SALOMEDS_AttributePersistentRef(const Handle(SALOMEDSImpl_AttributePersistentRef)& theAttr);
- SALOMEDS_AttributePersistentRef(SALOMEDS::AttributePersistentRef_ptr theAttr);
- ~SALOMEDS_AttributePersistentRef();
-
- virtual std::string Value();
- virtual void SetValue(const std::string& value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributePersistentRef_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributePersistentRef_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-char* SALOMEDS_AttributePersistentRef_i::Value()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var c_s =
- CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_impl)->Value()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributePersistentRef_i::SetValue(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- CORBA::String_var Str = CORBA::string_dup(value);
- Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
-}
+++ /dev/null
-// File : SALOMEDS_AttributePersistentRef_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributePersistentRef_i_HeaderFile
-#define SALOMEDS_AttributePersistentRef_i_HeaderFile
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributePersistentRef.hxx"
-
-class SALOMEDS_AttributePersistentRef_i: public virtual POA_SALOMEDS::AttributePersistentRef,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributePersistentRef_i(const Handle(SALOMEDSImpl_AttributePersistentRef)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributePersistentRef_i() {};
-
- char* Value();
- void SetValue(const char* value);
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributePixMap.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributePixMap.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributePixMap::SALOMEDS_AttributePixMap(const Handle(SALOMEDSImpl_AttributePixMap)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributePixMap::SALOMEDS_AttributePixMap(SALOMEDS::AttributePixMap_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributePixMap::~SALOMEDS_AttributePixMap()
-{}
-
-bool SALOMEDS_AttributePixMap::HasPixMap()
-{
- bool ret;
- if(_isLocal) ret = Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_local_impl)->HasPixMap();
- else ret = SALOMEDS::AttributePixMap::_narrow(_corba_impl)->HasPixMap();
- return ret;
-}
-
-std::string SALOMEDS_AttributePixMap::GetPixMap()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_local_impl)->GetPixMap()).ToCString();
- else aValue = SALOMEDS::AttributePixMap::_narrow(_corba_impl)->GetPixMap();
- return aValue;
-}
-
-void SALOMEDS_AttributePixMap::SetPixMap(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_local_impl)->SetPixMap((char*)value.c_str());
- else SALOMEDS::AttributePixMap::_narrow(_corba_impl)->SetPixMap(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributePixMap.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributePixMap_HeaderFile
-#define SALOMEDS_AttributePixMap_HeaderFile
-
-#include "SALOMEDSClient_AttributePixMap.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributePixMap.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributePixMap: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributePixMap
-{
-public:
- SALOMEDS_AttributePixMap(const Handle(SALOMEDSImpl_AttributePixMap)& theAttr);
- SALOMEDS_AttributePixMap(SALOMEDS::AttributePixMap_ptr theAttr);
- ~SALOMEDS_AttributePixMap();
-
- virtual bool HasPixMap();
- virtual std::string GetPixMap();
- virtual void SetPixMap(const std::string& value);
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributePixMap_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributePixMap_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_AsciiString.hxx>
-
-using namespace std;
-
-CORBA::Boolean SALOMEDS_AttributePixMap_i::HasPixMap()
-{
- return Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_impl)->HasPixMap();
-}
-
-char* SALOMEDS_AttributePixMap_i::GetPixMap()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var S =
- CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_impl)->GetPixMap()).ToCString());
- return S._retn();
-}
-
-void SALOMEDS_AttributePixMap_i::SetPixMap(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- CORBA::String_var Str = CORBA::string_dup(value);
- Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_impl)->SetPixMap(TCollection_ExtendedString(Str));
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributePixMap_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributePixMap_i_HeaderFile
-#define SALOMEDS_AttributePixMap_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributePixMap.hxx"
-
-class SALOMEDS_AttributePixMap_i: public virtual POA_SALOMEDS::AttributePixMap,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributePixMap_i(const Handle(SALOMEDSImpl_AttributePixMap)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributePixMap_i() {};
-
- CORBA::Boolean HasPixMap();
- char* GetPixMap();
- void SetPixMap(const char* value);
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributePythonObject.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributePythonObject.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributePythonObject::SALOMEDS_AttributePythonObject(const Handle(SALOMEDSImpl_AttributePythonObject)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributePythonObject::SALOMEDS_AttributePythonObject(SALOMEDS::AttributePythonObject_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributePythonObject::~SALOMEDS_AttributePythonObject()
-{}
-
-bool SALOMEDS_AttributePythonObject::IsScript()
-{
- bool ret;
- if(_isLocal) ret = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_local_impl)->IsScript();
- else ret = SALOMEDS::AttributePythonObject::_narrow(_corba_impl)->IsScript();
- return ret;
-}
-
-std::string SALOMEDS_AttributePythonObject::GetObject()
-{
- std::string aValue;
- if(_isLocal)
- aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_local_impl)->GetObject()).ToCString();
- else aValue = SALOMEDS::AttributePythonObject::_narrow(_corba_impl)->GetObject();
- return aValue;
-}
-
-void SALOMEDS_AttributePythonObject::SetObject(const std::string& theSequence, bool IsScript)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_local_impl)->SetObject((char*)theSequence.c_str(), IsScript);
- else SALOMEDS::AttributePythonObject::_narrow(_corba_impl)->SetObject(theSequence.c_str(), IsScript);
-}
+++ /dev/null
-// File : SALOMEDS_AttributePythonObject.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributePythonObject_HeaderFile
-#define SALOMEDS_AttributePythonObject_HeaderFile
-
-#include "SALOMEDSClient_AttributePythonObject.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributePythonObject.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-
-#ifdef GetObject
-#undef GetObject
-#endif
-
-class SALOMEDS_AttributePythonObject: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributePythonObject
-{
-public:
- SALOMEDS_AttributePythonObject(const Handle(SALOMEDSImpl_AttributePythonObject)& theAttr);
- SALOMEDS_AttributePythonObject(SALOMEDS::AttributePythonObject_ptr theAttr);
- ~SALOMEDS_AttributePythonObject();
-
- virtual void SetObject(const std::string& theSequence, bool IsScript);
- virtual std::string GetObject();
- virtual bool IsScript();
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributePythonObject_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributePythonObject_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HArray1OfCharacter.hxx>
-
-using namespace std;
-
-void SALOMEDS_AttributePythonObject_i::SetObject(const char* theSequence, CORBA::Boolean IsScript)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- char *aSeq = CORBA::string_dup(theSequence);
- Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_impl)->SetObject(aSeq, IsScript);
-}
-
-char* SALOMEDS_AttributePythonObject_i::GetObject()
-{
- SALOMEDS::Locker lock;
- char* aSeq = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_impl)->GetObject().ToCString();
- CORBA::String_var aStr = CORBA::string_dup(aSeq);
- return aStr._retn();
-}
-
-CORBA::Boolean SALOMEDS_AttributePythonObject_i::IsScript()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_impl)->IsScript();
-}
-
-
+++ /dev/null
-// File : SALOMEDS_AttributePythonObject_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributePythonObject_i_HeaderFile
-#define SALOMEDS_AttributePythonObject_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributePythonObject.hxx"
-
-class SALOMEDS_AttributePythonObject_i: public virtual POA_SALOMEDS::AttributePythonObject,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributePythonObject_i(const Handle(SALOMEDSImpl_AttributePythonObject)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributePythonObject_i() {};
-
- virtual void SetObject(const char* theSequence, CORBA::Boolean IsScript);
- virtual char* GetObject();
- virtual CORBA::Boolean IsScript();
-
-};
-
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeReal.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeReal.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeReal::SALOMEDS_AttributeReal(const Handle(SALOMEDSImpl_AttributeReal)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeReal::SALOMEDS_AttributeReal(SALOMEDS::AttributeReal_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeReal::~SALOMEDS_AttributeReal()
-{}
-
-double SALOMEDS_AttributeReal::Value()
-{
- double aValue;
- if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeReal)::DownCast(_local_impl)->Value();
- else aValue = SALOMEDS::AttributeReal::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeReal::SetValue(double value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeReal)::DownCast(_local_impl)->SetValue(value);
- else SALOMEDS::AttributeReal::_narrow(_corba_impl)->SetValue(value);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeReal.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeReal_HeaderFile
-#define SALOMEDS_AttributeReal_HeaderFile
-
-#include "SALOMEDSClient_AttributeReal.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeReal.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeReal: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeReal
-{
-public:
- SALOMEDS_AttributeReal(const Handle(SALOMEDSImpl_AttributeReal)& theAttr);
- SALOMEDS_AttributeReal(SALOMEDS::AttributeReal_ptr theAttr);
- ~SALOMEDS_AttributeReal();
-
- virtual double Value();
- virtual void SetValue(double value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeReal_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeReal_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS.hxx"
-#include <sstream>
-
-using namespace std;
-
-CORBA::Double SALOMEDS_AttributeReal_i::Value()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeReal)::DownCast(_impl)->Value();
-}
-
-void SALOMEDS_AttributeReal_i::SetValue(CORBA::Double value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeReal)::DownCast(_impl)->SetValue(value);
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeReal_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeReal_i_HeaderFile
-#define SALOMEDS_AttributeReal_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeReal.hxx"
-
-class SALOMEDS_AttributeReal_i: public virtual POA_SALOMEDS::AttributeReal,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeReal_i(const Handle(SALOMEDSImpl_AttributeReal)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeReal_i() {};
-
- CORBA::Double Value();
- void SetValue(CORBA::Double value);
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeSelectable.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeSelectable.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-SALOMEDS_AttributeSelectable::SALOMEDS_AttributeSelectable(const Handle(SALOMEDSImpl_AttributeSelectable)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeSelectable::SALOMEDS_AttributeSelectable(SALOMEDS::AttributeSelectable_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeSelectable::~SALOMEDS_AttributeSelectable()
-{}
-
-bool SALOMEDS_AttributeSelectable::IsSelectable()
-{
- bool aValue;
- if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_local_impl)->IsSelectable();
- else aValue = SALOMEDS::AttributeSelectable::_narrow(_corba_impl)->IsSelectable();
- return aValue;
-}
-
-void SALOMEDS_AttributeSelectable::SetSelectable(bool value)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_local_impl)->SetSelectable((int)value);
- else SALOMEDS::AttributeSelectable::_narrow(_corba_impl)->SetSelectable(value);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeSelectable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeSelectable_HeaderFile
-#define SALOMEDS_AttributeSelectable_HeaderFile
-
-#include "SALOMEDSClient_AttributeSelectable.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeSelectable.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeSelectable: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeSelectable
-{
-public:
- SALOMEDS_AttributeSelectable(const Handle(SALOMEDSImpl_AttributeSelectable)& theAttr);
- SALOMEDS_AttributeSelectable(SALOMEDS::AttributeSelectable_ptr theAttr);
- ~SALOMEDS_AttributeSelectable();
-
- virtual bool IsSelectable();
- virtual void SetSelectable(bool value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeSelectable_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeSelectable_i.hxx"
-#include "SALOMEDS.hxx"
-
-using namespace std;
-
-CORBA::Boolean SALOMEDS_AttributeSelectable_i::IsSelectable()
-{
- SALOMEDS::Locker lock;
- return (Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_impl)->IsSelectable() == 1);
-}
-
-void SALOMEDS_AttributeSelectable_i::SetSelectable(CORBA::Boolean value)
-{
- SALOMEDS::Locker lock;
- Standard_Integer val = 0;
- if (value != 0) val = 1;
- Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_impl)->SetSelectable(val);
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeSelectable_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeSelectable_i_HeaderFile
-#define SALOMEDS_AttributeSelectable_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeSelectable.hxx"
-
-class SALOMEDS_AttributeSelectable_i: public virtual POA_SALOMEDS::AttributeSelectable,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeSelectable_i(const Handle(SALOMEDSImpl_AttributeSelectable)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeSelectable_i() {};
-
- CORBA::Boolean IsSelectable();
- void SetSelectable(CORBA::Boolean value);
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfInteger.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeSequenceOfInteger.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-
-SALOMEDS_AttributeSequenceOfInteger
-::SALOMEDS_AttributeSequenceOfInteger(const Handle(SALOMEDSImpl_AttributeSequenceOfInteger)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeSequenceOfInteger::SALOMEDS_AttributeSequenceOfInteger(SALOMEDS::AttributeSequenceOfInteger_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeSequenceOfInteger::~SALOMEDS_AttributeSequenceOfInteger()
-{}
-
-void SALOMEDS_AttributeSequenceOfInteger::Assign(const std::vector<int>& other)
-{
- int i, aLength = other.size();
- if(_isLocal) {
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
- for(i = 0; i < aLength; i++) aSeq->Append(other[i]);
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Assign(aSeq);
- }
- else {
- SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = other[i];
- SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Assign(aSeq);
- }
-}
-
-std::vector<int> SALOMEDS_AttributeSequenceOfInteger::CorbaSequence()
-{
- std::vector<int> aVector;
- int i, aLength;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger) aSeqAttr;
- aSeqAttr = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl);
- aLength = aSeqAttr->Length();
- for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
- }
- else {
- SALOMEDS::AttributeSequenceOfInteger_var aSeqAttr = SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl);
- aLength = aSeqAttr->Length();
- for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeSequenceOfInteger::Add(int value)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Add(value);
- else SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Add(value);
-}
-
-void SALOMEDS_AttributeSequenceOfInteger::Remove(int index)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Remove(index);
- else SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Remove(index);
-}
-
-void SALOMEDS_AttributeSequenceOfInteger::ChangeValue(int index, int value)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->ChangeValue(index, value);
- else SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->ChangeValue(index, value);
-}
-
-int SALOMEDS_AttributeSequenceOfInteger::Value(int index)
-{
- int aValue;
- if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Value(index);
- else aValue = SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Value(index);
- return aValue;
-}
-
-int SALOMEDS_AttributeSequenceOfInteger::Length()
-{
- int aValue;
- if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)-> Length();
- else aValue = SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)-> Length();
- return aValue;
-}
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeSequenceOfInteger_HeaderFile
-#define SALOMEDS_AttributeSequenceOfInteger_HeaderFile
-
-#include "SALOMEDSClient_AttributeSequenceOfInteger.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include <vector>
-
-class SALOMEDS_AttributeSequenceOfInteger: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeSequenceOfInteger
-{
-public:
- SALOMEDS_AttributeSequenceOfInteger(const Handle(SALOMEDSImpl_AttributeSequenceOfInteger)& theAttr);
- SALOMEDS_AttributeSequenceOfInteger(SALOMEDS::AttributeSequenceOfInteger_ptr theAttr);
- ~SALOMEDS_AttributeSequenceOfInteger();
-
- virtual void Assign(const std::vector<int>& other);
- virtual std::vector<int> CorbaSequence();
- virtual void Add(int value);
- virtual void Remove(int index);
- virtual void ChangeValue(int index, int value);
- virtual int Value(int index);
- virtual int Length();
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfInteger_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeSequenceOfInteger_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TColStd_HSequenceOfInteger.hxx>
-
-using namespace std;
-
-
-void SALOMEDS_AttributeSequenceOfInteger_i::Assign(const SALOMEDS::LongSeq& other)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(TColStd_HSequenceOfInteger) CasCadeSeq = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < other.length(); i++) {
- CasCadeSeq->Append(other[i]);
- }
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Assign(CasCadeSeq);
-}
-
-SALOMEDS::LongSeq* SALOMEDS_AttributeSequenceOfInteger_i::CorbaSequence()
-{
- SALOMEDS::Locker lock;
- SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger) CasCadeSeq;
- CasCadeSeq = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl);
- CorbaSeq->length(CasCadeSeq->Length());
- for (int i = 0; i < CasCadeSeq->Length(); i++) {
- CorbaSeq[i] = CasCadeSeq->Value(i+1);;
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeSequenceOfInteger_i::Add(CORBA::Long value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Add(value);
-}
-
-void SALOMEDS_AttributeSequenceOfInteger_i::Remove(CORBA::Long index)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Remove(index);
-}
-
-void SALOMEDS_AttributeSequenceOfInteger_i::ChangeValue(CORBA::Long index, CORBA::Long value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->ChangeValue(index, value);
-}
-
-CORBA::Long SALOMEDS_AttributeSequenceOfInteger_i::Value(CORBA::Short index)
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Value(index);
-}
-
-CORBA::Long SALOMEDS_AttributeSequenceOfInteger_i::Length()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Length();
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfInteger_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeSequenceOfInteger_i_HeaderFile
-#define SALOMEDS_AttributeSequenceOfInteger_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
-
-class SALOMEDS_AttributeSequenceOfInteger_i: public virtual POA_SALOMEDS::AttributeSequenceOfInteger,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeSequenceOfInteger_i(const Handle(SALOMEDSImpl_AttributeSequenceOfInteger)& theAttr,CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeSequenceOfInteger_i() {};
-
- void Assign(const SALOMEDS::LongSeq& other);
- SALOMEDS::LongSeq* CorbaSequence();
- void Add(CORBA::Long value);
- void Remove(CORBA::Long index);
- void ChangeValue(CORBA::Long index, CORBA::Long value);
- CORBA::Long Value(CORBA::Short index);
- CORBA::Long Length();
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfReal.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeSequenceOfReal.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfReal.hxx>
-
-SALOMEDS_AttributeSequenceOfReal
-::SALOMEDS_AttributeSequenceOfReal(const Handle(SALOMEDSImpl_AttributeSequenceOfReal)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeSequenceOfReal::SALOMEDS_AttributeSequenceOfReal(SALOMEDS::AttributeSequenceOfReal_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeSequenceOfReal::~SALOMEDS_AttributeSequenceOfReal()
-{}
-
-void SALOMEDS_AttributeSequenceOfReal::Assign(const std::vector<double>& other)
-{
- int i, aLength = other.size();
- if(_isLocal) {
- Handle(TColStd_HSequenceOfReal) aSeq = new TColStd_HSequenceOfReal;
- for(i = 0; i < aLength; i++) aSeq->Append(other[i]);
- Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Assign(aSeq);
- }
- else {
- SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = other[i];
- SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Assign(aSeq);
- }
-}
-
-std::vector<double> SALOMEDS_AttributeSequenceOfReal::CorbaSequence()
-{
- std::vector<double> aVector;
- int i, aLength;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeSequenceOfReal) aSeqAttr;
- aSeqAttr = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl);
- aLength = aSeqAttr->Length();
- for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
- }
- else {
- SALOMEDS::AttributeSequenceOfReal_var aSeqAttr = SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl);
- aLength = aSeqAttr->Length();
- for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeSequenceOfReal::Add(double value)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Add(value);
- else SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Add(value);
-}
-
-void SALOMEDS_AttributeSequenceOfReal::Remove(int index)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Remove(index);
- else SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Remove(index);
-}
-
-void SALOMEDS_AttributeSequenceOfReal::ChangeValue(int index, double value)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->ChangeValue(index, value);
- else SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->ChangeValue(index, value);
-}
-
-double SALOMEDS_AttributeSequenceOfReal::Value(int index)
-{
- double aValue;
- if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Value(index);
- else aValue = SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Value(index);
- return aValue;
-}
-
-int SALOMEDS_AttributeSequenceOfReal::Length()
-{
- int aValue;
- if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)-> Length();
- else aValue = SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)-> Length();
- return aValue;
-}
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfReal.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeSequenceOfReal_HeaderFile
-#define SALOMEDS_AttributeSequenceOfReal_HeaderFile
-
-#include "SALOMEDSClient_AttributeSequenceOfReal.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include <vector>
-
-class SALOMEDS_AttributeSequenceOfReal: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeSequenceOfReal
-{
-public:
- SALOMEDS_AttributeSequenceOfReal(const Handle(SALOMEDSImpl_AttributeSequenceOfReal)& theAttr);
- SALOMEDS_AttributeSequenceOfReal(SALOMEDS::AttributeSequenceOfReal_ptr theAttr);
- ~SALOMEDS_AttributeSequenceOfReal();
-
- virtual void Assign(const std::vector<double>& other);
- virtual std::vector<double> CorbaSequence();
- virtual void Add(double value);
- virtual void Remove(int index);
- virtual void ChangeValue(int index, double value);
- virtual double Value(int index);
- virtual int Length();
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfReal_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeSequenceOfReal_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TColStd_HSequenceOfReal.hxx>
-
-using namespace std;
-
-void SALOMEDS_AttributeSequenceOfReal_i::Assign(const SALOMEDS::DoubleSeq& other)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(TColStd_HSequenceOfReal) CasCadeSeq = new TColStd_HSequenceOfReal;
- for (int i = 0; i < other.length(); i++) {
- CasCadeSeq->Append(other[i]);
- }
- Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Assign(CasCadeSeq);
-}
-
-SALOMEDS::DoubleSeq* SALOMEDS_AttributeSequenceOfReal_i::CorbaSequence()
-{
- SALOMEDS::Locker lock;
- SALOMEDS::DoubleSeq_var CorbaSeq = new SALOMEDS::DoubleSeq;
- Handle(SALOMEDSImpl_AttributeSequenceOfReal) CasCadeSeq = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl);
- CorbaSeq->length(CasCadeSeq->Length());
- for (int i = 0; i < CasCadeSeq->Length(); i++) {
- CorbaSeq[i] = CasCadeSeq->Value(i+1);;
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeSequenceOfReal_i::Add(CORBA::Double value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Add(value);
-}
-
-void SALOMEDS_AttributeSequenceOfReal_i::Remove(CORBA::Long index)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Remove(index);
-}
-
-void SALOMEDS_AttributeSequenceOfReal_i::ChangeValue(CORBA::Long index, CORBA::Double value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->ChangeValue(index, value);
-}
-
-CORBA::Double SALOMEDS_AttributeSequenceOfReal_i::Value(CORBA::Short index)
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Value(index);
-}
-
-CORBA::Long SALOMEDS_AttributeSequenceOfReal_i::Length()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Length();
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeSequenceOfSequenceOfReal_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeSequenceOfSequenceOfReal_i_HeaderFile
-#define SALOMEDS_AttributeSequenceOfSequenceOfReal_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
-
-class SALOMEDS_AttributeSequenceOfReal_i: public virtual POA_SALOMEDS::AttributeSequenceOfReal,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeSequenceOfReal_i(const Handle(SALOMEDSImpl_AttributeSequenceOfReal)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeSequenceOfReal_i() {};
-
- void Assign(const SALOMEDS::DoubleSeq& other);
- SALOMEDS::DoubleSeq* CorbaSequence();
- void Add(CORBA::Double value);
- void Remove(CORBA::Long index);
- void ChangeValue(CORBA::Long index, CORBA::Double value);
- CORBA::Double Value(CORBA::Short index);
- CORBA::Long Length();
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeStudyProperties.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeStudyProperties.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-
-SALOMEDS_AttributeStudyProperties::SALOMEDS_AttributeStudyProperties
- (const Handle(SALOMEDSImpl_AttributeStudyProperties)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeStudyProperties::SALOMEDS_AttributeStudyProperties
- (SALOMEDS::AttributeStudyProperties_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeStudyProperties::~SALOMEDS_AttributeStudyProperties()
-{
-}
-
-void SALOMEDS_AttributeStudyProperties::SetUserName(const std::string& theName)
-{
- if (_isLocal) {
- Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
- anImpl->ChangeCreatorName((char*)theName.c_str());
- } else
- SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetUserName(theName.c_str());
-}
-
-std::string SALOMEDS_AttributeStudyProperties::GetUserName()
-{
- std::string aName;
- if (_isLocal) {
- TCollection_ExtendedString S =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->GetCreatorName();
- aName = TCollection_AsciiString(S).ToCString();
- }
-#ifndef WNT
- else aName = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetUserName();
-#else
- else aName = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetUserNameA();
-#endif
- return aName;
-}
-
-void SALOMEDS_AttributeStudyProperties::SetCreationDate
- (int theMinute, int theHour, int theDay, int theMonth, int theYear)
-{
- if (_isLocal) {
- Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
- int aTmp;
- if (anImpl->GetCreationDate(aTmp, aTmp, aTmp, aTmp, aTmp)) return;
- TCollection_ExtendedString S;
- anImpl->SetModification(S, theMinute, theHour, theDay, theMonth, theYear);
- } else {
- SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetCreationDate(theMinute,
- theHour,
- theDay,
- theMonth,
- theYear);
- }
-}
-
-bool SALOMEDS_AttributeStudyProperties::GetCreationDate(int& theMinute,
- int& theHour,
- int& theDay,
- int& theMonth,
- int& theYear)
-{
- bool ret;
- if (_isLocal) {
- ret = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast
- (_local_impl)->GetCreationDate(theMinute, theHour, theDay, theMonth, theYear);
- } else {
- CORBA::Long aMinute, anHour, aDay, aMonth, anYear;
- ret = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetCreationDate(aMinute,
- anHour,
- aDay,
- aMonth,
- anYear);
- theMinute = (int)aMinute;
- theHour = (int)anHour;
- theDay = (int)aDay;
- theMonth = (int)aMonth;
- theYear = (int)anYear;
- }
- return ret;
-}
-
-void SALOMEDS_AttributeStudyProperties::SetCreationMode(const std::string& theMode)
-{
- if (_isLocal) {
- if (theMode == "from scratch")
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetCreationMode(1);
- else if (theMode == "copy from")
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetCreationMode(2);
- else //Not defined
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetCreationMode(0);
- }
- else SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetCreationMode(theMode.c_str());
-}
-
-std::string SALOMEDS_AttributeStudyProperties::GetCreationMode()
-{
- std::string aMode;
- if (_isLocal) {
- int mode = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->GetCreationMode();
- if (mode == 1) aMode = "from scratch";
- if (mode == 2) aMode = "copy from";
- }
- else
- aMode = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetCreationMode();
- return aMode;
-}
-
-void SALOMEDS_AttributeStudyProperties::SetModified(int theModified)
-{
- if (_isLocal)
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetModified(theModified);
- else
- SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetModified(theModified);
-}
-
-bool SALOMEDS_AttributeStudyProperties::IsModified()
-{
- bool ret;
- if (_isLocal)
- ret = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->IsModified();
- else
- ret = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->IsModified();
- return ret;
-}
-
-int SALOMEDS_AttributeStudyProperties::GetModified()
-{
- int isModified;
- if (_isLocal)
- isModified = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->GetModified();
- else
- isModified = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetModified();
- return isModified;
-}
-
-void SALOMEDS_AttributeStudyProperties::SetLocked(bool theLocked)
-{
- if (_isLocal)
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetLocked(theLocked);
- else
- SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetLocked(theLocked);
-}
-
-bool SALOMEDS_AttributeStudyProperties::IsLocked()
-{
- bool ret;
- if (_isLocal)
- ret = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->IsLocked();
- else
- ret = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->IsLocked();
- return ret;
-}
-
-void SALOMEDS_AttributeStudyProperties::SetModification(const std::string& theName,
- int theMinute,
- int theHour,
- int theDay,
- int theMonth,
- int theYear)
-{
- if (_isLocal) {
- Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
- anImpl->SetModification((char*)theName.c_str(), theMinute, theHour, theDay, theMonth, theYear);
- } else
- SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetModification(theName.c_str(),
- theMinute,
- theHour,
- theDay,
- theMonth,
- theYear);
-}
-
-void SALOMEDS_AttributeStudyProperties::GetModificationsList(std::vector<std::string>& theNames,
- std::vector<int>& theMinutes,
- std::vector<int>& theHours,
- std::vector<int>& theDays,
- std::vector<int>& theMonths,
- std::vector<int>& theYears,
- bool theWithCreator)
-{
- int i, aLength;
-
- if (_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aNames;
- Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
- Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
- anImpl->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
- aLength = aNames->Length();
- i = ((theWithCreator) ? 1 : 2);
- for (; i <= aLength; i++) {
- theNames.push_back(TCollection_AsciiString(aNames->Value(i)).ToCString());
- theMinutes.push_back(aMinutes->Value(i));
- theHours.push_back(aHours->Value(i));
- theDays.push_back(aDays->Value(i));
- theMonths.push_back(aMonths->Value(i));
- theYears.push_back(aYears->Value(i));
- }
- } else {
- SALOMEDS::StringSeq_var aNames;
- SALOMEDS::LongSeq_var aMinutes, aHours, aDays, aMonths, aYears;
- SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetModificationsList(aNames.out(),
- aMinutes.out(),
- aHours.out(),
- aDays.out(),
- aMonths.out(),
- aYears.out(),
- theWithCreator);
- aLength = aNames->length();
- for (i = 0; i<aLength; i++) {
- theNames.push_back(aNames[i].in());
- theMinutes.push_back(aMinutes[i]);
- theHours.push_back(aHours[i]);
- theDays.push_back(aDays[i]);
- theMonths.push_back(aMonths[i]);
- theYears.push_back(aYears[i]);
- }
- }
-}
+++ /dev/null
-// File : SALOMEDS_AttributeStudyProperties.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeStudyProperties_HeaderFile
-#define SALOMEDS_AttributeStudyProperties_HeaderFile
-
-#include <vector>
-#include <string>
-
-#include "SALOMEDSClient_AttributeStudyProperties.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#ifdef GetUserName
-#undef GetUserName
-#endif
-
-class Standard_EXPORT SALOMEDS_AttributeStudyProperties: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeStudyProperties
-{
-public:
-
- SALOMEDS_AttributeStudyProperties(const Handle(SALOMEDSImpl_AttributeStudyProperties)& theAttr);
- SALOMEDS_AttributeStudyProperties(SALOMEDS::AttributeStudyProperties_ptr theAttr);
- ~SALOMEDS_AttributeStudyProperties();
-
- virtual void SetUserName(const std::string& theName);
- virtual std::string GetUserName();
- virtual void SetCreationDate(int theMinute, int theHour, int theDay, int theMonth, int theYear);
- virtual bool GetCreationDate(int& theMinute, int& theHour, int& theDay, int& theMonth, int& theYear);
- virtual void SetCreationMode(const std::string& theMode);
- virtual std::string GetCreationMode();
- virtual void SetModified(int theModified);
- virtual bool IsModified();
- virtual int GetModified();
- virtual void SetLocked(bool theLocked);
- virtual bool IsLocked();
- virtual void SetModification(const std::string& theName,
- int theMinute,
- int theHour,
- int theDay,
- int theMonth,
- int theYear);
- virtual void GetModificationsList(std::vector<std::string>& theNames,
- std::vector<int>& theMinutes,
- std::vector<int>& theHours,
- std::vector<int>& theDays,
- std::vector<int>& theMonths,
- std::vector<int>& theYears,
- bool theWithCreator);
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeStudyProperties_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeStudyProperties_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TColStd_HSequenceOfExtendedString.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-#define CREATION_MODE_NOTDEFINED 0
-#define CREATION_MODE_SCRATCH 1
-#define CREATION_MODE_COPY 2
-
-void SALOMEDS_AttributeStudyProperties_i::SetUserName(const char* theName)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->ChangeCreatorName((char*)theName);
-}
-
-char* SALOMEDS_AttributeStudyProperties_i::GetUserName()
-{
- SALOMEDS::Locker lock;
- TCollection_ExtendedString S =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->GetCreatorName();
- CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeStudyProperties_i::SetCreationDate(CORBA::Long theMinute,
- CORBA::Long theHour,
- CORBA::Long theDay,
- CORBA::Long theMonth,
- CORBA::Long theYear)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
- int aTmp;
- if (aProp->GetCreationDate(aTmp, aTmp, aTmp, aTmp, aTmp)) return;
- TCollection_ExtendedString S;
- aProp->SetModification(S, theMinute, theHour, theDay, theMonth, theYear);
-}
-
-CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::GetCreationDate(CORBA::Long& theMinute,
- CORBA::Long& theHour,
- CORBA::Long& theDay,
- CORBA::Long& theMonth,
- CORBA::Long& theYear)
-{
- SALOMEDS::Locker lock;
- Standard_Integer aMinute;
- Standard_Integer aHour;
- Standard_Integer aDay;
- Standard_Integer aMonth;
- Standard_Integer aYear;
- if (Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast
- (_impl)->GetCreationDate(aMinute, aHour, aDay, aMonth, aYear)) {
- theMinute = aMinute;
- theHour = aHour;
- theDay = aDay;
- theMonth = aMonth;
- theYear = aYear;
- return Standard_True;
- }
- return Standard_False;
-}
-
-void SALOMEDS_AttributeStudyProperties_i::SetCreationMode(const char* theMode)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
- if (strcmp(theMode,"from scratch")==0) aProp->SetCreationMode(CREATION_MODE_SCRATCH);
- else if (strcmp(theMode,"copy from")==0) aProp->SetCreationMode(CREATION_MODE_COPY);
- else aProp->SetCreationMode(CREATION_MODE_NOTDEFINED);
-}
-
-char* SALOMEDS_AttributeStudyProperties_i::GetCreationMode()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var c_s;
- switch (Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->GetCreationMode()) {
- case CREATION_MODE_SCRATCH: c_s = "from scratch"; break;
- case CREATION_MODE_COPY: c_s = "copy from"; break;
- default: c_s = "";
- }
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeStudyProperties_i::SetModified(CORBA::Long theModified)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->SetModified(theModified);
-}
-
-CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::IsModified()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->IsModified();
-}
-
-CORBA::Long SALOMEDS_AttributeStudyProperties_i::GetModified()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->GetModified();
-}
-
-void SALOMEDS_AttributeStudyProperties_i::SetLocked(CORBA::Boolean theLocked)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->SetLocked(theLocked);
-}
-
-CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::IsLocked()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->IsLocked();
-}
-
-void SALOMEDS_AttributeStudyProperties_i::SetModification(const char* theName,
- CORBA::Long theMinute,
- CORBA::Long theHour,
- CORBA::Long theDay,
- CORBA::Long theMonth,
- CORBA::Long theYear)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
- aProp->SetModification((char*)theName, (int)theMinute, (int)theHour,
- (int)theDay, (int)theMonth, (int)theYear);
-}
-
-void SALOMEDS_AttributeStudyProperties_i::GetModificationsList(SALOMEDS::StringSeq_out theNames,
- SALOMEDS::LongSeq_out theMinutes,
- SALOMEDS::LongSeq_out theHours,
- SALOMEDS::LongSeq_out theDays,
- SALOMEDS::LongSeq_out theMonths,
- SALOMEDS::LongSeq_out theYears,
- CORBA::Boolean theWithCreator)
-{
- SALOMEDS::Locker lock;
- Handle(TColStd_HSequenceOfExtendedString) aNames;
- Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
- aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
- int aLength = aNames->Length();
- int aRetLength = aLength - ((theWithCreator) ? 0 : 1);
- theNames = new SALOMEDS::StringSeq;
- theMinutes = new SALOMEDS::LongSeq;
- theHours = new SALOMEDS::LongSeq;
- theDays = new SALOMEDS::LongSeq;
- theMonths = new SALOMEDS::LongSeq;
- theYears = new SALOMEDS::LongSeq;
- theNames->length(aRetLength);
- theMinutes->length(aRetLength);
- theHours->length(aRetLength);
- theDays->length(aRetLength);
- theMonths->length(aRetLength);
- theYears->length(aRetLength);
- int a = 0, ind = ((theWithCreator) ? 1 : 2);
- for (; ind <= aLength; a++, ind++) {
- (*theNames)[a] = CORBA::string_dup(TCollection_AsciiString(aNames->Value(ind)).ToCString());
- (*theMinutes)[a] = aMinutes->Value(ind);
- (*theHours)[a] = aHours->Value(ind);
- (*theDays)[a] = aDays->Value(ind);
- (*theMonths)[a] = aMonths->Value(ind);
- (*theYears)[a] = aYears->Value(ind);
- }
-}
+++ /dev/null
-// File : SALOMEDS_AttributeStudyProperties_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeStudyProperties_i_HeaderFile
-#define SALOMEDS_AttributeStudyProperties_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-
-class SALOMEDS_AttributeStudyProperties_i: public virtual POA_SALOMEDS::AttributeStudyProperties,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeStudyProperties_i(const Handle(SALOMEDSImpl_AttributeStudyProperties)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeStudyProperties_i() {};
-
- virtual void SetUserName(const char* theName);
- virtual char* GetUserName() ;
- virtual void SetCreationDate(CORBA::Long theMinute, CORBA::Long theHour, CORBA::Long theDay, CORBA::Long theMonth, CORBA::Long theYear);
- virtual CORBA::Boolean GetCreationDate(CORBA::Long& theMinute, CORBA::Long& theHour, CORBA::Long& theDay, CORBA::Long& theMonth, CORBA::Long& theYear);
- virtual void SetCreationMode(const char* theMode);
- virtual char* GetCreationMode();
- virtual void SetModified(CORBA::Long theModified);
- virtual CORBA::Boolean IsModified();
- virtual CORBA::Long GetModified();
- virtual void SetLocked(CORBA::Boolean theLocked);
- virtual CORBA::Boolean IsLocked();
- virtual void SetModification(const char* theName,
- CORBA::Long theMinute,
- CORBA::Long theHour,
- CORBA::Long theDay,
- CORBA::Long theMonth,
- CORBA::Long theYear);
- virtual void GetModificationsList(SALOMEDS::StringSeq_out theNames,
- SALOMEDS::LongSeq_out theMinutes,
- SALOMEDS::LongSeq_out theHours,
- SALOMEDS::LongSeq_out theDays,
- SALOMEDS::LongSeq_out theMonths,
- SALOMEDS::LongSeq_out theYears,
- CORBA::Boolean theWithCreator);
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfInteger.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeTableOfInteger.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-
-
-SALOMEDS_AttributeTableOfInteger
-::SALOMEDS_AttributeTableOfInteger(const Handle(SALOMEDSImpl_AttributeTableOfInteger)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTableOfInteger::SALOMEDS_AttributeTableOfInteger(SALOMEDS::AttributeTableOfInteger_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTableOfInteger::~SALOMEDS_AttributeTableOfInteger()
-{}
-
-
-void SALOMEDS_AttributeTableOfInteger::SetTitle(const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetTitle((char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetTitle(theTitle.c_str());
-}
-
-std::string SALOMEDS_AttributeTableOfInteger::GetTitle()
-{
- std::string aStr;
- if(_isLocal)
- aStr = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetTitle()).ToCString();
- else aStr = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetTitle();
- return aStr;
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetRowTitle(int theIndex, const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowTitle(theIndex,
- (char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowTitle(theIndex, theTitle.c_str());
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetRowTitles(const std::vector<std::string>& theTitles)
-{
- CheckLocked();
- int aLength = theTitles.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowTitles(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = theTitles[i].c_str();
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowTitles(aSeq);
- }
-
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfInteger::GetRowTitles()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetRowTitles();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString((aSeq->Value(i))).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRowTitles();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetColumnTitle(int theIndex, const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal)
- Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetColumnTitle(theIndex,
- (char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetColumnTitle(theIndex, theTitle.c_str());
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetColumnTitles(const std::vector<std::string>& theTitles)
-{
- CheckLocked();
- int aLength = theTitles.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetColumnTitles(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = theTitles[i].c_str();
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetColumnTitles(aSeq);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfInteger::GetColumnTitles()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetColumnTitles();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetColumnTitles();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetRowUnit(int theIndex, const std::string& theUnit)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowUnit(theIndex,
- (char*)theUnit.c_str());
- else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowUnit(theIndex, theUnit.c_str());
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetRowUnits(const std::vector<std::string>& theUnits)
-{
- CheckLocked();
- int aLength = theUnits.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theUnits[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowUnits(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theUnits[i].c_str();
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowUnits(aSeq);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfInteger::GetRowUnits()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetRowUnits();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRowUnits();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-int SALOMEDS_AttributeTableOfInteger::GetNbRows()
-{
- int aNb;
- if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetNbRows();
- else aNb = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetNbRows();
- return aNb;
-}
-
-int SALOMEDS_AttributeTableOfInteger::GetNbColumns()
-{
- int aNb;
- if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetNbColumns();
- else aNb = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetNbColumns();
- return aNb;
-
-}
-
-void SALOMEDS_AttributeTableOfInteger::AddRow(const std::vector<int>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
- try {
- aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->AddRow(aSeq);
- }
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetRow(int theRow, const std::vector<int>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
- try {
- aTable->SetRowData(theRow, aRow);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRow(theRow, aSeq);
- }
-}
-
-std::vector<int> SALOMEDS_AttributeTableOfInteger::GetRow(int theRow)
-{
- std::vector<int> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfInteger) aRow;
- aRow = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetRowData(theRow);
- aLength = aRow->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(aRow->Value(i));
- }
- else {
- SALOMEDS::LongSeq_var aRow = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRow(theRow);
- for(i = 0; i < aLength; i++) aVector.push_back(aRow[i]);
- }
-
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfInteger::AddColumn(const std::vector<int>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
- try {
- aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::LongSeq_var aColumn = new SALOMEDS::LongSeq();
- aColumn->length(aLength);
- for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->AddColumn(aColumn);
- }
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetColumn(int theColumn, const std::vector<int>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
- try {
- aTable->SetRowData(theColumn, aColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::LongSeq_var aColumn = new SALOMEDS::LongSeq();
- aColumn->length(aLength);
- for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRow(theColumn, aColumn);
- }
-}
-
-std::vector<int> SALOMEDS_AttributeTableOfInteger::GetColumn(int theColumn)
-{
- std::vector<int> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfInteger) aColumn;
- aColumn = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetColumnData(theColumn);
- aLength = aColumn->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(aColumn->Value(i));
- }
- else {
- SALOMEDS::LongSeq_var aColumn = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetColumn(theColumn);
- for(i = 0; i < aLength; i++) aVector.push_back(aColumn[i]);
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfInteger::PutValue(int theValue, int theRow, int theColumn)
-{
- CheckLocked();
- if(_isLocal) {
- try {
- Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->PutValue(theValue, theRow, theColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
- }
- }
- else {
- SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->PutValue(theValue, theRow, theColumn);
- }
-}
-
-bool SALOMEDS_AttributeTableOfInteger::HasValue(int theRow, int theColumn)
-{
- bool ret;
- if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->HasValue(theRow, theColumn);
- else ret = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->HasValue(theRow, theColumn);
- return ret;
-}
-
-int SALOMEDS_AttributeTableOfInteger::GetValue(int theRow, int theColumn)
-{
- int aValue;
- if(_isLocal) {
- try {
- aValue = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetValue(theRow, theColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
- }
- }
- else {
- aValue = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetValue(theRow, theColumn);
- }
- return aValue;
-}
-
-std::vector<int> SALOMEDS_AttributeTableOfInteger::GetRowSetIndices(int theRow)
-{
- std::vector<int> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfInteger) aSet;
- aSet = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetSetRowIndices(theRow);
- aLength = aSet->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(aSet->Value(i));
- }
- else {
- SALOMEDS::LongSeq_var aSet = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRowSetIndices(theRow);
- for(i = 0; i < aLength; i++) aVector.push_back(aSet[i]);
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfInteger::SetNbColumns(int theNbColumns)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetNbColumns(theNbColumns);
- else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetNbColumns(theNbColumns);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTableOfInteger_HeaderFile
-#define SALOMEDS_AttributeTableOfInteger_HeaderFile
-
-#include "SALOMEDSClient_AttributeTableOfInteger.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include <vector>
-
-class SALOMEDS_AttributeTableOfInteger: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTableOfInteger
-{
-public:
- SALOMEDS_AttributeTableOfInteger(const Handle(SALOMEDSImpl_AttributeTableOfInteger)& theAttr);
- SALOMEDS_AttributeTableOfInteger(SALOMEDS::AttributeTableOfInteger_ptr theAttr);
- ~SALOMEDS_AttributeTableOfInteger();
-
- virtual void SetTitle(const std::string& theTitle);
- virtual std::string GetTitle();
- virtual void SetRowTitle(int theIndex, const std::string& theTitle);
- virtual void SetRowTitles(const std::vector<std::string>& theTitles);
- virtual std::vector<std::string> GetRowTitles();
- virtual void SetColumnTitle(int theIndex, const std::string& theTitle);
- virtual void SetColumnTitles(const std::vector<std::string>& theTitles);
- virtual std::vector<std::string> GetColumnTitles();
-
- virtual void SetRowUnit(int theIndex, const std::string& theUnit);
- virtual void SetRowUnits(const std::vector<std::string>& theUnits);
- virtual std::vector<std::string> GetRowUnits();
-
- virtual int GetNbRows();
- virtual int GetNbColumns();
- virtual void AddRow(const std::vector<int>& theData);
- virtual void SetRow(int theRow, const std::vector<int>& theData);
- virtual std::vector<int> GetRow(int theRow);
- virtual void AddColumn(const std::vector<int>& theData);
- virtual void SetColumn(int theColumn, const std::vector<int>& theData);
- virtual std::vector<int> GetColumn(int theColumn);
- virtual void PutValue(int theValue, int theRow, int theColumn);
- virtual bool HasValue(int theRow, int theColumn);
- virtual int GetValue(int theRow, int theColumn);
-
- virtual std::vector<int> GetRowSetIndices(int theRow);
- virtual void SetNbColumns(int theNbColumns);
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfInteger_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeTableOfInteger_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include <TColStd_HSequenceOfInteger.hxx>
-#include <Standard_Failure.hxx>
-#include <Standard_ErrorHandler.hxx>
-#include "Utils_ExceptHandlers.hxx"
-
-#include <stdexcept>
-#include <strstream>
-#include <string>
-
-using namespace std;
-
-UNEXPECT_CATCH(ATI_IncorrectIndex, SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
-UNEXPECT_CATCH(ATI_IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength);
-
-void SALOMEDS_AttributeTableOfInteger_i::SetTitle(const char* theTitle)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- CORBA::String_var aStr = CORBA::string_dup(theTitle);
- Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->SetTitle(TCollection_ExtendedString(aStr));
-}
-
-char* SALOMEDS_AttributeTableOfInteger_i::GetTitle()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(aTable->GetTitle()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetRowTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATI_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
- aTable->SetRowTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetRowTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATI_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theTitles.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- for (int i = 0; i < theTitles.length(); i++) {
- SetRowTitle(i + 1, theTitles[i]);
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowTitles()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
- aTitles->length(aTable->GetNbRows());
- for(int i = 0; i < aTitles->length(); i++)
- aTitles[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowTitle(i + 1)).ToCString());
- return aTitles._retn();
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATI_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
- CORBA::String_var aStr = CORBA::string_dup(theTitle);
- aTable->SetColumnTitle(theIndex, TCollection_ExtendedString(aStr));
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theTitles.length() != aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- for (int i = 0; i < theTitles.length(); i++) {
- aTable->SetColumnTitle(i + 1, (char*)theTitles[i].in());
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetColumnTitles()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
- aTitles->length(aTable->GetNbColumns());
- for(int i = 0; i < aTitles->length(); i++)
- aTitles[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetColumnTitle(i + 1)).ToCString());
- return aTitles._retn();
-}
-
-//Units support
-void SALOMEDS_AttributeTableOfInteger_i::SetRowUnit(CORBA::Long theIndex, const char* theUnit)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATI_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
- aTable->SetRowUnit(theIndex, TCollection_ExtendedString((char*)theUnit));
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetRowUnits(const SALOMEDS::StringSeq& theUnits)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATI_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theUnits.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- for (int i = 0; i < theUnits.length(); i++) {
- aTable->SetRowUnit(i + 1, (char*)theUnits[i].in());
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowUnits()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- SALOMEDS::StringSeq_var aUnits = new SALOMEDS::StringSeq;
- aUnits->length(aTable->GetNbRows());
- for(int i = 0; i < aUnits->length(); i++)
- aUnits[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowUnit(i + 1)).ToCString());
- return aUnits._retn();
-}
-
-CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetNbRows()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->GetNbRows();
-}
-
-CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetNbColumns()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->GetNbColumns();
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::AddRow(const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
- try {
- aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetRow(CORBA::Long theRow, const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
- try {
- aTable->SetRowData(theRow, aRow);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
-}
-
-SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetRow(CORBA::Long theRow)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
-
- SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
- Handle(TColStd_HSequenceOfInteger) aRow = aTable->GetRowData(theRow);
- CorbaSeq->length(aRow->Length());
- for (int i = 0; i < aRow->Length(); i++) {
- CorbaSeq[i] = aRow->Value(i + 1);
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::AddColumn(const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
- try {
- aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetColumn(CORBA::Long theColumn, const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
- for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
- try {
- aTable->SetColumnData(theColumn, aColumn);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
- }
-}
-
-SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetColumn(CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theColumn <= 0 || theColumn > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
-
- SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
- Handle(TColStd_HSequenceOfInteger) aColumn = aTable->GetColumnData(theColumn);
- CorbaSeq->length(aColumn->Length());
- for (int i = 0; i < aColumn->Length(); i++) {
- CorbaSeq[i] = aColumn->Value(i + 1);
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::PutValue(CORBA::Long theValue, CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- try {
- aTable->PutValue(theValue, theRow, theColumn);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
- }
-}
-
-CORBA::Boolean SALOMEDS_AttributeTableOfInteger_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn)
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->HasValue(theRow, theColumn);
-}
-
-CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetValue(CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATI_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- if (theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
-
- CORBA::Long aValue;
- try {
- aValue = aTable->GetValue(theRow, theColumn);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
- }
- return aValue;
-}
-
-SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowSetIndices(CORBA::Long theRow)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- if(theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
-
- SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
- Handle(TColStd_HSequenceOfInteger) aSeq = aTable->GetSetRowIndices(theRow);
- CorbaSeq->length(aSeq->Length());
- for (int i = 0; i < aSeq->Length(); i++) {
- CorbaSeq[i] = aSeq->Value(i + 1);
- }
- return CorbaSeq._retn();
-}
-
-
-void SALOMEDS_AttributeTableOfInteger_i::SetNbColumns(CORBA::Long theNbColumns)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
- aTable->SetNbColumns(theNbColumns);
-}
-
-bool SALOMEDS_AttributeTableOfInteger_i::ReadFromFile(const SALOMEDS::TMPFile& theStream)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- istrstream aStream((char*)&theStream[0], theStream.length());
- return aTable->RestoreFromString(aStream);
-}
-
-SALOMEDS::TMPFile* SALOMEDS_AttributeTableOfInteger_i::SaveToFile()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
-
- ostrstream ostr;
- string aString;
- aTable->ConvertToString(ostr);
-
- aString = ostr.rdbuf()->str();
-
- char* aBuffer = (char*)CORBA::string_dup(aString.c_str());
- int aBufferSize = strlen((char*)aBuffer);
-
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer;
-
- SALOMEDS::TMPFile_var aStreamFile = new SALOMEDS::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1);
-
- return aStreamFile._retn();
-}
-
-
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfInteger_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTableOfInteger_i_HeaderFile
-#define SALOMEDS_AttributeTableOfInteger_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
-
-class SALOMEDS_AttributeTableOfInteger_i: public virtual POA_SALOMEDS::AttributeTableOfInteger,
- public virtual SALOMEDS_GenericAttribute_i
-{
-
-public:
-
- SALOMEDS_AttributeTableOfInteger_i(const Handle(SALOMEDSImpl_AttributeTableOfInteger)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeTableOfInteger_i() {};
-
- virtual void SetTitle(const char* theTitle);
- virtual char* GetTitle();
- virtual void SetRowTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual void SetRowTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetRowTitles();
- virtual void SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual void SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetColumnTitles();
-
- virtual void SetRowUnit(CORBA::Long theIndex, const char* theUnit)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual void SetRowUnits(const SALOMEDS::StringSeq& theUnits)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetRowUnits();
-
- virtual CORBA::Long GetNbRows();
- virtual CORBA::Long GetNbColumns();
- virtual void AddRow(const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength);
- virtual void SetRow(CORBA::Long theRow, const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual SALOMEDS::LongSeq* GetRow(CORBA::Long theRow)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual void AddColumn(const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength);
- virtual void SetColumn(CORBA::Long theColumn, const SALOMEDS::LongSeq& theData)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual SALOMEDS::LongSeq* GetColumn(CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual void PutValue(CORBA::Long theValue, CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
- virtual CORBA::Boolean HasValue(CORBA::Long theRow, CORBA::Long theColumn);
- virtual CORBA::Long GetValue(CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
-
- virtual SALOMEDS::LongSeq* GetRowSetIndices(CORBA::Long theRow);
- virtual void SetNbColumns(CORBA::Long theNbColumns);
-
- virtual bool ReadFromFile(const SALOMEDS::TMPFile& theStream);
- virtual SALOMEDS::TMPFile* SaveToFile();
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfReal.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeTableOfReal.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-#include <TColStd_HSequenceOfReal.hxx>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-
-
-SALOMEDS_AttributeTableOfReal
-::SALOMEDS_AttributeTableOfReal(const Handle(SALOMEDSImpl_AttributeTableOfReal)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTableOfReal::SALOMEDS_AttributeTableOfReal(SALOMEDS::AttributeTableOfReal_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTableOfReal::~SALOMEDS_AttributeTableOfReal()
-{}
-
-
-void SALOMEDS_AttributeTableOfReal::SetTitle(const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetTitle((char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetTitle(theTitle.c_str());
-}
-
-std::string SALOMEDS_AttributeTableOfReal::GetTitle()
-{
- std::string aStr;
- if(_isLocal)
- aStr = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetTitle()).ToCString();
- else aStr = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetTitle();
- return aStr;
-}
-
-void SALOMEDS_AttributeTableOfReal::SetRowTitle(int theIndex, const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowTitle(theIndex,
- (char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowTitle(theIndex, theTitle.c_str());
-}
-
-void SALOMEDS_AttributeTableOfReal::SetRowTitles(const std::vector<std::string>& theTitles)
-{
- CheckLocked();
- int aLength = theTitles.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowTitles(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowTitles(aSeq);
- }
-
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfReal::GetRowTitles()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetRowTitles();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRowTitles();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfReal::SetColumnTitle(int theIndex, const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetColumnTitle(theIndex,
- (char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetColumnTitle(theIndex, theTitle.c_str());
-}
-
-void SALOMEDS_AttributeTableOfReal::SetColumnTitles(const std::vector<std::string>& theTitles)
-{
- CheckLocked();
- int aLength = theTitles.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetColumnTitles(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetColumnTitles(aSeq);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfReal::GetColumnTitles()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetColumnTitles();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetColumnTitles();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfReal::SetRowUnit(int theIndex, const std::string& theUnit)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowUnit(theIndex,
- (char*)theUnit.c_str());
- else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowUnit(theIndex, theUnit.c_str());
-}
-
-void SALOMEDS_AttributeTableOfReal::SetRowUnits(const std::vector<std::string>& theUnits)
-{
- CheckLocked();
- int aLength = theUnits.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theUnits[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowUnits(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theUnits[i].c_str();
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowUnits(aSeq);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfReal::GetRowUnits()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetRowUnits();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRowUnits();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back(TCollection_AsciiString((char*)aSeq[i].in()).ToCString());
- }
- return aVector;
-}
-
-int SALOMEDS_AttributeTableOfReal::GetNbRows()
-{
- int aNb;
- if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetNbRows();
- else aNb = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetNbRows();
- return aNb;
-}
-
-int SALOMEDS_AttributeTableOfReal::GetNbColumns()
-{
- int aNb;
- if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetNbColumns();
- else aNb = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetNbColumns();
- return aNb;
-
-}
-
-void SALOMEDS_AttributeTableOfReal::AddRow(const std::vector<double>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
- for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
- try {
- aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->AddRow(aSeq);
- }
-}
-
-void SALOMEDS_AttributeTableOfReal::SetRow(int theRow, const std::vector<double>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
- for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
- try {
- aTable->SetRowData(theRow, aRow);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRow(theRow, aSeq);
- }
-}
-
-std::vector<double> SALOMEDS_AttributeTableOfReal::GetRow(int theRow)
-{
- std::vector<double> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfReal) aRow;
- aRow = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetRowData(theRow);
- aLength = aRow->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(aRow->Value(i));
- }
- else {
- SALOMEDS::DoubleSeq_var aRow = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRow(theRow);
- for(i = 0; i < aLength; i++) aVector.push_back(aRow[i]);
- }
-
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfReal::AddColumn(const std::vector<double>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
- for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
- try {
- aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::DoubleSeq_var aColumn = new SALOMEDS::DoubleSeq();
- aColumn->length(aLength);
- for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->AddColumn(aColumn);
- }
-}
-
-void SALOMEDS_AttributeTableOfReal::SetColumn(int theColumn, const std::vector<double>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
- for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
- try {
- aTable->SetRowData(theColumn, aColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::DoubleSeq_var aColumn = new SALOMEDS::DoubleSeq();
- aColumn->length(aLength);
- for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRow(theColumn, aColumn);
- }
-}
-
-std::vector<double> SALOMEDS_AttributeTableOfReal::GetColumn(int theColumn)
-{
- std::vector<double> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfReal) aColumn;
- aColumn = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetColumnData(theColumn);
- aLength = aColumn->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(aColumn->Value(i));
- }
- else {
- SALOMEDS::DoubleSeq_var aColumn = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetColumn(theColumn);
- for(i = 0; i < aLength; i++) aVector.push_back(aColumn[i]);
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfReal::PutValue(double theValue, int theRow, int theColumn)
-{
- CheckLocked();
- if(_isLocal) {
- try {
- Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->PutValue(theValue, theRow, theColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
- }
- }
- else {
- SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->PutValue(theValue, theRow, theColumn);
- }
-}
-
-bool SALOMEDS_AttributeTableOfReal::HasValue(int theRow, int theColumn)
-{
- bool ret;
- if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->HasValue(theRow, theColumn);
- else ret = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->HasValue(theRow, theColumn);
- return ret;
-}
-
-double SALOMEDS_AttributeTableOfReal::GetValue(int theRow, int theColumn)
-{
- double aValue;
- if(_isLocal) {
- try {
- aValue = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetValue(theRow, theColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
- }
- }
- else {
- aValue = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetValue(theRow, theColumn);
- }
- return aValue;
-}
-
-std::vector<int> SALOMEDS_AttributeTableOfReal::GetRowSetIndices(int theRow)
-{
- std::vector<int> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfInteger) aSet;
- aSet = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetSetRowIndices(theRow);
- aLength = aSet->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(aSet->Value(i));
- }
- else {
- SALOMEDS::LongSeq_var aSet = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRowSetIndices(theRow);
- for(i = 0; i < aLength; i++) aVector.push_back(aSet[i]);
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfReal::SetNbColumns(int theNbColumns)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetNbColumns(theNbColumns);
- else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetNbColumns(theNbColumns);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfReal.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTableOfReal_HeaderFile
-#define SALOMEDS_AttributeTableOfReal_HeaderFile
-
-#include "SALOMEDSClient_AttributeTableOfReal.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include <vector>
-
-class SALOMEDS_AttributeTableOfReal: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTableOfReal
-{
-public:
- SALOMEDS_AttributeTableOfReal(const Handle(SALOMEDSImpl_AttributeTableOfReal)& theAttr);
- SALOMEDS_AttributeTableOfReal(SALOMEDS::AttributeTableOfReal_ptr theAttr);
- ~SALOMEDS_AttributeTableOfReal();
-
- virtual void SetTitle(const std::string& theTitle);
- virtual std::string GetTitle();
- virtual void SetRowTitle(int theIndex, const std::string& theTitle);
- virtual void SetRowTitles(const std::vector<std::string>& theTitles);
- virtual std::vector<std::string> GetRowTitles();
- virtual void SetColumnTitle(int theIndex, const std::string& theTitle);
- virtual void SetColumnTitles(const std::vector<std::string>& theTitles);
- virtual std::vector<std::string> GetColumnTitles();
-
- virtual void SetRowUnit(int theIndex, const std::string& theUnit);
- virtual void SetRowUnits(const std::vector<std::string>& theUnits);
- virtual std::vector<std::string> GetRowUnits();
-
- virtual int GetNbRows();
- virtual int GetNbColumns();
- virtual void AddRow(const std::vector<double>& theData);
- virtual void SetRow(int theRow, const std::vector<double>& theData);
- virtual std::vector<double> GetRow(int theRow);
- virtual void AddColumn(const std::vector<double>& theData);
- virtual void SetColumn(int theColumn, const std::vector<double>& theData);
- virtual std::vector<double> GetColumn(int theColumn);
- virtual void PutValue(double theValue, int theRow, int theColumn);
- virtual bool HasValue(int theRow, int theColumn);
- virtual double GetValue(int theRow, int theColumn);
-
- virtual std::vector<int> GetRowSetIndices(int theRow);
- virtual void SetNbColumns(int theNbColumns);
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfReal_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeTableOfReal_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include <TColStd_HSequenceOfReal.hxx>
-#include <Standard_Failure.hxx>
-#include <Standard_ErrorHandler.hxx>
-
-#include <strstream>
-#include <string>
-
-using namespace std;
-
-#include "Utils_ExceptHandlers.hxx"
-UNEXPECT_CATCH(ATR_IncorrectIndex, SALOMEDS::AttributeTableOfReal::IncorrectIndex);
-UNEXPECT_CATCH(ATR_IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength);
-
-void SALOMEDS_AttributeTableOfReal_i::SetTitle(const char* theTitle)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- CORBA::String_var aStr = CORBA::string_dup(theTitle);
- aTable->SetTitle(TCollection_ExtendedString(aStr));
-}
-
-char* SALOMEDS_AttributeTableOfReal_i::GetTitle()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(aTable->GetTitle()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetRowTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATR_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
- aTable->SetRowTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetRowTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATR_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theTitles.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
- for (int i = 0; i < theTitles.length(); i++) {
- aTable->SetRowTitle(i + 1, (char*)theTitles[i].in());
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetRowTitles()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
- aTitles->length(aTable->GetNbRows());
- for(int i = 0; i < aTitles->length(); i++)
- aTitles[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowTitle(i + 1)).ToCString());
- return aTitles._retn();
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATR_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
- CORBA::String_var aStr = CORBA::string_dup(theTitle);
- aTable->SetColumnTitle(theIndex, TCollection_ExtendedString(aStr));
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theTitles.length() != aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
- for (int i = 0; i < theTitles.length(); i++) {
- aTable->SetColumnTitle(i + 1, (char*)theTitles[i].in());
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetColumnTitles()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
- aTitles->length(aTable->GetNbColumns());
- for(int i = 0; i < aTitles->length(); i++)
- aTitles[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetColumnTitle(i + 1)).ToCString());
- return aTitles._retn();
-}
-
-//Units support
-void SALOMEDS_AttributeTableOfReal_i::SetRowUnit(CORBA::Long theIndex, const char* theUnit)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATR_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
- aTable->SetRowUnit(theIndex, TCollection_ExtendedString((char*)theUnit));
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetRowUnits(const SALOMEDS::StringSeq& theUnits)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch (ATR_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theUnits.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
- for (int i = 0; i < theUnits.length(); i++) {
- aTable->SetRowUnit(i + 1, (char*)theUnits[i].in());
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetRowUnits()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- SALOMEDS::StringSeq_var aUnits = new SALOMEDS::StringSeq;
- aUnits->length(aTable->GetNbRows());
- for(int i = 0; i < aUnits->length(); i++)
- aUnits[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowUnit(i + 1)).ToCString());
- return aUnits._retn();
-}
-
-
-CORBA::Long SALOMEDS_AttributeTableOfReal_i::GetNbRows()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl)->GetNbRows();
-}
-
-CORBA::Long SALOMEDS_AttributeTableOfReal_i::GetNbColumns()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl)->GetNbColumns();
-}
-
-void SALOMEDS_AttributeTableOfReal_i::AddRow(const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
- for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
- aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetRow(CORBA::Long theRow, const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
- for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
- aTable->SetRowData(theRow, aRow);
-}
-
-SALOMEDS::DoubleSeq* SALOMEDS_AttributeTableOfReal_i::GetRow(CORBA::Long theRow)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
-
- SALOMEDS::DoubleSeq_var CorbaSeq = new SALOMEDS::DoubleSeq;
- Handle(TColStd_HSequenceOfReal) aRow = aTable->GetRowData(theRow);
- CorbaSeq->length(aRow->Length());
- for (int i = 0; i < aRow->Length(); i++) {
- CorbaSeq[i] = aRow->Value(i + 1);
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeTableOfReal_i::AddColumn(const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
- for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
- aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetColumn(CORBA::Long theColumn, const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
- for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
- aTable->SetColumnData(theColumn, aColumn);
-}
-
-SALOMEDS::DoubleSeq* SALOMEDS_AttributeTableOfReal_i::GetColumn(CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theColumn <= 0 || theColumn > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
-
- SALOMEDS::DoubleSeq_var CorbaSeq = new SALOMEDS::DoubleSeq;
- Handle(TColStd_HSequenceOfReal) aColumn = aTable->GetColumnData(theColumn);
- CorbaSeq->length(aColumn->Length());
- for (int i = 0; i < aColumn->Length(); i++) {
- CorbaSeq[i] = aColumn->Value(i + 1);
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeTableOfReal_i::PutValue(CORBA::Double theValue, CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- aTable->PutValue(theValue, theRow, theColumn);
-}
-
-CORBA::Boolean SALOMEDS_AttributeTableOfReal_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn)
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl)->HasValue(theRow, theColumn);
-}
-
-CORBA::Double SALOMEDS_AttributeTableOfReal_i::GetValue(CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATR_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- if (theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
-
- CORBA::Double aValue;
-
- try {
- aValue = aTable->GetValue(theRow, theColumn);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
- }
-
- return aValue;
-}
-
-
-SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfReal_i::GetRowSetIndices(CORBA::Long theRow)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- if(theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
-
- SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
- Handle(TColStd_HSequenceOfInteger) aSeq = aTable->GetSetRowIndices(theRow);
- CorbaSeq->length(aSeq->Length());
- for (int i = 0; i < aSeq->Length(); i++) {
- CorbaSeq[i] = aSeq->Value(i + 1);
- }
- return CorbaSeq._retn();
-}
-
-
-void SALOMEDS_AttributeTableOfReal_i::SetNbColumns(CORBA::Long theNbColumns)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
- aTable->SetNbColumns(theNbColumns);
-}
-
-bool SALOMEDS_AttributeTableOfReal_i::ReadFromFile(const SALOMEDS::TMPFile& theStream)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- istrstream aStream((char*)&theStream[0], theStream.length());
- return aTable->RestoreFromString(aStream);
-}
-
-SALOMEDS::TMPFile* SALOMEDS_AttributeTableOfReal_i::SaveToFile()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
-
- ostrstream ostr;
- string aString;
- aTable->ConvertToString(ostr);
-
- aString = ostr.rdbuf()->str();
-
- char* aBuffer = (char*)CORBA::string_dup(aString.c_str());
- int aBufferSize = strlen((char*)aBuffer);
-
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer;
-
- SALOMEDS::TMPFile_var aStreamFile = new SALOMEDS::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1);
-
- return aStreamFile._retn();
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfReal_i.hxx
-// Author : Michael Ponikarov
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTableOfReal_i_HeaderFile
-#define SALOMEDS_AttributeTableOfReal_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
-
-class SALOMEDS_AttributeTableOfReal_i: public virtual POA_SALOMEDS::AttributeTableOfReal,
- public virtual SALOMEDS_GenericAttribute_i {
-
-public:
-
- SALOMEDS_AttributeTableOfReal_i(const Handle(SALOMEDSImpl_AttributeTableOfReal)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeTableOfReal_i() {};
-
- virtual void SetTitle(const char* theTitle);
- virtual char* GetTitle();
- virtual void SetRowTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual void SetRowTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetRowTitles();
- virtual void SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual void SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetColumnTitles();
-
- virtual void SetRowUnit(CORBA::Long theIndex, const char* theUnit)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual void SetRowUnits(const SALOMEDS::StringSeq& theUnits)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetRowUnits();
-
- virtual CORBA::Long GetNbRows();
- virtual CORBA::Long GetNbColumns();
- virtual void AddRow(const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength);
- virtual void SetRow(CORBA::Long theRow, const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual SALOMEDS::DoubleSeq* GetRow(CORBA::Long theRow)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual void AddColumn(const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength);
- virtual void SetColumn(CORBA::Long theColumn, const SALOMEDS::DoubleSeq& theData)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual SALOMEDS::DoubleSeq* GetColumn(CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual void PutValue(CORBA::Double theValue, CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
- virtual CORBA::Boolean HasValue(CORBA::Long theRow, CORBA::Long theColumn);
- virtual CORBA::Double GetValue(CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
-
- virtual SALOMEDS::LongSeq* GetRowSetIndices(CORBA::Long theRow);
- virtual void SetNbColumns(CORBA::Long theNbColumns);
-
- virtual bool ReadFromFile(const SALOMEDS::TMPFile& theStream);
- virtual SALOMEDS::TMPFile* SaveToFile();
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfString.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeTableOfString.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-#include <TColStd_HSequenceOfReal.hxx>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-
-SALOMEDS_AttributeTableOfString
-::SALOMEDS_AttributeTableOfString(const Handle(SALOMEDSImpl_AttributeTableOfString)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTableOfString::SALOMEDS_AttributeTableOfString(SALOMEDS::AttributeTableOfString_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTableOfString::~SALOMEDS_AttributeTableOfString()
-{}
-
-
-void SALOMEDS_AttributeTableOfString::SetTitle(const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetTitle((char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetTitle(theTitle.c_str());
-}
-
-std::string SALOMEDS_AttributeTableOfString::GetTitle()
-{
- std::string aStr;
- if(_isLocal)
- aStr = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetTitle()).ToCString();
- else aStr = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetTitle();
- return aStr;
-}
-
-void SALOMEDS_AttributeTableOfString::SetRowTitle(int theIndex, const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowTitle(theIndex,
- (char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowTitle(theIndex, theTitle.c_str());
-}
-
-void SALOMEDS_AttributeTableOfString::SetRowTitles(const std::vector<std::string>& theTitles)
-{
- CheckLocked();
- int aLength = theTitles.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowTitles(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowTitles(aSeq);
- }
-
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfString::GetRowTitles()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetRowTitles();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRowTitles();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfString::SetColumnTitle(int theIndex, const std::string& theTitle)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetColumnTitle(theIndex,
- (char*)theTitle.c_str());
- else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetColumnTitle(theIndex, theTitle.c_str());
-}
-
-void SALOMEDS_AttributeTableOfString::SetColumnTitles(const std::vector<std::string>& theTitles)
-{
- CheckLocked();
- int aLength = theTitles.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetColumnTitles(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetColumnTitles(aSeq);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfString::GetColumnTitles()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetColumnTitles();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetColumnTitles();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfString::SetRowUnit(int theIndex, const std::string& theUnit)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowUnit(theIndex,
- (char*)theUnit.c_str());
- else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowUnit(theIndex, theUnit.c_str());
-}
-
-void SALOMEDS_AttributeTableOfString::SetRowUnits(const std::vector<std::string>& theUnits)
-{
- CheckLocked();
- int aLength = theUnits.size(), i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- for(i = 0; i < aLength; i++) aSeq->Append((char*)theUnits[i].c_str());
- Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowUnits(aSeq);
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theUnits[i].c_str();
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowUnits(aSeq);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfString::GetRowUnits()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetRowUnits();
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRowUnits();
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-int SALOMEDS_AttributeTableOfString::GetNbRows()
-{
- int aNb;
- if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetNbRows();
- else aNb = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetNbRows();
- return aNb;
-}
-
-int SALOMEDS_AttributeTableOfString::GetNbColumns()
-{
- int aNb;
- if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetNbColumns();
- else aNb = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetNbColumns();
- return aNb;
-
-}
-
-void SALOMEDS_AttributeTableOfString::AddRow(const std::vector<std::string>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < aLength; i++) aRow->Append((char*)theData[i].c_str());
- try {
- aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theData[i].c_str();
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->AddRow(aSeq);
- }
-}
-
-void SALOMEDS_AttributeTableOfString::SetRow(int theRow, const std::vector<std::string>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < aLength; i++) aRow->Append((char*)theData[i].c_str());
- try {
- aTable->SetRowData(theRow, aRow);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
- aSeq->length(aLength);
- for(i = 0; i < aLength; i++) aSeq[i] = (char*)theData[i].c_str();
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRow(theRow, aSeq);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfString::GetRow(int theRow)
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aRow;
- aRow = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetRowData(theRow);
- aLength = aRow->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aRow->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aRow = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRow(theRow);
- for(i = 0; i < aLength; i++) aVector.push_back((char*)aRow[i].in());
- }
-
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfString::AddColumn(const std::vector<std::string>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < aLength; i++) aColumn->Append((char*)theData[i].c_str());
- try {
- aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::StringSeq_var aColumn = new SALOMEDS::StringSeq();
- aColumn->length(aLength);
- for(i = 0; i < aLength; i++) aColumn[i] = (char*)theData[i].c_str();
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->AddColumn(aColumn);
- }
-}
-
-void SALOMEDS_AttributeTableOfString::SetColumn(int theColumn, const std::vector<std::string>& theData)
-{
- CheckLocked();
- int aLength = theData.size(), i;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
- aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
- Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < aLength; i++) aColumn->Append((char*)theData[i].c_str());
- try {
- aTable->SetRowData(theColumn, aColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
- }
- }
- else {
- SALOMEDS::StringSeq_var aColumn = new SALOMEDS::StringSeq();
- aColumn->length(aLength);
- for(i = 0; i < aLength; i++) aColumn[i] = (char*)theData[i].c_str();
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRow(theColumn, aColumn);
- }
-}
-
-std::vector<std::string> SALOMEDS_AttributeTableOfString::GetColumn(int theColumn)
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfExtendedString) aColumn;
- aColumn = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetColumnData(theColumn);
- aLength = aColumn->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aColumn->Value(i)).ToCString());
- }
- else {
- SALOMEDS::StringSeq_var aColumn = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetColumn(theColumn);
- for(i = 0; i < aLength; i++) aVector.push_back(aColumn[i].in());
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfString::PutValue(const std::string& theValue, int theRow, int theColumn)
-{
- CheckLocked();
- if(_isLocal) {
- try {
- Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->PutValue((char*)theValue.c_str(),
- theRow,
- theColumn);
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
- }
- }
- else {
- SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->PutValue(theValue.c_str(), theRow, theColumn);
- }
-}
-
-bool SALOMEDS_AttributeTableOfString::HasValue(int theRow, int theColumn)
-{
- bool ret;
- if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->HasValue(theRow, theColumn);
- else ret = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->HasValue(theRow, theColumn);
- return ret;
-}
-
-std::string SALOMEDS_AttributeTableOfString::GetValue(int theRow, int theColumn)
-{
- std::string aValue;
- if(_isLocal) {
- try {
- aValue =
- TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetValue(theRow,
- theColumn)).ToCString();
- }
- catch(...) {
- throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
- }
- }
- else {
- aValue = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetValue(theRow, theColumn);
- }
- return aValue;
-}
-
-std::vector<int> SALOMEDS_AttributeTableOfString::GetRowSetIndices(int theRow)
-{
- std::vector<int> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfInteger) aSet;
- aSet = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetSetRowIndices(theRow);
- aLength = aSet->Length();
- for(i = 1; i<= aLength; i++) aVector.push_back(aSet->Value(i));
- }
- else {
- SALOMEDS::LongSeq_var aSet = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRowSetIndices(theRow);
- for(i = 0; i < aLength; i++) aVector.push_back(aSet[i]);
- }
- return aVector;
-}
-
-void SALOMEDS_AttributeTableOfString::SetNbColumns(int theNbColumns)
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetNbColumns(theNbColumns);
- else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetNbColumns(theNbColumns);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfString.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTableOfString_HeaderFile
-#define SALOMEDS_AttributeTableOfString_HeaderFile
-
-#include "SALOMEDSClient_AttributeTableOfString.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeTableOfString.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include <vector>
-
-class SALOMEDS_AttributeTableOfString: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTableOfString
-{
-public:
- SALOMEDS_AttributeTableOfString(const Handle(SALOMEDSImpl_AttributeTableOfString)& theAttr);
- SALOMEDS_AttributeTableOfString(SALOMEDS::AttributeTableOfString_ptr theAttr);
- ~SALOMEDS_AttributeTableOfString();
-
- virtual void SetTitle(const std::string& theTitle);
- virtual std::string GetTitle();
- virtual void SetRowTitle(int theIndex, const std::string& theTitle);
- virtual void SetRowTitles(const std::vector<std::string>& theTitles);
- virtual std::vector<std::string> GetRowTitles();
- virtual void SetColumnTitle(int theIndex, const std::string& theTitle);
- virtual void SetColumnTitles(const std::vector<std::string>& theTitles);
- virtual std::vector<std::string> GetColumnTitles();
-
- virtual void SetRowUnit(int theIndex, const std::string& theUnit);
- virtual void SetRowUnits(const std::vector<std::string>& theUnits);
- virtual std::vector<std::string> GetRowUnits();
-
- virtual int GetNbRows();
- virtual int GetNbColumns();
- virtual void AddRow(const std::vector<std::string>& theData);
- virtual void SetRow(int theRow, const std::vector<std::string>& theData);
- virtual std::vector<std::string> GetRow(int theRow);
- virtual void AddColumn(const std::vector<std::string>& theData);
- virtual void SetColumn(int theColumn, const std::vector<std::string>& theData);
- virtual std::vector<std::string> GetColumn(int theColumn);
- virtual void PutValue(const std::string& theValue, int theRow, int theColumn);
- virtual bool HasValue(int theRow, int theColumn);
- virtual std::string GetValue(int theRow, int theColumn);
-
- virtual std::vector<int> GetRowSetIndices(int theRow);
- virtual void SetNbColumns(int theNbColumns);
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfString_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
-
-#include "SALOMEDS_AttributeTableOfString_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include <TColStd_HSequenceOfExtendedString.hxx>
-#include <Standard_Failure.hxx>
-#include <Standard_ErrorHandler.hxx>
-
-#include <strstream>
-#include <string>
-
-#include "Utils_ExceptHandlers.hxx"
-
-using namespace std;
-
-UNEXPECT_CATCH(ATS_IncorrectIndex, SALOMEDS::AttributeTableOfString::IncorrectIndex);
-UNEXPECT_CATCH(ATS_IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
-
-void SALOMEDS_AttributeTableOfString_i::SetTitle(const char* theTitle)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- CORBA::String_var aStr = CORBA::string_dup(theTitle);
- aTable->SetTitle(TCollection_ExtendedString(aStr));
-}
-
-char* SALOMEDS_AttributeTableOfString_i::GetTitle()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(aTable->GetTitle()).ToCString());
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetRowTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-
- aTable->SetRowTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetRowTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theTitles.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
- for (int i = 0; i < theTitles.length(); i++) {
- aTable->SetRowTitle(i + 1, TCollection_ExtendedString((char*)theTitles[i].in()));
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRowTitles()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
- aTitles->length(aTable->GetNbRows());
- for(int i = 0; i < aTitles->length(); i++)
- aTitles[i] =CORBA::string_dup(TCollection_AsciiString(aTable->GetRowTitle(i + 1)).ToCString());
- return aTitles._retn();
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
- aTable->SetColumnTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theTitles.length() != aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
- for (int i = 0; i < theTitles.length(); i++) {
- aTable->SetColumnTitle(i + 1, TCollection_ExtendedString((char*)theTitles[i].in()));
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetColumnTitles()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
- aTitles->length(aTable->GetNbColumns());
- for(int i = 0; i < aTitles->length(); i++)
- aTitles[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetColumnTitle(i + 1)).ToCString());
- return aTitles._retn();
-}
-
-//Units support
-void SALOMEDS_AttributeTableOfString_i::SetRowUnit(CORBA::Long theIndex, const char* theUnit)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
- aTable->SetRowUnit(theIndex, TCollection_ExtendedString((char*)theUnit));
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetRowUnits(const SALOMEDS::StringSeq& theUnits)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theUnits.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
- for (int i = 0; i < theUnits.length(); i++) {
- aTable->SetRowUnit(i + 1, TCollection_ExtendedString((char*)theUnits[i].in()));
- }
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRowUnits()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- SALOMEDS::StringSeq_var aUnits = new SALOMEDS::StringSeq;
- aUnits->length(aTable->GetNbRows());
- for(int i = 0; i < aUnits->length(); i++)
- aUnits[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowUnit(i + 1)).ToCString());
- return aUnits._retn();
-}
-
-
-CORBA::Long SALOMEDS_AttributeTableOfString_i::GetNbRows()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl)->GetNbRows();
-}
-
-CORBA::Long SALOMEDS_AttributeTableOfString_i::GetNbColumns()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl)->GetNbColumns();
-}
-
-void SALOMEDS_AttributeTableOfString_i::AddRow(const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < theData.length(); i++) aRow->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
- aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetRow(CORBA::Long theRow, const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < theData.length(); i++) aRow->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
- aTable->SetRowData(theRow, aRow);
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRow(CORBA::Long theRow)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-
- SALOMEDS::StringSeq_var CorbaSeq = new SALOMEDS::StringSeq;
- Handle(TColStd_HSequenceOfExtendedString) aRow = aTable->GetRowData(theRow);
- CorbaSeq->length(aRow->Length());
- for (int i = 0; i < aRow->Length(); i++) {
- CorbaSeq[i] = CORBA::string_dup((TCollection_AsciiString(aRow->Value(i + 1))).ToCString());
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeTableOfString_i::AddColumn(const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < theData.length(); i++) aColumn->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
- aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetColumn(CORBA::Long theColumn, const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectArgumentLength);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
-
- Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
- for (int i = 0; i < theData.length(); i++) aColumn->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
- aTable->SetColumnData(theColumn, aColumn);
-}
-
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetColumn(CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theColumn <= 0 || theColumn > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-
- SALOMEDS::StringSeq_var CorbaSeq = new SALOMEDS::StringSeq;
- Handle(TColStd_HSequenceOfExtendedString) aColumn = aTable->GetColumnData(theColumn);
- CorbaSeq->length(aColumn->Length());
- for (int i = 0; i < aColumn->Length(); i++) {
- CorbaSeq[i] = CORBA::string_dup((TCollection_AsciiString(aColumn->Value(i + 1))).ToCString());
- }
- return CorbaSeq._retn();
-}
-
-void SALOMEDS_AttributeTableOfString_i::PutValue(const char* theValue, CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectIndex);
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- char* aValue = CORBA::string_dup(theValue);
-
- aTable->PutValue(aValue, theRow, theColumn);
-}
-
-CORBA::Boolean SALOMEDS_AttributeTableOfString_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn)
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl)->HasValue(theRow, theColumn);
-}
-
-char* SALOMEDS_AttributeTableOfString_i::GetValue(CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(ATS_IncorrectIndex);
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- if (theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-
- TCollection_AsciiString aValue;
-
- try {
- aValue = aTable->GetValue(theRow, theColumn);
- }
- catch(Standard_Failure) {
- throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
- }
-
- return CORBA::string_dup(aValue.ToCString());
-}
-
-
-SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfString_i::GetRowSetIndices(CORBA::Long theRow)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
-
- if(theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-
- SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
- Handle(TColStd_HSequenceOfInteger) aSeq = aTable->GetSetRowIndices(theRow);
- CorbaSeq->length(aSeq->Length());
- for (int i = 0; i < aSeq->Length(); i++) {
- CorbaSeq[i] = aSeq->Value(i + 1);
- }
- return CorbaSeq._retn();
-}
-
-
-void SALOMEDS_AttributeTableOfString_i::SetNbColumns(CORBA::Long theNbColumns)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
- aTable->SetNbColumns(theNbColumns);
-}
-
-bool SALOMEDS_AttributeTableOfString_i::ReadFromFile(const SALOMEDS::TMPFile& theStream)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
-
- istrstream aStream((char*)&theStream[0], theStream.length());
- return aTable->RestoreFromString(aStream);
-}
-
-SALOMEDS::TMPFile* SALOMEDS_AttributeTableOfString_i::SaveToFile()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
-
- ostrstream ostr;
- aTable->ConvertToString(ostr);
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)ostr.rdbuf()->str();
- unsigned long aSize = ostr.pcount();
- SALOMEDS::TMPFile_var aStreamFile = new SALOMEDS::TMPFile(aSize, aSize, anOctetBuf, 1);
- return aStreamFile._retn();
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeTableOfString_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTableOfString_i_HeaderFile
-#define SALOMEDS_AttributeTableOfString_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeTableOfString.hxx"
-
-class SALOMEDS_AttributeTableOfString_i: public virtual POA_SALOMEDS::AttributeTableOfString,
- public virtual SALOMEDS_GenericAttribute_i {
-
-public:
-
- SALOMEDS_AttributeTableOfString_i(const Handle(SALOMEDSImpl_AttributeTableOfString)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeTableOfString_i() {};
-
- virtual void SetTitle(const char* theTitle);
- virtual char* GetTitle();
- virtual void SetRowTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual void SetRowTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetRowTitles();
- virtual void SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual void SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetColumnTitles();
-
- virtual void SetRowUnit(CORBA::Long theIndex, const char* theUnit)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual void SetRowUnits(const SALOMEDS::StringSeq& theUnits)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
- virtual SALOMEDS::StringSeq* GetRowUnits();
-
- virtual CORBA::Long GetNbRows();
- virtual CORBA::Long GetNbColumns();
- virtual void AddRow(const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
- virtual void SetRow(CORBA::Long theRow, const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual SALOMEDS::StringSeq* GetRow(CORBA::Long theRow)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual void AddColumn(const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
- virtual void SetColumn(CORBA::Long theColumn, const SALOMEDS::StringSeq& theData)
- throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual SALOMEDS::StringSeq* GetColumn(CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual void PutValue(const char* theValue, CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex);
- virtual CORBA::Boolean HasValue(CORBA::Long theRow, CORBA::Long theColumn);
- virtual char* GetValue(CORBA::Long theRow, CORBA::Long theColumn)
- throw (SALOMEDS::AttributeTableOfString::IncorrectIndex);
-
- virtual SALOMEDS::LongSeq* GetRowSetIndices(CORBA::Long theRow);
- virtual void SetNbColumns(CORBA::Long theNbColumns);
-
- virtual bool ReadFromFile(const SALOMEDS::TMPFile& theStream);
- virtual SALOMEDS::TMPFile* SaveToFile();
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTarget.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeTarget.hxx"
-
-#include <TColStd_HSequenceOfTransient.hxx>
-
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDS_SObject.hxx"
-
-
-SALOMEDS_AttributeTarget::SALOMEDS_AttributeTarget(const Handle(SALOMEDSImpl_AttributeTarget)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTarget::SALOMEDS_AttributeTarget(SALOMEDS::AttributeTarget_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTarget::~SALOMEDS_AttributeTarget()
-{}
-
-void SALOMEDS_AttributeTarget::Add(const _PTR(SObject)& theObject)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
-
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_local_impl)->Add(aSO->GetLocalImpl());
- else SALOMEDS::AttributeTarget::_narrow(_corba_impl)->Add(aSO->GetCORBAImpl());
-}
-
-std::vector<_PTR(SObject)> SALOMEDS_AttributeTarget::Get()
-{
- std::vector<_PTR(SObject)> aVector;
- int aLength, i;
- SALOMEDSClient_SObject* aSO = NULL;
-
- if(_isLocal) {
- Handle(TColStd_HSequenceOfTransient) aSeq = Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_local_impl)->Get();
- aLength = aSeq->Length();
- for(i=1; i<=aLength; i++) {
- aSO = new SALOMEDS_SObject(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)));
- aVector.push_back(_PTR(SObject)(aSO));
- }
- }
- else {
- SALOMEDS::Study::ListOfSObject_var aSeq = SALOMEDS::AttributeTarget::_narrow(_corba_impl)->Get();
- aLength = aSeq->length();
- aSO = new SALOMEDS_SObject(aSeq[i].in());
- for(i = 0; i<aLength; i++) aVector.push_back(_PTR(SObject)(aSO));
- }
-
- return aVector;
-}
-
-void SALOMEDS_AttributeTarget::Remove(const _PTR(SObject)& theObject)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
-
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_local_impl)->Remove(aSO->GetLocalImpl());
- else SALOMEDS::AttributeTarget::_narrow(_corba_impl)->Remove(aSO->GetCORBAImpl());
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeTarget.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTarget_HeaderFile
-#define SALOMEDS_AttributeTarget_HeaderFile
-
-#include <vector>
-
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeTarget.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeTarget: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTarget
-{
-public:
- SALOMEDS_AttributeTarget(const Handle(SALOMEDSImpl_AttributeTarget)& theAttr);
- SALOMEDS_AttributeTarget(SALOMEDS::AttributeTarget_ptr theAttr);
- ~SALOMEDS_AttributeTarget();
-
- virtual void Add(const _PTR(SObject)& theObject);
- virtual std::vector<_PTR(SObject)> Get();
- virtual void Remove(const _PTR(SObject)& theObject);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTarget_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDS_AttributeTarget_i.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDS.hxx"
-
-#include <TColStd_HSequenceOfTransient.hxx>
-
-using namespace std;
-
-void SALOMEDS_AttributeTarget_i::Add(SALOMEDS::SObject_ptr anObject)
-{
- SALOMEDS::Locker lock;
- TDF_Label aLabel;
- TDF_Tool::Label(_impl->Label().Data(),anObject->GetID(),aLabel,1);
- (Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_impl))->Add(SALOMEDSImpl_Study::SObject(aLabel));
-}
-
-SALOMEDS::Study::ListOfSObject* SALOMEDS_AttributeTarget_i::Get()
-{
- SALOMEDS::Locker lock;
- Handle(TColStd_HSequenceOfTransient) aSeq = (Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_impl))->Get();
- SALOMEDS::Study::ListOfSObject_var aSList = new SALOMEDS::Study::ListOfSObject;
- int aLength = aSeq->Length(), i;
- if (aLength == 0) return aSList._retn();
- aSList->length(aLength);
- for(i=1; i <=aLength; i++) {
- SALOMEDS::SObject_var anSO = SALOMEDS_SObject_i::New(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)), _orb);
- aSList[i-1] = anSO;
- }
- return aSList._retn();
-}
-
-void SALOMEDS_AttributeTarget_i::Remove(SALOMEDS::SObject_ptr anObject)
-{
- SALOMEDS::Locker lock;
- TDF_Label aLabel;
- TDF_Tool::Label(_impl->Label().Data(),anObject->GetID(),aLabel,1);
- (Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_impl))->Remove(SALOMEDSImpl_Study::SObject(aLabel));
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTarget_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTarget_i_HeaderFile
-#define SALOMEDS_AttributeTarget_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeTarget.hxx"
-
-class SALOMEDS_AttributeTarget_i: public virtual POA_SALOMEDS::AttributeTarget,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeTarget_i(const Handle(SALOMEDSImpl_AttributeTarget)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeTarget_i() {};
-
- virtual void Add(SALOMEDS::SObject_ptr anObject) ;
- virtual SALOMEDS::Study::ListOfSObject* Get();
- virtual void Remove(SALOMEDS::SObject_ptr anObject);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTextColor.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeTextColor.hxx"
-
-#include <TColStd_HArray1OfReal.hxx>
-
-SALOMEDS_AttributeTextColor::SALOMEDS_AttributeTextColor(const Handle(SALOMEDSImpl_AttributeTextColor)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTextColor::SALOMEDS_AttributeTextColor(SALOMEDS::AttributeTextColor_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTextColor::~SALOMEDS_AttributeTextColor()
-{}
-
-
-STextColor SALOMEDS_AttributeTextColor::TextColor()
-{
- STextColor aColor;
- if(_isLocal) {
- Handle(TColStd_HArray1OfReal) aSeq = Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_local_impl)->TextColor();
- aColor.R = aSeq->Value(1);
- aColor.G = aSeq->Value(2);
- aColor.B = aSeq->Value(3);
- }
- else {
- SALOMEDS::Color anImplColor = SALOMEDS::AttributeTextColor::_narrow(_corba_impl)->TextColor();
- aColor.R = anImplColor.R;
- aColor.G = anImplColor.G;
- aColor.B = anImplColor.B;
- }
- return aColor;
-}
-
-void SALOMEDS_AttributeTextColor::SetTextColor(STextColor value)
-{
- CheckLocked();
- if(_isLocal) {
- Handle(TColStd_HArray1OfReal) aSeq = new TColStd_HArray1OfReal(1, 3);
- aSeq->SetValue(1, value.R);
- aSeq->SetValue(2, value.G);
- aSeq->SetValue(3, value.B);
- Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_local_impl)->ChangeArray(aSeq);
- }
- else {
- SALOMEDS::Color aColor;
- aColor.R = value.R;
- aColor.G = value.G;
- aColor.B = value.B;
- SALOMEDS::AttributeTextColor::_narrow(_corba_impl)->SetTextColor(aColor);
- }
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTextColor.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTextColor_HeaderFile
-#define SALOMEDS_AttributeTextColor_HeaderFile
-
-#include "SALOMEDSClient_AttributeTextColor.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeTextColor.hxx"
-#include "SALOMEDSClient_definitions.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include <vector>
-
-class SALOMEDS_AttributeTextColor: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTextColor
-{
-public:
- SALOMEDS_AttributeTextColor(const Handle(SALOMEDSImpl_AttributeTextColor)& theAttr);
- SALOMEDS_AttributeTextColor(SALOMEDS::AttributeTextColor_ptr theAttr);
- ~SALOMEDS_AttributeTextColor();
-
- virtual STextColor TextColor();
- virtual void SetTextColor(STextColor value);
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTextColor_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeTextColor_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TColStd_HArray1OfReal.hxx>
-
-using namespace std;
-
-SALOMEDS::Color SALOMEDS_AttributeTextColor_i::TextColor()
-{
- SALOMEDS::Locker lock;
- SALOMEDS::Color TextColor;
- Handle(TColStd_HArray1OfReal) anArray = Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_impl)->TextColor();
- if (anArray.IsNull() || anArray->Length()!=3) {
- TextColor.R = 0;
- TextColor.G = 0;
- TextColor.B = 0;
- }
- else {
- TextColor.R = anArray->Value(1);
- TextColor.G = anArray->Value(2);
- TextColor.B = anArray->Value(3);
- }
- return TextColor;
-}
-
-void SALOMEDS_AttributeTextColor_i::SetTextColor(const SALOMEDS::Color& value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(TColStd_HArray1OfReal) anArray = new TColStd_HArray1OfReal(1,3);
- anArray->SetValue(1, value.R);
- anArray->SetValue(2, value.G);
- anArray->SetValue(3, value.B);
- Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_impl)->ChangeArray(anArray);
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeTextColor_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header$
-
-#ifndef SALOMEDS_AttributeTextColor_i_HeaderFile
-#define SALOMEDS_AttributeTextColor_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeTextColor.hxx"
-
-class SALOMEDS_AttributeTextColor_i: public virtual POA_SALOMEDS::AttributeTextColor,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeTextColor_i(const Handle(SALOMEDSImpl_AttributeTextColor)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeTextColor_i() {};
-
- SALOMEDS::Color TextColor();
- void SetTextColor(const SALOMEDS::Color& value);
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTextHighlightColor.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeTextHighlightColor.hxx"
-
-#include <TColStd_HArray1OfReal.hxx>
-
-SALOMEDS_AttributeTextHighlightColor::SALOMEDS_AttributeTextHighlightColor(const Handle(SALOMEDSImpl_AttributeTextHighlightColor)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTextHighlightColor::SALOMEDS_AttributeTextHighlightColor(SALOMEDS::AttributeTextHighlightColor_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTextHighlightColor::~SALOMEDS_AttributeTextHighlightColor()
-{}
-
-
-STextColor SALOMEDS_AttributeTextHighlightColor::TextHighlightColor()
-{
- STextColor aColor;
- if(_isLocal) {
- Handle(TColStd_HArray1OfReal) aSeq;
- aSeq = Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_local_impl)->TextHighlightColor();
- aColor.R = aSeq->Value(1);
- aColor.G = aSeq->Value(2);
- aColor.B = aSeq->Value(3);
- }
- else {
- SALOMEDS::Color anImplColor = SALOMEDS::AttributeTextHighlightColor::_narrow(_corba_impl)->TextHighlightColor();
- aColor.R = anImplColor.R;
- aColor.G = anImplColor.G;
- aColor.B = anImplColor.B;
- }
- return aColor;
-}
-
-void SALOMEDS_AttributeTextHighlightColor::SetTextHighlightColor(STextColor value)
-{
- if(_isLocal) {
- Handle(TColStd_HArray1OfReal) aSeq = new TColStd_HArray1OfReal(1, 3);
- aSeq->SetValue(1, value.R);
- aSeq->SetValue(2, value.G);
- aSeq->SetValue(3, value.B);
- Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_local_impl)->ChangeArray(aSeq);
- }
- else {
- SALOMEDS::Color aColor;
- aColor.R = value.R;
- aColor.G = value.G;
- aColor.B = value.B;
- SALOMEDS::AttributeTextHighlightColor::_narrow(_corba_impl)->SetTextHighlightColor(aColor);
- }
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTextHighlightColor.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTextHighlightColor_HeaderFile
-#define SALOMEDS_AttributeTextHighlightColor_HeaderFile
-
-#include "SALOMEDSClient_AttributeTextHighlightColor.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
-#include "SALOMEDSClient_definitions.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include <vector>
-
-class SALOMEDS_AttributeTextHighlightColor: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTextHighlightColor
-{
-public:
- SALOMEDS_AttributeTextHighlightColor(const Handle(SALOMEDSImpl_AttributeTextHighlightColor)& theAttr);
- SALOMEDS_AttributeTextHighlightColor(SALOMEDS::AttributeTextHighlightColor_ptr theAttr);
- ~SALOMEDS_AttributeTextHighlightColor();
-
- virtual STextColor TextHighlightColor();
- virtual void SetTextHighlightColor(STextColor value);
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTextHighlightColor_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeTextHighlightColor_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TColStd_HArray1OfReal.hxx>
-
-using namespace std;
-
-SALOMEDS::Color SALOMEDS_AttributeTextHighlightColor_i::TextHighlightColor()
-{
- SALOMEDS::Locker lock;
- SALOMEDS::Color TextHighlightColor;
- Handle(TColStd_HArray1OfReal) anArray=Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_impl)->TextHighlightColor();
- if (anArray.IsNull() || anArray->Length()!=3) {
- TextHighlightColor.R = 0;
- TextHighlightColor.G = 0;
- TextHighlightColor.B = 0;
- }
- else {
- TextHighlightColor.R = anArray->Value(1);
- TextHighlightColor.G = anArray->Value(2);
- TextHighlightColor.B = anArray->Value(3);
- }
- return TextHighlightColor;
-}
-
-void SALOMEDS_AttributeTextHighlightColor_i::SetTextHighlightColor(const SALOMEDS::Color& value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(TColStd_HArray1OfReal) anArray = new TColStd_HArray1OfReal(1,3);
- anArray->SetValue(1, value.R);
- anArray->SetValue(2, value.G);
- anArray->SetValue(3, value.B);
- Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_impl)->ChangeArray(anArray);
-}
+++ /dev/null
-// File : SALOMEDS_AttributeTextHighlightColor_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTextHighlightColor_i_HeaderFile
-#define SALOMEDS_AttributeTextHighlightColor_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
-
-class SALOMEDS_AttributeTextHighlightColor_i: public virtual POA_SALOMEDS::AttributeTextHighlightColor,
- public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-
- SALOMEDS_AttributeTextHighlightColor_i(const Handle(SALOMEDSImpl_AttributeTextHighlightColor)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeTextHighlightColor_i() {};
-
- SALOMEDS::Color TextHighlightColor();
- void SetTextHighlightColor(const SALOMEDS::Color& value);
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTreeNode.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeTreeNode.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <Standard_GUID.hxx>
-#include <TDF_Label.hxx>
-#include <TDF_Tool.hxx>
-
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-#include "SALOMEDS_AttributeTreeNode.hxx"
-
-SALOMEDS_AttributeTreeNode::SALOMEDS_AttributeTreeNode(const Handle(SALOMEDSImpl_AttributeTreeNode)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTreeNode::SALOMEDS_AttributeTreeNode(SALOMEDS::AttributeTreeNode_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeTreeNode::~SALOMEDS_AttributeTreeNode()
-{}
-
-void SALOMEDS_AttributeTreeNode::SetFather(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aFather;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aFather = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->SetFather(aFather);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var aFather = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->SetFather(aFather);
- }
-}
-
-bool SALOMEDS_AttributeTreeNode::HasFather()
-{
- bool ret;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- ret = aNode->HasFather();
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- ret = aNode->HasFather();
- }
- return ret;
-}
-
-_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetFather()
-{
- SALOMEDSClient_AttributeTreeNode* aTN = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFather());
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFather());
- }
- return _PTR(AttributeTreeNode)(aTN);
-}
-
-void SALOMEDS_AttributeTreeNode::SetPrevious(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aPrev;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aPrev = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->SetPrevious(aPrev);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var aPrev = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->SetPrevious(aPrev);
- }
-}
-
-bool SALOMEDS_AttributeTreeNode::HasPrevious()
-{
- bool ret;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- ret = aNode->HasPrevious();
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- ret = aNode->HasPrevious();
- }
- return ret;
-}
-
-_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetPrevious()
-{
- SALOMEDSClient_AttributeTreeNode* aTN = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetPrevious());
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetPrevious());
- }
- return _PTR(AttributeTreeNode)(aTN);
-}
-
-void SALOMEDS_AttributeTreeNode::SetNext(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aNext;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aNext = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->SetNext(aNext);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var aNext = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->SetNext(aNext);
- }
-}
-
-bool SALOMEDS_AttributeTreeNode::HasNext()
-{
- bool ret;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- ret = aNode->HasNext();
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- ret = aNode->HasNext();
- }
- return ret;
-}
-
-_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetNext()
-{
- SALOMEDSClient_AttributeTreeNode* aTN = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetNext());
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetNext());
- }
- return _PTR(AttributeTreeNode)(aTN);
-}
-
-void SALOMEDS_AttributeTreeNode::SetFirst(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aFirst;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aFirst = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->SetFirst(aFirst);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var aFirst = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->SetFirst(aFirst);
- }
-}
-
-bool SALOMEDS_AttributeTreeNode::HasFirst()
-{
- bool ret;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- ret = aNode->HasFirst();
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- ret = aNode->HasFirst();
- }
- return ret;
-}
-
-_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetFirst()
-{
- SALOMEDSClient_AttributeTreeNode* aTN = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFirst());
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFirst());
- }
- return _PTR(AttributeTreeNode)(aTN);
-}
-
-void SALOMEDS_AttributeTreeNode::SetTreeID(const std::string& value)
-{
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- aNode->SetTreeID(Standard_GUID((char*)value.c_str()));
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- aNode->SetTreeID(value.c_str());
- }
-}
-
-std::string SALOMEDS_AttributeTreeNode::GetTreeID()
-{
- TCollection_AsciiString aGUID;
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- char guid[40];
- aNode->GetTreeID().ToCString(guid);
- aGUID = TCollection_AsciiString(guid);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- aGUID = TCollection_AsciiString(aNode->GetTreeID());
- }
-
- return std::string(aGUID.ToCString());
-}
-
-void SALOMEDS_AttributeTreeNode::Append(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->Append(anOther);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->Append(anOther);
- }
-}
-
-void SALOMEDS_AttributeTreeNode::Prepend(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->Prepend(anOther);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->Prepend(anOther);
- }
-}
-
-void SALOMEDS_AttributeTreeNode::InsertBefore(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->InsertBefore(anOther);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->InsertBefore(anOther);
- }
-}
-
-void SALOMEDS_AttributeTreeNode::InsertAfter(const _PTR(AttributeTreeNode)& value)
-{
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- aNode->InsertAfter(anOther);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- aNode->InsertAfter(anOther);
- }
-}
-
-void SALOMEDS_AttributeTreeNode::Remove()
-{
- if(_isLocal) Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl)->Remove();
- else SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->Remove();
-}
-
-int SALOMEDS_AttributeTreeNode::Depth()
-{
- int aDepth;
- if(_isLocal) aDepth = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl)->Depth();
- else aDepth = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->Depth();
- return aDepth;
-}
-
-bool SALOMEDS_AttributeTreeNode::IsRoot()
-{
- bool ret;
- if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl)->IsRoot();
- else ret = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->IsRoot();
- return ret;
-}
-
-bool SALOMEDS_AttributeTreeNode::IsDescendant(const _PTR(AttributeTreeNode)& value)
-{
- bool ret;
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- ret = aNode->IsDescendant(anOther);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- ret = aNode->IsDescendant(anOther);
- }
- return ret;
-}
-
-bool SALOMEDS_AttributeTreeNode::IsFather(const _PTR(AttributeTreeNode)& value)
-{
- bool ret;
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- ret = aNode->IsFather(anOther);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- ret = aNode->IsFather(anOther);
- }
- return ret;
-}
-
-bool SALOMEDS_AttributeTreeNode::IsChild(const _PTR(AttributeTreeNode)& value)
-{
- bool ret;
- SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
- aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
- anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
- ret = aNode->IsChild(anOther);
- }
- else {
- SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
- SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
- ret = aNode->IsChild(anOther);
- }
- return ret;
-}
-
-std::string SALOMEDS_AttributeTreeNode::Label()
-{
- TCollection_AsciiString aLabel;
- if(_isLocal) TDF_Tool::Entry(_local_impl->Label(), aLabel);
- else aLabel = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->Label();
- return std::string(aLabel.ToCString());
-}
-
-
+++ /dev/null
-// File : SALOMEDS_AttributeTreeNode.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTreeNode_HeaderFile
-#define SALOMEDS_AttributeTreeNode_HeaderFile
-
-#include "SALOMEDSClient_AttributeTreeNode.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeTreeNode: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTreeNode
-{
-public:
- SALOMEDS_AttributeTreeNode(const Handle(SALOMEDSImpl_AttributeTreeNode)& theAttr);
- SALOMEDS_AttributeTreeNode(SALOMEDS::AttributeTreeNode_ptr theAttr);
- ~SALOMEDS_AttributeTreeNode();
-
- virtual void SetFather(const _PTR(AttributeTreeNode)& value);
- virtual bool HasFather();
- virtual _PTR(AttributeTreeNode) GetFather();
- virtual void SetPrevious(const _PTR(AttributeTreeNode)& value);
- virtual bool HasPrevious();
- virtual _PTR(AttributeTreeNode) GetPrevious();
- virtual void SetNext(const _PTR(AttributeTreeNode)& value);
- virtual bool HasNext();
- virtual _PTR(AttributeTreeNode) GetNext();
- virtual void SetFirst(const _PTR(AttributeTreeNode)& value);
- virtual bool HasFirst();
- virtual _PTR(AttributeTreeNode) GetFirst();
- virtual void SetTreeID(const std::string& value);
- virtual std::string GetTreeID();
- virtual void Append(const _PTR(AttributeTreeNode)& value);
- virtual void Prepend(const _PTR(AttributeTreeNode)& value);
- virtual void InsertBefore(const _PTR(AttributeTreeNode)& value);
- virtual void InsertAfter(const _PTR(AttributeTreeNode)& value);
- virtual void Remove();
- virtual int Depth();
- virtual bool IsRoot();
- virtual bool IsDescendant(const _PTR(AttributeTreeNode)& value);
- virtual bool IsFather(const _PTR(AttributeTreeNode)& value);
- virtual bool IsChild(const _PTR(AttributeTreeNode)& value);
- virtual std::string Label();
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeTreeNode_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeTreeNode_i.hxx"
-#include "utilities.h"
-#include "SALOMEDS.hxx"
-#include <TDocStd_Document.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-
-using namespace std;
-
-static Handle(SALOMEDSImpl_AttributeTreeNode) GetNode(SALOMEDS::AttributeTreeNode_ptr value,
- const Handle(SALOMEDSImpl_AttributeTreeNode)& aNode)
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) aResult = new SALOMEDSImpl_AttributeTreeNode;
- TCollection_AsciiString anEntry = value->Label();
- TDF_Label aLabel;
- TDF_Tool::Label(aNode->Label().Data(), anEntry, aLabel);
- if (aLabel.IsNull()) {
- MESSAGE("SALOMEDS_AttributeTreeNode_i class: no such label")
- MESSAGE("SALOMEDS_AttributeTreeNode_i class: no such label")
- return aResult;
- }
- if (!aLabel.FindAttribute(aNode->ID(), aResult)) {
- MESSAGE("SALOMEDS_AttributeTreeNode_i class: no such attribute")
- MESSAGE("SALOMEDS_AttributeTreeNode_i class: no such attribute")
- }
- return aResult;
-}
-
-void SALOMEDS_AttributeTreeNode_i::SetFather(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->SetFather(GetNode(value, aNode));
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasFather()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasFather();
-}
-
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetFather()
-{
- SALOMEDS::Locker lock;
- SALOMEDS_AttributeTreeNode_i* aFather;
- aFather = new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetFather(), _orb);
-#ifndef WNT
- return aFather->POA_SALOMEDS::AttributeTreeNode::_this();
-#else
- return aFather->AttributeTreeNode::_this();
-#endif
-}
-
-void SALOMEDS_AttributeTreeNode_i::SetPrevious(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->SetPrevious(GetNode(value, aNode));
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasPrevious()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasPrevious();
-}
-
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetPrevious()
-{
- SALOMEDS::Locker lock;
- SALOMEDS_AttributeTreeNode_i* aPrevious;
- aPrevious=new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetPrevious(), _orb);
-#ifndef WNT
- return aPrevious->POA_SALOMEDS::AttributeTreeNode::_this();
-#else
- return aPrevious->AttributeTreeNode::_this();
-#endif
-}
-
-void SALOMEDS_AttributeTreeNode_i::SetNext(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->SetNext(GetNode(value, aNode));
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasNext()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasNext();
-}
-
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetNext()
-{
- SALOMEDS::Locker lock;
- SALOMEDS_AttributeTreeNode_i* aNext;
- aNext = new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetNext(), _orb);
-#ifndef WNT
- return aNext->POA_SALOMEDS::AttributeTreeNode::_this();
-#else
- return aNext->AttributeTreeNode::_this();
-#endif
-}
-
-void SALOMEDS_AttributeTreeNode_i::SetFirst(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->SetFirst(GetNode(value, aNode));
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasFirst()
-{
- SALOMEDS::Locker lock;
- return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasFirst();
-}
-
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetFirst()
-{
- SALOMEDS::Locker lock;
- SALOMEDS_AttributeTreeNode_i* aFirst;
- aFirst = new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetFirst(), _orb);
-#ifndef WNT
- return aFirst->POA_SALOMEDS::AttributeTreeNode::_this();
-#else
- return aFirst->AttributeTreeNode::_this();
-#endif
-}
-
-void SALOMEDS_AttributeTreeNode_i::SetTreeID(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->SetTreeID(Standard_GUID(aNode->ID()));
-}
-
-char* SALOMEDS_AttributeTreeNode_i::GetTreeID()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- char aGUID[40];
- aNode->ID().ToCString(aGUID);
- return CORBA::String_var(CORBA::string_dup(aGUID))._retn();
-}
-
-void SALOMEDS_AttributeTreeNode_i::Append(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->Append(GetNode(value, aNode));
-}
-
-void SALOMEDS_AttributeTreeNode_i::Prepend(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->Prepend(GetNode(value, aNode));
-}
-
-void SALOMEDS_AttributeTreeNode_i::InsertBefore(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->InsertBefore(GetNode(value, aNode));
-}
-
-void SALOMEDS_AttributeTreeNode_i::InsertAfter(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->InsertAfter(GetNode(value, aNode));
-}
-
-void SALOMEDS_AttributeTreeNode_i::Remove()
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- aNode->Remove();
-}
-
-CORBA::Long SALOMEDS_AttributeTreeNode_i::Depth()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- return aNode->Depth();
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsRoot()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- return aNode->IsRoot();
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsDescendant(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- return aNode->IsDescendant(GetNode(value, aNode));
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsFather(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- return aNode->IsFather(GetNode(value, aNode));
-}
-
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsChild(SALOMEDS::AttributeTreeNode_ptr value)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
- return aNode->IsChild(GetNode(value, aNode));
-}
-
-char* SALOMEDS_AttributeTreeNode_i::Label()
-{
- SALOMEDS::Locker lock;
- TCollection_AsciiString aLabelName;
- TDF_Tool::Entry(_impl->Label(),aLabelName);
- return CORBA::String_var(CORBA::string_dup(aLabelName.ToCString()))._retn();
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeTreeNode_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeTreeNode_i_HeaderFile
-#define SALOMEDS_AttributeTreeNode_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-
-class SALOMEDS_AttributeTreeNode_i: public virtual POA_SALOMEDS::AttributeTreeNode,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeTreeNode_i(const Handle(SALOMEDSImpl_AttributeTreeNode)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeTreeNode_i() {};
-
- void SetFather(SALOMEDS::AttributeTreeNode_ptr value);
- CORBA::Boolean HasFather();
- SALOMEDS::AttributeTreeNode_ptr GetFather();
- void SetPrevious(SALOMEDS::AttributeTreeNode_ptr value);
- CORBA::Boolean HasPrevious();
- SALOMEDS::AttributeTreeNode_ptr GetPrevious();
- void SetNext(SALOMEDS::AttributeTreeNode_ptr value);
- CORBA::Boolean HasNext();
- SALOMEDS::AttributeTreeNode_ptr GetNext();
- void SetFirst(SALOMEDS::AttributeTreeNode_ptr value);
- CORBA::Boolean HasFirst();
- SALOMEDS::AttributeTreeNode_ptr GetFirst();
- void SetTreeID(const char* value);
- char* GetTreeID();
- void Append(SALOMEDS::AttributeTreeNode_ptr value);
- void Prepend(SALOMEDS::AttributeTreeNode_ptr value);
- void InsertBefore(SALOMEDS::AttributeTreeNode_ptr value);
- void InsertAfter(SALOMEDS::AttributeTreeNode_ptr value);
- void Remove();
- CORBA::Long Depth();
- CORBA::Boolean IsRoot();
- CORBA::Boolean IsDescendant(SALOMEDS::AttributeTreeNode_ptr value);
- CORBA::Boolean IsFather(SALOMEDS::AttributeTreeNode_ptr value);
- CORBA::Boolean IsChild(SALOMEDS::AttributeTreeNode_ptr value);
- char* Label();
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeUserID.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_AttributeUserID.hxx"
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <Standard_GUID.hxx>
-
-SALOMEDS_AttributeUserID::SALOMEDS_AttributeUserID(const Handle(SALOMEDSImpl_AttributeUserID)& theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeUserID::SALOMEDS_AttributeUserID(SALOMEDS::AttributeUserID_ptr theAttr)
-:SALOMEDS_GenericAttribute(theAttr)
-{}
-
-SALOMEDS_AttributeUserID::~SALOMEDS_AttributeUserID()
-{}
-
-std::string SALOMEDS_AttributeUserID::Value()
-{
- std::string aValue;
- if(_isLocal) {
- char guid[40];
- Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_local_impl)->Value().ToCString(guid);
- aValue = std::string(guid);
- }
- else aValue = SALOMEDS::AttributeUserID::_narrow(_corba_impl)->Value();
- return aValue;
-}
-
-void SALOMEDS_AttributeUserID::SetValue(const std::string& value)
-{
- CheckLocked();
- if(_isLocal) Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_local_impl)->SetValue(Standard_GUID((char*)value.c_str()));
- else SALOMEDS::AttributeUserID::_narrow(_corba_impl)->SetValue(value.c_str());
-}
+++ /dev/null
-// File : SALOMEDS_AttributeUserID.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeUserID_HeaderFile
-#define SALOMEDS_AttributeUserID_HeaderFile
-
-#include "SALOMEDSClient_AttributeUserID.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeUserID.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SALOMEDS_AttributeUserID: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeUserID
-{
-public:
- SALOMEDS_AttributeUserID(const Handle(SALOMEDSImpl_AttributeUserID)& theAttr);
- SALOMEDS_AttributeUserID(SALOMEDS::AttributeUserID_ptr theAttr);
- ~SALOMEDS_AttributeUserID();
-
- virtual std::string Value();
- virtual void SetValue(const std::string& value);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_AttributeName_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_AttributeUserID_i.hxx"
-#include "SALOMEDS.hxx"
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-char* SALOMEDS_AttributeUserID_i::Value()
-{
- SALOMEDS::Locker lock;
- char aGUID[40];
- Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_impl)->ID().ToCString(aGUID);
- CORBA::String_var c_s = CORBA::string_dup(aGUID);
- return c_s._retn();
-}
-
-void SALOMEDS_AttributeUserID_i::SetValue(const char* value)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- CORBA::String_var Str = CORBA::string_dup(value);
- Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_impl)->SetValue(Standard_GUID(Standard_CString(Str)));
-}
-
+++ /dev/null
-// File : SALOMEDS_AttributeUserID_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDS_AttributeUserID_i_HeaderFile
-#define SALOMEDS_AttributeUserID_i_HeaderFile
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDSImpl_AttributeUserID.hxx"
-
-class SALOMEDS_AttributeUserID_i: public virtual POA_SALOMEDS::AttributeUserID,
- public virtual SALOMEDS_GenericAttribute_i {
-public:
-
- SALOMEDS_AttributeUserID_i(const Handle(SALOMEDSImpl_AttributeUserID)& theAttr, CORBA::ORB_ptr orb)
- :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
-
- ~SALOMEDS_AttributeUserID_i() {};
-
- char* Value();
- void SetValue(const char* value);
-
- static const Standard_GUID& DefaultID() {
- return SALOMEDSImpl_AttributeUserID::DefaultID();
- }
-
-};
-
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDS_Attributes.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_ATTRIBUTES__H__
-#define __SALOMEDS_ATTRIBUTES__H__
-
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeName.hxx"
-#include "SALOMEDSImpl_AttributeComment.hxx"
-#include "SALOMEDSImpl_AttributeInteger.hxx"
-#include "SALOMEDSImpl_AttributeReal.hxx"
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-#include "SALOMEDSImpl_AttributeUserID.hxx"
-#include "SALOMEDSImpl_AttributeReference.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-#include "SALOMEDSImpl_AttributePersistentRef.hxx"
-#include "SALOMEDSImpl_AttributeDrawable.hxx"
-#include "SALOMEDSImpl_AttributeSelectable.hxx"
-#include "SALOMEDSImpl_AttributeExpandable.hxx"
-#include "SALOMEDSImpl_AttributeOpened.hxx"
-#include "SALOMEDSImpl_AttributeTextColor.hxx"
-#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
-#include "SALOMEDSImpl_AttributePixMap.hxx"
-#include "SALOMEDSImpl_AttributeLocalID.hxx"
-#include "SALOMEDSImpl_AttributeTarget.hxx"
-#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
-#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
-#include "SALOMEDSImpl_AttributeTableOfString.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-#include "SALOMEDSImpl_AttributePythonObject.hxx"
-#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
-#include "SALOMEDSImpl_AttributeFileType.hxx"
-#include "SALOMEDSImpl_AttributeFlags.hxx"
-#include "SALOMEDSImpl_AttributeGraphic.hxx"
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_AttributeName_i.hxx"
-#include "SALOMEDS_AttributeComment_i.hxx"
-#include "SALOMEDS_AttributeInteger_i.hxx"
-#include "SALOMEDS_AttributeReal_i.hxx"
-#include "SALOMEDS_AttributeTreeNode_i.hxx"
-#include "SALOMEDS_AttributeUserID_i.hxx"
-#include "SALOMEDS_AttributeSequenceOfReal_i.hxx"
-#include "SALOMEDS_AttributeSequenceOfInteger_i.hxx"
-#include "SALOMEDS_AttributeIOR_i.hxx"
-#include "SALOMEDS_AttributePersistentRef_i.hxx"
-#include "SALOMEDS_AttributeDrawable_i.hxx"
-#include "SALOMEDS_AttributeSelectable_i.hxx"
-#include "SALOMEDS_AttributeExpandable_i.hxx"
-#include "SALOMEDS_AttributeOpened_i.hxx"
-#include "SALOMEDS_AttributeTextColor_i.hxx"
-#include "SALOMEDS_AttributeTextHighlightColor_i.hxx"
-#include "SALOMEDS_AttributePixMap_i.hxx"
-#include "SALOMEDS_AttributeLocalID_i.hxx"
-#include "SALOMEDS_AttributeTarget_i.hxx"
-#include "SALOMEDS_AttributeTableOfInteger_i.hxx"
-#include "SALOMEDS_AttributeTableOfReal_i.hxx"
-#include "SALOMEDS_AttributeTableOfString_i.hxx"
-#include "SALOMEDS_AttributeStudyProperties_i.hxx"
-#include "SALOMEDS_AttributePythonObject_i.hxx"
-#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
-#include "SALOMEDS_AttributeFileType_i.hxx"
-#include "SALOMEDS_AttributeFlags_i.hxx"
-#include "SALOMEDS_AttributeGraphic_i.hxx"
-
-#define __CreateCORBAAttribute(CORBA_Name) if (strcmp(aTypeOfAttribute, #CORBA_Name) == 0) { \
- Handle(SALOMEDSImpl_##CORBA_Name) A = Handle(SALOMEDSImpl_##CORBA_Name)::DownCast(theAttr); \
- SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(A, theOrb); \
- attr_servant = Attr; \
- anAttribute = Attr->CORBA_Name::_this(); \
- }
-
-
-#define __CreateGenericCORBAAttribute \
-__CreateCORBAAttribute(AttributeReal) \
-__CreateCORBAAttribute(AttributeInteger) \
-__CreateCORBAAttribute(AttributeSequenceOfReal) \
-__CreateCORBAAttribute(AttributeSequenceOfInteger) \
-__CreateCORBAAttribute(AttributeName) \
-__CreateCORBAAttribute(AttributeComment) \
-__CreateCORBAAttribute(AttributeIOR) \
-__CreateCORBAAttribute(AttributePixMap) \
-__CreateCORBAAttribute(AttributeLocalID) \
-__CreateCORBAAttribute(AttributeTableOfInteger) \
-__CreateCORBAAttribute(AttributeTableOfReal) \
-__CreateCORBAAttribute(AttributeTableOfString) \
-__CreateCORBAAttribute(AttributePythonObject) \
-__CreateCORBAAttribute(AttributePersistentRef) \
-__CreateCORBAAttribute(AttributeDrawable) \
-__CreateCORBAAttribute(AttributeSelectable) \
-__CreateCORBAAttribute(AttributeExpandable) \
-__CreateCORBAAttribute(AttributeOpened) \
-__CreateCORBAAttribute(AttributeTextColor) \
-__CreateCORBAAttribute(AttributeTextHighlightColor) \
-__CreateCORBAAttribute(AttributeTarget) \
-__CreateCORBAAttribute(AttributeStudyProperties) \
-__CreateCORBAAttribute(AttributeExternalFileDef) \
-__CreateCORBAAttribute(AttributeFileType) \
-__CreateCORBAAttribute(AttributeFlags) \
-__CreateCORBAAttribute(AttributeGraphic) \
-__CreateCORBAAttribute(AttributeTreeNode) \
-__CreateCORBAAttribute(AttributeUserID)
-
-#endif
+++ /dev/null
-// File : SALOMEDS_ChildIterator.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDS_ChildIterator.hxx"
-#include "SALOMEDS_SObject.hxx"
-
-using namespace std;
-
-SALOMEDS_ChildIterator::SALOMEDS_ChildIterator(const Handle(SALOMEDSImpl_ChildIterator)& theIterator)
-{
- _isLocal = true;
- _local_impl = theIterator;
- _corba_impl = SALOMEDS::ChildIterator::_nil();
-}
-
-SALOMEDS_ChildIterator::SALOMEDS_ChildIterator(SALOMEDS::ChildIterator_ptr theIterator)
-{
- _isLocal = false;
- _local_impl = NULL;
- _corba_impl = SALOMEDS::ChildIterator::_duplicate(theIterator);
-}
-
-SALOMEDS_ChildIterator::~SALOMEDS_ChildIterator()
-{
- if(!_isLocal) _corba_impl->Destroy();
-}
-
-void SALOMEDS_ChildIterator::Init()
-{
- if(_isLocal) _local_impl->Init();
- else _corba_impl->Init();
-}
-
-void SALOMEDS_ChildIterator::InitEx(bool theAllLevels)
-{
- if(_isLocal) _local_impl->InitEx(theAllLevels);
- else _corba_impl->InitEx(theAllLevels);
-}
-
-bool SALOMEDS_ChildIterator::More()
-{
- bool ret;
- if(_isLocal) ret = _local_impl->More();
- else ret = _corba_impl->More();
- return ret;
-}
-
-void SALOMEDS_ChildIterator::Next()
-{
- if(_isLocal) _local_impl->Next();
- else _corba_impl->Next();
-}
-
-_PTR(SObject) SALOMEDS_ChildIterator::Value()
-{
- SALOMEDSClient_SObject* aSO;
- if(_isLocal) aSO = new SALOMEDS_SObject(_local_impl->Value());
- else aSO = new SALOMEDS_SObject(_corba_impl->Value());
- return _PTR(SObject)(aSO);
-}
+++ /dev/null
-// File : SALOMEDS_ChildIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_CHILDITERATOR_H__
-#define __SALOMEDS_CHILDITERATOR_H__
-
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDSImpl_ChildIterator.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class SALOMEDS_ChildIterator: public SALOMEDSClient_ChildIterator
-{
-private:
- bool _isLocal;
- Handle(SALOMEDSImpl_ChildIterator) _local_impl;
- SALOMEDS::ChildIterator_var _corba_impl;
-
-public:
-
- SALOMEDS_ChildIterator(const Handle(SALOMEDSImpl_ChildIterator)& theIterator);
- SALOMEDS_ChildIterator(SALOMEDS::ChildIterator_ptr theIterator);
- ~SALOMEDS_ChildIterator();
-
- virtual void Init();
- virtual void InitEx(bool theAllLevels);
- virtual bool More();
- virtual void Next();
- virtual _PTR(SObject) Value();
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_ChildIterator_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_ChildIterator_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_ChildIterator_i::SALOMEDS_ChildIterator_i(const Handle(SALOMEDSImpl_ChildIterator)& theImpl,
- CORBA::ORB_ptr orb)
- : _it(theImpl)
-{
- SALOMEDS::Locker lock;
- _orb = CORBA::ORB::_duplicate(orb);
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_ChildIterator_i::~SALOMEDS_ChildIterator_i()
-{
-}
-
-//============================================================================
-/*! Function :Init
- *
- */
-//============================================================================
-void SALOMEDS_ChildIterator_i::Init()
-{
- SALOMEDS::Locker lock;
- _it->Init();
-}
-
-//============================================================================
-/*! Function :InitEx
- *
- */
-//============================================================================
-void SALOMEDS_ChildIterator_i::InitEx(CORBA::Boolean allLevels)
-{
- SALOMEDS::Locker lock;
- _it->InitEx (allLevels);
-}
-
-//============================================================================
-/*! Function : More
- *
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_ChildIterator_i::More()
-{
- SALOMEDS::Locker lock;
- return _it->More();
-}
-
- //============================================================================
-/*! Function : Next
- *
- */
-//============================================================================
-void SALOMEDS_ChildIterator_i::Next()
-{
- SALOMEDS::Locker lock;
- _it->Next();
-}
-
-
-//============================================================================
-/*! Function : Value
- * Purpose :
- */
-//============================================================================
-
-SALOMEDS::SObject_ptr SALOMEDS_ChildIterator_i::Value()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_SObject) aSO = _it->Value();
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
+++ /dev/null
-// File : SALOMEDS_ChildIterator_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_CHILDITERATOR_I_H__
-#define __SALOMEDS_CHILDITERATOR_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include <SALOME_GenericObj_i.hh>
-
-// Cascade headers
-#include "SALOMEDSImpl_ChildIterator.hxx"
-#include <stdio.h>
-
-class SALOMEDS_ChildIterator_i: public virtual POA_SALOMEDS::ChildIterator,
- public virtual PortableServer::RefCountServantBase,
- public virtual SALOME::GenericObj_i
-{
-private:
- CORBA::ORB_ptr _orb;
- Handle(SALOMEDSImpl_ChildIterator) _it;
-public:
-
- //! standard constructor
- SALOMEDS_ChildIterator_i(const Handle(SALOMEDSImpl_ChildIterator)&, CORBA::ORB_ptr);
-
- //! standard destructor
- ~SALOMEDS_ChildIterator_i();
-
- virtual void Init();
- virtual void InitEx(CORBA::Boolean);
- virtual CORBA::Boolean More();
- virtual void Next();
- virtual SALOMEDS::SObject_ptr Value();
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_Attributes.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSCLIENT_ATTRIBUTES__H__
-#define __SALOMEDSCLIENT_ATTRIBUTES__H__
-
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeName.hxx"
-#include "SALOMEDSImpl_AttributeComment.hxx"
-#include "SALOMEDSImpl_AttributeInteger.hxx"
-#include "SALOMEDSImpl_AttributeReal.hxx"
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-#include "SALOMEDSImpl_AttributeUserID.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-#include "SALOMEDSImpl_AttributePersistentRef.hxx"
-#include "SALOMEDSImpl_AttributeDrawable.hxx"
-#include "SALOMEDSImpl_AttributeSelectable.hxx"
-#include "SALOMEDSImpl_AttributeExpandable.hxx"
-#include "SALOMEDSImpl_AttributeOpened.hxx"
-#include "SALOMEDSImpl_AttributeTextColor.hxx"
-#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
-#include "SALOMEDSImpl_AttributePixMap.hxx"
-#include "SALOMEDSImpl_AttributeLocalID.hxx"
-#include "SALOMEDSImpl_AttributeTarget.hxx"
-#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
-#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
-#include "SALOMEDSImpl_AttributeTableOfString.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-#include "SALOMEDSImpl_AttributePythonObject.hxx"
-#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
-#include "SALOMEDSImpl_AttributeFileType.hxx"
-#include "SALOMEDSImpl_AttributeFlags.hxx"
-#include "SALOMEDSImpl_AttributeGraphic.hxx"
-
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDS_AttributeName.hxx"
-#include "SALOMEDS_AttributeComment.hxx"
-#include "SALOMEDS_AttributeInteger.hxx"
-#include "SALOMEDS_AttributeReal.hxx"
-#include "SALOMEDS_AttributeTreeNode.hxx"
-#include "SALOMEDS_AttributeUserID.hxx"
-#include "SALOMEDS_AttributeSequenceOfReal.hxx"
-#include "SALOMEDS_AttributeSequenceOfInteger.hxx"
-#include "SALOMEDS_AttributeIOR.hxx"
-#include "SALOMEDS_AttributePersistentRef.hxx"
-#include "SALOMEDS_AttributeDrawable.hxx"
-#include "SALOMEDS_AttributeSelectable.hxx"
-#include "SALOMEDS_AttributeExpandable.hxx"
-#include "SALOMEDS_AttributeOpened.hxx"
-#include "SALOMEDS_AttributeTextColor.hxx"
-#include "SALOMEDS_AttributeTextHighlightColor.hxx"
-#include "SALOMEDS_AttributePixMap.hxx"
-#include "SALOMEDS_AttributeLocalID.hxx"
-#include "SALOMEDS_AttributeTarget.hxx"
-#include "SALOMEDS_AttributeTableOfInteger.hxx"
-#include "SALOMEDS_AttributeTableOfReal.hxx"
-#include "SALOMEDS_AttributeTableOfString.hxx"
-#include "SALOMEDS_AttributeStudyProperties.hxx"
-#include "SALOMEDS_AttributePythonObject.hxx"
-#include "SALOMEDS_AttributeExternalFileDef.hxx"
-#include "SALOMEDS_AttributeFileType.hxx"
-#include "SALOMEDS_AttributeFlags.hxx"
-#include "SALOMEDS_AttributeGraphic.hxx"
-
-#define __CreateClientAttributeLocal(CORBA_Name) if (strcmp(aTypeOfAttribute.c_str(), #CORBA_Name) == 0) { \
- Handle(SALOMEDSImpl_##CORBA_Name) A = Handle(SALOMEDSImpl_##CORBA_Name)::DownCast(theGA); \
- aGA = new SALOMEDS_##CORBA_Name(A); \
- }
-
-#define __CreateClientAttributeCORBA(CORBA_Name) if (strcmp(aTypeOfAttribute.c_str(), #CORBA_Name) == 0) { \
- SALOMEDS::CORBA_Name##_var A = SALOMEDS::CORBA_Name::_narrow(theGA); \
- aGA = new SALOMEDS_##CORBA_Name(A); \
- }
-
-#define __CreateGenericClientAttributeLocal \
-__CreateClientAttributeLocal(AttributeReal) \
-__CreateClientAttributeLocal(AttributeInteger) \
-__CreateClientAttributeLocal(AttributeSequenceOfReal) \
-__CreateClientAttributeLocal(AttributeSequenceOfInteger) \
-__CreateClientAttributeLocal(AttributeName) \
-__CreateClientAttributeLocal(AttributeComment) \
-__CreateClientAttributeLocal(AttributeIOR) \
-__CreateClientAttributeLocal(AttributePixMap) \
-__CreateClientAttributeLocal(AttributeLocalID) \
-__CreateClientAttributeLocal(AttributeTableOfInteger) \
-__CreateClientAttributeLocal(AttributeTableOfReal) \
-__CreateClientAttributeLocal(AttributeTableOfString) \
-__CreateClientAttributeLocal(AttributePythonObject) \
-__CreateClientAttributeLocal(AttributePersistentRef) \
-__CreateClientAttributeLocal(AttributeDrawable) \
-__CreateClientAttributeLocal(AttributeSelectable) \
-__CreateClientAttributeLocal(AttributeExpandable) \
-__CreateClientAttributeLocal(AttributeOpened) \
-__CreateClientAttributeLocal(AttributeTextColor) \
-__CreateClientAttributeLocal(AttributeTextHighlightColor) \
-__CreateClientAttributeLocal(AttributeTarget) \
-__CreateClientAttributeLocal(AttributeStudyProperties) \
-__CreateClientAttributeLocal(AttributeExternalFileDef) \
-__CreateClientAttributeLocal(AttributeFileType) \
-__CreateClientAttributeLocal(AttributeFlags) \
-__CreateClientAttributeLocal(AttributeGraphic) \
-__CreateClientAttributeLocal(AttributeTreeNode) \
-__CreateClientAttributeLocal(AttributeUserID)
-
-#define __CreateGenericClientAttributeCORBA \
-__CreateClientAttributeCORBA(AttributeReal) \
-__CreateClientAttributeCORBA(AttributeInteger) \
-__CreateClientAttributeCORBA(AttributeSequenceOfReal) \
-__CreateClientAttributeCORBA(AttributeSequenceOfInteger) \
-__CreateClientAttributeCORBA(AttributeName) \
-__CreateClientAttributeCORBA(AttributeComment) \
-__CreateClientAttributeCORBA(AttributeIOR) \
-__CreateClientAttributeCORBA(AttributePixMap) \
-__CreateClientAttributeCORBA(AttributeLocalID) \
-__CreateClientAttributeCORBA(AttributeTableOfInteger) \
-__CreateClientAttributeCORBA(AttributeTableOfReal) \
-__CreateClientAttributeCORBA(AttributeTableOfString) \
-__CreateClientAttributeCORBA(AttributePythonObject) \
-__CreateClientAttributeCORBA(AttributePersistentRef) \
-__CreateClientAttributeCORBA(AttributeDrawable) \
-__CreateClientAttributeCORBA(AttributeSelectable) \
-__CreateClientAttributeCORBA(AttributeExpandable) \
-__CreateClientAttributeCORBA(AttributeOpened) \
-__CreateClientAttributeCORBA(AttributeTextColor) \
-__CreateClientAttributeCORBA(AttributeTextHighlightColor) \
-__CreateClientAttributeCORBA(AttributeTarget) \
-__CreateClientAttributeCORBA(AttributeStudyProperties) \
-__CreateClientAttributeCORBA(AttributeExternalFileDef) \
-__CreateClientAttributeCORBA(AttributeFileType) \
-__CreateClientAttributeCORBA(AttributeFlags) \
-__CreateClientAttributeCORBA(AttributeGraphic) \
-__CreateClientAttributeCORBA(AttributeTreeNode) \
-__CreateClientAttributeCORBA(AttributeUserID)
-
-#endif
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_DrawableAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class DrawableAttribute from SALOMEDS inherits Integer from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; value : Integer from Standard)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns DrawableAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable DrawableAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end DrawableAttribute;
+++ /dev/null
-
-
-#include "SALOMEDS_Driver_i.hxx"
-#include "utilities.h"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS.hxx"
-#include <stdlib.h>
-
-using namespace std;
-
-SALOMEDS_Driver_i::~SALOMEDS_Driver_i()
-{
-}
-
-unsigned char* SALOMEDS_Driver_i::Save(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const TCollection_AsciiString& theURL,
- long& theStreamLength,
- bool isMultiFile)
-{
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
- SALOMEDS::TMPFile_var aStream;
- CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
- SALOMEDS::unlock();
- aStream = _driver->Save(sco.in(), url, isMultiFile);
- theStreamLength = aStream->length();
- unsigned char* aRetStream = NULL;
- if(theStreamLength > 0) {
- aRetStream = new unsigned char[theStreamLength];
- memcpy(aRetStream, aStream->NP_data(), theStreamLength);
- }
- return aRetStream;
-}
-
-unsigned char* SALOMEDS_Driver_i::SaveASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const TCollection_AsciiString& theURL,
- long& theStreamLength,
- bool isMultiFile)
-{
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
- SALOMEDS::TMPFile_var aStream;
- CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
- SALOMEDS::unlock();
- aStream = _driver->SaveASCII(sco.in(), url, isMultiFile);
- theStreamLength = aStream->length();
- unsigned char* aRetStream = NULL;
- if(theStreamLength > 0) {
- aRetStream = new unsigned char[theStreamLength];
- memcpy(aRetStream, aStream->NP_data(), theStreamLength);
- }
- return aRetStream;
-}
-
-bool SALOMEDS_Driver_i::Load(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const unsigned char* theStream,
- const long theStreamLength,
- const TCollection_AsciiString& theURL,
- bool isMultiFile)
-{
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
- CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)theStream;
-
- SALOMEDS::TMPFile_var aStream;
- if(theStreamLength > 0)
- aStream = new SALOMEDS::TMPFile(theStreamLength, theStreamLength, anOctetBuf, 0);
- else
- aStream = new SALOMEDS::TMPFile(0);
-
- SALOMEDS::unlock();
- return _driver->Load(sco.in(), aStream.in(), url, isMultiFile);
-}
-
-bool SALOMEDS_Driver_i::LoadASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const unsigned char* theStream,
- const long theStreamLength,
- const TCollection_AsciiString& theURL,
- bool isMultiFile)
-{
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
- CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)theStream;
-
- SALOMEDS::TMPFile_var aStream;
- if(theStreamLength > 0)
- aStream = new SALOMEDS::TMPFile(theStreamLength, theStreamLength, anOctetBuf, 0);
- else
- aStream = new SALOMEDS::TMPFile(0);
-
- SALOMEDS::unlock();
- return _driver->LoadASCII(sco.in(), aStream.in(), url, isMultiFile);
-}
-
-void SALOMEDS_Driver_i::Close(const Handle(SALOMEDSImpl_SComponent)& theComponent)
-{
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
- SALOMEDS::unlock();
- _driver->Close(sco.in());
-}
-
-
-
-TCollection_AsciiString SALOMEDS_Driver_i::IORToLocalPersistentID(const Handle(SALOMEDSImpl_SObject)& theSObject,
- const TCollection_AsciiString& IORString,
- bool isMultiFile,
- bool isASCII)
-{
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theSObject, _orb);
- CORBA::String_var ior = CORBA::string_dup(IORString.ToCString());
- SALOMEDS::unlock();
- CORBA::String_var pers_string =_driver->IORToLocalPersistentID(so.in(), ior.in(), isMultiFile, isASCII);
- return TCollection_AsciiString(pers_string);
-}
-
-
-TCollection_AsciiString SALOMEDS_Driver_i::LocalPersistentIDToIOR(const Handle(SALOMEDSImpl_SObject)& theObject,
- const TCollection_AsciiString& aLocalPersistentID,
- bool isMultiFile,
- bool isASCII)
-{
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
- CORBA::String_var pers_string = CORBA::string_dup(aLocalPersistentID.ToCString());
- SALOMEDS::unlock();
- CORBA::String_var IOR =_driver->LocalPersistentIDToIOR(so.in(), pers_string.in(), isMultiFile, isASCII);
- return TCollection_AsciiString(IOR);
-}
-
-bool SALOMEDS_Driver_i::CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
- SALOMEDS::unlock();
- return _driver->CanCopy(so.in());
-}
-
-
-unsigned char* SALOMEDS_Driver_i::CopyFrom(const Handle(SALOMEDSImpl_SObject)& theObject,
- int& theObjectID,
- long& theStreamLength)
-{
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
- SALOMEDS::TMPFile_var aStream;
- CORBA::Long anObjectID;
-
- SALOMEDS::unlock();
- aStream = _driver->CopyFrom(so.in(), anObjectID);
-
- theObjectID = anObjectID;
- theStreamLength = aStream->length();
-
- unsigned char* aRetStream = NULL;
- if(theStreamLength > 0) {
- aRetStream = new unsigned char[theStreamLength];
- memcpy(aRetStream, aStream->NP_data(), theStreamLength);
- }
-
- return aRetStream;
-}
-
-bool SALOMEDS_Driver_i::CanPaste(const TCollection_AsciiString& theComponentName, int theObjectID)
-{
- SALOMEDS::unlock();
- return _driver->CanPaste(theComponentName.ToCString(), theObjectID);
-}
-
-TCollection_AsciiString SALOMEDS_Driver_i::PasteInto(const unsigned char* theStream,
- const long theStreamLength,
- int theObjectID,
- const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)theStream;
-
- SALOMEDS::TMPFile_var aStream;
- if(theStreamLength > 0)
- aStream = new SALOMEDS::TMPFile(theStreamLength, theStreamLength, anOctetBuf, 0);
- else
- aStream = new SALOMEDS::TMPFile(0);
-
- SALOMEDS::unlock();
- SALOMEDS::SObject_var ret_so = _driver->PasteInto(aStream.in(), theObjectID, so.in());
-
- return TCollection_AsciiString((char*)ret_so->GetID());
-}
-
-unsigned char* SALOMEDS_Driver_i::DumpPython(const Handle(SALOMEDSImpl_Study)& theStudy,
- bool isPublished,
- bool& isValidScript,
- long& theStreamLength)
-{
- SALOMEDS_Study_i * st_servant = new SALOMEDS_Study_i (theStudy, _orb);
- SALOMEDS::Study_var st = SALOMEDS::Study::_narrow(st_servant->_this());
- Engines::TMPFile_var aStream;
- CORBA::Boolean aValidScript, aPublished;
- aPublished = isPublished;
- Engines::Component_ptr aComponent = Engines::Component::_narrow(_driver);
- SALOMEDS::unlock();
- aStream = aComponent->DumpPython(st.in(), aPublished, aValidScript);
- SALOMEDS::lock();
- isValidScript = aValidScript;
- theStreamLength = aStream->length();
- unsigned char* aRetStream = NULL;
-
- if(theStreamLength > 0) {
- aRetStream = new unsigned char[theStreamLength];
- memcpy(aRetStream, aStream->NP_data(), theStreamLength);
- }
-
- return aRetStream;
-}
-
-//###############################################################################################################
-// SALOMEDS_DriverFactory
-//###############################################################################################################
-
-SALOMEDSImpl_Driver* SALOMEDS_DriverFactory_i::GetDriverByType(const TCollection_AsciiString& theComponentType)
-{
- CORBA::Object_var obj;
-
- TCollection_AsciiString aFactoryType;
- if (theComponentType == "SUPERV") aFactoryType = "SuperVisionContainer";
- else aFactoryType = "FactoryServer";
-
- SALOMEDS::unlock();
- obj = SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component(aFactoryType.ToCString(),
- theComponentType.ToCString());
-
- if (CORBA::is_nil(obj)) {
- obj = SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component("FactoryServerPy", theComponentType.ToCString());
- }
-
- if (!CORBA::is_nil(obj)) {
- SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(obj);
- return new SALOMEDS_Driver_i(aDriver, _orb);
- }
-
- return NULL;
-}
-
-SALOMEDSImpl_Driver* SALOMEDS_DriverFactory_i::GetDriverByIOR(const TCollection_AsciiString& theIOR)
-{
- CORBA::Object_var obj;
- obj = _orb->string_to_object(theIOR.ToCString());
-
- if (!CORBA::is_nil(obj)) {
- SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(obj);
- return new SALOMEDS_Driver_i(aDriver, _orb);
- }
-
- return NULL;
-}
+++ /dev/null
-#ifndef __SALOMEDS_DRIVER_I_H__
-#define __SALOMEDS_DRIVER_I_H__
-
-#include <CORBA.h>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_Driver.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOME_Component)
-
-class Standard_EXPORT SALOMEDS_Driver_i : public virtual SALOMEDSImpl_Driver
-{
-protected:
- SALOMEDS::Driver_var _driver;
- CORBA::ORB_var _orb;
-
-public:
-
- SALOMEDS_Driver_i(SALOMEDS::Driver_ptr theDriver, CORBA::ORB_ptr theORB)
- {
- _driver = SALOMEDS::Driver::_duplicate(theDriver);
- _orb = CORBA::ORB::_duplicate(theORB);
- }
-
- ~SALOMEDS_Driver_i();
-
- virtual TCollection_AsciiString GetIOR()
- {
- CORBA::String_var ior = _orb->object_to_string(_driver);
- return TCollection_AsciiString(ior);
- }
-
- virtual unsigned char* Save(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const TCollection_AsciiString& theURL,
- long& theStreamLength,
- bool isMultiFile);
-
- virtual unsigned char* SaveASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const TCollection_AsciiString& theURL,
- long& theStreamLength,
- bool isMultiFile);
-
- virtual bool Load(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const unsigned char* theStream,
- const long theStreamLength,
- const TCollection_AsciiString& theURL,
- bool isMultiFile);
-
- virtual bool LoadASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const unsigned char* theStream,
- const long theStreamLength,
- const TCollection_AsciiString& theURL,
- bool isMultiFile);
-
- virtual void Close(const Handle(SALOMEDSImpl_SComponent)& theComponent);
-
- virtual TCollection_AsciiString ComponentDataType()
- {
- CORBA::String_var ior = _driver->ComponentDataType();
- return TCollection_AsciiString(ior);
- }
-
-
- virtual TCollection_AsciiString IORToLocalPersistentID(const Handle(SALOMEDSImpl_SObject)& theSObject,
- const TCollection_AsciiString& IORString,
- bool isMultiFile,
- bool isASCII);
-
- virtual TCollection_AsciiString LocalPersistentIDToIOR(const Handle(SALOMEDSImpl_SObject)& theSObject,
- const TCollection_AsciiString& aLocalPersistentID,
- bool isMultiFile,
- bool isASCII);
-
- virtual bool CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject);
-
- virtual unsigned char* CopyFrom(const Handle(SALOMEDSImpl_SObject)& theObject,
- int& theObjectID,
- long& theStreamLength);
-
- virtual bool CanPaste(const TCollection_AsciiString& theComponentName, int theObjectID);
-
- virtual TCollection_AsciiString PasteInto(const unsigned char* theStream,
- const long theStreamLength,
- int theObjectID,
- const Handle(SALOMEDSImpl_SObject)& theObject);
-
- virtual unsigned char* DumpPython(const Handle(SALOMEDSImpl_Study)& theStudy,
- bool isPublished,
- bool& isValidScript,
- long& theStreamLength);
-};
-
-#include "SALOME_NamingService.hxx"
-#include "SALOME_LifeCycleCORBA.hxx"
-
-class SALOMEDS_DriverFactory_i : public virtual SALOMEDSImpl_DriverFactory
-{
-protected:
- CORBA::ORB_ptr _orb;
- SALOME_NamingService* _name_service;
-
-public:
-
- SALOMEDS_DriverFactory_i(CORBA::ORB_ptr theORB)
- {
- _orb = CORBA::ORB::_duplicate(theORB);
- _name_service = new SALOME_NamingService(_orb);
- }
-
-
- ~SALOMEDS_DriverFactory_i()
- {
- delete _name_service;
- }
-
- virtual SALOMEDSImpl_Driver* GetDriverByType(const TCollection_AsciiString& theComponentType);
-
- virtual SALOMEDSImpl_Driver* GetDriverByIOR(const TCollection_AsciiString& theIOR);
-};
-
-#endif
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_ExpandableAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class ExpandableAttribute from SALOMEDS inherits Integer from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; value : Integer from Standard)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns ExpandableAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable ExpandableAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end ExpandableAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_ExternalFileDef.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class ExternalFileDef from SALOMEDS inherits Comment from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF;
- Name : ExtendedString from TCollection)
- returns ExternalFileDef from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable ExternalFileDef from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end ExternalFileDef;
+++ /dev/null
-#ifndef _Standard_GUID_HeaderFile
-#include <Standard_GUID.hxx>
-#endif
-#ifndef _TDF_Label_HeaderFile
-#include <TDF_Label.hxx>
-#endif
-#ifndef _TCollection_ExtendedString_HeaderFile
-#include <TCollection_ExtendedString.hxx>
-#endif
-#ifndef _TDF_Attribute_HeaderFile
-#include <TDF_Attribute.hxx>
-#endif
-#ifndef _TDF_RelocationTable_HeaderFile
-#include <TDF_RelocationTable.hxx>
-#endif
-#ifndef _SALOMEDS_ExternalFileDef_HeaderFile
-#include <SALOMEDS_ExternalFileDef.hxx>
-#endif
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_FileType.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class FileType from SALOMEDS inherits Comment from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF;
- Name : ExtendedString from TCollection)
- returns FileType from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable FileType from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end FileType;
+++ /dev/null
-#ifndef _Standard_GUID_HeaderFile
-#include <Standard_GUID.hxx>
-#endif
-#ifndef _TDF_Label_HeaderFile
-#include <TDF_Label.hxx>
-#endif
-#ifndef _TCollection_ExtendedString_HeaderFile
-#include <TCollection_ExtendedString.hxx>
-#endif
-#ifndef _TDF_Attribute_HeaderFile
-#include <TDF_Attribute.hxx>
-#endif
-#ifndef _TDF_RelocationTable_HeaderFile
-#include <TDF_RelocationTable.hxx>
-#endif
-#ifndef _SALOMEDS_FileType_HeaderFile
-#include <SALOMEDS_FileType.hxx>
-#endif
+++ /dev/null
-// File : SALOMEDS_GenericAttribute.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDS_ClientAttributes.hxx"
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include "OpUtil.hxx"
-
-using namespace std;
-
-SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA)
-{
- _isLocal = true;
- _local_impl = theGA;
- _corba_impl = SALOMEDS::GenericAttribute::_nil();
-}
-
-SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(SALOMEDS::GenericAttribute_ptr theGA)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
-
- long addr = theGA->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
- if(_isLocal) {
- _local_impl = ((SALOMEDSImpl_GenericAttribute*)(addr));
- _corba_impl = SALOMEDS::GenericAttribute::_nil();
- }
- else {
- _local_impl = NULL;
- _corba_impl = SALOMEDS::GenericAttribute::_duplicate(theGA);
- }
-}
-
-SALOMEDS_GenericAttribute::~SALOMEDS_GenericAttribute()
-{
- if (!_isLocal) {
- _corba_impl->Destroy();
- }
-}
-
-void SALOMEDS_GenericAttribute::CheckLocked()
-{
- if(_isLocal) {
- try {
- _local_impl->CheckLocked();
- }
- catch(...) {
- throw SALOMEDS::GenericAttribute::LockProtection();
- }
- }
- else {
- _corba_impl->CheckLocked();
- }
-}
-
-std::string SALOMEDS_GenericAttribute::Type()
-{
- std::string aType;
- if(_isLocal) {
- aType = _local_impl->Type().ToCString();
- }
- else {
- aType = _corba_impl->Type();
- }
- return aType;
-}
-
-std::string SALOMEDS_GenericAttribute::GetClassType()
-{
- std::string aType;
- if(_isLocal) {
- aType = _local_impl->GetClassType().ToCString();
- }
- else {
- aType = _corba_impl->GetClassType();
- }
- return aType;
-}
-
-_PTR(SObject) SALOMEDS_GenericAttribute::GetSObject()
-{
- SALOMEDSClient_SObject* aSO = NULL;
- if(_isLocal) {
- aSO = new SALOMEDS_SObject(_local_impl->GetSObject());
- }
- else {
- aSO = new SALOMEDS_SObject(_corba_impl->GetSObject());
- }
-
- return _PTR(SObject)(aSO);
-}
-
-
-SALOMEDS_GenericAttribute* SALOMEDS_GenericAttribute::CreateAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA)
-{
- SALOMEDS_GenericAttribute* aGA = NULL;
- std::string aTypeOfAttribute = theGA->GetClassType().ToCString();
- __CreateGenericClientAttributeLocal
- return aGA;
-}
-
-SALOMEDS_GenericAttribute* SALOMEDS_GenericAttribute::CreateAttribute(SALOMEDS::GenericAttribute_ptr theGA)
-{
- SALOMEDS_GenericAttribute* aGA = NULL;
- std::string aTypeOfAttribute = theGA->GetClassType();
- __CreateGenericClientAttributeCORBA
- return aGA;
-}
-
+++ /dev/null
-// File : SALOMEDS_GenericAttribute.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _GENERIC_ATTRIBUTE_HXX_
-#define _GENERIC_ATTRIBUTE_HXX_
-
-#include <exception>
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-
-class Standard_EXPORT SALOMEDS_GenericAttribute: public virtual SALOMEDSClient_GenericAttribute
-{
-protected:
- bool _isLocal;
- Handle(SALOMEDSImpl_GenericAttribute) _local_impl;
- SALOMEDS::GenericAttribute_var _corba_impl;
-
-public:
- SALOMEDS_GenericAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA);
- SALOMEDS_GenericAttribute(SALOMEDS::GenericAttribute_ptr theGA);
- virtual ~SALOMEDS_GenericAttribute();
-
- void CheckLocked();
- std::string Type();
- std::string GetClassType();
- _PTR(SObject) GetSObject();
-
- static SALOMEDS_GenericAttribute* CreateAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA);
- static SALOMEDS_GenericAttribute* CreateAttribute(SALOMEDS::GenericAttribute_ptr theGA);
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_GenericAttribute_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "utilities.h"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_Attributes.hxx"
-#include "SALOMEDS.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "Utils_ExceptHandlers.hxx"
-#include <TCollection_AsciiString.hxx>
-#include <map>
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include "OpUtil.hxx"
-
-using namespace std;
-
-UNEXPECT_CATCH(GALockProtection, SALOMEDS::GenericAttribute::LockProtection);
-
-SALOMEDS_GenericAttribute_i::SALOMEDS_GenericAttribute_i(const Handle(TDF_Attribute)& theImpl, CORBA::ORB_ptr theOrb)
-{
- _orb = CORBA::ORB::_duplicate(theOrb);
- _impl = theImpl;
-}
-
-void SALOMEDS_GenericAttribute_i::CheckLocked() throw (SALOMEDS::GenericAttribute::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(GALockProtection);
-
- if (!_impl.IsNull() && _impl->IsValid() && !CORBA::is_nil(_orb)) {
- try {
- SALOMEDSImpl_GenericAttribute::Impl_CheckLocked(_impl);
- }
- catch (...) {
- throw SALOMEDS::GenericAttribute::LockProtection();
- }
- }
-}
-
-SALOMEDS::SObject_ptr SALOMEDS_GenericAttribute_i::GetSObject()
-{
- SALOMEDS::Locker lock;
- if (_impl.IsNull() || _impl->Label().IsNull()) return SALOMEDS::SObject::_nil();
- Handle(SALOMEDSImpl_SObject) so_impl = SALOMEDSImpl_Study::SObject(_impl->Label());
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (so_impl, _orb);
- return so._retn();
-}
-
-
-char* SALOMEDS_GenericAttribute_i::Type()
-{
- SALOMEDS::Locker lock;
- if (!_impl.IsNull()) {
- return CORBA::string_dup(SALOMEDSImpl_GenericAttribute::Impl_GetType(_impl));
- }
-
- return "";
-}
-
-char* SALOMEDS_GenericAttribute_i::GetClassType()
-{
- SALOMEDS::Locker lock;
- if (!_impl.IsNull()) {
- return CORBA::string_dup(SALOMEDSImpl_GenericAttribute::Impl_GetClassType(_impl));
- }
-
- return "";
-}
-
-
-SALOMEDS::GenericAttribute_ptr SALOMEDS_GenericAttribute_i::CreateAttribute(const Handle(TDF_Attribute)& theAttr,
- CORBA::ORB_ptr theOrb)
-{
-/*
- SALOMEDS::Locker lock;
-
- static std::map<TDF_Attribute*, SALOMEDS_GenericAttribute_i*> _mapOfAttrib;
- SALOMEDS::GenericAttribute_var anAttribute;
- SALOMEDS_GenericAttribute_i* attr_servant = NULL;
-
- if(_mapOfAttrib.find(theAttr.operator->()) != _mapOfAttrib.end()) {
- attr_servant = _mapOfAttrib[theAttr.operator->()];
- anAttribute = SALOMEDS::GenericAttribute::_narrow(attr_servant->_this());
- }
- else {
- char* aTypeOfAttribute = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr)->GetClassType().ToCString();
- __CreateGenericCORBAAttribute
- _mapOfAttrib[theAttr.operator->()] = attr_servant;
- }
-*/
- // mpv: now servants Destroyed by common algos of CORBA
- char* aTypeOfAttribute = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr)->GetClassType().ToCString();
- SALOMEDS::GenericAttribute_var anAttribute;
- SALOMEDS_GenericAttribute_i* attr_servant = NULL;
- __CreateGenericCORBAAttribute
-
- return anAttribute._retn();
-}
-
-//===========================================================================
-// PRIVATE FUNCTIONS
-//===========================================================================
-long SALOMEDS_GenericAttribute_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
- isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
- TDF_Attribute* local_impl = _impl.operator->();
- return ((long)local_impl);
-}
+++ /dev/null
-// File : SALOMEDS_GenericAttribute_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _GENERIC_ATTRIBUTE_I_HXX_
-#define _GENERIC_ATTRIBUTE_I_HXX_
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include <SALOME_GenericObj_i.hh>
-#include <TDF_Attribute.hxx>
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_EXPORT SALOMEDS_GenericAttribute_i: public virtual POA_SALOMEDS::GenericAttribute,
- public virtual PortableServer::RefCountServantBase,
- public virtual SALOME::GenericObj_i
-{
-
-protected:
- Handle(TDF_Attribute) _impl;
- CORBA::ORB_ptr _orb;
-
-public:
- SALOMEDS_GenericAttribute_i(const Handle(TDF_Attribute)& theImpl, CORBA::ORB_ptr theOrb);
- virtual ~SALOMEDS_GenericAttribute_i() {};
-
- void CheckLocked() throw (SALOMEDS::GenericAttribute::LockProtection);
-
- virtual char* Type();
-
- char* GetClassType();
-
- SALOMEDS::SObject_ptr GetSObject();
-
- virtual Handle(TDF_Attribute) GetImpl() { return _impl; }
-
- static SALOMEDS::GenericAttribute_ptr CreateAttribute(const Handle(TDF_Attribute)& theAttr, CORBA::ORB_ptr theOrb);
-
- virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
-};
-
-#endif
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_IORAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class IORAttribute from SALOMEDS inherits Comment from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; string : ExtendedString from TCollection)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns IORAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable IORAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end IORAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_LocalIDAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class LocalIDAttribute from SALOMEDS inherits Integer from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; value : Integer from Standard)
- returns OpenedAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable OpenedAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end LocalIDAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_OCAFApplication.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class OCAFApplication from SALOMEDS inherits Application from TDocStd
-
- ---Purpose:
-
-uses
- Label from TDF,
- SequenceOfExtendedString from TColStd,
- CString from Standard,
- Document from TDocStd
-
-
-is
-
- Create
- returns mutable OCAFApplication from SALOMEDS;
-
- Formats(me: mutable; Formats: out SequenceOfExtendedString from TColStd)
- is redefined;
-
- ResourcesName (me: mutable) returns CString from Standard;
-
-end OCAFApplication;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_OpenedAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class OpenedAttribute from SALOMEDS inherits Integer from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; value : Integer from Standard)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns OpenedAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable OpenedAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end OpenedAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_PersRefAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class PersRefAttribute from SALOMEDS inherits Comment from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; string : ExtendedString from TCollection)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns PersRefAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable PersRefAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end PersRefAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_PixMapAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class PixMapAttribute from SALOMEDS inherits Comment from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; string : ExtendedString from TCollection)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns PixMapAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable PixMapAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end PixMapAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data server
---
--- Copyright (C) 2003 CEA/DEN, EDF R&D
---
---
---
--- File : SALOMEDS_PythonObjectAttribute.cdl
--- Author : Michael Ponikarov
--- Module : SALOME
-
-class PythonObjectAttribute from SALOMEDS inherits Attribute from TDF
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- DataSet from TDF,
- RelocationTable from TDF,
- Data from TDF,
- HArray1OfCharacter from TColStd
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF)
- returns PythonObjectAttribute from SALOMEDS;
-
- ---Purpose: Common methods
- -- ============
-
- Create
- returns mutable PythonObjectAttribute from SALOMEDS;
-
- SetObject(me: mutable; theSequence : CString from Standard; theScript : Boolean from Standard);
-
- GetObject(me) returns CString from Standard;
-
- IsScript(me) returns Boolean from Standard;
-
- GetLength(me) returns Integer from Standard;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-fields
-
- mySequence : CString from Standard;
- myIsScript : Boolean from Standard;
-
-end PythonObjectAttribute;
+++ /dev/null
-// File : SALOMEDS_SComponent.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDS_SComponent.hxx"
-#include "SALOMEDS_SComponent_i.hxx"
-#include <string>
-#include <TCollection_AsciiString.hxx>
-
-using namespace std;
-
-SALOMEDS_SComponent::SALOMEDS_SComponent(SALOMEDS::SComponent_ptr theSComponent)
-:SALOMEDS_SObject(theSComponent)
-{}
-
-SALOMEDS_SComponent::SALOMEDS_SComponent(const Handle(SALOMEDSImpl_SComponent)& theSComponent)
-:SALOMEDS_SObject(theSComponent)
-{}
-
-SALOMEDS_SComponent::~SALOMEDS_SComponent()
-{}
-
-std::string SALOMEDS_SComponent::ComponentDataType()
-{
- std::string aType;
- if(_isLocal) {
- aType = (Handle(SALOMEDSImpl_SComponent)::DownCast(GetLocalImpl()))->ComponentDataType().ToCString();
- }
- else aType = (SALOMEDS::SComponent::_narrow(GetCORBAImpl()))->ComponentDataType();
-
- return aType;
-}
-
-bool SALOMEDS_SComponent::ComponentIOR(std::string& theID)
-{
- bool ret;
- if(_isLocal) {
- TCollection_AsciiString anIOR;
- ret = (Handle(SALOMEDSImpl_SComponent)::DownCast(GetLocalImpl()))->ComponentIOR(anIOR);
- theID = anIOR.ToCString();
- }
- else {
- CORBA::String_var anIOR;
- ret = (SALOMEDS::SComponent::_narrow(GetCORBAImpl()))->ComponentIOR(anIOR.out());
- theID = std::string(anIOR.in());
- }
-
- return ret;
-}
-
-SALOMEDS::SComponent_ptr SALOMEDS_SComponent::GetSComponent()
-{
- if(_isLocal) {
- if(!CORBA::is_nil(_corba_impl)) return SALOMEDS::SComponent::_narrow(GetCORBAImpl());
- SALOMEDS::SComponent_var aSCO = SALOMEDS_SComponent_i::New(Handle(SALOMEDSImpl_SComponent)::DownCast(GetLocalImpl()),
- _orb);
- return aSCO._retn();
- }
- else {
- return SALOMEDS::SComponent::_narrow(GetCORBAImpl());
- }
-
- return SALOMEDS::SComponent::_nil();
-}
-
+++ /dev/null
-// File : SALOMEDS_SComponent.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_SCOMPONENT_H__
-#define __SALOMEDS_SCOMPONENT_H__
-
-#include "SALOMEDSClient_SComponent.hxx"
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class Standard_EXPORT SALOMEDS_SComponent: public SALOMEDS_SObject, public SALOMEDSClient_SComponent
-{
-public:
-
- SALOMEDS_SComponent(const Handle(SALOMEDSImpl_SComponent)& theSComponent);
- SALOMEDS_SComponent(SALOMEDS::SComponent_ptr theSComponent);
- ~SALOMEDS_SComponent();
-
- virtual std::string ComponentDataType();
- virtual bool ComponentIOR(std::string& theID);
-
- SALOMEDS::SComponent_ptr GetSComponent();
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_SComponentIterator.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDS_SComponentIterator.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDS_SComponent.hxx"
-
-SALOMEDS_SComponentIterator::SALOMEDS_SComponentIterator(const SALOMEDSImpl_SComponentIterator& theIterator)
-:_local_impl(theIterator)
-{
- _isLocal = true;
- _corba_impl = SALOMEDS::SComponentIterator::_nil();
-}
-
-SALOMEDS_SComponentIterator::SALOMEDS_SComponentIterator(SALOMEDS::SComponentIterator_ptr theIterator)
-{
- _isLocal = false;
- _corba_impl = SALOMEDS::SComponentIterator::_duplicate(theIterator);
-}
-
-SALOMEDS_SComponentIterator::~SALOMEDS_SComponentIterator()
-{
- if(!_isLocal) _corba_impl->Destroy();
-}
-
-void SALOMEDS_SComponentIterator::Init()
-{
- if(_isLocal) _local_impl.Init();
- else _corba_impl->Init();
-}
-
-bool SALOMEDS_SComponentIterator::More()
-{
- bool ret;
- if(_isLocal) ret = _local_impl.More();
- else ret = _corba_impl->More();
- return ret;
-}
-
-void SALOMEDS_SComponentIterator::Next()
-{
- if(_isLocal) _local_impl.Next();
- else _corba_impl->Next();
-}
-
-_PTR(SComponent) SALOMEDS_SComponentIterator::Value()
-{
- SALOMEDSClient_SComponent* aSCO = NULL;
- if(_isLocal) aSCO = new SALOMEDS_SComponent(_local_impl.Value());
- else aSCO = new SALOMEDS_SComponent(_corba_impl->Value());
- return _PTR(SComponent)(aSCO);
-}
+++ /dev/null
-// File : SALOMEDS_SComponentIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_SCOMPONENTITERATOR_H__
-#define __SALOMEDS_SCOMPONENTITERATOR_H__
-
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDSImpl_SComponentIterator.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class SALOMEDS_SComponentIterator: public SALOMEDSClient_SComponentIterator
-{
-public:
- SALOMEDS_SComponentIterator(const SALOMEDSImpl_SComponentIterator& theIterator);
- SALOMEDS_SComponentIterator(SALOMEDS::SComponentIterator_ptr theIterator);
- ~SALOMEDS_SComponentIterator();
-
-private:
- bool _isLocal;
- SALOMEDSImpl_SComponentIterator _local_impl;
- SALOMEDS::SComponentIterator_var _corba_impl;
-
-public:
- virtual void Init();
- virtual bool More();
- virtual void Next();
- virtual _PTR(SComponent) Value();
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_SComponentIterator_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_SComponentIterator_i.hxx"
-#include "SALOMEDS.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-
-using namespace std;
-
-//============================================================================
-/*! Function : constructor
- *
- */
-//============================================================================
-
-SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl,
- CORBA::ORB_ptr orb)
-:_impl(theImpl)
-{
- _orb = CORBA::ORB::_duplicate(orb);
-}
-
-//============================================================================
-/*! Function : destructor
- *
- */
-//============================================================================
-SALOMEDS_SComponentIterator_i::~SALOMEDS_SComponentIterator_i()
-{
-}
-
-//============================================================================
-/*! Function : Init
- *
- */
-//============================================================================
-void SALOMEDS_SComponentIterator_i::Init()
-{
- SALOMEDS::Locker lock;
- _impl.Init();
-}
-
-//============================================================================
-/*! Function : More
- *
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_SComponentIterator_i::More()
-{
- SALOMEDS::Locker lock;
- return _impl.More();
-}
-
- //============================================================================
-/*! Function : Next
- */
-//============================================================================
-void SALOMEDS_SComponentIterator_i::Next()
-{
- SALOMEDS::Locker lock;
- _impl.Next();
-}
-
-
-//============================================================================
-/*! Function : Value
- *
- */
-//============================================================================
-SALOMEDS::SComponent_ptr SALOMEDS_SComponentIterator_i::Value()
-{
- SALOMEDS::Locker lock;
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (_impl.Value(), _orb);
- return sco._retn();
-}
-
+++ /dev/null
-// File : SALOMEDS_SComponentIterator_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_SCOMPONENTITERATOR_I_H__
-#define __SALOMEDS_SCOMPONENTITERATOR_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include <SALOME_GenericObj_i.hh>
-
-//SALOMEDS headers
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDSImpl_SComponentIterator.hxx"
-
-class SALOMEDS_SComponentIterator_i:public virtual POA_SALOMEDS::SComponentIterator,
- public virtual PortableServer::RefCountServantBase,
- public virtual SALOME::GenericObj_i
-{
-
-private:
-
- CORBA::ORB_ptr _orb;
- SALOMEDSImpl_SComponentIterator _impl;
-
-public:
-
- SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl, CORBA::ORB_ptr);
-
- ~SALOMEDS_SComponentIterator_i();
-
- virtual void Init();
- virtual CORBA::Boolean More();
- virtual void Next();
- virtual SALOMEDS::SComponent_ptr Value();
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_SComponent_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS.hxx"
-#include "utilities.h"
-#include <map>
-
-using namespace std;
-
-SALOMEDS::SComponent_ptr SALOMEDS_SComponent_i::New(const Handle(SALOMEDSImpl_SComponent)& theImpl, CORBA::ORB_ptr theORB)
-{
-/*
- static std::map<SALOMEDSImpl_SComponent*, SALOMEDS_SComponent_i*> _mapOfSCO;
- SALOMEDS::SComponent_var sco;
- SALOMEDS_SComponent_i* sco_servant = NULL;
-
- if(_mapOfSCO.find(theImpl.operator->()) != _mapOfSCO.end()) {
- sco_servant = _mapOfSCO[theImpl.operator->()];
- }
- else {
- sco_servant = new SALOMEDS_SComponent_i(theImpl, theORB);
- _mapOfSCO[theImpl.operator->()] = sco_servant;
- }
-
- sco = SALOMEDS::SComponent::_narrow(sco_servant->SComponent::_this());
-*/
- SALOMEDS_SComponent_i* sco_servant = new SALOMEDS_SComponent_i(theImpl, theORB);
- SALOMEDS::SComponent_var sco = SALOMEDS::SComponent::_narrow(sco_servant->SComponent::_this());
-
- return sco._retn();
-}
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_SComponent_i::SALOMEDS_SComponent_i(const Handle(SALOMEDSImpl_SComponent)& theImpl, CORBA::ORB_ptr orb)
- :SALOMEDS_SObject_i(theImpl, orb)
-{}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_SComponent_i::~SALOMEDS_SComponent_i()
-{}
-
-//============================================================================
-/*! Function : ComponentDataType
- * Purpose :
- */
-//============================================================================
-char* SALOMEDS_SComponent_i::ComponentDataType()
-{
- SALOMEDS::Locker lock;
- TCollection_AsciiString aType = Handle(SALOMEDSImpl_SComponent)::DownCast(_impl)->ComponentDataType();
- return CORBA::string_dup(aType.ToCString());
-}
-
-
-//============================================================================
-/*! Function : ComponentIOR
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_SComponent_i::ComponentIOR(CORBA::String_out IOR)
-{
- SALOMEDS::Locker lock;
- TCollection_AsciiString ior;
- if(!Handle(SALOMEDSImpl_SComponent)::DownCast(_impl)->ComponentIOR(ior)) return false;
- IOR = CORBA::string_dup(ior.ToCString());
- return true;
-}
+++ /dev/null
-// File : SALOMEDS_SComponent_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_SCOMPONENT_I_H__
-#define __SALOMEDS_SCOMPONENT_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-//SALOMEDS headers
-#include "SALOMEDS_SObject_i.hxx"
-
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-
-class Standard_EXPORT SALOMEDS_SComponent_i: public POA_SALOMEDS::SComponent,
- public SALOMEDS_SObject_i
-{
-
-public:
-
- static SALOMEDS::SComponent_ptr New(const Handle(SALOMEDSImpl_SComponent)&, CORBA::ORB_ptr);
-
- SALOMEDS_SComponent_i(const Handle(SALOMEDSImpl_SComponent)&, CORBA::ORB_ptr);
-
- virtual ~SALOMEDS_SComponent_i();
-
- virtual char* ComponentDataType();
- virtual CORBA::Boolean ComponentIOR(CORBA::String_out theID);
-
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_SObject.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDS_SComponent.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-#include "SALOMEDS_Study.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include "OpUtil.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-SALOMEDS_SObject::SALOMEDS_SObject(SALOMEDS::SObject_ptr theSObject)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
-
- long addr = theSObject->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
- if(_isLocal) {
- _local_impl = ((SALOMEDSImpl_SObject*)(addr));
- _corba_impl = SALOMEDS::SObject::_duplicate(theSObject);
- }
- else {
- _local_impl = NULL;
- _corba_impl = SALOMEDS::SObject::_duplicate(theSObject);
- }
-
- init_orb();
-}
-
-SALOMEDS_SObject::SALOMEDS_SObject(const Handle(SALOMEDSImpl_SObject)& theSObject)
-:_isLocal(true)
-{
- _corba_impl = SALOMEDS::SObject::_nil();
- _local_impl = theSObject;
-
- init_orb();
-}
-
-SALOMEDS_SObject::~SALOMEDS_SObject()
-{
- if (!_isLocal) {
- _corba_impl->Destroy();
- }
-}
-
-std::string SALOMEDS_SObject::GetID()
-{
- std::string aValue;
- if(_isLocal) aValue = _local_impl->GetID().ToCString();
- else aValue = _corba_impl->GetID();
- return aValue;
-}
-
-_PTR(SComponent) SALOMEDS_SObject::GetFatherComponent()
-{
- if(_isLocal) {
- Handle(SALOMEDSImpl_SComponent) aSCO = Handle(SALOMEDSImpl_SComponent)::DownCast(_local_impl->GetFatherComponent());
- return _PTR(SComponent)(new SALOMEDS_SComponent(aSCO));
- }
- return _PTR(SComponent)(new SALOMEDS_SComponent(_corba_impl->GetFatherComponent()));
-}
-
-_PTR(SObject) SALOMEDS_SObject::GetFather()
-{
- if(_isLocal) return _PTR(SObject)(new SALOMEDS_SObject(_local_impl->GetFather()));
- return _PTR(SObject)(new SALOMEDS_SObject(_corba_impl->GetFather()));
-}
-
-bool SALOMEDS_SObject::FindAttribute(_PTR(GenericAttribute)& anAttribute, const std::string& aTypeOfAttribute)
-{
- bool ret = false;
- if(_isLocal) {
- Handle(SALOMEDSImpl_GenericAttribute) anAttr;
- ret = _local_impl->FindAttribute(anAttr, (char*)aTypeOfAttribute.c_str());
- if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(anAttr));
- }
- else {
- SALOMEDS::GenericAttribute_var anAttr;
- ret = _corba_impl->FindAttribute(anAttr.out(), aTypeOfAttribute.c_str());
- if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(anAttr));
- }
-
- return ret;
-}
-
-bool SALOMEDS_SObject::ReferencedObject(_PTR(SObject)& theObject)
-{
- bool ret = false;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO;
- ret = _local_impl->ReferencedObject(aSO);
- if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
- }
- else {
- SALOMEDS::SObject_var aSO;
- ret = _corba_impl->ReferencedObject(aSO.out());
- if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
- }
-
- return ret;
-}
-
-
-bool SALOMEDS_SObject::FindSubObject(int theTag, _PTR(SObject)& theObject)
-{
- bool ret = false;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO;
- ret = _local_impl->FindSubObject(theTag, aSO);
- if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
- }
- else {
- SALOMEDS::SObject_var aSO;
- ret = _corba_impl->FindSubObject(theTag, aSO.out());
- if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
- }
-
- return ret;
-}
-
-_PTR(Study) SALOMEDS_SObject::GetStudy()
-{
- if(_isLocal) return _PTR(Study)(new SALOMEDS_Study(_local_impl->GetStudy()));
- return _PTR(Study)(new SALOMEDS_Study(_corba_impl->GetStudy()));
-}
-
-std::string SALOMEDS_SObject::Name()
-{
- std::string aName;
- if(_isLocal) aName = _local_impl->Name().ToCString();
- else aName = _corba_impl->Name();
-
- return aName;
-}
-
-void SALOMEDS_SObject::Name(const std::string& theName)
-{
- if(_isLocal) _local_impl->Name((char*)theName.c_str());
- else _corba_impl->Name(theName.c_str());
-}
-
-vector<_PTR(GenericAttribute)> SALOMEDS_SObject::GetAllAttributes()
-{
- vector<_PTR(GenericAttribute)> aVector;
- int aLength = 0;
- SALOMEDSClient_GenericAttribute* anAttr;
-
- if(_isLocal) {
- Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->GetAllAttributes();
- aLength = aSeq->Length();
- for(int i = 1; i <= aLength; i++) {
- anAttr = SALOMEDS_GenericAttribute::CreateAttribute(Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aSeq->Value(i)));
- aVector.push_back(_PTR(GenericAttribute)(anAttr));
- }
- }
- else {
- SALOMEDS::ListOfAttributes_var aSeq = _corba_impl->GetAllAttributes();
- aLength = aSeq->length();
- for(int i = 0; i < aLength; i++) {
- anAttr = SALOMEDS_GenericAttribute::CreateAttribute(aSeq[i]);
- aVector.push_back(_PTR(GenericAttribute)(anAttr));
- }
- }
-
- return aVector;
-}
-
-std::string SALOMEDS_SObject::GetName()
-{
- std::string aName;
- if(_isLocal) aName = _local_impl->GetName().ToCString();
- else aName = _corba_impl->GetName();
-
- return aName;
-}
-
-std::string SALOMEDS_SObject::GetComment()
-{
- std::string aComment;
- if(_isLocal) aComment = _local_impl->GetComment().ToCString();
- else aComment = _corba_impl->GetComment();
-
- return aComment;
-}
-
-std::string SALOMEDS_SObject::GetIOR()
-{
- std::string anIOR;
- if(_isLocal) anIOR = _local_impl->GetIOR().ToCString();
- else anIOR = _corba_impl->GetIOR();
-
- return anIOR;
-}
-
-int SALOMEDS_SObject::Tag()
-{
- if(_isLocal) return _local_impl->Tag();
- return _corba_impl->Tag();
-}
-
-int SALOMEDS_SObject::Depth()
-{
- if(_isLocal) return _local_impl->Depth();
- return _corba_impl->Depth();
-}
-
-CORBA::Object_ptr SALOMEDS_SObject::GetObject()
-{
- CORBA::Object_var obj;
- if(_isLocal) {
- std::string anIOR = GetIOR();
- if (!anIOR.empty())
- obj = _orb->string_to_object(anIOR.c_str());
- return obj._retn();
- }
- else {
- obj = _corba_impl->GetObject();
- return obj._retn();
- }
-
- return CORBA::Object::_nil();
-}
-
-SALOMEDS::SObject_ptr SALOMEDS_SObject::GetSObject()
-{
- if(_isLocal) {
- if(!CORBA::is_nil(_corba_impl)) return _corba_impl;
- SALOMEDS::SObject_var aSO = SALOMEDS_SObject_i::New(_local_impl, _orb);
- return aSO._retn();
- }
- else {
- return _corba_impl;
- }
- return SALOMEDS::SObject::_nil();
-}
-
-
-void SALOMEDS_SObject::init_orb()
-{
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
- _orb = init(0 , 0 ) ;
-}
+++ /dev/null
-// File : SALOMEDS_SObject.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_SOBJECT_H__
-#define __SALOMEDS_SOBJECT_H__
-
-// std C++ headers
-#include <vector>
-
-#include <SALOMEDSClient.hxx>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-
-class Standard_EXPORT SALOMEDS_SObject: public virtual SALOMEDSClient_SObject
-{
-protected:
-
- bool _isLocal;
- Handle(SALOMEDSImpl_SObject) _local_impl;
- SALOMEDS::SObject_var _corba_impl;
- CORBA::ORB_var _orb;
-
-public:
-
- SALOMEDS_SObject(SALOMEDS::SObject_ptr theSObject);
- SALOMEDS_SObject(const Handle(SALOMEDSImpl_SObject)& theSObject);
- virtual ~SALOMEDS_SObject();
-
- virtual std::string GetID();
- virtual _PTR(SComponent) GetFatherComponent();
- virtual _PTR(SObject) GetFather();
- virtual bool FindAttribute(_PTR(GenericAttribute)& anAttribute, const std::string& aTypeOfAttribute);
- virtual bool ReferencedObject(_PTR(SObject)& theObject);
- virtual bool FindSubObject(int theTag, _PTR(SObject)& theObject);
- virtual _PTR(Study) GetStudy();
- virtual std::string Name();
- virtual void Name(const std::string& theName);
- virtual vector<_PTR(GenericAttribute)> GetAllAttributes();
- virtual std::string GetName();
- virtual std::string GetComment();
- virtual std::string GetIOR();
- virtual int Tag();
- virtual int Depth();
-
- CORBA::Object_ptr GetObject();
- SALOMEDS::SObject_ptr GetSObject();
-
- SALOMEDS::SObject_ptr GetCORBAImpl() { return SALOMEDS::SObject::_duplicate(_corba_impl); }
- Handle(SALOMEDSImpl_SObject) GetLocalImpl() { return _local_impl; }
-
-private:
- void init_orb();
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_SObject_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "utilities.h"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
-#include "SALOMEDS.hxx"
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-
-// OCC Headers
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-#include <map>
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include "OpUtil.hxx"
-
-using namespace std;
-
-SALOMEDS::SObject_ptr SALOMEDS_SObject_i::New(const Handle(SALOMEDSImpl_SObject)& theImpl, CORBA::ORB_ptr theORB)
-{
- SALOMEDS_SObject_i* so_servant = new SALOMEDS_SObject_i(theImpl, theORB);
- SALOMEDS::SObject_var so = SALOMEDS::SObject::_narrow(so_servant->_this());
-
- return so._retn();
-}
-
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_SObject_i::SALOMEDS_SObject_i(const Handle(SALOMEDSImpl_SObject)& impl, CORBA::ORB_ptr orb)
- : _impl(impl)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- //SALOME::GenericObj_i::myPOA = SALOMEDS_StudyManager_i::GetPOA(GetStudy());
-}
-
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_SObject_i::~SALOMEDS_SObject_i()
-{}
-
-
-//============================================================================
-/*! Function :GetID
- * Purpose :
- */
-//============================================================================
-char* SALOMEDS_SObject_i::GetID()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->GetID().ToCString());
-}
-
-//============================================================================
-/*! Function : GetFatherComponent
- * Purpose :
- */
-//============================================================================
-SALOMEDS::SComponent_ptr SALOMEDS_SObject_i::GetFatherComponent()
-{
- SALOMEDS::Locker lock;
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (_impl->GetFatherComponent(), _orb);
- return sco._retn();
-}
-
-//============================================================================
-/*! Function : GetFather
- * Purpose :
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_SObject_i::GetFather()
-{
- SALOMEDS::Locker lock;
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (_impl->GetFather(), _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function :
- * Purpose :
- */
-//============================================================================
-SALOMEDS::Study_ptr SALOMEDS_SObject_i::GetStudy()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_Study) aStudy = _impl->GetStudy();
- if(aStudy.IsNull()) {
- MESSAGE("Problem GetStudy");
- return SALOMEDS::Study::_nil();
- }
-
- TCollection_AsciiString IOR = aStudy->GetTransientReference();
- CORBA::Object_var obj = _orb->string_to_object(IOR.ToCString());
- SALOMEDS::Study_var Study = SALOMEDS::Study::_narrow(obj) ;
- ASSERT(!CORBA::is_nil(Study));
- return SALOMEDS::Study::_duplicate(Study);
-}
-
-//============================================================================
-/*! Function : FindAttribute
- * Purpose : Find attribute of given type on this SObject
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_SObject_i::FindAttribute (SALOMEDS::GenericAttribute_out anAttribute,
- const char* aTypeOfAttribute)
-{
- SALOMEDS::Locker lock;
- Handle(TDF_Attribute) anAttr;
- if(_impl->FindAttribute(anAttr, (char*)aTypeOfAttribute)) {
- anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
- return Standard_True;
- }
-
- return Standard_False;
-}
-
-//============================================================================
-/*! Function : GetAllAttributes
- * Purpose : Returns list of all attributes for this sobject
- */
-//============================================================================
-
-SALOMEDS::ListOfAttributes* SALOMEDS_SObject_i::GetAllAttributes()
-{
- SALOMEDS::Locker lock;
- Handle(TColStd_HSequenceOfTransient) aSeq = _impl->GetAllAttributes();
- SALOMEDS::ListOfAttributes_var SeqOfAttr = new SALOMEDS::ListOfAttributes;
- Standard_Integer length = aSeq->Length();
-
- SeqOfAttr->length(length);
-
- if (length != 0) {
- for(int i = 1; i<= length; i++) {
- Handle(SALOMEDSImpl_GenericAttribute) anAttr = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aSeq->Value(i));
- SALOMEDS::GenericAttribute_var anAttribute;
- anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
- if (!CORBA::is_nil(anAttribute)) {
- SeqOfAttr[i - 1] = anAttribute;
- }
- }
- }
- return SeqOfAttr._retn();
-}
-
-
-//============================================================================
-/*! Function : ReferencedObject
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_SObject_i::ReferencedObject(SALOMEDS::SObject_out obj)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_SObject) aRefObj;
- if(!_impl->ReferencedObject(aRefObj)) return false;
-
- obj = SALOMEDS_SObject_i::New (aRefObj, _orb);
- return true;
-}
-
-//============================================================================
-/*! Function : FindSubObject
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_SObject_i::FindSubObject(long atag, SALOMEDS::SObject_out obj)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_SObject) aSubObj;
- if(!_impl->FindSubObject(atag, aSubObj)) return false;
-
- obj = SALOMEDS_SObject_i::New (aSubObj, _orb);
- return true;
-
-}
-
-//============================================================================
-/*! Function : Name
- * Purpose : gets a name
- */
-//============================================================================
-char* SALOMEDS_SObject_i::Name()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->Name().ToCString());
-}
-
-//============================================================================
-/*! Function : Name
- * Purpose : sets a name
- */
-//============================================================================
-void SALOMEDS_SObject_i::Name(const char* name)
-{
- SALOMEDS::Locker lock;
- TCollection_AsciiString aName((char*)name);
- _impl->Name(aName);
-}
-
-//============================================================================
-/*! Function : Tag
- * Purpose :
- */
-//============================================================================
-CORBA::Short SALOMEDS_SObject_i::Tag()
-{
- SALOMEDS::Locker lock;
- return _impl->Tag();
-}
-
-//============================================================================
-/*! Function : Depth
- * Purpose :
- */
-//============================================================================
-CORBA::Short SALOMEDS_SObject_i::Depth()
-{
- SALOMEDS::Locker lock;
- return _impl->Depth();
-}
-
-//============================================================================
-/*! Function : GetObject
- * Purpose :
- */
-//============================================================================
-CORBA::Object_ptr SALOMEDS_SObject_i::GetObject()
-{
- SALOMEDS::Locker lock;
- CORBA::Object_ptr obj = CORBA::Object::_nil();
- try {
- TCollection_AsciiString IOR = _impl->GetIOR();
- char* c_ior = CORBA::string_dup(IOR.ToCString());
- obj = _orb->string_to_object(c_ior);
- CORBA::string_free(c_ior);
- } catch(...) {}
- return obj;
-}
-
-//============================================================================
-/*! Function : GetName
- * Purpose :
- */
-//============================================================================
-char* SALOMEDS_SObject_i::GetName()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var aStr = CORBA::string_dup(_impl->GetName().ToCString());
- return aStr._retn();
-}
-
-//============================================================================
-/*! Function : GetComment
- * Purpose :
- */
-//============================================================================
-char* SALOMEDS_SObject_i::GetComment()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var aStr = CORBA::string_dup(_impl->GetComment().ToCString());
- return aStr._retn();
-}
-
-//============================================================================
-/*! Function : GetIOR
- * Purpose :
- */
-//============================================================================
-char* SALOMEDS_SObject_i::GetIOR()
-{
- SALOMEDS::Locker lock;
- CORBA::String_var aStr = CORBA::string_dup(_impl->GetIOR().ToCString());
- return aStr._retn();
-}
-
-//===========================================================================
-// PRIVATE FUNCTIONS
-//===========================================================================
-long SALOMEDS_SObject_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
- isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
- SALOMEDSImpl_SObject* local_impl = _impl.operator->();
- return ((long)local_impl);
-}
+++ /dev/null
-// File : SALOMEDS_SObject_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_SOBJECT_I_H__
-#define __SALOMEDS_SOBJECT_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include <SALOME_GenericObj_i.hh>
-
-// Cascade headers
-#include "SALOMEDSImpl_SObject.hxx"
-
-#ifdef GetObject
-#undef GetObject
-#endif
-
-class Standard_EXPORT SALOMEDS_SObject_i: public virtual POA_SALOMEDS::SObject,
- public virtual PortableServer::RefCountServantBase,
- public virtual SALOME::GenericObj_i
-{
-protected:
- CORBA::ORB_ptr _orb;
- Handle(SALOMEDSImpl_SObject) _impl;
-
-public:
-
- static SALOMEDS::SObject_ptr New(const Handle(SALOMEDSImpl_SObject)&, CORBA::ORB_ptr);
-
- SALOMEDS_SObject_i(const Handle(SALOMEDSImpl_SObject)&, CORBA::ORB_ptr);
-
- virtual ~SALOMEDS_SObject_i();
-
- virtual char* GetID();
- virtual SALOMEDS::SComponent_ptr GetFatherComponent();
- virtual SALOMEDS::SObject_ptr GetFather() ;
- virtual CORBA::Boolean FindAttribute(SALOMEDS::GenericAttribute_out anAttribute, const char* aTypeOfAttribute);
- virtual CORBA::Boolean ReferencedObject(SALOMEDS::SObject_out obj) ;
- virtual CORBA::Boolean FindSubObject(long atag, SALOMEDS::SObject_out obj );
-
- virtual SALOMEDS::Study_ptr GetStudy() ;
- virtual char* Name();
- virtual void Name(const char*);
- virtual SALOMEDS::ListOfAttributes* GetAllAttributes();
-
- virtual CORBA::Object_ptr GetObject();
-
- virtual char* GetName();
- virtual char* GetComment();
- virtual char* GetIOR();
-
- virtual CORBA::Short Tag();
- virtual CORBA::Short Depth();
-
- virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
-};
-
-#endif
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_SelectableAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class SelectableAttribute from SALOMEDS inherits Integer from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF; value : Integer from Standard)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns SelectableAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable SelectableAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end SelectableAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_SequenceOfIntegerAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class SequenceOfIntegerAttribute from SALOMEDS inherits Attribute from TDF
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- HSequenceOfInteger from TColStd,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns SequenceOfIntegerAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable SequenceOfIntegerAttribute from SALOMEDS;
-
- ---Category: IntegerArray methods
- -- ===============
-
- Assign(me : mutable; other : HSequenceOfInteger from TColStd);
- ---Purpose: Initialize the inner sequence by other one
-
- ChangeValue (me : mutable; Index, Value : Integer from Standard);
- ---Purpose: Sets the <Index>th element of the sequence to <Value>
-
- Add (me : mutable; value : Integer from Standard);
- ---Purpose: Add new value
-
- Value (me : mutable; Index : Integer from Standard) returns Integer;
- ---Purpose: Value of index
-
- Remove (me : mutable; Index : Integer from Standard);
- ---Purpose: Remove element on index <Index>
-
- Length (me : mutable) returns Integer;
- ---Purpose: Returns length of sequence
-
-
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-fields
-
- myValue : HSequenceOfInteger from TColStd;
-
-end SequenceOfIntegerAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_SequenceOfRealAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class SequenceOfRealAttribute from SALOMEDS inherits Attribute from TDF
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- HSequenceOfReal from TColStd,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF)
- ---Purpose: Find, or create a Comment attribute and set the string.
- -- the Comment attribute is returned.
- returns SequenceOfRealAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable SequenceOfRealAttribute from SALOMEDS;
-
- ---Category: IntegerArray methods
- -- ===============
-
- Assign(me : mutable; other : HSequenceOfReal from TColStd);
- ---Purpose: Initialize the inner sequence by other one
-
- ChangeValue (me : mutable; Index : Integer from Standard; Value : Real);
- ---Purpose: Sets the <Index>th element of the sequence to <Value>
-
- Add (me : mutable; Value : Real from Standard);
- ---Purpose: Add new value
-
- Value (me : mutable; Index : Integer from Standard) returns Real;
- ---Purpose: Value of index
-
- Remove (me : mutable; Index : Integer from Standard);
- ---Purpose: Remove element on index <Index>
-
- Length (me : mutable) returns Integer;
- ---Purpose: Returns length of sequence
-
-
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-fields
-
- myValue : HSequenceOfReal from TColStd;
-
-end SequenceOfRealAttribute;
+++ /dev/null
-// File : SALOMEDS_Study.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "utilities.h"
-
-#include "SALOMEDS_Study.hxx"
-#include "SALOMEDS_SComponent.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDS_StudyBuilder.hxx"
-#include "SALOMEDSImpl_StudyBuilder.hxx"
-#include "SALOMEDS_ChildIterator.hxx"
-#include "SALOMEDSImpl_ChildIterator.hxx"
-#include "SALOMEDS_SComponentIterator.hxx"
-#include "SALOMEDSImpl_SComponentIterator.hxx"
-#include "SALOMEDS_AttributeStudyProperties.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-#include "SALOMEDS_UseCaseBuilder.hxx"
-#include "SALOMEDSImpl_UseCaseBuilder.hxx"
-
-#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
-
-#include <TCollection_AsciiString.hxx>
-#include <TColStd_HSequenceOfAsciiString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include "OpUtil.hxx"
-
-using namespace std;
-
-SALOMEDS_Study::SALOMEDS_Study(const Handle(SALOMEDSImpl_Study)& theStudy)
-{
- _isLocal = true;
- _local_impl = theStudy;
- _corba_impl = SALOMEDS::Study::_nil();
- init_orb();
-}
-
-SALOMEDS_Study::SALOMEDS_Study(SALOMEDS::Study_ptr theStudy)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
-
- long addr = theStudy->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
- if(_isLocal) {
- _local_impl = ((SALOMEDSImpl_Study*)(addr));
- _corba_impl = SALOMEDS::Study::_duplicate(theStudy);
- }
- else {
- _local_impl = NULL;
- _corba_impl = SALOMEDS::Study::_duplicate(theStudy);
- }
-
- init_orb();
-}
-
-SALOMEDS_Study::~SALOMEDS_Study()
-{
-}
-
-std::string SALOMEDS_Study::GetPersistentReference()
-{
- std::string aRef;
- if(_isLocal) aRef = _local_impl->GetPersistentReference().ToCString();
- else aRef = _corba_impl->GetPersistentReference();
- return aRef;
-}
-
-std::string SALOMEDS_Study::GetTransientReference()
-{
- std::string aRef;
- if(_isLocal) aRef = _local_impl->GetTransientReference().ToCString();
- else aRef = _corba_impl->GetTransientReference();
- return aRef;
-}
-
-bool SALOMEDS_Study::IsEmpty()
-{
- bool ret;
- if(_isLocal) ret = _local_impl->IsEmpty();
- else ret = _corba_impl->IsEmpty();
- return ret;
-}
-
-_PTR(SComponent) SALOMEDS_Study::FindComponent (const std::string& aComponentName)
-{
- SALOMEDSClient_SComponent* aSCO = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SComponent) aSCO_impl =_local_impl->FindComponent((char*)aComponentName.c_str());
- if(aSCO_impl.IsNull()) return _PTR(SComponent)(aSCO);
- aSCO = new SALOMEDS_SComponent(aSCO_impl);
- }
- else {
- SALOMEDS::SComponent_var aSCO_impl = _corba_impl->FindComponent((char*)aComponentName.c_str());
- if(CORBA::is_nil(aSCO_impl)) return _PTR(SComponent)(aSCO);
- aSCO = new SALOMEDS_SComponent(aSCO_impl);
- }
- return _PTR(SComponent)(aSCO);
-}
-
-_PTR(SComponent) SALOMEDS_Study::FindComponentID(const std::string& aComponentID)
-{
- SALOMEDSClient_SComponent* aSCO = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SComponent) aSCO_impl =_local_impl->FindComponentID((char*)aComponentID.c_str());
- if(aSCO_impl.IsNull()) return _PTR(SComponent)(aSCO);
- aSCO = new SALOMEDS_SComponent(aSCO_impl);
- }
- else {
- SALOMEDS::SComponent_var aSCO_impl = _corba_impl->FindComponentID((char*)aComponentID.c_str());
- if(CORBA::is_nil(aSCO_impl)) return _PTR(SComponent)(aSCO);
- aSCO = new SALOMEDS_SComponent(aSCO_impl);
- }
- return _PTR(SComponent)(aSCO);
-
-}
-
-_PTR(SObject) SALOMEDS_Study::FindObject(const std::string& anObjectName)
-{
- SALOMEDSClient_SObject* aSO = NULL;
-
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObject((char*)anObjectName.c_str());
- if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
- Handle(SALOMEDSImpl_SComponent) aSCO_impl = Handle(SALOMEDSImpl_SComponent)::DownCast(aSO_impl);
- if(!aSCO_impl.IsNull()) return _PTR(SObject)(new SALOMEDS_SComponent(aSCO_impl));
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
- else {
- SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObject((char*)anObjectName.c_str());
- if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
- SALOMEDS::SComponent_var aSCO_impl = SALOMEDS::SComponent::_narrow(aSO_impl);
- if(!CORBA::is_nil(aSCO_impl)) return _PTR(SObject)(new SALOMEDS_SComponent(aSCO_impl));
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
-
- return _PTR(SObject)(aSO);
-}
-
-std::vector<_PTR(SObject)> SALOMEDS_Study::FindObjectByName(const std::string& anObjectName,
- const std::string& aComponentName)
-{
- std::vector<_PTR(SObject)> aVector;
- int i, aLength = 0;
-
- if(_isLocal) {
- Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->FindObjectByName((char*)anObjectName.c_str(), (char*)aComponentName.c_str());
- aLength = aSeq->Length();
- for(i = 1; i<= aLength; i++)
- aVector.push_back(_PTR(SObject)(new SALOMEDS_SObject(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)))));
- }
- else {
- SALOMEDS::Study::ListOfSObject_var aSeq = _corba_impl->FindObjectByName((char*)anObjectName.c_str(),
- (char*)aComponentName.c_str());
- aLength = aSeq->length();
- for(i = 0; i< aLength; i++) aVector.push_back(_PTR(SObject)(new SALOMEDS_SObject(aSeq[i])));
- }
-
- return aVector;
-}
-
-_PTR(SObject) SALOMEDS_Study::FindObjectID(const std::string& anObjectID)
-{
- SALOMEDSClient_SObject* aSO = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObjectID((char*)anObjectID.c_str());
- if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
- return _PTR(SObject)(new SALOMEDS_SObject(aSO_impl));
- }
- else {
- SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObjectID((char*)anObjectID.c_str());
- if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
- return _PTR(SObject)(new SALOMEDS_SObject(aSO_impl));
- }
- return _PTR(SObject)(aSO);
-}
-
-_PTR(SObject) SALOMEDS_Study::CreateObjectID(const std::string& anObjectID)
-{
- SALOMEDSClient_SObject* aSO = NULL;
- if(_isLocal) aSO = new SALOMEDS_SObject(_local_impl->CreateObjectID((char*)anObjectID.c_str()));
- else aSO = new SALOMEDS_SObject(_corba_impl->CreateObjectID((char*)anObjectID.c_str()));
- return _PTR(SObject)(aSO);
-}
-
-_PTR(SObject) SALOMEDS_Study::FindObjectIOR(const std::string& anObjectIOR)
-{
- SALOMEDSClient_SObject* aSO = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObjectIOR((char*)anObjectIOR.c_str());
- if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
- else {
- SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObjectIOR((char*)anObjectIOR.c_str());
- if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
- return _PTR(SObject)(aSO);
-}
-
-_PTR(SObject) SALOMEDS_Study::FindObjectByPath(const std::string& thePath)
-{
- SALOMEDSClient_SObject* aSO = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObjectByPath((char*)thePath.c_str());
- if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
- else {
- SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObjectByPath((char*)thePath.c_str());
- if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
- return _PTR(SObject)(aSO);
-}
-
-std::string SALOMEDS_Study::GetObjectPath(const _PTR(SObject)& theSO)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- std::string aPath;
- if(_isLocal) aPath = _local_impl->GetObjectPath(aSO->GetLocalImpl()).ToCString();
- else aPath = _corba_impl->GetObjectPath(aSO->GetCORBAImpl());
- return aPath;
-}
-
-void SALOMEDS_Study::SetContext(const std::string& thePath)
-{
- if(_isLocal) _local_impl->SetContext((char*)thePath.c_str());
- else _corba_impl->SetContext((char*)thePath.c_str());
-}
-
-std::string SALOMEDS_Study::GetContext()
-{
- std::string aPath;
- if(_isLocal) aPath = _local_impl->GetContext().ToCString();
- else aPath = _corba_impl->GetContext();
- return aPath;
-}
-
-std::vector<std::string> SALOMEDS_Study::GetObjectNames(const std::string& theContext)
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetObjectNames((char*)theContext.c_str());
- aLength = aSeq->Length();
- for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
- }
- else {
- SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetObjectNames((char*)theContext.c_str());
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back(std::string((std::string)aSeq[i].in()));
- }
- return aVector;
-}
-
-std::vector<std::string> SALOMEDS_Study::GetDirectoryNames(const std::string& theContext)
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetDirectoryNames((char*)theContext.c_str());
- aLength = aSeq->Length();
- for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
- }
- else {
- SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetDirectoryNames((char*)theContext.c_str());
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-std::vector<std::string> SALOMEDS_Study::GetFileNames(const std::string& theContext)
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetFileNames((char*)theContext.c_str());
- aLength = aSeq->Length();
- for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
- }
- else {
- SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetFileNames((char*)theContext.c_str());
- aLength = aSeq->length();
-
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-std::vector<std::string> SALOMEDS_Study::GetComponentNames(const std::string& theContext)
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetComponentNames((char*)theContext.c_str());
- aLength = aSeq->Length();
- for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
- }
- else {
- SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetComponentNames((char*)theContext.c_str());
- aLength = aSeq->length();
- for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-_PTR(ChildIterator) SALOMEDS_Study::NewChildIterator(const _PTR(SObject)& theSO)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- SALOMEDSClient_ChildIterator* aCI = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_ChildIterator) aCIimpl = _local_impl->NewChildIterator(aSO->GetLocalImpl());
- aCI = new SALOMEDS_ChildIterator(aCIimpl);
- }
- else {
- SALOMEDS::ChildIterator_var aCIimpl = _corba_impl->NewChildIterator(aSO->GetCORBAImpl());
- aCI = new SALOMEDS_ChildIterator(aCIimpl);
- }
-
- return _PTR(ChildIterator)(aCI);
-}
-
-_PTR(SComponentIterator) SALOMEDS_Study::NewComponentIterator()
-{
- SALOMEDSClient_SComponentIterator* aCI = NULL;
- if(_isLocal) {
- SALOMEDSImpl_SComponentIterator aCIimpl = _local_impl->NewComponentIterator();
- aCI = new SALOMEDS_SComponentIterator(aCIimpl);
- }
- else {
- SALOMEDS::SComponentIterator_var aCIimpl = _corba_impl->NewComponentIterator();
- aCI = new SALOMEDS_SComponentIterator(aCIimpl);
- }
-
- return _PTR(SComponentIterator)(aCI);
-}
-
-_PTR(StudyBuilder) SALOMEDS_Study::NewBuilder()
-{
- SALOMEDSClient_StudyBuilder* aSB = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_StudyBuilder) aSBimpl = _local_impl->NewBuilder();
- aSB = new SALOMEDS_StudyBuilder(aSBimpl);
- }
- else {
- SALOMEDS::StudyBuilder_var aSBimpl = _corba_impl->NewBuilder();
- aSB = new SALOMEDS_StudyBuilder(aSBimpl);
- }
-
- return _PTR(StudyBuilder)(aSB);
-}
-
-std::string SALOMEDS_Study::Name()
-{
- std::string aName;
- if(_isLocal) aName = _local_impl->Name().ToCString();
- else aName = _corba_impl->Name();
- return aName;
-}
-
-void SALOMEDS_Study::Name(const std::string& theName)
-{
- if(_isLocal) _local_impl->Name((char*)theName.c_str());
- else _corba_impl->Name((char*)theName.c_str());
-}
-
-bool SALOMEDS_Study::IsSaved()
-{
- bool isSaved;
- if(_isLocal) isSaved = _local_impl->IsSaved();
- else isSaved = _corba_impl->IsSaved();
- return isSaved;
-}
-
-void SALOMEDS_Study::IsSaved(bool save)
-{
- if(_isLocal) _local_impl->IsSaved(save);
- else _corba_impl->IsSaved(save);
-}
-
-bool SALOMEDS_Study::IsModified()
-{
- bool isModified;
- if(_isLocal) isModified = _local_impl->IsModified();
- else isModified = _corba_impl->IsModified();
- return isModified;
-}
-
-std::string SALOMEDS_Study::URL()
-{
- std::string aURL;
- if(_isLocal) aURL = _local_impl->URL().ToCString();
- else aURL = _corba_impl->URL();
- return aURL;
-}
-
-void SALOMEDS_Study::URL(const std::string& url)
-{
- if(_isLocal) _local_impl->URL((char*)url.c_str());
- else _corba_impl->URL((char*)url.c_str());
-}
-
-int SALOMEDS_Study::StudyId()
-{
- int anID;
- if(_isLocal) anID = _local_impl->StudyId();
- else anID = _corba_impl->StudyId();
- return anID;
-}
-
-void SALOMEDS_Study::StudyId(int id)
-{
- if(_isLocal) _local_impl->StudyId(id);
- else _corba_impl->StudyId(id);
-}
-
-std::vector<_PTR(SObject)> SALOMEDS_Study::FindDependances(const _PTR(SObject)& theSO)
-{
- std::vector<_PTR(SObject)> aVector;
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->FindDependances(aSO->GetLocalImpl());
- if ( !aSeq.IsNull() )
- {
- aLength = aSeq->Length();
- for(i=1; i<=aLength; i++)
- aVector.push_back(_PTR(SObject)(
- new SALOMEDS_SObject(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)))));
- }
- }
- else {
- SALOMEDS::Study::ListOfSObject_var aSeq = _corba_impl->FindDependances(aSO->GetCORBAImpl());
- aLength = aSeq->length();
- for(i=0; i<aLength; i++) aVector.push_back(_PTR(SObject)(new SALOMEDS_SObject(aSeq[i])));
- }
- return aVector;
-}
-
-_PTR(AttributeStudyProperties) SALOMEDS_Study::GetProperties()
-{
- SALOMEDSClient_AttributeStudyProperties* aProp;
- if(_isLocal) aProp = new SALOMEDS_AttributeStudyProperties(_local_impl->GetProperties());
- else aProp = new SALOMEDS_AttributeStudyProperties(_corba_impl->GetProperties());
- return _PTR(AttributeStudyProperties)(aProp);
-}
-
-std::string SALOMEDS_Study::GetLastModificationDate()
-{
- std::string aDate;
- if(_isLocal) aDate = _local_impl->GetLastModificationDate().ToCString();
- else aDate = _corba_impl->GetLastModificationDate();
- return aDate;
-}
-
-std::vector<std::string> SALOMEDS_Study::GetModificationsDate()
-{
- std::vector<std::string> aVector;
- int aLength, i;
- if(_isLocal) {
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetModificationsDate();
- aLength = aSeq->Length();
- for(i=1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
- }
- else {
- SALOMEDS::ListOfDates_var aSeq = _corba_impl->GetModificationsDate();
- aLength = aSeq->length();
- for(i=0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
- }
- return aVector;
-}
-
-_PTR(UseCaseBuilder) SALOMEDS_Study::GetUseCaseBuilder()
-{
- SALOMEDSClient_UseCaseBuilder* aUB = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_UseCaseBuilder) aUBimpl = _local_impl->GetUseCaseBuilder();
- aUB = new SALOMEDS_UseCaseBuilder(aUBimpl);
- }
- else {
- SALOMEDS::UseCaseBuilder_var aUBimpl = _corba_impl->GetUseCaseBuilder();
- aUB = new SALOMEDS_UseCaseBuilder(aUBimpl);
- }
-
- return _PTR(UseCaseBuilder)(aUB);
-}
-
-void SALOMEDS_Study::Close()
-{
- if(_isLocal) _local_impl->Close();
- else _corba_impl->Close();
-}
-
-void SALOMEDS_Study::EnableUseCaseAutoFilling(bool isEnabled)
-{
- if(_isLocal) _local_impl->EnableUseCaseAutoFilling(isEnabled);
- else _corba_impl->EnableUseCaseAutoFilling(isEnabled);
-}
-
-bool SALOMEDS_Study::DumpStudy(const std::string& thePath, const std::string& theBaseName, bool isPublished)
-{
- bool ret;
- if(_isLocal) {
- SALOMEDS_DriverFactory_i* aFactory = new SALOMEDS_DriverFactory_i(_orb);
- ret = _local_impl->DumpStudy((char*)thePath.c_str(), (char*)theBaseName.c_str(), isPublished, aFactory);
- delete aFactory;
- }
- else ret = _corba_impl->DumpStudy((char*)thePath.c_str(), (char*)theBaseName.c_str(), isPublished);
- return ret;
-}
-
-std::string SALOMEDS_Study::ConvertObjectToIOR(CORBA::Object_ptr theObject)
-{
- return _orb->object_to_string(theObject);
-}
-
-CORBA::Object_ptr SALOMEDS_Study::ConvertIORToObject(const std::string& theIOR)
-{
- return _orb->string_to_object(theIOR.c_str());
-}
-
-void SALOMEDS_Study::init_orb()
-{
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
- _orb = init(0 , 0 ) ;
-}
-
-SALOMEDS::Study_ptr SALOMEDS_Study::GetStudy()
-{
- if(_isLocal) {
- if(!CORBA::is_nil(_corba_impl)) return _corba_impl;
- std::string anIOR = _local_impl->GetTransientReference().ToCString();
- SALOMEDS::Study_var aStudy;
- if(!_local_impl->IsError() && anIOR != "") {
- aStudy = SALOMEDS::Study::_narrow(_orb->string_to_object(anIOR.c_str()));
- }
- else {
- SALOMEDS_Study_i *aStudy_servant = new SALOMEDS_Study_i(_local_impl, _orb);
- aStudy = aStudy_servant->_this();
- _local_impl->SetTransientReference(_orb->object_to_string(aStudy));
- }
- return aStudy._retn();
- }
- else {
- return _corba_impl;
- }
-
- return SALOMEDS::Study::_nil();
-}
+++ /dev/null
-// File : SALOMEDS_Study.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_STUDY_H__
-#define __SALOMEDS_STUDY_H__
-
-#include <vector>
-#include <string>
-
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class Standard_EXPORT SALOMEDS_Study: public SALOMEDSClient_Study
-{
-
-private:
- bool _isLocal;
- Handle(SALOMEDSImpl_Study) _local_impl;
- SALOMEDS::Study_var _corba_impl;
- CORBA::ORB_var _orb;
-
-public:
-
- SALOMEDS_Study(const Handle(SALOMEDSImpl_Study)& theStudy);
- SALOMEDS_Study(SALOMEDS::Study_ptr theStudy);
- ~SALOMEDS_Study();
-
- virtual std::string GetPersistentReference();
- virtual std::string GetTransientReference();
- virtual bool IsEmpty();
- virtual _PTR(SComponent) FindComponent (const std::string& aComponentName);
- virtual _PTR(SComponent) FindComponentID(const std::string& aComponentID);
- virtual _PTR(SObject) FindObject(const std::string& anObjectName);
- virtual std::vector<_PTR(SObject)> FindObjectByName( const std::string& anObjectName, const std::string& aComponentName ) ;
- virtual _PTR(SObject) FindObjectID(const std::string& anObjectID);
- virtual _PTR(SObject) CreateObjectID(const std::string& anObjectID);
- virtual _PTR(SObject) FindObjectIOR(const std::string& anObjectIOR);
- virtual _PTR(SObject) FindObjectByPath(const std::string& thePath);
- virtual std::string GetObjectPath(const _PTR(SObject)& theSO);
- virtual void SetContext(const std::string& thePath);
- virtual std::string GetContext();
- virtual std::vector<std::string> GetObjectNames(const std::string& theContext);
- virtual std::vector<std::string> GetDirectoryNames(const std::string& theContext);
- virtual std::vector<std::string> GetFileNames(const std::string& theContext);
- virtual std::vector<std::string> GetComponentNames(const std::string& theContext);
- virtual _PTR(ChildIterator) NewChildIterator(const _PTR(SObject)& theSO);
- virtual _PTR(SComponentIterator) NewComponentIterator();
- virtual _PTR(StudyBuilder) NewBuilder();
- virtual std::string Name();
- virtual void Name(const std::string& name);
- virtual bool IsSaved();
- virtual void IsSaved(bool save);
- virtual bool IsModified();
- virtual std::string URL();
- virtual void URL(const std::string& url);
- virtual int StudyId();
- virtual void StudyId(int id);
- virtual std::vector<_PTR(SObject)> FindDependances(const _PTR(SObject)& theSO);
- virtual _PTR(AttributeStudyProperties) GetProperties();
- virtual std::string GetLastModificationDate();
- virtual std::vector<std::string> GetModificationsDate();
- virtual _PTR(UseCaseBuilder) GetUseCaseBuilder();
- virtual void Close();
- virtual void EnableUseCaseAutoFilling(bool isEnabled);
- virtual bool DumpStudy(const std::string& thePath, const std::string& theBaseName, bool isPublished);
-
- std::string ConvertObjectToIOR(CORBA::Object_ptr theObject);
- CORBA::Object_ptr ConvertIORToObject(const std::string& theIOR);
-
- SALOMEDS::Study_ptr GetStudy();
-
-private:
- void init_orb();
-
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_StudyBuilder.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "utilities.h"
-
-#include "SALOMEDS_StudyBuilder.hxx"
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDS_SComponent.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDS_GenericAttribute.hxx"
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Attribute.hxx>
-#include "SALOMEDS_StudyManager.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-
-using namespace std;
-
-SALOMEDS_StudyBuilder::SALOMEDS_StudyBuilder(const Handle(SALOMEDSImpl_StudyBuilder)& theBuilder)
-{
- _isLocal = true;
- _local_impl = theBuilder;
- _corba_impl = SALOMEDS::StudyBuilder::_nil();
-
- init_orb();
-}
-
-SALOMEDS_StudyBuilder::SALOMEDS_StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder)
-{
- _isLocal = false;
- _local_impl = NULL;
- _corba_impl = SALOMEDS::StudyBuilder::_duplicate(theBuilder);
-
- init_orb();
-}
-
-SALOMEDS_StudyBuilder::~SALOMEDS_StudyBuilder()
-{
-}
-
-_PTR(SComponent) SALOMEDS_StudyBuilder::NewComponent(const std::string& ComponentDataType)
-{
- CheckLocked();
-
- SALOMEDSClient_SComponent* aSCO = NULL;
-
- if(_isLocal) {
- Handle(SALOMEDSImpl_SComponent) aSCO_impl =_local_impl->NewComponent((char*)ComponentDataType.c_str());
- if(aSCO_impl.IsNull()) return _PTR(SComponent)(aSCO);
- aSCO = new SALOMEDS_SComponent(aSCO_impl);
- }
- else {
- SALOMEDS::SComponent_var aSCO_impl = _corba_impl->NewComponent((char*)ComponentDataType.c_str());
- if(CORBA::is_nil(aSCO_impl)) return _PTR(SComponent)(aSCO);
- aSCO = new SALOMEDS_SComponent(aSCO_impl);
- }
-
- return _PTR(SComponent)(aSCO);
-}
-
-void SALOMEDS_StudyBuilder::DefineComponentInstance (const _PTR(SComponent)& theSCO,
- const std::string& ComponentIOR)
-{
- CheckLocked();
-
- SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
- if(_isLocal) _local_impl->DefineComponentInstance(Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl()),
- (char*)ComponentIOR.c_str());
- else {
- CORBA::Object_var obj = _orb->string_to_object(ComponentIOR.c_str());
- _corba_impl->DefineComponentInstance(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()), obj);
- }
-}
-
-void SALOMEDS_StudyBuilder::RemoveComponent(const _PTR(SComponent)& theSCO)
-{
- CheckLocked();
-
- SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
- if(_isLocal) _local_impl->RemoveComponent(Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl()));
- else _corba_impl->RemoveComponent(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()));
-}
-
-_PTR(SObject) SALOMEDS_StudyBuilder::NewObject(const _PTR(SObject)& theFatherObject)
-{
- CheckLocked();
-
- SALOMEDSClient_SObject* aSO = NULL;
- SALOMEDS_SObject* father = dynamic_cast< SALOMEDS_SObject*>(theFatherObject.get());
- if(father == NULL) return _PTR(SObject)(aSO);
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->NewObject(father->GetLocalImpl());
- if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
- else {
- SALOMEDS::SObject_var aSO_impl = _corba_impl->NewObject(father->GetCORBAImpl());
- if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
-
- return _PTR(SObject)(aSO);
-}
-
-_PTR(SObject) SALOMEDS_StudyBuilder::NewObjectToTag(const _PTR(SObject)& theFatherObject, int theTag)
-{
- CheckLocked();
-
- SALOMEDSClient_SObject* aSO = NULL;
- SALOMEDS_SObject* father = dynamic_cast< SALOMEDS_SObject*>(theFatherObject.get());
- if(father == NULL) return _PTR(SObject)(aSO);
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->NewObjectToTag(father->GetLocalImpl(), theTag);
- if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
- else {
- SALOMEDS::SObject_var aSO_impl = _corba_impl->NewObjectToTag(father->GetCORBAImpl(), theTag);
- if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
- aSO = new SALOMEDS_SObject(aSO_impl);
- }
-
- return _PTR(SObject)(aSO);
-
-}
-
-void SALOMEDS_StudyBuilder::AddDirectory(const std::string& thePath)
-{
- CheckLocked();
-
- if(_isLocal) {
- _local_impl->AddDirectory((char*)thePath.c_str());
- if(_local_impl->IsError()) {
- std::string anErrorCode = _local_impl->GetErrorCode().ToCString();
- if(anErrorCode == "StudyNameAlreadyUsed") throw SALOMEDS::Study::StudyNameAlreadyUsed();
- if(anErrorCode == "StudyInvalidDirectory") throw SALOMEDS::Study::StudyInvalidDirectory();
- if(anErrorCode == "StudyInvalidComponent") throw SALOMEDS::Study::StudyInvalidComponent();
- }
- }
- else _corba_impl->AddDirectory((char*)thePath.c_str());
-}
-
-void SALOMEDS_StudyBuilder::LoadWith(const _PTR(SComponent)& theSCO, const std::string& theIOR)
-{
- SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
- CORBA::Object_var obj = _orb->string_to_object(theIOR.c_str());
- SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(obj);
-
- if(_isLocal) {
- SALOMEDS_Driver_i* drv = new SALOMEDS_Driver_i(aDriver, _orb);
- Handle(SALOMEDSImpl_SComponent) aSCO_impl = Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl());
- bool isDone = _local_impl->LoadWith(aSCO_impl, drv);
- delete drv;
- if(!isDone && _local_impl->IsError())
- THROW_SALOME_CORBA_EXCEPTION(_local_impl->GetErrorCode().ToCString(),SALOME::BAD_PARAM);
- }
- else {
- _corba_impl->LoadWith(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()), aDriver);
- }
-}
-
-void SALOMEDS_StudyBuilder::Load(const _PTR(SObject)& theSCO)
-{
- SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
- if(_isLocal) _local_impl->Load(Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl()));
- else _corba_impl->Load(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()));
-}
-
-void SALOMEDS_StudyBuilder::RemoveObject(const _PTR(SObject)& theSO)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) _local_impl->RemoveObject(aSO->GetLocalImpl());
- else _corba_impl->RemoveObject(aSO->GetCORBAImpl());
-}
-
-void SALOMEDS_StudyBuilder::RemoveObjectWithChildren(const _PTR(SObject)& theSO)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) _local_impl->RemoveObjectWithChildren(aSO->GetLocalImpl());
- else _corba_impl->RemoveObjectWithChildren(aSO->GetCORBAImpl());
-}
-
-_PTR(GenericAttribute) SALOMEDS_StudyBuilder::FindOrCreateAttribute(const _PTR(SObject)& theSO,
- const std::string& aTypeOfAttribute)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- SALOMEDSClient_GenericAttribute* anAttr = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_GenericAttribute) aGA;
- try {
- aGA=Handle(SALOMEDSImpl_GenericAttribute)::DownCast(_local_impl->FindOrCreateAttribute(aSO->GetLocalImpl(),
- (char*)aTypeOfAttribute.c_str()));
- }
- catch (...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
- anAttr = SALOMEDS_GenericAttribute::CreateAttribute(aGA);
- }
- else {
- SALOMEDS::GenericAttribute_var aGA = _corba_impl->FindOrCreateAttribute(aSO->GetCORBAImpl(), (char*)aTypeOfAttribute.c_str());
- anAttr = SALOMEDS_GenericAttribute::CreateAttribute(aGA);
- }
-
- return _PTR(GenericAttribute)(anAttr);
-}
-
-bool SALOMEDS_StudyBuilder::FindAttribute(const _PTR(SObject)& theSO,
- _PTR(GenericAttribute)& anAttribute,
- const std::string& aTypeOfAttribute)
-{
- bool ret;
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) {
- Handle(SALOMEDSImpl_GenericAttribute) aGA;
- ret = _local_impl->FindAttribute(aSO->GetLocalImpl(), aGA, (char*)aTypeOfAttribute.c_str());
- if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(aGA));
- }
- else {
- SALOMEDS::GenericAttribute_var aGA;
- ret = _corba_impl->FindAttribute(aSO->GetCORBAImpl(), aGA.out(), (char*)aTypeOfAttribute.c_str());
- if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(aGA));
- }
-
- return ret;
-}
-
-void SALOMEDS_StudyBuilder::RemoveAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) _local_impl->RemoveAttribute(aSO->GetLocalImpl(), (char*)aTypeOfAttribute.c_str());
- else _corba_impl->RemoveAttribute(aSO->GetCORBAImpl(), (char*)aTypeOfAttribute.c_str());
-}
-
-void SALOMEDS_StudyBuilder::Addreference(const _PTR(SObject)& me, const _PTR(SObject)& thereferencedObject)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(me.get());
- SALOMEDS_SObject* aRefSO = dynamic_cast<SALOMEDS_SObject*>(thereferencedObject.get());
- if(_isLocal) _local_impl->Addreference(aSO->GetLocalImpl(), aRefSO->GetLocalImpl());
- else _corba_impl->Addreference(aSO->GetCORBAImpl(), aRefSO->GetCORBAImpl());
-}
-
-void SALOMEDS_StudyBuilder::RemoveReference(const _PTR(SObject)& me)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(me.get());
- if(_isLocal) _local_impl->RemoveReference(aSO->GetLocalImpl());
- else _corba_impl->RemoveReference(aSO->GetCORBAImpl());
-}
-
-void SALOMEDS_StudyBuilder::SetGUID(const _PTR(SObject)& theSO, const std::string& theGUID)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) _local_impl->SetGUID(aSO->GetLocalImpl(), (char*)theGUID.c_str());
- else _corba_impl->SetGUID(aSO->GetCORBAImpl(), (char*)theGUID.c_str());
-}
-
-bool SALOMEDS_StudyBuilder::IsGUID(const _PTR(SObject)& theSO, const std::string& theGUID)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- bool ret;
- if(_isLocal) ret = _local_impl->IsGUID(aSO->GetLocalImpl(), (char*)theGUID.c_str());
- else ret = _corba_impl->IsGUID(aSO->GetCORBAImpl(), (char*)theGUID.c_str());
-
- return ret;
-}
-
-void SALOMEDS_StudyBuilder::NewCommand()
-{
- if(_isLocal) _local_impl->NewCommand();
- else _corba_impl->NewCommand();
-}
-
-void SALOMEDS_StudyBuilder::CommitCommand()
-{
- if(_isLocal) {
- try {
- _local_impl->CommitCommand();
- }
- catch(...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
- }
- else _corba_impl->CommitCommand();
-}
-
-bool SALOMEDS_StudyBuilder::HasOpenCommand()
-{
- bool ret;
- if(_isLocal) ret = _local_impl->HasOpenCommand();
- else ret = _corba_impl->HasOpenCommand();
- return ret;
-}
-
-void SALOMEDS_StudyBuilder::AbortCommand()
-{
- if(_isLocal) _local_impl->AbortCommand();
- else _corba_impl->AbortCommand();
-}
-
-void SALOMEDS_StudyBuilder::Undo()
-{
- if(_isLocal) {
- try {
- _local_impl->Undo();
- }
- catch(...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
- }
- else _corba_impl->Undo();
-}
-
-void SALOMEDS_StudyBuilder::Redo()
-{
- if(_isLocal) {
- try {
- _local_impl->Redo();
- }
- catch(...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
- }
- else _corba_impl->Redo();
-}
-
-bool SALOMEDS_StudyBuilder::GetAvailableUndos()
-{
- bool ret;
- if(_isLocal) ret = _local_impl->GetAvailableUndos();
- else ret = _corba_impl->GetAvailableUndos();
- return ret;
-}
-
-bool SALOMEDS_StudyBuilder::GetAvailableRedos()
-{
- bool ret;
- if(_isLocal) ret = _local_impl->GetAvailableRedos();
- else ret = _corba_impl->GetAvailableRedos();
- return ret;
-}
-
-int SALOMEDS_StudyBuilder::UndoLimit()
-{
- int aLimit;
- if(_isLocal) aLimit = _local_impl->UndoLimit();
- else aLimit = _corba_impl->UndoLimit();
- return aLimit;
-}
-
-void SALOMEDS_StudyBuilder::UndoLimit(int theLimit)
-{
- CheckLocked();
-
- if(_isLocal) _local_impl->UndoLimit(theLimit);
- else _corba_impl->UndoLimit(theLimit);
-}
-
-void SALOMEDS_StudyBuilder::CheckLocked()
-{
- //There is only local part as CORBA part throws the correct exeception
- if(_isLocal) {
- try {
- _local_impl->CheckLocked();
- }
- catch(...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
- }
-}
-
-void SALOMEDS_StudyBuilder::SetName(const _PTR(SObject)& theSO, const std::string& theValue)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) _local_impl->SetName(aSO->GetLocalImpl(), (char*)theValue.c_str());
- else _corba_impl->SetName(aSO->GetCORBAImpl(), (char*)theValue.c_str());
-}
-
-void SALOMEDS_StudyBuilder::SetComment(const _PTR(SObject)& theSO, const std::string& theValue)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) _local_impl->SetComment(aSO->GetLocalImpl(), (char*)theValue.c_str());
- else _corba_impl->SetComment(aSO->GetCORBAImpl(), (char*)theValue.c_str());
-}
-
-void SALOMEDS_StudyBuilder::SetIOR(const _PTR(SObject)& theSO, const std::string& theValue)
-{
- CheckLocked();
-
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- if(_isLocal) _local_impl->SetIOR(aSO->GetLocalImpl(), (char*)theValue.c_str());
- else _corba_impl->SetIOR(aSO->GetCORBAImpl(), (char*)theValue.c_str());
-}
-
-void SALOMEDS_StudyBuilder::init_orb()
-{
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
- _orb = init(0 , 0 ) ;
-}
+++ /dev/null
-// File : SALOMEDS_StudyBuilder.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_STUDYBUILDER_H__
-#define __SALOMEDS_STUDYBUILDER_H__
-
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDSImpl_StudyBuilder.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-
-class SALOMEDS_StudyBuilder: public SALOMEDSClient_StudyBuilder
-{
-private:
- bool _isLocal;
- Handle(SALOMEDSImpl_StudyBuilder) _local_impl;
- SALOMEDS::StudyBuilder_var _corba_impl;
- CORBA::ORB_var _orb;
-
-public:
-
- SALOMEDS_StudyBuilder(const Handle(SALOMEDSImpl_StudyBuilder)& theBuilder);
- SALOMEDS_StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder);
- ~SALOMEDS_StudyBuilder();
-
- virtual _PTR(SComponent) NewComponent(const std::string& ComponentDataType);
- virtual void DefineComponentInstance (const _PTR(SComponent)&, const std::string& ComponentIOR);
- virtual void RemoveComponent(const _PTR(SComponent)& theSCO);
- virtual _PTR(SObject) NewObject(const _PTR(SObject)& theFatherObject);
- virtual _PTR(SObject) NewObjectToTag(const _PTR(SObject)& theFatherObject, int theTag);
- virtual void AddDirectory(const std::string& thePath);
- virtual void LoadWith(const _PTR(SComponent)& theSCO, const std::string& theIOR);
- virtual void Load(const _PTR(SObject)& theSCO);
- virtual void RemoveObject(const _PTR(SObject)& theSO);
- virtual void RemoveObjectWithChildren(const _PTR(SObject)& theSO);
- virtual _PTR(GenericAttribute) FindOrCreateAttribute(const _PTR(SObject)& theSO,
- const std::string& aTypeOfAttribute);
- virtual bool FindAttribute(const _PTR(SObject)& theSO,
- _PTR(GenericAttribute)& theAttribute,
- const std::string& aTypeOfAttribute);
- virtual void RemoveAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute);
- virtual void Addreference(const _PTR(SObject)& me, const _PTR(SObject)& thereferencedObject);
- virtual void RemoveReference(const _PTR(SObject)& me);
- virtual void SetGUID(const _PTR(SObject)& theSO, const std::string& theGUID);
- virtual bool IsGUID(const _PTR(SObject)& theSO, const std::string& theGUID);
- virtual void NewCommand();
- virtual void CommitCommand();
- virtual bool HasOpenCommand();
- virtual void AbortCommand();
- virtual void Undo();
- virtual void Redo();
- virtual bool GetAvailableUndos();
- virtual bool GetAvailableRedos();
- virtual int UndoLimit();
- virtual void UndoLimit(int theLimit);
- virtual void SetName(const _PTR(SObject)& theSO, const std::string& theValue);
- virtual void SetComment(const _PTR(SObject)& theSO, const std::string& theValue);
- virtual void SetIOR(const _PTR(SObject)& theSO, const std::string& theValue);
-
-private:
- void CheckLocked();
- void init_orb();
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_StudyBuilder_i.cxx
-// Author : Seregy RUIN
-// Module : SALOME
-
-
-#include "utilities.h"
-#include "SALOMEDS_StudyBuilder_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "Utils_ExceptHandlers.hxx"
-
-#include <TDF_Attribute.hxx>
-#include <stdlib.h>
-
-using namespace std;
-
-UNEXPECT_CATCH(SBSalomeException, SALOME::SALOME_Exception);
-UNEXPECT_CATCH(SBLockProtection, SALOMEDS::StudyBuilder::LockProtection);
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_StudyBuilder_i::SALOMEDS_StudyBuilder_i(const Handle(SALOMEDSImpl_StudyBuilder) theImpl,
- CORBA::ORB_ptr orb)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- _impl = theImpl;
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_StudyBuilder_i::~SALOMEDS_StudyBuilder_i()
-{}
-
-//============================================================================
-/*! Function : NewComponent
- * Purpose : Create a new component (Scomponent)
- */
-//============================================================================
-SALOMEDS::SComponent_ptr SALOMEDS_StudyBuilder_i::NewComponent(const char* DataType)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- //char* aDataType = CORBA::string_dup(DataType);
- Handle(SALOMEDSImpl_SComponent) aSCO = _impl->NewComponent(TCollection_AsciiString((char*)DataType));
- //CORBA::free_string(aDataType);
- if(aSCO.IsNull()) return SALOMEDS::SComponent::_nil();
-
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aSCO,_orb);
- return sco._retn();
-}
-
-//============================================================================
-/*! Function : DefineComponentInstance
- * Purpose : Add IOR attribute of a Scomponent
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::DefineComponentInstance(SALOMEDS::SComponent_ptr aComponent,
- CORBA::Object_ptr IOR)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_SComponent) aSCO;
- aSCO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSComponent((char*)aComponent->GetID());
-
- CORBA::String_var iorstr = _orb->object_to_string(IOR);
- _impl->DefineComponentInstance(aSCO, (char*)iorstr);
-}
-
-//============================================================================
-/*! Function : RemoveComponent
- * Purpose : Delete a Scomponent
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::RemoveComponent(SALOMEDS::SComponent_ptr aComponent)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- ASSERT(!CORBA::is_nil(aComponent));
- Handle(SALOMEDSImpl_SComponent) aSCO;
- aSCO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSComponent((char*)aComponent->GetID());
- _impl->RemoveComponent(aSCO);
-}
-
-//============================================================================
-/*! Function : NewObject
- * Purpose : Create a new SObject
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_StudyBuilder_i::NewObject(SALOMEDS::SObject_ptr theFatherObject)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
-
- Handle(SALOMEDSImpl_SObject) aFO, aSO;
- aFO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theFatherObject->GetID());
- aSO = _impl->NewObject(aFO);
- if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO,_orb);
-
- return so._retn();
-}
-
-//============================================================================
-/*! Function : NewObjectToTag
- * Purpose :
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_StudyBuilder_i::NewObjectToTag(SALOMEDS::SObject_ptr theFatherObject,
- CORBA::Long atag)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_SObject) aFO, aSO;
- aFO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theFatherObject->GetID());
- aSO = _impl->NewObjectToTag(aFO, atag);
- if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function : RemoveObject
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::RemoveObject(SALOMEDS::SObject_ptr anObject)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
- _impl->RemoveObject(aSO);
-}
-
-//============================================================================
-/*! Function : RemoveObjectWithChildren
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::RemoveObjectWithChildren(SALOMEDS::SObject_ptr anObject)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
- _impl->RemoveObjectWithChildren(aSO);
-}
-
-//============================================================================
-/*! Function : LoadWith
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::LoadWith(SALOMEDS::SComponent_ptr anSCO,
- SALOMEDS::Driver_ptr aDriver) throw(SALOME::SALOME_Exception)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBSalomeException);
-
- Handle(SALOMEDSImpl_SComponent) aSCO;
- aSCO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSComponent((char*)anSCO->GetID());
- SALOMEDS_Driver_i* driver = new SALOMEDS_Driver_i(aDriver, _orb);
- bool isDone = _impl->LoadWith(aSCO, driver);
- delete driver;
-
- if(!isDone && _impl->IsError()) {
- THROW_SALOME_CORBA_EXCEPTION(_impl->GetErrorCode().ToCString(),SALOME::BAD_PARAM);
- }
-}
-
-
-//============================================================================
-/*! Function : Load
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::Load(SALOMEDS::SObject_ptr sco)
-{
- MESSAGE ( "This function is not yet implemented");
-}
-
-//============================================================================
-/*! Function : FindOrCreateAttribute
- * Purpose : Add attribute of given type to SObject, if there is attribute of such type, returns
- * existing one
- */
-//============================================================================
-SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SALOMEDS::SObject_ptr anObject,
- const char* aTypeOfAttribute)
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_SObject) aSO;
- char* anID = anObject->GetID();
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject(anID);
- delete [] anID;
- Handle(TDF_Attribute) anAttr;
- try {
- anAttr = _impl->FindOrCreateAttribute(aSO, TCollection_AsciiString((char*)aTypeOfAttribute));
- }
- catch (...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
-
- SALOMEDS::GenericAttribute_var anAttribute;
- anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
-
- return anAttribute._retn();
-}
-
-//============================================================================
-/*! Function : FindAttribute
- * Purpose : Find attribute of given type assigned SObject, returns Standard_True if it is found
- */
-//============================================================================
-
-CORBA::Boolean SALOMEDS_StudyBuilder_i::FindAttribute(SALOMEDS::SObject_ptr anObject,
- SALOMEDS::GenericAttribute_out anAttribute,
- const char* aTypeOfAttribute)
-{
- SALOMEDS::Locker lock;
- ASSERT(!CORBA::is_nil(anObject));
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
- Handle(TDF_Attribute) anAttr;
-
- if(!_impl->FindAttribute(aSO, anAttr, TCollection_AsciiString((char*)aTypeOfAttribute))) return false;
-
- anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
- return true;
-}
-
-//============================================================================
-/*! Function : RemoveAttribute
- * Purpose : Remove attribute of given type assigned SObject
- */
-//============================================================================
-
-void SALOMEDS_StudyBuilder_i::RemoveAttribute(SALOMEDS::SObject_ptr anObject,
- const char* aTypeOfAttribute)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- ASSERT(!CORBA::is_nil(anObject));
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
- _impl->RemoveAttribute(aSO, TCollection_AsciiString((char*)aTypeOfAttribute));
-}
-
-//============================================================================
-/*! Function : Addreference
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::Addreference(SALOMEDS::SObject_ptr me,
- SALOMEDS::SObject_ptr theReferencedObject)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- ASSERT(!CORBA::is_nil(me));
- ASSERT(!CORBA::is_nil(theReferencedObject));
-
- Handle(SALOMEDSImpl_SObject) aSO, aRefSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)me->GetID());
- aRefSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theReferencedObject->GetID());
- _impl->Addreference(aSO, aRefSO);
-}
-
-//============================================================================
-/*! Function : RemoveReference
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::RemoveReference(SALOMEDS::SObject_ptr me)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- ASSERT(!CORBA::is_nil(me));
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)me->GetID());
- _impl->RemoveReference(aSO);
-}
-
-
-//============================================================================
-/*! Function : AddDirectory
- * Purpose : adds a new directory with a path = thePath
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::AddDirectory(const char* thePath)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- if(thePath == NULL || strlen(thePath) == 0) throw SALOMEDS::Study::StudyInvalidDirectory();
- if(!_impl->AddDirectory(TCollection_AsciiString((char*)thePath))) {
- TCollection_AsciiString anErrorCode = _impl->GetErrorCode();
- if(anErrorCode == "StudyNameAlreadyUsed") throw SALOMEDS::Study::StudyNameAlreadyUsed();
- if(anErrorCode == "StudyInvalidDirectory") throw SALOMEDS::Study::StudyInvalidDirectory();
- if(anErrorCode == "StudyInvalidComponent") throw SALOMEDS::Study::StudyInvalidComponent();
- }
-}
-
-
-//============================================================================
-/*! Function : SetGUID
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::SetGUID(SALOMEDS::SObject_ptr anObject, const char* theGUID)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- ASSERT(!CORBA::is_nil(anObject));
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
- _impl->SetGUID(aSO, TCollection_AsciiString((char*)theGUID));
-}
-
-//============================================================================
-/*! Function : IsGUID
- * Purpose :
- */
-//============================================================================
-bool SALOMEDS_StudyBuilder_i::IsGUID(SALOMEDS::SObject_ptr anObject, const char* theGUID)
-{
- SALOMEDS::Locker lock;
- ASSERT(!CORBA::is_nil(anObject));
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
- return _impl->IsGUID(aSO, TCollection_AsciiString((char*)theGUID));
-}
-
-
-//============================================================================
-/*! Function : NewCommand
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::NewCommand()
-{
- SALOMEDS::Locker lock;
- _impl->NewCommand();
-}
-
-//============================================================================
-/*! Function : CommitCommand
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::CommitCommand() throw (SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBLockProtection);
- try {
- _impl->CommitCommand();
- }
- catch(...) {
- MESSAGE("Locked document modification !!!");
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
-}
-
-//============================================================================
-/*! Function : HasOpenCommand
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_StudyBuilder_i::HasOpenCommand()
-{
- SALOMEDS::Locker lock;
- return _impl->HasOpenCommand();
-}
-
-//============================================================================
-/*! Function : AbortCommand
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::AbortCommand()
-{
- SALOMEDS::Locker lock;
- _impl->AbortCommand();
-}
-
-//============================================================================
-/*! Function : Undo
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::Undo() throw (SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBLockProtection);
- try {
- _impl->Undo();
- }
- catch(...) {
- MESSAGE("Locked document modification !!!");
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
-}
-
-//============================================================================
-/*! Function : Redo
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::Redo() throw (SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBLockProtection);
- try {
- _impl->Redo();
- }
- catch(...) {
- MESSAGE("Locked document modification !!!");
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
-}
-
-//============================================================================
-/*! Function : GetAvailableUndos
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_StudyBuilder_i::GetAvailableUndos()
-{
- SALOMEDS::Locker lock;
- return _impl->GetAvailableUndos();
-}
-
-//============================================================================
-/*! Function : GetAvailableRedos
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_StudyBuilder_i::GetAvailableRedos()
-{
- SALOMEDS::Locker lock;
- return _impl->GetAvailableRedos();
-}
-
-//============================================================================
-/*! Function : UndoLimit
- * Purpose :
- */
-//============================================================================
-CORBA::Long SALOMEDS_StudyBuilder_i::UndoLimit()
-{
- SALOMEDS::Locker lock;
- return _impl->UndoLimit();
-}
-
-//============================================================================
-/*! Function : UndoLimit
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::UndoLimit(CORBA::Long n)
-{
- SALOMEDS::Locker lock;
- CheckLocked();
- _impl->UndoLimit(n);
-}
-
-//============================================================================
-/*! Function : CheckLocked
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::CheckLocked() throw (SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBLockProtection);
- try {
- _impl->CheckLocked();
- }
- catch(...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
-}
-
-//============================================================================
-/*! Function : SetName
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::SetName(SALOMEDS::SObject_ptr theSO, const char* theValue)
- throw(SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBLockProtection);
- CheckLocked();
-
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theSO->GetID());
- _impl->SetName(aSO, TCollection_AsciiString((char*)theValue));
-}
-
-//============================================================================
-/*! Function : SetComment
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::SetComment(SALOMEDS::SObject_ptr theSO, const char* theValue)
- throw(SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBLockProtection);
- CheckLocked();
-
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theSO->GetID());
- _impl->SetComment(aSO, TCollection_AsciiString((char*)theValue));
-}
-
-//============================================================================
-/*! Function : SetIOR
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_StudyBuilder_i::SetIOR(SALOMEDS::SObject_ptr theSO, const char* theValue)
- throw(SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
- Unexpect aCatch(SBLockProtection);
- CheckLocked();
-
- Handle(SALOMEDSImpl_SObject) aSO;
- aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theSO->GetID());
- _impl->SetIOR(aSO, TCollection_AsciiString((char*)theValue));
-}
+++ /dev/null
-// File : SALOMEDS_StudyBuilder_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_STUDYBUILDER_I_H__
-#define __SALOMEDS_STUDYBUILDER_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDSImpl_StudyBuilder.hxx"
-
-// Cascade header
-#include <TDocStd_Document.hxx>
-
-class SALOMEDS_StudyBuilder_i: public POA_SALOMEDS::StudyBuilder,
- public PortableServer::RefCountServantBase
-{
-private:
- CORBA::ORB_ptr _orb;
- Handle(SALOMEDSImpl_StudyBuilder) _impl; // OCAF Document
-public:
-
- SALOMEDS_StudyBuilder_i(const Handle(SALOMEDSImpl_StudyBuilder), CORBA::ORB_ptr);
-
- ~SALOMEDS_StudyBuilder_i();
-
- //! NewComponent
- /*!
- \param ComponentDataType
- \return <ReturnValue>
- */
- virtual SALOMEDS::SComponent_ptr NewComponent(const char* ComponentDataType);
-
- //! DefineComponentInstance
- /*!
- \param SComponent_ptr
- \param ComponentIOR
- */
- virtual void DefineComponentInstance (SALOMEDS::SComponent_ptr, CORBA::Object_ptr ComponentIOR);
-
- //!
- /*!
- <long-description>
-
- \param aComponent
- */
- virtual void RemoveComponent(SALOMEDS::SComponent_ptr aComponent);
-
- //!
- /*!
- <long-description>
-
- \param theFatherObject
- \return <ReturnValue>
- */
- virtual SALOMEDS::SObject_ptr NewObject(SALOMEDS::SObject_ptr theFatherObject);
- //!
- /*!
- <long-description>
-
- \param theFatherObject
- \param atag
- \return <ReturnValue>
- */
- virtual SALOMEDS::SObject_ptr NewObjectToTag(SALOMEDS::SObject_ptr theFatherObject, CORBA::Long atag);
-
- /*!
- The methods adds a new subdirectory, the path can be absolute or relative (then the current context is used)
- */
- virtual void AddDirectory(const char* thePath);
-
- virtual void LoadWith(SALOMEDS::SComponent_ptr sco, SALOMEDS::Driver_ptr Engine)
- throw(SALOME::SALOME_Exception);
- virtual void Load(SALOMEDS::SObject_ptr sco);
-
- virtual void RemoveObject(SALOMEDS::SObject_ptr anObject);
- virtual void RemoveObjectWithChildren(SALOMEDS::SObject_ptr anObject);
-
- virtual SALOMEDS::GenericAttribute_ptr FindOrCreateAttribute(SALOMEDS::SObject_ptr anObject, const char* aTypeOfAttribute);
- virtual CORBA::Boolean FindAttribute(SALOMEDS::SObject_ptr anObject, SALOMEDS::GenericAttribute_out anAttribute, const char* aTypeOfAttribute);
- virtual void RemoveAttribute(SALOMEDS::SObject_ptr anObject, const char* aTypeOfAttribute);
-
- virtual void Addreference(SALOMEDS::SObject_ptr me, SALOMEDS::SObject_ptr thereferencedObject);
-
- virtual void RemoveReference(SALOMEDS::SObject_ptr me);
-
- virtual void SetGUID(SALOMEDS::SObject_ptr anObject, const char* theGUID);
- virtual bool IsGUID(SALOMEDS::SObject_ptr anObject, const char* theGUID);
-
- virtual void NewCommand();
- virtual void CommitCommand() throw(SALOMEDS::StudyBuilder::LockProtection);
- virtual CORBA::Boolean HasOpenCommand();
- virtual void AbortCommand();
- virtual void Undo() throw(SALOMEDS::StudyBuilder::LockProtection);
- virtual void Redo() throw(SALOMEDS::StudyBuilder::LockProtection);
- CORBA::Boolean GetAvailableUndos();
- CORBA::Boolean GetAvailableRedos();
- CORBA::Boolean IsSaved();
- CORBA::Boolean IsModified();
- virtual CORBA::Long UndoLimit();
- virtual void UndoLimit(CORBA::Long);
-
- void CheckLocked() throw (SALOMEDS::StudyBuilder::LockProtection);
-
- virtual void SetName(SALOMEDS::SObject_ptr theSO, const char* theValue) throw(SALOMEDS::StudyBuilder::LockProtection);
- virtual void SetComment(SALOMEDS::SObject_ptr theSO, const char* theValue) throw(SALOMEDS::StudyBuilder::LockProtection);
- virtual void SetIOR(SALOMEDS::SObject_ptr theSO, const char* theValue) throw(SALOMEDS::StudyBuilder::LockProtection);
-};
-#endif
+++ /dev/null
-// File : SALOMEDSClient_StudyManager.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_StudyManager.hxx"
-
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDS_Study.hxx"
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDS_Driver_i.hxx"
-
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include <string>
-#include <TCollection_AsciiString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-
-#include "OpUtil.hxx"
-
-using namespace std;
-
-SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb);
-
-SALOMEDS_StudyManager::SALOMEDS_StudyManager(SALOMEDS::StudyManager_ptr theManager)
-{
-
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
-
- long addr = theManager->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
- if(_isLocal) {
- _local_impl = ((SALOMEDSImpl_StudyManager*)(addr));
- _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
- }
- else {
- _local_impl = NULL;
- _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
- }
-
- init_orb();
-}
-
-SALOMEDS_StudyManager::SALOMEDS_StudyManager()
-{
- init_orb();
-
- SALOME_NamingService namingService(_orb);
- CORBA::Object_var obj = namingService.Resolve( "/myStudyManager" );
- SALOMEDS::StudyManager_var theManager = SALOMEDS::StudyManager::_narrow( obj );
- ASSERT( !CORBA::is_nil(theManager) );
-
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
-
- long addr = theManager->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
- if(_isLocal) {
- _local_impl = ((SALOMEDSImpl_StudyManager*)(addr));
- _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
- }
- else {
- _local_impl = NULL;
- _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
- }
-}
-
-SALOMEDS_StudyManager::~SALOMEDS_StudyManager()
-{
-}
-
-_PTR(Study) SALOMEDS_StudyManager::NewStudy(const std::string& study_name)
-{
- //SRN: Pure CORBA NewStudy as it does more initialization than the local one
- SALOMEDSClient_Study* aStudy = NULL;
-
- SALOMEDS::Study_var aStudy_impl = _corba_impl->NewStudy((char*)study_name.c_str());
- if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
-
- return _PTR(Study)(aStudy);
-}
-
-_PTR(Study) SALOMEDS_StudyManager::Open(const std::string& theStudyUrl)
-{
- //SRN: Pure CORBA Open as it does more initialization than the local one
- SALOMEDSClient_Study* aStudy = NULL;
-
- SALOMEDS::Study_var aStudy_impl = _corba_impl->Open((char*)theStudyUrl.c_str());
- if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
-
- aStudy = new SALOMEDS_Study(aStudy_impl.in());
-
- return _PTR(Study)(aStudy);
-}
-
-void SALOMEDS_StudyManager::Close(const _PTR(Study)& theStudy)
-{
- //SRN: Pure CORBA close as it does more cleaning than the local one
- SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
- _corba_impl->Close(aStudy);
-}
-
-void SALOMEDS_StudyManager::Save(const _PTR(Study)& theStudy, bool theMultiFile)
-{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
- SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
- _corba_impl->Save(aStudy, theMultiFile);
-}
-
-void SALOMEDS_StudyManager::SaveASCII(const _PTR(Study)& theStudy, bool theMultiFile)
-{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
- SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
- _corba_impl->SaveASCII(aStudy, theMultiFile);
-}
-
-void SALOMEDS_StudyManager::SaveAs(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile)
-{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
- SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
- _corba_impl->SaveAs((char*)theUrl.c_str(), aStudy, theMultiFile);
-}
-
-void SALOMEDS_StudyManager::SaveAsASCII(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile)
-{
- //SRN: Pure CORBA save as the save operation require CORBA in any case
- SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
- _corba_impl->SaveAsASCII((char*)theUrl.c_str(), aStudy, theMultiFile);
-}
-
-std::vector<std::string> SALOMEDS_StudyManager::GetOpenStudies()
-{
- std::vector<std::string> aVector;
- int aLength, i;
-
- if(_isLocal) {
- Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->GetOpenStudies();
- aLength = aSeq->Length();
- for(i = 1; i <= aLength; i++)
- aVector.push_back(Handle(SALOMEDSImpl_Study)::DownCast(aSeq->Value(i))->Name().ToCString());
- }
- else {
- SALOMEDS::ListOfOpenStudies_var aSeq = _corba_impl->GetOpenStudies();
- aLength = aSeq->length();
- for(i = 0; i < aLength; i++)
- aVector.push_back(aSeq[i].in());
- }
- return aVector;
-}
-
-_PTR(Study) SALOMEDS_StudyManager::GetStudyByName(const std::string& theStudyName)
-{
- SALOMEDSClient_Study* aStudy = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_Study) aStudy_impl = _local_impl->GetStudyByName((char*)theStudyName.c_str());
- if(aStudy_impl.IsNull()) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
- }
- else {
- SALOMEDS::Study_var aStudy_impl = _corba_impl->GetStudyByName((char*)theStudyName.c_str());
- if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
- }
- return _PTR(Study)(aStudy);
-}
-
-_PTR(Study) SALOMEDS_StudyManager::GetStudyByID(int theStudyID)
-{
- SALOMEDSClient_Study* aStudy = NULL;
- if(_isLocal) {
- Handle(SALOMEDSImpl_Study) aStudy_impl = _local_impl->GetStudyByID(theStudyID);
- if(aStudy_impl.IsNull()) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
- }
- else {
- SALOMEDS::Study_var aStudy_impl = _corba_impl->GetStudyByID(theStudyID);
- if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
- aStudy = new SALOMEDS_Study(aStudy_impl);
- }
- return _PTR(Study)(aStudy);
-}
-
-bool SALOMEDS_StudyManager::CanCopy(const _PTR(SObject)& theSO)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- bool ret;
-
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
- SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
- ret = _local_impl->CanCopy(aSO_impl, aDriver);
- delete aDriver;
- }
- else {
- ret = _corba_impl->CanCopy(aSO->GetCORBAImpl());
- }
-
- return ret;
-}
-
-bool SALOMEDS_StudyManager::Copy(const _PTR(SObject)& theSO)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- bool ret;
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
- SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
- ret = _local_impl->Copy(aSO_impl, aDriver);
- delete aDriver;
- }
- else {
- ret = _corba_impl->Copy(aSO->GetCORBAImpl());
- }
- return ret;
-}
-
-bool SALOMEDS_StudyManager::CanPaste(const _PTR(SObject)& theSO)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- bool ret;
-
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
- SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
- ret = _local_impl->CanPaste(aSO_impl, aDriver);
- delete aDriver;
- }
- else {
- ret = _corba_impl->CanPaste(aSO->GetCORBAImpl());
- }
-
- return ret;
-}
-
-_PTR(SObject) SALOMEDS_StudyManager::Paste(const _PTR(SObject)& theSO)
-{
- SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
- SALOMEDSClient_SObject* aResult = NULL;
-
- if(_isLocal) {
- Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
- SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
- Handle(SALOMEDSImpl_SObject) aNewSO = _local_impl->Paste(aSO_impl, aDriver);
- delete aDriver;
- if(aNewSO.IsNull()) return _PTR(SObject)(aResult);
- aResult = new SALOMEDS_SObject(aNewSO);
- }
- else {
- SALOMEDS::SObject_ptr aNewSO = _corba_impl->Paste(aSO->GetCORBAImpl());
- if(CORBA::is_nil(aNewSO)) return _PTR(SObject)(aResult);
- aResult = new SALOMEDS_SObject(aNewSO);
- }
-
- return _PTR(SObject)(aResult);
-}
-
-
-void SALOMEDS_StudyManager::init_orb()
-{
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
- _orb = init(0 , 0 ) ;
-}
-
-SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb)
-{
- SALOMEDS_Driver_i* driver = NULL;
-
- Handle(SALOMEDSImpl_SComponent) aSCO = theObject->GetFatherComponent();
- if(!aSCO.IsNull()) {
- TCollection_AsciiString IOREngine = aSCO->GetIOR();
- if(!IOREngine.IsEmpty()) {
- CORBA::Object_var obj = orb->string_to_object(IOREngine.ToCString());
- SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
- driver = new SALOMEDS_Driver_i(Engine, orb);
- }
- }
-
- return driver;
-}
+++ /dev/null
-// File : SALOMEDS_StudyManager.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_STUDYMANAGER_H__
-#define __SALOMEDS_STUDYMANAGER_H__
-
-#include <vector>
-#include <string>
-
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDSImpl_StudyManager.hxx"
-
-// IDL headers
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class Standard_EXPORT SALOMEDS_StudyManager: public SALOMEDSClient_StudyManager
-{
-private:
- bool _isLocal;
- Handle(SALOMEDSImpl_StudyManager) _local_impl;
- SALOMEDS::StudyManager_var _corba_impl;
- CORBA::ORB_var _orb;
-
-public:
-
- SALOMEDS_StudyManager(SALOMEDS::StudyManager_ptr theManager);
- SALOMEDS_StudyManager();
- ~SALOMEDS_StudyManager();
-
- virtual _PTR(Study) NewStudy(const std::string& study_name);
- virtual _PTR(Study) Open(const std::string& theStudyUrl);
- virtual void Close(const _PTR(Study)& theStudy);
- virtual void Save(const _PTR(Study)& theStudy, bool theMultiFile);
- virtual void SaveASCII(const _PTR(Study)& theStudy, bool theMultiFile);
- virtual void SaveAs(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile);
- virtual void SaveAsASCII(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile);
- virtual std::vector<std::string> GetOpenStudies();
- virtual _PTR(Study) GetStudyByName(const std::string& theStudyName) ;
- virtual _PTR(Study) GetStudyByID(int theStudyID) ;
- virtual bool CanCopy(const _PTR(SObject)& theSO);
- virtual bool Copy(const _PTR(SObject)& theSO);
- virtual bool CanPaste(const _PTR(SObject)& theSO);
- virtual _PTR(SObject) Paste(const _PTR(SObject)& theSO);
-
-private:
- void init_orb();
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_StudyManager_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "utilities.h"
-#include "SALOME_LifeCycleCORBA.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-
-#include <TColStd_HArray1OfCharacter.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
-
-#include "Utils_CorbaException.hxx"
-
-#include <strstream>
-#include <map>
-using namespace std;
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include "OpUtil.hxx"
-
-#include "SALOME_GenericObj_i.hh"
-
-#include "Utils_ExceptHandlers.hxx"
-
-UNEXPECT_CATCH(SalomeException,SALOME::SALOME_Exception);
-UNEXPECT_CATCH(LockProtection, SALOMEDS::StudyBuilder::LockProtection);
-
-static SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb);
-
-static std::map<int, PortableServer::POA_ptr> _mapOfPOA;
-
-//============================================================================
-/*! Function : SALOMEDS_StudyManager_i
- * Purpose : SALOMEDS_StudyManager_i constructor
- */
-//============================================================================
-SALOMEDS_StudyManager_i::SALOMEDS_StudyManager_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr thePOA)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- _poa = PortableServer::POA::_duplicate(thePOA);
- _name_service = new SALOME_NamingService(_orb);
- // Study directory creation in the naming service : to register all
- // open studies in the session
- _name_service->Create_Directory("/Study");
- _impl = new SALOMEDSImpl_StudyManager;
- _factory = new SALOMEDS_DriverFactory_i(_orb);
-}
-
-//============================================================================
-/*! Function : ~SALOMEDS_StudyManager_i
- * Purpose : SALOMEDS_StudyManager_i destructor
- */
-//============================================================================
-SALOMEDS_StudyManager_i::~SALOMEDS_StudyManager_i()
-{
- // Destroy directory to register open studies
- _name_service->Destroy_Directory("/Study");
- delete _factory;
-}
-
-//============================================================================
-/*! Function : register_name
- * Purpose : Register the study Manager in the naming service under the
- * context name
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::register_name(char * name)
-{
- SALOMEDS::StudyManager_var aManager(_this());
- _name_service->Register(aManager.in(), name);
-}
-
-
-//============================================================================
-/*! Function : NewStudy
- * Purpose : Create a New Study of name study_name
- */
-//============================================================================
-SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* study_name)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->NewStudy(TCollection_AsciiString((char*)study_name));
- if(aStudyImpl.IsNull()) {
- MESSAGE("NewStudy : Error : " << _impl->GetErrorCode());
- return SALOMEDS::Study::_nil();
- }
-
- MESSAGE("NewStudy : Creating the CORBA servant holding it... ");
-
- SALOMEDS_Study_i *Study_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
- SALOMEDS::Study_var Study = SALOMEDS::Study::_narrow(Study_servant->_this());
-
- // Register study in the naming service
- // Path to acces the study
- if(!_name_service->Change_Directory("/Study"))
- MESSAGE( "Unable to access the study directory" )
- else
- _name_service->Register(Study, study_name);
-
- // Assign the value of the IOR in the study->root
- const char* IORStudy = _orb->object_to_string(Study);
-
- aStudyImpl->SetTransientReference((char*)IORStudy);
-
- _mapOfPOA[Study->StudyId()] = _poa;
-
- return Study;
-}
-
-//============================================================================
-/*! Function : Open
- * Purpose : Open a Study from it's persistent reference
- */
-//============================================================================
-SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::Open(const char* aUrl)
- throw(SALOME::SALOME_Exception)
-{
- SALOMEDS::Locker lock;
-
- Unexpect aCatch(SalomeException);
- MESSAGE("Begin of SALOMEDS_StudyManager_i::Open");
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->Open(TCollection_AsciiString((char*)aUrl));
-
- MESSAGE("Open : Creating the CORBA servant holding it... ");
-
- // Temporary aStudyUrl in place of study name
- SALOMEDS_Study_i * Study_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
- SALOMEDS::Study_var Study = SALOMEDS::Study::_narrow(Study_servant->_this());
-
- // Assign the value of the IOR in the study->root
- CORBA::String_var IORStudy = _orb->object_to_string(Study);
- aStudyImpl->SetTransientReference((char*)IORStudy);
-
- // Register study in the naming service
- // Path to acces the study
- if(!_name_service->Change_Directory("/Study")) MESSAGE( "Unable to access the study directory" )
- else _name_service->Register(Study, CORBA::string_dup(aStudyImpl->Name().ToCString()));
-
- return Study;
-}
-
-
-
-//============================================================================
-/*! Function : Close
- * Purpose : Close a study.
- * If the study hasn't been saved, ask the user to confirm the
- * close action without saving
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::Close(SALOMEDS::Study_ptr aStudy)
-{
- SALOMEDS::Locker lock;
-
- if(aStudy->_is_nil()) return;
-
- // Destroy study name in the naming service
- if(_name_service->Change_Directory("/Study")){
- CORBA::String_var aString(aStudy->Name());
- _name_service->Destroy_Name(aString.in());
- }
-
- SALOMEDS::unlock();
- aStudy->Close();
- SALOMEDS::lock();
-}
-
-//============================================================================
-/*! Function : Save
- * Purpose : Save a Study to it's persistent reference
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::Save(SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
-{
- SALOMEDS::Locker lock;
-
- if(aStudy->_is_nil()) {
- MESSAGE("Save error: Study is null");
- return;
- }
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- _impl->Save(aStudyImpl, _factory, theMultiFile);
-}
-
-void SALOMEDS_StudyManager_i::SaveASCII(SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
-{
- SALOMEDS::Locker lock;
-
- if(aStudy->_is_nil()) {
- MESSAGE("SaveASCII error: Study is null");
- return;
- }
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- _impl->SaveASCII(aStudyImpl, _factory, theMultiFile);
-}
-
-//=============================================================================
-/*! Function : SaveAs
- * Purpose : Save a study to the persistent reference aUrl
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::SaveAs(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
-{
- SALOMEDS::Locker lock;
-
- if(aStudy->_is_nil()) {
- MESSAGE("SaveASCII error: Study is null");
- return;
- }
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- _impl->SaveAs(TCollection_AsciiString((char*)aUrl), aStudyImpl, _factory, theMultiFile);
-}
-
-void SALOMEDS_StudyManager_i::SaveAsASCII(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
-{
- SALOMEDS::Locker lock;
-
- if(aStudy->_is_nil()) {
- MESSAGE("SaveASCII error: Study is null");
- return;
- }
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- _impl->SaveAsASCII(TCollection_AsciiString((char*)aUrl), aStudyImpl, _factory, theMultiFile);
-}
-
-//============================================================================
-/*! Function : GetOpenStudies
- * Purpose : Get name list of open studies in the session
- */
-//============================================================================
-SALOMEDS::ListOfOpenStudies* SALOMEDS_StudyManager_i::GetOpenStudies()
-{
- SALOMEDS::Locker lock;
-
- Handle(TColStd_HSequenceOfTransient) anOpened = _impl->GetOpenStudies();
- int aLength = anOpened->Length();
-
- SALOMEDS::ListOfOpenStudies_var _list_open_studies = new SALOMEDS::ListOfOpenStudies;
- _list_open_studies->length(aLength);
-
- if(!aLength)
- {
- MESSAGE("No active study in this session");
- }
- else
- {
- for (unsigned int ind=1; ind <= aLength; ind++)
- {
- Handle(SALOMEDSImpl_Study) aStudy = Handle(SALOMEDSImpl_Study)::DownCast(anOpened->Value(ind));
- _list_open_studies[ind-1] = CORBA::string_dup(aStudy->Name().ToCString());
- SCRUTE(_list_open_studies[ind-1]) ;
- }
- }
- return _list_open_studies._retn();
-}
-
-//============================================================================
-/*! Function : GetStudyByName
- * Purpose : Get a study from its name
- */
-//============================================================================
-SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::GetStudyByName(const char* aStudyName)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_Study) aStudyImpl =
- _impl->GetStudyByName(TCollection_AsciiString((char*)aStudyName));
-
- if (aStudyImpl.IsNull())
- {
- MESSAGE(_impl->GetErrorCode().ToCString());
- return SALOMEDS::Study::_nil();
- }
-
- SALOMEDS_Study_i* aStudy_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
- SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(aStudy_servant->_this());
-
- return aStudy._retn();
-}
-
-//============================================================================
-/*! Function : GetStudyByID
- * Purpose : Get a study from its ID
- */
-//============================================================================
-SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::GetStudyByID(CORBA::Short aStudyID)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudyID);
-
- if (aStudyImpl.IsNull())
- {
- MESSAGE(_impl->GetErrorCode().ToCString());
- return SALOMEDS::Study::_nil();
- }
-
- SALOMEDS_Study_i* aStudy_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
- SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(aStudy_servant->_this());
-
- return aStudy._retn();
-}
-
-
-//============================================================================
-/*! Function : CanCopy
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_StudyManager_i::CanCopy(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::Study_var aStudy = theObject->GetStudy();
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
-
- SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
- bool ret = _impl->CanCopy(anObject, aDriver);
- delete aDriver;
- return ret;
-}
-
-//============================================================================
-/*! Function : Copy
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_StudyManager_i::Copy(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::Study_var aStudy = theObject->GetStudy();
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
-
- SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
- bool ret = _impl->Copy(anObject, aDriver);
- delete aDriver;
- return ret;
-}
-
-//============================================================================
-/*! Function : CanPaste
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_StudyManager_i::CanPaste(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::Study_var aStudy = theObject->GetStudy();
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
-
- SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
- bool ret = _impl->CanPaste(anObject, aDriver);
- delete aDriver;
- return ret;
-}
-
-//============================================================================
-/*! Function : Paste
- * Purpose :
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_StudyManager_i::Paste(SALOMEDS::SObject_ptr theObject)
- throw(SALOMEDS::StudyBuilder::LockProtection)
-{
- SALOMEDS::Locker lock;
-
- Unexpect aCatch(LockProtection);
- SALOMEDS::Study_var aStudy = theObject->GetStudy();
-
- Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
- Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
- Handle(SALOMEDSImpl_SObject) aNewSO;
-
- try {
- SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
- aNewSO = _impl->Paste(anObject, aDriver);
- delete aDriver;
- }
- catch (...) {
- throw SALOMEDS::StudyBuilder::LockProtection();
- }
-
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aNewSO, _orb);
- return so._retn();
-}
-
-
-SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb)
-{
- SALOMEDS_Driver_i* driver = NULL;
-
- Handle(SALOMEDSImpl_SComponent) aSCO = theObject->GetFatherComponent();
- if(!aSCO.IsNull()) {
- TCollection_AsciiString IOREngine = aSCO->GetIOR();
- if(!IOREngine.IsEmpty()) {
- CORBA::Object_var obj = orb->string_to_object(IOREngine.ToCString());
- SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
- driver = new SALOMEDS_Driver_i(Engine, orb);
- }
- }
-
- return driver;
-}
-
-PortableServer::POA_ptr SALOMEDS_StudyManager_i::GetPOA(const SALOMEDS::Study_ptr theStudy) {
- if (_mapOfPOA.find(theStudy->StudyId()) != _mapOfPOA.end()) return _mapOfPOA[theStudy->StudyId()];
- return PortableServer::POA::_nil();
-}
-
-//===========================================================================
-// PRIVATE FUNCTIONS
-//===========================================================================
-long SALOMEDS_StudyManager_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
- isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
- SALOMEDSImpl_StudyManager* aManager = _impl.operator->();
- return ((long)aManager);
-}
-
-//===========================================================================
-namespace SALOMEDS
-{
-/*
- CORBA::Object_var
- GetObject(const TDF_Label& theLabel, CORBA::ORB_ptr theORB)
- {
- try {
- Handle(SALOMEDS_IORAttribute) anAttr;
- if(theLabel.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr))
- return theORB->string_to_object(TCollection_AsciiString(anAttr->Get()).ToCString());
- }catch(...){
- }
- return CORBA::Object::_nil();
- }
-*/
-
- PortableServer::ServantBase_var
- GetServant(CORBA::Object_ptr theObject, PortableServer::POA_ptr thePOA)
- {
- if(CORBA::is_nil(theObject))
- return NULL;
- try{
- return thePOA->reference_to_servant(theObject);
- }catch(...){
- return NULL;
- }
- }
-
-}
-
-//===========================================================================
+++ /dev/null
-// File : SALOMEDS_StudyManager_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_STUDYMANAGER_I_H__
-#define __SALOMEDS_STUDYMANAGER_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-// Naming Service header
-#include "SALOME_NamingService.hxx"
-
-#include <stdlib.h>
-
-//Standard not implemented
-#include <Standard_NotImplemented.hxx>
-#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDSImpl_StudyManager.hxx"
-
-namespace SALOMEDS{
-
- // To convert IOR from SALOMEDS_IORAttribute to CORBA::Object
- /* CORBA::Object_var GetObject(const TDF_Label&, CORBA::ORB_ptr); */
-
- // To convert CORBA::Object to PortableServer::ServantBase
- PortableServer::ServantBase_var GetServant(CORBA::Object_ptr, PortableServer::POA_ptr);
-
-}
-
-class Standard_EXPORT SALOMEDS_StudyManager_i: public POA_SALOMEDS::StudyManager,
- public PortableServer::RefCountServantBase {
-private:
-
- CORBA::ORB_ptr _orb;
- PortableServer::POA_var _poa;
- Handle(SALOMEDSImpl_StudyManager) _impl;
- SALOME_NamingService* _name_service;
- SALOMEDS_DriverFactory_i* _factory;
-
-public:
-
- //! standard constructor
- SALOMEDS_StudyManager_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr thePOA);
-
- //! standard destructor
- virtual ~SALOMEDS_StudyManager_i();
-
- //! method to Register study Manager in the naming service
- /*!
- \param char* arguments, the context to register the study manager in the NS
- */
- void register_name(char * name);
-
- //! method to Create a New Study of name study_name
- /*!
- \param char* arguments, the new study name
- \return Study_ptr arguments
- */
- virtual SALOMEDS::Study_ptr NewStudy(const char* study_name);
-
- //! method to Open a Study from it's persistent reference
- /*!
- \param char* arguments, the study URL
- \return Study_ptr arguments
- */
- virtual SALOMEDS::Study_ptr Open(const char* aStudyUrl) throw (SALOME::SALOME_Exception);
-
-
- //! method to close a Study
- /*!
- \param Study_ptr arguments
- */
- virtual void Close( SALOMEDS::Study_ptr aStudy);
-
- //! method to save a Study
- /*!
- \param Study_ptr arguments
- */
- virtual void Save( SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
-
- virtual void SaveASCII( SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
-
- //! method to save a Study to the persistent reference aUrl
- /*!
- \param char* arguments, the new URL of the study
- \param Study_ptr arguments
- */
- virtual void SaveAs(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
- virtual void SaveAsASCII(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
-
- //! method to Get name list of open studies in the session
- /*!
- \return ListOfOpenStudies* arguments
- */
- virtual SALOMEDS::ListOfOpenStudies* GetOpenStudies();
-
- //! method to get a Study from it's name
- /*!
- \param char* arguments, the study name
- \return Study_ptr arguments
- */
- virtual SALOMEDS::Study_ptr GetStudyByName(const char* aStudyName) ;
-
- //! method to get a Study from it's ID
- /*!
- \param char* arguments, the study ID
- \return Study_ptr arguments
- */
- virtual SALOMEDS::Study_ptr GetStudyByID(CORBA::Short aStudyID) ;
-
- virtual CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
- virtual CORBA::Boolean Copy(SALOMEDS::SObject_ptr theObject);
- virtual CORBA::Boolean CanPaste(SALOMEDS::SObject_ptr theObject);
- virtual SALOMEDS::SObject_ptr Paste(SALOMEDS::SObject_ptr theObject) throw(SALOMEDS::StudyBuilder::LockProtection);
-
- virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
- virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
-
- void ping(){};
-
- virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
-
- static PortableServer::POA_ptr GetPOA(const SALOMEDS::Study_ptr theStudy);
-};
-
-#endif
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data server
---
--- Copyright (C) 2003 CEA/DEN, EDF R&D
---
---
---
--- File : SALOMEDS_StudyPropertiesAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class StudyPropertiesAttribute from SALOMEDS inherits Attribute from TDF
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- DataSet from TDF,
- RelocationTable from TDF,
- Data from TDF,
- ExtendedString from TCollection,
- HSequenceOfExtendedString from TColStd,
- HSequenceOfInteger from TColStd
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF)
- returns StudyPropertiesAttribute from SALOMEDS;
-
- ---Purpose: Common methods
- -- ============
-
- Create
- returns mutable StudyPropertiesAttribute from SALOMEDS;
-
- Init(me: mutable);
-
- SetUserName(me: mutable; theName : ExtendedString from TCollection);
- GetCreatorName(me) returns ExtendedString from TCollection;
- GetUserNames(me) returns HSequenceOfExtendedString from TColStd;
- SetFirstName(me: mutable; theName : ExtendedString from TCollection);
-
- SetModificationDate(me: mutable; theMinute, theHour, theDay, theMonth, theYear : Integer from Standard);
- GetCreationDate(me; theMinute, theHour, theDay, theMonth, theYear : out Integer from Standard)
- returns Boolean from Standard;
- GetModificationDates(me; theMinutes, theHours, theDays, theMonths, theYears : out HSequenceOfInteger from TColStd);
-
- SetCreationMode(me: mutable; theMode : Integer from Standard);
- GetCreationMode(me) returns Integer from Standard;
-
- SetModified(me: mutable; theModified : Integer from Standard);
- IsModified(me) returns Boolean from Standard;
- GetModified(me) returns Integer from Standard;
-
- SetLocked(me: mutable; theLocked : Boolean from Standard);
- IsLocked(me) returns Boolean from Standard;
- IsLockChanged(me: mutable; theErase : Boolean from Standard) returns Boolean from Standard;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-fields
-
- myUserName : HSequenceOfExtendedString from TColStd;
- myMinute : HSequenceOfInteger from TColStd;
- myHour : HSequenceOfInteger from TColStd;
- myDay : HSequenceOfInteger from TColStd;
- myMonth : HSequenceOfInteger from TColStd;
- myYear : HSequenceOfInteger from TColStd;
- myMode : Integer from Standard;
- myModified : Integer from Standard;
- myLocked : Boolean from Standard;
- myLockChanged : Boolean from Standard;
-
-end StudyPropertiesAttribute;
+++ /dev/null
-// File : SALOMEDS_Study_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "utilities.h"
-#include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS_UseCaseIterator_i.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_AttributeStudyProperties_i.hxx"
-#include "SALOMEDS_ChildIterator_i.hxx"
-#include "SALOMEDS_Driver_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_UseCaseBuilder.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-#include "SALOMEDSImpl_ChildIterator.hxx"
-
-#include <TColStd_SequenceOfExtendedString.hxx>
-#include <TColStd_HSequenceOfAsciiString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-#include <TDF_Label.hxx>
-#include <TDF_Attribute.hxx>
-
-#ifdef WIN32
-#include <process.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-#include "OpUtil.hxx"
-
-using namespace std;
-
-//============================================================================
-/*! Function : SALOMEDS_Study_i
- * Purpose : SALOMEDS_Study_i constructor
- */
-//============================================================================
-SALOMEDS_Study_i::SALOMEDS_Study_i(const Handle(SALOMEDSImpl_Study) theImpl,
- CORBA::ORB_ptr orb)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- _impl = theImpl;
-
- _builder = new SALOMEDS_StudyBuilder_i(_impl->NewBuilder(), _orb);
-}
-
-//============================================================================
-/*! Function : ~SALOMEDS_Study_i
- * Purpose : SALOMEDS_Study_i destructor
- */
-//============================================================================
-SALOMEDS_Study_i::~SALOMEDS_Study_i()
-{
-}
-
-//============================================================================
-/*! Function : GetPersistentReference
- * Purpose : Get persistent reference of study (idem URL())
- */
-//============================================================================
-char* SALOMEDS_Study_i::GetPersistentReference()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->GetPersistentReference().ToCString());
-}
-//============================================================================
-/*! Function : GetTransientReference
- * Purpose : Get IOR of the Study (registred in OCAF document in doc->Root)
- */
-//============================================================================
-char* SALOMEDS_Study_i::GetTransientReference()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->GetTransientReference().ToCString());
-}
-
-//============================================================================
-/*! Function : IsEmpty
- * Purpose : Detect if study is empty
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_Study_i::IsEmpty()
-{
- SALOMEDS::Locker lock;
- return _impl->IsEmpty();
-}
-
-//============================================================================
-/*! Function : FindComponent
- * Purpose : Find a Component with ComponentDataType = aComponentName
- */
-//============================================================================
-SALOMEDS::SComponent_ptr SALOMEDS_Study_i::FindComponent (const char* aComponentName)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SComponent) aCompImpl = _impl->FindComponent(TCollection_AsciiString((char*)aComponentName));
- if(aCompImpl.IsNull()) return SALOMEDS::SComponent::_nil();
-
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aCompImpl, _orb);
- return sco._retn();
-}
-
-//============================================================================
-/*! Function : FindComponentID
- * Purpose : Find a Component from it's ID
- */
-//============================================================================
-SALOMEDS::SComponent_ptr SALOMEDS_Study_i::FindComponentID(const char* aComponentID)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SComponent) aCompImpl = _impl->FindComponentID(TCollection_AsciiString((char*)aComponentID));
- if(aCompImpl.IsNull()) return SALOMEDS::SComponent::_nil();
-
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aCompImpl, _orb);
- return sco._retn();
-}
-
-//============================================================================
-/*! Function : FindObject
- * Purpose : Find an Object with SALOMEDS::Name = anObjectName
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObject(const char* anObjectName)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObject(TCollection_AsciiString((char*)anObjectName));
- if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
-
- if(aSO->DynamicType() == STANDARD_TYPE(SALOMEDSImpl_SComponent)) {
- Handle(SALOMEDSImpl_SComponent) aSCO = Handle(SALOMEDSImpl_SComponent)::DownCast(aSO);
- SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aSCO, _orb);
- return sco._retn();
- }
-
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
-
- return so._retn();
-}
-
-//============================================================================
-/*! Function : FindObjectID
- * Purpose : Find an Object with ID = anObjectID
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectID(const char* anObjectID)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObjectID(TCollection_AsciiString((char*)anObjectID));
- if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function : CreateObjectID
- * Purpose : Creates an Object with ID = anObjectID
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_Study_i::CreateObjectID(const char* anObjectID)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SObject) aSO = _impl->CreateObjectID((char*)anObjectID);
- if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
-
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function : FindObjectByName
- * Purpose : Find Objects with SALOMEDS::Name = anObjectName in a Component
- * : with ComponentDataType = aComponentName
- */
-//============================================================================
-SALOMEDS::Study::ListOfSObject* SALOMEDS_Study_i::FindObjectByName( const char* anObjectName,
- const char* aComponentName )
-{
- SALOMEDS::Locker lock;
-
- Handle(TColStd_HSequenceOfTransient) aSeq = _impl->FindObjectByName(TCollection_AsciiString((char*)anObjectName),
- TCollection_AsciiString((char*)aComponentName));
- int aLength = aSeq->Length();
- SALOMEDS::Study::ListOfSObject_var listSO = new SALOMEDS::Study::ListOfSObject ;
- listSO->length(aLength);
- for(int i = 1; i<=aLength; i++) {
- Handle(SALOMEDSImpl_SObject) aSO = Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i));
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- listSO[i-1] = so ;
- }
- return listSO._retn() ;
-}
-
-//============================================================================
-/*! Function : FindObjectIOR
- * Purpose : Find an Object with IOR = anObjectIOR
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectIOR(const char* anObjectIOR)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObjectIOR(TCollection_AsciiString((char*)anObjectIOR));
- if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
-
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function : FindObjectByPath
- * Purpose : Find an Object by its path = thePath
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectByPath(const char* thePath)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObjectByPath(TCollection_AsciiString((char*)thePath));
- if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
-
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function : GetObjectPath
- * Purpose :
- */
-//============================================================================
-char* SALOMEDS_Study_i::GetObjectPath(CORBA::Object_ptr theObject)
-{
- SALOMEDS::Locker lock;
-
- TCollection_AsciiString aPath("");
- if(CORBA::is_nil(theObject)) return CORBA::string_dup(aPath.ToCString());
- Handle(SALOMEDSImpl_SObject) aSO;
- SALOMEDS::SObject_var aSObj = SALOMEDS::SObject::_narrow(theObject);
-
- if(!CORBA::is_nil(aSObj)) {
- aSO = _impl->FindObjectID(aSObj->GetID());
- }
- else {
- aSO = _impl->FindObjectIOR(_orb->object_to_string(theObject));
- }
-
- if(aSO.IsNull()) return CORBA::string_dup(aPath.ToCString());
-
- aPath = _impl->GetObjectPath(aSO);
- return CORBA::string_dup(aPath.ToCString());
-}
-
-
-//============================================================================
-/*! Function : SetContext
- * Purpose : Sets the current context
- */
-//============================================================================
-void SALOMEDS_Study_i::SetContext(const char* thePath)
-{
- SALOMEDS::Locker lock;
-
- _impl->SetContext(TCollection_AsciiString((char*)thePath));
- if(_impl->IsError() && _impl->GetErrorCode() == "InvalidContext")
- throw SALOMEDS::Study::StudyInvalidContext();
-}
-
-//============================================================================
-/*! Function : GetContext
- * Purpose : Gets the current context
- */
-//============================================================================
-char* SALOMEDS_Study_i::GetContext()
-{
- SALOMEDS::Locker lock;
-
- if(!_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();
- return CORBA::string_dup(_impl->GetContext().ToCString());
-}
-
-//============================================================================
-/*! Function : GetObjectNames
- * Purpose : method to get all object names in the given context (or in the current context, if 'theContext' is empty)
- */
-//============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetObjectNames(const char* theContext)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
- if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetObjectNames(TCollection_AsciiString((char*)theContext));
- int aLength = aSeq->Length();
- aResult->length(aLength);
- for(int anIndex = 1; anIndex <= aLength; anIndex++) {
- aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
- }
- return aResult._retn();
-}
-
-//============================================================================
-/*! Function : GetDirectoryNames
- * Purpose : method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
- */
-//============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetDirectoryNames(const char* theContext)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
- if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetDirectoryNames(TCollection_AsciiString((char*)theContext));
- int aLength = aSeq->Length();
- aResult->length(aLength);
- for(int anIndex = 1; anIndex <= aLength; anIndex++) {
- aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
- }
- return aResult._retn();
-}
-
-//============================================================================
-/*! Function : GetFileNames
- * Purpose : method to get all file names in the given context (or in the current context, if 'theContext' is empty)
- */
-//============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetFileNames(const char* theContext)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
- if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetFileNames(TCollection_AsciiString((char*)theContext));
- int aLength = aSeq->Length();
- aResult->length(aLength);
- for(int anIndex = 1; anIndex <= aLength; anIndex++) {
- aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
- }
- return aResult._retn();
-}
-
-//============================================================================
-/*! Function : GetComponentNames
- * Purpose : method to get all components names
- */
-//============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetComponentNames(const char* theContext)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
- if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetComponentNames(TCollection_AsciiString((char*)theContext));
- int aLength = aSeq->Length();
- aResult->length(aLength);
- for(int anIndex = 1; anIndex <= aLength; anIndex++) {
- aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
- }
- return aResult._retn();
-}
-
-//============================================================================
-/*! Function : NewChildIterator
- * Purpose : Create a ChildIterator from an SObject
- */
-//============================================================================
-SALOMEDS::ChildIterator_ptr SALOMEDS_Study_i::NewChildIterator(SALOMEDS::SObject_ptr theSO)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_SObject) aSO = _impl->GetSObject(theSO->GetID());
- Handle(SALOMEDSImpl_ChildIterator) anItr = new SALOMEDSImpl_ChildIterator(aSO);
-
- //Create iterator
- SALOMEDS_ChildIterator_i* it_servant = new SALOMEDS_ChildIterator_i(anItr, _orb);
- SALOMEDS::ChildIterator_var it = SALOMEDS::ChildIterator::_narrow(it_servant->_this());
-
- return it;
-}
-
-
-//============================================================================
-/*! Function : NewComponentIterator
- * Purpose : Create a SComponentIterator
- */
-//============================================================================
-SALOMEDS::SComponentIterator_ptr SALOMEDS_Study_i::NewComponentIterator()
-{
- SALOMEDS::Locker lock;
- SALOMEDS_SComponentIterator_i* _it = new SALOMEDS_SComponentIterator_i(_impl->NewComponentIterator(), _orb);
- _it->Init();
- return _it->_this();
-}
-
-
-//============================================================================
-/*! Function : NewBuilder
- * Purpose : Create a StudyBuilder
- */
-//============================================================================
-SALOMEDS::StudyBuilder_ptr SALOMEDS_Study_i::NewBuilder()
-{
- SALOMEDS::Locker lock;
- return _builder->_this();
-}
-
-//============================================================================
-/*! Function : Name
- * Purpose : get study name
- */
-//============================================================================
-char* SALOMEDS_Study_i::Name()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->Name().ToCString());
-}
-
-//============================================================================
-/*! Function : Name
- * Purpose : set study name
- */
-//============================================================================
-void SALOMEDS_Study_i::Name(const char* name)
-{
- SALOMEDS::Locker lock;
- _impl->Name(TCollection_AsciiString((char*)name));
-}
-
-//============================================================================
-/*! Function : IsSaved
- * Purpose : get if study has been saved
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_Study_i::IsSaved()
-{
- SALOMEDS::Locker lock;
- return _impl->IsSaved();
-}
-
-//============================================================================
-/*! Function : IsSaved
- * Purpose : set if study has been saved
- */
-//============================================================================
-void SALOMEDS_Study_i::IsSaved(CORBA::Boolean save)
-{
- SALOMEDS::Locker lock;
- _impl->IsSaved(save);
-}
-
-//============================================================================
-/*! Function : IsModified
- * Purpose : Detect if a Study has been modified since it has been saved
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_Study_i::IsModified()
-{
- SALOMEDS::Locker lock;
- return _impl->IsModified();
-}
-
-//============================================================================
-/*! Function : URL
- * Purpose : get URL of the study (persistent reference of the study)
- */
-//============================================================================
-char* SALOMEDS_Study_i::URL()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->URL().ToCString());
-}
-
-//============================================================================
-/*! Function : URL
- * Purpose : set URL of the study (persistent reference of the study)
- */
-//============================================================================
-void SALOMEDS_Study_i::URL(const char* url)
-{
- SALOMEDS::Locker lock;
- _impl->URL(TCollection_AsciiString((char*)url));
-}
-
-
-CORBA::Short SALOMEDS_Study_i::StudyId()
-{
- SALOMEDS::Locker lock;
- return _impl->StudyId();
-}
-
-void SALOMEDS_Study_i::StudyId(CORBA::Short id)
-{
- SALOMEDS::Locker lock;
- _impl->StudyId(id);
-}
-
-void SALOMEDS_Study_i::UpdateIORLabelMap(const char* anIOR,const char* anEntry)
-{
- SALOMEDS::Locker lock;
- _impl->UpdateIORLabelMap(TCollection_AsciiString((char*)anIOR), TCollection_AsciiString((char*)anEntry));
-}
-
-SALOMEDS::Study_ptr SALOMEDS_Study_i::GetStudy(const TDF_Label theLabel, CORBA::ORB_ptr orb)
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_AttributeIOR) Att;
- if (theLabel.Root().FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),Att)){
- char* IOR = CORBA::string_dup(TCollection_AsciiString(Att->Value()).ToCString());
- CORBA::Object_var obj = orb->string_to_object(IOR);
- SALOMEDS::Study_ptr aStudy = SALOMEDS::Study::_narrow(obj) ;
- ASSERT(!CORBA::is_nil(aStudy));
- return SALOMEDS::Study::_duplicate(aStudy);
- } else {
- MESSAGE("GetStudy: Problem to get study");
- }
- return SALOMEDS::Study::_nil();
-}
-
-void SALOMEDS_Study_i::IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR) theAttribute)
-{
- SALOMEDS::Locker lock;
- SALOMEDSImpl_Study::IORUpdated(theAttribute);
-}
-
-SALOMEDS::Study::ListOfSObject* SALOMEDS_Study_i::FindDependances(SALOMEDS::SObject_ptr anObject)
-{
- SALOMEDS::Locker lock;
-
- SALOMEDS::GenericAttribute_ptr aTarget;
- if (anObject->FindAttribute(aTarget,"AttributeTarget")) {
- return SALOMEDS::AttributeTarget::_narrow(aTarget)->Get();
- }
- SALOMEDS::Study::ListOfSObject* aList = new SALOMEDS::Study::ListOfSObject;
- aList->length(0);
- return aList;
-}
-
-
-SALOMEDS::AttributeStudyProperties_ptr SALOMEDS_Study_i::GetProperties()
-{
- SALOMEDS::Locker lock;
-
- Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr = _impl->GetProperties();
- SALOMEDS_AttributeStudyProperties_i* SP = new SALOMEDS_AttributeStudyProperties_i(anAttr, _orb);
- return SP->AttributeStudyProperties::_this();
-}
-
-char* SALOMEDS_Study_i::GetLastModificationDate()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->GetLastModificationDate().ToCString());
-}
-
-SALOMEDS::ListOfDates* SALOMEDS_Study_i::GetModificationsDate()
-{
- SALOMEDS::Locker lock;
-
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetModificationsDate();
- int aLength = aSeq->Length();
- SALOMEDS::ListOfDates_var aDates = new SALOMEDS::ListOfDates;
- aDates->length(aLength);
-
- for(int anIndex = 1; anIndex <= aLength; anIndex++) {
- aDates[anIndex-1] = CORBA::string_dup(aSeq->Value(anIndex).ToCString());
- }
- return aDates._retn();
-}
-
-
-
-//============================================================================
-/*! Function : GetUseCaseBuilder
- * Purpose : Returns a UseCase builder
- */
-//============================================================================
-SALOMEDS::UseCaseBuilder_ptr SALOMEDS_Study_i::GetUseCaseBuilder()
-{
- SALOMEDS::Locker lock;
- SALOMEDS_UseCaseBuilder_i* UCBuilder = new SALOMEDS_UseCaseBuilder_i(_impl->GetUseCaseBuilder(), _orb);
- return UCBuilder->_this();
-}
-
-
-//============================================================================
-/*! Function : Close
- * Purpose :
- */
-//============================================================================
-void SALOMEDS_Study_i::Close()
-{
- SALOMEDS::Locker lock;
-
- RemovePostponed(-1);
-
- SALOMEDS::SComponentIterator_var itcomponent = NewComponentIterator();
-
- for (; itcomponent->More(); itcomponent->Next()) {
- SALOMEDS::SComponent_var sco = itcomponent->Value();
-
- MESSAGE ( "Look for an engine for data type :"<< sco->ComponentDataType());
- // if there is an associated Engine call its method for closing
- CORBA::String_var IOREngine;
- if (sco->ComponentIOR(IOREngine)) {
- // we have found the associated engine to write the data
- MESSAGE ( "We have found an engine for data type :"<< sco->ComponentDataType());
- CORBA::Object_var obj = _orb->string_to_object(IOREngine);
- if (!CORBA::is_nil(obj)) {
- SALOMEDS::Driver_var anEngine = SALOMEDS::Driver::_narrow(obj) ;
-
- if (!anEngine->_is_nil()) {
- SALOMEDS::unlock();
- anEngine->Close(sco);
- SALOMEDS::lock();
- }
- }
- }
- }
- _impl->Close();
-}
-
-//============================================================================
-/*! Function : AddPostponed
- * Purpose :
- */
- //============================================================================
-void SALOMEDS_Study_i::AddPostponed(const char* theIOR)
-{
- SALOMEDS::Locker lock;
-
- CORBA::Object_var obj = _orb->string_to_object(theIOR);
- if (!CORBA::is_nil(obj)) {
- SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
- if (!CORBA::is_nil(aGeneric)) _impl->AddPostponed((char*)theIOR);
- }
-}
-
-void SALOMEDS_Study_i::AddCreatedPostponed(const char* theIOR)
-{
- SALOMEDS::Locker lock;
-
- CORBA::Object_var obj = _orb->string_to_object(theIOR);
- if (!CORBA::is_nil(obj)) {
- SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
- if (!CORBA::is_nil(aGeneric)) _impl->AddCreatedPostponed((char*)theIOR);
- }
-}
-
-//============================================================================
-/*! Function : RemovePostponed
- * Purpose :
- */
-//============================================================================
-#ifndef WNT
-void SALOMEDS_Study_i::RemovePostponed(const CORBA::Long theUndoLimit)
-#else
-void SALOMEDS_Study_i::RemovePostponed(CORBA::Long theUndoLimit)
-#endif
-{
- SALOMEDS::Locker lock;
-
- Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->RemovePostponed(theUndoLimit);
- int aLegth = aSeq->Length();
- for(int i = 1; i <= aLegth; i++) {
- TCollection_AsciiString anIOR = aSeq->Value(i);
- //mkr : fix for bug IPAL9408 : check the length of anIOR
- // before take value from it
- if ( !anIOR.IsEmpty() && anIOR.Value(1) == 'c') {
- CORBA::Object_var obj = _orb->string_to_object(anIOR.Split(1).ToCString());
- SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
- if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
- }
- else if ( !anIOR.IsEmpty() && anIOR.Value(1) == 'd') {
- CORBA::Object_var obj = _orb->string_to_object(anIOR.Split(1).ToCString());
- SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
- if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
- }
- else {
- try {
- CORBA::Object_var obj = _orb->string_to_object(anIOR.ToCString());
- SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
- if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
- } catch (...) {}
- }
- }
-}
-
-//============================================================================
-/*! Function : UndoPostponed
- * Purpose :
- */
-//============================================================================
-#ifndef WNT
-void SALOMEDS_Study_i::UndoPostponed(const CORBA::Long theWay)
-#else
-void SALOMEDS_Study_i::UndoPostponed(CORBA::Long theWay)
-#endif
-{
- SALOMEDS::Locker lock;
-
- _impl->UndoPostponed(theWay);
-}
-
-
-//============================================================================
-/*! Function : DumpStudy
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_Study_i::DumpStudy(const char* thePath, const char* theBaseName, CORBA::Boolean isPublished)
-{
- SALOMEDS::Locker lock;
-
- TCollection_AsciiString aPath((char*)thePath), aBaseName((char*)theBaseName);
- SALOMEDS_DriverFactory_i* factory = new SALOMEDS_DriverFactory_i(_orb);
- CORBA::Boolean ret = _impl->DumpStudy(aPath, aBaseName, isPublished, factory);
- delete factory;
- return ret;
-}
-
-//===========================================================================
-// PRIVATE FUNCTIONS
-//===========================================================================
-long SALOMEDS_Study_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
-{
-#ifdef WIN32
- long pid = (long)_getpid();
-#else
- long pid = (long)getpid();
-#endif
- isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
- SALOMEDSImpl_Study* local_impl = _impl.operator->();
- return ((long)local_impl);
-}
+++ /dev/null
-// File : SALOMEDS_Study_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_STUDY_I_H__
-#define __SALOMEDS_STUDY_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_GenericObj)
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-#include <stdio.h>
-
-//SALOMEDS headers
-#include "SALOMEDS_SComponentIterator_i.hxx"
-#include "SALOMEDS_StudyBuilder_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS_UseCaseBuilder_i.hxx"
-
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-
-class Standard_EXPORT SALOMEDS_Study_i: public POA_SALOMEDS::Study,
- public PortableServer::RefCountServantBase
-{
-private:
- CORBA::ORB_ptr _orb;
- Handle(SALOMEDSImpl_Study) _impl;
- SALOMEDS_StudyBuilder_i* _builder;
-
-public:
-
- //! standard constructor
- SALOMEDS_Study_i(const Handle(SALOMEDSImpl_Study), CORBA::ORB_ptr);
-
- //! standard destructor
- virtual ~SALOMEDS_Study_i();
-
- //! method to Get persistent reference of study (idem URL())
- /*!
- \sa URL()
- \return char* arguments, the persistent reference of the study
- */
- virtual char* GetPersistentReference();
-
-
- //! method to Get transient reference of study
- /*!
- \return char* arguments, the transient reference of the study
- */
- virtual char* GetTransientReference();
-
- //! method to detect if a study is empty
- /*!
- \return bool arguments, true if study is empty
- */
- virtual CORBA::Boolean IsEmpty();
-
- //! method to Find a Component with ComponentDataType = aComponentName
- /*!
- \param aComponentName char* arguments
- \return SComponent_ptr arguments, the component found
- */
- virtual SALOMEDS::SComponent_ptr FindComponent (const char* aComponentName);
-
- //! method to Find a Component Find a Component from it's ID
- /*!
- \param aComponentID char* arguments
- \return SComponent_ptr arguments, the component found
- */
- virtual SALOMEDS::SComponent_ptr FindComponentID(const char* aComponentID);
-
- //! method to Find an Object with SALOMEDS::Name = anObjectName
- /*!
- \param anObjectName char* arguments
- \return SObject_ptr arguments, the object found
- */
- virtual SALOMEDS::SObject_ptr FindObject(const char* anObjectName);
-
-
- //! method to Find Object(s) with SALOMEDS::Name = anObjectName in a component with ComponentDataType = aComponentName
- /*!
- \param anObjectName char* arguments
- \param aComponentName char* arguments
- \return ListOfSObject_ptr arguments, a list of objects found
- */
-
- virtual SALOMEDS::Study::ListOfSObject* FindObjectByName( const char* anObjectName, const char* aComponentName ) ;
-
- //! method to Find an Object with ID = anObjectID
- /*!
- \param anObjectID char* arguments
- \return SObject_ptr arguments, the object found
- */
- virtual SALOMEDS::SObject_ptr FindObjectID(const char* anObjectID);
-
- //! method to Create an Object with ID = anObjectID
- /*!
- \param anObjectID char* arguments
- \return SObject_ptr arguments, the object found
- */
- virtual SALOMEDS::SObject_ptr CreateObjectID(const char* anObjectID);
-
- //! method to Find an Object with ID = anObjectIOR
- /*!
- \param anObjectIOR char* arguments
- \return SObject_ptr arguments, the object found
- */
- virtual SALOMEDS::SObject_ptr FindObjectIOR(const char* anObjectIOR);
-
- //! method to Find an Object by its path
- /*!
- \param thePath char* arguments
- \return SObject_ptr arguments, the object found
- */
- virtual SALOMEDS::SObject_ptr FindObjectByPath(const char* thePath);
-
- //! method to get a path of SObject
- /*!
- \param aSO SObject_ptr arguments
- \return char* arguments, the path of the SObject
- */
- virtual char* GetObjectPath(CORBA::Object_ptr theObject);
-
- //! method to set a context: root ('/') is UserData component
- /*!
- */
- virtual void SetContext(const char* thePath);
-
- //! method to get a context
- /*!
- */
- virtual char* GetContext();
-
- //! method to get all object names in the given context (or in the current context, if 'theContext' is empty)
- /*!
- */
- virtual SALOMEDS::ListOfStrings* GetObjectNames(const char* theContext);
-
- //! method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
- /*!
- */
- virtual SALOMEDS::ListOfStrings* GetDirectoryNames(const char* theContext);
-
- //! method to get all file names in the given context (or in the current context, if 'theContext' is empty)
- /*!
- */
- virtual SALOMEDS::ListOfStrings* GetFileNames(const char* theContext);
-
- //! method to get all components names
- /*!
- */
- virtual SALOMEDS::ListOfStrings* GetComponentNames(const char* theContext);
-
- //! method to Create a ChildIterator from an SObject
- /*!
- \param aSO SObject_ptr arguments
- \return ChildIterator_ptr arguments, the created ChildIterator
- */
- virtual SALOMEDS::ChildIterator_ptr NewChildIterator(SALOMEDS::SObject_ptr aSO);
-
- //! method to Create a SComponentIterator
- /*!
- \return SComponentIterator_ptr arguments, the created SComponentIterator
- */
- virtual SALOMEDS::SComponentIterator_ptr NewComponentIterator();
-
- //! method to Create a StudyBuilder
- /*!
- \return StudyBuilder_ptr arguments, the created StudyBuilder
- */
- virtual SALOMEDS::StudyBuilder_ptr NewBuilder();
-
- //! method to get study name
- /*!
- \return char* arguments, the study name
- */
- virtual char* Name();
-
- //! method to set study name
- /*!
- \param name char* arguments, the study name
- */
- virtual void Name(const char* name);
-
- //! method to get if study has been saved
- /*!
- \return bool arguments
- */
- virtual CORBA::Boolean IsSaved();
-
- //! method to set if study has been saved
- /*!
- \param save bool arguments
- */
- virtual void IsSaved(CORBA::Boolean save);
-
- //! method to Detect if a Study has been modified since it has been saved
- /*!
- \return bool arguments
- */
- virtual CORBA::Boolean IsModified();
-
- //! method to get URL of the study (idem GetPersistentReference)
- /*!
- \return char* arguments, the study URL
- */
- virtual char* URL();
-
- //! method to set URL of the study
- /*!
- \param url char* arguments, the study URL
- */
- virtual void URL(const char* url);
-
- virtual CORBA::Short StudyId();
- virtual void StudyId(CORBA::Short id);
-
- static SALOMEDS::Study_ptr GetStudy(const TDF_Label theLabel, CORBA::ORB_ptr orb);
-
- static void IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR) theAttribute);
-
- virtual void UpdateIORLabelMap(const char* anIOR, const char* aLabel);
-
- virtual SALOMEDS::Study::ListOfSObject* FindDependances(SALOMEDS::SObject_ptr anObject);
-
- virtual SALOMEDS::AttributeStudyProperties_ptr SALOMEDS_Study_i::GetProperties();
-
- virtual char* GetLastModificationDate();
-
- virtual SALOMEDS::ListOfDates* GetModificationsDate();
-
- virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
- virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
-
- virtual SALOMEDS::UseCaseBuilder_ptr GetUseCaseBuilder();
-
- virtual void Close();
-
- void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled) { _impl->EnableUseCaseAutoFilling(isEnabled); }
-
- // postponed destroying of CORBA object functionality
- virtual void AddPostponed(const char* theIOR);
-
- virtual void AddCreatedPostponed(const char* theIOR);
-
-#ifndef WNT
- virtual void RemovePostponed(const CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
- // if theUndoLimit==0, removes all
- virtual void UndoPostponed(const CORBA::Long theWay); // theWay = 1: resurrect objects,
- // theWay = -1: get back to the list of postponed
-#else
- virtual void RemovePostponed(CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
- // if theUndoLimit==0, removes all
- virtual void UndoPostponed(CORBA::Long theWay); // theWay = 1: resurrect objects,
- // theWay = -1: get back to the list of postponed
-#endif
-
- virtual CORBA::Boolean DumpStudy(const char* thePath, const char* theBaseName, CORBA::Boolean isPublished);
-
- virtual Handle(SALOMEDSImpl_Study) GetImpl() { return _impl; }
-
- virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
-};
-#endif
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_TargetAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class TargetAttribute from SALOMEDS inherits Relation from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- RelocationTable from TDF,
- LabelList from TDF
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- Set (myclass; label : Label from TDF)
- returns TargetAttribute from SALOMEDS;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable TargetAttribute from SALOMEDS;
-
- Append(me: mutable; theReferencedObject : mutable Label form TDF);
- Get(me; theReferencedObjects : mutable : LabelList from TDF);
- Remove(me: mutable; theReferencedObject : mutable Label form TDF);
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end TargetAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_TextColorAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class TextColorAttribute from SALOMEDS inherits RealArray from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable TextColorAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end TextColorAttribute;
+++ /dev/null
--- SALOME SALOMEDS : data structure of SALOME and sources of Salome data 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
---
---
---
--- File : SALOMEDS_TextHighlightColorAttribute.cdl
--- Author : Yves FRICAUD
--- Module : SALOME
-
-class TextHighlightColorAttribute from SALOMEDS inherits RealArray from TDataStd
-
- ---Purpose:
-
-
-uses Attribute from TDF,
- Label from TDF,
- GUID from Standard,
- ExtendedString from TCollection,
- DataSet from TDF,
- RelocationTable from TDF,
- AttributeSequence from TDF,
- Data from TDF,
- Comment from TDataStd
-
-
-is
-
-
- ---Purpose: class methods
- -- =============
-
- GetID (myclass)
- ---C++: return const &
- returns GUID from Standard;
-
- ---Purpose: Comment methods
- -- ============
-
- Create
- returns mutable TextHighlightColorAttribute from SALOMEDS;
-
- ID (me)
- ---C++: return const &
- returns GUID from Standard;
-
- Restore (me: mutable; with : Attribute from TDF);
-
- NewEmpty (me)
- returns mutable Attribute from TDF;
-
- Paste (me; into : mutable Attribute from TDF;
- RT : mutable RelocationTable from TDF);
-
-end TextHighlightColorAttribute;
+++ /dev/null
-// File : SALOMEDS_UseCaseBuilder.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDS_UseCaseBuilder.hxx"
-
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDS_SObject.hxx"
-#include "SALOMEDSImpl_UseCaseIterator.hxx"
-#include "SALOMEDS_UseCaseIterator.hxx"
-#include <TCollection_AsciiString.hxx>
-#include <string>
-
-using namespace std;
-
-SALOMEDS_UseCaseBuilder::SALOMEDS_UseCaseBuilder(const Handle(SALOMEDSImpl_UseCaseBuilder)& theBuilder)
-{
- _isLocal = true;
- _local_impl = theBuilder;
- _corba_impl = SALOMEDS::UseCaseBuilder::_nil();
-}
-
-SALOMEDS_UseCaseBuilder::SALOMEDS_UseCaseBuilder(SALOMEDS::UseCaseBuilder_ptr theBuilder)
-{
- _isLocal = false;
- _local_impl = NULL;
- _corba_impl = SALOMEDS::UseCaseBuilder::_duplicate(theBuilder);
-}
-
-SALOMEDS_UseCaseBuilder::~SALOMEDS_UseCaseBuilder()
-{
- if(!_isLocal) _corba_impl->Destroy();
-}
-
-bool SALOMEDS_UseCaseBuilder::Append(const _PTR(SObject)& theObject)
-{
- bool ret;
- SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
- if(_isLocal) ret = _local_impl->Append(obj->GetLocalImpl());
- else ret = _corba_impl->Append(obj->GetCORBAImpl());
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::Remove(const _PTR(SObject)& theObject)
-{
- bool ret;
- SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
- if(_isLocal) ret = _local_impl->Remove(obj->GetLocalImpl());
- else ret = _corba_impl->Remove(obj->GetCORBAImpl());
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::AppendTo(const _PTR(SObject)& theFather, _PTR(SObject) theObject)
-{
- bool ret;
- SALOMEDS_SObject* father = dynamic_cast<SALOMEDS_SObject*>(theFather.get());
- SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
- if(_isLocal) ret = _local_impl->AppendTo(father->GetLocalImpl(), obj->GetLocalImpl());
- else ret = _corba_impl->AppendTo(father->GetCORBAImpl(), obj->GetCORBAImpl());
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::InsertBefore(const _PTR(SObject)& theFirst, _PTR(SObject) theNext)
-{
- bool ret;
- SALOMEDS_SObject* first = dynamic_cast<SALOMEDS_SObject*>(theFirst.get());
- SALOMEDS_SObject* next = dynamic_cast<SALOMEDS_SObject*>(theNext.get());
- if(_isLocal) ret = _local_impl->InsertBefore(first->GetLocalImpl(), next->GetLocalImpl());
- else ret = _corba_impl->InsertBefore(first->GetCORBAImpl(), next->GetCORBAImpl());
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::SetCurrentObject(const _PTR(SObject)& theObject)
-{
- bool ret;
- SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
- if(_isLocal) ret = _local_impl->SetCurrentObject(obj->GetLocalImpl());
- else ret = _corba_impl->SetCurrentObject(obj->GetCORBAImpl());
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::SetRootCurrent()
-{
- bool ret;
- if(_isLocal) ret = _local_impl->SetRootCurrent();
- else ret = _corba_impl->SetRootCurrent();
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::HasChildren(const _PTR(SObject)& theObject)
-{
- bool ret;
- SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
- if(_isLocal) ret = _local_impl->HasChildren(obj->GetLocalImpl());
- else ret = _corba_impl->HasChildren(obj->GetCORBAImpl());
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::IsUseCase(const _PTR(SObject)& theObject)
-{
- bool ret;
- SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
- if(_isLocal) ret = _local_impl->IsUseCase(obj->GetLocalImpl());
- else ret = _corba_impl->IsUseCase(obj->GetCORBAImpl());
- return ret;
-}
-
-bool SALOMEDS_UseCaseBuilder::SetName(const std::string& theName)
-{
- bool ret;
- if(_isLocal) ret = _local_impl->SetName((char*)theName.c_str());
- else ret = _corba_impl->SetName((char*)theName.c_str());
- return ret;
-}
-
-_PTR(SObject) SALOMEDS_UseCaseBuilder::GetCurrentObject()
-{
- SALOMEDS_SObject* obj = NULL;
- if(_isLocal) obj = new SALOMEDS_SObject(_local_impl->GetCurrentObject());
- else obj = new SALOMEDS_SObject(_corba_impl->GetCurrentObject());
- return _PTR(SObject)(obj);
-}
-
-std::string SALOMEDS_UseCaseBuilder::GetName()
-{
- std::string aName;
- if(_isLocal) aName = _local_impl->GetName().ToCString();
- else aName = _corba_impl->GetName();
- return aName;
-}
-
-_PTR(SObject) SALOMEDS_UseCaseBuilder::AddUseCase(const std::string& theName)
-{
- SALOMEDS_SObject* obj = NULL;
- if(_isLocal) obj = new SALOMEDS_SObject(_local_impl->AddUseCase((char*)theName.c_str()));
- else obj = new SALOMEDS_SObject(_corba_impl->AddUseCase((char*)theName.c_str()));
- return _PTR(SObject)(obj);
-}
-
-_PTR(UseCaseIterator) SALOMEDS_UseCaseBuilder::GetUseCaseIterator(const _PTR(SObject)& theObject)
-{
- SALOMEDS_UseCaseIterator* it = NULL;
- SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
- if(_isLocal) it = new SALOMEDS_UseCaseIterator(_local_impl->GetUseCaseIterator(obj->GetLocalImpl()));
- else it = new SALOMEDS_UseCaseIterator(_corba_impl->GetUseCaseIterator(obj->GetCORBAImpl()));
- return _PTR(UseCaseIterator)(it);
-}
+++ /dev/null
-// File : SALOMEDS_UseCaseBuilder.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_USECaseBuilder_H__
-#define __SALOMEDS_USECaseBuilder_H__
-
-#include "SALOMEDSClient.hxx"
-#include "SALOMEDSImpl_UseCaseBuilder.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class SALOMEDS_UseCaseBuilder: public SALOMEDSClient_UseCaseBuilder
-{
-
-private:
- bool _isLocal;
- Handle(SALOMEDSImpl_UseCaseBuilder) _local_impl;
- SALOMEDS::UseCaseBuilder_var _corba_impl;
-
-public:
-
- SALOMEDS_UseCaseBuilder(const Handle(SALOMEDSImpl_UseCaseBuilder)& theBuilder);
- SALOMEDS_UseCaseBuilder(SALOMEDS::UseCaseBuilder_ptr theBuilder);
- ~SALOMEDS_UseCaseBuilder();
-
- virtual bool Append(const _PTR(SObject)& theObject);
- virtual bool Remove(const _PTR(SObject)& theObject);
- virtual bool AppendTo(const _PTR(SObject)& theFather, _PTR(SObject) theObject);
- virtual bool InsertBefore(const _PTR(SObject)& theFirst, _PTR(SObject) theNext);
- virtual bool SetCurrentObject(const _PTR(SObject)& theObject);
- virtual bool SetRootCurrent();
- virtual bool HasChildren(const _PTR(SObject)& theObject);
- virtual bool IsUseCase(const _PTR(SObject)& theObject);
- virtual bool SetName(const std::string& theName);
- virtual _PTR(SObject) GetCurrentObject();
- virtual std::string GetName();
- virtual _PTR(SObject) AddUseCase(const std::string& theName);
- virtual _PTR(UseCaseIterator) GetUseCaseIterator(const _PTR(SObject)& anObject);
-
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_UseCaseBuilder_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_UseCaseBuilder_i.hxx"
-#include "SALOMEDS_UseCaseIterator_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_UseCaseBuilder_i::SALOMEDS_UseCaseBuilder_i(const Handle(SALOMEDSImpl_UseCaseBuilder)& theImpl,
- CORBA::ORB_ptr orb)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- _impl = theImpl;
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_UseCaseBuilder_i::~SALOMEDS_UseCaseBuilder_i()
-{
-}
-
-
-//============================================================================
-/*! Function : Append
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Append(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull() || theObject->_is_nil()) return 0;
- return _impl->Append(_impl->GetSObject(theObject->GetID()));
-}
-
- //============================================================================
-/*! Function : Remove
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Remove(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull() || theObject->_is_nil()) return 0;
- return _impl->Remove(_impl->GetSObject(theObject->GetID()));
-}
-
-
-//============================================================================
-/*! Function : AppendTo
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::AppendTo(SALOMEDS::SObject_ptr theFather,
- SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull() || theFather->_is_nil() || theObject->_is_nil()) return 0;
- return _impl->AppendTo(_impl->GetSObject(theFather->GetID()), _impl->GetSObject(theObject->GetID()));
-}
-
-//============================================================================
-/*! Function : InsertBefore
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::InsertBefore(SALOMEDS::SObject_ptr theFirst,
- SALOMEDS::SObject_ptr theNext)
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull() || theFirst->_is_nil() || theNext->_is_nil()) return 0;
- return _impl->AppendTo(_impl->GetSObject(theFirst->GetID()), _impl->GetSObject(theNext->GetID()));
-}
-
-
-//============================================================================
-/*! Function : SetCurrentObject
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetCurrentObject(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull() || theObject->_is_nil()) return 0;
- return _impl->SetCurrentObject(_impl->GetSObject(theObject->GetID()));
-}
-
-//============================================================================
-/*! Function : SetRootCurrent
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetRootCurrent()
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull()) return 0;
- return _impl->SetRootCurrent();
-}
-
-//============================================================================
-/*! Function : HasChildren
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::HasChildren(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull()) return 0;
- return _impl->HasChildren(_impl->GetSObject(theObject->GetID()));
-}
-
-//============================================================================
-/*! Function : SetName
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName)
-{
- SALOMEDS::Locker lock;
- if(_impl.IsNull()) return 0;
- return _impl->SetName((char*)theName);
-}
-
-
-//============================================================================
-/*! Function : GetCurrentObject
- * Purpose :
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetCurrentObject()
-{
- SALOMEDS::Locker lock;
-
- if(_impl.IsNull()) return NULL;
- Handle(SALOMEDSImpl_SObject) aSO = _impl->GetCurrentObject();
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function : GetName
- * Purpose :
- */
-//============================================================================
-char* SALOMEDS_UseCaseBuilder_i::GetName()
-{
- SALOMEDS::Locker lock;
- return CORBA::string_dup(_impl->GetName().ToCString());
-}
-
-//============================================================================
-/*! Function : IsUseCase
- * Purpose :
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCase(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
-
- if(_impl.IsNull() || theObject->_is_nil()) return false;
- return _impl->IsUseCase(_impl->GetSObject(theObject->GetID()));
-}
-
-//============================================================================
-/*! Function : NewUseCase
- * Purpose :
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::AddUseCase(const char* theName)
-{
- SALOMEDS::Locker lock;
-
- if(_impl.IsNull()) return SALOMEDS::SObject::_nil();
- Handle(SALOMEDSImpl_SObject) aSO = _impl->AddUseCase((char*)theName);
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
-//============================================================================
-/*! Function : GetUseCaseIterator
- * Purpose : Creates a new UseCase iterator, if anObject is null all use cases are iterated
- */
-//============================================================================
-SALOMEDS::UseCaseIterator_ptr SALOMEDS_UseCaseBuilder_i::GetUseCaseIterator(SALOMEDS::SObject_ptr theObject)
-{
- SALOMEDS::Locker lock;
-
- if(_impl.IsNull()) return SALOMEDS::UseCaseIterator::_nil();
- Handle(SALOMEDSImpl_UseCaseIterator) anItr = _impl->GetUseCaseIterator(_impl->GetSObject(theObject->GetID()));
- SALOMEDS_UseCaseIterator_i* aServant = new SALOMEDS_UseCaseIterator_i(anItr, _orb);
- SALOMEDS::UseCaseIterator_var anIterator = SALOMEDS::UseCaseIterator::_narrow(aServant->_this());
- return anIterator._retn();
-}
+++ /dev/null
-// File : SALOMEDS_UseCaseBuilder_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_USECaseBuilder_I_H__
-#define __SALOMEDS_USECaseBuilder_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-#include <SALOME_GenericObj_i.hh>
-
-// Cascade headers
-#include <Standard_GUID.hxx>
-#include <stdio.h>
-
-#include "SALOMEDSImpl_UseCaseIterator.hxx"
-#include "SALOMEDSImpl_UseCaseBuilder.hxx"
-
-class SALOMEDS_UseCaseBuilder_i: public virtual POA_SALOMEDS::UseCaseBuilder,
- public virtual PortableServer::RefCountServantBase,
- public virtual SALOME::GenericObj_i
-{
-private:
-
- CORBA::ORB_ptr _orb;
- Handle(SALOMEDSImpl_UseCaseBuilder) _impl;
-
-public:
-
- //! standard constructor
- SALOMEDS_UseCaseBuilder_i(const Handle(SALOMEDSImpl_UseCaseBuilder)& theDocument,
- CORBA::ORB_ptr);
-
- //! standard destructor
- ~SALOMEDS_UseCaseBuilder_i();
-
- virtual CORBA::Boolean Append(SALOMEDS::SObject_ptr theObject);
-
- virtual CORBA::Boolean Remove(SALOMEDS::SObject_ptr theObject);
-
- virtual CORBA::Boolean AppendTo(SALOMEDS::SObject_ptr theFather, SALOMEDS::SObject_ptr theObject);
-
- virtual CORBA::Boolean InsertBefore(SALOMEDS::SObject_ptr theFirst, SALOMEDS::SObject_ptr theNext);
-
- virtual CORBA::Boolean SetCurrentObject(SALOMEDS::SObject_ptr theObject);
-
- virtual CORBA::Boolean SetRootCurrent();
-
- virtual CORBA::Boolean HasChildren(SALOMEDS::SObject_ptr theObject);
-
- virtual CORBA::Boolean IsUseCase(SALOMEDS::SObject_ptr theObject);
-
- virtual CORBA::Boolean SetName(const char* theName);
-
- virtual SALOMEDS::SObject_ptr GetCurrentObject();
-
- virtual char* GetName();
-
- virtual SALOMEDS::SObject_ptr AddUseCase(const char* theName);
-
- virtual SALOMEDS::UseCaseIterator_ptr GetUseCaseIterator(SALOMEDS::SObject_ptr anObject);
-
-};
-#endif
+++ /dev/null
-// File : SALOMEDS_UseCaseIterator.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDS_UseCaseIterator.hxx"
-#include "SALOMEDS_SObject.hxx"
-
-using namespace std;
-
-SALOMEDS_UseCaseIterator::SALOMEDS_UseCaseIterator(const Handle(SALOMEDSImpl_UseCaseIterator)& theIterator)
-{
- _isLocal = true;
- _local_impl = theIterator;
- _corba_impl = SALOMEDS::UseCaseIterator::_nil();
-}
-
-SALOMEDS_UseCaseIterator::SALOMEDS_UseCaseIterator(SALOMEDS::UseCaseIterator_ptr theIterator)
-{
- _isLocal = false;
- _local_impl = NULL;
- _corba_impl = SALOMEDS::UseCaseIterator::_duplicate(theIterator);
-}
-
-SALOMEDS_UseCaseIterator::~SALOMEDS_UseCaseIterator()
-{
- if(!_isLocal) _corba_impl->Destroy();
-}
-
-void SALOMEDS_UseCaseIterator::Init(bool theAllLevels)
-{
- if(_isLocal) _local_impl->Init(theAllLevels);
- else _corba_impl->Init(theAllLevels);
-}
-
-bool SALOMEDS_UseCaseIterator::More()
-{
- bool ret;
- if(_isLocal) ret = _local_impl->More();
- else ret = _corba_impl->More();
- return ret;
-}
-
-void SALOMEDS_UseCaseIterator::Next()
-{
- if(_isLocal) _local_impl->Next();
- else _corba_impl->Next();
-}
-
-_PTR(SObject) SALOMEDS_UseCaseIterator::Value()
-{
- SALOMEDS_SObject* aSO;
- if(_isLocal) aSO = new SALOMEDS_SObject(_local_impl->Value());
- else aSO = new SALOMEDS_SObject(_corba_impl->Value());
- return _PTR(SObject)(aSO);
-}
+++ /dev/null
-// File : SALOMEDS_UseCaseIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_USECASEITERATOR_H__
-#define __SALOMEDS_USECASEITERATOR_H__
-
-#include "SALOMEDSClient_UseCaseIterator.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-#include "SALOMEDSImpl_UseCaseIterator.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-class SALOMEDS_UseCaseIterator: public SALOMEDSClient_UseCaseIterator
-{
-private:
- bool _isLocal;
- Handle(SALOMEDSImpl_UseCaseIterator) _local_impl;
- SALOMEDS::UseCaseIterator_var _corba_impl;
-
-public:
-
- SALOMEDS_UseCaseIterator(const Handle(SALOMEDSImpl_UseCaseIterator)& theIterator);
- SALOMEDS_UseCaseIterator(SALOMEDS::UseCaseIterator_ptr theIterator);
- ~SALOMEDS_UseCaseIterator();
-
- virtual void Init(bool theAllLevels);
- virtual bool More();
- virtual void Next();
- virtual _PTR(SObject) Value();
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDS_UseCaseIterator_i.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDS_UseCaseIterator_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS.hxx"
-
-#include "SALOMEDSImpl_SObject.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_UseCaseIterator_i::SALOMEDS_UseCaseIterator_i(const Handle(SALOMEDSImpl_UseCaseIterator)& theImpl,
- CORBA::ORB_ptr orb)
-{
- _orb = CORBA::ORB::_duplicate(orb);
- _impl = theImpl;
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDS_UseCaseIterator_i::~SALOMEDS_UseCaseIterator_i()
-{
-}
-
-//============================================================================
-/*! Function :Init
- *
- */
-//============================================================================
-void SALOMEDS_UseCaseIterator_i::Init(CORBA::Boolean allLevels)
-{
- SALOMEDS::Locker lock;
- _impl->Init(allLevels);
-}
-
-//============================================================================
-/*! Function : More
- *
- */
-//============================================================================
-CORBA::Boolean SALOMEDS_UseCaseIterator_i::More()
-{
- SALOMEDS::Locker lock;
- return _impl->More();
-}
-
-//============================================================================
-/*! Function : Next
- *
- */
-//============================================================================
-void SALOMEDS_UseCaseIterator_i::Next()
-{
- SALOMEDS::Locker lock;
- _impl->Next();
-}
-
-
-//============================================================================
-/*! Function :
- * Purpose :
- */
-//============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_UseCaseIterator_i::Value()
-{
- SALOMEDS::Locker lock;
- Handle(SALOMEDSImpl_SObject) aSO = _impl->Value();
- SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
- return so._retn();
-}
-
+++ /dev/null
-// File : SALOMEDS_UseCaseIterator_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDS_USECASEITERATOR_I_H__
-#define __SALOMEDS_USECASEITERATOR_I_H__
-
-// std C++ headers
-#include <iostream>
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include <SALOME_GenericObj_i.hh>
-
-#include "SALOMEDSImpl_UseCaseIterator.hxx"
-
-class SALOMEDS_UseCaseIterator_i: public virtual POA_SALOMEDS::UseCaseIterator,
- public virtual PortableServer::RefCountServantBase,
- public virtual SALOME::GenericObj_i
-{
-private:
- CORBA::ORB_ptr _orb;
- Handle(SALOMEDSImpl_UseCaseIterator) _impl;
-
-public:
-
- //! standard constructor
- SALOMEDS_UseCaseIterator_i(const Handle(SALOMEDSImpl_UseCaseIterator)& theImpl,
- CORBA::ORB_ptr);
-
- //! standard destructor
- ~SALOMEDS_UseCaseIterator_i();
-
- virtual void Init(CORBA::Boolean);
- virtual CORBA::Boolean More();
- virtual void Next();
- virtual SALOMEDS::SObject_ptr Value();
-};
-#endif
+++ /dev/null
-import SALOMEDS__POA
-
-class SALOME_DriverPy_i(SALOMEDS__POA.Driver):
- """
- """
- _ComponentDataType = None
-
- def __init__ (self, componentDataType):
- print "SALOME_DriverPy.__init__: ",componentDataType
- _ComponentDataType = componentDataType
-
- def IORToLocalPersistentID(self, theSObject, IORString, isMultiFile, isASCII):
- return theSObject.GetID()
-
- def LocalPersistentIDToIOR(self, theSObject, PersistentID, isMultiFile, isASCII):
- return ""
-
- def ComponentDataType(self):
- return _ComponentDataType
-
- def Save(self, theComponent, theURL, isMultiFile):
- return NULL
-
- def SaveASCII(self, theComponent, theURL, isMultiFile):
- return self.Save(theComponent, theURL, isMultiFile)
-
- def Load(self, theComponent, theStream, theURL, isMultiFile):
- return 1
-
- def LoadASCII(self, theComponent, theStream, theURL, isMultiFile):
- return self.Load(theComponent, theStream, theURL, isMultiFile)
-
- def Close(self, theComponent):
- pass
-
- def CanPublishInStudy(self, theIOR):
- return 1
-
- def PublishInStudy(self, theStudy, theSObject, theObject, theName):
- return NULL
-
- def CanCopy(self, theObject):
- return 0
-
+++ /dev/null
-#ifndef SALOMEDSCLIENT_HXX
-#define SALOMEDSCLIENT_HXX
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_AttributeComment.hxx"
-#include "SALOMEDSClient_AttributeDrawable.hxx"
-#include "SALOMEDSClient_AttributeExpandable.hxx"
-#include "SALOMEDSClient_AttributeExternalFileDef.hxx"
-#include "SALOMEDSClient_AttributeFileType.hxx"
-#include "SALOMEDSClient_AttributeFlags.hxx"
-#include "SALOMEDSClient_AttributeGraphic.hxx"
-#include "SALOMEDSClient_AttributeIOR.hxx"
-#include "SALOMEDSClient_AttributeInteger.hxx"
-#include "SALOMEDSClient_AttributeLocalID.hxx"
-#include "SALOMEDSClient_AttributeName.hxx"
-#include "SALOMEDSClient_AttributeOpened.hxx"
-#include "SALOMEDSClient_AttributePersistentRef.hxx"
-#include "SALOMEDSClient_AttributePixMap.hxx"
-#include "SALOMEDSClient_AttributePythonObject.hxx"
-#include "SALOMEDSClient_AttributeReal.hxx"
-#include "SALOMEDSClient_AttributeSelectable.hxx"
-#include "SALOMEDSClient_AttributeSequenceOfInteger.hxx"
-#include "SALOMEDSClient_AttributeSequenceOfReal.hxx"
-#include "SALOMEDSClient_AttributeStudyProperties.hxx"
-#include "SALOMEDSClient_AttributeTableOfInteger.hxx"
-#include "SALOMEDSClient_AttributeTableOfReal.hxx"
-#include "SALOMEDSClient_AttributeTableOfString.hxx"
-#include "SALOMEDSClient_AttributeTarget.hxx"
-#include "SALOMEDSClient_AttributeTextColor.hxx"
-#include "SALOMEDSClient_AttributeTextHighlightColor.hxx"
-#include "SALOMEDSClient_AttributeTreeNode.hxx"
-#include "SALOMEDSClient_AttributeUserID.hxx"
-#include "SALOMEDSClient_ChildIterator.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include "SALOMEDSClient_SComponent.hxx"
-#include "SALOMEDSClient_SComponentIterator.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-#include "SALOMEDSClient_Study.hxx"
-#include "SALOMEDSClient_StudyBuilder.hxx"
-#include "SALOMEDSClient_StudyManager.hxx"
-#include "SALOMEDSClient_UseCaseBuilder.hxx"
-#include "SALOMEDSClient_UseCaseIterator.hxx"
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeComment.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeComment_HeaderFile
-#define SALOMEDSClient_AttributeComment_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributeComment: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual std::string Value() = 0;
- virtual void SetValue(const std::string& value) = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeDrawable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeDrawable_HeaderFile
-#define SALOMEDSClient_AttributeDrawable_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeDrawable: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual bool IsDrawable() = 0;
- virtual void SetDrawable(bool value) = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeExpandable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDSClient_AttributeExpandable_HeaderFile
-#define SALOMEDSClient_AttributeExpandable_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeExpandable: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual bool IsExpandable() = 0;
- virtual void SetExpandable(bool value) = 0;
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeExternalFileDef.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeExternalFileDef_HeaderFile
-#define SALOMEDSClient_AttributeExternalFileDef_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributeExternalFileDef: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual std::string Value() = 0;
- virtual void SetValue(const std::string& value) = 0;
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeFileType.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeFileType_HeaderFile
-#define SALOMEDSClient_AttributeFileType_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributeFileType: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual std::string Value() = 0;
- virtual void SetValue(const std::string& value) = 0;
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeFlags.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDSClient_AttributeFlags_HeaderFile
-#define SALOMEDSClient_AttributeFlags_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeFlags: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual int GetFlags() = 0;
- virtual void SetFlags(int theFlags) = 0;
-
- virtual bool Get(int theFlag) = 0;
- virtual void Set(int theFlag, bool theValue) = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeFlags.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDSClient_AttributeGraphic_HeaderFile
-#define SALOMEDSClient_AttributeGraphic_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeGraphic: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual void SetVisibility(int theViewId, bool theValue) = 0;
- virtual bool GetVisibility(int theViewId) = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeIOR.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeIOR_HeaderFile
-#define SALOMEDSClient_AttributeIOR_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributeIOR: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual std::string Value() = 0;
- virtual void SetValue(const std::string& value) = 0;
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeInteger_HeaderFile
-#define SALOMEDSClient_AttributeInteger_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeInteger: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual int Value() = 0;
- virtual void SetValue(int value) = 0;
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeLocalID.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDSClient_AttributeLocalID_HeaderFile
-#define SALOMEDSClient_AttributeLocalID_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeLocalID: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual int Value() = 0;
- virtual void SetValue(int value) = 0;
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeName.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDSClient_AttributeName_HeaderFile
-#define SALOMEDSClient_AttributeName_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributeName: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual std::string Value() = 0;
- virtual void SetValue(const std::string& value) = 0;
-
-};
-
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeOpened.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-// $Header:
-
-#ifndef SALOMEDSClient_AttributeOpened_HeaderFile
-#define SALOMEDSClient_AttributeOpened_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeOpened: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual bool IsOpened() = 0;
- virtual void SetOpened(bool value) = 0;
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributePersistentRef.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributePersistentRef_HeaderFile
-#define SALOMEDSClient_AttributePersistentRef_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributePersistentRef: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual std::string Value() = 0;
- virtual void SetValue(const std::string& value) = 0;
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributePixMap.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributePixMap_HeaderFile
-#define SALOMEDSClient_AttributePixMap_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributePixMap: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual bool HasPixMap() = 0;
- virtual std::string GetPixMap() = 0;
- virtual void SetPixMap(const std::string& value) = 0;
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributePythonObject.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributePythonObject_HeaderFile
-#define SALOMEDSClient_AttributePythonObject_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributePythonObject: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual void SetObject(const std::string& theSequence, bool IsScript) = 0;
- virtual std::string GetObject() = 0;
- virtual bool IsScript() = 0;
-
-};
-
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeReal.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeReal_HeaderFile
-#define SALOMEDSClient_AttributeReal_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeReal: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual double Value() = 0;
- virtual void SetValue(double value) = 0;
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeSelectable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeSelectable_HeaderFile
-#define SALOMEDSClient_AttributeSelectable_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeSelectable: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual bool IsSelectable() = 0;
- virtual void SetSelectable(bool value) = 0;
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeSequenceOfInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeSequenceOfInteger_HeaderFile
-#define SALOMEDSClient_AttributeSequenceOfInteger_HeaderFile
-
-#include <vector>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeSequenceOfInteger: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual void Assign(const std::vector<int>& other) = 0;
- virtual std::vector<int> CorbaSequence() = 0;
- virtual void Add(int value) = 0;
- virtual void Remove(int index) = 0;
- virtual void ChangeValue(int index, int value) = 0;
- virtual int Value(int index) = 0;
- virtual int Length() = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeSequenceOfSequenceOfReal.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeSequenceOfSequenceOfReal_HeaderFile
-#define SALOMEDSClient_AttributeSequenceOfSequenceOfReal_HeaderFile
-
-#include <vector>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeSequenceOfReal: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual void Assign(const std::vector<double>& other) = 0;
- virtual std::vector<double> CorbaSequence() = 0;
- virtual void Add(double value) = 0;
- virtual void Remove(int index) = 0;
- virtual void ChangeValue(int index, double value) = 0;
- virtual double Value(int index) = 0;
- virtual int Length() = 0;
-
-};
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeStudyProperties.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeStudyProperties_HeaderFile
-#define SALOMEDSClient_AttributeStudyProperties_HeaderFile
-
-#include <vector>
-#include <string>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeStudyProperties: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual void SetUserName(const std::string& theName) = 0;
- virtual std::string GetUserName() = 0;
- virtual void SetCreationDate(int theMinute, int theHour, int theDay, int theMonth, int theYear) = 0;
- virtual bool GetCreationDate(int& theMinute, int& theHour, int& theDay, int& theMonth, int& theYear) = 0;
- virtual void SetCreationMode(const std::string& theMode) = 0;
- virtual std::string GetCreationMode() = 0;
- virtual void SetModified(int theModified) = 0;
- virtual bool IsModified() = 0;
- virtual int GetModified() = 0;
- virtual void SetLocked(bool theLocked) = 0;
- virtual bool IsLocked() = 0;
- virtual void SetModification(const std::string& theName,
- int theMinute,
- int theHour,
- int theDay,
- int theMonth,
- int theYear) = 0;
- virtual void GetModificationsList(std::vector<std::string>& theNames,
- std::vector<int>& theMinutes,
- std::vector<int>& theHours,
- std::vector<int>& theDays,
- std::vector<int>& theMonths,
- std::vector<int>& theYears,
- bool theWithCreator) = 0;
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeTableOfInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeTableOfInteger_HeaderFile
-#define SALOMEDSClient_AttributeTableOfInteger_HeaderFile
-
-#include <vector>
-#include <string>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeTableOfInteger: public virtual SALOMEDSClient_GenericAttribute
-{
-
-public:
-
- virtual void SetTitle(const std::string& theTitle) = 0;
- virtual std::string GetTitle() = 0;
- virtual void SetRowTitle(int theIndex, const std::string& theTitle) = 0;
- virtual void SetRowTitles(const std::vector<std::string>& theTitles) = 0;
- virtual std::vector<std::string> GetRowTitles() = 0;
- virtual void SetColumnTitle(int theIndex, const std::string& theTitle) = 0;
- virtual void SetColumnTitles(const std::vector<std::string>& theTitles) = 0;
- virtual std::vector<std::string> GetColumnTitles() = 0;
-
- virtual void SetRowUnit(int theIndex, const std::string& theUnit) = 0;
- virtual void SetRowUnits(const std::vector<std::string>& theUnits) = 0;
- virtual std::vector<std::string> GetRowUnits() = 0;
-
- virtual int GetNbRows() = 0;
- virtual int GetNbColumns() = 0;
- virtual void AddRow(const std::vector<int>& theData) = 0;
- virtual void SetRow(int theRow, const std::vector<int>& theData) = 0;
- virtual std::vector<int> GetRow(int theRow) = 0;
- virtual void AddColumn(const std::vector<int>& theData) = 0;
- virtual void SetColumn(int theColumn, const std::vector<int>& theData) = 0;
- virtual std::vector<int> GetColumn(int theColumn) = 0;
- virtual void PutValue(int theValue, int theRow, int theColumn) = 0;
- virtual bool HasValue(int theRow, int theColumn) = 0;
- virtual int GetValue(int theRow, int theColumn) = 0;
-
- virtual std::vector<int> GetRowSetIndices(int theRow) = 0;
- virtual void SetNbColumns(int theNbColumns) = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeTableOfReal.hxx
-// Author : Michael Ponikarov
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeTableOfReal_HeaderFile
-#define SALOMEDSClient_AttributeTableOfReal_HeaderFile
-
-#include <vector>
-#include <string>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeTableOfReal: public virtual SALOMEDSClient_GenericAttribute
-{
-
-public:
-
- virtual void SetTitle(const std::string& theTitle) = 0;
- virtual std::string GetTitle() = 0;
- virtual void SetRowTitle(int theIndex, const std::string& theTitle) = 0;
- virtual void SetRowTitles(const std::vector<std::string>& theTitles) = 0;
- virtual std::vector<std::string> GetRowTitles() = 0;
- virtual void SetColumnTitle(int theIndex, const std::string& theTitle) = 0;
- virtual void SetColumnTitles(const std::vector<std::string>& theTitles) = 0;
- virtual std::vector<std::string> GetColumnTitles() = 0;
- virtual void SetRowUnit(int theIndex, const std::string& theUnit) = 0;
- virtual void SetRowUnits(const std::vector<std::string>& theUnits) = 0;
- virtual std::vector<std::string> GetRowUnits() = 0;
-
- virtual int GetNbRows() = 0;
- virtual int GetNbColumns() = 0;
- virtual void AddRow(const std::vector<double>& theData) = 0;
- virtual void SetRow(int theRow, const std::vector<double>& theData) = 0;
- virtual std::vector<double> GetRow(int theRow) = 0;
- virtual void AddColumn(const std::vector<double>& theData) = 0;
- virtual void SetColumn(int theColumn, const std::vector<double>& theData) = 0;
- virtual std::vector<double> GetColumn(int theColumn) = 0;
- virtual void PutValue(double theValue, int theRow, int theColumn) = 0;
- virtual bool HasValue(int theRow, int theColumn) = 0;
- virtual double GetValue(int theRow, int theColumn) = 0;
-
- virtual std::vector<int> GetRowSetIndices(int theRow) = 0;
- virtual void SetNbColumns(int theNbColumns) = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeTableOfString.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeTableOfString_HeaderFile
-#define SALOMEDSClient_AttributeTableOfString_HeaderFile
-
-#include <vector>
-#include <string>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeTableOfString: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual void SetTitle(const std::string& theTitle) = 0;
- virtual std::string GetTitle() = 0;
- virtual void SetRowTitle(int theIndex, const std::string& theTitle) = 0;
- virtual void SetRowTitles(const std::vector<std::string>& theTitles) = 0;
- virtual std::vector<std::string> GetRowTitles() = 0;
- virtual void SetColumnTitle(int theIndex, const std::string& theTitle) = 0;
- virtual void SetColumnTitles(const std::vector<std::string>& theTitles) = 0;
- virtual std::vector<std::string> GetColumnTitles() = 0;
-
- virtual void SetRowUnit(int theIndex, const std::string& theUnit) = 0;
- virtual void SetRowUnits(const std::vector<std::string>& theUnits) = 0;
- virtual std::vector<std::string> GetRowUnits() = 0;
-
- virtual int GetNbRows() = 0;
- virtual int GetNbColumns() = 0;
- virtual void AddRow(const std::vector<std::string>& theData) = 0;
- virtual void SetRow(int theRow, const std::vector<std::string>& theData) = 0;
- virtual std::vector<std::string> GetRow(int theRow) = 0;
- virtual void AddColumn(const std::vector<std::string>& theData) = 0;
- virtual void SetColumn(int theColumn, const std::vector<std::string>& theData) = 0;
- virtual std::vector<std::string> GetColumn(int theColumn) = 0;
- virtual void PutValue(const std::string& theValue, int theRow, int theColumn) = 0;
- virtual bool HasValue(int theRow, int theColumn) = 0;
- virtual std::string GetValue(int theRow, int theColumn) = 0;
-
- virtual std::vector<int> GetRowSetIndices(int theRow) = 0;
- virtual void SetNbColumns(int theNbColumns) = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeTarget.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeTarget_HeaderFile
-#define SALOMEDSClient_AttributeTarget_HeaderFile
-
-#include <vector>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeTarget: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual void Add(const _PTR(SObject)& theObject) = 0;
- virtual std::vector<_PTR(SObject)> Get() = 0;
- virtual void Remove(const _PTR(SObject)& theObject) = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeTextColor.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeTextColor_HeaderFile
-#define SALOMEDSClient_AttributeTextColor_HeaderFile
-
-#include <vector>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include "SALOMEDSClient_definitions.hxx"
-
-class SALOMEDSClient_AttributeTextColor: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual STextColor TextColor() = 0;
- virtual void SetTextColor(STextColor value) = 0;
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeTextHighlightColor.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeTextHighlightColor_HeaderFile
-#define SALOMEDSClient_AttributeTextHighlightColor_HeaderFile
-
-#include <vector>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include "SALOMEDSClient_definitions.hxx"
-
-class SALOMEDSClient_AttributeTextHighlightColor: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
- virtual STextColor TextHighlightColor() = 0;
- virtual void SetTextHighlightColor(STextColor value) = 0;
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeTreeNode.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeTreeNode_HeaderFile
-#define SALOMEDSClient_AttributeTreeNode_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-
-class SALOMEDSClient_AttributeTreeNode
-{
-public:
-
- virtual void SetFather(const _PTR(AttributeTreeNode)& value) = 0;
- virtual bool HasFather() = 0;
- virtual _PTR(AttributeTreeNode) GetFather() = 0;
- virtual void SetPrevious(const _PTR(AttributeTreeNode)& value) = 0;
- virtual bool HasPrevious() = 0;
- virtual _PTR(AttributeTreeNode) GetPrevious() = 0;
- virtual void SetNext(const _PTR(AttributeTreeNode)& value) = 0;
- virtual bool HasNext() = 0;
- virtual _PTR(AttributeTreeNode) GetNext() = 0;
- virtual void SetFirst(const _PTR(AttributeTreeNode)& value) = 0;
- virtual bool HasFirst() = 0;
- virtual _PTR(AttributeTreeNode) GetFirst() = 0;
- virtual void SetTreeID(const std::string& value) = 0;
- virtual std::string GetTreeID() = 0;
- virtual void Append(const _PTR(AttributeTreeNode)& value) = 0;
- virtual void Prepend(const _PTR(AttributeTreeNode)& value) = 0;
- virtual void InsertBefore(const _PTR(AttributeTreeNode)& value) = 0;
- virtual void InsertAfter(const _PTR(AttributeTreeNode)& value) = 0;
- virtual void Remove() = 0;
- virtual int Depth() = 0;
- virtual bool IsRoot() = 0;
- virtual bool IsDescendant(const _PTR(AttributeTreeNode)& value) = 0;
- virtual bool IsFather(const _PTR(AttributeTreeNode)& value) = 0;
- virtual bool IsChild(const _PTR(AttributeTreeNode)& value) = 0;
- virtual std::string Label() = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_AttributeUserID.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSClient_AttributeUserID_HeaderFile
-#define SALOMEDSClient_AttributeUserID_HeaderFile
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_AttributeUserID: public virtual SALOMEDSClient_GenericAttribute
-{
-public:
-
- virtual std::string Value() = 0;
- virtual void SetValue(const std::string& value) = 0;
-
-};
-
-
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_ChildIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSClient_CHILDITERATOR_H__
-#define __SALOMEDSClient_CHILDITERATOR_H__
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-
-class SALOMEDSClient_ChildIterator
-{
-public:
- virtual ~SALOMEDSClient_ChildIterator() {}
-
- virtual void Init() = 0;
- virtual void InitEx(bool) = 0;
- virtual bool More() = 0;
- virtual void Next() = 0;
- virtual _PTR(SObject) Value() = 0;
-};
-#endif
+++ /dev/null
-// File : SALOMEDSClient__GenericAttribute.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _GENERICCLIENT_ATTRIBUTE_HXX_
-#define _GENERICCLIENT_ATTRIBUTE_HXX_
-
-#include <string>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-
-class SALOMEDSClient_GenericAttribute
-{
-public:
- virtual ~SALOMEDSClient_GenericAttribute() {}
-
- virtual void CheckLocked() = 0;
- virtual std::string Type() = 0;
- virtual std::string GetClassType() = 0;
- virtual _PTR(SObject) GetSObject() = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_SComponent.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSCLIENT_SCOMPONENT_H__
-#define __SALOMEDSCLIENT_SCOMPONENT_H__
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-#include <string>
-
-class SALOMEDSClient_SComponent: public virtual SALOMEDSClient_SObject
-{
-public:
- virtual ~SALOMEDSClient_SComponent() {}
-
- virtual std::string ComponentDataType() = 0;
- virtual bool ComponentIOR(std::string& theID) = 0;
-
-};
-#endif
+++ /dev/null
-// File : SALOMEDSClient_SComponentIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSClient_SCOMPONENTITERATOR_H__
-#define __SALOMEDSClient_SCOMPONENTITERATOR_H__
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SComponent.hxx"
-
-class SALOMEDSClient_SComponentIterator
-{
-public:
- virtual ~SALOMEDSClient_SComponentIterator() {}
-
- virtual void Init() = 0;
- virtual bool More() = 0;
- virtual void Next() = 0;
- virtual _PTR(SComponent) Value() = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_SObject.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSCLIENT_SOBJECT_H__
-#define __SALOMEDSCLIENT_SOBJECT_H__
-
-// std C++ headers
-#include <vector>
-#include <string>
-
-#include "SALOMEDSClient_definitions.hxx"
-
-class SALOMEDSClient_Study;
-class SALOMEDSClient_SComponent;
-class SALOMEDSClient_GenericAttribute;
-
-class SALOMEDSClient_SObject
-{
-public:
- virtual ~SALOMEDSClient_SObject() {}
-
- virtual std::string GetID() = 0;
- virtual _PTR(SComponent) GetFatherComponent() = 0;
- virtual _PTR(SObject) GetFather() = 0;
- virtual bool FindAttribute(_PTR(GenericAttribute)& anAttribute, const std::string& aTypeOfAttribute) = 0;
- virtual bool ReferencedObject(_PTR(SObject)& theObject) = 0;
- virtual bool FindSubObject(int theTag, _PTR(SObject)& theObject) = 0;
- virtual _PTR(Study) GetStudy() = 0;
- virtual std::string Name() = 0;
- virtual void Name(const std::string& theName) = 0;
- virtual std::vector<_PTR(GenericAttribute)> GetAllAttributes() = 0;
- virtual std::string GetName() = 0;
- virtual std::string GetComment() = 0;
- virtual std::string GetIOR() = 0;
- virtual int Tag() = 0;
- virtual int Depth() = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_Study.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSClient_STUDY_H__
-#define __SALOMEDSClient_STUDY_H__
-
-#include <vector>
-#include <string>
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SComponentIterator.hxx"
-#include "SALOMEDSClient_StudyBuilder.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-#include "SALOMEDSClient_SComponent.hxx"
-#include "SALOMEDSClient_UseCaseBuilder.hxx"
-#include "SALOMEDSClient_AttributeStudyProperties.hxx"
-#include "SALOMEDSClient_ChildIterator.hxx"
-
-class SALOMEDSClient_Study
-{
-
-public:
- virtual ~SALOMEDSClient_Study() {}
-
- virtual std::string GetPersistentReference() = 0;
- virtual std::string GetTransientReference() = 0;
- virtual bool IsEmpty() = 0;
- virtual _PTR(SComponent) FindComponent (const std::string& aComponentName) = 0;
- virtual _PTR(SComponent) FindComponentID(const std::string& aComponentID) = 0;
- virtual _PTR(SObject) FindObject(const std::string& anObjectName) = 0;
- virtual std::vector<_PTR(SObject)> FindObjectByName( const std::string& anObjectName, const std::string& aComponentName ) = 0;
- virtual _PTR(SObject) FindObjectID(const std::string& anObjectID) = 0;
- virtual _PTR(SObject) CreateObjectID(const std::string& anObjectID) = 0;
- virtual _PTR(SObject) FindObjectIOR(const std::string& anObjectIOR) = 0;
- virtual _PTR(SObject) FindObjectByPath(const std::string& thePath) = 0;
- virtual std::string GetObjectPath(const _PTR(SObject)& theSO) = 0;
- virtual void SetContext(const std::string& thePath) = 0;
- virtual std::string GetContext() = 0;
- virtual std::vector<std::string> GetObjectNames(const std::string& theContext) = 0;
- virtual std::vector<std::string> GetDirectoryNames(const std::string& theContext) = 0;
- virtual std::vector<std::string> GetFileNames(const std::string& theContext) = 0;
- virtual std::vector<std::string> GetComponentNames(const std::string& theContext) = 0;
- virtual _PTR(ChildIterator) NewChildIterator(const _PTR(SObject)& theSO) = 0;
- virtual _PTR(SComponentIterator) NewComponentIterator() = 0;
- virtual _PTR(StudyBuilder) NewBuilder() = 0;
- virtual std::string Name() = 0;
- virtual void Name(const std::string& name) = 0;
- virtual bool IsSaved() = 0;
- virtual void IsSaved(bool save) = 0;
- virtual bool IsModified() = 0;
- virtual std::string URL() = 0;
- virtual void URL(const std::string& url) = 0;
- virtual int StudyId() = 0;
- virtual void StudyId(int id) = 0;
- virtual std::vector<_PTR(SObject)> FindDependances(const _PTR(SObject)& theSO) = 0;
- virtual _PTR(AttributeStudyProperties) GetProperties() = 0;
- virtual std::string GetLastModificationDate() = 0;
- virtual std::vector<std::string> GetModificationsDate() = 0;
- virtual _PTR(UseCaseBuilder) GetUseCaseBuilder() = 0;
- virtual void Close() = 0;
- virtual void EnableUseCaseAutoFilling(bool isEnabled) = 0;
- virtual bool DumpStudy(const std::string& thePath, const std::string& theBaseName, bool isPublished) = 0;
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_StudyBuilder.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSClient_STUDYBUILDER_H__
-#define __SALOMEDSClient_STUDYBUILDER_H__
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-#include "SALOMEDSClient_SComponent.hxx"
-#include "SALOMEDSClient_GenericAttribute.hxx"
-#include <string>
-
-class SALOMEDSClient_StudyBuilder
-{
-public:
- virtual ~SALOMEDSClient_StudyBuilder() {}
-
- virtual _PTR(SComponent) NewComponent(const std::string& ComponentDataType) = 0;
- virtual void DefineComponentInstance (const _PTR(SComponent)&, const std::string& ComponentIOR) = 0;
- virtual void RemoveComponent(const _PTR(SComponent)& theSCO) = 0;
- virtual _PTR(SObject) NewObject(const _PTR(SObject)& theFatherObject) = 0;
- virtual _PTR(SObject) NewObjectToTag(const _PTR(SObject)& theFatherObject, int theTag) = 0;
- virtual void AddDirectory(const std::string& thePath) = 0;
- virtual void LoadWith(const _PTR(SComponent)& theSCO, const std::string& theIOR) = 0;
- virtual void Load(const _PTR(SObject)& theSCO) = 0;
- virtual void RemoveObject(const _PTR(SObject)& theSO) = 0;
- virtual void RemoveObjectWithChildren(const _PTR(SObject)& theSO) = 0;
- virtual _PTR(GenericAttribute) FindOrCreateAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute) = 0;
- virtual bool FindAttribute(const _PTR(SObject)& theSO,
- _PTR(GenericAttribute)& theAttribute,
- const std::string& aTypeOfAttribute) = 0;
- virtual void RemoveAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute) = 0;
- virtual void Addreference(const _PTR(SObject)& me, const _PTR(SObject)& thereferencedObject) = 0;
- virtual void RemoveReference(const _PTR(SObject)& me) = 0;
- virtual void SetGUID(const _PTR(SObject)& theSO, const std::string& theGUID) = 0;
- virtual bool IsGUID(const _PTR(SObject)& theSO, const std::string& theGUID) = 0;
- virtual void NewCommand() = 0;
- virtual void CommitCommand()= 0;
- virtual bool HasOpenCommand() = 0;
- virtual void AbortCommand() = 0;
- virtual void Undo() = 0;
- virtual void Redo() = 0;
- virtual bool GetAvailableUndos() = 0;
- virtual bool GetAvailableRedos() = 0;
- virtual int UndoLimit() = 0;
- virtual void UndoLimit(int theLimit) = 0;
- virtual void SetName(const _PTR(SObject)& theSO, const std::string& theValue) = 0;
- virtual void SetComment(const _PTR(SObject)& theSO, const std::string& theValue) = 0;
- virtual void SetIOR(const _PTR(SObject)& theSO, const std::string& theValue) = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_StudyManager.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSClient_STUDYMANAGER_H__
-#define __SALOMEDSClient_STUDYMANAGER_H__
-
-#include <vector>
-#include <string>
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_Study.hxx"
-
-class SALOMEDSClient_StudyManager
-{
-public:
- virtual ~SALOMEDSClient_StudyManager() {}
-
- virtual _PTR(Study) NewStudy(const std::string& study_name) = 0;
- virtual _PTR(Study) Open(const std::string& theStudyUrl) = 0;
- virtual void Close(const _PTR(Study)& theStudy) = 0;
- virtual void Save(const _PTR(Study)& theStudy, bool theMultiFile) = 0;
- virtual void SaveASCII(const _PTR(Study)& theStudy, bool theMultiFile) = 0;
- virtual void SaveAs(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile) = 0;
- virtual void SaveAsASCII(const std::string& theUrl, const _PTR(Study)& theStudy, bool theMultiFile) = 0;
- virtual std::vector<std::string> GetOpenStudies() = 0;
- virtual _PTR(Study) GetStudyByName(const std::string& theStudyName) = 0;
- virtual _PTR(Study) GetStudyByID(int theStudyID) = 0;
- virtual bool CanCopy(const _PTR(SObject)& theSO) = 0;
- virtual bool Copy(const _PTR(SObject)& theSO) = 0;
- virtual bool CanPaste(const _PTR(SObject)& theSO) = 0;
- virtual _PTR(SObject) Paste(const _PTR(SObject)& theSO) = 0;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_UseCaseBuilder.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSClient_USECaseBuilder_H__
-#define __SALOMEDSClient_USECaseBuilder_H__
-
-#include <string>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_UseCaseIterator.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-
-class SALOMEDSClient_UseCaseBuilder
-{
-public:
- virtual ~SALOMEDSClient_UseCaseBuilder() {}
-
- virtual bool Append(const _PTR(SObject)& theObject) = 0;
- virtual bool Remove(const _PTR(SObject)& theObject) = 0;
- virtual bool AppendTo(const _PTR(SObject)& theFather, _PTR(SObject) theObject) = 0;
- virtual bool InsertBefore(const _PTR(SObject)& theFirst, _PTR(SObject) theNext) = 0;
- virtual bool SetCurrentObject(const _PTR(SObject)& theObject) = 0;
- virtual bool SetRootCurrent() = 0;
- virtual bool HasChildren(const _PTR(SObject)& theObject) = 0;
- virtual bool IsUseCase(const _PTR(SObject)& theObject) = 0;
- virtual bool SetName(const std::string& theName) = 0;
- virtual _PTR(SObject) GetCurrentObject() = 0;
- virtual std::string GetName() = 0;
- virtual _PTR(SObject) AddUseCase(const std::string& theName) = 0;
- virtual _PTR(UseCaseIterator) GetUseCaseIterator(const _PTR(SObject)& anObject) = 0;
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSClient_UseCaseIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSClient_USECASEITERATOR_H__
-#define __SALOMEDSClient_USECASEITERATOR_H__
-
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOMEDSClient_SObject.hxx"
-
-class SALOMEDSClient_UseCaseIterator
-{
-
-public:
- virtual ~SALOMEDSClient_UseCaseIterator() {}
-
- virtual void Init(bool) = 0;
- virtual bool More() = 0;
- virtual void Next() = 0;
- virtual _PTR(SObject) Value() = 0;
-};
-
-#endif
+++ /dev/null
-#ifndef SALOMEDSCLIENT_DEF_HXX
-#define SALOMEDSCLIENT_DEF_HXX
-
-#include <boost/shared_ptr.hpp>
-
-template<class T> class clt_shared_ptr: public boost::shared_ptr<T>
-{
-public:
- clt_shared_ptr() {}
-
- template<class Y>
- explicit clt_shared_ptr(Y * p)
- {
- reset(p);
- }
-
- template<class Y>
- clt_shared_ptr(clt_shared_ptr<Y> const & r):
- boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
- {}
-
- template<class Y>
- clt_shared_ptr & operator=(clt_shared_ptr<Y> const & r)
- {
- clt_shared_ptr<T>(r).swap(*this);
- return *this;
- }
-
- template<class Y> clt_shared_ptr& operator()(Y * p) // Y must be complete
- {
- if(T* pt = dynamic_cast<T*>(p))
- boost::shared_ptr<T>::reset(pt);
- else
- boost::throw_exception(std::bad_cast());
- return *this;
- }
-
-};
-
-#define _PTR(Class) clt_shared_ptr<SALOMEDSClient_##Class>
-#define _CAST(Class, shared_ptr_Obj) dynamic_cast<SALOMEDS_##Class*>(shared_ptr_Obj.get())
-
-struct STextColor
-{
- double R;
- double G;
- double B;
-};
-
-#endif
+++ /dev/null
-# File : Makefile.in
-# Author : Sergey RUIN
-# Module : SALOME
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
-
-
-@COMMENCE@
-
-EXPORT_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_UseCaseBuilder.hxx \
- SALOMEDSImpl_UseCaseIterator.hxx \
- SALOMEDSImpl_SComponentIterator.hxx \
- SALOMEDSImpl_StudyBuilder.hxx \
- SALOMEDSImpl_Study.hxx \
- SALOMEDSImpl_StudyManager.hxx \
- SALOMEDSImpl_OCAFApplication.hxx \
- SALOMEDSImpl_ChildNodeIterator.hxx \
-
-LIB_CLIENT_IDL =
-LIB_SERVER_IDL =
-
-# Executables targets
-BIN = testDS
-BIN_SRC =
-BIN_CLIENT_IDL =
-BIN_SERVER_IDL =
-
-# Libraries targets
-
-LIB = libSalomeDSImpl.la
-LIB_SRC = 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_ChildNodeIterator.cxx \
- SALOMEDSImpl_UseCaseBuilder.cxx \
- SALOMEDSImpl_UseCaseIterator.cxx \
- SALOMEDSImpl_SComponentIterator.cxx \
- SALOMEDSImpl_StudyBuilder.cxx \
- SALOMEDSImpl_Study.cxx \
- SALOMEDSImpl_StudyManager.cxx
-
-
-
-CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
-CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+= $(HDF5_LIBS) -lSalomeHDFPersist $(CAS_LDPATH) -lTKCAF -lTKBO -lTKLCAF -lTKMath -lTKStdSchema -lTKernel
-
-# _CS_gbo_090604 Ajout Spécifique Calibre 3, pour l'utilisation de la version 5.12 de la bibliothèque OCC.
-# La bibliothèque OCC5.12 a été compilée sur Calibre 3 avec l'extention Xmu (impossible de compiler sans).
-# On est donc obligé ici, pour permettre l'édition de lien avec les bibliothèques OCC, de spécifier le
-# chemin d'accès aux bibliothèques Xmu
-#
-LDXMUFLAGS= -L/usr/X11R6/lib -lXmu
-LDFLAGS+=$(LDXMUFLAGS)
-LDFLAGSFORBIN=$(LDFLAGS) -lSalomeHDFPersist
-
-@CONCLUDE@
-
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeComment.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef WNT
-using namespace std;
-#endif
-#include "SALOMEDSImpl_AttributeComment.hxx"
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeComment, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeComment, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeComment::GetID ()
-{
- static Standard_GUID CommentID ("7AF2F7CC-1CA2-4476-BE95-8ACC996BC7B9");
- return CommentID;
-}
-
-Handle(SALOMEDSImpl_AttributeComment) SALOMEDSImpl_AttributeComment::Set (const TDF_Label& L,
- const TCollection_ExtendedString& Val)
-{
- Handle(SALOMEDSImpl_AttributeComment) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), A)) {
- A = new SALOMEDSImpl_AttributeComment();
- L.AddAttribute(A);
- }
-
- A->SetValue(Val);
-
- return A;
-}
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeComment::SetValue (const TCollection_ExtendedString& S)
-{
- CheckLocked();
-
- if(myString == S) return;
-
- Backup();
-
- myString = S;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeComment::ID () const { return GetID(); }
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeComment::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeComment();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeComment::Restore(const Handle(TDF_Attribute)& with)
-{
- myString = Handle(SALOMEDSImpl_AttributeComment)::DownCast (with)->Value ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeComment::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeComment)::DownCast (into)->SetValue(myString);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeIOR.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeComment_HeaderFile
-#define _SALOMEDSImpl_AttributeComment_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TDF_Label.hxx>
-#include <Standard_GUID.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeComment, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeComment : public SALOMEDSImpl_GenericAttribute
-{
-private:
-
- TCollection_ExtendedString myString;
-
-public:
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-
-Standard_EXPORT SALOMEDSImpl_AttributeComment() :SALOMEDSImpl_GenericAttribute("AttributeComment") {}
-
-Standard_EXPORT static Handle(SALOMEDSImpl_AttributeComment) Set(const TDF_Label& L, const TCollection_ExtendedString& Val);
-Standard_EXPORT void SetValue (const TCollection_ExtendedString& S);
-Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = 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_AttributeComment() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeComment )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeDrawable.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef WNT
-using namespace std;
-#endif
-#include "SALOMEDSImpl_AttributeDrawable.hxx"
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeDrawable, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeDrawable, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeDrawable::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeDrawableID ("12837184-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeDrawableID;
-}
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeDrawable) SALOMEDSImpl_AttributeDrawable::Set (const TDF_Label& L,
- const Standard_Integer value)
-{
- Handle(SALOMEDSImpl_AttributeDrawable) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeDrawable::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeDrawable();
- L.AddAttribute(A);
- }
-
- A->SetDrawable (value);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeDrawable::SALOMEDSImpl_AttributeDrawable()
-:SALOMEDSImpl_GenericAttribute("AttributeDrawable")
-{
- myValue = 0;
-}
-
-//=======================================================================
-//function : SetDrawable
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeDrawable::SetDrawable(const Standard_Integer theValue)
-{
- CheckLocked();
-
- Backup();
-
- (theValue!=0)?myValue=1:myValue=0;
-}
-
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeDrawable::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeDrawable::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeDrawable();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeDrawable::Restore(const Handle(TDF_Attribute)& with)
-{
- myValue = Handle(SALOMEDSImpl_AttributeDrawable)::DownCast (with)->IsDrawable ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeDrawable::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeDrawable)::DownCast (into)->SetDrawable (myValue);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeDrawable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeDrawable_HeaderFile
-#define _SALOMEDSImpl_AttributeDrawable_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <Standard_GUID.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeDrawable, SALOMEDSImpl_GenericAttribute )
-
-
-class SALOMEDSImpl_AttributeDrawable : public SALOMEDSImpl_GenericAttribute
-{
-private:
-Standard_Integer myValue;
-
-public:
-Standard_EXPORT virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; }
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeDrawable Set(const TDF_Label& label,const Standard_Integer value) ;
-
-Standard_EXPORT void SetDrawable(const Standard_Integer theValue);
-Standard_EXPORT Standard_Integer IsDrawable() const { return myValue; }
-Standard_EXPORT SALOMEDSImpl_AttributeDrawable();
-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_AttributeDrawable() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeDrawable )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeExpandable.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef WNT
-using namespace std;
-#endif
-#include "SALOMEDSImpl_AttributeExpandable.hxx"
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeExpandable, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeExpandable, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeExpandable::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeExpandableID ("12837185-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeExpandableID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-Handle(SALOMEDSImpl_AttributeExpandable) SALOMEDSImpl_AttributeExpandable::Set (const TDF_Label& L,
- const Standard_Integer value)
-{
- Handle(SALOMEDSImpl_AttributeExpandable) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeExpandable::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeExpandable();
- L.AddAttribute(A);
- }
-
- A->SetExpandable(value);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeExpandable::SALOMEDSImpl_AttributeExpandable()
-:SALOMEDSImpl_GenericAttribute("AttributeExpandable")
-{
- myValue = 0;
-}
-
-//=======================================================================
-//function : SetExpandable
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeExpandable::SetExpandable(const Standard_Integer theValue)
-{
- CheckLocked();
-
- Backup();
-
- (theValue!=0)?myValue=1:myValue=0;
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeExpandable::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeExpandable::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeExpandable();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeExpandable::Restore(const Handle(TDF_Attribute)& with)
-{
- myValue = Handle(SALOMEDSImpl_AttributeExpandable)::DownCast (with)->IsExpandable ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeExpandable::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeExpandable)::DownCast (into)->SetExpandable (myValue);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeExpandable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeExpandable_HeaderFile
-#define _SALOMEDSImpl_AttributeExpandable_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <Standard_GUID.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeExpandable, SALOMEDSImpl_GenericAttribute )
-
-
-class SALOMEDSImpl_AttributeExpandable : public SALOMEDSImpl_GenericAttribute
-{
-private:
-Standard_Integer myValue;
-
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; }
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeExpandable Set(const TDF_Label& label,const Standard_Integer value) ;
-Standard_EXPORT SALOMEDSImpl_AttributeExpandable();
-Standard_EXPORT void SetExpandable(const Standard_Integer value);
-Standard_EXPORT int IsExpandable() const { return myValue; }
-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_AttributeExpandable() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeExpandable )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeExternalFileDef.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeExternalFileDef, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeExternalFileDef, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeExternalFileDef::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeExternalFileDefID ("7123AD4C-ACDB-4e3a-8FDC-70EA164D2CBE");
- return SALOMEDSImpl_AttributeExternalFileDefID;
-}
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-Handle(SALOMEDSImpl_AttributeExternalFileDef)
-SALOMEDSImpl_AttributeExternalFileDef::Set (const TDF_Label& L, const TCollection_ExtendedString& S)
-{
-
- Handle(SALOMEDSImpl_AttributeExternalFileDef) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeExternalFileDef::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeExternalFileDef();
- L.AddAttribute(A);
- }
-
- A->SetValue (S);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeExternalFileDef::SALOMEDSImpl_AttributeExternalFileDef()
-:SALOMEDSImpl_GenericAttribute("AttributeExternalFileDef")
-{
-}
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeExternalFileDef::SetValue (const TCollection_ExtendedString& S)
-{
- CheckLocked();
-
- if(myString == S) return;
-
- Backup();
-
- myString = S;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeExternalFileDef::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeExternalFileDef::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeExternalFileDef();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeExternalFileDef::Restore(const Handle(TDF_Attribute)& with)
-{
- myString = Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast (with)->Value ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeExternalFileDef::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeExternalFileDef) anAttr = Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(into);
- anAttr->SetValue(myString);
-}
-
+++ /dev/null
-
-#ifndef _SALOMEDSImpl_AttributeExternalFileDef_HeaderFile
-#define _SALOMEDSImpl_AttributeExternalFileDef_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeExternalFileDef, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeExternalFileDef : public SALOMEDSImpl_GenericAttribute
-{
-private:
-
- TCollection_ExtendedString myString;
-
-public:
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeExternalFileDef Set(const TDF_Label& label,
- const TCollection_ExtendedString& Name);
-Standard_EXPORT SALOMEDSImpl_AttributeExternalFileDef();
-Standard_EXPORT void SetValue(const TCollection_ExtendedString& value);
-Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }
-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_AttributeExternalFileDef() {}
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; }
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeExternalFileDef )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeFileType.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeFileType.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeFileType, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeFileType, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeFileType::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeFileTypeID ("0181B525-3F15-4ab2-9DE3-5E2F54B5F340");
- return SALOMEDSImpl_AttributeFileTypeID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeFileType) SALOMEDSImpl_AttributeFileType::Set (const TDF_Label& L,
- const TCollection_ExtendedString& S)
-{
-
- Handle(SALOMEDSImpl_AttributeFileType) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeFileType::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeFileType();
- L.AddAttribute(A);
- }
-
- A->SetValue (S);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeFileType::SALOMEDSImpl_AttributeFileType()
-:SALOMEDSImpl_GenericAttribute("AttributeFileType")
-{
-}
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeFileType::SetValue (const TCollection_ExtendedString& S)
-{
- CheckLocked();
-
- if(myString == S) return;
-
- Backup();
-
- myString = S;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeFileType::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeFileType::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeFileType();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeFileType::Restore(const Handle(TDF_Attribute)& with)
-{
- myString = Handle(SALOMEDSImpl_AttributeFileType)::DownCast (with)->Value ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeFileType::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeFileType)::DownCast (into)->SetValue (myString);
-}
-
+++ /dev/null
-
-#ifndef _SALOMEDSImpl_AttributeFileType_HeaderFile
-#define _SALOMEDSImpl_AttributeFileType_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <Standard_GUID.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeFileType, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeFileType : public SALOMEDSImpl_GenericAttribute
-{
-private:
-
- TCollection_ExtendedString myString;
-
-public:
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeFileType Set(const TDF_Label& label,
- const TCollection_ExtendedString& Name) ;
-Standard_EXPORT SALOMEDSImpl_AttributeFileType();
-Standard_EXPORT void SetValue(const TCollection_ExtendedString& value);
-Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }
-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_AttributeFileType() {}
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; }
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeFileType )
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeFlags.cxx
-// Author : Sergey LITONIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeFlags.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-
-/*
- Class : SALOMEDSImpl_AttributeFlags
- Description : This class is intended for storing different object attributes that
- have only two states (0 and 1).
-*/
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeFlags, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeFlags, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::GetID
-//purpose : Get GUID of this attribute
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeFlags::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeFlagsID( "866EEC9F-A517-4cb4-88E6-E208DB8FC96F" );
- return SALOMEDSImpl_AttributeFlagsID;
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::Set
-//purpose : Set value of the attribute
-//=======================================================================
-Handle(SALOMEDSImpl_AttributeFlags) SALOMEDSImpl_AttributeFlags::Set(const TDF_Label& L,
- const Standard_Integer value )
-{
- Handle(SALOMEDSImpl_AttributeFlags) A;
- if ( !L.FindAttribute(SALOMEDSImpl_AttributeFlags::GetID(),A ) )
- {
- A = new SALOMEDSImpl_AttributeFlags();
- L.AddAttribute( A );
- }
-
- A->Set( value );
- return A;
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::SALOMEDSImpl_AttributeFlags
-//purpose : Constructor
-//=======================================================================
-SALOMEDSImpl_AttributeFlags::SALOMEDSImpl_AttributeFlags()
-:SALOMEDSImpl_GenericAttribute("AttributeFlags")
-{
- myValue = 0;
-}
-
-SALOMEDSImpl_AttributeFlags::~SALOMEDSImpl_AttributeFlags()
-{
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::ID
-//purpose : Get GUID of this attribute
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeFlags::ID () const
-{
- return GetID();
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::NewEmpty
-//purpose : Create new empty attribute
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeFlags::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeFlags();
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::Restore
-//purpose : Assign given value to the attribute
-//=======================================================================
-void SALOMEDSImpl_AttributeFlags::Restore( const Handle(TDF_Attribute)& with )
-{
- myValue = Handle(SALOMEDSImpl_AttributeFlags)::DownCast( with )->Get();
- return;
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::Paste
-//purpose : Assign internal value to the given attribute
-//=======================================================================
-void SALOMEDSImpl_AttributeFlags::Paste(const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT ) const
-{
- Handle(SALOMEDSImpl_AttributeFlags)::DownCast( into )->Set( myValue );
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::Set
-//purpose : Set value
-//=======================================================================
-void SALOMEDSImpl_AttributeFlags::Set( const Standard_Integer v )
-{
- Backup();
- myValue=v;
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeFlags::Get
-//purpose : GetValue
-//=======================================================================
-Standard_Integer SALOMEDSImpl_AttributeFlags::Get() const
-{
- return myValue;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeFlags.hxx
-// Author : Sergey LITONIN
-// Module : SALOME
-
-#ifndef SALOMEDSImpl_AttributeFlags_HeaderFile
-#define SALOMEDSImpl_AttributeFlags_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-/*
- Class : SALOMEDSImpl_AttributeFlags
- Description : This class is intended for storing different object attributes that
- have only two states (0 and 1).
-*/
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeFlags, SALOMEDSImpl_GenericAttribute )
-
-#ifndef WNT
-class Standard_EXPORT SALOMEDSImpl_AttributeFlags : public SALOMEDSImpl_GenericAttribute
-#else
-class SALOMEDSImpl_AttributeFlags : public SALOMEDSImpl_GenericAttribute
-#endif
-{
-private:
-Standard_Integer myValue;
-
-public:
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle(SALOMEDSImpl_AttributeFlags) Set(const TDF_Label&, const Standard_Integer );
-
- SALOMEDSImpl_AttributeFlags();
-Standard_EXPORT virtual ~SALOMEDSImpl_AttributeFlags();
-
-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 void Set( const Standard_Integer );
-Standard_EXPORT Standard_Integer Get() const;
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeFlags )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeGraphic.cxx
-// Author : Sergey LITONIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeGraphic.hxx"
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-#include <TColStd_DataMapIteratorOfDataMapOfIntegerInteger.hxx>
-
-/*
- Class : SALOMEDSImpl_AttributeGraphic
- Description : This class is intended for storing information about
- graphic representation of objects in dirrent views
-*/
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeGraphic, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeGraphic, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose : Get GUID of this attribute
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeGraphic::GetID()
-{
- static Standard_GUID SALOMEDSImpl_AttributeGraphicID( "F17AE8F0-E354-4d6f-8E42-38385C36E67E" );
- return SALOMEDSImpl_AttributeGraphicID;
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_AttributeGraphic
-//purpose : Empty Constructor
-//=======================================================================
-SALOMEDSImpl_AttributeGraphic::SALOMEDSImpl_AttributeGraphic()
-:SALOMEDSImpl_GenericAttribute("AttributeGraphic")
-{
-}
-
-//=======================================================================
-//function : ~SALOMEDSImpl_AttributeGraphic
-//purpose : Destructor
-//=======================================================================
-SALOMEDSImpl_AttributeGraphic::~SALOMEDSImpl_AttributeGraphic()
-{
-}
-
-//=======================================================================
-//function : SetVisibility
-//purpose : Set visibility of object in given view
-//=======================================================================
-void SALOMEDSImpl_AttributeGraphic::SetVisibility(const Standard_Integer theViewId,
- const Standard_Boolean theValue )
-{
- if ( myVisibility.IsBound( theViewId ) && myVisibility( theViewId ) == theValue )
- return;
-
- Backup();
- if ( myVisibility.IsBound( theViewId ) )
- myVisibility.ChangeFind( theViewId ) = theValue ? 1 : 0;
- else
- myVisibility.Bind( theViewId, theValue ? 1 : 0 );
-}
-
-
-//=======================================================================
-//function : Get
-//purpose : Get visibility of object in given view
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeGraphic::GetVisibility(const Standard_Integer theViewId ) const
-{
- return myVisibility.IsBound( theViewId ) ? myVisibility( theViewId ) : false;
-}
-
-
-//=======================================================================
-//function : ID
-//purpose : Get GUID of this attribute
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeGraphic::ID () const
-{
- return GetID();
-}
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose : Create new empty attribute
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeGraphic::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeGraphic ();
-}
-
-//=======================================================================
-//function : SetVisibility
-//purpose : Set visibility of object in all views
-//=======================================================================
-void SALOMEDSImpl_AttributeGraphic::SetVisibility( const TColStd_DataMapOfIntegerInteger& theMap )
-{
- myVisibility = theMap;
-}
-
-//=======================================================================
-//function : SetVisibility
-//purpose : Get visibility of object in all views
-//=======================================================================
-const TColStd_DataMapOfIntegerInteger& SALOMEDSImpl_AttributeGraphic::GetVisibility()
-{
- return myVisibility;
-}
-
-//=======================================================================
-//function : Restore
-//purpose : Restore value of attribute with value of theWith one
-//=======================================================================
-void SALOMEDSImpl_AttributeGraphic::Restore( const Handle(TDF_Attribute)& theWith )
-{
- Handle(SALOMEDSImpl_AttributeGraphic) anAttr =
- Handle(SALOMEDSImpl_AttributeGraphic)::DownCast( theWith );
-
- if ( !anAttr.IsNull() )
- SetVisibility( anAttr->GetVisibility() );
-}
-
-//=======================================================================
-//function : Paste
-//purpose : Paste value of current attribute to the value of entry one
-//=======================================================================
-void SALOMEDSImpl_AttributeGraphic::Paste( const Handle(TDF_Attribute)& theInto,
- const Handle(TDF_RelocationTable)& ) const
-{
- Handle(SALOMEDSImpl_AttributeGraphic) anAttr =
- Handle(SALOMEDSImpl_AttributeGraphic)::DownCast( theInto );
-
- if ( !anAttr.IsNull() )
- anAttr->SetVisibility( myVisibility );
-}
-
-//=======================================================================
-//function : Dump
-//purpose : Dump
-//=======================================================================
-Standard_OStream& SALOMEDSImpl_AttributeGraphic::Dump( Standard_OStream& anOS ) const
-{
- anOS << "Visibility of object:" << endl;
- TColStd_DataMapIteratorOfDataMapOfIntegerInteger anIter( myVisibility );
- for ( ; anIter.More(); anIter.Next() )
- {
- char str[ 100 ];
-
- if ( GetVisibility( anIter.Key() ) )
- sprintf( str, "Viewer ID = 0x%X State = VISIBLE\n", anIter.Key() );
- else
- sprintf( str, "Viewer ID = 0x%X State = INVISIBLE\n", anIter.Key() );
-
- anOS << str;
- }
-
- anOS << "Integer";
- return anOS;
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeGraphic.hxx
-// Author : Sergey LITONIN
-// Module : SALOME
-
-#ifndef SALOMEDSImpl_AttributeGraphic_HeaderFile
-#define SALOMEDSImpl_AttributeGraphic_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TColStd_DataMapOfIntegerInteger.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-/*
- Class : SALOMEDSImpl_AttributeGraphic
- Description : This class is intended for storing information about
- graphic representation of objects in dirrent views
-*/
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeGraphic, SALOMEDSImpl_GenericAttribute)
-
-
-
-#ifndef WNT
-class Standard_EXPORT SALOMEDSImpl_AttributeGraphic : public SALOMEDSImpl_GenericAttribute
-#else
-class SALOMEDSImpl_AttributeGraphic : public SALOMEDSImpl_GenericAttribute
-#endif
-{
-
-public:
-Standard_EXPORT SALOMEDSImpl_AttributeGraphic();
-Standard_EXPORT ~SALOMEDSImpl_AttributeGraphic();
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-
-Standard_EXPORT void SetVisibility( const Standard_Integer,
- const Standard_Boolean );
-Standard_EXPORT Standard_Boolean GetVisibility( const Standard_Integer ) const;
-Standard_EXPORT const Standard_GUID& ID() const;
-Standard_EXPORT void Restore( const Handle(TDF_Attribute)& theWith );
-Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
-Standard_EXPORT void Paste( const Handle(TDF_Attribute)& theInto,
- const Handle(TDF_RelocationTable)& ) const;
-Standard_EXPORT virtual Standard_OStream& Dump( Standard_OStream& anOS ) const;
-
-Standard_EXPORT void SetVisibility( const TColStd_DataMapOfIntegerInteger& );
-
-Standard_EXPORT const TColStd_DataMapOfIntegerInteger& GetVisibility();
-
-private:
- TColStd_DataMapOfIntegerInteger myVisibility;
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeGraphic )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeIOR.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef WNT
-using namespace std;
-#endif
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_Study.hxx"
-#include <Standard_GUID.hxx>
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeIOR, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeIOR, SALOMEDSImpl_GenericAttribute )
-
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeIOR::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeIORID ("92888E01-7074-11d5-A690-0800369C8A03");
- return SALOMEDSImpl_AttributeIORID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeIOR) SALOMEDSImpl_AttributeIOR::Set (const TDF_Label& L,
- const TCollection_ExtendedString& S)
-{
- Handle(SALOMEDSImpl_AttributeIOR) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeIOR();
- L.AddAttribute(A);
- }
-
- A->SetValue(S);
- SALOMEDSImpl_Study::IORUpdated(A);
- return A;
-}
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeIOR::SetValue(const TCollection_ExtendedString& theValue)
-{
- CheckLocked();
-
- Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(Label());
- aStudy->AddCreatedPostponed(theValue);
- aStudy->AddPostponed(theValue);
-
- Backup();
- myString = theValue;
-
- SALOMEDSImpl_Study::IORUpdated(this);
-
- //SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : Value
-//purpose :
-//=======================================================================
-TCollection_ExtendedString SALOMEDSImpl_AttributeIOR::Value() const
-{
- return myString;
-}
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeIOR::SALOMEDSImpl_AttributeIOR()
-:SALOMEDSImpl_GenericAttribute("AttributeIOR")
-{
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeIOR::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeIOR::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeIOR();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeIOR::Restore(const Handle(TDF_Attribute)& with)
-{
- myString = Handle(SALOMEDSImpl_AttributeIOR)::DownCast (with)->Value();
- return;
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeIOR::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeIOR)::DownCast (into)->SetValue(myString);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeIOR.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeIOR_HeaderFile
-#define _SALOMEDSImpl_AttributeIOR_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeIOR, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeIOR : public SALOMEDSImpl_GenericAttribute
-{
-private:
-
- TCollection_ExtendedString myString;
-
-public:
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeIOR Set(const TDF_Label& label,
- const TCollection_ExtendedString& string);
-Standard_EXPORT SALOMEDSImpl_AttributeIOR();
-Standard_EXPORT const Standard_GUID& ID() const;
-Standard_EXPORT void SetValue(const TCollection_ExtendedString& theValue);
-Standard_EXPORT TCollection_ExtendedString Value() 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_AttributeIOR() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeIOR )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeInteger.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef WNT
-using namespace std;
-#endif
-#include "SALOMEDSImpl_AttributeInteger.hxx"
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeInteger, SALOMEDSImpl_GenericAttribute)
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeInteger, SALOMEDSImpl_GenericAttribute )
-
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeInteger::GetID ()
-{
- static Standard_GUID IntegerID ("8CC3E213-C9B4-47e4-8496-DD5E62E22018");
- return IntegerID;
-}
-
-Handle(SALOMEDSImpl_AttributeInteger) SALOMEDSImpl_AttributeInteger::Set (const TDF_Label& L, Standard_Integer Val)
-{
- Handle(SALOMEDSImpl_AttributeInteger) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), A)) {
- A = new SALOMEDSImpl_AttributeInteger();
- L.AddAttribute(A);
- }
-
- A->SetValue(Val);
- return A;
-}
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeInteger::SetValue(const Standard_Integer v)
-{
- if(myValue == v) return;
-
- Backup();
- myValue = v;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeInteger::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeInteger::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeInteger();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeInteger::Restore(const Handle(TDF_Attribute)& With)
-{
- myValue = Handle(SALOMEDSImpl_AttributeInteger)::DownCast (With)->Value();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeInteger::Paste (const Handle(TDF_Attribute)& Into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeInteger)::DownCast(Into)->SetValue(myValue);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeInteger_HeaderFile
-#define _SALOMEDSImpl_AttributeInteger_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeInteger, SALOMEDSImpl_GenericAttribute )
-
-
-class SALOMEDSImpl_AttributeInteger : public SALOMEDSImpl_GenericAttribute
-{
-private:
-Standard_Integer myValue;
-
-public:
-Standard_EXPORT static const Standard_GUID& GetID() ;
-
-Standard_EXPORT SALOMEDSImpl_AttributeInteger():SALOMEDSImpl_GenericAttribute("AttributeInteger") {}
-Standard_EXPORT static Handle(SALOMEDSImpl_AttributeInteger) Set (const TDF_Label& L, Standard_Integer Val);
-Standard_EXPORT void SetValue(const Standard_Integer theVal);
-Standard_EXPORT Standard_Integer Value() const { return myValue; }
-Standard_EXPORT virtual TCollection_AsciiString Save() { return TCollection_AsciiString(myValue); }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myValue = theValue.IntegerValue(); }
-
-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_AttributeInteger() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeInteger )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeLocalID.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeLocalID.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeLocalID, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeLocalID, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeLocalID::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeLocalID ("12837196-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeLocalID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeLocalID) SALOMEDSImpl_AttributeLocalID::Set (const TDF_Label& L,
- const Standard_Integer value)
-{
- Handle(SALOMEDSImpl_AttributeLocalID) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeLocalID();
- L.AddAttribute(A);
- }
-
- A->SetValue(value);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeLocalID::SALOMEDSImpl_AttributeLocalID()
-:SALOMEDSImpl_GenericAttribute("AttributeLocalID")
-{
- myValue = 0;
-}
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeLocalID::SetValue(const Standard_Integer theValue)
-{
- CheckLocked();
-
- Backup();
-
- myValue = theValue;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeLocalID::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeLocalID::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeLocalID();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeLocalID::Restore(const Handle(TDF_Attribute)& with)
-{
- myValue = Handle(SALOMEDSImpl_AttributeLocalID)::DownCast (with)->Value();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeLocalID::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeLocalID)::DownCast (into)->SetValue(myValue);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeLocalID.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeLocalID_HeaderFile
-#define _SALOMEDSImpl_AttributeLocalID_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeLocalID, SALOMEDSImpl_GenericAttribute )
-
-
-
-class SALOMEDSImpl_AttributeLocalID : public SALOMEDSImpl_GenericAttribute
-{
-private:
-Standard_Integer myValue;
-
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return TCollection_AsciiString(myValue); }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myValue = theValue.IntegerValue(); }
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeLocalID Set(const TDF_Label& label,const Standard_Integer value) ;
-Standard_EXPORT void SetValue(const Standard_Integer value);
-Standard_EXPORT Standard_Integer Value() const { return myValue; }
-Standard_EXPORT SALOMEDSImpl_AttributeLocalID();
-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_AttributeLocalID() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeLocalID )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeName.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeName.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeName, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeName, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeName::GetID ()
-{
- static Standard_GUID NameID ("8650000D-63A0-4651-B621-CC95C9308598");
- return NameID;
-}
-
-Handle(SALOMEDSImpl_AttributeName) SALOMEDSImpl_AttributeName::Set (const TDF_Label& L,
- const TCollection_ExtendedString& Val)
-{
- Handle(SALOMEDSImpl_AttributeName) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), A)) {
- A = new SALOMEDSImpl_AttributeName();
- L.AddAttribute(A);
- }
-
- A->SetValue(Val);
- return A;
-}
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeName::SetValue (const TCollection_ExtendedString& S)
-{
- CheckLocked();
-
- if(myString == S) return;
-
- Backup();
-
- myString = S;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeName::ID () const { return GetID(); }
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeName::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeName();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeName::Restore(const Handle(TDF_Attribute)& with)
-{
- myString = Handle(SALOMEDSImpl_AttributeName)::DownCast (with)->Value ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeName::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeName)::DownCast (into)->SetValue(myString);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeIOR.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeName_HeaderFile
-#define _SALOMEDSImpl_AttributeName_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"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeName, SALOMEDSImpl_GenericAttribute )
-
-
-class SALOMEDSImpl_AttributeName : public SALOMEDSImpl_GenericAttribute
-{
-
-private:
-
- TCollection_ExtendedString myString;
-
-public:
-Standard_EXPORT static const Standard_GUID& GetID() ;
-
-Standard_EXPORT SALOMEDSImpl_AttributeName():SALOMEDSImpl_GenericAttribute("AttributeName") {}
-Standard_EXPORT static Handle(SALOMEDSImpl_AttributeName) Set (const TDF_Label& L, const TCollection_ExtendedString& Val);
-Standard_EXPORT void SetValue(const TCollection_ExtendedString& theVal);
-Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = 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_AttributeName() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeName )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeOpened.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeOpened.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeOpened, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeOpened, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeOpened::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeOpenedID ("12837186-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeOpenedID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeOpened) SALOMEDSImpl_AttributeOpened::Set (const TDF_Label& L,
- const Standard_Integer value)
-{
- Handle(SALOMEDSImpl_AttributeOpened) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeOpened::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeOpened();
- L.AddAttribute(A);
- }
-
- A->SetOpened (value);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeOpened::SALOMEDSImpl_AttributeOpened()
-:SALOMEDSImpl_GenericAttribute("AttributeOpened")
-{
- myValue = 0;
-}
-
-//=======================================================================
-//function : SetOpened
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeOpened::SetOpened(const Standard_Integer theValue)
-{
- Backup();
-
- (theValue!=0)?myValue=1:myValue=0;
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeOpened::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeOpened::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeOpened();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeOpened::Restore(const Handle(TDF_Attribute)& with)
-{
- myValue = Handle(SALOMEDSImpl_AttributeOpened)::DownCast (with)->IsOpened ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeOpened::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeOpened)::DownCast (into)->SetOpened (myValue);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeOpened.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeOpened_HeaderFile
-#define _SALOMEDSImpl_AttributeOpened_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeOpened, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeOpened : public SALOMEDSImpl_GenericAttribute
-{
-private:
-Standard_Integer myValue;
-
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; }
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeOpened Set(const TDF_Label& label,const Standard_Integer value) ;
-Standard_EXPORT SALOMEDSImpl_AttributeOpened();
-Standard_EXPORT void SetOpened(const Standard_Integer value);
-Standard_EXPORT int IsOpened() const { return myValue; }
-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_AttributeOpened() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeOpened )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributePersistentRef.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributePersistentRef.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributePersistentRef, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributePersistentRef, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributePersistentRef::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributePersistentRefID ("92888E06-7074-11d5-A690-0800369C8A03");
- return SALOMEDSImpl_AttributePersistentRefID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributePersistentRef) SALOMEDSImpl_AttributePersistentRef::Set (const TDF_Label& L,
- const TCollection_ExtendedString& S)
-{
- Handle(SALOMEDSImpl_AttributePersistentRef) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(),A)) {
- A = new SALOMEDSImpl_AttributePersistentRef();
- L.AddAttribute(A);
- }
-
- A->SetValue (S);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributePersistentRef::SALOMEDSImpl_AttributePersistentRef()
-:SALOMEDSImpl_GenericAttribute("AttributePersistentRef")
-{
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributePersistentRef::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributePersistentRef::SetValue (const TCollection_ExtendedString& S)
-{
- CheckLocked();
-
- if(myString == S) return;
-
- Backup();
-
- myString = S;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributePersistentRef::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributePersistentRef();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributePersistentRef::Restore(const Handle(TDF_Attribute)& with)
-{
- myString = Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast (with)->Value ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributePersistentRef::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast (into)->SetValue(myString);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributePersistentRef.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributePersistentRef_HeaderFile
-#define _SALOMEDSImpl_AttributePersistentRef_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"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributePersistentRef, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributePersistentRef : public SALOMEDSImpl_GenericAttribute
-{
-private:
- TCollection_ExtendedString myString;
-
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; }
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributePersistentRef Set(const TDF_Label& label,
- const TCollection_ExtendedString& string) ;
-Standard_EXPORT SALOMEDSImpl_AttributePersistentRef();
-Standard_EXPORT const Standard_GUID& ID() const;
-Standard_EXPORT void SetValue(const TCollection_ExtendedString& value);
-Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }
-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_AttributePersistentRef() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributePersistentRef )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributePixMap.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributePixMap.hxx"
-#include <TCollection_ExtendedString.hxx>
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributePixMap, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributePixMap, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributePixMap::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributePixMapID ("12837187-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributePixMapID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributePixMap) SALOMEDSImpl_AttributePixMap::Set (const TDF_Label& L,
- const TCollection_ExtendedString& S)
-{
- Handle(SALOMEDSImpl_AttributePixMap) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributePixMap::GetID(),A)) {
- A = new SALOMEDSImpl_AttributePixMap();
- L.AddAttribute(A);
- }
-
- A->SetPixMap (S);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributePixMap::SALOMEDSImpl_AttributePixMap()
-:SALOMEDSImpl_GenericAttribute("AttributePixMap")
-{
- myString = "None";
-}
-
-//=======================================================================
-//function : SetPixMap
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributePixMap::SetPixMap (const TCollection_ExtendedString& S)
-{
- CheckLocked();
-
- if(myString == S) return;
-
- Backup();
-
- myString = S;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributePixMap::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributePixMap::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributePixMap();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributePixMap::Restore(const Handle(TDF_Attribute)& with)
-{
- myString = Handle(SALOMEDSImpl_AttributePixMap)::DownCast (with)->GetPixMap ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributePixMap::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributePixMap)::DownCast (into)->SetPixMap (myString);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributePixMap.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributePixMap_HeaderFile
-#define _SALOMEDSImpl_AttributePixMap_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"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributePixMap, SALOMEDSImpl_GenericAttribute )
-
-
-
-class SALOMEDSImpl_AttributePixMap : public SALOMEDSImpl_GenericAttribute
-{
-private:
-
- TCollection_ExtendedString myString;
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; }
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributePixMap Set(const TDF_Label& label,
- const TCollection_ExtendedString& string) ;
-Standard_EXPORT SALOMEDSImpl_AttributePixMap();
-Standard_EXPORT const Standard_GUID& ID() const;
-Standard_EXPORT void SetPixMap(const TCollection_ExtendedString& value);
-Standard_EXPORT TCollection_ExtendedString GetPixMap() const { return myString; }
-Standard_EXPORT Standard_Boolean HasPixMap() const { return (myString != "None"); }
-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_AttributePixMap() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributePixMap )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributePythonObject.cxx
-// Author : Michael Ponikarov
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributePythonObject.hxx"
-#include <Standard_GUID.hxx>
-#include <string>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributePythonObject, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributePythonObject, SALOMEDSImpl_GenericAttribute )
-
-const Standard_GUID& SALOMEDSImpl_AttributePythonObject::GetID()
-{
- static Standard_GUID SALOMEDSImpl_AttributePythonObjectID ("128371A3-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributePythonObjectID;
-}
-
-Handle(SALOMEDSImpl_AttributePythonObject) SALOMEDSImpl_AttributePythonObject::Set(const TDF_Label& label)
-{
- Handle(SALOMEDSImpl_AttributePythonObject) anAttr;
- if (!label.FindAttribute(SALOMEDSImpl_AttributePythonObject::GetID(),anAttr)) {
- anAttr = new SALOMEDSImpl_AttributePythonObject();
- label.AddAttribute(anAttr);
- }
- return anAttr;
-}
-
-SALOMEDSImpl_AttributePythonObject::SALOMEDSImpl_AttributePythonObject()
-:SALOMEDSImpl_GenericAttribute("AttributePythonObject")
-{
-}
-
-void SALOMEDSImpl_AttributePythonObject::SetObject(const TCollection_AsciiString& theSequence,
- const bool theScript)
-{
- CheckLocked();
- Backup();
- mySequence = theSequence;
- myIsScript = theScript;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-TCollection_AsciiString SALOMEDSImpl_AttributePythonObject::GetObject() const
-{
- return mySequence;
-}
-
-bool SALOMEDSImpl_AttributePythonObject::IsScript() const
-{
- return myIsScript;
-}
-
-int SALOMEDSImpl_AttributePythonObject::GetLength() const
-{
- return mySequence.Length();
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributePythonObject::ID() const
-{
- return GetID();
-}
-
-void SALOMEDSImpl_AttributePythonObject::Restore(const Handle(TDF_Attribute)& with)
-{
- Handle(SALOMEDSImpl_AttributePythonObject) anObj = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(with);
- SetObject(anObj->GetObject(),anObj->IsScript());
-}
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributePythonObject::NewEmpty() const
-{
- return new SALOMEDSImpl_AttributePythonObject();
-}
-
-void SALOMEDSImpl_AttributePythonObject::Paste(const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)&) const
-{
- Handle(SALOMEDSImpl_AttributePythonObject) anObj = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(into);
- anObj->SetObject(GetObject(),IsScript());
-}
-
-
-TCollection_AsciiString SALOMEDSImpl_AttributePythonObject::Save()
-{
- char* aString = (char*)GetObject().ToCString();
- char* aResult = new char[strlen(aString) + 2];
- aResult[0] = IsScript()?'s':'n';
- strcpy(aResult+1, aString);
- TCollection_AsciiString ret(aResult);
-
- delete aResult;
- return ret;
-}
-
-void SALOMEDSImpl_AttributePythonObject::Load(const TCollection_AsciiString& value)
-{
- char* aString = value.ToCString();
- SetObject(aString + 1, aString[0]=='s');
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributePythonObject.hxx
-// Author : Michael Ponikarov
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributePythonObject_HeaderFile
-#define _SALOMEDSImpl_AttributePythonObject_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <Standard.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributePythonObject, SALOMEDSImpl_GenericAttribute )
-
-#ifdef GetObject
-#undef GetObject
-#endif
-
-class SALOMEDSImpl_AttributePythonObject : public SALOMEDSImpl_GenericAttribute
-{
-
-public:
-Standard_EXPORT virtual TCollection_AsciiString Save();
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributePythonObject Set(const TDF_Label& label) ;
-Standard_EXPORT SALOMEDSImpl_AttributePythonObject();
-Standard_EXPORT void SetObject(const TCollection_AsciiString& theSequence, const bool theScript) ;
-Standard_EXPORT TCollection_AsciiString GetObject() const;
-Standard_EXPORT bool IsScript() const;
-Standard_EXPORT int GetLength() const;
-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_AttributePythonObject() {}
-
-private:
-
-TCollection_AsciiString mySequence;
-bool myIsScript;
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributePythonObject )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeReal.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeReal.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeReal, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeReal, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeReal::GetID ()
-{
- static Standard_GUID realID ("1D1992F0-56F4-46b4-8065-CDEA68061CAB");
- return realID;
-}
-
-Handle(SALOMEDSImpl_AttributeReal) SALOMEDSImpl_AttributeReal::Set (const TDF_Label& L, const Standard_Real Val)
-{
- Handle(SALOMEDSImpl_AttributeReal) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeReal::GetID(), A)) {
- A = new SALOMEDSImpl_AttributeReal();
- L.AddAttribute(A);
- }
-
- A->SetValue(Val);
- return A;
-}
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeReal::SetValue(const Standard_Real v)
-{
- CheckLocked();
-
- if( myValue == v) return;
-
- Backup();
- myValue = v;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeReal::ID () const
-{
- return GetID();
-}
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeReal::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeReal();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeReal::Restore(const Handle(TDF_Attribute)& with)
-{
- myValue = Handle(SALOMEDSImpl_AttributeReal)::DownCast (with)->Value ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeReal::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeReal)::DownCast (into)->SetValue(myValue);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeReal.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeReal_HeaderFile
-#define _SALOMEDSImpl_AttributeReal_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Label.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeReal, SALOMEDSImpl_GenericAttribute )
-
-
-class SALOMEDSImpl_AttributeReal : public SALOMEDSImpl_GenericAttribute
-{
-private:
- Standard_Real myValue;
-public:
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-
-Standard_EXPORT SALOMEDSImpl_AttributeReal():SALOMEDSImpl_GenericAttribute("AttributeReal") {}
-Standard_EXPORT static Handle(SALOMEDSImpl_AttributeReal) Set (const TDF_Label& L, const Standard_Real Val);
-Standard_EXPORT void SetValue(const Standard_Real theVal);
-Standard_EXPORT Standard_Real Value() const { return myValue; }
-Standard_EXPORT virtual TCollection_AsciiString Save() { return TCollection_AsciiString(myValue); }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myValue = theValue.RealValue(); }
-
-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_AttributeReal() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeReal )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeReference.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeReference.hxx"
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_RelocationTable.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeReference, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeReference, SALOMEDSImpl_GenericAttribute )
-
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeReference::GetID ()
-{
- static Standard_GUID refID ("D913E0B3-0A9F-4ea6-9480-18A9B72D9D86");
- return refID;
-}
-
-Handle(SALOMEDSImpl_AttributeReference) SALOMEDSImpl_AttributeReference::Set(const TDF_Label& theLabel,
- const TDF_Label& theRefLabel)
-{
- Handle(SALOMEDSImpl_AttributeReference) A;
- if (!theLabel.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), A)) {
- A = new SALOMEDSImpl_AttributeReference();
- theLabel.AddAttribute(A);
- }
-
- A->Set(theRefLabel);
- return A;
-}
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeReference::Set(const TDF_Label& Origin)
-{
- CheckLocked();
-
- if(myLabel == Origin) return;
-
- Backup();
- myLabel = Origin;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeReference::ID () const { return GetID(); }
-
-
-TCollection_AsciiString SALOMEDSImpl_AttributeReference::Save()
-{
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(myLabel, anEntry);
- return anEntry;
-}
-
-void SALOMEDSImpl_AttributeReference::Load(const TCollection_AsciiString& value)
-{
- TDF_Label aLabel;
- TDF_Tool::Label(Label().Data(), value, aLabel);
- myLabel = aLabel;
-}
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeReference::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeReference();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeReference::Restore(const Handle(TDF_Attribute)& With)
-{
- myLabel = Handle(SALOMEDSImpl_AttributeReference)::DownCast (With)->Get ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeReference::Paste (const Handle(TDF_Attribute)& Into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- TDF_Label tLab;
- if (!myLabel.IsNull()) {
- if (!RT->HasRelocation(myLabel,tLab)) tLab = myLabel;
- }
- Handle(SALOMEDSImpl_AttributeReference)::DownCast(Into)->Set(tLab);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeIOR.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeReference_HeaderFile
-#define _SALOMEDSImpl_AttributeReference_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeReference, SALOMEDSImpl_GenericAttribute )
-
-
-
-class SALOMEDSImpl_AttributeReference : public SALOMEDSImpl_GenericAttribute
-{
-private:
- TDF_Label myLabel;
-
-public:
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-
-Standard_EXPORT SALOMEDSImpl_AttributeReference():SALOMEDSImpl_GenericAttribute("AttributeReference") {}
-Standard_EXPORT static Handle(SALOMEDSImpl_AttributeReference) Set(const TDF_Label& theLabel, const TDF_Label& theRefLabel);
-Standard_EXPORT void Set(const TDF_Label& theLabel);
-Standard_EXPORT TDF_Label Get() const { return myLabel; }
-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_AttributeReference() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeReference )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeSelectable.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeSelectable.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeSelectable, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeSelectable, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeSelectable::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeSelectableID ("12837188-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeSelectableID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeSelectable) SALOMEDSImpl_AttributeSelectable::Set (const TDF_Label& L,
- const Standard_Integer value)
-{
- Handle(SALOMEDSImpl_AttributeSelectable) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeSelectable::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeSelectable();
- L.AddAttribute(A);
- }
-
- A->SetSelectable (value);
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeSelectable::SALOMEDSImpl_AttributeSelectable()
-:SALOMEDSImpl_GenericAttribute("AttributeSelectable")
-{
- myValue = 0;
-}
-
-//=======================================================================
-//function : SetSelectable
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeSelectable::SetSelectable(const Standard_Integer theValue)
-{
- Backup();
-
- (theValue!=0)?myValue=1:myValue=0;
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeSelectable::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeSelectable::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeSelectable();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeSelectable::Restore(const Handle(TDF_Attribute)& with)
-{
- myValue = Handle(SALOMEDSImpl_AttributeSelectable)::DownCast (with)->IsSelectable ();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeSelectable::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeSelectable)::DownCast (into)->SetSelectable (myValue);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeSelectable.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeSelectable_HeaderFile
-#define _SALOMEDSImpl_AttributeSelectable_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeSelectable, SALOMEDSImpl_GenericAttribute )
-
-
-
-class SALOMEDSImpl_AttributeSelectable : public SALOMEDSImpl_GenericAttribute
-{
-private:
-Standard_Integer myValue;
-
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; }
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeSelectable Set(const TDF_Label& label,const Standard_Integer value) ;
-Standard_EXPORT SALOMEDSImpl_AttributeSelectable();
-Standard_EXPORT void SetSelectable(const Standard_Integer value);
-Standard_EXPORT Standard_Integer IsSelectable() const { return myValue; }
-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_AttributeSelectable() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeDrawable )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeSequenceOfInteger.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfInteger, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeSequenceOfInteger, SALOMEDSImpl_GenericAttribute )
-
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfInteger::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeSequenceOfIntegerID ("12837182-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeSequenceOfIntegerID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeSequenceOfInteger) SALOMEDSImpl_AttributeSequenceOfInteger::Set (const TDF_Label& L)
-{
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeSequenceOfInteger::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeSequenceOfInteger();
- L.AddAttribute(A);
- }
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeSequenceOfInteger::SALOMEDSImpl_AttributeSequenceOfInteger()
-:SALOMEDSImpl_GenericAttribute("AttributeSequenceOfInteger")
-{
- myValue = new TColStd_HSequenceOfInteger();
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfInteger::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeSequenceOfInteger::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeSequenceOfInteger();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeSequenceOfInteger::Restore(const Handle(TDF_Attribute)& with)
-{
- Standard_Integer i;
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger) anSeq = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(with);
- if(!anSeq->myValue.IsNull()) {
- myValue = new TColStd_HSequenceOfInteger();
- Standard_Integer Len = anSeq->Length();
- for(i = 1; i<=Len; i++) Add(anSeq->Value(i));
- }
- else
- myValue.Nullify();
- return;
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeSequenceOfInteger::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& ) const
-{
- if(!myValue.IsNull()) {
- Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast (into)->Assign(myValue);
- }
-}
-
-void SALOMEDSImpl_AttributeSequenceOfInteger::Assign(const Handle(TColStd_HSequenceOfInteger)& other)
-{
- CheckLocked();
- Backup();
- if (myValue.IsNull()) myValue = new TColStd_HSequenceOfInteger;
- myValue->ChangeSequence() = other->Sequence();
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeSequenceOfInteger::ChangeValue(const Standard_Integer Index,const Standard_Integer Value)
-{
- CheckLocked();
- Backup();
- myValue->SetValue(Index, Value);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeSequenceOfInteger::Add(const Standard_Integer Value)
-{
- CheckLocked();
- Backup();
- myValue->Append(Value);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeSequenceOfInteger::Remove(const Standard_Integer Index)
-{
- CheckLocked();
- Backup();
- myValue->Remove(Index);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Standard_Integer SALOMEDSImpl_AttributeSequenceOfInteger::Length()
-{
- return myValue->Length();
-}
-Standard_Integer SALOMEDSImpl_AttributeSequenceOfInteger::Value(const Standard_Integer Index)
-{
- return myValue->Value(Index);
-}
-
-
-
-TCollection_AsciiString SALOMEDSImpl_AttributeSequenceOfInteger::Save()
-{
- Standard_Integer aLength = Length();
- char* aResult = new char[aLength * 25];
- aResult[0] = 0;
- Standard_Integer aPosition = 0;
- for (int i = 1; i <= aLength; i++) {
- sprintf(aResult + aPosition , "%d ", Value(i));
- aPosition += strlen(aResult + aPosition);
- }
- TCollection_AsciiString ret(aResult);
- delete aResult;
-
- return ret;
-}
-
-void SALOMEDSImpl_AttributeSequenceOfInteger::Load(const TCollection_AsciiString& value)
-{
- Handle(TColStd_HSequenceOfInteger) CasCadeSeq = new TColStd_HSequenceOfInteger;
-
- char* aCopy = value.ToCString();
- char* adr = strtok(aCopy, " ");
- while (adr) {
- int l = atol(adr);
- CasCadeSeq->Append(l);
- adr = strtok(NULL, " ");
- }
- Assign(CasCadeSeq);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeSequenceOfInteger.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeSequenceOfInteger_HeaderFile
-#define _SALOMEDSImpl_AttributeSequenceOfInteger_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfInteger, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeSequenceOfInteger : public SALOMEDSImpl_GenericAttribute
-{
-
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save();
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeSequenceOfInteger Set(const TDF_Label& label) ;
-Standard_EXPORT SALOMEDSImpl_AttributeSequenceOfInteger();
-Standard_EXPORT void Assign(const Handle(TColStd_HSequenceOfInteger)& other) ;
-Standard_EXPORT void ChangeValue(const Standard_Integer Index,const Standard_Integer Value) ;
-Standard_EXPORT void Add(const Standard_Integer value) ;
-Standard_EXPORT Standard_Integer Value(const Standard_Integer Index) ;
-Standard_EXPORT void Remove(const Standard_Integer Index) ;
-Standard_EXPORT Standard_Integer Length() ;
-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_AttributeSequenceOfInteger() {}
-
-private:
-
-Handle_TColStd_HSequenceOfInteger myValue;
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeSequenceOfInteger )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeSequenceOfReal.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfReal, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeSequenceOfReal, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfReal::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeSequenceOfRealID ("12837183-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeSequenceOfRealID;
-}
-
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeSequenceOfReal) SALOMEDSImpl_AttributeSequenceOfReal::Set (const TDF_Label& L)
-{
- Handle(SALOMEDSImpl_AttributeSequenceOfReal) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeSequenceOfReal::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeSequenceOfReal();
- L.AddAttribute(A);
- }
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeSequenceOfReal::SALOMEDSImpl_AttributeSequenceOfReal()
-:SALOMEDSImpl_GenericAttribute("AttributeSequenceOfReal")
-{
- myValue = new TColStd_HSequenceOfReal();
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfReal::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeSequenceOfReal::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeSequenceOfReal();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeSequenceOfReal::Restore(const Handle(TDF_Attribute)& with)
-{
- Standard_Integer i;
- Handle(SALOMEDSImpl_AttributeSequenceOfReal) anSeq = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(with);
- if(!anSeq->myValue.IsNull()) {
- myValue = new TColStd_HSequenceOfReal();
- Standard_Integer Len = anSeq->Length();
- for(i = 1; i<=Len; i++) Add(anSeq->Value(i));
- }
- else
- myValue.Nullify();
- return;
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeSequenceOfReal::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& ) const
-{
- if(!myValue.IsNull()) {
- Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast (into)->Assign(myValue);
- }
-}
-
-void SALOMEDSImpl_AttributeSequenceOfReal::Assign(const Handle(TColStd_HSequenceOfReal)& other)
-{
- CheckLocked();
- Backup();
- if (myValue.IsNull()) myValue = new TColStd_HSequenceOfReal;
- myValue->ChangeSequence() = other->Sequence();
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeSequenceOfReal::ChangeValue(const Standard_Integer Index,const Standard_Real Value)
-{
- CheckLocked();
- Backup();
- myValue->SetValue(Index, Value);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeSequenceOfReal::Add(const Standard_Real Value)
-{
- CheckLocked();
- Backup();
- myValue->Append(Value);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeSequenceOfReal::Remove(const Standard_Integer Index)
-{
- CheckLocked();
- Backup();
- myValue->Remove(Index);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Standard_Integer SALOMEDSImpl_AttributeSequenceOfReal::Length()
-{
- return myValue->Length();
-}
-
-Standard_Real SALOMEDSImpl_AttributeSequenceOfReal::Value(const Standard_Integer Index)
-{
- return myValue->Value(Index);
-}
-
-
-TCollection_AsciiString SALOMEDSImpl_AttributeSequenceOfReal::Save()
-{
- Standard_Integer aLength = Length();
- char* aResult = new char[aLength * 25];
- aResult[0] = 0;
- Standard_Integer aPosition = 0;
- for (int i = 1; i <= aLength; i++) {
- sprintf(aResult + aPosition , "%f ", Value(i));
- aPosition += strlen(aResult + aPosition);
- }
- TCollection_AsciiString ret(aResult);
- delete aResult;
-
- return ret;
-}
-
-void SALOMEDSImpl_AttributeSequenceOfReal::Load(const TCollection_AsciiString& value)
-{
- Handle(TColStd_HSequenceOfReal) CasCadeSeq = new TColStd_HSequenceOfReal;
-
- char* aCopy = value.ToCString();
- char* adr = strtok(aCopy, " ");
- char *err = NULL;
- while (adr) {
- Standard_Real r = strtod(adr, &err);
- CasCadeSeq->Append(r);
- adr = strtok(NULL, " ");
- }
- Assign(CasCadeSeq);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeSequenceOfReal.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeSequenceOfReal_HeaderFile
-#define _SALOMEDSImpl_AttributeSequenceOfReal_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TColStd_HSequenceOfReal.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfReal, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeSequenceOfReal : public SALOMEDSImpl_GenericAttribute
-{
-
-public:
-
-Standard_EXPORT virtual TCollection_AsciiString Save();
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
-
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeSequenceOfReal Set(const TDF_Label& label) ;
-Standard_EXPORT SALOMEDSImpl_AttributeSequenceOfReal();
-Standard_EXPORT void Assign(const Handle(TColStd_HSequenceOfReal)& other) ;
-Standard_EXPORT void ChangeValue(const Standard_Integer Index,const Standard_Real Value) ;
-Standard_EXPORT void Add(const Standard_Real Value) ;
-Standard_EXPORT Standard_Real Value(const Standard_Integer Index) ;
-Standard_EXPORT void Remove(const Standard_Integer Index) ;
-Standard_EXPORT Standard_Integer Length() ;
-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_AttributeSequenceOfReal() {}
-
-private:
-Handle_TColStd_HSequenceOfReal myValue;
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeSequenceOfReal )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeStudyProperties.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include <SALOMEDSImpl_AttributeStudyProperties.hxx>
-#include <Standard_GUID.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeStudyProperties, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeStudyProperties, SALOMEDSImpl_GenericAttribute )
-
-const Standard_GUID& SALOMEDSImpl_AttributeStudyProperties::GetID()
-{
- static Standard_GUID SALOMEDSImpl_AttributeStudyPropertiesID ("128371A2-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeStudyPropertiesID;
-}
-
-Handle(SALOMEDSImpl_AttributeStudyProperties) SALOMEDSImpl_AttributeStudyProperties::Set(const TDF_Label& label)
-{
- Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
- if (!label.FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(),anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeStudyProperties();
- label.AddAttribute(anAttr);
- }
- return anAttr;
-}
-
-SALOMEDSImpl_AttributeStudyProperties::SALOMEDSImpl_AttributeStudyProperties()
-:SALOMEDSImpl_GenericAttribute("AttributeStudyProperties")
-{
- myLocked = Standard_False;
- myLockChanged = Standard_False;
- Init();
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::Init()
-{
- myUserName = new TColStd_HSequenceOfExtendedString();
- myMinute = new TColStd_HSequenceOfInteger();
- myHour = new TColStd_HSequenceOfInteger();
- myDay = new TColStd_HSequenceOfInteger();
- myMonth = new TColStd_HSequenceOfInteger();
- myYear = new TColStd_HSequenceOfInteger();
-// myModified = 0;
- myMode = 0; // none
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::SetModification(const TCollection_ExtendedString& theUserName,
- const Standard_Integer theMinute,
- const Standard_Integer theHour,
- const Standard_Integer theDay,
- const Standard_Integer theMonth,
- const Standard_Integer theYear)
-{
- if (theMinute<0 || theMinute>60 || theHour<0 || theHour>24 ||
- theDay<0 || theDay>31 || theMonth<0 || theMonth>12)
- return;
-
- CheckLocked();
- Backup();
-
- myUserName->Append(theUserName);
- myMinute->Append(theMinute);
- myHour->Append(theHour);
- myDay->Append(theDay);
- myMonth->Append(theMonth);
- myYear->Append(theYear);
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::GetModifications
- (Handle(TColStd_HSequenceOfExtendedString)& theUserNames,
- Handle(TColStd_HSequenceOfInteger)& theMinutes,
- Handle(TColStd_HSequenceOfInteger)& theHours,
- Handle(TColStd_HSequenceOfInteger)& theDays,
- Handle(TColStd_HSequenceOfInteger)& theMonths,
- Handle(TColStd_HSequenceOfInteger)& theYears) const
-{
- theUserNames = myUserName;
- theMinutes = myMinute;
- theHours = myHour;
- theDays = myDay;
- theMonths = myMonth;
- theYears = myYear;
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeStudyProperties::GetCreatorName() const
-{
- if (myUserName->Length() == 0)
- return TCollection_ExtendedString("");
- return myUserName->Value(1);
-}
-
-Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::GetCreationDate
- (Standard_Integer& theMinute,
- Standard_Integer& theHour,
- Standard_Integer& theDay,
- Standard_Integer& theMonth,
- Standard_Integer& theYear) const
-{
- if (myMinute->Length() != 0) {
- theMinute = myMinute->Value(1);
- theHour = myHour->Value(1);
- theDay = myDay->Value(1);
- theMonth = myMonth->Value(1);
- theYear = myYear->Value(1);
- return Standard_True;
- }
- return Standard_False;
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::ChangeCreatorName(const TCollection_ExtendedString& theName)
-{
- if (myUserName->Length() > 0) {
- CheckLocked();
- Backup();
- myUserName->SetValue(1, theName);
- }
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::SetCreationMode(const Standard_Integer theMode)
-{
- CheckLocked();
- Backup();
- myMode = theMode;
-}
-
-Standard_Integer SALOMEDSImpl_AttributeStudyProperties::GetCreationMode() const
-{
- return myMode;
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::SetModified(const Standard_Integer theModified)
-{
- myModified = theModified;
-}
-
-Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::IsModified() const
-{
- return (myModified != 0);
-}
-
-Standard_Integer SALOMEDSImpl_AttributeStudyProperties::GetModified() const
-{
- return myModified;
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::SetLocked(const Standard_Boolean theLocked)
-{
-// Backup();
- if (myLocked != theLocked) {
- myLockChanged = Standard_True;
- myLocked = theLocked;
- }
-}
-
-Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::IsLocked() const
-{
- return myLocked;
-}
-
-Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::IsLockChanged(const Standard_Boolean theErase) {
- if (!myLockChanged) return Standard_False;
- if (theErase) myLockChanged = Standard_False;
- return Standard_True;
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeStudyProperties::ID() const
-{
- return GetID();
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::Restore(const Handle(TDF_Attribute)& with)
-{
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(with);
- Init();
- Standard_Integer i;
- Handle(TColStd_HSequenceOfExtendedString) aNames;
- Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
- aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
- for (i = aNames->Length(); i > 0; i--) {
- myUserName->Prepend(aNames->Value(i));
- myMinute->Prepend(aMinutes->Value(i));
- myHour->Prepend(aHours->Value(i));
- myDay->Prepend(aDays->Value(i));
- myMonth->Prepend(aMonths->Value(i));
- myYear->Prepend(aYears->Value(i));
- }
- myMode = aProp->GetCreationMode();
-// myModified = aProp->GetModified();
-// myLocked = aProp->IsLocked();
-}
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeStudyProperties::NewEmpty() const
-{
- return new SALOMEDSImpl_AttributeStudyProperties();
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::Paste(const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)&) const
-{
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
- Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(into);
- aProp->Init();
-
- Standard_Integer i;
- for(i = 1; i <= myUserName->Length(); i++) {
- aProp->SetModification(myUserName->Value(i),
- myMinute->Value(i), myHour->Value(i),
- myDay->Value(i), myMonth->Value(i), myYear->Value(i));
- }
-
- aProp->SetCreationMode(myMode);
-// aProp->SetModified(myModified);
-// aProp->SetLocked(myLocked);
-}
-
-
-TCollection_AsciiString SALOMEDSImpl_AttributeStudyProperties::Save()
-{
- Handle(TColStd_HSequenceOfExtendedString) aNames;
- Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
- GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
-
- int aLength, anIndex;
- for (aLength = 0, anIndex = aNames->Length(); anIndex > 0; anIndex--)
- aLength += aNames->Value(anIndex).Length() + 1;
-
- char* aProperty = new char[3 + aLength + 12 * aNames->Length()];
-
- char crMode = (char)GetCreationMode();
-
- sprintf(aProperty,"%c%c", crMode, IsLocked()?'l':'u');
-
- aLength = aNames->Length();
- int a = 2;
- for (anIndex = 1; anIndex <= aLength; anIndex++) {
- sprintf(&(aProperty[a]),"%2d%2d%2d%2d%4d%s",
- (int)(aMinutes->Value(anIndex)),
- (int)(aHours->Value(anIndex)),
- (int)(aDays->Value(anIndex)),
- (int)(aMonths->Value(anIndex)),
- (int)(aYears->Value(anIndex)),
- (char*)(TCollection_AsciiString(aNames->Value(anIndex)).ToCString()));
- a = strlen(aProperty);
- aProperty[a++] = 1;
- }
- aProperty[a] = 0;
- TCollection_AsciiString prop(aProperty);
- delete aProperty;
-
- return prop;
-}
-
-void SALOMEDSImpl_AttributeStudyProperties::Load(const TCollection_AsciiString& value)
-{
- char* aCopy = value.ToCString();
-
- int crMode = (int)aCopy[0];
- SetCreationMode(crMode);
-
- int anIndex;
- for (anIndex = 2; anIndex + 2 < value.Length() ;) {
- char str[10];
- Standard_Integer aMinute, aHour, aDay, aMonth, aYear;
- str[0] = aCopy[anIndex++];
- str[1] = aCopy[anIndex++];
- str[2] = 0;
- aMinute = atoi(str);
- str[0] = aCopy[anIndex++];
- str[1] = aCopy[anIndex++];
- aHour = atoi(str);
- str[0] = aCopy[anIndex++];
- str[1] = aCopy[anIndex++];
- aDay = atoi(str);
- str[0] = aCopy[anIndex++];
- str[1] = aCopy[anIndex++];
- aMonth = atoi(str);
- str[0] = aCopy[anIndex++];
- str[1] = aCopy[anIndex++];
- str[2] = aCopy[anIndex++];
- str[3] = aCopy[anIndex++];
- str[4] = 0;
- aYear = atoi(str);
-
- int aNameSize;
- for(aNameSize = 0; aCopy[anIndex+aNameSize]!=1; aNameSize++);
- char *aName = new char[aNameSize+1];
- strncpy(aName, &(aCopy[anIndex]), aNameSize);
- aName[aNameSize] = 0;
- SetModification(aName,aMinute,aHour,aDay,aMonth,aYear);
- delete(aName);
- anIndex += aNameSize + 1;
- }
- if (aCopy[1] == 'l') {
- SetLocked(Standard_True);
- }
- SetModified(0);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeStudyProperties.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeStudyProperties_HeaderFile
-#define _SALOMEDSImpl_AttributeStudyProperties_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <Standard.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeStudyProperties, SALOMEDSImpl_GenericAttribute )
-
-#include <TColStd_HSequenceOfExtendedString.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-
-class SALOMEDSImpl_AttributeStudyProperties : public SALOMEDSImpl_GenericAttribute
-{
-public:
-Standard_EXPORT SALOMEDSImpl_AttributeStudyProperties();
-Standard_EXPORT ~SALOMEDSImpl_AttributeStudyProperties() {}
-
-Standard_EXPORT static const Standard_GUID& GetID();
-Standard_EXPORT const Standard_GUID& ID() const;
-
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeStudyProperties Set(const TDF_Label& label);
-
-Standard_EXPORT void Init();
-
-Standard_EXPORT virtual TCollection_AsciiString Save();
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
-
-Standard_EXPORT void SetModification(const TCollection_ExtendedString& theUserName,
- const Standard_Integer theMinute,
- const Standard_Integer theHour,
- const Standard_Integer theDay,
- const Standard_Integer theMonth,
- const Standard_Integer theYear);
-Standard_EXPORT void GetModifications(Handle(TColStd_HSequenceOfExtendedString)& theUserNames,
- Handle(TColStd_HSequenceOfInteger)& theMinutes,
- Handle(TColStd_HSequenceOfInteger)& theHours,
- Handle(TColStd_HSequenceOfInteger)& theDays,
- Handle(TColStd_HSequenceOfInteger)& theMonths,
- Handle(TColStd_HSequenceOfInteger)& theYears) const;
-
-Standard_EXPORT TCollection_ExtendedString GetCreatorName() const;
-Standard_EXPORT Standard_Boolean GetCreationDate(Standard_Integer& theMinute,
- Standard_Integer& theHour,
- Standard_Integer& theDay,
- Standard_Integer& theMonth,
- Standard_Integer& theYear) const;
-
-Standard_EXPORT void ChangeCreatorName(const TCollection_ExtendedString& theUserName);
-
-Standard_EXPORT void SetCreationMode(const Standard_Integer theMode);
-Standard_EXPORT Standard_Integer GetCreationMode() const;
-
-Standard_EXPORT void SetModified(const Standard_Integer theModified);
-Standard_EXPORT Standard_Boolean IsModified() const;
-Standard_EXPORT Standard_Integer GetModified() const;
-
-Standard_EXPORT void SetLocked(const Standard_Boolean theLocked);
-Standard_EXPORT Standard_Boolean IsLocked() const;
-Standard_EXPORT Standard_Boolean IsLockChanged(const Standard_Boolean theErase);
-
-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;
-
-private:
-
-Handle_TColStd_HSequenceOfExtendedString myUserName;
-Handle_TColStd_HSequenceOfInteger myMinute;
-Handle_TColStd_HSequenceOfInteger myHour;
-Handle_TColStd_HSequenceOfInteger myDay;
-Handle_TColStd_HSequenceOfInteger myMonth;
-Handle_TColStd_HSequenceOfInteger myYear;
-Standard_Integer myMode;
-Standard_Integer myModified;
-Standard_Boolean myLocked;
-Standard_Boolean myLockChanged;
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeStudyProperties )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTableOfInteger.cxx
-// Author : Michael Ponikarov
-// Module : SALOME
-
-#include <SALOMEDSImpl_AttributeTableOfInteger.hxx>
-#include <Standard_Failure.hxx>
-#include <TColStd_DataMapIteratorOfDataMapOfIntegerInteger.hxx>
-#include <Standard_GUID.hxx>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfInteger, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTableOfInteger, SALOMEDSImpl_GenericAttribute )
-
-#define SEPARATOR '\1'
-
-static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
-{
- TCollection_ExtendedString aString(theString);
- int aPos = aString.Search(SEPARATOR);
- if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
- return aString.Split(aPos);
-}
-
-static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
-{
- TCollection_ExtendedString aString(theString);
- int aPos = aString.Search(SEPARATOR);
- if(aPos < 1) return aString;
- if(aPos == 1) return TCollection_ExtendedString();
- aString.Split(aPos-1);
- return aString;
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeTableOfInteger::GetID()
-{
- static Standard_GUID SALOMEDSImpl_AttributeTableOfIntegerID ("128371A0-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeTableOfIntegerID;
-}
-
-Handle(SALOMEDSImpl_AttributeTableOfInteger) SALOMEDSImpl_AttributeTableOfInteger::Set(const TDF_Label& label)
-{
- Handle(SALOMEDSImpl_AttributeTableOfInteger) anAttr;
- if (!label.FindAttribute(SALOMEDSImpl_AttributeTableOfInteger::GetID(),anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeTableOfInteger();
- label.AddAttribute(anAttr);
- }
- return anAttr;
-}
-
-SALOMEDSImpl_AttributeTableOfInteger::SALOMEDSImpl_AttributeTableOfInteger()
-:SALOMEDSImpl_GenericAttribute("AttributeTableOfInteger")
-{
- myRows = new TColStd_HSequenceOfExtendedString();
- myCols = new TColStd_HSequenceOfExtendedString();
- myNbRows = 0;
- myNbColumns = 0;
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetNbColumns(const Standard_Integer theNbColumns)
-{
- CheckLocked();
- Backup();
-
- TColStd_DataMapOfIntegerInteger aMap;
- aMap = myTable;
- myTable.Clear();
-
- TColStd_DataMapIteratorOfDataMapOfIntegerInteger anIterator(aMap);
- for(; anIterator.More(); anIterator.Next()) {
- int aRow = (int)(anIterator.Key()/myNbColumns) + 1;
- int aCol = (int)(anIterator.Key() - myNbColumns*(aRow-1));
- if(aCol == 0) { aCol = myNbColumns; aRow--; }
- if(aCol > theNbColumns) continue;
- int aKey = (aRow-1)*theNbColumns+aCol;
- myTable.Bind(aKey, anIterator.Value());
- }
-
- myNbColumns = theNbColumns;
-
- while (myCols->Length() < myNbColumns) { // append empty columns titles
- myCols->Append(TCollection_ExtendedString(""));
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetTitle(const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- myTitle = theTitle;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetTitle() const
-{
- return myTitle;
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetRowData(const Standard_Integer theRow,
- const Handle(TColStd_HSequenceOfInteger)& theData)
-{
- CheckLocked();
- if(theData->Length() > myNbColumns) SetNbColumns(theData->Length());
-
- Backup();
-
- while (myRows->Length() < theRow) { // append new row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
-
- Standard_Integer i, aShift = (theRow-1)*myNbColumns, aLength = theData->Length();
- for(i = 1; i <= aLength; i++) {
- myTable.Bind(aShift + i, theData->Value(i));
- }
-
- if(theRow > myNbRows) myNbRows = theRow;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfInteger) SALOMEDSImpl_AttributeTableOfInteger::GetRowData(const Standard_Integer theRow)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger();
- Standard_Integer i, aShift = (theRow-1)*myNbColumns;
- for(i = 1; i <= myNbColumns; i++) {
- if(myTable.IsBound(aShift+i))
- aSeq->Append(myTable.Find(aShift+i));
- else
- aSeq->Append(0);
- }
-
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetRowTitle(const Standard_Integer theRow,
- const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- TCollection_ExtendedString aTitle(theTitle), aUnit = GetRowUnit(theRow);
- if(aUnit.Length()>0) {
- aTitle += SEPARATOR;
- aTitle += aUnit;
- }
- myRows->SetValue(theRow, aTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetRowUnit(const Standard_Integer theRow,
- const TCollection_ExtendedString& theUnit)
-{
- CheckLocked();
- Backup();
- TCollection_ExtendedString aTitle = GetRowTitle(theRow);
- aTitle += SEPARATOR;
- aTitle += theUnit;
-
- myRows->SetValue(theRow, aTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits)
-{
- if (theUnits->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
- int aLength = theUnits->Length(), i;
- for(i = 1; i <= aLength; i++) SetRowUnit(i, theUnits->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfInteger::GetRowUnits()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myRows->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(getUnit(myRows->Value(i)));
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
-{
- if (theTitles->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
- int aLength = theTitles->Length(), i;
- for(i = 1; i <= aLength; i++) SetRowTitle(i, theTitles->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfInteger::GetRowTitles()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myRows->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(getTitle(myRows->Value(i)));
- return aSeq;
-}
-
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetRowTitle(const Standard_Integer theRow) const
-{
- return getTitle(myRows->Value(theRow));
-}
-
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetRowUnit(const Standard_Integer theRow) const
-{
- return getUnit(myRows->Value(theRow));
-}
-
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetColumnData(const Standard_Integer theColumn,
- const Handle(TColStd_HSequenceOfInteger)& theData)
-{
- CheckLocked();
- if(theColumn > myNbColumns) SetNbColumns(theColumn);
-
- Backup();
-
- Standard_Integer i, aLength = theData->Length();
- for(i = 1; i <= aLength; i++) {
- myTable.Bind(myNbColumns*(i-1)+theColumn, theData->Value(i));
- }
-
- if(aLength > myNbRows) {
- myNbRows = aLength;
- while (myRows->Length() < myNbRows) { // append empty row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-Handle(TColStd_HSequenceOfInteger) SALOMEDSImpl_AttributeTableOfInteger::GetColumnData(const Standard_Integer theColumn)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
-
- Standard_Integer i, anIndex;
- for(i = 1; i <= myNbRows; i++) {
- anIndex = myNbColumns*(i-1) + theColumn;
- if(myTable.IsBound(anIndex))
- aSeq->Append(myTable.Find(anIndex));
- else
- aSeq->Append(0);
- }
-
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetColumnTitle(const Standard_Integer theColumn,
- const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- while(myCols->Length() < theColumn) myCols->Append(TCollection_ExtendedString(""));
- myCols->SetValue(theColumn,theTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetColumnTitle(const Standard_Integer theColumn) const
-{
- if(myCols.IsNull()) return "";
- if(myCols->Length() < theColumn) return "";
- return myCols->Value(theColumn);
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
-{
- if (theTitles->Length() != myNbColumns) Standard_Failure::Raise("Invalid number of columns");
- int aLength = theTitles->Length(), i;
- for(i = 1; i <= aLength; i++) myCols->SetValue(i, theTitles->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfInteger::GetColumnTitles()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myCols->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(myCols->Value(i));
- return aSeq;
-}
-
-Standard_Integer SALOMEDSImpl_AttributeTableOfInteger::GetNbRows() const
-{
- return myNbRows;
-}
-
-Standard_Integer SALOMEDSImpl_AttributeTableOfInteger::GetNbColumns() const
-{
- return myNbColumns;
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::PutValue(const Standard_Integer theValue,
- const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- CheckLocked();
- if(theColumn > myNbColumns) SetNbColumns(theColumn);
-
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- myTable.Bind(anIndex, theValue);
-
- if(theRow > myNbRows) {
- while (myRows->Length() < theRow) { // append empty row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
- myNbRows = theRow;
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Standard_Boolean SALOMEDSImpl_AttributeTableOfInteger::HasValue(const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- if(theRow > myNbRows || theRow < 1) return Standard_False;
- if(theColumn > myNbColumns || theColumn < 1) return Standard_False;
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- return myTable.IsBound(anIndex);
-}
-
-Standard_Integer SALOMEDSImpl_AttributeTableOfInteger::GetValue(const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- if(theRow > myNbRows || theRow < 1) Standard_Failure::Raise("Invalid cell index");
- if(theColumn > myNbColumns || theColumn < 1) Standard_Failure::Raise("Invalid cell index");
-
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- if(myTable.IsBound(anIndex)) return myTable.Find(anIndex);
-
- Standard_Failure::Raise("Invalid cell index");
- return 0;
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeTableOfInteger::ID() const
-{
- return GetID();
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::Restore(const Handle(TDF_Attribute)& with)
-{
- Standard_Integer anIndex;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(with);
-
- myTable.Clear();
- myCols->Clear();
- myRows->Clear();
-
- myTable = aTable->myTable;
- myNbRows = aTable->myNbRows;
- myNbColumns = aTable->myNbColumns;
- myTitle = aTable->myTitle;
-
- for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
- myRows->Append(aTable->GetRowTitle(anIndex));
-
- for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++)
- myCols->Append(aTable->GetColumnTitle(anIndex));
-}
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeTableOfInteger::NewEmpty() const
-{
- return new SALOMEDSImpl_AttributeTableOfInteger();
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::Paste(const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)&) const
-{
- Standard_Integer anIndex;
- Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(into);
-
- aTable->myTable.Clear();
- aTable->myCols->Clear();
- aTable->myRows->Clear();
-
- aTable->myTable = myTable;
- aTable->myTitle = myTitle;
- aTable->myNbRows = myNbRows;
- aTable->myNbColumns = myNbColumns;
-
- for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
- aTable->myRows->Append(GetRowTitle(anIndex));
- for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++)
- aTable->myCols->Append(GetColumnTitle(anIndex));
-}
-
-
-Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfInteger::GetSetRowIndices(const Standard_Integer theRow)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
-
- Standard_Integer i, aShift = myNbColumns*(theRow-1);
- for(i = 1; i <= myNbColumns; i++) {
- if(myTable.IsBound(aShift + i)) aSeq->Append(i);
- }
-
- return aSeq;
-}
-
-Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfInteger::GetSetColumnIndices(const Standard_Integer theColumn)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
-
- Standard_Integer i, anIndex;
- for(i = 1; i <= myNbRows; i++) {
- anIndex = myNbColumns*(i-1)+theColumn;
- if(myTable.IsBound(anIndex)) aSeq->Append(i);
- }
-
- return aSeq;
-}
-
-
-void SALOMEDSImpl_AttributeTableOfInteger::ConvertToString(ostrstream& theStream)
-{
- int i, j, l;
-
- theStream.precision(64);
-
- //Title
- l = myTitle.Length();
- theStream << l << "\n";
- for(i=1; i<=l; i++)
- theStream << myTitle.Value(i) << "\n";
-
- //Nb rows
- theStream << myNbRows << "\n";
-
- //Rows titles
- for(i=1; i<=myNbRows; i++) {
- l = myRows->Value(i).Length();
- theStream << l << "\n";
- for(j=1; j<=l; j++)
- theStream << myRows->Value(i).Value(j) << "\n";
- }
-
- //Nb columns
- theStream << myNbColumns << "\n";
-
- //Columns titles
- for(i=1; i<=myNbColumns; i++) {
- l = myCols->Value(i).Length();
- theStream << l << "\n";
- for(j=1; j<=l; j++)
- theStream << myCols->Value(i).Value(j) << "\n";
- }
-
- //Store the table values
- l = myTable.Extent();
- theStream << l << "\n";
- TColStd_DataMapIteratorOfDataMapOfIntegerInteger anIterator(myTable);
- for(; anIterator.More(); anIterator.Next()) {
- theStream << anIterator.Key() << "\n";
- theStream << anIterator.Value() << "\n";
- }
-
- return;
-}
-
-bool SALOMEDSImpl_AttributeTableOfInteger::RestoreFromString(istrstream& theStream)
-{
- Backup();
-
- int i, j, l;
-
- Standard_ExtCharacter anExtChar;
- TCollection_ExtendedString aStr;
-
- //Title
- theStream >> l;
-
- myTitle = TCollection_ExtendedString(l, 0);
- for(i=1; i<=l; i++) {
- theStream >> anExtChar;
- myTitle.SetValue(i, anExtChar);
- }
-
- //Nb rows
- theStream >> myNbRows;
-
- //Rows titles
- myRows->Clear();
- for(i=1; i<=myNbRows; i++) {
- theStream >> l;
- aStr = TCollection_ExtendedString(l,0);
- for(j=1; j<=l; j++) {
- theStream >> anExtChar;
- aStr.SetValue(j, anExtChar);
- }
- myRows->Append(aStr);
- }
-
- //Nb columns
- theStream >> myNbColumns;
-
- //Columns titles
- myCols->Clear();
- for(i=1; i<=myNbColumns; i++) {
- theStream >> l;
- aStr = TCollection_ExtendedString(l,0);
- for(j=1; j<=l; j++) {
- theStream >> anExtChar;
- aStr.SetValue(j, anExtChar);
- }
- myCols->Append(aStr);
- }
-
- //Restore the table values
- theStream >> l;
- myTable.Clear();
- for(i=1; i<=l; i++) {
- int aKey, aValue;
- theStream >> aKey;
- theStream >> aValue;
- myTable.Bind(aKey, aValue);
- }
-
- return true;
-}
-
-
-TCollection_AsciiString SALOMEDSImpl_AttributeTableOfInteger::Save()
-{
- ostrstream ostr;
- ConvertToString(ostr);
- TCollection_AsciiString aString((char*)ostr.rdbuf()->str());
- return aString;
-}
-
-void SALOMEDSImpl_AttributeTableOfInteger::Load(const TCollection_AsciiString& value)
-{
- istrstream aStream(value.ToCString(), strlen(value.ToCString()));
- RestoreFromString(aStream);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTableOfReal.cxx
-// Author : Michael Ponikarov
-// Module : SALOME
-
-#include <SALOMEDSImpl_AttributeTableOfReal.hxx>
-#include <Standard_Failure.hxx>
-#include <TColStd_DataMapIteratorOfDataMapOfIntegerReal.hxx>
-#include <Standard_GUID.hxx>
-#include <stdio.h>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfReal, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTableOfReal, SALOMEDSImpl_GenericAttribute )
-
-#define SEPARATOR '\1'
-
-static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
-{
- TCollection_ExtendedString aString(theString);
- int aPos = aString.Search(SEPARATOR);
- if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
- return aString.Split(aPos);
-}
-
-static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
-{
- TCollection_ExtendedString aString(theString);
- int aPos = aString.Search(SEPARATOR);
- if(aPos < 1) return aString;
- if(aPos == 1) return TCollection_ExtendedString();
- aString.Split(aPos-1);
- return aString;
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeTableOfReal::GetID()
-{
- static Standard_GUID SALOMEDSImpl_AttributeTableOfRealID ("128371A1-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeTableOfRealID;
-}
-
-Handle(SALOMEDSImpl_AttributeTableOfReal) SALOMEDSImpl_AttributeTableOfReal::Set(const TDF_Label& label)
-{
- Handle(SALOMEDSImpl_AttributeTableOfReal) anAttr;
- if (!label.FindAttribute(SALOMEDSImpl_AttributeTableOfReal::GetID(),anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeTableOfReal();
- label.AddAttribute(anAttr);
- }
- return anAttr;
-}
-
-SALOMEDSImpl_AttributeTableOfReal::SALOMEDSImpl_AttributeTableOfReal()
-:SALOMEDSImpl_GenericAttribute("AttributeTableOfReal")
-{
- myRows = new TColStd_HSequenceOfExtendedString();
- myCols = new TColStd_HSequenceOfExtendedString();
- myNbRows = 0;
- myNbColumns = 0;
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetNbColumns(const Standard_Integer theNbColumns)
-{
- CheckLocked();
- Backup();
-
- TColStd_DataMapOfIntegerReal aMap;
- aMap = myTable;
- myTable.Clear();
-
- TColStd_DataMapIteratorOfDataMapOfIntegerReal anIterator(aMap);
- for(; anIterator.More(); anIterator.Next()) {
- int aRow = (int)(anIterator.Key()/myNbColumns) + 1;
- int aCol = (int)(anIterator.Key() - myNbColumns*(aRow-1));
- if(aCol == 0) { aCol = myNbColumns; aRow--; }
- if(aCol > theNbColumns) continue;
- int aKey = (aRow-1)*theNbColumns+aCol;
- myTable.Bind(aKey, anIterator.Value());
- }
-
- myNbColumns = theNbColumns;
-
- while (myCols->Length() < myNbColumns) { // append empty columns titles
- myCols->Append(TCollection_ExtendedString(""));
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetTitle(const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- myTitle = theTitle;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetTitle() const
-{
- return myTitle;
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetRowData(const Standard_Integer theRow,
- const Handle(TColStd_HSequenceOfReal)& theData)
-{
- CheckLocked();
- if(theData->Length() > myNbColumns) SetNbColumns(theData->Length());
-
- Backup();
-
- while (myRows->Length() < theRow) { // append new row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
-
- Standard_Integer i, aShift = (theRow-1)*myNbColumns, aLength = theData->Length();
- for(i = 1; i <= aLength; i++) {
- myTable.Bind(aShift + i, theData->Value(i));
- }
-
- if(theRow > myNbRows) myNbRows = theRow;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfReal) SALOMEDSImpl_AttributeTableOfReal::GetRowData(const Standard_Integer theRow)
-{
- Handle(TColStd_HSequenceOfReal) aSeq = new TColStd_HSequenceOfReal();
- Standard_Integer i, aShift = (theRow-1)*myNbColumns;
- for(i = 1; i <= myNbColumns; i++) {
- if(myTable.IsBound(aShift+i))
- aSeq->Append(myTable.Find(aShift+i));
- else
- aSeq->Append(0.);
- }
-
- return aSeq;
-}
-
-
-void SALOMEDSImpl_AttributeTableOfReal::SetRowTitle(const Standard_Integer theRow,
- const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- TCollection_ExtendedString aTitle(theTitle), aUnit = GetRowUnit(theRow);
- if(aUnit.Length()>0) {
- aTitle += SEPARATOR;
- aTitle += aUnit;
- }
- myRows->SetValue(theRow, aTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetRowUnit(const Standard_Integer theRow,
- const TCollection_ExtendedString& theUnit)
-{
- CheckLocked();
- Backup();
- TCollection_ExtendedString aTitle = GetRowTitle(theRow);
- aTitle += SEPARATOR;
- aTitle += theUnit;
-
- myRows->SetValue(theRow, aTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits)
-{
- if (theUnits->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
- int aLength = theUnits->Length(), i;
- for(i = 1; i <= aLength; i++) SetRowUnit(i, theUnits->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfReal::GetRowUnits()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myRows->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(getUnit(myRows->Value(i)));
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
-{
- if (theTitles->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
- int aLength = theTitles->Length(), i;
- for(i = 1; i <= aLength; i++) SetRowTitle(i, theTitles->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfReal::GetRowTitles()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myRows->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(getTitle(myRows->Value(i)));
- return aSeq;
-}
-
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetRowTitle(const Standard_Integer theRow) const
-{
- return getTitle(myRows->Value(theRow));
-}
-
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetRowUnit(const Standard_Integer theRow) const
-{
- return getUnit(myRows->Value(theRow));
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetColumnData(const Standard_Integer theColumn,
- const Handle(TColStd_HSequenceOfReal)& theData)
-{
- CheckLocked();
- if(theColumn > myNbColumns) SetNbColumns(theColumn);
-
- Backup();
-
- Standard_Integer i, aLength = theData->Length();
- for(i = 1; i <= aLength; i++) {
- myTable.Bind(myNbColumns*(i-1)+theColumn, theData->Value(i));
- }
-
- if(aLength > myNbRows) {
- myNbRows = aLength;
- while (myRows->Length() < myNbRows) { // append empty row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-Handle(TColStd_HSequenceOfReal) SALOMEDSImpl_AttributeTableOfReal::GetColumnData(const Standard_Integer theColumn)
-{
- Handle(TColStd_HSequenceOfReal) aSeq = new TColStd_HSequenceOfReal;
-
- Standard_Integer i, anIndex;
- for(i = 1; i <= myNbRows; i++) {
- anIndex = myNbColumns*(i-1) + theColumn;
- if(myTable.IsBound(anIndex))
- aSeq->Append(myTable.Find(anIndex));
- else
- aSeq->Append(0.);
- }
-
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetColumnTitle(const Standard_Integer theColumn,
- const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- while(myCols->Length() < theColumn) myCols->Append(TCollection_ExtendedString(""));
- myCols->SetValue(theColumn,theTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetColumnTitle(const Standard_Integer theColumn) const
-{
- if(myCols.IsNull()) return "";
- if(myCols->Length() < theColumn) return "";
- return myCols->Value(theColumn);
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
-{
- if (theTitles->Length() != myNbColumns) Standard_Failure::Raise("Invalid number of columns");
- int aLength = theTitles->Length(), i;
- for(i = 1; i <= aLength; i++) myCols->SetValue(i, theTitles->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfReal::GetColumnTitles()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myCols->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(myCols->Value(i));
- return aSeq;
-}
-
-Standard_Integer SALOMEDSImpl_AttributeTableOfReal::GetNbRows() const
-{
- return myNbRows;
-}
-
-Standard_Integer SALOMEDSImpl_AttributeTableOfReal::GetNbColumns() const
-{
- return myNbColumns;
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::PutValue(const Standard_Real theValue,
- const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- CheckLocked();
- if(theColumn > myNbColumns) SetNbColumns(theColumn);
-
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- myTable.Bind(anIndex, theValue);
-
- if(theRow > myNbRows) {
- while (myRows->Length() < theRow) { // append empty row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
- myNbRows = theRow;
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Standard_Boolean SALOMEDSImpl_AttributeTableOfReal::HasValue(const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- if(theRow > myNbRows || theRow < 1) return Standard_False;
- if(theColumn > myNbColumns || theColumn < 1) return Standard_False;
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- return myTable.IsBound(anIndex);
-}
-
-Standard_Real SALOMEDSImpl_AttributeTableOfReal::GetValue(const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- if(theRow > myNbRows || theRow < 1) Standard_Failure::Raise("Invalid cell index");
- if(theColumn > myNbColumns || theColumn < 1) Standard_Failure::Raise("Invalid cell index");
-
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- if(myTable.IsBound(anIndex)) return myTable.Find(anIndex);
-
- Standard_Failure::Raise("Invalid cell index");
- return 0.;
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeTableOfReal::ID() const
-{
- return GetID();
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::Restore(const Handle(TDF_Attribute)& with)
-{
- Standard_Integer anIndex;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(with);
-
- myTable.Clear();
- myCols->Clear();
- myRows->Clear();
-
- myTable = aTable->myTable;
- myNbRows = aTable->myNbRows;
- myNbColumns = aTable->myNbColumns;
- myTitle = aTable->myTitle;
-
- for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
- myRows->Append(aTable->GetRowTitle(anIndex));
-
- for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++)
- myCols->Append(aTable->GetColumnTitle(anIndex));
-}
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeTableOfReal::NewEmpty() const
-{
- return new SALOMEDSImpl_AttributeTableOfReal();
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::Paste(const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)&) const
-{
- Standard_Integer anIndex;
- Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(into);
-
- aTable->myTable.Clear();
- aTable->myCols->Clear();
- aTable->myRows->Clear();
-
- aTable->myTable = myTable;
- aTable->myTitle = myTitle;
- aTable->myNbRows = myNbRows;
- aTable->myNbColumns = myNbColumns;
-
- for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
- aTable->myRows->Append(GetRowTitle(anIndex));
- for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++)
- aTable->myCols->Append(GetColumnTitle(anIndex));
-}
-
-
-Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfReal::GetSetRowIndices(const Standard_Integer theRow)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
-
- Standard_Integer i, aShift = myNbColumns*(theRow-1);
- for(i = 1; i <= myNbColumns; i++) {
- if(myTable.IsBound(aShift + i)) aSeq->Append(i);
- }
-
- return aSeq;
-}
-
-Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfReal::GetSetColumnIndices(const Standard_Integer theColumn)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
-
- Standard_Integer i, anIndex;
- for(i = 1; i <= myNbRows; i++) {
- anIndex = myNbColumns*(i-1)+theColumn;
- if(myTable.IsBound(anIndex)) aSeq->Append(i);
- }
-
- return aSeq;
-}
-
-
-
-void SALOMEDSImpl_AttributeTableOfReal::ConvertToString(ostrstream& theStream)
-{
- int i, j, l;
-
-
- //Title
- l = myTitle.Length();
- theStream << l << "\n";
- for(i=1; i<=l; i++)
- theStream << myTitle.Value(i) << "\n";
-
- //Nb rows
- theStream << myNbRows << "\n";
-
- //Rows titles
- for(i=1; i<=myNbRows; i++) {
- l = myRows->Value(i).Length();
- theStream << l << "\n";
- for(j=1; j<=l; j++)
- theStream << myRows->Value(i).Value(j) << "\n";
- }
-
- //Nb columns
- theStream << myNbColumns << "\n";
-
- //Columns titles
- for(i=1; i<=myNbColumns; i++) {
- l = myCols->Value(i).Length();
- theStream << l << "\n";
- for(j=1; j<=l; j++)
- theStream << myCols->Value(i).Value(j) << "\n";
- }
-
- //Store the table values
- l = myTable.Extent();
- theStream << l << "\n";
- char *aBuffer = new char[128];
- TColStd_DataMapIteratorOfDataMapOfIntegerReal anIterator(myTable);
- for(; anIterator.More(); anIterator.Next()) {
- theStream << anIterator.Key() << "\n";
- sprintf(aBuffer, "%.64e", anIterator.Value());
- theStream << aBuffer << "\n";
- }
-
- delete []aBuffer;
-
- return;
-}
-
-bool SALOMEDSImpl_AttributeTableOfReal::RestoreFromString(istrstream& theStream)
-{
- Backup();
-
- int i, j, l;
-
- Standard_ExtCharacter anExtChar;
- TCollection_ExtendedString aStr;
-
- //Title
- theStream >> l;
-
- myTitle = TCollection_ExtendedString(l, 0);
- for(i=1; i<=l; i++) {
- theStream >> anExtChar;
- myTitle.SetValue(i, anExtChar);
- }
-
- //Nb rows
- theStream >> myNbRows;
-
- //Rows titles
- myRows->Clear();
- for(i=1; i<=myNbRows; i++) {
- theStream >> l;
- aStr = TCollection_ExtendedString(l,0);
- for(j=1; j<=l; j++) {
- theStream >> anExtChar;
- aStr.SetValue(j, anExtChar);
- }
- myRows->Append(aStr);
- }
-
- //Nb columns
- theStream >> myNbColumns;
-
- //Columns titles
- myCols->Clear();
- for(i=1; i<=myNbColumns; i++) {
- theStream >> l;
- aStr = TCollection_ExtendedString(l,0);
- for(j=1; j<=l; j++) {
- theStream >> anExtChar;
- aStr.SetValue(j, anExtChar);
- }
- myCols->Append(aStr);
- }
-
- //Restore the table values
- theStream >> l;
- myTable.Clear();
- for(i=1; i<=l; i++) {
- Standard_Integer aKey;
- Standard_Real aValue;
- theStream >> aKey;
- theStream >> aValue;
- myTable.Bind(aKey, aValue);
- }
-
- return true;
-}
-
-TCollection_AsciiString SALOMEDSImpl_AttributeTableOfReal::Save()
-{
- ostrstream ostr;
- ConvertToString(ostr);
- TCollection_AsciiString aString((char*)ostr.rdbuf()->str());
- return aString;
-}
-
-void SALOMEDSImpl_AttributeTableOfReal::Load(const TCollection_AsciiString& value)
-{
- istrstream aStream(value.ToCString(), strlen(value.ToCString()));
- RestoreFromString(aStream);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTableOfString.cxx
-// Author : Sergey Ruin
-// Module : SALOME
-
-#include <SALOMEDSImpl_AttributeTableOfString.hxx>
-#include <Standard_Failure.hxx>
-#include <Standard_GUID.hxx>
-#include <stdio.h>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfString, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTableOfString, SALOMEDSImpl_GenericAttribute )
-
-typedef NCollection_DataMap<Standard_Integer, TCollection_ExtendedString>::Iterator DataMapIterator;
-
-#define SEPARATOR '\1'
-
-static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
-{
- TCollection_ExtendedString aString(theString);
- int aPos = aString.Search(SEPARATOR);
- if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
- return aString.Split(aPos);
-}
-
-static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
-{
- TCollection_ExtendedString aString(theString);
- int aPos = aString.Search(SEPARATOR);
- if(aPos < 1) return aString;
- if(aPos == 1) return TCollection_ExtendedString();
- aString.Split(aPos-1);
- return aString;
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeTableOfString::GetID()
-{
- static Standard_GUID SALOMEDSImpl_AttributeTableOfStringID ("128371A4-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeTableOfStringID;
-}
-
-Handle(SALOMEDSImpl_AttributeTableOfString) SALOMEDSImpl_AttributeTableOfString::Set(const TDF_Label& label)
-{
- Handle(SALOMEDSImpl_AttributeTableOfString) anAttr;
- if (!label.FindAttribute(SALOMEDSImpl_AttributeTableOfString::GetID(),anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeTableOfString();
- label.AddAttribute(anAttr);
- }
- return anAttr;
-}
-
-SALOMEDSImpl_AttributeTableOfString::SALOMEDSImpl_AttributeTableOfString()
-:SALOMEDSImpl_GenericAttribute("AttributeTableOfString")
-{
- myRows = new TColStd_HSequenceOfExtendedString();
- myCols = new TColStd_HSequenceOfExtendedString();
- myNbRows = 0;
- myNbColumns = 0;
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetNbColumns(const Standard_Integer theNbColumns)
-{
- CheckLocked();
- Backup();
-
- DataMapOfIntegerString aMap;
- aMap = myTable;
- myTable.Clear();
-
- DataMapIterator anIterator(aMap);
- for(; anIterator.More(); anIterator.Next()) {
- int aRow = (int)(anIterator.Key()/myNbColumns) + 1;
- int aCol = (int)(anIterator.Key() - myNbColumns*(aRow-1));
- if(aCol == 0) { aCol = myNbColumns; aRow--; }
- if(aCol > theNbColumns) continue;
- int aKey = (aRow-1)*theNbColumns+aCol;
- myTable.Bind(aKey, anIterator.Value());
- }
-
- myNbColumns = theNbColumns;
-
- while (myCols->Length() < myNbColumns) { // append empty columns titles
- myCols->Append(TCollection_ExtendedString(""));
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetRowTitle(const Standard_Integer theRow,
- const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- TCollection_ExtendedString aTitle(theTitle), aUnit = GetRowUnit(theRow);
- if(aUnit.Length()>0) {
- aTitle += SEPARATOR;
- aTitle += aUnit;
- }
- myRows->SetValue(theRow, aTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetRowUnit(const Standard_Integer theRow,
- const TCollection_ExtendedString& theUnit)
-{
- CheckLocked();
- Backup();
- TCollection_ExtendedString aTitle = GetRowTitle(theRow);
- aTitle += SEPARATOR;
- aTitle += theUnit;
-
- myRows->SetValue(theRow, aTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits)
-{
- if (theUnits->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
- int aLength = theUnits->Length(), i;
- for(i = 1; i <= aLength; i++) SetRowUnit(i, theUnits->Value(i));
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetRowUnits()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myRows->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(getUnit(myRows->Value(i)));
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
-{
- if (theTitles->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
- int aLength = theTitles->Length(), i;
- for(i = 1; i <= aLength; i++) SetRowTitle(i, theTitles->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetRowTitles()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myRows->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(getTitle(myRows->Value(i)));
- return aSeq;
-}
-
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetRowTitle(const Standard_Integer theRow) const
-{
- return getTitle(myRows->Value(theRow));
-}
-
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetRowUnit(const Standard_Integer theRow) const
-{
- return getUnit(myRows->Value(theRow));
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetRowData(const Standard_Integer theRow,
- const Handle(TColStd_HSequenceOfExtendedString)& theData)
-{
- CheckLocked();
- if(theData->Length() > myNbColumns) SetNbColumns(theData->Length());
-
- Backup();
-
- while (myRows->Length() < theRow) { // append new row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
-
- Standard_Integer i, aShift = (theRow-1)*myNbColumns, aLength = theData->Length();
- for(i = 1; i <= aLength; i++) {
- myTable.Bind(aShift + i, theData->Value(i));
- }
-
- if(theRow > myNbRows) myNbRows = theRow;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetTitle(const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- myTitle = theTitle;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetTitle() const
-{
- return myTitle;
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetRowData(const Standard_Integer theRow)
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString();
- Standard_Integer i, aShift = (theRow-1)*myNbColumns;
- for(i = 1; i <= myNbColumns; i++) {
- if(myTable.IsBound(aShift+i))
- aSeq->Append(myTable.Find(aShift+i));
- else
- aSeq->Append(0.);
- }
-
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetColumnData(const Standard_Integer theColumn,
- const Handle(TColStd_HSequenceOfExtendedString)& theData)
-{
- CheckLocked();
- if(theColumn > myNbColumns) SetNbColumns(theColumn);
-
- Backup();
-
- Standard_Integer i, aLength = theData->Length();
- for(i = 1; i <= aLength; i++) {
- myTable.Bind(myNbColumns*(i-1)+theColumn, theData->Value(i));
- }
-
- if(aLength > myNbRows) {
- myNbRows = aLength;
- while (myRows->Length() < myNbRows) { // append empty row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetColumnData(const Standard_Integer theColumn)
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
-
- Standard_Integer i, anIndex;
- for(i = 1; i <= myNbRows; i++) {
- anIndex = myNbColumns*(i-1) + theColumn;
- if(myTable.IsBound(anIndex))
- aSeq->Append(myTable.Find(anIndex));
- else
- aSeq->Append(0.);
- }
-
- return aSeq;
-}
-
-void SALOMEDSImpl_AttributeTableOfString::SetColumnTitle(const Standard_Integer theColumn,
- const TCollection_ExtendedString& theTitle)
-{
- CheckLocked();
- Backup();
- while(myCols->Length() < theColumn) myCols->Append(TCollection_ExtendedString(""));
- myCols->SetValue(theColumn,theTitle);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetColumnTitle(const Standard_Integer theColumn) const
-{
- if(myCols.IsNull()) return "";
- if(myCols->Length() < theColumn) return "";
- return myCols->Value(theColumn);
-}
-
-
-void SALOMEDSImpl_AttributeTableOfString::SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
-{
- if (theTitles->Length() != myNbColumns) Standard_Failure::Raise("Invalid number of columns");
- int aLength = theTitles->Length(), i;
- for(i = 1; i <= aLength; i++) myCols->SetValue(i, theTitles->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetColumnTitles()
-{
- Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
- int aLength = myCols->Length(), i;
- for(i=1; i<=aLength; i++) aSeq->Append(myCols->Value(i));
- return aSeq;
-}
-
-
-Standard_Integer SALOMEDSImpl_AttributeTableOfString::GetNbRows() const
-{
- return myNbRows;
-}
-
-Standard_Integer SALOMEDSImpl_AttributeTableOfString::GetNbColumns() const
-{
- return myNbColumns;
-}
-
-void SALOMEDSImpl_AttributeTableOfString::PutValue(const TCollection_ExtendedString& theValue,
- const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- CheckLocked();
- if(theColumn > myNbColumns) SetNbColumns(theColumn);
-
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- myTable.Bind(anIndex, theValue);
-
- if(theRow > myNbRows) {
- while (myRows->Length() < theRow) { // append empty row titles
- myRows->Append(TCollection_ExtendedString(""));
- }
- myNbRows = theRow;
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-Standard_Boolean SALOMEDSImpl_AttributeTableOfString::HasValue(const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- if(theRow > myNbRows || theRow < 1) return Standard_False;
- if(theColumn > myNbColumns || theColumn < 1) return Standard_False;
-
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- return myTable.IsBound(anIndex);
-}
-
-TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetValue(const Standard_Integer theRow,
- const Standard_Integer theColumn)
-{
- if(theRow > myNbRows || theRow < 1) Standard_Failure::Raise("Invalid cell index");
- if(theColumn > myNbColumns || theColumn < 1) Standard_Failure::Raise("Invalid cell index");
-
- Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
- if(myTable.IsBound(anIndex)) return myTable.Find(anIndex);
-
- Standard_Failure::Raise("Invalid cell index");
- return 0.;
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeTableOfString::ID() const
-{
- return GetID();
-}
-
-void SALOMEDSImpl_AttributeTableOfString::Restore(const Handle(TDF_Attribute)& with)
-{
- Standard_Integer anIndex;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(with);
-
- myTable.Clear();
- myCols->Clear();
- myRows->Clear();
-
- myTable = aTable->myTable;
- myNbRows = aTable->myNbRows;
- myNbColumns = aTable->myNbColumns;
- myTitle = aTable->myTitle;
-
- for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
- myRows->Append(aTable->GetRowTitle(anIndex));
-
- for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++)
- myCols->Append(aTable->GetColumnTitle(anIndex));
-}
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeTableOfString::NewEmpty() const
-{
- return new SALOMEDSImpl_AttributeTableOfString();
-}
-
-void SALOMEDSImpl_AttributeTableOfString::Paste(const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)&) const
-{
- Standard_Integer anIndex;
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(into);
-
- aTable->myTable.Clear();
- aTable->myCols->Clear();
- aTable->myRows->Clear();
-
- aTable->myTable = myTable;
- aTable->myTitle = myTitle;
- aTable->myNbRows = myNbRows;
- aTable->myNbColumns = myNbColumns;
-
- for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
- aTable->myRows->Append(GetRowTitle(anIndex));
- for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++)
- aTable->myCols->Append(GetColumnTitle(anIndex));
-}
-
-
-Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfString::GetSetRowIndices(const Standard_Integer theRow)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
-
- Standard_Integer i, aShift = myNbColumns*(theRow-1);
- for(i = 1; i <= myNbColumns; i++) {
- if(myTable.IsBound(aShift + i)) aSeq->Append(i);
- }
-
- return aSeq;
-}
-
-Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfString::GetSetColumnIndices(const Standard_Integer theColumn)
-{
- Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
-
- Standard_Integer i, anIndex;
- for(i = 1; i <= myNbRows; i++) {
- anIndex = myNbColumns*(i-1)+theColumn;
- if(myTable.IsBound(anIndex)) aSeq->Append(i);
- }
-
- return aSeq;
-}
-
-
-
-void SALOMEDSImpl_AttributeTableOfString::ConvertToString(ostrstream& theStream)
-{
- int i, j, l;
-
- //Title
- l = myTitle.Length();
- theStream << l << "\n";
- for(i=1; i<=l; i++)
- theStream << myTitle.Value(i) << "\n";
-
- //Nb rows
- theStream << myNbRows << "\n";
-
- //Rows titles
- for(i=1; i<=myNbRows; i++) {
- l = myRows->Value(i).Length();
- theStream << l << "\n";
- for(j=1; j<=l; j++)
- theStream << myRows->Value(i).Value(j) << "\n";
- }
-
- //Nb columns
- theStream << myNbColumns << "\n";
-
- //Columns titles
- for(i=1; i<=myNbColumns; i++) {
- l = myCols->Value(i).Length();
- theStream << l << "\n";
- for(j=1; j<=l; j++)
- theStream << myCols->Value(i).Value(j) << "\n";
- }
-
- //Store the table values
- l = myTable.Extent();
- theStream << l << "\n";
- DataMapIterator anIterator(myTable);
- for(; anIterator.More(); anIterator.Next()) {
- if (anIterator.Value().Length()) { // check empty string in the value table
- theStream << anIterator.Key() << "\n";
- unsigned long aValueSize = anIterator.Value().Length();
- theStream<<aValueSize << "\n";
- theStream.write((TCollection_AsciiString(anIterator.Value()).ToCString()),aValueSize);
- theStream<<"\n";
- } else { // write index only of kind: "0key"; "05", for an example
- theStream << "0" << anIterator.Key() << "\n";
- }
- }
- return;
-}
-
-bool SALOMEDSImpl_AttributeTableOfString::RestoreFromString(istrstream& theStream)
-{
- Backup();
-
- theStream.seekg(0, ios::end);
- long aSize = theStream.tellg();
- theStream.seekg(0, ios::beg);
-
- int i, j, l;
- char *aValueString = new char[aSize];
-
- Standard_ExtCharacter anExtChar;
- TCollection_ExtendedString aStr;
-
- //Title
- theStream >> l;
-
- myTitle = TCollection_ExtendedString(l, 0);
- for(i=1; i<=l; i++) {
- theStream >> anExtChar;
- myTitle.SetValue(i, anExtChar);
- }
-
- //Nb rows
- theStream >> myNbRows;
-
- //Rows titles
- myRows->Clear();
- for(i=1; i<=myNbRows; i++) {
- theStream >> l;
- aStr = TCollection_ExtendedString(l,0);
- for(j=1; j<=l; j++) {
- theStream >> anExtChar;
- aStr.SetValue(j, anExtChar);
- }
- myRows->Append(aStr);
- }
-
- //Nb columns
- theStream >> myNbColumns;
-
- //Columns titles
- myCols->Clear();
- for(i=1; i<=myNbColumns; i++) {
- theStream >> l;
- aStr = TCollection_ExtendedString(l,0);
- for(j=1; j<=l; j++) {
- theStream >> anExtChar;
- aStr.SetValue(j, anExtChar);
- }
- myCols->Append(aStr);
- }
-
- //Restore the table values
- TCollection_AsciiString aValue;
- theStream >> l;
- myTable.Clear();
- theStream.getline(aValueString,aSize,'\n');
- for(i=1; i<=l; i++) {
- Standard_Integer aKey;
-
- theStream.getline(aValueString,aSize,'\n');
- aValue = aValueString;
- aKey = aValue.IntegerValue();
- if (aValue.Value(1) == '0')
- aValue = "";
- else {
- unsigned long aValueSize;
- theStream >> aValueSize;
- theStream.read(aValueString, 1); // an '\n' omitting
- theStream.read(aValueString, aValueSize);
- theStream.read(aValueString, 1); // an '\n' omitting
- aValue = aValueString;
- }
- myTable.Bind(aKey, aValue);
- }
- delete(aValueString);
- return true;
-}
-
-TCollection_AsciiString SALOMEDSImpl_AttributeTableOfString::Save()
-{
- ostrstream ostr;
- ConvertToString(ostr);
- TCollection_AsciiString aString((char*)ostr.rdbuf()->str());
- return aString;
-}
-
-void SALOMEDSImpl_AttributeTableOfString::Load(const TCollection_AsciiString& value)
-{
- istrstream aStream(value.ToCString(), strlen(value.ToCString()));
- RestoreFromString(aStream);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTarget.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeTarget.hxx"
-#include "SALOMEDSImpl_AttributeReference.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include <TDF_RelocationTable.hxx>
-#include <TDF_ListIteratorOfAttributeList.hxx>
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTarget, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTarget, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeTarget::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeTargetID ("12837197-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeTargetID;
-}
-
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-
-Handle(SALOMEDSImpl_AttributeTarget) SALOMEDSImpl_AttributeTarget::Set (const TDF_Label& L)
-{
- Handle(SALOMEDSImpl_AttributeTarget) A;
- if (!L.FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),A)) {
- A = new SALOMEDSImpl_AttributeTarget();
- L.AddAttribute(A);
- }
- return A;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeTarget::SALOMEDSImpl_AttributeTarget()
-:SALOMEDSImpl_GenericAttribute("AttributeTarget")
-{
-}
-
-void SALOMEDSImpl_AttributeTarget::SetRelation(const TCollection_ExtendedString& theRelation)
-{
- CheckLocked();
- if(myRelation == theRelation) return;
-
- Backup();
- myRelation = theRelation;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : Add
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTarget::Add(const Handle(SALOMEDSImpl_SObject)& theSO)
-{
- Backup();
- TDF_Label aRefLabel = theSO->GetLabel();
- Handle(SALOMEDSImpl_AttributeReference) aReference;
- if (aRefLabel.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(),aReference)) {
- TDF_ListIteratorOfAttributeList anIter(GetVariables());
- for(;anIter.More();anIter.Next()) if(anIter.Value()->Label() == aRefLabel) return; //BugID: PAL6192
- GetVariables().Append(aReference);
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : Get
-//purpose :
-//=======================================================================
-Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_AttributeTarget::Get()
-{
- Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient;
-
- TDF_ListIteratorOfAttributeList anIter(GetVariables());
- for(;anIter.More();anIter.Next()) {
- const TDF_Label& aLabel = anIter.Value()->Label();
- aSeq->Append( SALOMEDSImpl_Study::SObject(aLabel));
- }
- return aSeq;
-}
-
-//=======================================================================
-//function : Remove
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTarget::Remove(const Handle(SALOMEDSImpl_SObject)& theSO)
-{
- Backup();
- TDF_Label aRefLabel = theSO->GetLabel();
- TDF_ListIteratorOfAttributeList anIter(GetVariables());
- for(;anIter.More();anIter.Next()) {
- if (anIter.Value()->Label() == aRefLabel) {
- GetVariables().Remove(anIter);
- return;
- }
- }
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeTarget::ID () const { return GetID(); }
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTarget::Restore(const Handle(TDF_Attribute)& With)
-{
- Handle(SALOMEDSImpl_AttributeTarget) REL = Handle(SALOMEDSImpl_AttributeTarget)::DownCast (With);
- myRelation = REL->GetRelation();
- Handle(SALOMEDSImpl_AttributeReference) V;
- myVariables.Clear();
- for (TDF_ListIteratorOfAttributeList it (REL->GetVariables()); it.More(); it.Next()) {
- V = Handle(SALOMEDSImpl_AttributeReference)::DownCast(it.Value());
- myVariables.Append(V);
- }
-}
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeTarget::NewEmpty() const
-{
- return new SALOMEDSImpl_AttributeTarget();
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTarget::Paste(const Handle(TDF_Attribute)& Into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeTarget) REL = Handle(SALOMEDSImpl_AttributeTarget)::DownCast (Into);
- REL->SetRelation(myRelation);
- Handle(SALOMEDSImpl_AttributeReference) V1,V2;
- for (TDF_ListIteratorOfAttributeList it (myVariables); it.More(); it.Next()) {
- V1 = Handle(SALOMEDSImpl_AttributeReference)::DownCast(it.Value());
- RT->HasRelocation (V1,V2);
- REL->GetVariables().Append(V2);
- }
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTarget.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeTarget_HeaderFile
-#define _SALOMEDSImpl_AttributeTarget_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_LabelList.hxx>
-#include <TDF_Label.hxx>
-#include <TDF_AttributeList.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTarget, SALOMEDSImpl_GenericAttribute )
-
-
-class SALOMEDSImpl_AttributeTarget : public SALOMEDSImpl_GenericAttribute
-{
-private:
-TCollection_ExtendedString myRelation;
-TDF_AttributeList myVariables;
-
-public:
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeTarget Set(const TDF_Label& label) ;
-Standard_EXPORT SALOMEDSImpl_AttributeTarget();
-Standard_EXPORT void SALOMEDSImpl_AttributeTarget::Add(const Handle(SALOMEDSImpl_SObject)& theSO);
-Standard_EXPORT Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_AttributeTarget::Get();
-Standard_EXPORT void SALOMEDSImpl_AttributeTarget::Remove(const Handle(SALOMEDSImpl_SObject)& theSO);
-Standard_EXPORT TCollection_ExtendedString GetRelation() { return myRelation; }
-Standard_EXPORT void SetRelation(const TCollection_ExtendedString& theRelation);
-Standard_EXPORT TDF_AttributeList& GetVariables() { return myVariables; }
-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_AttributeTarget() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTarget )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTextColor.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeTextColor.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextColor, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTextColor, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeTextColor::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeTextColorID ("12837189-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeTextColorID;
-}
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeTextColor::SALOMEDSImpl_AttributeTextColor()
-:SALOMEDSImpl_GenericAttribute("AttributeTextColor")
-{
- myValue = new TColStd_HArray1OfReal(1, 3, RealFirst());
-}
-
-//=======================================================================
-//function : SetTextColor
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTextColor::SetTextColor(const Standard_Real R, const Standard_Real G, const Standard_Real B)
-{
- CheckLocked();
- if(myValue.IsNull()) return;
- Backup();
-
- myValue->SetValue(1, R);
- myValue->SetValue(2, G);
- myValue->SetValue(3, B);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : TextColor
-//purpose :
-//=======================================================================
-Handle(TColStd_HArray1OfReal) SALOMEDSImpl_AttributeTextColor::TextColor()
-{
- return myValue;
-}
-
-//=======================================================================
-//function : ChangeArray
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTextColor::ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray)
-{
- Backup();
-
- for(int i = 1; i <= 3; i++)
- myValue->SetValue(i, newArray->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeTextColor::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeTextColor::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeTextColor();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeTextColor::Restore(const Handle(TDF_Attribute)& with)
-{
- Handle(TColStd_HArray1OfReal) s = Handle(SALOMEDSImpl_AttributeTextColor)::DownCast (with)->TextColor ();
- ChangeArray(s);
- return;
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeTextColor::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeTextColor)::DownCast (into)->ChangeArray (myValue);
-}
-
-
-
-TCollection_AsciiString SALOMEDSImpl_AttributeTextColor::Save()
-{
- char *Val = new char[75];
- sprintf(Val, "%f %f %f", (float)myValue->Value(1),
- (float)myValue->Value(2),
- (float)myValue->Value(3));
- TCollection_AsciiString ret(Val);
- delete Val;
- return ret;
-}
-
-void SALOMEDSImpl_AttributeTextColor::Load(const TCollection_AsciiString& value)
-{
- float r, g, b;
- sscanf(value.ToCString(), "%f %f %f", &r, &g, &b);
- myValue->SetValue(1, r);
- myValue->SetValue(2, g);
- myValue->SetValue(3, b);
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTextColor.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeTextColor_HeaderFile
-#define _SALOMEDSImpl_AttributeTextColor_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TColStd_HArray1OfReal.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextColor, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeTextColor : public SALOMEDSImpl_GenericAttribute
-{
-private:
- Handle(TColStd_HArray1OfReal) myValue;
-
-public:
-Standard_EXPORT virtual TCollection_AsciiString Save();
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT SALOMEDSImpl_AttributeTextColor();
-Standard_EXPORT const Standard_GUID& ID() const;
-Standard_EXPORT void SetTextColor(const Standard_Real R, const Standard_Real G, const Standard_Real B);
-Standard_EXPORT Handle(TColStd_HArray1OfReal) TextColor();
-Standard_EXPORT void ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray);
-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_AttributeTextColor() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTextColor )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTextHighlightColor.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
-#include <Standard_GUID.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextHighlightColor, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTextHighlightColor, SALOMEDSImpl_GenericAttribute )
-
-//=======================================================================
-//function : GetID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeTextHighlightColor::GetID ()
-{
- static Standard_GUID SALOMEDSImpl_AttributeTextHighlightColorID ("12837190-8F52-11d6-A8A3-0001021E8C7F");
- return SALOMEDSImpl_AttributeTextHighlightColorID;
-}
-
-
-
-//=======================================================================
-//function : constructor
-//purpose :
-//=======================================================================
-SALOMEDSImpl_AttributeTextHighlightColor::SALOMEDSImpl_AttributeTextHighlightColor()
-:SALOMEDSImpl_GenericAttribute("AttributeTextHighlightColor")
-{
- myValue = new TColStd_HArray1OfReal(1, 3, RealFirst());
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-
-const Standard_GUID& SALOMEDSImpl_AttributeTextHighlightColor::ID () const { return GetID(); }
-
-
-//=======================================================================
-//function : SetTextHighlightColor
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTextHighlightColor::SetTextHighlightColor(const Standard_Real R,
- const Standard_Real G,
- const Standard_Real B)
-{
- CheckLocked();
- if(myValue.IsNull()) return;
- Backup();
-
- myValue->SetValue(1, R);
- myValue->SetValue(2, G);
- myValue->SetValue(3, B);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : TextHighlightColor
-//purpose :
-//=======================================================================
-Handle(TColStd_HArray1OfReal) SALOMEDSImpl_AttributeTextHighlightColor::TextHighlightColor()
-{
- return myValue;
-}
-
-//=======================================================================
-//function : ChangeArray
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTextHighlightColor::ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray)
-{
- Backup();
-
- for(int i = 1; i <= 3; i++)
- myValue->SetValue(i, newArray->Value(i));
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeTextHighlightColor::NewEmpty () const
-{
- return new SALOMEDSImpl_AttributeTextHighlightColor();
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeTextHighlightColor::Restore(const Handle(TDF_Attribute)& with)
-{
- Handle(TColStd_HArray1OfReal) s = Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast (with)->TextHighlightColor ();
- ChangeArray(s);
- return;
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_AttributeTextHighlightColor::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& ) const
-{
- Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast (into)->ChangeArray (myValue);
-}
-
-TCollection_AsciiString SALOMEDSImpl_AttributeTextHighlightColor::Save()
-{
- char *Val = new char[75];
- sprintf(Val, "%f %f %f", (float)myValue->Value(1),
- (float)myValue->Value(2),
- (float)myValue->Value(3));
- TCollection_AsciiString ret(Val);
- delete Val;
- return ret;
-}
-
-void SALOMEDSImpl_AttributeTextHighlightColor::Load(const TCollection_AsciiString& value)
-{
- float r, g, b;
- sscanf(value.ToCString(), "%f %f %f", &r, &g, &b);
- myValue->SetValue(1, r);
- myValue->SetValue(2, g);
- myValue->SetValue(3, b);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTextHighlightColor.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeTextHighlightColor_HeaderFile
-#define _SALOMEDSImpl_AttributeTextHighlightColor_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TColStd_HArray1OfReal.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextHighlightColor, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeTextHighlightColor : public SALOMEDSImpl_GenericAttribute
-{
-private:
- Handle(TColStd_HArray1OfReal) myValue;
-
-public:
-Standard_EXPORT virtual TCollection_AsciiString Save();
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
-Standard_EXPORT static const Standard_GUID& GetID() ;
-Standard_EXPORT SALOMEDSImpl_AttributeTextHighlightColor();
-Standard_EXPORT void SetTextHighlightColor(const Standard_Real R, const Standard_Real G, const Standard_Real B);
-Standard_EXPORT Handle(TColStd_HArray1OfReal) TextHighlightColor();
-Standard_EXPORT void ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray);
-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_AttributeTextHighlightColor() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTextHighlightColor )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTreeNode.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-#include <Standard_DomainError.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_DataSet.hxx>
-#include <TDF_RelocationTable.hxx>
-#include <TCollection_AsciiString.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTreeNode, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTreeNode, SALOMEDSImpl_GenericAttribute )
-
-static char* Entry(const TDF_Label& theLabel)
-{
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(theLabel, anEntry);
- return anEntry.ToCString();
-}
-
-const Standard_GUID& SALOMEDSImpl_AttributeTreeNode::GetDefaultTreeID()
-{
- static Standard_GUID TreeNodeID ("0E1C36E6-379B-4d90-AC37-17A14310E648");
- return TreeNodeID;
-}
-
-
-SALOMEDSImpl_AttributeTreeNode::SALOMEDSImpl_AttributeTreeNode()
-:SALOMEDSImpl_GenericAttribute("AttributeTreeNode"), myFather(NULL), myPrevious(NULL), myNext(NULL), myFirst(NULL)
-{}
-
-
-Handle(SALOMEDSImpl_AttributeTreeNode) SALOMEDSImpl_AttributeTreeNode::Set (const TDF_Label& L, const Standard_GUID& ID)
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) TN;
-
- if (!L.FindAttribute(ID,TN)) {
- TN = new SALOMEDSImpl_AttributeTreeNode ();
- TN->SetTreeID(ID);
- L.AddAttribute(TN);
- }
-
- return TN;
-}
-
-//=======================================================================
-//TreeNode : ID
-//purpose : Returns GUID of the TreeNode
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeTreeNode::ID() const
-{
- return myTreeID;
-}
-
-//=======================================================================
-//function : Append
-//purpose : Add <TN> as last child of me
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::Append (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
-{
- CheckLocked();
-
- if (!(TN->ID() == myTreeID) )
- Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::Append : uncompatible GUID");
-
- Handle(SALOMEDSImpl_AttributeTreeNode) bid;
- TN->SetNext(bid); // Deconnects from next.
-
- // Find the last
- if (!HasFirst()) {
- SetFirst(TN);
- TN->SetPrevious(bid); // Deconnects from previous.
- }
- else {
- Handle(SALOMEDSImpl_AttributeTreeNode) Last = GetFirst();
- while (Last->HasNext()) {
- Last = Last->GetNext();
- }
- Last->SetNext(TN);
- TN->SetPrevious(Last);
- }
- // Set Father
- TN->SetFather(this);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-
- return !TN.IsNull();
-}
-
-//=======================================================================
-//function : Prepend
-//purpose : Add <TN> as first child of me
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::Prepend (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
-{
- CheckLocked();
-
- if (!(TN->ID() == myTreeID) )
- Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::Prepend : uncompatible GUID");
-
- Handle(SALOMEDSImpl_AttributeTreeNode) bid;
- TN->SetPrevious(bid);
- if (HasFirst()) {
- TN->SetNext(GetFirst());
- GetFirst()->SetPrevious(TN);
- }
- else {
- TN->SetNext(bid);
- }
- TN->SetFather(this);
- SetFirst(TN);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-
- return !TN.IsNull();
-}
-
-
-//=======================================================================
-//function : InsertBefore
-//purpose : Inserts the TreeNode <TN> before me
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::InsertBefore (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
-{
- CheckLocked();
-
- if (!(TN->ID() == myTreeID) )
- Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::InsertBefore : uncompatible GUID");
-
- TN->SetFather(GetFather());
- TN->SetPrevious(GetPrevious());
- TN->SetNext(this);
-
- if (!HasPrevious())
- GetFather()->SetFirst(TN);
- else
- GetPrevious()->SetNext(TN);
-
- SetPrevious(TN);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-
- return !TN.IsNull();
-}
-
-//=======================================================================
-//function : InsertAfter
-//purpose : Inserts the TreeNode <TN> after me
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::InsertAfter (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
-{
- CheckLocked();
-
- if (!(TN->ID() == myTreeID) )
- Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::InsertAfter : uncompatible GUID");
-
- TN->SetFather(GetFather());
- TN->SetPrevious(this);
- TN->SetNext(GetNext());
-
- if (HasNext()) GetNext()->SetPrevious(TN);
-
- SetNext(TN);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-
- return !TN.IsNull();
-}
-
-//=======================================================================
-//function : Remove
-//purpose : Removees the function from the function tree
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::Remove ()
-{
- CheckLocked();
-
- if (IsRoot()) return Standard_True;
-
- Handle(SALOMEDSImpl_AttributeTreeNode) bid;
- if (!HasPrevious())
- GetFather()->SetFirst(GetNext());
- else
- GetPrevious()->SetNext(GetNext());
-
- if (HasNext()) {
- if (HasPrevious()) GetNext()->SetPrevious(GetPrevious());
- else GetNext()->SetPrevious(bid);
- }
- else {
- if (HasPrevious()) GetPrevious()->SetNext(bid);
- }
-
- if (GetFather()->HasFirst()) {
- if (Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(this) == GetFather()->GetFirst()) {
- if (HasNext()) {
- GetFather()->SetFirst(GetNext());
- }
- else GetFather()->SetFirst(bid);
- }
- }
-
- SetFather(bid);
- SetNext(bid);
- SetPrevious(bid);
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-
- return Standard_True;
-}
-
-//=======================================================================
-//function : Depth
-//purpose :
-//=======================================================================
-Standard_Integer SALOMEDSImpl_AttributeTreeNode::Depth () const
-{
- Standard_Integer depth = 0;
- Handle(SALOMEDSImpl_AttributeTreeNode) current = this;
- while (current->HasFather()) {
- depth++;
- current = current->GetFather();
- }
- return depth;
-}
-
-//=======================================================================
-//function : SetTreeID
-//purpose : Finds or creates a TreeNode attribute with explicit ID
-// : a driver for it
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::SetTreeID (const Standard_GUID& explicitID)
-{
- myTreeID = explicitID;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-//=======================================================================
-//function : IsAscendant
-//purpose :
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsAscendant (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
-{
- return ofTN->IsDescendant(this);
-}
-
-//=======================================================================
-//function : IsDescendant
-//purpose :
-//=======================================================================
-
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsDescendant (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) current = this;
- while (current->HasFather()) {
- if (current->GetFather() == ofTN) return Standard_True;
- current = current->GetFather();
- }
- return Standard_False;
-}
-
-//=======================================================================
-//function : IsFather
-//purpose :
-//=======================================================================
-
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsFather (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
-{
- return (ofTN->GetFather() == this);
-}
-
-
-//=======================================================================
-//function : IsChild
-//purpose :
-//=======================================================================
-
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsChild (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
-{
- return (myFather == ofTN);
-}
-
-//=======================================================================
-//TreeNode : IsRoot
-//purpose : Returns Standard_True if the TreeNode is not attached to a
-// TreeNode tree or hasn't an Father.
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsRoot() const
-{
- if (myFather.IsNull() &&
- myPrevious.IsNull() &&
- myNext.IsNull())
- return Standard_True;
- return Standard_False;
-}
-
-//=======================================================================
-//TreeNode : Root
-//purpose : Returns the TreeNode which has no Father
-//=======================================================================
-Handle(SALOMEDSImpl_AttributeTreeNode) SALOMEDSImpl_AttributeTreeNode::Root() const
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) O = this;
- while (O->HasFather())
- O = O->GetFather();
- return O;
-}
-
-//=======================================================================
-//TreeNode : SetFather
-//purpose : Sets the TreeNode F as Father of me
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::SetFather(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
-{
- CheckLocked();
- Backup();
- myFather = F;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//TreeNode : SetNext
-//purpose : Sets the TreeNode F next to me
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::SetNext(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
-{
- CheckLocked();
- Backup();
- myNext = F;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-
-//=======================================================================
-//TreeNode : SetPrevious
-//purpose : Sets the TreeNode F previous to me
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::SetPrevious(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
-{
- CheckLocked();
- Backup();
- myPrevious = F;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//TreeNode : SetFirst
-//purpose : Sets the TreeNode F as first in the TreeNode tree
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::SetFirst(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
-{
- CheckLocked();
- Backup();
- myFirst = F;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//TreeNode : AfterAddition
-//purpose : Connects the TreeNode to the tree.
-// Backuped attribute must stay disconnected
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::AfterAddition()
-{
- if (!IsBackuped()) {
- if (!myPrevious.IsNull()) {
- myPrevious->SetNext(this);
- }
- else if (!myFather.IsNull()) {
- myFather->SetFirst(this);
- }
- if (!myNext.IsNull())
- myNext->SetPrevious(this);
- }
-}
-
-//=======================================================================
-//TreeNode : BeforeForget
-//purpose : Disconnect the TreeNode from the tree.
-// Backuped attribute is normaly not concerned by such an operation
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::BeforeForget()
-{
- if (!IsBackuped()) {
- Remove();
- while (HasFirst()) GetFirst()->Remove();
- }
-}
-
-//=======================================================================
-//TreeNode : AfterResume
-//purpose : Connects the TreeNode to the tree
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::AfterResume()
-{
- AfterAddition();
-}
-
-//=======================================================================
-//TreeNode : BeforeUndo
-//purpose : Disconnect the TreeNode from the tree.
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::BeforeUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
- const Standard_Boolean forceIt)
-{
- if (anAttDelta->IsKind(STANDARD_TYPE(TDF_DeltaOnAddition))) BeforeForget(); // Disconnect.
- return Standard_True;
-}
-
-//=======================================================================
-//TreeNode : AfterUndo
-//purpose : Connect the TreeNode from the tree.
-//=======================================================================
-Standard_Boolean SALOMEDSImpl_AttributeTreeNode::AfterUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
- const Standard_Boolean forceIt)
-{
- if (anAttDelta->IsKind(STANDARD_TYPE(TDF_DeltaOnRemoval))) AfterAddition(); // Reconnect.
- return Standard_True;
-}
-
-//=======================================================================
-//TreeNode : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::Restore(const Handle(TDF_Attribute)& other)
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) F = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(other);
- myFather = F->myFather;
- myPrevious = F->myPrevious;
- myNext = F->myNext;
- myFirst = F->myFirst;
- myTreeID = F->myTreeID;
-}
-
-//=======================================================================
-//TreeNode : Paste
-//purpose : Method for Copy mechanism
-//=======================================================================
-
-void SALOMEDSImpl_AttributeTreeNode::Paste(const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) intof = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(into);
- Handle(SALOMEDSImpl_AttributeTreeNode) func;
- if (!RT->HasRelocation(myFather, func) && RT->AfterRelocate()) {
- func.Nullify();
- }
- intof->SetFather(func);
- if (!RT->HasRelocation(myNext, func) && RT->AfterRelocate()) {
- func.Nullify();
- }
- intof->SetNext(func);
- if (!RT->HasRelocation(myPrevious, func) && RT->AfterRelocate()) {
- func.Nullify();
- }
- intof->SetPrevious(func);
- if (!RT->HasRelocation(myFirst, func) && RT->AfterRelocate()) {
- func.Nullify();
- }
-
- intof->SetFirst(func);
- intof->SetTreeID(myTreeID);
-}
-
-//=======================================================================
-//TreeNode : NewEmpty
-//purpose : Returns new empty TreeNode attribute
-//=======================================================================
-
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeTreeNode::NewEmpty() const
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) T = new SALOMEDSImpl_AttributeTreeNode();
- T->SetTreeID(myTreeID);
- return T;
-}
-
-//=======================================================================
-//TreeNode : References
-//purpose : Collects the references
-//=======================================================================
-void SALOMEDSImpl_AttributeTreeNode::References(const Handle(TDF_DataSet)& aDataSet) const
-{
- Handle(SALOMEDSImpl_AttributeTreeNode) fct = myFirst;
- while (!fct.IsNull()) {
- aDataSet->AddAttribute(fct);
- fct = fct->myNext;
- }
-}
-
-TCollection_AsciiString SALOMEDSImpl_AttributeTreeNode::Type()
-{
- char* aNodeName = new char[60];
- char aGUID[40];
- ID().ToCString(aGUID);
- sprintf(aNodeName, "AttributeTreeNodeGUID%s",aGUID);
- TCollection_AsciiString ret(aNodeName);
- delete aNodeName;
-
- return ret;
-}
-
-TCollection_AsciiString SALOMEDSImpl_AttributeTreeNode::Save()
-{
- TCollection_AsciiString aFather, aPrevious, aNext, aFirst;
-
- if (HasFather()) aFather = Entry(GetFather()->Label()); else aFather = "!";
- if (HasPrevious()) aPrevious = Entry(GetPrevious()->Label()); else aPrevious = "!";
- if (HasNext()) aNext = Entry(GetNext()->Label()); else aNext = "!";
- if (HasFirst()) aFirst = Entry(GetFirst()->Label()); else aFirst = "!";
-
- int aLength = 4;
- aLength += aFather.Length() + aPrevious.Length() + aNext.Length() + aFirst.Length();
- char* aResult = new char[aLength];
- sprintf(aResult, "%s %s %s %s", aFather.ToCString(), aPrevious.ToCString(), aNext.ToCString(), aFirst.ToCString());
- TCollection_AsciiString ret(aResult);
- delete aResult;
- return ret;
-}
-
-void SALOMEDSImpl_AttributeTreeNode::Load(const TCollection_AsciiString& value)
-{
- Handle(TDF_Data) DF = Label().Data();
-
- char* aCopy = (char*)value.ToCString();
- char* adr = strtok(aCopy, " ");
-
- TDF_Label aLabel;
- Handle(SALOMEDSImpl_AttributeTreeNode) aDepNode;
-
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(ID(), aDepNode))
- aDepNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
-
- SetFather(aDepNode);
- }
-
- adr = strtok(NULL, " ");
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(ID(), aDepNode))
- aDepNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
- SetPrevious(aDepNode);
- }
-
- adr = strtok(NULL, " ");
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(ID(), aDepNode))
- aDepNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
- SetNext(aDepNode);
- }
-
- adr = strtok(NULL, " ");
- if (adr && adr[0] != '!') {
- TDF_Tool::Label(DF, adr, aLabel, 1);
- if (!aLabel.FindAttribute(ID(), aDepNode))
- aDepNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
- SetFirst(aDepNode);
- }
-}
-
-
+++ /dev/null
-// File : SALOMEDSImpl_AttributeTreeNode.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeTreeNode_HeaderFile
-#define _SALOMEDSImpl_AttributeTreeNode_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-#include <TDF_Label.hxx>
-#include <TDF_AttributeDelta.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Handle_TDF_DataSet;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-class SALOMEDSImpl_ChildNodeIterator;
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTreeNode, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeTreeNode : public SALOMEDSImpl_GenericAttribute
-{
-public:
-
-Standard_EXPORT const static Standard_GUID& GetDefaultTreeID();
-Standard_EXPORT static Handle_SALOMEDSImpl_AttributeTreeNode Set(const TDF_Label& L, const Standard_GUID& ID);
-
-Standard_EXPORT SALOMEDSImpl_AttributeTreeNode();
-Standard_EXPORT void SetFather(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-Standard_EXPORT void SetPrevious(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-Standard_EXPORT void SetNext(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-Standard_EXPORT void SetFirst(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-Standard_EXPORT void SetTreeID(const Standard_GUID& value);
-
-Standard_EXPORT Standard_Boolean Append(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-Standard_EXPORT Standard_Boolean Prepend(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-Standard_EXPORT Standard_Boolean Remove();
-Standard_EXPORT Standard_Boolean InsertBefore(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-Standard_EXPORT Standard_Boolean InsertAfter(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
-
-Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetFather() { return myFather; }
-Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetPrevious() { return myPrevious; }
-Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetNext() { return myNext; }
-Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetFirst() { return myFirst; }
-
-Standard_EXPORT Standard_Boolean HasFather() { return (!myFather.IsNull()); }
-Standard_EXPORT Standard_Boolean HasPrevious() { return (!myPrevious.IsNull()); }
-Standard_EXPORT Standard_Boolean HasNext() {return (!myNext.IsNull()); }
-Standard_EXPORT Standard_Boolean HasFirst() { return (!myFirst.IsNull()); }
-Standard_EXPORT const Standard_GUID& GetTreeID() { return ID(); }
-Standard_EXPORT Standard_Integer Depth() const;
-Standard_EXPORT Standard_Boolean IsRoot() const ;
-Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) Root() const;
-Standard_EXPORT Standard_Boolean IsAscendant (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const;
-Standard_EXPORT Standard_Boolean IsDescendant(const Handle(SALOMEDSImpl_AttributeTreeNode)& value) const;
-Standard_EXPORT Standard_Boolean IsFather(const Handle(SALOMEDSImpl_AttributeTreeNode)& value) const;
-Standard_EXPORT Standard_Boolean IsChild(const Handle(SALOMEDSImpl_AttributeTreeNode)& value) const;
-
-Standard_EXPORT virtual TCollection_AsciiString Save();
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
-Standard_EXPORT virtual TCollection_AsciiString Type();
-
-Standard_EXPORT virtual void AfterAddition() ;
-Standard_EXPORT virtual void BeforeForget() ;
-Standard_EXPORT virtual void AfterResume() ;
-Standard_EXPORT virtual Standard_Boolean BeforeUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
- const Standard_Boolean forceIt = Standard_False) ;
-Standard_EXPORT virtual Standard_Boolean AfterUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
- const Standard_Boolean forceIt = Standard_False) ;
-Standard_EXPORT const Standard_GUID& ID() const;
-Standard_EXPORT void Restore(const Handle(TDF_Attribute)& with) ;
-Standard_EXPORT void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
-Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
-Standard_EXPORT void References(const Handle(TDF_DataSet)& aDataSet) const;
-Standard_EXPORT ~SALOMEDSImpl_AttributeTreeNode() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTreeNode )
-
-private:
-
-Standard_GUID myTreeID;
-Handle(SALOMEDSImpl_AttributeTreeNode) myFather;
-Handle(SALOMEDSImpl_AttributeTreeNode) myPrevious;
-Handle(SALOMEDSImpl_AttributeTreeNode) myNext;
-Handle(SALOMEDSImpl_AttributeTreeNode) myFirst;
-
-friend class SALOMEDSImpl_ChildNodeIterator;
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_AttributeUAttribute.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_AttributeUserID.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeUserID, SALOMEDSImpl_GenericAttribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeUserID, SALOMEDSImpl_GenericAttribute )
-
-Handle(SALOMEDSImpl_AttributeUserID) SALOMEDSImpl_AttributeUserID::Set (const TDF_Label& L, const Standard_GUID& ID)
-{
- Handle(SALOMEDSImpl_AttributeUserID) A;
- if (!L.FindAttribute(ID, A)) {
- A = new SALOMEDSImpl_AttributeUserID();
- A->SetValue(ID);
- L.AddAttribute(A);
- }
- return A;
-}
-
-//=======================================================================
-//function : ID
-//purpose :
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_AttributeUserID::ID() const
-{ return myID; }
-
-
-//=======================================================================
-//function : SetValue
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeUserID::SetValue( const Standard_GUID& guid)
-{
- CheckLocked();
- if(myID == guid) return;
-
- Backup();
- myID = guid;
-
- SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved
-}
-
-//=======================================================================
-//function : NewEmpty
-//purpose :
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_AttributeUserID::NewEmpty () const
-{
- Handle(SALOMEDSImpl_AttributeUserID) A = new SALOMEDSImpl_AttributeUserID();
- A->SetValue(myID);
- return A;
-}
-
-//=======================================================================
-//function : Restore
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeUserID::Restore(const Handle(TDF_Attribute)& with)
-{
- Handle(SALOMEDSImpl_AttributeUserID) A = Handle(SALOMEDSImpl_AttributeUserID)::DownCast(with);
- SetValue( A->ID() );
-}
-
-//=======================================================================
-//function : Paste
-//purpose :
-//=======================================================================
-void SALOMEDSImpl_AttributeUserID::Paste (const Handle(TDF_Attribute)& into,
- const Handle(TDF_RelocationTable)& RT) const
-{
- Handle(SALOMEDSImpl_AttributeUserID) A = Handle(SALOMEDSImpl_AttributeUserID)::DownCast(into);
- A->SetValue( myID );
-}
-
-TCollection_AsciiString SALOMEDSImpl_AttributeUserID::Type()
-{
-
- char* aUAttrName = new char[60];
- char aGUID[40];
- ID().ToCString(aGUID);
- sprintf(aUAttrName, "AttributeUserID_%s",aGUID);
-
- TCollection_AsciiString ret(aUAttrName);
- delete aUAttrName;
-
- return ret;
-}
+++ /dev/null
-// File : SALOMEDSImpl_AttributeUAttribute.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_AttributeUserID_HeaderFile
-#define _SALOMEDSImpl_AttributeUserID_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeUserID, SALOMEDSImpl_GenericAttribute )
-
-class SALOMEDSImpl_AttributeUserID : public SALOMEDSImpl_GenericAttribute
-{
-private:
-Standard_GUID myID;
-
-public:
-SALOMEDSImpl_AttributeUserID():SALOMEDSImpl_GenericAttribute("AttributeUserID") {}
-static Handle(SALOMEDSImpl_AttributeUserID) Set (const TDF_Label& L, const Standard_GUID& ID);
-static const Standard_GUID& DefaultID()
-{
- static Standard_GUID SALOMEDSImpl_DefaultUserAttributeID ("FFFFFFFF-D9CD-11d6-945D-1050DA506788");
- return SALOMEDSImpl_DefaultUserAttributeID;
-}
-
-Standard_EXPORT const Standard_GUID& Value() const { return ID(); }
-Standard_EXPORT void SetValue(const Standard_GUID& value);
-
-Standard_EXPORT virtual TCollection_AsciiString Type();
-
-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_AttributeUserID() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeUserID )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_Attributes.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_ATTRIBUTES__H__
-#define __SALOMEDSIMPL_ATTRIBUTES__H__
-
-#include <iostream>
-class LockProtection
-{
-public :
- LockProtection(const char *message) {
- std::cerr << message << std::endl;
- }
-};
-
-#include "SALOMEDSImpl_GenericAttribute.hxx"
-#include "SALOMEDSImpl_AttributeName.hxx"
-#include "SALOMEDSImpl_AttributeComment.hxx"
-#include "SALOMEDSImpl_AttributeInteger.hxx"
-#include "SALOMEDSImpl_AttributeReal.hxx"
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-#include "SALOMEDSImpl_AttributeUserID.hxx"
-#include "SALOMEDSImpl_AttributeReference.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
-#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-#include "SALOMEDSImpl_AttributePersistentRef.hxx"
-#include "SALOMEDSImpl_AttributeDrawable.hxx"
-#include "SALOMEDSImpl_AttributeSelectable.hxx"
-#include "SALOMEDSImpl_AttributeExpandable.hxx"
-#include "SALOMEDSImpl_AttributeOpened.hxx"
-#include "SALOMEDSImpl_AttributeTextColor.hxx"
-#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
-#include "SALOMEDSImpl_AttributePixMap.hxx"
-#include "SALOMEDSImpl_AttributeLocalID.hxx"
-#include "SALOMEDSImpl_AttributeTarget.hxx"
-#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
-#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
-#include "SALOMEDSImpl_AttributeTableOfString.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-#include "SALOMEDSImpl_AttributePythonObject.hxx"
-#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
-#include "SALOMEDSImpl_AttributeFileType.hxx"
-#include "SALOMEDSImpl_AttributeFlags.hxx"
-#include "SALOMEDSImpl_AttributeGraphic.hxx"
-
-
-#define __AttributeTypeToGUIDForSObject \
- if(theType == "AttributeReal") return SALOMEDSImpl_AttributeReal::GetID(); \
- if(theType == "AttributeInteger") return SALOMEDSImpl_AttributeInteger::GetID(); \
- if(theType == "AttributeSequenceOfReal") return SALOMEDSImpl_AttributeSequenceOfReal::GetID(); \
- if(theType == "AttributeSequenceOfInteger") return SALOMEDSImpl_AttributeSequenceOfInteger::GetID(); \
- if(theType == "AttributeName") return SALOMEDSImpl_AttributeName::GetID(); \
- if(theType == "AttributeComment") return SALOMEDSImpl_AttributeComment::GetID(); \
- if(theType == "AttributeIOR") return SALOMEDSImpl_AttributeIOR::GetID(); \
- if(theType == "AttributePersistentRef") return SALOMEDSImpl_AttributePersistentRef::GetID(); \
- if(theType == "AttributeDrawable") return SALOMEDSImpl_AttributeDrawable::GetID(); \
- if(theType == "AttributeSelectable") return SALOMEDSImpl_AttributeSelectable::GetID(); \
- if(theType == "AttributeExpandable") return SALOMEDSImpl_AttributeExpandable::GetID(); \
- if(theType == "AttributeOpened") return SALOMEDSImpl_AttributeOpened::GetID(); \
- if(theType == "AttributeTextColor") return SALOMEDSImpl_AttributeTextColor::GetID(); \
- if(theType == "AttributeTextHighlightColor") return SALOMEDSImpl_AttributeTextHighlightColor::GetID(); \
- if(theType == "AttributePixMap") return SALOMEDSImpl_AttributePixMap::GetID(); \
- if(theType == "AttributeLocalID") return SALOMEDSImpl_AttributeLocalID::GetID(); \
- if(theType == "AttributeTarget") return SALOMEDSImpl_AttributeTarget::GetID(); \
- if(theType == "AttributeTableOfInteger") return SALOMEDSImpl_AttributeTableOfInteger::GetID(); \
- if(theType == "AttributeTableOfReal") return SALOMEDSImpl_AttributeTableOfReal::GetID(); \
- if(theType == "AttributeTableOfString") return SALOMEDSImpl_AttributeTableOfString::GetID(); \
- if(theType == "AttributeStudyProperties") return SALOMEDSImpl_AttributeStudyProperties::GetID(); \
- if(theType == "AttributePythonObject") return SALOMEDSImpl_AttributePythonObject::GetID(); \
- if(theType == "AttributeUserID") return Standard_GUID("FFFFFFFF-D9CD-11d6-945D-1050DA506788"); \
- if(theType == "AttributeExternalFileDef") return SALOMEDSImpl_AttributeExternalFileDef::GetID(); \
- if(theType == "AttributeFileType") return SALOMEDSImpl_AttributeFileType::GetID(); \
- if(theType == "AttributeFlags") return SALOMEDSImpl_AttributeFlags::GetID(); \
- if(theType == "AttributeGraphic") return SALOMEDSImpl_AttributeGraphic::GetID(); \
- if(theType == "AttributeReference") return SALOMEDSImpl_AttributeReference::GetID();
-
-
-#define __FindOrCreateAttributeLocked(ClassName) if (strcmp(aTypeOfAttribute.ToCString(), #ClassName) == 0) { \
- Handle(SALOMEDSImpl_##ClassName) anAttr; \
- if (!Lab.FindAttribute(SALOMEDSImpl_##ClassName::GetID(), anAttr)) { \
- CheckLocked(); \
- anAttr = new SALOMEDSImpl_##ClassName; \
- Lab.AddAttribute(anAttr); \
- } \
- return anAttr; \
- }
-
-#define __FindOrCreateAttribute(ClassName) if (strcmp(aTypeOfAttribute.ToCString(), #ClassName) == 0) { \
- Handle(SALOMEDSImpl_##ClassName) anAttr; \
- if (!Lab.FindAttribute(SALOMEDSImpl_##ClassName::GetID(), anAttr)) { \
- anAttr = new SALOMEDSImpl_##ClassName; \
- Lab.AddAttribute(anAttr); \
- } \
- return anAttr; \
- }
-
-#define __FindOrCreateAttributeForBuilder \
-__FindOrCreateAttributeLocked(AttributeReal) \
-__FindOrCreateAttributeLocked(AttributeInteger) \
-__FindOrCreateAttributeLocked(AttributeSequenceOfReal) \
-__FindOrCreateAttributeLocked(AttributeSequenceOfInteger) \
-__FindOrCreateAttributeLocked(AttributeName) \
-__FindOrCreateAttributeLocked(AttributeComment) \
-__FindOrCreateAttributeLocked(AttributeIOR) \
-__FindOrCreateAttributeLocked(AttributePixMap) \
-__FindOrCreateAttributeLocked(AttributeLocalID) \
-__FindOrCreateAttributeLocked(AttributeTableOfInteger) \
-__FindOrCreateAttributeLocked(AttributeTableOfReal) \
-__FindOrCreateAttributeLocked(AttributeTableOfString) \
-__FindOrCreateAttributeLocked(AttributePythonObject) \
-__FindOrCreateAttribute(AttributePersistentRef) \
-__FindOrCreateAttribute(AttributeDrawable) \
-__FindOrCreateAttribute(AttributeSelectable) \
-__FindOrCreateAttribute(AttributeExpandable) \
-__FindOrCreateAttribute(AttributeOpened) \
-__FindOrCreateAttribute(AttributeTextColor) \
-__FindOrCreateAttribute(AttributeTextHighlightColor) \
-__FindOrCreateAttribute(AttributeTarget) \
-__FindOrCreateAttribute(AttributeStudyProperties) \
-__FindOrCreateAttribute(AttributeExternalFileDef) \
-__FindOrCreateAttribute(AttributeFileType) \
-__FindOrCreateAttribute(AttributeFlags) \
-__FindOrCreateAttribute(AttributeGraphic)
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_Callback.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_Callback.hxx"
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_Callback, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_Callback, MMgt_TShared )
-
+++ /dev/null
-// File : SALOMEDSImpl_Callback.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_CALLBACK_H__
-#define __SALOMEDSIMPL_CALLBACK_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_Callback, MMgt_TShared )
-
-#include "SALOMEDSImpl_UseCaseBuilder.hxx"
-
-class SALOMEDSImpl_Callback : public MMgt_TShared
-{
-private:
- Handle(SALOMEDSImpl_UseCaseBuilder) _builder;
-
-public:
-
- SALOMEDSImpl_Callback(const Handle(SALOMEDSImpl_UseCaseBuilder)& builder)
- {
- _builder = builder;
- }
-
- virtual void OnAddSObject(Handle(SALOMEDSImpl_SObject) theObject)
- {
- if(_builder != NULL && theObject != NULL) _builder->Append(theObject);
- }
-
- virtual void OnRemoveSObject(Handle(SALOMEDSImpl_SObject) theObject)
- {
- if(_builder != NULL && theObject != NULL) _builder->Remove(theObject);
- }
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_Callback )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_ChildIterator.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_ChildIterator.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_ChildIterator, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_ChildIterator, MMgt_TShared )
-
-SALOMEDSImpl_ChildIterator::SALOMEDSImpl_ChildIterator(const Handle(SALOMEDSImpl_SObject)& theSO)
-{
- _so = theSO;
- _it = TDF_ChildIterator(_so->GetLabel());
-}
-
-SALOMEDSImpl_ChildIterator::SALOMEDSImpl_ChildIterator(const TDF_Label& theLabel)
-{
- _so = SALOMEDSImpl_Study::SObject(theLabel);
- _it = TDF_ChildIterator(theLabel);
-}
-
-void SALOMEDSImpl_ChildIterator::Init()
-{
- _it.Initialize(_so->GetLabel(), Standard_False);
-}
-
-void SALOMEDSImpl_ChildIterator::Init(const TDF_Label& theLabel)
-{
- _it.Initialize(theLabel, Standard_False);
-}
-
-void SALOMEDSImpl_ChildIterator::InitEx(bool theAllLevels)
-{
- _it.Initialize(_so->GetLabel(), theAllLevels);
-}
-
-void SALOMEDSImpl_ChildIterator::InitEx(const TDF_Label& theLabel, bool theAllLevels)
-{
- _it.Initialize(theLabel, theAllLevels);
-}
-
-bool SALOMEDSImpl_ChildIterator::More()
-{
- return _it.More();
-}
-
-void SALOMEDSImpl_ChildIterator::Next()
-{
- _it.Next();
-}
-
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_ChildIterator::Value()
-{
- return SALOMEDSImpl_Study::SObject(_it.Value());
-}
-
-TDF_Label SALOMEDSImpl_ChildIterator::Label()
-{
- return _it.Value();
-}
+++ /dev/null
-// File : SALOMEDSImpl_ChildIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSImpl_CHILDITERATOR_H__
-#define __SALOMEDSImpl_CHILDITERATOR_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_ChildIterator, MMgt_TShared )
-
-#include "SALOMEDSImpl_SObject.hxx"
-#include "TDF_ChildIterator.hxx"
-#include "TDF_Label.hxx"
-
-class SALOMEDSImpl_ChildIterator: public MMgt_TShared
-{
-private:
- TDF_ChildIterator _it;
- Handle(SALOMEDSImpl_SObject) _so;
-
-public:
-
- Standard_EXPORT SALOMEDSImpl_ChildIterator(const Handle(SALOMEDSImpl_SObject)& theSO);
- Standard_EXPORT SALOMEDSImpl_ChildIterator(const TDF_Label& theLabel);
- Standard_EXPORT ~SALOMEDSImpl_ChildIterator() {};
-
- Standard_EXPORT virtual void Init();
- Standard_EXPORT virtual void Init(const TDF_Label& theLabel);
- Standard_EXPORT virtual void InitEx(bool theAllLevels);
- Standard_EXPORT virtual void InitEx(const TDF_Label& theLabel, bool theAllLevels);
- Standard_EXPORT virtual bool More();
- Standard_EXPORT virtual void Next();
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) Value();
- Standard_EXPORT virtual TDF_Label Label();
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_SObject )
-};
-#endif
+++ /dev/null
-// File: SALOMEDSImpl_ChildNodeIterator.cxx
-// Created: Wed Jan 26 16:43:08 2000
-// Author: Denis PASCAL
-// <dp@dingox.paris1.matra-dtv.fr>
-
-
-#include <SALOMEDSImpl_ChildNodeIterator.hxx>
-
-#define ChildNodeIterator_UpToBrother \
-{ \
- while (!myNode.IsNull() && (myNode->Depth() > myFirstLevel) && myNode->myNext == NULL) \
- myNode = myNode->myFather; \
- if (!myNode.IsNull() && (myNode->Depth() > myFirstLevel) && myNode->myFather != NULL) \
- myNode = myNode->myNext; \
- else \
- myNode = NULL; \
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_ChildNodeIterator
-//purpose :
-//=======================================================================
-SALOMEDSImpl_ChildNodeIterator::SALOMEDSImpl_ChildNodeIterator()
- : myFirstLevel(0)
-{}
-
-//=======================================================================
-//function : SALOMEDSImpl_ChildNodeIterator
-//purpose :
-//=======================================================================
-
-SALOMEDSImpl_ChildNodeIterator::SALOMEDSImpl_ChildNodeIterator (const Handle(SALOMEDSImpl_AttributeTreeNode)& aNode,
- const Standard_Boolean allLevels)
-: myNode(aNode->myFirst),
- myFirstLevel(allLevels ? aNode->Depth() : -1)
-{}
-
-//=======================================================================
-//function : Initialize
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_ChildNodeIterator::Initialize(const Handle(SALOMEDSImpl_AttributeTreeNode)& aNode,
- const Standard_Boolean allLevels)
-{
- myNode = aNode->myFirst;
- myFirstLevel = allLevels ? aNode->Depth() : -1;
-}
-
-//=======================================================================
-//function : Next
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_ChildNodeIterator::Next()
-{
- if (myFirstLevel == -1) {
- myNode = myNode->myNext;
- }
- else {
- if (myNode->myFirst != NULL) myNode = myNode->myFirst;
- else ChildNodeIterator_UpToBrother;
- }
-}
-
-//=======================================================================
-//function : NextBrother
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_ChildNodeIterator::NextBrother()
-{
- if (myNode->myNext != NULL) myNode = myNode->myNext;
- else ChildNodeIterator_UpToBrother;
-}
+++ /dev/null
-
-#ifndef _SALOMEDSImpl_ChildNodeIterator_HeaderFile
-#define _SALOMEDSImpl_ChildNodeIterator_HeaderFile
-
-#ifndef _Standard_Integer_HeaderFile
-#include <Standard_Integer.hxx>
-#endif
-#ifndef _Standard_Boolean_HeaderFile
-#include <Standard_Boolean.hxx>
-#endif
-
-#include "SALOMEDSImpl_AttributeTreeNode.hxx"
-
-
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-
-class SALOMEDSImpl_ChildNodeIterator
-{
-
-public:
-
-Standard_EXPORT SALOMEDSImpl_ChildNodeIterator();
-Standard_EXPORT SALOMEDSImpl_ChildNodeIterator(const Handle(SALOMEDSImpl_AttributeTreeNode)& aTreeNode,
- const Standard_Boolean allLevels = Standard_False);
-Standard_EXPORT void Initialize(const Handle(SALOMEDSImpl_AttributeTreeNode)& aTreeNode,
- const Standard_Boolean allLevels = Standard_False) ;
-Standard_EXPORT Standard_Boolean More() const { return !myNode.IsNull(); }
-Standard_EXPORT void Next() ;
-Standard_EXPORT void NextBrother() ;
-Standard_EXPORT Handle_SALOMEDSImpl_AttributeTreeNode Value() const { return myNode; }
-
-private:
-
-Handle_SALOMEDSImpl_AttributeTreeNode myNode;
-Standard_Integer myFirstLevel;
-
-};
-
-
-#endif
+++ /dev/null
-#ifndef __SALOMEDSIMPL_DRIVER_H__
-#define __SALOMEDSIMPL_DRIVER_H__
-
-#include <TCollection_AsciiString.hxx>
-#include <SALOMEDSImpl_SComponent.hxx>
-#include <SALOMEDSImpl_SObject.hxx>
-
-
-class SALOMEDSImpl_Driver
-{
-public:
-
- virtual TCollection_AsciiString GetIOR() = 0;
-
- virtual unsigned char* Save(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const TCollection_AsciiString& theURL,
- long& theStreamLength,
- bool isMultiFile) = 0;
-
- virtual unsigned char* SaveASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const TCollection_AsciiString& theURL,
- long& theStreamLength,
- bool isMultiFile) = 0;
-
- virtual bool Load(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const unsigned char* theStream,
- const long theStreamLength,
- const TCollection_AsciiString& theURL,
- bool isMultiFile) = 0;
-
- virtual bool LoadASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
- const unsigned char* theStream,
- const long theStreamLength,
- const TCollection_AsciiString& theURL,
- bool isMultiFile) = 0;
-
- virtual void Close(const Handle(SALOMEDSImpl_SComponent)& theComponent) = 0;
-
- virtual TCollection_AsciiString ComponentDataType() = 0;
-
-
- virtual TCollection_AsciiString IORToLocalPersistentID(const Handle(SALOMEDSImpl_SObject)& theSObject,
- const TCollection_AsciiString& IORString,
- bool isMultiFile,
- bool isASCII) = 0;
-
- virtual TCollection_AsciiString LocalPersistentIDToIOR(const Handle(SALOMEDSImpl_SObject)& theSObject,
- const TCollection_AsciiString& aLocalPersistentID,
- bool isMultiFile,
- bool isASCII) = 0;
-
- virtual bool CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject) = 0;
-
- virtual unsigned char* CopyFrom(const Handle(SALOMEDSImpl_SObject)& theObject,
- int& theObjectID,
- long& theStreamLength) = 0;
-
- virtual bool CanPaste(const TCollection_AsciiString& theComponentName, int theObjectID) = 0;
-
- virtual TCollection_AsciiString PasteInto(const unsigned char* theStream,
- const long theStreamLength,
- int theObjectID,
- const Handle(SALOMEDSImpl_SObject)& theObject) = 0;
-
- virtual unsigned char* DumpPython(const Handle(SALOMEDSImpl_Study)& theStudy,
- bool isPublished,
- bool& isValidScript,
- long& theStreamLength) = 0;
-};
-
-class SALOMEDSImpl_DriverFactory
-{
-public:
-
- virtual SALOMEDSImpl_Driver* GetDriverByType(const TCollection_AsciiString& theComponentType) = 0;
-
- virtual SALOMEDSImpl_Driver* GetDriverByIOR(const TCollection_AsciiString& theIOR) = 0;
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_GenericAttribute.hxx
-// Author : SERGEY_RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_Attributes.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_StudyBuilder.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_GenericAttribute, TDF_Attribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_GenericAttribute, TDF_Attribute )
-
-char* SALOMEDSImpl_GenericAttribute::Impl_GetType(const Handle(TDF_Attribute)& theAttr)
-{
- Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr);
- return ga->Type().ToCString();
-}
-
-char* SALOMEDSImpl_GenericAttribute::Impl_GetClassType(const Handle(TDF_Attribute)& theAttr)
-{
- Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr);
- return ga->GetClassType().ToCString();
-}
-
-void SALOMEDSImpl_GenericAttribute::Impl_CheckLocked(const Handle(TDF_Attribute)& theAttr)
-{
- Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr);
- ga->CheckLocked();
-}
-
-TCollection_AsciiString SALOMEDSImpl_GenericAttribute::Type()
-{
- return _type;
-}
-
-
-void SALOMEDSImpl_GenericAttribute::CheckLocked()
-{
- TDF_Label aLabel = Label();
- if(aLabel.IsNull()) return;
-
- Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(aLabel);
- if(aStudy.IsNull() || aStudy->NewBuilder()->HasOpenCommand()) return;
- if(aStudy->IsLocked()) {
- aStudy->_errorCode = "LockProtection";
- throw LockProtection("LockProtection");
- }
-}
-
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_GenericAttribute::GetSObject()
-{
- TDF_Label aLabel = Label();
- if(aLabel.IsNull()) return NULL;
- return SALOMEDSImpl_Study::SObject(aLabel);
-}
-
-void SALOMEDSImpl_GenericAttribute::SetModifyFlag()
-{
- TDF_Label aLabel = Label();
- if(aLabel.IsNull()) return;
-
- Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(aLabel);
- if(!aStudy.IsNull()) aStudy->Modify();
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_GenericAttribute.hxx
-// Author : SERGEY_RUIN
-// Module : SALOME
-
-#ifndef _GENERICIMPL_ATTRIBUTE_HXX_
-#define _GENERICIMPL_ATTRIBUTE_HXX_
-
-#include <TDF_Label.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-
-#include "SALOMEDSImpl_SObject.hxx"
-
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_GenericAttribute, TDF_Attribute )
-
-class SALOMEDSImpl_GenericAttribute: public TDF_Attribute
-{
-protected:
-
- TCollection_AsciiString _type; //This field must be filled in each attribute that inherits from this class.
-
-public:
-
-Standard_EXPORT SALOMEDSImpl_GenericAttribute(const TCollection_AsciiString& theType)
-:_type(theType)
-{}
-
-Standard_EXPORT virtual TCollection_AsciiString Save() { return ""; }
-Standard_EXPORT virtual void Load(const TCollection_AsciiString&) {}
-Standard_EXPORT virtual TCollection_AsciiString Type();
-Standard_EXPORT virtual void CheckLocked();
-Standard_EXPORT TCollection_AsciiString GetClassType() { return _type; }
-Standard_EXPORT Handle(SALOMEDSImpl_SObject) GetSObject();
-Standard_EXPORT void SetModifyFlag();
-
-Standard_EXPORT static char* Impl_GetType(const Handle(TDF_Attribute)& theAttr);
-Standard_EXPORT static char* Impl_GetClassType(const Handle(TDF_Attribute)& theAttr);
-Standard_EXPORT static void Impl_CheckLocked(const Handle(TDF_Attribute)& theAttr);
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_GenericAttribute )
-
-};
-
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_OCAFApplication.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_OCAFApplication.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_OCAFApplication, TDocStd_Application )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_OCAFApplication, TDocStd_Application )
-
-//=======================================================================
-//function : SALOMEDSImpl_OCAFApplication
-//purpose :
-//=======================================================================
-
-SALOMEDSImpl_OCAFApplication::SALOMEDSImpl_OCAFApplication()
-{
-}
-
-
-//=======================================================================
-//function : Formats
-//purpose :
-//=======================================================================
-
-void SALOMEDSImpl_OCAFApplication::Formats(TColStd_SequenceOfExtendedString& Formats)
-{
- Formats.Append(TCollection_ExtendedString ("SALOME_STUDY"));
-}
-
-
-//=======================================================================
-//function : ResourcesName
-//purpose :
-//=======================================================================
-
-Standard_CString SALOMEDSImpl_OCAFApplication::ResourcesName()
-{
- return Standard_CString ("SALOMEDSImpl_Resources");
-}
-
-
-
-
-
+++ /dev/null
-// File : SALOMEDSImpl_OCAFApplication.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef _SALOMEDSImpl_OCAFApplication_HeaderFile
-#define _SALOMEDSImpl_OCAFApplication_HeaderFile
-
-
-//Handle definition
-#include <TDocStd_Application.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_OCAFApplication, TDocStd_Application)
-
-#include <Standard_CString.hxx>
-#include <TColStd_SequenceOfExtendedString.hxx>
-
-
-class SALOMEDSImpl_OCAFApplication : public TDocStd_Application {
-
-public:
-
-Standard_EXPORT SALOMEDSImpl_OCAFApplication();
-Standard_EXPORT virtual void Formats(TColStd_SequenceOfExtendedString& Formats) ;
-Standard_EXPORT Standard_CString ResourcesName() ;
-Standard_EXPORT ~SALOMEDSImpl_OCAFApplication() {}
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_OCAFApplication )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_SComponent.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_AttributeComment.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_SComponent, SALOMEDSImpl_SObject )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_SComponent, SALOMEDSImpl_SObject )
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_SComponent::SALOMEDSImpl_SComponent(const TDF_Label& theLabel)
- :SALOMEDSImpl_SObject(theLabel)
-{
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_SComponent::~SALOMEDSImpl_SComponent()
-{}
-
-
-//============================================================================
-/*! Function : ComponentDataType
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_SComponent::ComponentDataType()
-{
- TCollection_AsciiString res = "";
- Handle(SALOMEDSImpl_AttributeComment) type;
- if ( _lab.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(),type) ) {
- res = type->Value();
- }
-
- return res;
-}
-
-
-//============================================================================
-/*! Function : ComponentIOR
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_SComponent::ComponentIOR(TCollection_AsciiString& IOR)
-{
- Handle(SALOMEDSImpl_AttributeIOR) ior;
- if (!_lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),ior) )
- return false;
- IOR = ior->Value();
- return true;
-}
-
-
-//============================================================================
-/*! Function : IsA
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_SComponent::IsA(const TDF_Label& theLabel)
-{
- // scomponent must contain comment and belong to the 2th depth label
- if ( theLabel.IsAttribute(SALOMEDSImpl_AttributeComment::GetID()) && theLabel.Depth() == 2) {
- return true;
- }
- return false;
-}
+++ /dev/null
-// File : SALOMEDSImpl_SComponent.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_SCOMPONENT_H__
-#define __SALOMEDSIMPL_SCOMPONENT_H__
-
-//SALOMEDSImpl headers
-#include "SALOMEDSImpl_SObject.hxx"
-
-//Handle definition
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_SComponent, SALOMEDSImpl_SObject )
-
-// std C++ headers
-#include <iostream>
-
-// Cascade headers
-#include <TDF_Label.hxx>
-#include <SALOMEDSImpl_SObject.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Tool.hxx>
-#include <stdio.h>
-
-class SALOMEDSImpl_SComponent : public SALOMEDSImpl_SObject
-{
-public:
-
- SALOMEDSImpl_SComponent(const TDF_Label& lab);
-
- ~SALOMEDSImpl_SComponent();
-
- virtual TCollection_AsciiString ComponentDataType();
- virtual bool ComponentIOR(TCollection_AsciiString& theID);
- static bool IsA(const TDF_Label& theLabel);
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_SComponent )
-
-};
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_SComponentIterator.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_SComponentIterator.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-
-using namespace std;
-
-//============================================================================
-/*! Function : constructor
- *
- */
-//============================================================================
-
-SALOMEDSImpl_SComponentIterator::SALOMEDSImpl_SComponentIterator(const Handle(TDocStd_Document)& theDocument)
-{
- _lab = theDocument->Main();
- _it.Initialize (_lab);
-}
-
-//============================================================================
-/*! Function : Init
- *
- */
-//============================================================================
-void SALOMEDSImpl_SComponentIterator::Init()
-{
- _it.Initialize (_lab);
-}
-
-//============================================================================
-/*! Function : More
- *
- */
-//============================================================================
-bool SALOMEDSImpl_SComponentIterator::More()
-{
- if (!_it.More())
- return false;
- TDF_Label L = _it.Value();
- if (SALOMEDSImpl_SComponent::IsA(L))
- return true;
-
- return _it.More();
-}
-
- //============================================================================
-/*! Function : Next
- */
-//============================================================================
-void SALOMEDSImpl_SComponentIterator::Next()
-{
- _it.Next();
-}
-
-
-//============================================================================
-/*! Function : Value
- *
- */
-//============================================================================
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_SComponentIterator::Value()
-{
- return SALOMEDSImpl_Study::SComponent(_it.Value());
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_SComponentIterator_i.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_SCOMPONENTITERATOR_H__
-#define __SALOMEDSIMPL_SCOMPONENTITERATOR_H__
-
-
-//SALOMEDSImpl headers
-#include "SALOMEDSImpl_SComponent.hxx"
-
-// Cascade headers
-#include <TDocStd_Document.hxx>
-#include <TDF_ChildIterator.hxx>
-#include <TDF_Label.hxx>
-#include <stdio.h>
-
-class Standard_EXPORT SALOMEDSImpl_SComponentIterator
-{
-private:
-
- TDF_ChildIterator _it;
- TDF_Label _lab;
-
-public:
-
- SALOMEDSImpl_SComponentIterator(const SALOMEDSImpl_SComponentIterator& theIterator)
- {
- _it = theIterator._it;
- _lab = theIterator._lab;
- }
-
- SALOMEDSImpl_SComponentIterator() {};
-
- SALOMEDSImpl_SComponentIterator(const Handle(TDocStd_Document)& theDocument);
-
- ~SALOMEDSImpl_SComponentIterator() {};
-
- virtual void Init();
- virtual bool More();
- virtual void Next();
- virtual Handle(SALOMEDSImpl_SComponent) Value();
-};
-#endif
+++ /dev/null
-// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server
-// File : SALOMEDSImpl_SObject.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_Attributes.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-
-using namespace std;
-
-#include <TDF_AttributeIterator.hxx>
-#include <map>
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_SObject, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_SObject, MMgt_TShared )
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_SObject::SALOMEDSImpl_SObject(const TDF_Label& theLabel)
- :_lab(theLabel)
-{
- _value = "";
- _type = "";
- _name = "";
-}
-
-//============================================================================
-/*! Function : Desctructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_SObject::~SALOMEDSImpl_SObject()
-{}
-
-//============================================================================
-/*! Function : GetID
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_SObject::GetID()
-{
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry (_lab,anEntry);
- return anEntry;
-}
-
-//============================================================================
-/*! Function : GetFatherComponent
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_SObject::GetFatherComponent()
-{
- TDF_Label LF = _lab;
- while (!SALOMEDSImpl_SComponent::IsA(LF) && !LF.IsRoot()) {
- LF = LF.Father();
- }
-
- if(LF.IsRoot()) return NULL;
-
- return GetStudy()->GetSComponent(LF);
-}
-
-//============================================================================
-/*! Function : GetFather
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_SObject::GetFather()
-{
- return GetStudy()->GetSObject(_lab.Father());
-}
-
-
-//============================================================================
-/*! Function : GetStudy
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_Study) SALOMEDSImpl_SObject::GetStudy()
-{
- return SALOMEDSImpl_Study::GetStudy(_lab);
-}
-
-//============================================================================
-/*! Function : FindAttribute
- * Purpose : Find attribute of given type on this SObject
- */
-//============================================================================
-bool SALOMEDSImpl_SObject::FindAttribute(Handle(TDF_Attribute)& theAttribute,
- const TCollection_AsciiString& theTypeOfAttribute)
-{
- if(_lab.IsNull()) return Standard_False;
- Standard_GUID aGUID = GetGUID(theTypeOfAttribute);
- if (_lab.FindAttribute(aGUID, theAttribute)) return Standard_True;
- return Standard_False;
-}
-
-
-
-//============================================================================
-/*! Function : GetAllAttributes
- * Purpose : Returns list of all attributes for this sobject
- */
-//============================================================================
-Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_SObject::GetAllAttributes()
-{
- Standard_Integer NumAttr = _lab.NbAttributes();
- Handle(TColStd_HSequenceOfTransient) SeqOfAttr = new TColStd_HSequenceOfTransient();
- Handle(SALOMEDSImpl_GenericAttribute) anAttr;
- if (NumAttr != 0) {
- for(TDF_AttributeIterator iter(_lab);iter.More();iter.Next()) {
- anAttr = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(iter.Value());
- if(!anAttr.IsNull() && anAttr->Type() != "AttributeReference")
- SeqOfAttr->Append(anAttr);
- }
- }
- return SeqOfAttr;
-}
-
-
-//============================================================================
-/*! Function : ReferencedObject
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_SObject::ReferencedObject(Handle(SALOMEDSImpl_SObject)& theObject)
-{
- Handle(SALOMEDSImpl_AttributeReference) Ref;
- if (!_lab.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(),Ref))
- return false;
-
- theObject = GetStudy()->GetSObject(Ref->Get());
- return true;
-}
-
-//============================================================================
-/*! Function : FindSubObject
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_SObject::FindSubObject(int theTag, Handle(SALOMEDSImpl_SObject)& theObject)
-{
- TDF_Label L = _lab.FindChild(theTag, false);
- if (L.IsNull()) return false;
-
- theObject = GetStudy()->GetSObject(L);
- return true;
-
-}
-
-
-//============================================================================
-/*! Function : GetName
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_SObject::GetName()
-{
- TCollection_AsciiString aStr = "";
- Handle(SALOMEDSImpl_AttributeName) aName;
- if (_lab.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) {
- aStr = aName->Value();
- }
- return aStr;
-}
-
-//============================================================================
-/*! Function : GetComment
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_SObject::GetComment()
-{
- TCollection_AsciiString aStr = "";
- Handle(SALOMEDSImpl_AttributeComment) aComment;
- if (_lab.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aComment)) {
- aStr = aComment->Value();
- }
- return aStr;
-}
-
-//============================================================================
-/*! Function : GetIOR
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_SObject::GetIOR()
-{
- TCollection_AsciiString aStr = "";
- Handle(SALOMEDSImpl_AttributeIOR) anIOR;
- if (_lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anIOR)) {
- aStr = anIOR->Value();
- }
- return aStr;
-}
-
-
-Standard_GUID SALOMEDSImpl_SObject::GetGUID(const TCollection_AsciiString& theType)
-{
- __AttributeTypeToGUIDForSObject
-
- if (strncmp(theType.ToCString(), "AttributeTreeNodeGUID",21) == 0) {
- const char* aCType = theType.ToCString();
- char* aGUIDString = new char[40];
- sprintf(aGUIDString, &(aCType[21]));
- Standard_GUID aGUID = Standard_GUID(aGUIDString); // create tree node GUID by name
- delete(aGUIDString);
- return aGUID;
- }
- return Standard_GUID();
-}
-
-
+++ /dev/null
-// File : SALOMEDSImpl_SObject.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_SOBJECT_H__
-#define __SALOMEDSIMPL_SOBJECT_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_SObject, MMgt_TShared )
-
-class SALOMEDSImpl_SComponent;
-class Handle_SALOMEDSImpl_SComponent;
-class SALOMEDSImpl_Study;
-class Handle_SALOMEDSImpl_Study;
-
-// Cascade headers
-#include <TDF_Label.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-#include <Standard_NoSuchObject.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-
-class SALOMEDSImpl_SObject : public MMgt_TShared
-{
-protected:
- TDF_Label _lab;
- TCollection_AsciiString _name;
- TCollection_AsciiString _value;
- TCollection_AsciiString _type;
-
-public:
-
- Standard_EXPORT SALOMEDSImpl_SObject(const TDF_Label& theLabel);
- Standard_EXPORT ~SALOMEDSImpl_SObject();
-
- Standard_EXPORT virtual TCollection_AsciiString GetID();
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) GetFatherComponent();
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetFather() ;
- Standard_EXPORT virtual bool FindAttribute(Handle(TDF_Attribute)& theAttribute, const TCollection_AsciiString& theTypeOfAttribute);
- Standard_EXPORT virtual bool ReferencedObject(Handle(SALOMEDSImpl_SObject)& theObject) ;
- Standard_EXPORT virtual bool FindSubObject(int theTag, Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) GetStudy() ;
- Standard_EXPORT virtual TCollection_AsciiString Name() { return _name; }
- Standard_EXPORT virtual void Name(const TCollection_AsciiString& theName) { _name = theName; }
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) GetAllAttributes();
-
- Standard_EXPORT virtual TCollection_AsciiString GetName();
- Standard_EXPORT virtual TCollection_AsciiString GetComment();
- Standard_EXPORT virtual TCollection_AsciiString GetIOR();
-
- Standard_EXPORT virtual int Tag() { return _lab.Tag(); }
- Standard_EXPORT virtual int Depth() { return _lab.Depth(); }
-
- Standard_EXPORT virtual TDF_Label GetLabel() { return _lab; }
-
- Standard_EXPORT static Standard_GUID GetGUID(const TCollection_AsciiString& theTypeOfAttribute);
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_SObject )
-};
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_Study.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_Study.hxx"
-
-using namespace std;
-
-#include <TColStd_SequenceOfExtendedString.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-#include <TColStd_HSequenceOfAsciiString.hxx>
-#include <TDocStd_Application.hxx>
-#include <TDocStd_Owner.hxx>
-#include <TDF_LabelList.hxx>
-#include <TDF_ListIteratorOfLabelList.hxx>
-#include <CDM_Document.hxx>
-#include <CDM_Application.hxx>
-#include <TDF_ChildIDIterator.hxx>
-#include <TDF_ChildIterator.hxx>
-#include <TDF_AttributeIterator.hxx>
-
-#include "SALOMEDSImpl_ChildNodeIterator.hxx"
-#include "SALOMEDSImpl_Attributes.hxx"
-#include "SALOMEDSImpl_UseCaseIterator.hxx"
-#include "SALOMEDSImpl_AttributeReference.hxx"
-#include "SALOMEDSImpl_StudyHandle.hxx"
-#include "SALOMEDSImpl_Tool.hxx"
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_Study, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_Study, MMgt_TShared )
-
-#define DIRECTORYID 16661
-#define FILELOCALID 26662
-#define FILEID "FILE: "
-
-//============================================================================
-/*! Function : SALOMEDSImpl_Study
- * Purpose : SALOMEDSImpl_Study constructor
- */
-//============================================================================
-SALOMEDSImpl_Study::SALOMEDSImpl_Study(const Handle(TDocStd_Document)& doc,
- const TCollection_AsciiString& study_name)
-{
- doc->SetUndoLimit(1); // mpv (IPAL9237): if there is no undo limit, operations mechanism couldn't work
- _name = study_name;
- _doc = doc;
- _Saved = false ;
- _URL = "";
- _StudyId = -1;
- _autoFill = true;
- myNbPostponed.Append(0);
- myNbUndos = 0;
- _errorCode = "";
- _useCaseBuilder = new SALOMEDSImpl_UseCaseBuilder(_doc);
- _builder = new SALOMEDSImpl_StudyBuilder(this);
- _cb = new SALOMEDSImpl_Callback(_useCaseBuilder);
- //Put on the root label a StudyHandle attribute to store the address of this object
- //It will be used to retrieve the study object by TDF_Label that belongs to the study
- SALOMEDSImpl_StudyHandle::Set(_doc->Main().Root(), this);
-}
-
-
-//============================================================================
-/*! Function : ~SALOMEDSImpl_Study
- * Purpose : SALOMEDSImpl_Study destructor
- */
-//============================================================================
-SALOMEDSImpl_Study::~SALOMEDSImpl_Study()
-{}
-
-//============================================================================
-/*! Function : GetPersistentReference
- * Purpose : Get persistent reference of study (idem URL())
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Study::GetPersistentReference()
-{
- _errorCode = "";
- return URL();
-}
-//============================================================================
-/*! Function : GetTransientReference
- * Purpose : Get IOR of the Study (registred in OCAF document in doc->Root)
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Study::GetTransientReference()
-{
- _errorCode = "";
- TCollection_AsciiString IOR = "";
-
- Handle(SALOMEDSImpl_AttributeIOR) Att;
- TDF_Label _lab = _doc->GetData()->Root();
- if (_lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),Att)) {
- IOR = Att->Value();
- }
- else {
- _errorCode = "IOR is empty";
- }
-
- return IOR;
-}
-
-void SALOMEDSImpl_Study::SetTransientReference(const TCollection_AsciiString& theIOR)
-{
- _errorCode = "";
-
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = GetProperties();
- int aLocked = aProp->IsLocked();
- if (aLocked) aProp->SetLocked(Standard_False);
-
- // Assign the value of the IOR in the study->root
- SALOMEDSImpl_AttributeIOR::Set(_doc->Main().Root(), theIOR);
-
- if (aLocked) aProp->SetLocked(Standard_True);
-}
-
-//============================================================================
-/*! Function : IsEmpty
- * Purpose : Detect if study is empty
- */
-//============================================================================
-bool SALOMEDSImpl_Study::IsEmpty()
-{
- _errorCode = "";
- if (_doc.IsNull()) return true;
- return _doc->IsEmpty();
-}
-
-//============================================================================
-/*! Function : FindComponent
- * Purpose : Find a Component with ComponentDataType = aComponentName
- */
-//============================================================================
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::FindComponent (const TCollection_AsciiString& aComponentName)
-{
- _errorCode = "";
- bool _find = false;
- TCollection_AsciiString name;
- SALOMEDSImpl_SComponentIterator itcomp = NewComponentIterator();
- Handle(SALOMEDSImpl_SComponent) compo;
-
- for (; itcomp.More(); itcomp.Next()) {
- Handle(SALOMEDSImpl_SComponent) SC = itcomp.Value();
- name = SC->ComponentDataType();
- if(aComponentName == name) {
- _find = true;
- return SC;
- }
- }
-
- if(!_find)
- {
- _errorCode = "No component was found";
- return NULL;
- }
- return compo;
-}
-
-//============================================================================
-/*! Function : FindComponentID
- * Purpose : Find a Component from it's ID
- */
-//============================================================================
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::FindComponentID(const TCollection_AsciiString& aComponentID)
-{
- _errorCode = "";
-
- // Iterate on each components defined in the study
- // Get the component ID and compare with aComponentID
- bool _find = false;
- TCollection_AsciiString ID;
- Handle(SALOMEDSImpl_SComponent) compo;
-
- SALOMEDSImpl_SComponentIterator itcomp = NewComponentIterator();
- for (; itcomp.More(); itcomp.Next()) {
- Handle(SALOMEDSImpl_SComponent) SC = itcomp.Value();
- ID = SC->GetID();
- if(aComponentID == ID)
- {
- // ComponentID found
- _find = true;
- compo = SC;
- }
- }
- if(!_find)
- {
- _errorCode = "No component was found";
- compo = NULL;
- }
-
- return compo;
-}
-
-//============================================================================
-/*! Function : FindObject
- * Purpose : Find an Object with SALOMEDSImpl_Name = anObjectName
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObject(const TCollection_AsciiString& anObjectName)
-{
- _errorCode = "";
-
- // Iterate to all components defined in the study
- // After testing the component name, iterate in all objects defined under
- // components (function _FindObject)
- bool _find = false;
- Handle(SALOMEDSImpl_SObject) RefSO = NULL;
-
- SALOMEDSImpl_SComponentIterator it = NewComponentIterator();
- for (; it.More();it.Next()){
- if(!_find)
- {
- Handle(SALOMEDSImpl_SComponent) SC = it.Value();
- if (SC->GetName() == anObjectName)
- {
- _find = true;
- RefSO = SC;
-
- }
- if (!_find) RefSO = _FindObject(SC, anObjectName, _find);
- }
- }
- if(RefSO.IsNull()) _errorCode = "No object was found";
- return RefSO;
-}
-
-//============================================================================
-/*! Function : FindObjectID
- * Purpose : Find an Object with ID = anObjectID
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObjectID(const TCollection_AsciiString& anObjectID)
-{
- _errorCode = "";
-
- // Convert aSO->GetID in TDF_Label.
- TDF_Label Lab;
- TDF_Tool::Label(_doc->Main().Data(), anObjectID, Lab);
-
- if (Lab.IsNull()) {
- _errorCode = "No label was found by ID";
- return NULL;
- }
- return GetSObject(Lab);
-
-}
-
-//============================================================================
-/*! Function : CreateObjectID
- * Purpose : Creates an Object with ID = anObjectID
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::CreateObjectID(const TCollection_AsciiString& anObjectID)
-{
- _errorCode = "";
-
- // Convert aSO->GetID in TDF_Label.
- TDF_Label Lab;
- TDF_Tool::Label(_doc->Main().Data(), anObjectID, Lab, Standard_True);
-
- if (Lab.IsNull()) {
- _errorCode = "Can not create a label";
- return NULL;
- }
- return GetSObject(Lab);
-
-}
-
-//============================================================================
-/*! Function : FindObjectByName
- * Purpose : Find Objects with SALOMEDSImpl_Name = anObjectName in a Component
- * : with ComponentDataType = aComponentName
- */
-//============================================================================
-Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_Study::FindObjectByName(const TCollection_AsciiString& anObjectName,
- const TCollection_AsciiString& aComponentName)
-{
- _errorCode = "";
-
- Handle(TColStd_HSequenceOfTransient) listSO = new TColStd_HSequenceOfTransient();
-
- Handle(SALOMEDSImpl_SComponent) compo = FindComponent(aComponentName) ;
- if ( compo.IsNull() ) {
- _errorCode = "Can not find the component";
- return listSO;
- }
-
- // Iterate on each object and subobject of the component
- // If objectName is found add it to the list of SObjects
- TCollection_AsciiString childName ;
-
- TCollection_AsciiString compoId = compo->GetID();
- Handle(SALOMEDSImpl_ChildIterator) it = NewChildIterator(compo);
- for ( ; it->More(); it->Next() ) {
-
- Handle(SALOMEDSImpl_SObject) CSO = it->Value();
- if ( CSO->GetName() == anObjectName ) {
- /* add to list */
- listSO->Append(CSO) ;
- }
-
- /* looks also for eventual children */
- bool found = false ;
- CSO = _FindObject( CSO, anObjectName, found ) ;
- if( found) {
- listSO->Append(CSO) ;
- }
- }
-
- return listSO;
-}
-
-
-
-//============================================================================
-/*! Function : FindObjectIOR
- * Purpose : Find an Object with IOR = anObjectIOR
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObjectIOR(const TCollection_AsciiString& anObjectIOR)
-{
- _errorCode = "";
-
- // firstly searching in the datamap for optimization
- if (myIORLabels.IsBound(anObjectIOR)) {
- Handle(SALOMEDSImpl_SObject) aResult = GetSObject(myIORLabels.Find(anObjectIOR));
- // 11 oct 2002: forbidden attributes must be checked here
- if (!aResult->GetLabel().IsAttribute(SALOMEDSImpl_AttributeIOR::GetID())) {
- myIORLabels.UnBind(anObjectIOR);
- } else
- return aResult;
- }
- // Iterate to all components defined in the study
- // After testing the component name, iterate in all objects defined under
- // components (function _FindObject)
- bool _find = false;
- Handle(SALOMEDSImpl_SObject) RefSO = NULL;
-
- SALOMEDSImpl_SComponentIterator it = NewComponentIterator();
- Handle(SALOMEDSImpl_SComponent) SC;
- for (; it.More();it.Next()){
- if(!_find)
- {
- SC = it.Value();
- TCollection_AsciiString ior = SC->GetIOR();
- if (ior != "")
- {
- if (ior == anObjectIOR)
- {
- _find = true;
- RefSO = SC;
- }
- }
- if (!_find)
- RefSO = _FindObjectIOR(SC, anObjectIOR, _find);
- }
- }
-
- if(RefSO.IsNull()) _errorCode = "No object was found";
- return RefSO;
-}
-
-//============================================================================
-/*! Function : FindObjectByPath
- * Purpose : Find an Object by its path = thePath
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObjectByPath(const TCollection_AsciiString& thePath)
-{
- _errorCode = "";
-
- TCollection_AsciiString aPath(thePath), aToken;
- Handle(SALOMEDSImpl_SObject) aSO = NULL;
- int i = 1, aLength = aPath.Length();
- bool isRelative = false;
-
- if(aLength == 0) { //Empty path - return the current context
- return GetSObject(_current);
- }
-
- if(aPath.Value(1) != '/') //Relative path
- isRelative = true;
-
- TDF_ChildIterator anIterator;
- TDF_Label aLabel;
- Handle(SALOMEDSImpl_AttributeName) anAttr;
-
- if(isRelative) {
- if(_current.IsNull()) return NULL;
- anIterator.Initialize(_current, Standard_False);
- }
- else {
- if(aPath.Length() == 1 && aPath.Value(1) == '/') { //Root
- return GetSObject(_doc->Main());
- }
- anIterator.Initialize(_doc->Main(), Standard_False);
- }
-
- while(i <= aLength) {
-
- aToken = aPath.Token("/", i);
- if(aToken.Length() == 0) break;
-
- for ( ; anIterator.More(); anIterator.Next() ) {
- aLabel = anIterator.Value();
- if(aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), anAttr)) {
- if(anAttr->Value() == aToken) {
- aToken = aPath.Token("/", i+1); //Check if it was the last part of the path
- if(aToken.Length() == 0) { //The searched label is found (no part of the path is left)
- return GetSObject(aLabel);
- }
-
- anIterator.Initialize(aLabel, Standard_False);
- break;
- }
- }
- }
-
- i++;
- }
-
- if(aSO.IsNull()) _errorCode = "No object was found";
- return aSO;
-}
-
-//============================================================================
-/*! Function : GetObjectPath
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Study::GetObjectPath(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- _errorCode = "";
-
- TCollection_AsciiString aPath("");
- if(theObject.IsNull()) {
- _errorCode = "Null object";
- return aPath.ToCString();
- }
-
- TCollection_AsciiString aName = theObject->GetName();
- if(!aName.IsEmpty() && aName != "" ) {
- TCollection_AsciiString aValue((char*)aName.ToCString());
- aValue.Prepend("/");
- aValue += aPath;
- aPath = aValue;
- Handle(SALOMEDSImpl_SObject) aFather = theObject->GetFather();
- if(!aFather.IsNull()) {
- aName = aFather->GetName();
- if(!aName.IsEmpty() && aName != "") {
- aValue = (char*)GetObjectPath(aFather).ToCString();
- aPath = aValue + aPath;
- }
- }
- }
-
- return aPath;
-}
-
-
-//============================================================================
-/*! Function : GetObjectPathByIOR
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Study::GetObjectPathByIOR(const TCollection_AsciiString& theIOR)
-{
- _errorCode = "";
-
- TCollection_AsciiString aPath;
- Handle(SALOMEDSImpl_SObject) so = FindObjectIOR(theIOR);
- if(so.IsNull()) {
- _errorCode = "No SObject was found by IOR";
- return aPath;
- }
-
- return GetObjectPath(so);
-}
-
-
-//============================================================================
-/*! Function : SetContext
- * Purpose : Sets the current context
- */
-//============================================================================
-bool SALOMEDSImpl_Study::SetContext(const TCollection_AsciiString& thePath)
-{
- _errorCode = "";
- if(thePath.IsEmpty()) {
- _errorCode = "InvalidPath";
- return false;
- }
-
- TCollection_AsciiString aPath(thePath), aContext("");
- bool isInvalid = false;
- Handle(SALOMEDSImpl_SObject) aSO;
-
- if(aPath.Value(1) != '/') { //Relative path
- aContext = GetContext();
- aContext += '/';
- aContext += aPath;
- }
- else
- aContext = aPath;
-
- try {
- aSO = FindObjectByPath(aContext.ToCString());
- }
- catch( ... ) {
- isInvalid = true;
- }
-
- if(isInvalid || aSO.IsNull()) {
- _errorCode = "InvalidContext";
- return false;
- }
-
- TDF_Label aLabel = aSO->GetLabel();
- if(aLabel.IsNull()) {
- _errorCode = "InvalidContext";
- return false;
- }
- else
- _current = aLabel; //Set the current context
-
- return true;
-}
-
-//============================================================================
-/*! Function : GetContext
- * Purpose : Gets the current context
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Study::GetContext()
-{
- _errorCode = "";
-
- if(_current.IsNull()) {
- _errorCode = "InvaidContext";
- return "";
- }
- Handle(SALOMEDSImpl_SObject) so = GetSObject(_current);
- return GetObjectPath(so);
-}
-
-//============================================================================
-/*! Function : GetObjectNames
- * Purpose : method to get all object names in the given context (or in the current context, if 'theContext' is empty)
- */
-//============================================================================
-Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetObjectNames(const TCollection_AsciiString& theContext)
-{
- _errorCode = "";
-
- Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
- TDF_Label aLabel;
- if (theContext.IsEmpty()) {
- if(_current.IsNull()) {
- _errorCode = "InvalidContext";
- return aResultSeq;
- }
- aLabel = _current;
- } else {
- TDF_Label aTmp = _current;
- SetContext(theContext);
- aLabel = _current;
- _current = aTmp;
- }
- TDF_ChildIterator anIter(aLabel, Standard_False); // iterate all subchildren at all sublevels
- for(; anIter.More(); anIter.Next()) {
- TDF_Label aLabel = anIter.Value();
- Handle(SALOMEDSImpl_AttributeName) aName;
- if (aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) aResultSeq->Append(aName->Value());
- }
-
- return aResultSeq;
-}
-
-//============================================================================
-/*! Function : GetDirectoryNames
- * Purpose : method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
- */
-//============================================================================
-Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetDirectoryNames(const TCollection_AsciiString& theContext)
-{
- _errorCode = "";
-
- Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
- TDF_Label aLabel;
- if (theContext.IsEmpty()) {
- if(_current.IsNull()) {
- _errorCode = "InvalidContext";
- return aResultSeq;
- }
- aLabel = _current;
- } else {
- TDF_Label aTmp = _current;
- SetContext(theContext);
- aLabel = _current;
- _current = aTmp;
- }
- TDF_ChildIterator anIter(aLabel, Standard_False); // iterate first-level children at all sublevels
- for(; anIter.More(); anIter.Next()) {
- TDF_Label aLabel = anIter.Value();
- Handle(SALOMEDSImpl_AttributeLocalID) anID;
- if (aLabel.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(), anID)) {
- if (anID->Value() == DIRECTORYID) {
- Handle(SALOMEDSImpl_AttributeName) aName;
- if (aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) {
- aResultSeq->Append(aName->Value());
- }
- }
- }
- }
-
- return aResultSeq;
-}
-
-//============================================================================
-/*! Function : GetFileNames
- * Purpose : method to get all file names in the given context (or in the current context, if 'theContext' is empty)
- */
-//============================================================================
-Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetFileNames(const TCollection_AsciiString& theContext)
-{
- _errorCode = "";
-
- Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
- TDF_Label aLabel;
- if (theContext.IsEmpty()) {
- if(_current.IsNull()) {
- _errorCode = "InvalidContext";
- return aResultSeq;
- }
- aLabel = _current;
- } else {
- TDF_Label aTmp = _current;
- SetContext(theContext);
- aLabel = _current;
- _current = aTmp;
- }
- TDF_ChildIterator anIter(aLabel, Standard_False); // iterate all subchildren at all sublevels
- for(; anIter.More(); anIter.Next()) {
- TDF_Label aLabel = anIter.Value();
- Handle(SALOMEDSImpl_AttributeLocalID) anID;
- if (aLabel.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(), anID)) {
- if (anID->Value() == FILELOCALID) {
- Handle(SALOMEDSImpl_AttributePersistentRef) aName;
- if(aLabel.FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(), aName)) {
- TCollection_ExtendedString aFileName = aName->Value();
- if(aFileName.Length() > 0)
- aResultSeq->Append(aFileName.Split(strlen(FILEID)));
- }
- }
- }
- }
-
- return aResultSeq;
-}
-
-//============================================================================
-/*! Function : GetComponentNames
- * Purpose : method to get all components names
- */
-//============================================================================
-Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetComponentNames(const TCollection_AsciiString& theContext)
-{
- _errorCode = "";
-
- Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
- TDF_ChildIterator anIter(_doc->Main(), Standard_False); // iterate all subchildren at first level
- for(; anIter.More(); anIter.Next()) {
- TDF_Label aLabel = anIter.Value();
- Handle(SALOMEDSImpl_AttributeName) aName;
- if (aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) aResultSeq->Append(aName->Value());
- }
-
- return aResultSeq;
-}
-
-//============================================================================
-/*! Function : NewChildIterator
- * Purpose : Create a ChildIterator from an SObject
- */
-//============================================================================
-Handle(SALOMEDSImpl_ChildIterator) SALOMEDSImpl_Study::NewChildIterator(const Handle(SALOMEDSImpl_SObject)& aSO)
-{
- _errorCode = "";
- return new SALOMEDSImpl_ChildIterator(aSO);
-}
-
-
-//============================================================================
-/*! Function : NewComponentIterator
- * Purpose : Create a SComponentIterator
- */
-//============================================================================
-SALOMEDSImpl_SComponentIterator SALOMEDSImpl_Study::NewComponentIterator()
-{
- _errorCode = "";
- return SALOMEDSImpl_SComponentIterator(_doc);
-}
-
-
-//============================================================================
-/*! Function : NewBuilder
- * Purpose : Create a StudyBuilder
- */
-//============================================================================
-Handle(SALOMEDSImpl_StudyBuilder) SALOMEDSImpl_Study::NewBuilder()
-{
- _errorCode = "";
- if(_autoFill) {
- _builder->SetOnAddSObject(_cb);
- _builder->SetOnRemoveSObject(_cb);
- }
- return _builder;
-
-}
-
-//============================================================================
-/*! Function : Name
- * Purpose : get study name
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Study::Name()
-{
- _errorCode = "";
- return _name;
-}
-
-//============================================================================
-/*! Function : Name
- * Purpose : set study name
- */
-//============================================================================
-void SALOMEDSImpl_Study::Name(const TCollection_AsciiString& name)
-{
- _errorCode = "";
- _name = name;
-}
-
-//============================================================================
-/*! Function : IsSaved
- * Purpose : get if study has been saved
- */
-//============================================================================
-bool SALOMEDSImpl_Study::IsSaved()
-{
- _errorCode = "";
- return _Saved;
-}
-
-//============================================================================
-/*! Function : IsSaved
- * Purpose : set if study has been saved
- */
-//============================================================================
-void SALOMEDSImpl_Study::IsSaved(bool save)
-{
- _errorCode = "";
- _Saved = save;
- if(save) _doc->UnModify();
-}
-
-//============================================================================
-/*! Function : IsModified
- * Purpose : Detect if a Study has been modified since it has been saved
- */
-//============================================================================
-bool SALOMEDSImpl_Study::IsModified()
-{
- _errorCode = "";
-
- // True if is modified
- if (_doc->IsModified()) return true;
-
- return false;
-}
-
-//============================================================================
-/*! Function : URL
- * Purpose : get URL of the study (persistent reference of the study)
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Study::URL()
-{
- _errorCode = "";
- return _URL;
-}
-
-//============================================================================
-/*! Function : URL
- * Purpose : set URL of the study (persistent reference of the study)
- */
-//============================================================================
-void SALOMEDSImpl_Study::URL(const TCollection_AsciiString& url)
-{
- _errorCode = "";
- _URL = url;
-
- /*jfa: Now name of SALOMEDS study will correspond to name of SalomeApp study
- TCollection_AsciiString tmp(_URL);
-
- char *aName = (char*)tmp.ToCString();
- char *adr = strtok(aName, "/");
- while (adr)
- {
- aName = adr;
- adr = strtok(NULL, "/");
- }
- Name(aName);*/
- Name(url);
-}
-
-
-//============================================================================
-/*! Function : _FindObject
- * Purpose : Find an Object with SALOMEDSImpl_Name = anObjectName
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::_FindObject(const Handle(SALOMEDSImpl_SObject)& SO,
- const TCollection_AsciiString& theObjectName,
- bool& _find)
-{
- if(SO.IsNull()) return NULL;
-
- // Iterate on each objects and subobjects of the component
- // If objectName find, stop the loop and get the object reference
- Handle(SALOMEDSImpl_SObject) RefSO;
- Handle(SALOMEDSImpl_AttributeName) anAttr;
-
- TCollection_AsciiString soid = SO->GetID();
- TDF_ChildIterator it(SO->GetLabel());
- for (; it.More(); it.Next()){
- if(!_find)
- {
- if (it.Value().FindAttribute(SALOMEDSImpl_AttributeName::GetID(), anAttr))
- {
- TCollection_AsciiString Val(anAttr->Value());
- if (Val == theObjectName)
- {
- RefSO = GetSObject(it.Value());
- _find = true;
- }
- }
- if (!_find) RefSO = _FindObject(GetSObject(it.Value()), theObjectName, _find);
- }
- }
- return RefSO;
-}
-
-//============================================================================
-/*! Function : _FindObjectIOR
- * Purpose : Find an Object with SALOMEDSImpl_IOR = anObjectIOR
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject)
-SALOMEDSImpl_Study::_FindObjectIOR(const Handle(SALOMEDSImpl_SObject)& SO,
- const TCollection_AsciiString& theObjectIOR,
- bool& _find)
-{
- if(SO.IsNull()) return NULL;
-
- // Iterate on each objects and subobjects of the component
- // If objectName find, stop the loop and get the object reference
- Handle(SALOMEDSImpl_SObject) RefSO, aSO;
- Handle(SALOMEDSImpl_AttributeIOR) anAttr;
-
- TDF_ChildIterator it(SO->GetLabel());
- for (; it.More();it.Next()){
- if(!_find)
- {
- if (it.Value().FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
- {
- TCollection_AsciiString Val(anAttr->Value());
- if (Val == theObjectIOR)
- {
- RefSO = GetSObject(it.Value());
- _find = true;
- }
- }
- aSO = GetSObject(it.Value());
- if (!_find) RefSO = _FindObjectIOR(aSO, theObjectIOR, _find);
- }
- }
- return RefSO;
-}
-
-bool SALOMEDSImpl_Study::IsLocked()
-{
- _errorCode = "";
- return GetProperties()->IsLocked();
-}
-
-int SALOMEDSImpl_Study::StudyId()
-{
- _errorCode = "";
- return _StudyId;
-}
-
-void SALOMEDSImpl_Study::StudyId(int id)
-{
- _errorCode = "";
- _StudyId = id;
-}
-
-void SALOMEDSImpl_Study::UpdateIORLabelMap(const TCollection_AsciiString& anIOR,const TCollection_AsciiString& anEntry)
-{
- _errorCode = "";
- TDF_Label aLabel;
- char* anEn = (char*)anEntry.ToCString();
- char* IOR = (char*)anIOR.ToCString();
- TDF_Tool::Label(_doc->GetData(),anEn, aLabel, Standard_True);
- if (myIORLabels.IsBound(TCollection_ExtendedString(IOR))) myIORLabels.UnBind(TCollection_ExtendedString(IOR));
- myIORLabels.Bind(TCollection_ExtendedString(IOR), aLabel);
-}
-
-Handle(SALOMEDSImpl_Study) SALOMEDSImpl_Study::GetStudy(const TDF_Label& theLabel)
-{
- Handle(SALOMEDSImpl_StudyHandle) Att;
- if (theLabel.Root().FindAttribute(SALOMEDSImpl_StudyHandle::GetID(),Att)) {
- return Att->GetHandle();
- }
- return NULL;
-}
-
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::SObject(const TDF_Label& theLabel)
-{
- return GetStudy(theLabel)->GetSObject(theLabel);
-}
-
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::SComponent(const TDF_Label& theLabel)
-{
- return GetStudy(theLabel)->GetSComponent(theLabel);
-}
-
-
-void SALOMEDSImpl_Study::IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR)& theAttribute)
-{
- TCollection_AsciiString aString;
- TDF_Tool::Entry(theAttribute->Label(), aString);
- GetStudy(theAttribute->Label())->UpdateIORLabelMap(theAttribute->Value(), aString);
-}
-
-Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_Study::FindDependances(const Handle(SALOMEDSImpl_SObject)& anObject)
-{
- _errorCode = "";
- Handle(TColStd_HSequenceOfTransient) aSeq;
-
- Handle(SALOMEDSImpl_AttributeTarget) aTarget;
- if (anObject->GetLabel().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(), aTarget)) {
- return aTarget->Get();
- }
-
- return aSeq;
-}
-
-
-Handle(SALOMEDSImpl_AttributeStudyProperties) SALOMEDSImpl_Study::GetProperties()
-{
- _errorCode = "";
- return SALOMEDSImpl_AttributeStudyProperties::Set(_doc->Main());
-}
-
-TCollection_AsciiString SALOMEDSImpl_Study::GetLastModificationDate()
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = GetProperties();
-
- Handle(TColStd_HSequenceOfExtendedString) aNames;
- Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
- aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
-
- int aLastIndex = aNames->Length();
- char aResult[20];
- sprintf(aResult, "%2.2d/%2.2d/%4.4d %2.2d:%2.2d",
- (int)(aDays->Value(aLastIndex)),(int)(aMonths->Value(aLastIndex)), (int)(aYears->Value(aLastIndex)),
- (int)(aHours->Value(aLastIndex)), (int)(aMinutes->Value(aLastIndex)));
- TCollection_AsciiString aResStr (aResult);
- return aResStr;
-}
-
-Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetModificationsDate()
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = GetProperties();
-
- Handle(TColStd_HSequenceOfExtendedString) aNames;
- Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
- aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
-
- int anIndex, aLength = aNames->Length();
- Handle(TColStd_HSequenceOfAsciiString) aDates = new TColStd_HSequenceOfAsciiString;
-
- for (anIndex = 2; anIndex <= aLength; anIndex++) {
- char aDate[20];
- sprintf(aDate, "%2.2d/%2.2d/%4.4d %2.2d:%2.2d",
- (int)(aDays->Value(anIndex)), (int)(aMonths->Value(anIndex)), (int)(aYears->Value(anIndex)),
- (int)(aHours->Value(anIndex)), (int)(aMinutes->Value(anIndex)));
- aDates->Append(aDate);
- }
- return aDates;
-}
-
-
-
-//============================================================================
-/*! Function : GetUseCaseBuilder
- * Purpose : Returns a UseCase builder
- */
-//============================================================================
-Handle(SALOMEDSImpl_UseCaseBuilder) SALOMEDSImpl_Study::GetUseCaseBuilder()
-{
- _errorCode = "";
- return _useCaseBuilder;
-}
-
-
-//============================================================================
-/*! Function : Close
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_Study::Close()
-{
- _errorCode = "";
- Handle(TDocStd_Application) anApp = Handle(TDocStd_Application)::DownCast(_doc->Application());
- if(!anApp.IsNull()) anApp->Close(_doc);
- _doc.Nullify();
- _mapOfSO.Clear();
- _mapOfSCO.Clear();
-}
-
-//============================================================================
-/*! Function : AddPostponed
- * Purpose :
- */
- //============================================================================
-void SALOMEDSImpl_Study::AddPostponed(const TCollection_AsciiString& theIOR)
-{
- _errorCode = "";
- if (!NewBuilder()->HasOpenCommand()) return;
- TCollection_AsciiString anIOR(theIOR);
- anIOR.Prepend("d");
- myPostponedIORs.Append(anIOR); // add prefix: deleted
- myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
-}
-
-//============================================================================
-/*! Function : AddCreatedPostponed
- * Purpose :
- */
- //============================================================================
-void SALOMEDSImpl_Study::AddCreatedPostponed(const TCollection_AsciiString& theIOR)
-{
- _errorCode = "";
- if (!NewBuilder()->HasOpenCommand()) return;
- TCollection_AsciiString anIOR(theIOR);
- anIOR.Prepend("c");
- myPostponedIORs.Append(anIOR); // add prefix: created
- myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
-}
-
-//============================================================================
-/*! Function : RemovePostponed
- * Purpose :
- */
-//============================================================================
-Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::RemovePostponed(const int theUndoLimit)
-{
- _errorCode = "";
-
- int anIndex;
- int anOld;
-
- int aUndoLimit = theUndoLimit;
- if (theUndoLimit < 0) aUndoLimit = 0;
-
- Handle(TColStd_HSequenceOfAsciiString) aSeq = new TColStd_HSequenceOfAsciiString;
-
- if (myNbUndos > 0) { // remove undone
- anOld = 0;
- for(anIndex = 1; anIndex < myNbPostponed.Length() - myNbUndos; anIndex++)
- anOld += myNbPostponed(anIndex);
- int aNew = myPostponedIORs.Length() - myNbPostponed.Last();
-
- for(anIndex = anOld + 1; anIndex <= aNew; anIndex++) {
- TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
- if (anIOR.Value(1) == 'c') {
- aSeq->Append(anIOR.Split(1).ToCString());
- }
- }
- if (anOld < aNew) myPostponedIORs.Remove(anOld + 1, aNew);
- if (myNbPostponed.Length() > 0) myNbPostponed.Remove(myNbPostponed.Length() - myNbUndos, myNbPostponed.Length() - 1);
-
- myNbUndos = 0;
- }
-
- if (myNbPostponed.Length() > aUndoLimit) { // remove objects, that can not be undone
- anOld = 0;
- for(anIndex = myNbPostponed.Length() - aUndoLimit; anIndex >= 1; anIndex--)
- anOld += myNbPostponed(anIndex);
- for(anIndex = 1; anIndex <= anOld; anIndex++) {
- TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
- if (anIOR.Value(1) == 'd') {
- aSeq->Append(anIOR.Split(1).ToCString());
- }
- }
- if (anOld > 0) myPostponedIORs.Remove(1, anOld);
- myNbPostponed.Remove(1, myNbPostponed.Length() - aUndoLimit);
- }
-
- if (theUndoLimit == -1) { // remove all IORs from the study on the study close
- TDF_ChildIDIterator anIter(_doc->GetData()->Root(), SALOMEDSImpl_AttributeIOR::GetID(), Standard_True);
- for(; anIter.More(); anIter.Next()) {
- Handle(SALOMEDSImpl_AttributeIOR) anAttr = Handle(SALOMEDSImpl_AttributeIOR)::DownCast(anIter.Value());
- aSeq->Append(anAttr->Value());
- }
- } else myNbPostponed.Append(0);
-
- return aSeq;
-}
-
-//============================================================================
-/*! Function : UndoPostponed
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_Study::UndoPostponed(const int theWay)
-{
- _errorCode = "";
-
- myNbUndos += theWay;
- // remove current postponed
- if (myNbPostponed.Last() > 0)
- myPostponedIORs.Remove(myPostponedIORs.Length() - myNbPostponed.Last() + 1, myPostponedIORs.Length());
- myNbPostponed(myNbPostponed.Length()) = 0;
-}
-
-
-//============================================================================
-/*! Function : GetSComponent
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::GetSComponent(const TCollection_AsciiString& theEntry)
-{
- Handle(SALOMEDSImpl_SComponent) aSCO;
- if(_mapOfSCO.IsBound(theEntry))
- aSCO = Handle(SALOMEDSImpl_SComponent)::DownCast(_mapOfSCO.Find(theEntry));
- else {
- TDF_Label aLabel;
- TDF_Tool::Label(_doc->GetData(), theEntry, aLabel);
- aSCO = new SALOMEDSImpl_SComponent(aLabel);
- _mapOfSCO.Bind(theEntry, aSCO);
- }
-
- return aSCO;
-}
-
-//============================================================================
-/*! Function : GetSComponent
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::GetSComponent(const TDF_Label& theLabel)
-{
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(theLabel, anEntry);
- return GetSComponent(anEntry);
-}
-
-//============================================================================
-/*! Function : GetSObject
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::GetSObject(const TCollection_AsciiString& theEntry)
-{
- Handle(SALOMEDSImpl_SObject) aSO;
- if(_mapOfSO.IsBound(theEntry))
- aSO = Handle(SALOMEDSImpl_SObject)::DownCast(_mapOfSO.Find(theEntry));
- else {
- TDF_Label aLabel;
- TDF_Tool::Label(_doc->GetData(), theEntry, aLabel);
- aSO = new SALOMEDSImpl_SObject(aLabel);
- _mapOfSO.Bind(theEntry, aSO);
- }
-
- return aSO;
-}
-
-//============================================================================
-/*! Function : GetSObject
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::GetSObject(const TDF_Label& theLabel)
-{
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(theLabel, anEntry);
- return GetSObject(anEntry);
-}
-
-//============================================================================
-/*! Function : GetAttribute
- * Purpose :
- */
-//============================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_Study::GetAttribute(const TCollection_AsciiString& theEntry,
- const TCollection_AsciiString& theType)
-{
- Handle(SALOMEDSImpl_SObject) aSO = GetSObject(theEntry);
- Handle(TDF_Attribute) anAttr;
- aSO->FindAttribute(anAttr, theType);
- return anAttr;
-}
-
-//============================================================================
-/*! Function : DumpStudy
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_Study::DumpStudy(const TCollection_AsciiString& thePath,
- const TCollection_AsciiString& theBaseName,
- bool isPublished,
- SALOMEDSImpl_DriverFactory* theFactory)
-{
- _errorCode = "";
-
- if(theFactory == NULL) {
- _errorCode = "Null factory for creation of Engines";
- return false;
- }
-
- TColStd_SequenceOfExtendedString aSeq;
- TCollection_AsciiString aCompType, aFactoryType;
-
- //Build a list of all components in the Study
- SALOMEDSImpl_SComponentIterator itcomponent = NewComponentIterator();
-
- for (; itcomponent.More(); itcomponent.Next()) {
- Handle(SALOMEDSImpl_SComponent) sco = itcomponent.Value();
- aCompType = sco->ComponentDataType();
- //GEOM and MED are independent components
- if(aCompType == "GEOM" || aCompType == "MED") aSeq.Prepend(TCollection_ExtendedString(aCompType));
- else aSeq.Append(TCollection_ExtendedString(aCompType));
- }
-
-#ifdef WIN32
- TCollection_AsciiString aFileName=thePath+TCollection_AsciiString("\\")+theBaseName+TCollection_AsciiString(".py");
-#else
- TCollection_AsciiString aFileName=thePath+TCollection_AsciiString("/")+theBaseName+TCollection_AsciiString(".py");
-#endif
-
- //Create a file that will contain a main Study script
- fstream fp;
- fp.open(aFileName.ToCString(), ios::out);
-
-#ifdef WIN32
- bool isOpened = fp.is_open();
-#else
- bool isOpened = fp.rdbuf()->is_open();
-#endif
-
- if(!isOpened) {
- _errorCode = TCollection_AsciiString("Can't create a file ")+aFileName;
- return false;
- }
-
- TCollection_AsciiString aBatchModeScript = "salome";
-
- //Output to the main Study script required Python modules import, set sys.path and add a creation of the study.
- fp << GetDumpStudyComment().ToCString() << endl << endl;
- fp << "import sys" << endl;
- fp << "import " << aBatchModeScript << "\n" << endl;
- fp << "sys.path.insert( 0, \'" << thePath << "\')\n" << endl;
-
- Handle(TColStd_HSequenceOfAsciiString) aSeqOfFileNames = new TColStd_HSequenceOfAsciiString;
-
- //Iterate all components and create the componponents specific scripts.
- bool isOk = true;
- int aLength = aSeq.Length();
- for(int i = 1; i <= aLength; i++) {
-
- aCompType = aSeq.Value(i);
- Handle(SALOMEDSImpl_SComponent) sco = FindComponent(aCompType);
- SALOMEDSImpl_Driver* aDriver = NULL;
- // if there is an associated Engine call its method for saving
- TCollection_AsciiString IOREngine;
- try {
- if (!sco->ComponentIOR(IOREngine)) {
- if (!aCompType.IsEmpty()) {
-
- aDriver = theFactory->GetDriverByType(aCompType);
-
- if (aDriver != NULL) {
- Handle(SALOMEDSImpl_StudyBuilder) SB = NewBuilder();
- cout << "Before SB" << endl;
- if(!SB->LoadWith(sco, aDriver)) {
- _errorCode = SB->GetErrorCode();
- return false;
- }
- cout << "After SB" << endl;
- }
- else continue;
- }
- }
- else {
- aDriver = theFactory->GetDriverByIOR(IOREngine);
- }
- } catch(...) {
- _errorCode = "Can not restore information to dump it";
- return false;
- }
-
- if(aDriver == NULL) continue;
-
- bool isValidScript;
- long aStreamLength = 0;
- unsigned char* aStream = aDriver->DumpPython(this, isPublished, isValidScript, aStreamLength);
- if ( !isValidScript )
- isOk = false;
-
- //Create a file that will contain the component specific script
- fstream fp2;
-#ifdef WIN32
- aFileName=thePath+TCollection_AsciiString("\\");
-#else
- aFileName=thePath+TCollection_AsciiString("/");
-#endif
- TCollection_AsciiString aScriptName;
- aScriptName += theBaseName;
- aScriptName += "_";
- aScriptName += aCompType;
-
- aFileName += aScriptName+ TCollection_AsciiString(".py");
- aSeqOfFileNames->Append(aFileName);
-
- fp2.open(aFileName.ToCString(), ios::out);
-
-#ifdef WIN32
- isOpened = fp.is_open();
-#else
- isOpened = fp.rdbuf()->is_open();
-#endif
-
- if(!isOpened) {
- _errorCode = TCollection_AsciiString("Can't create a file ")+aFileName;
- SALOMEDSImpl_Tool::RemoveTemporaryFiles(thePath, aSeqOfFileNames, false);
- return false;
- }
-
- //Output the Python script generated by the component in the newly created file.
- fp2 << aStream;
- fp2.close();
-
- //Add to the main script a call to RebuildData of the generated by the component the Python script
- fp << "import " << aScriptName << endl;
- fp << aScriptName << ".RebuildData(" << aBatchModeScript << ".myStudy)" << endl;
- }
-
- fp << "salome.sg.updateObjBrowser(1)" << endl;
-
- fp.close();
- return isOk;
-}
-
-//=======================================================================
-//function : GetDumpStudyComment
-//purpose : return a header comment for a DumpStudy script
-//=======================================================================
-
-TCollection_AsciiString SALOMEDSImpl_Study::GetDumpStudyComment(const char* theComponentName)
-{
- TCollection_AsciiString txt
- ("### This file is generated by SALOME automatically by dump python functionality");
- if ( theComponentName )
- txt += TCollection_AsciiString(" of ") + (char*) theComponentName + " component";
- return txt;
-}
-
-void dumpSO(const Handle(SALOMEDSImpl_SObject)& theSO,
- fstream& fp,
- const TCollection_AsciiString& Tab,
- const Handle(SALOMEDSImpl_Study) theStudy);
-//============================================================================
-/*! Function : dump
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_Study::dump(const TCollection_AsciiString& theFileName)
-{
- //Create a file that will contain a main Study script
- fstream fp;
- fp.open(theFileName.ToCString(), ios::out);
-
-#ifdef WIN32
- bool isOpened = fp.is_open();
-#else
- bool isOpened = fp.rdbuf()->is_open();
-#endif
-
- if(!isOpened) {
- _errorCode = TCollection_AsciiString("Can't create a file ")+theFileName;
- cout << "### SALOMEDSImpl_Study::dump Error: " << _errorCode << endl;
- return;
- }
-
- Handle(SALOMEDSImpl_SObject) aSO = FindObjectID("0:1");
- fp << "0:1" << endl;
- Handle(SALOMEDSImpl_ChildIterator) Itr = NewChildIterator(aSO);
- TCollection_AsciiString aTab(" ");
- for(; Itr->More(); Itr->Next()) {
- dumpSO(Itr->Value(), fp, aTab, this);
- }
-
- fp.close();
-}
-
-
-void dumpSO(const Handle(SALOMEDSImpl_SObject)& theSO,
- fstream& fp,
- const TCollection_AsciiString& Tab,
- const Handle(SALOMEDSImpl_Study) theStudy)
-{
- TCollection_AsciiString aTab(Tab), anID(theSO->GetID());
- fp << aTab << anID << endl;
- TDF_AttributeIterator anItr(theSO->GetLabel());
- for(; anItr.More(); anItr.Next()) {
- Handle(SALOMEDSImpl_GenericAttribute) anAttr = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(anItr.Value());
-
- if(anAttr.IsNull()) {
- fp << Tab << " -- " << anItr.Value()->DynamicType();
- continue;
- }
-
- TCollection_AsciiString aType = anAttr->GetClassType();
- fp << Tab << " -- " << aType;
-
- if(aType == "AttributeReal") {
- fp << " : " << Handle(SALOMEDSImpl_AttributeReal)::DownCast(anAttr)->Value();
- }
- else if(aType == "AttributeInteger") {
- fp << " : " << Handle(SALOMEDSImpl_AttributeInteger)::DownCast(anAttr)->Value();
- }
- else if(aType == "AttributeName") {
- fp << " : " << Handle(SALOMEDSImpl_AttributeName)::DownCast(anAttr)->Value();
- }
- else if(aType == "AttributeComment") {
- fp << " : " << Handle(SALOMEDSImpl_AttributeComment)::DownCast(anAttr)->Value();
- }
- else if(aType == "AttributeReference") {
- fp << " : " << Handle(SALOMEDSImpl_AttributeReference)::DownCast(anAttr)->Save();
- }
- fp << endl;
- }
-
- Handle(SALOMEDSImpl_ChildIterator) Itr = theStudy->NewChildIterator(theSO);
- TCollection_AsciiString aNewTab(" ");
- aNewTab+=aTab;
- for(; Itr->More(); Itr->Next()) {
- dumpSO(Itr->Value(), fp, aNewTab, theStudy);
- }
-
- return;
-}
-
-void SALOMEDSImpl_Study::Modify()
-{
- _errorCode = "";
- _doc->Modify();
-}
+++ /dev/null
-// File : SALOMEDSImpl_Study.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_STUDY_I_H__
-#define __SALOMEDSIMPL_STUDY_I_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_Study, MMgt_TShared )
-
-// std C++ headers
-#include <iostream>
-
-// Cascade headers
-#include <TDocStd_Document.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_Label.hxx>
-#include <stdio.h>
-#include <TCollection_AsciiString.hxx>
-#include <TColStd_SequenceOfInteger.hxx>
-#include <TColStd_SequenceOfAsciiString.hxx>
-#include <TColStd_HSequenceOfAsciiString.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-#ifndef WNT
-#include <NCollection_DataMap.hxx>
-#else
-#include <NCollection_DataMap1.hxx>
-#endif
-
-//SALOMEDSImpl headers
-#include "SALOMEDSImpl_SComponentIterator.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_StudyBuilder.hxx"
-#include "SALOMEDSImpl_UseCaseBuilder.hxx"
-#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
-#include "SALOMEDSImpl_AttributeIOR.hxx"
-#include "SALOMEDSImpl_Callback.hxx"
-#include "SALOMEDSImpl_Driver.hxx"
-#include "SALOMEDSImpl_ChildIterator.hxx"
-
-class SALOMEDSImpl_StudyManager;
-class SALOMEDSImpl_GenericAttribute;
-
-#ifndef WNT
-typedef NCollection_DataMap <TCollection_AsciiString, Handle_Standard_Transient> DataMapOfAsciiStringTransient;
-typedef NCollection_DataMap <TCollection_AsciiString, TDF_Label> DataMapAsciiStringLabel;
-#else
-typedef NCollection_DataMap1 <TCollection_AsciiString, Handle_Standard_Transient> DataMapOfAsciiStringTransient;
-typedef NCollection_DataMap1 <TCollection_AsciiString, TDF_Label> DataMapAsciiStringLabel;
-#endif
-
-class SALOMEDSImpl_Study : public MMgt_TShared
-{
-private:
- TCollection_AsciiString _name;
- Handle(TDocStd_Document) _doc; // OCAF Document
- bool _Saved; // True if the Study is saved
- TCollection_AsciiString _URL; //URL of the persistent reference of the study
- int _StudyId;
- TDF_Label _current;
- bool _autoFill;
- TCollection_AsciiString _errorCode;
- Handle(SALOMEDSImpl_Callback) _cb;
- Handle(SALOMEDSImpl_StudyBuilder) _builder;
- Handle(SALOMEDSImpl_UseCaseBuilder) _useCaseBuilder;
-
- DataMapOfAsciiStringTransient _mapOfSO;
- DataMapOfAsciiStringTransient _mapOfSCO;
-
- // data structures for postponed destroying of object functionality
- TColStd_SequenceOfAsciiString myPostponedIORs; // ordered set of IORs
- TColStd_SequenceOfInteger myNbPostponed; // number of IOR in the each transaction
- int myNbUndos; // number of current Undos, made by user
- DataMapAsciiStringLabel myIORLabels;
-
-
- Handle(SALOMEDSImpl_SObject) _FindObject(const Handle(SALOMEDSImpl_SObject)& SO,
- const TCollection_AsciiString& anObjectName,
- bool& _find);
-
- Handle(SALOMEDSImpl_SObject) _FindObjectIOR(const Handle(SALOMEDSImpl_SObject)& SO,
- const TCollection_AsciiString& anObjectIOR,
- bool& _find);
-
-public:
-
- Standard_EXPORT static Handle(SALOMEDSImpl_Study) GetStudy(const TDF_Label& theLabel);
- Standard_EXPORT static Handle(SALOMEDSImpl_SObject) SObject(const TDF_Label& theLabel);
- Standard_EXPORT static Handle(SALOMEDSImpl_SComponent) SComponent(const TDF_Label& theLabel);
- Standard_EXPORT static void IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR)& theAttribute);
-
- //! standard constructor
- Standard_EXPORT SALOMEDSImpl_Study(const Handle(TDocStd_Document)&, const TCollection_AsciiString& study_name);
-
- //! standard destructor
- Standard_EXPORT virtual ~SALOMEDSImpl_Study();
-
- //! method to Get persistent reference of study (idem URL())
- Standard_EXPORT virtual TCollection_AsciiString GetPersistentReference();
-
- //! method to Get transient reference of study
- Standard_EXPORT virtual TCollection_AsciiString GetTransientReference();
-
- Standard_EXPORT virtual void SetTransientReference(const TCollection_AsciiString& theIOR);
-
- //! method to detect if a study is empty
- Standard_EXPORT virtual bool IsEmpty();
-
- //! method to Find a Component with ComponentDataType = aComponentName
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) FindComponent (const TCollection_AsciiString& aComponentName);
-
- //! method to Find a Component Find a Component from it's ID
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) FindComponentID(const TCollection_AsciiString& aComponentID);
-
- //! method to Find an Object with SALOMEDSImpl::Name = anObjectName
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObject(const TCollection_AsciiString& anObjectName);
-
-
- //! method to Find Object(s) with SALOMEDSImpl::Name=anObjectName in a component with ComponentDataType = aComponentName
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) FindObjectByName( const TCollection_AsciiString& anObjectName,
- const TCollection_AsciiString& aComponentName ) ;
-
- //! method to Find an Object with ID = anObjectID
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObjectID(const TCollection_AsciiString& anObjectID);
-
- //! method to Create an Object with ID = anObjectID
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) CreateObjectID(const TCollection_AsciiString& anObjectID);
-
- //! method to Find an Object with ID = anObjectIOR
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObjectIOR(const TCollection_AsciiString& anObjectIOR);
-
- //! method to Find an Object by its path
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObjectByPath(const TCollection_AsciiString& thePath);
-
- //! method to get a path of SObject
- Standard_EXPORT virtual TCollection_AsciiString GetObjectPath(const Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT TCollection_AsciiString GetObjectPathByIOR(const TCollection_AsciiString& theIOR);
-
- //! method to set a context: root ('/') is UserData component
- Standard_EXPORT virtual bool SetContext(const TCollection_AsciiString& thePath);
-
- //! method to get a context
- Standard_EXPORT virtual TCollection_AsciiString GetContext();
-
- //! method to get all object names in the given context (or in the current context, if 'theContext' is empty)
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetObjectNames(const TCollection_AsciiString& theContext);
-
- //! method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetDirectoryNames(const TCollection_AsciiString& theContext);
-
- //! method to get all file names in the given context (or in the current context, if 'theContext' is empty)
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetFileNames(const TCollection_AsciiString& theContext);
-
- //! method to get all components names
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetComponentNames(const TCollection_AsciiString& theContext);
-
- //! method to Create a ChildIterator from an SObject
- Standard_EXPORT virtual Handle(SALOMEDSImpl_ChildIterator) NewChildIterator(const Handle(SALOMEDSImpl_SObject)& aSO);
-
- //! method to Create a SComponentIterator
- Standard_EXPORT virtual SALOMEDSImpl_SComponentIterator NewComponentIterator();
-
- //! method to Create a StudyBuilder
- Standard_EXPORT virtual Handle(SALOMEDSImpl_StudyBuilder) NewBuilder();
-
- //! method to get study name
- Standard_EXPORT virtual TCollection_AsciiString Name();
-
- //! method to set study name
- Standard_EXPORT virtual void Name(const TCollection_AsciiString& name);
-
- //! method to get if study has been saved
- Standard_EXPORT virtual bool IsSaved();
-
- //! method to set if study has been saved
- Standard_EXPORT virtual void IsSaved(bool save);
-
- //! method to Detect if a Study has been modified since it has been saved
- Standard_EXPORT virtual bool IsModified();
-
- //! method to get URL of the study (idem GetPersistentReference)
- Standard_EXPORT virtual TCollection_AsciiString URL();
-
- //! method to set URL of the study
- Standard_EXPORT virtual void URL(const TCollection_AsciiString& url);
-
- Standard_EXPORT virtual bool IsLocked();
-
- Standard_EXPORT virtual int StudyId();
-
- Standard_EXPORT virtual void StudyId(int id);
-
- Standard_EXPORT virtual void UpdateIORLabelMap(const TCollection_AsciiString& anIOR, const TCollection_AsciiString& aLabel);
-
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) FindDependances(const Handle(SALOMEDSImpl_SObject)& anObject);
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_AttributeStudyProperties) SALOMEDSImpl_Study::GetProperties();
-
- Standard_EXPORT virtual TCollection_AsciiString GetLastModificationDate();
-
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetModificationsDate();
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_UseCaseBuilder) GetUseCaseBuilder();
-
- Standard_EXPORT virtual void Close();
-
- Standard_EXPORT void EnableUseCaseAutoFilling(bool isEnabled) { _errorCode = ""; _autoFill = isEnabled; }
-
- // postponed destroying of object functionality
- Standard_EXPORT virtual void AddPostponed(const TCollection_AsciiString& theIOR);
-
- Standard_EXPORT virtual void AddCreatedPostponed(const TCollection_AsciiString& theIOR);
-
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) RemovePostponed(const int theUndoLimit);
- // removes postponed IORs of old transaction
- // if theUndoLimit==0, removes all
- Standard_EXPORT virtual void UndoPostponed(const int theWay); // theWay = 1: resurrect objects,
- // theWay = -1: get back to the list of postponed
-
-
- Standard_EXPORT virtual TCollection_AsciiString GetErrorCode() { return _errorCode; }
- Standard_EXPORT virtual bool IsError() { return _errorCode != ""; }
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) GetSComponent(const TCollection_AsciiString& theEntry);
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) GetSComponent(const TDF_Label& theLabel);
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetSObject(const TCollection_AsciiString& theEntry);
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetSObject(const TDF_Label& theEntryLabel);
- Standard_EXPORT virtual Handle(TDF_Attribute) GetAttribute(const TCollection_AsciiString& theEntry,
- const TCollection_AsciiString& theType);
-
- Standard_EXPORT virtual bool HasCurrentContext() { return !_current.IsNull(); }
-
- Standard_EXPORT virtual bool DumpStudy(const TCollection_AsciiString& thePath,
- const TCollection_AsciiString& theBaseName,
- bool isPublished,
- SALOMEDSImpl_DriverFactory* theFactory);
-
- Standard_EXPORT static TCollection_AsciiString GetDumpStudyComment(const char* theComponentName = 0);
-
- Standard_EXPORT virtual Handle(TDocStd_Document) GetDocument() { return _doc; }
-
- //The method dump creates a txt file that contain a dump of the study, for debug use
- Standard_EXPORT void dump(const TCollection_AsciiString& theFileName);
-
- //This method marks the study as being modified
- Standard_EXPORT void Modify();
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_Study )
-
-friend class SALOMEDSImpl_StudyManager;
-friend class SALOMEDSImpl_GenericAttribute;
-};
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_StudyBuilder.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-
-#include "SALOMEDSImpl_Attributes.hxx"
-
-using namespace std;
-
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_StudyBuilder.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_Tool.hxx"
-
-#include <TDF_ChildIterator.hxx>
-#include <TDF_Label.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <SALOMEDSImpl_ChildNodeIterator.hxx>
-#include <TDF_ListIteratorOfAttributeList.hxx>
-
-#include <HDFOI.hxx>
-#include <stdlib.h>
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_StudyBuilder, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_StudyBuilder, MMgt_TShared )
-
-#define USE_CASE_LABEL_TAG 2
-#define DIRECTORYID 16661
-#define FILELOCALID 26662
-
-static void Translate_persistentID_to_IOR(TDF_Label& Lab, SALOMEDSImpl_Driver* driver, bool isMultiFile, bool isASCII);
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_StudyBuilder::SALOMEDSImpl_StudyBuilder(const Handle(Standard_Transient)& theOwner)
-{
- _errorCode = "";
- _study = theOwner;
- _doc = Handle(SALOMEDSImpl_Study)::DownCast(theOwner)->GetDocument();
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_StudyBuilder::~SALOMEDSImpl_StudyBuilder()
-{}
-
-//============================================================================
-/*! Function : NewComponent
- * Purpose : Create a new component (Scomponent)
- */
-//============================================================================
-Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_StudyBuilder::NewComponent(const TCollection_AsciiString& DataType)
-{
- _errorCode = "";
- CheckLocked();
- //Always create component under main label.
- TDF_Label L = _doc->Main();
-
- int imax = 0;
- for (TDF_ChildIterator it(L); it.More(); it.Next()) {
- if (it.Value().Tag() > imax)
- imax = it.Value().Tag();
- }
- imax++;
- TDF_Label NL = L.FindChild(imax);
-
- SALOMEDSImpl_AttributeComment::Set(NL, DataType);
-
- Handle(SALOMEDSImpl_SComponent) so = Handle(SALOMEDSImpl_Study)::DownCast(_study)->GetSComponent (NL);
-
- if(!_callbackOnAdd.IsNull()) _callbackOnAdd->OnAddSObject(so);
-
- _doc->Modify();
-
- return so;
-}
-
-//============================================================================
-/*! Function : DefineComponentInstance
- * Purpose : Add IOR attribute of a Scomponent
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::DefineComponentInstance(const Handle(SALOMEDSImpl_SComponent)& aComponent,
- const TCollection_AsciiString& IOR)
-{
- _errorCode = "";
-
- CheckLocked();
- if(aComponent.IsNull() || IOR.IsEmpty()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- //add IOR definition
- SALOMEDSImpl_AttributeIOR::Set(aComponent->GetLabel(), IOR);
-
- //_doc->Modify();
-
- return true;
-}
-
-//============================================================================
-/*! Function : RemoveComponent
- * Purpose : Delete a Scomponent
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::RemoveComponent(const Handle(SALOMEDSImpl_SComponent)& aComponent)
-{
- _errorCode = "";
- CheckLocked();
- return RemoveObject(aComponent);
-}
-
-//============================================================================
-/*! Function : NewObject
- * Purpose : Create a new SObject
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_StudyBuilder::NewObject(const Handle(SALOMEDSImpl_SObject)& theFatherObject)
-{
- _errorCode = "";
- CheckLocked();
-
- //Find label of father
- TDF_Label Lab = theFatherObject->GetLabel();
-
- //Create a new label
- int imax = 0;
- for (TDF_ChildIterator it(Lab); it.More(); it.Next()) {
- if (it.Value().Tag() > imax)
- imax = it.Value().Tag();
- }
- imax++;
- TDF_Label NewLab = Lab.FindChild(imax);
-
- Handle(SALOMEDSImpl_SObject) so = Handle(SALOMEDSImpl_Study)::DownCast(_study)->GetSObject(NewLab);
- if(!_callbackOnAdd.IsNull()) _callbackOnAdd->OnAddSObject(so);
-
- _doc->Modify();
- return so;
-}
-
-//============================================================================
-/*! Function : NewObjectToTag
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_StudyBuilder::NewObjectToTag(const Handle(SALOMEDSImpl_SObject)& theFatherObject,
- const int theTag)
-{
- _errorCode = "";
- CheckLocked();
- //Find label of father
- TDF_Label Lab = theFatherObject->GetLabel();
-
- //Create or find label
- TDF_Label NewLab = Lab.FindChild(theTag, 1);
-
- Handle(SALOMEDSImpl_SObject) so = Handle(SALOMEDSImpl_Study)::DownCast(_study)->GetSObject(NewLab);
-
- if(!_callbackOnAdd.IsNull()) _callbackOnAdd->OnAddSObject(so);
-
- _doc->Modify();
- return so;
-}
-
-//============================================================================
-/*! Function : RemoveObject
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::RemoveObject(const Handle(SALOMEDSImpl_SObject)& anObject)
-{
- _errorCode = "";
- CheckLocked();
- if(anObject.IsNull()) {
- _errorCode = "Null object";
- return false;
- }
-
- if(!_callbackOnRemove.IsNull()) _callbackOnRemove->OnRemoveSObject(anObject);
-
- TDF_Label Lab = anObject->GetLabel();
-
- Handle(SALOMEDSImpl_AttributeReference) aReference;
- if (Lab.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aReference)) {
- Handle(SALOMEDSImpl_AttributeTarget) aTarget;
- if (aReference->Get().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),aTarget))
- aTarget->Remove(SALOMEDSImpl_Study::SObject(Lab));
- }
-
- Handle(SALOMEDSImpl_AttributeIOR) anAttr; // postponed removing of CORBA objects
- if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(TCollection_AsciiString(anAttr->Value()).ToCString());
-
- Lab.ForgetAllAttributes();
-
- _doc->Modify();
-
- return true;
-}
-
-//============================================================================
-/*! Function : RemoveObjectWithChildren
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::RemoveObjectWithChildren(const Handle(SALOMEDSImpl_SObject)& anObject)
-{
- _errorCode = "";
- CheckLocked();
- if(anObject.IsNull()) {
- _errorCode = "Null object";
- return false;
- }
-
- if(!_callbackOnRemove.IsNull()) _callbackOnRemove->OnRemoveSObject(anObject);
-
- TDF_Label Lab = anObject->GetLabel();
-
- Handle(SALOMEDSImpl_AttributeReference) aReference;
- if (Lab.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aReference)) {
- Handle(SALOMEDSImpl_AttributeTarget) aTarget;
- if (aReference->Get().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),aTarget))
- aTarget->Remove(SALOMEDSImpl_Study::SObject(Lab));
- }
- Handle(SALOMEDSImpl_AttributeIOR) anAttr; // postponed removing of CORBA objects
- if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(TCollection_AsciiString(anAttr->Value()).ToCString());
-
- TDF_ChildIterator it(Lab, Standard_True);
- for(;it.More();it.Next()) {
- TDF_Label aLabel = it.Value();
- if (aLabel.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aReference)) {
- Handle(SALOMEDSImpl_AttributeTarget) aTarget;
- if (aReference->Get().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),aTarget))
- aTarget->Remove(SALOMEDSImpl_Study::SObject(aLabel));
- }
- Handle(SALOMEDSImpl_AttributeIOR) anAttr; // postponed removing of CORBA objects
- if (aLabel.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(TCollection_AsciiString(anAttr->Value()).ToCString());
- }
-
- Lab.ForgetAllAttributes(Standard_True);
-
- _doc->Modify();
-
- return true;
-}
-
-//============================================================================
-/*! Function : LoadWith
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::LoadWith(const Handle(SALOMEDSImpl_SComponent)& anSCO, SALOMEDSImpl_Driver* aDriver)
-{
- _errorCode = "";
-
- TDF_Label Lab = anSCO->GetLabel();
- Handle(SALOMEDSImpl_AttributePersistentRef) Att;
-
- //Find the current Url of the study
- if (_doc->Main().FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(),Att)) {
- int aLocked = anSCO->GetStudy()->GetProperties()->IsLocked();
- if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(false);
-
- TCollection_ExtendedString Res(Att->Value());
-
- Handle(SALOMEDSImpl_AttributeComment) type;
- TCollection_ExtendedString DataType;
- if (Lab.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(),type))
- DataType = type->Value();
-
- // associate the driver to the SComponent
- if(aDriver == NULL) {
- _errorCode = "Driver is null";
- return false;
- }
-
- // mpv 06.03.2003: SAL1927 - if component data if already loaded, it is not necessary to do it again
- Handle(SALOMEDSImpl_AttributeIOR) attrIOR;
- if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), attrIOR)) {
- if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(true);
- return true;
- }
-
- DefineComponentInstance (anSCO, aDriver->GetIOR());
-
- TCollection_AsciiString aHDFPath(Res);
-
- char* aHDFUrl;
- bool isASCII = false;
- if (HDFascii::isASCII(aHDFPath.ToCString())) {
- isASCII = true;
- char* aResultPath = HDFascii::ConvertFromASCIIToHDF(aHDFPath.ToCString());
- aHDFUrl = new char[strlen(aResultPath) + 19];
- sprintf(aHDFUrl, "%shdf_from_ascii.hdf", aResultPath);
- delete(aResultPath);
- } else {
- aHDFUrl = aHDFPath.ToCString();
- }
-
- //Open the Study HDF file
- HDFfile *hdf_file = new HDFfile(aHDFUrl);
-
- char aMultifileState[2];
- char ASCIIfileState[2];
- try {
- TCollection_AsciiString scoid = anSCO->GetID();
- hdf_file->OpenOnDisk(HDF_RDONLY);
- HDFgroup *hdf_group = new HDFgroup("DATACOMPONENT",hdf_file);
- hdf_group->OpenOnDisk();
- HDFgroup *hdf_sco_group = new HDFgroup(scoid.ToCString(), hdf_group);
- hdf_sco_group->OpenOnDisk();
-
- unsigned char* aStreamFile = NULL;
- int aStreamSize = 0;
-
- if (hdf_sco_group->ExistInternalObject("FILE_STREAM")) {
- HDFdataset *hdf_dataset = new HDFdataset("FILE_STREAM", hdf_sco_group);
- hdf_dataset->OpenOnDisk();
- aStreamSize = hdf_dataset->GetSize();
- aStreamFile = new unsigned char[aStreamSize];
- if(aStreamFile == NULL) throw HDFexception("Unable to open dataset FILE_STREAM");
- hdf_dataset->ReadFromDisk(aStreamFile);
- hdf_dataset->CloseOnDisk();
- hdf_dataset = 0;
- } else aStreamFile = NULL;
-
- HDFdataset *multifile_hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group);
- multifile_hdf_dataset->OpenOnDisk();
- multifile_hdf_dataset->ReadFromDisk(aMultifileState);
-
- HDFdataset *ascii_hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group);
- ascii_hdf_dataset->OpenOnDisk();
- ascii_hdf_dataset->ReadFromDisk(ASCIIfileState);
-
- // set path without file name from URL
- int aFileNameSize = Res.Length();
- char* aDir = new char[aFileNameSize];
- memcpy(aDir, TCollection_AsciiString(Res).ToCString(), aFileNameSize);
- for(int aCounter = aFileNameSize-1; aCounter>=0; aCounter--)
- if (aDir[aCounter] == '/') {
- aDir[aCounter+1] = 0;
- break;
- }
-
- bool aResult = (ASCIIfileState[0]=='A')?
- aDriver->LoadASCII(anSCO, aStreamFile, aStreamSize, aDir, aMultifileState[0]=='M'):
- aDriver->Load(anSCO, aStreamFile, aStreamSize, aDir, aMultifileState[0]=='M');
-
- if(aStreamFile != NULL) delete []aStreamFile;
-
- if(!aResult) {
- RemoveAttribute( anSCO, "AttributeIOR" );
-
- _errorCode = "Can't load component";
- throw HDFexception("Unable to load component");
- }
-
- if(aDir != NULL) delete []aDir;
-
- multifile_hdf_dataset->CloseOnDisk();
- multifile_hdf_dataset = 0;
- ascii_hdf_dataset->CloseOnDisk();
- ascii_hdf_dataset = 0;
-
- hdf_sco_group->CloseOnDisk();
- hdf_sco_group = 0;
- hdf_group->CloseOnDisk();
- hdf_group = 0;
- hdf_file->CloseOnDisk();
- delete hdf_file;
-
- if (isASCII) {
- Handle(TColStd_HSequenceOfAsciiString) aFilesToRemove = new TColStd_HSequenceOfAsciiString;
- aFilesToRemove->Append(aHDFUrl);
- SALOMEDSImpl_Tool::RemoveTemporaryFiles(SALOMEDSImpl_Tool::GetDirFromPath(aHDFUrl), aFilesToRemove, true);
- }
-
- delete aHDFUrl;
- }
- catch (HDFexception) {
- delete hdf_file;
-
- if (isASCII) {
- Handle(TColStd_HSequenceOfAsciiString) aFilesToRemove = new TColStd_HSequenceOfAsciiString;
- aFilesToRemove->Append(aHDFUrl);
- SALOMEDSImpl_Tool::RemoveTemporaryFiles(SALOMEDSImpl_Tool::GetDirFromPath(aHDFUrl), aFilesToRemove, true);
- }
- delete aHDFUrl;
-
- if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(true);
- _errorCode = "No persistent file";
- return false;
- }
-
- try {
- Translate_persistentID_to_IOR (Lab, aDriver, aMultifileState[0]=='M', ASCIIfileState[0] == 'A');
- } catch(...) {
- _errorCode = "Can not convert persistent IDs to IORs";
- return false;
- }
-
- if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(true);
- } else {
- _errorCode = "No persistent file";
- }
-
- return true;
-}
-
-
-//============================================================================
-/*! Function : Load
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::Load(const Handle(SALOMEDSImpl_SObject)& sco)
-{
- _errorCode = "Not implemented";
- return false;
-}
-
-//============================================================================
-/*! Function : FindOrCreateAttribute
- * Purpose : Add attribute of given type to SObject, if there is attribute of such type, returns
- * existing one
- */
-//============================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_StudyBuilder::FindOrCreateAttribute(const Handle(SALOMEDSImpl_SObject)& anObject,
- const TCollection_AsciiString& aTypeOfAttribute)
-{
- _errorCode = "";
- if(anObject.IsNull()) {
- _errorCode = "Invalid arguments";
- return NULL;
- }
-
- TDF_Label Lab = anObject->GetLabel();
- if(Lab.IsNull()) {
- _errorCode = "Null label";
- return NULL;
- }
-
- _doc->Modify();
-
- //The macro adds all necessary checks for standardly behaiving attributes
- __FindOrCreateAttributeForBuilder
-
- //Add checks for TreeNode and UserID attributes
- if (strncmp(aTypeOfAttribute.ToCString(), "AttributeTreeNode",17) == 0 ) {
- Standard_GUID aTreeNodeGUID;
- if (strcmp(aTypeOfAttribute.ToCString(), "AttributeTreeNode") == 0) {
- aTreeNodeGUID = SALOMEDSImpl_AttributeTreeNode::GetDefaultTreeID();
- } else {
- char* aGUIDString = new char[40];
- char* aType = (char*)aTypeOfAttribute.ToCString();
- sprintf(aGUIDString, &(aType[21]));
- aTreeNodeGUID = Standard_GUID(aGUIDString); // create tree node GUID by name
- delete(aGUIDString);
- }
- Handle(SALOMEDSImpl_AttributeTreeNode) anAttr;
- if (!Lab.FindAttribute(aTreeNodeGUID, anAttr)) {
- CheckLocked();
- anAttr = SALOMEDSImpl_AttributeTreeNode::Set(Lab, aTreeNodeGUID);
- }
- return anAttr;
- }
-
- if (strncmp(aTypeOfAttribute.ToCString(), "AttributeUserID",15) == 0 ) {
- Handle(SALOMEDSImpl_AttributeUserID) anAttr;
- if (!Lab.FindAttribute(SALOMEDSImpl_AttributeUserID::DefaultID(), anAttr)) {
- CheckLocked();
- anAttr = SALOMEDSImpl_AttributeUserID::Set(Lab, SALOMEDSImpl_AttributeUserID::DefaultID());
- }
- return anAttr;
- }
- _errorCode = "Can not create an attribute";
-
- return NULL;
-}
-
-//============================================================================
-/*! Function : FindAttribute
- * Purpose : Find attribute of given type assigned SObject, returns Standard_True if it is found
- */
-//============================================================================
-
-bool SALOMEDSImpl_StudyBuilder::FindAttribute(const Handle(SALOMEDSImpl_SObject)& anObject,
- Handle(TDF_Attribute)& anAttribute,
- const TCollection_AsciiString& aTypeOfAttribute)
-{
- _errorCode = "";
- if(anObject.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- TDF_Label Lab = anObject->GetLabel();
- if (Lab.FindAttribute(SALOMEDSImpl_SObject::GetGUID(aTypeOfAttribute), anAttribute)) {
- _doc->Modify();
- return Standard_True;
- }
- return Standard_False;
-}
-
-//============================================================================
-/*! Function : RemoveAttribute
- * Purpose : Remove attribute of given type assigned SObject
- */
-//============================================================================
-
-bool SALOMEDSImpl_StudyBuilder::RemoveAttribute(const Handle(SALOMEDSImpl_SObject)& anObject,
- const TCollection_AsciiString& aTypeOfAttribute)
-{
- _errorCode = "";
- CheckLocked();
- if(anObject.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- TDF_Label Lab = anObject->GetLabel();
-
- if (aTypeOfAttribute == "AttributeIOR") { // postponed removing of CORBA objects
- Handle(SALOMEDSImpl_AttributeIOR) anAttr;
- if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(anAttr->Value());
- }
-
- Lab.ForgetAttribute (SALOMEDSImpl_SObject::GetGUID(aTypeOfAttribute));
-
- _doc->Modify();
-
- return true;
-}
-
-//============================================================================
-/*! Function : Addreference
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::Addreference(const Handle(SALOMEDSImpl_SObject)& me,
- const Handle(SALOMEDSImpl_SObject)& theReferencedObject)
-{
- _errorCode = "";
- if(me.IsNull() || theReferencedObject.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- CheckLocked();
- TDF_Label Lab = me->GetLabel();
- TDF_Label RefLab = theReferencedObject->GetLabel();
- SALOMEDSImpl_AttributeReference::Set(Lab,RefLab);
-
- SALOMEDSImpl_AttributeTarget::Set(RefLab)->Add(SALOMEDSImpl_Study::SObject(Lab));
-
- if(!_callbackOnRemove.IsNull() && Lab.IsDescendant(_doc->Main())) _callbackOnRemove->OnRemoveSObject(me);
-
- return true;
-}
-
-//============================================================================
-/*! Function : RemoveReference
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::RemoveReference(const Handle(SALOMEDSImpl_SObject)& me)
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_SObject) theReferencedObject;
- if(!me->ReferencedObject(theReferencedObject)) return false; //No reference is found
-
- CheckLocked();
- TDF_Label Lab = me->GetLabel();
-
- Lab.ForgetAttribute(SALOMEDSImpl_AttributeReference::GetID());
-
- //SRN: 30 Aug, 2004 : fix from Ecole l'ete version
-
- TDF_Label RefLab = theReferencedObject->GetLabel();
-
- Handle(SALOMEDSImpl_AttributeTarget) aTarget;
- if(RefLab.FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(), aTarget))
- aTarget->Remove(SALOMEDSImpl_Study::SObject(Lab));
-
- _doc->Modify();
-
- return true;
-}
-
-
-
-//============================================================================
-/*! Function : AddDirectory
- * Purpose : adds a new directory with a path = thePath
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::AddDirectory(const TCollection_AsciiString& thePath)
-{
- _errorCode = "";
- CheckLocked();
- if(thePath.IsEmpty() || thePath == "") {
- _errorCode = "Invalid path";
- return false;
- }
-
- TCollection_AsciiString aPath(thePath), aContext(""), aFatherPath;
- TDF_Label aLabel;
- Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(_doc->Main());
- Handle(SALOMEDSImpl_SObject) anObject;
-
- try {
- anObject = aStudy->FindObjectByPath(thePath); //Check if the directory already exists
- }
- catch(...) { }
-
- if(!anObject.IsNull()) {
- _errorCode = "StudyNameAlreadyUsed";
- return false;
- }
-
- if(aPath.Value(1) != '/') { //Relative path
- aPath.Prepend('/');
- aPath = aStudy->GetContext() + aPath;
- }
-
- TCollection_AsciiString aToken = aPath.Token("/", 1);
- if(aToken.Length() == 0) aFatherPath = "/";
-
- int i = 1;
- while(aToken.Length() != 0) {
- if(aPath.Token("/", i+1).Length() > 0) {
- aFatherPath += "/";
- aFatherPath += aToken;
- }
- aToken = aPath.Token("/", ++i);
- }
-
- anObject.Nullify();
- try {
- anObject = aStudy->FindObjectByPath(aFatherPath); //Check if the father directory exists
- }
- catch(...) { ; }
- if(anObject.IsNull()) {
- _errorCode = "StudyInvalidDirectory";
- return false;
- }
-
- Handle(SALOMEDSImpl_SObject) aNewObject = NewObject(anObject);
- aLabel = aNewObject->GetLabel();
- if(aLabel.IsNull()) {
- _errorCode = "StudyInvalidComponent";
- return false;
- }
-
- SALOMEDSImpl_AttributeName::Set(aLabel, aPath.Token("/", i-1));
-
- //Set LocalID attribute to identify the directory object
- Handle(SALOMEDSImpl_AttributeLocalID) aLocalID = SALOMEDSImpl_AttributeLocalID::Set(aLabel, DIRECTORYID);
-
- _doc->Modify();
-
- return true;
-}
-
-
-//============================================================================
-/*! Function : SetGUID
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::SetGUID(const Handle(SALOMEDSImpl_SObject)& anObject,
- const TCollection_AsciiString& theGUID)
-{
- _errorCode = "";
- CheckLocked();
- if(anObject.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
-
- TDF_Label aLabel = anObject->GetLabel();
- SALOMEDSImpl_AttributeUserID::Set(aLabel, theGUID.ToCString());
-
- _doc->Modify();
-
- return true;
-}
-
-//============================================================================
-/*! Function : IsGUID
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::IsGUID(const Handle(SALOMEDSImpl_SObject)& anObject,
- const TCollection_AsciiString& theGUID)
-{
- _errorCode = "";
- if(anObject.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- TDF_Label aLabel = anObject->GetLabel();
- return aLabel.IsAttribute(theGUID.ToCString());
-}
-
-
-//============================================================================
-/*! Function : NewCommand
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_StudyBuilder::NewCommand()
-{
- _errorCode = "";
- // mpv: for SAL2114 - unset "lock changed" flag at the operation start
- Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
- if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeStudyProperties;
- _doc->Main().AddAttribute(anAttr);
- }
- anAttr->IsLockChanged(true);
-
- _doc->NewCommand();
-}
-
-//============================================================================
-/*! Function : CommitCommand
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_StudyBuilder::CommitCommand()
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
- if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeStudyProperties;
- _doc->Main().AddAttribute(anAttr);
- }
- if (anAttr->IsLocked() && !anAttr->IsLockChanged(true)) {
- AbortCommand();
- _errorCode = "LockProtection";
- throw LockProtection("LockProtection");
- } else {
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->RemovePostponed(_doc->GetUndoLimit());
-
- int aModif = anAttr->GetModified();
- if (aModif < 0) aModif = 1000; // if user make undo and then - new transaction "modify" will never be zero
- anAttr->SetModified(aModif+1);
- _doc->CommitCommand();
- }
-
- _doc->Modify();
-}
-
-//============================================================================
-/*! Function : HasOpenCommand
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::HasOpenCommand()
-{
- _errorCode = "";
- return _doc->HasOpenCommand();
-}
-
-//============================================================================
-/*! Function : AbortCommand
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_StudyBuilder::AbortCommand()
-{
- _errorCode = "";
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->UndoPostponed(0);
-
- _doc->AbortCommand();
-}
-
-//============================================================================
-/*! Function : Undo
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_StudyBuilder::Undo()
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
- if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeStudyProperties;
- _doc->Main().AddAttribute(anAttr);
- }
- if (anAttr->IsLocked()) {
- _errorCode = "LockProtection";
- throw LockProtection("LockProtection");
- } else {
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->UndoPostponed(1);
- _doc->Undo();
- anAttr->SetModified(anAttr->GetModified()-1);
- }
-
- _doc->Modify();
-}
-
-//============================================================================
-/*! Function : Redo
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_StudyBuilder::Redo()
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
- if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeStudyProperties;
- _doc->Main().AddAttribute(anAttr);
- }
-
- if (anAttr->IsLocked()) {
- _errorCode = "LockProtection";
- throw LockProtection("LockProtection");
- } else {
- _doc->Redo();
- SALOMEDSImpl_Study::GetStudy(_doc->Main())->UndoPostponed(-1);
- anAttr->SetModified(anAttr->GetModified()+1);
- }
-
- _doc->Modify();
-}
-
-//============================================================================
-/*! Function : GetAvailableUndos
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::GetAvailableUndos()
-{
- _errorCode = "";
- return _doc->GetAvailableUndos();
-}
-
-//============================================================================
-/*! Function : GetAvailableRedos
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::GetAvailableRedos()
-{
- _errorCode = "";
- return _doc->GetAvailableRedos();
-}
-
-//============================================================================
-/*! Function : UndoLimit
- * Purpose :
- */
-//============================================================================
-int SALOMEDSImpl_StudyBuilder::UndoLimit()
-{
- _errorCode = "";
- return _doc->GetUndoLimit();
-}
-
-//============================================================================
-/*! Function : UndoLimit
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_StudyBuilder::UndoLimit(int n)
-{
- _errorCode = "";
- CheckLocked();
- _doc->SetUndoLimit (n);
-}
-
-//============================================================================
-/*! Function : SetOnAddSObject
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_Callback)
-SALOMEDSImpl_StudyBuilder::SetOnAddSObject(const Handle(SALOMEDSImpl_Callback)& theCallback)
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_Callback) aRet = _callbackOnAdd;
- _callbackOnAdd = theCallback;
- return aRet;
-}
-
-//============================================================================
-/*! Function : SetOnNewSObject
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_Callback)
-SALOMEDSImpl_StudyBuilder::SetOnRemoveSObject(const Handle(SALOMEDSImpl_Callback)& theCallback)
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_Callback) aRet = _callbackOnRemove;
- _callbackOnRemove = theCallback;
- return aRet;
-}
-
-//============================================================================
-/*! Function : CheckLocked
- * Purpose :
- */
-//============================================================================
-void SALOMEDSImpl_StudyBuilder::CheckLocked()
-{
- _errorCode = "";
- if (_doc->HasOpenCommand()) return;
- Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
- if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
- anAttr = new SALOMEDSImpl_AttributeStudyProperties;
- _doc->Main().AddAttribute(anAttr);
- }
- if (anAttr->IsLocked()) {
- _errorCode = "LockProtection";
- throw LockProtection("LockProtection");
- }
-}
-
-//============================================================================
-/*! Function : SetName
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::SetName(const Handle(SALOMEDSImpl_SObject)& theSO,
- const TCollection_AsciiString& theValue)
-{
- _errorCode = "";
- CheckLocked();
- if(theSO.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- SALOMEDSImpl_AttributeName::Set(theSO->GetLabel(), theValue);
-
- _doc->Modify();
-
- return true;
-}
-
-//============================================================================
-/*! Function : SetComment
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::SetComment(const Handle(SALOMEDSImpl_SObject)& theSO,
- const TCollection_AsciiString& theValue)
-{
- _errorCode = "";
- CheckLocked();
- if(theSO.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- SALOMEDSImpl_AttributeComment::Set(theSO->GetLabel(), theValue);
-
- _doc->Modify();
-
- return true;
-}
-
-//============================================================================
-/*! Function : SetIOR
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyBuilder::SetIOR(const Handle(SALOMEDSImpl_SObject)& theSO,
- const TCollection_AsciiString& theValue)
-{
- _errorCode = "";
- CheckLocked();
- if(theSO.IsNull()) {
- _errorCode = "Invalid arguments";
- return false;
- }
- SALOMEDSImpl_AttributeIOR::Set(theSO->GetLabel(), theValue);
-
- _doc->Modify();
-
- return true;
-}
-
-
-//============================================================================
-/*! Function : Translate_persistentID_to_IOR
- * Purpose :
- */
-//============================================================================
-static void Translate_persistentID_to_IOR(TDF_Label& Lab, SALOMEDSImpl_Driver* driver, bool isMultiFile, bool isASCII)
-{
- if(driver == NULL) return;
- TDF_ChildIterator itchild (Lab);
-
- for (; itchild.More(); itchild.Next()) {
- TDF_Label current = itchild.Value();
- Handle(SALOMEDSImpl_AttributePersistentRef) Att;
- if (current.FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(),Att)) {
-
- Handle(SALOMEDSImpl_AttributeLocalID) anID;
- if (current.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(), anID))
- if (anID->Value() == FILELOCALID) continue; //SRN: This attribute store a file name, skip it
-
- TCollection_AsciiString persist_ref(Att->Value());
- Handle(SALOMEDSImpl_SObject) so = SALOMEDSImpl_Study::SObject(current);
- TCollection_AsciiString ior_string = driver->LocalPersistentIDToIOR(so,
- persist_ref,
- isMultiFile,
- isASCII);
- SALOMEDSImpl_AttributeIOR::Set (current, ior_string);
-
- }
- Translate_persistentID_to_IOR (current, driver, isMultiFile, isASCII);
- }
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_StudyBuilder.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSImpl_STUDYBUILDER_H__
-#define __SALOMEDSImpl_STUDYBUILDER_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_StudyBuilder, MMgt_TShared )
-
-// std C++ headers
-#include <iostream>
-
-// Cascade header
-#include <TCollection_AsciiString.hxx>
-#include <TDocStd_Document.hxx>
-
-#include "SALOMEDSImpl_Callback.hxx"
-#include "SALOMEDSImpl_Driver.hxx"
-
-class SALOMEDSImpl_StudyBuilder : public MMgt_TShared
-{
-private:
- Handle(TDocStd_Document) _doc;
- Handle(Standard_Transient) _study;
- Handle(SALOMEDSImpl_Callback) _callbackOnAdd;
- Handle(SALOMEDSImpl_Callback) _callbackOnRemove;
- TCollection_AsciiString _errorCode;
-
-public:
-
- Standard_EXPORT SALOMEDSImpl_StudyBuilder(const Handle(Standard_Transient)& theOwner);
-
- Standard_EXPORT ~SALOMEDSImpl_StudyBuilder();
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) NewComponent(const TCollection_AsciiString& ComponentDataType);
-
- Standard_EXPORT virtual bool DefineComponentInstance (const Handle(SALOMEDSImpl_SComponent)&, const TCollection_AsciiString& ComponentIOR);
-
- Standard_EXPORT virtual bool RemoveComponent(const Handle(SALOMEDSImpl_SComponent)& aComponent);
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) NewObject(const Handle(SALOMEDSImpl_SObject)& theFatherObject);
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) NewObjectToTag(const Handle(SALOMEDSImpl_SObject)& theFatherObject,
- const int theTag);
-
- //! The methods adds a new subdirectory, the path can be absolute or relative (then the current context is used)
- Standard_EXPORT virtual bool AddDirectory(const TCollection_AsciiString& thePath);
-
- Standard_EXPORT virtual bool LoadWith(const Handle(SALOMEDSImpl_SComponent)& sco, SALOMEDSImpl_Driver* Engine);
- Standard_EXPORT virtual bool Load(const Handle(SALOMEDSImpl_SObject)& sco);
-
- Standard_EXPORT virtual bool RemoveObject(const Handle(SALOMEDSImpl_SObject)& anObject);
- Standard_EXPORT virtual bool RemoveObjectWithChildren(const Handle(SALOMEDSImpl_SObject)& anObject);
-
- Standard_EXPORT virtual Handle(TDF_Attribute) FindOrCreateAttribute(const Handle(SALOMEDSImpl_SObject)& anObject,
- const TCollection_AsciiString& aTypeOfAttribute);
- Standard_EXPORT virtual bool FindAttribute(const Handle(SALOMEDSImpl_SObject)& anObject,
- Handle(TDF_Attribute)& anAttribute,
- const TCollection_AsciiString& aTypeOfAttribute);
-
- Standard_EXPORT virtual bool RemoveAttribute(const Handle(SALOMEDSImpl_SObject)& anObject, const TCollection_AsciiString& aTypeOfAttribute);
-
- Standard_EXPORT virtual bool Addreference(const Handle(SALOMEDSImpl_SObject)& me,
- const Handle(SALOMEDSImpl_SObject)& thereferencedObject);
-
- Standard_EXPORT virtual bool RemoveReference(const Handle(SALOMEDSImpl_SObject)& me);
-
- Standard_EXPORT virtual bool SetGUID(const Handle(SALOMEDSImpl_SObject)& anObject, const TCollection_AsciiString& theGUID);
- Standard_EXPORT virtual bool IsGUID(const Handle(SALOMEDSImpl_SObject)& anObject, const TCollection_AsciiString& theGUID);
-
- Standard_EXPORT virtual void NewCommand();
- Standard_EXPORT virtual void CommitCommand();
- Standard_EXPORT virtual bool HasOpenCommand();
- Standard_EXPORT virtual void AbortCommand();
- Standard_EXPORT virtual void Undo();
- Standard_EXPORT virtual void Redo();
- Standard_EXPORT bool GetAvailableUndos();
- Standard_EXPORT bool GetAvailableRedos();
- Standard_EXPORT bool IsSaved();
- Standard_EXPORT bool IsModified();
- Standard_EXPORT virtual int UndoLimit();
- Standard_EXPORT virtual void UndoLimit(const int);
-
- Standard_EXPORT void CheckLocked();
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_Callback) SetOnAddSObject(const Handle(SALOMEDSImpl_Callback)& theCallback);
- Standard_EXPORT virtual Handle(SALOMEDSImpl_Callback) SetOnRemoveSObject(const Handle(SALOMEDSImpl_Callback)& theCallback);
-
- Standard_EXPORT virtual bool SetName(const Handle(SALOMEDSImpl_SObject)& theSO, const TCollection_AsciiString& theValue);
-
- Standard_EXPORT virtual bool SetComment(const Handle(SALOMEDSImpl_SObject)& theSO, const TCollection_AsciiString& theValue);
-
- Standard_EXPORT virtual bool SetIOR(const Handle(SALOMEDSImpl_SObject)& theSO, const TCollection_AsciiString& theValue);
-
- Standard_EXPORT virtual TCollection_AsciiString GetErrorCode() { return _errorCode; }
- Standard_EXPORT virtual bool IsError() { return _errorCode != ""; }
-
- Standard_EXPORT virtual Handle(Standard_Transient) GetOwner() { return _study; }
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_StudyBuilder )
-};
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_StudyHandle.cxx
-// Author : Sergey LITONIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_StudyHandle.hxx"
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-
-/*
- Class : SALOMEDSImpl_StudyHandle
- Description : This class is intended for storing information about
- graphic representation of objects in dirrent views
-*/
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_StudyHandle, TDF_Attribute )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_StudyHandle, TDF_Attribute )
-
-//=======================================================================
-//function : GetID
-//purpose : Get GUID of this attribute
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_StudyHandle::GetID()
-{
- static Standard_GUID SALOMEDSImpl_StudyHandleID( "050C9555-4BA8-49bf-8F1C-086F0469A40B" );
- return SALOMEDSImpl_StudyHandleID;
-}
-
-//=======================================================================
-//function : SALOMEDSImpl_StudyHandle
-//purpose : Empty Constructor
-//=======================================================================
-SALOMEDSImpl_StudyHandle::SALOMEDSImpl_StudyHandle()
-{
- myHandle.Nullify();
-}
-
-//=======================================================================
-//function : Set
-//purpose :
-//=======================================================================
-Handle(SALOMEDSImpl_StudyHandle) SALOMEDSImpl_StudyHandle::Set(const TDF_Label& theLabel,
- const Handle(SALOMEDSImpl_Study)& theStudy)
-{
- Handle(SALOMEDSImpl_StudyHandle) A;
- if (!theLabel.FindAttribute(GetID(), A)) {
- A = new SALOMEDSImpl_StudyHandle();
- theLabel.AddAttribute(A);
- }
-
- A->SetHandle(theStudy);
- return A;
-}
-
-
-//=======================================================================
-//function : ID
-//purpose : Get GUID of this attribute
-//=======================================================================
-const Standard_GUID& SALOMEDSImpl_StudyHandle::ID () const
-{
- return GetID();
-}
-
-
-//=======================================================================
-//function : NewEmpty
-//purpose : Create new empty attribute
-//=======================================================================
-Handle(TDF_Attribute) SALOMEDSImpl_StudyHandle::NewEmpty () const
-{
- return new SALOMEDSImpl_StudyHandle ();
-}
-
-
-//=======================================================================
-//function : Restore
-//purpose : Restore value of attribute with value of theWith one
-//=======================================================================
-void SALOMEDSImpl_StudyHandle::Restore( const Handle(TDF_Attribute)& theWith )
-{
- Handle(SALOMEDSImpl_StudyHandle) anAttr = Handle(SALOMEDSImpl_StudyHandle)::DownCast( theWith );
- if ( !anAttr.IsNull() ) SetHandle( anAttr->GetHandle() );
-}
-
-//=======================================================================
-//function : Paste
-//purpose : Paste value of current attribute to the value of entry one
-//=======================================================================
-void SALOMEDSImpl_StudyHandle::Paste( const Handle(TDF_Attribute)& theInto,
- const Handle(TDF_RelocationTable)& ) const
-{
- Handle(SALOMEDSImpl_StudyHandle) anAttr = Handle(SALOMEDSImpl_StudyHandle)::DownCast( theInto );
- if ( !anAttr.IsNull() ) anAttr->SetHandle( myHandle );
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_StudyHandle.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef SALOMEDSImpl_StudyHandle_HeaderFile
-#define SALOMEDSImpl_StudyHandle_HeaderFile
-
-#include <Standard_DefineHandle.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-
-class Standard_GUID;
-class Handle(TDF_Attribute);
-class Handle(TDF_RelocationTable);
-
-/*
- Class : SALOMEDSImpl_StudyHandle
- Description : PRIVATE: This class is intended for storing of the study handle
-*/
-
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_StudyHandle, TDF_Attribute )
-
-#include "SALOMEDSImpl_Study.hxx"
-
-#ifndef WNT
-class Standard_EXPORT SALOMEDSImpl_StudyHandle : public TDF_Attribute
-#else
-class SALOMEDSImpl_StudyHandle : public TDF_Attribute
-#endif
-{
-
-public:
-Standard_EXPORT SALOMEDSImpl_StudyHandle();
-Standard_EXPORT ~SALOMEDSImpl_StudyHandle() { myHandle.Nullify(); }
-
-Standard_EXPORT static Handle(SALOMEDSImpl_StudyHandle) Set(const TDF_Label& theLabel, const Handle(SALOMEDSImpl_Study)& theStudy);
-Standard_EXPORT static const Standard_GUID& GetID() ;
-
-Standard_EXPORT void SetHandle(const Handle(SALOMEDSImpl_Study)& theStudy) { myHandle = theStudy; }
-Standard_EXPORT Handle(SALOMEDSImpl_Study) GetHandle() { return myHandle; }
-Standard_EXPORT const Standard_GUID& ID() const;
-Standard_EXPORT void Restore( const Handle(TDF_Attribute)& theWith );
-Standard_EXPORT Handle(TDF_Attribute) NewEmpty() const;
-Standard_EXPORT void Paste( const Handle(TDF_Attribute)& theInto,
- const Handle(TDF_RelocationTable)& ) const;
-
-private:
- Handle(SALOMEDSImpl_Study) myHandle;
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_StudyHandle )
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_StudyManager.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_StudyManager.hxx"
-
-using namespace std;
-
-#include <CDF_Session.hxx>
-#include <CDF_DirectoryIterator.hxx>
-#include <TDF_Label.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_RelocationTable.hxx>
-#include <TDF_ChildIterator.hxx>
-#include <TDF_AttributeIterator.hxx>
-#include <TColStd_HSequenceOfReal.hxx>
-#include <TColStd_HSequenceOfInteger.hxx>
-#include <TColStd_HArray1OfCharacter.hxx>
-#include <TColStd_HSequenceOfAsciiString.hxx>
-#include <TColStd_HSequenceOfExtendedString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <OSD_Process.hxx>
-#include <Quantity_Date.hxx>
-#include "HDFexplorer.hxx"
-
-#include "SALOMEDSImpl_Attributes.hxx"
-#include "SALOMEDSImpl_Tool.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include <map>
-
-#include "HDFOI.hxx"
-#include <iostream>
-#include <stdlib.h>
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_StudyManager, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_StudyManager, MMgt_TShared )
-
-#define USE_CASE_LABEL_ID "0:2"
-#define AUTO_SAVE_GUID "128268A3-71C9-4036-89B1-F81BD6A4FCF2"
-#define AUTO_SAVE_TAG "0:8"
-#define AUTO_SAVE_TIME_OUT_IN_SECONDS 1200
-
-static void SaveAttributes(Handle(SALOMEDSImpl_SObject) SO, HDFgroup *hdf_group_sobject);
-static void ReadAttributes(const Handle(SALOMEDSImpl_Study)&, const Handle(SALOMEDSImpl_SObject)&, HDFdataset* );
-static void BuildTree (const Handle(SALOMEDSImpl_Study)&, HDFgroup*);
-static void Translate_IOR_to_persistentID (const Handle(SALOMEDSImpl_SObject)&,
- SALOMEDSImpl_Driver*, bool isMultiFile, bool isASCII);
-
-//============================================================================
-/*! Function : SALOMEDSImpl_StudyManager
- * Purpose : SALOMEDSImpl_StudyManager constructor
- */
-//============================================================================
-SALOMEDSImpl_StudyManager::SALOMEDSImpl_StudyManager()
-{
- _errorCode = "";
- _OCAFApp = new SALOMEDSImpl_OCAFApplication();
- _IDcounter = 0;
- _OCAFApp->NewDocument("SALOME_STUDY", _clipboard);
-}
-
-//============================================================================
-/*! Function : ~SALOMEDSImpl_StudyManager
- * Purpose : SALOMEDSImpl_StudyManager destructor
- */
-//============================================================================
-SALOMEDSImpl_StudyManager::~SALOMEDSImpl_StudyManager()
-{
- // Destroy OCAF application
- _OCAFApp.Nullify();
-}
-
-
-//============================================================================
-/*! Function : NewStudy
- * Purpose : Create a New Study of name study_name
- */
-//==================================================T==========================
-Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::NewStudy(const TCollection_AsciiString& study_name)
-{
- _errorCode = "";
-
- Handle(TDocStd_Document) Doc;
- _OCAFApp->NewDocument("SALOME_STUDY",Doc);
-
- Handle(SALOMEDSImpl_Study) Study = new SALOMEDSImpl_Study(Doc, study_name);
-
- _IDcounter++;
- Study->StudyId( _IDcounter );
-
- // set Study properties
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = Study->GetProperties();
- OSD_Process aProcess;
- Quantity_Date aDate = aProcess.SystemDate();
- aProp->SetModification(aProcess.UserName().ToCString(),
- aDate.Minute(), aDate.Hour(), aDate.Day(), aDate.Month(), aDate.Year());
- aProp->SetCreationMode(1); //"from scratch"
-
- return Study;
-}
-
-//============================================================================
-/*! Function : Open
- * Purpose : Open a Study from it's persistent reference
- */
-//============================================================================
-Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::Open(const TCollection_AsciiString& aUrl)
-{
- _errorCode = "";
-
- // open the HDFFile
- HDFfile *hdf_file =0;
- HDFgroup *hdf_group_study_structure =0;
-
- char* aC_HDFUrl;
- TCollection_AsciiString aHDFUrl;
- bool isASCII = false;
- if (HDFascii::isASCII(aUrl.ToCString())) {
- isASCII = true;
- char* aResultPath = HDFascii::ConvertFromASCIIToHDF(aUrl.ToCString());
- aC_HDFUrl = new char[strlen(aResultPath) + 19];
- sprintf(aC_HDFUrl, "%shdf_from_ascii.hdf", aResultPath);
- delete(aResultPath);
- aHDFUrl = aC_HDFUrl;
- delete aC_HDFUrl;
- } else {
- aHDFUrl = aUrl;
- }
-
- hdf_file = new HDFfile((char*)aHDFUrl.ToCString());
- try {
- hdf_file->OpenOnDisk(HDF_RDONLY);// mpv: was RDWR, but opened file can be write-protected too
- }
- catch (HDFexception)
- {
-#ifndef WNT
- char eStr[strlen(aUrl.ToCString())+17];
-#else
- char *eStr;
- eStr = new char[strlen(aUrl.ToCString())+17];
-#endif
- sprintf(eStr,"Can't open file %s",aUrl.ToCString());
-#ifdef WNT
- delete [] eStr;
-#endif
- _errorCode = TCollection_AsciiString(eStr);
- return NULL;
- }
-
- // Temporary aStudyUrl in place of study name
- Handle(TDocStd_Document) Doc;
- _OCAFApp->NewDocument("SALOME_STUDY",Doc);
-
- Handle(SALOMEDSImpl_Study) Study = new SALOMEDSImpl_Study(Doc, aUrl);
-
- _IDcounter++;
- Study->StudyId( _IDcounter );
-
- // Assign the value of the URL in the study object
- Study->URL (aUrl);
-
- SALOMEDSImpl_AttributePersistentRef::Set(Doc->Main(), aUrl);
-
- if (!hdf_file->ExistInternalObject("STUDY_STRUCTURE")) {
- _errorCode = "Study is empty";
- return Study;
- }
-
- //Create the Structure of the OCAF Document
- hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file);
-
- Handle(TDF_Data) DF = Doc->GetData();
- try {
- BuildTree (Study, hdf_group_study_structure);
- }
- catch (HDFexception)
- {
-#ifndef WNT
- char eStr[strlen(aUrl.ToCString())+17];
-#else
- char *eStr = new char [strlen(aUrl.ToCString())+17];
-#endif
- sprintf(eStr,"Can't open file %s", aUrl.ToCString());
- _errorCode = TCollection_AsciiString(eStr);
- return NULL;
- }
-
- hdf_file->CloseOnDisk();
-
- if (isASCII) {
- Handle(TColStd_HSequenceOfAsciiString) aFilesToRemove = new TColStd_HSequenceOfAsciiString;
- aFilesToRemove->Append(aHDFUrl);
- SALOMEDSImpl_Tool::RemoveTemporaryFiles(SALOMEDSImpl_Tool::GetDirFromPath(aHDFUrl), aFilesToRemove, true);
- }
-
- delete hdf_file; // all related hdf objects will be deleted
-
- return Study;
-}
-
-
-
-//============================================================================
-/*! Function : Close
- * Purpose : Close a study.
- * If the study hasn't been saved, ask the user to confirm the
- * close action without saving
- */
-
-//============================================================================
-void SALOMEDSImpl_StudyManager::Close(const Handle(SALOMEDSImpl_Study)& aStudy)
-{
- _errorCode = "";
-
- if(aStudy.IsNull()) {
- _errorCode = "Study is null";
- return;
- }
-
- aStudy->Close();
-}
-
-//============================================================================
-/*! Function : Save
- * Purpose : Save a Study to it's persistent reference
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::Save(const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile)
-{
- _errorCode = "";
-
- TCollection_AsciiString url = aStudy->URL();
- if (url.IsEmpty()) {
- _errorCode = "No path specified to save the study. Nothing done";
- return false;
- }
- else {
- return Impl_SaveAs(url,aStudy, aFactory, theMultiFile, false);
- }
-
- return false;
-}
-
-bool SALOMEDSImpl_StudyManager::SaveASCII(const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile)
-{
- _errorCode = "";
-
- TCollection_AsciiString url = aStudy->URL();
- if (url.IsEmpty()) {
- _errorCode = "No path specified to save the study. Nothing done";
- return false;
- }
- else {
- return Impl_SaveAs(url,aStudy, aFactory, theMultiFile, true);
- }
-
- return false;
-}
-
-//=============================================================================
-/*! Function : SaveAs
- * Purpose : Save a study to the persistent reference aUrl
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::SaveAs(const TCollection_AsciiString& aUrl,
- const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile)
-{
- _errorCode = "";
- return Impl_SaveAs(aUrl,aStudy, aFactory, theMultiFile, false);
-}
-
-bool SALOMEDSImpl_StudyManager::SaveAsASCII(const TCollection_AsciiString& aUrl,
- const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile)
-{
- _errorCode = "";
- return Impl_SaveAs(aUrl,aStudy, aFactory, theMultiFile, true);
-}
-
-//============================================================================
-/*! Function : GetOpenStudies
- * Purpose : Get name list of open studies in the session
- */
-//============================================================================
-Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_StudyManager::GetOpenStudies()
-{
- _errorCode = "";
- Handle(TColStd_HSequenceOfTransient) aList = new TColStd_HSequenceOfTransient;
-
- int nbDocs = _OCAFApp->NbDocuments();
-
- if(nbDocs == 0) {
- _errorCode = "No active study in this session";
- return aList;
- }
- else {
- Handle(SALOMEDSImpl_Study) aStudy;
- Handle(CDF_Session) S = CDF_Session::CurrentSession();
- CDF_DirectoryIterator it (S->Directory());
- for (;it.MoreDocument();it.NextDocument()) {
- Handle(TDocStd_Document) D = Handle(TDocStd_Document)::DownCast(it.Document());
- if(D == _clipboard) continue;
- aStudy = SALOMEDSImpl_Study::GetStudy(D->Main());
- if(aStudy.IsNull()) continue;
- aList->Append(aStudy);
- }
- }
-
- return aList;
-}
-
-//============================================================================
-/*! Function : GetStudyByName
- * Purpose : Get a study from its name
- */
-//============================================================================
-Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::GetStudyByName
- (const TCollection_AsciiString& aStudyName)
-{
- _errorCode = "";
- int nbDocs = _OCAFApp->NbDocuments();
-
- if (nbDocs == 0) {
- _errorCode = "No active study in this session";
- return NULL;
- }
- else {
- Handle(SALOMEDSImpl_Study) aStudy;
- Handle(CDF_Session) S = CDF_Session::CurrentSession();
- CDF_DirectoryIterator it (S->Directory());
- for (; it.MoreDocument(); it.NextDocument()) {
- Handle(TDocStd_Document) D = Handle(TDocStd_Document)::DownCast(it.Document());
- if (D == _clipboard) continue;
- aStudy = SALOMEDSImpl_Study::GetStudy(D->Main());
- if (aStudy.IsNull()) continue;
- if (aStudy->Name() == aStudyName) return aStudy;
- }
- }
-
- _errorCode = TCollection_AsciiString("Found no study with the name ") + aStudyName;
- return NULL;
-}
-
-//============================================================================
-/*! Function : GetStudyByID
- * Purpose : Get a study from its ID
- */
-//============================================================================
-Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::GetStudyByID(int aStudyID)
-{
- _errorCode = "";
- int nbDocs = _OCAFApp->NbDocuments();
-
- if (nbDocs == 0) {
- _errorCode = "No active study in this session";
- return NULL;
- }
- else {
- Handle(SALOMEDSImpl_Study) aStudy;
- Handle(CDF_Session) S = CDF_Session::CurrentSession();
- CDF_DirectoryIterator it (S->Directory());
- for (; it.MoreDocument(); it.NextDocument()) {
- Handle(TDocStd_Document) D = Handle(TDocStd_Document)::DownCast(it.Document());
- if (D == _clipboard) continue;
- aStudy = SALOMEDSImpl_Study::GetStudy(D->Main());
- if (aStudy.IsNull()) continue;
- if (aStudy->StudyId() == aStudyID) return aStudy;
- }
- }
-
- _errorCode = "Found no study with the given ID";
- return NULL;
-}
-
-//=============================================================================
-/*! Function : _SaveProperties
- * Purpose : save the study properties in HDF file
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::Impl_SaveProperties(const Handle(SALOMEDSImpl_Study)& aStudy,
- HDFgroup *hdf_group)
-{
- _errorCode = "";
-
- HDFdataset *hdf_dataset = 0;
- hdf_size size[1];
- hdf_int32 name_len;
-
- // add modifications list (user and date of save)
- Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = aStudy->GetProperties();
- Handle(SALOMEDSImpl_StudyBuilder) SB= aStudy->NewBuilder();
- int aLocked = aProp->IsLocked();
- if (aLocked) aProp->SetLocked(Standard_False);
-
- OSD_Process aProcess;
- Quantity_Date aDate = aProcess.SystemDate();
- aProp->SetModification(aProcess.UserName().ToCString(),
- aDate.Minute(), aDate.Hour(), aDate.Day(), aDate.Month(), aDate.Year());
-
- if (aLocked) aProp->SetLocked(Standard_True);
-
- Handle(TColStd_HSequenceOfExtendedString) aNames;
- Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
-
- aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
-
- int aLength = 0, anIndex, i;
- for(i=1; i<=aNames->Length(); i++)
- aLength += aNames->Value(i).Length() + 1;
-
- //string length: 1 byte = locked flag, 1 byte = modified flag, (12 + name length + 1) for each name and date, "zero" byte
- char* aProperty = new char[3 + aLength + 12 * aNames->Length()];
-
-
- sprintf(aProperty,"%c%c", (char)aProp->GetCreationMode(), (aProp->IsLocked())?'l':'u');
-
- aLength = aNames->Length();
- int a = 2;
- for(anIndex = 1; anIndex <= aLength; anIndex++) {
- sprintf(&(aProperty[a]),"%2d%2d%2d%2d%4d%s",
- (int)(aMinutes->Value(anIndex)),
- (int)(aHours->Value(anIndex)),
- (int)(aDays->Value(anIndex)),
- (int)(aMonths->Value(anIndex)),
- (int)(aYears->Value(anIndex)),
- TCollection_AsciiString(aNames->Value(anIndex)).ToCString());
- a = strlen(aProperty);
- aProperty[a++] = 1;
- }
- aProperty[a] = 0;
-
- name_len = (hdf_int32) a;
- size[0] = name_len + 1 ;
- hdf_dataset = new HDFdataset("AttributeStudyProperties",hdf_group,HDF_STRING,size,1);
- hdf_dataset->CreateOnDisk();
- hdf_dataset->WriteOnDisk(aProperty);
- hdf_dataset->CloseOnDisk();
- hdf_dataset=0; //will be deleted by hdf_sco_group destructor
- delete [] aProperty;
-
- aProp->SetModified(0);
- return true;
-}
-
-//=============================================================================
-/*! Function : _SaveAs
- * Purpose : save the study in HDF file
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::Impl_SaveAs(const TCollection_AsciiString& aUrl,
- const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile,
- bool theASCII)
-{
- // HDF File will be composed of differents part :
- // * For each ComponentDataType, all data created by the component
- // Informations in data group hdf_group_datacomponent
- // * Study Structure -> Exactly what is contained in OCAF document
- // Informations in data group hdf_group_study_structure
-
- _errorCode = "";
-
- HDFfile *hdf_file=0;
- HDFgroup *hdf_group_study_structure =0;
- HDFgroup *hdf_sco_group =0;
- HDFgroup *hdf_sco_group2 =0;
-
- HDFgroup *hdf_group_datacomponent =0;
- HDFdataset *hdf_dataset =0;
- hdf_size size[1];
- hdf_int32 name_len = 0;
- char *component_name = 0;
-
- int aLocked = aStudy->GetProperties()->IsLocked();
- if (aLocked) aStudy->GetProperties()->SetLocked(false);
-
- Handle(SALOMEDSImpl_StudyBuilder) SB= aStudy->NewBuilder();
- map<char*, SALOMEDSImpl_Driver*> aMapTypeDriver;
-
- if(aStudy.IsNull()) {
- _errorCode = "Study is null";
- return false;
- }
-
- try
- {
- // mpv 15.12.2003: for saving components we have to load all data from all modules
- SALOMEDSImpl_SComponentIterator itcomponent1 = aStudy->NewComponentIterator();
- for (; itcomponent1.More(); itcomponent1.Next())
- {
- Handle(SALOMEDSImpl_SComponent) sco = itcomponent1.Value();
-
- // if there is an associated Engine call its method for saving
- TCollection_AsciiString IOREngine;
- try {
- if (!sco->ComponentIOR(IOREngine)) {
- TCollection_AsciiString aCompType = sco->GetComment();
- if (!aCompType.IsEmpty()) {
-
- SALOMEDSImpl_Driver* aDriver = aFactory->GetDriverByType(aCompType);
- aMapTypeDriver[aCompType.ToCString()] = aDriver;
-
- if (aDriver != NULL) {
- if(!SB->LoadWith(sco, aDriver)) {
- _errorCode = SB->GetErrorCode();
- return false;
- }
- }
- }
- }
- } catch(...) {
- _errorCode = "Can not restore information to resave it";
- return false;
- }
- }
-
- TCollection_AsciiString anOldName = aStudy->Name();
- aStudy->URL(aUrl);
-
- // To change for Save
- // Do not have to do a new file but just a Open??? Rewrite all informations after erasing evrything??
- hdf_file = new HDFfile(aUrl.ToCString());
- hdf_file->CreateOnDisk();
-
- //-----------------------------------------------------------------------
- // 1 - Create a groupe for each SComponent and Update the PersistanceRef
- //-----------------------------------------------------------------------
- hdf_group_datacomponent = new HDFgroup("DATACOMPONENT",hdf_file);
- hdf_group_datacomponent->CreateOnDisk();
-
- SALOMEDSImpl_SComponentIterator itcomponent = aStudy->NewComponentIterator();
-
- //SRN: Added 17 Nov, 2003
- Handle(SALOMEDSImpl_SObject) anAutoSaveSO = aStudy->FindObjectID(AUTO_SAVE_TAG);
- //SRN: End
- for (; itcomponent.More(); itcomponent.Next())
- {
- Handle(SALOMEDSImpl_SComponent) sco = itcomponent.Value();
-
- TCollection_AsciiString scoid = sco->GetID();
- hdf_sco_group = new HDFgroup(scoid.ToCString(), hdf_group_datacomponent);
- hdf_sco_group->CreateOnDisk();
-
- TCollection_AsciiString componentDataType = sco->ComponentDataType();
-
- //SRN: Added 17 Nov 2003: If there is a specified attribute, the component peforms a special save
- if(!anAutoSaveSO.IsNull() && SB->IsGUID(sco, AUTO_SAVE_GUID)) {
-
- Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
- if(anAutoSaveSO->GetLabel().FindAttribute(SALOMEDSImpl_AttributeTableOfString::GetID(), aTable)) {
- Standard_Integer nbRows = aTable->GetNbRows(), k, aTimeOut = 0;
- if(nbRows > 0 && aTable->GetNbColumns() > 1) {
-
- Handle(TColStd_HSequenceOfExtendedString) aRow;
- for(k=1; k<=nbRows; k++) {
- aRow = aTable->GetRowData(k);
- if (aRow->Value(1) == componentDataType) {
- TCollection_AsciiString anEntry = TCollection_AsciiString(aRow->Value(2));
- Handle(SALOMEDSImpl_SObject) aCompSpecificSO = aStudy->FindObjectID(anEntry);
- if(!aCompSpecificSO.IsNull()) {
- Handle(SALOMEDSImpl_AttributeInteger) anInteger;
- if(aCompSpecificSO->GetLabel().FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anInteger)) {
- anInteger->SetValue(-1);
- while(anInteger->Value() < 0) {
-#ifndef WNT
- sleep(2);
-#else
- Sleep(2);
-#endif
- if(++aTimeOut > AUTO_SAVE_TIME_OUT_IN_SECONDS)
- break;
- }
- } // if(aCompSpecificSO->FindAttribute(anInteger, "AttributeInteger"))
- } // if(!CORBA::is_nil(aCompSpecificSO))
- } // if (strcmp(aRow[0], componentDataType) == 0)
- } // for
-
- } // if(nbRows > 0 && aTable->GetNbColumns() > 1)
-
- } // if(anAutoSaveSO->FindAttribute(aTable, "AttributeTableOfString")
-
- } // if(SB->IsGUID(AUTO_SAVE_GUID)
-
- //SRN: End
- TCollection_AsciiString IOREngine;
- if (sco->ComponentIOR(IOREngine))
- {
- SALOMEDSImpl_Driver* Engine = NULL;
- if(aMapTypeDriver.find(componentDataType.ToCString()) != aMapTypeDriver.end()) {
- // we have found the associated engine to write the data
- Engine = aMapTypeDriver[componentDataType.ToCString()];
- }
- else {
- Engine = aFactory->GetDriverByIOR(IOREngine);
- }
-
- if (Engine != NULL)
- {
- unsigned char* aStream;
- long length;
-
- if (theASCII) aStream = Engine->SaveASCII(sco,
- SALOMEDSImpl_Tool::GetDirFromPath(aUrl),
- length,
- theMultiFile);
- else aStream = Engine->Save(sco,
- SALOMEDSImpl_Tool::GetDirFromPath(aUrl),
- length,
- theMultiFile);
- HDFdataset *hdf_dataset;
- hdf_size aHDFSize[1];
- if(length > 0) { //The component saved some auxiliary files, then put them into HDF file
-
- aHDFSize[0] = length;
-
- HDFdataset *hdf_dataset = new HDFdataset("FILE_STREAM", hdf_sco_group, HDF_STRING, aHDFSize, 1);
- hdf_dataset->CreateOnDisk();
- hdf_dataset->WriteOnDisk(aStream); //Save the stream in the HDF file
- hdf_dataset->CloseOnDisk();
- }
-
- // store multifile state
- aHDFSize[0] = 2;
- hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group, HDF_STRING, aHDFSize, 1);
- hdf_dataset->CreateOnDisk();
- hdf_dataset->WriteOnDisk((void*)(theMultiFile?"M":"S")); // save: multi or single
- hdf_dataset->CloseOnDisk();
- hdf_dataset=0; //will be deleted by hdf_sco_AuxFiles destructor
- // store ASCII state
- aHDFSize[0] = 2;
- hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group, HDF_STRING, aHDFSize, 1);
- hdf_dataset->CreateOnDisk();
- hdf_dataset->WriteOnDisk((void*)(theASCII?"A":"B")); // save: ASCII or BINARY
- hdf_dataset->CloseOnDisk();
- hdf_dataset=0; //will be deleted by hdf_sco_AuxFiles destructor
- // Creation of the persistance reference attribute
- Translate_IOR_to_persistentID (sco, Engine, theMultiFile, theASCII);
-
- if(aStream != NULL) delete [] aStream;
- }
- }
- hdf_sco_group->CloseOnDisk();
- hdf_sco_group=0; // will be deleted by hdf_group_datacomponent destructor
- }
- hdf_group_datacomponent->CloseOnDisk();
- hdf_group_datacomponent =0; // will be deleted by hdf_file destructor
-
- //-----------------------------------------------------------------------
- //3 - Write the Study Structure
- //-----------------------------------------------------------------------
- hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file);
- hdf_group_study_structure->CreateOnDisk();
- // save component attributes
- SALOMEDSImpl_SComponentIterator itcomp = aStudy->NewComponentIterator();
- for (; itcomp.More(); itcomp.Next())
- {
- Handle(SALOMEDSImpl_SComponent) SC = itcomp.Value();
- TCollection_AsciiString scid = SC->GetID();
- hdf_sco_group2 = new HDFgroup(scid.ToCString(), hdf_group_study_structure);
- hdf_sco_group2->CreateOnDisk();
- SaveAttributes(SC, hdf_sco_group2);
- // ComponentDataType treatment
- component_name = SC->ComponentDataType().ToCString();
- name_len = (hdf_int32)strlen(component_name);
- size[0] = name_len +1 ;
- hdf_dataset = new HDFdataset("COMPONENTDATATYPE",hdf_sco_group2,HDF_STRING,size,1);
- hdf_dataset->CreateOnDisk();
- hdf_dataset->WriteOnDisk(component_name);
- hdf_dataset->CloseOnDisk();
- hdf_dataset=0; //will be deleted by hdf_sco_group destructor
- Impl_SaveObject(SC, hdf_sco_group2);
- hdf_sco_group2->CloseOnDisk();
- hdf_sco_group2=0; // will be deleted by hdf_group_study_structure destructor
- }
-
- //-----------------------------------------------------------------------
- //4 - Write the Study UseCases Structure
- //-----------------------------------------------------------------------
- Handle(SALOMEDSImpl_SObject) aSO = aStudy->FindObjectID(USE_CASE_LABEL_ID);
- if (!aSO.IsNull()) {
- HDFgroup *hdf_soo_group = new HDFgroup(USE_CASE_LABEL_ID,hdf_group_study_structure);
- hdf_soo_group->CreateOnDisk();
- SaveAttributes(aSO, hdf_soo_group);
- Impl_SaveObject(aSO, hdf_soo_group);
- hdf_soo_group->CloseOnDisk();
- hdf_soo_group=0; // will be deleted by hdf_group_study_structure destructor
- }
-
- if (aLocked) aStudy->GetProperties()->SetLocked(true);
- //-----------------------------------------------------------------------
- //5 - Write the Study Properties
- //-----------------------------------------------------------------------
- name_len = (hdf_int32) aStudy->Name().Length();
- size[0] = name_len +1 ;
- hdf_dataset = new HDFdataset("STUDY_NAME",hdf_group_study_structure,HDF_STRING,size,1);
- hdf_dataset->CreateOnDisk();
- char* studid = aStudy->Name().ToCString();
- hdf_dataset->WriteOnDisk(studid);
- hdf_dataset->CloseOnDisk();
- hdf_dataset=0; // will be deleted by hdf_group_study_structure destructor
-
- Impl_SaveProperties(aStudy, hdf_group_study_structure);
-
- hdf_group_study_structure->CloseOnDisk();
- hdf_file->CloseOnDisk();
-
- aStudy->IsSaved(true);
- hdf_group_study_structure =0; // will be deleted by hdf_file destructor
- delete hdf_file; // recursively deletes all hdf objects...
- }
- catch (HDFexception)
- {
- _errorCode = "HDFexception ! ";
- return false;
- }
- if (theASCII) { // save file in ASCII format
- HDFascii::ConvertFromHDFToASCII(aUrl.ToCString(), true);
- }
-
- return true;
-}
-
-//============================================================================
-/*! Function : Impl_SaveObject
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::Impl_SaveObject(const Handle(SALOMEDSImpl_SObject)& SC,
- HDFgroup *hdf_group_datatype)
-{
- _errorCode = "";
-
- // Write in group hdf_group_datatype all informations of SObject SC
- // Iterative function to parse all SObjects under a SComponent
-
- HDFgroup *hdf_group_sobject = 0;
-
- TDF_ChildIterator itchild(SC->GetLabel());
- for (; itchild.More(); itchild.Next())
- {
-
- // mpv: don't save empty labels
- TDF_AttributeIterator AI1(itchild.Value());
- if (!AI1.More()) { //No attributes on the label
- TDF_ChildIterator subchild(SC->GetLabel());
- if (!subchild.More()) {
- continue;
- }
- subchild.Initialize(SC->GetLabel(), true);
- bool anEmpty = true;
- for (; subchild.More() && anEmpty; subchild.Next()) {
- TDF_AttributeIterator AI2(subchild.Value());
- if (AI2.More()) anEmpty = false; //There are attributes on the child label
- }
- if (anEmpty) continue;
- }
-
- Handle(SALOMEDSImpl_SObject) SO = SALOMEDSImpl_Study::SObject(itchild.Value());
-
- char* scoid = (char*) SO->GetID().ToCString();
- hdf_group_sobject = new HDFgroup(scoid, hdf_group_datatype);
- hdf_group_sobject->CreateOnDisk();
- SaveAttributes(SO, hdf_group_sobject);
- Impl_SaveObject(SO, hdf_group_sobject);
- hdf_group_sobject->CloseOnDisk();
- hdf_group_sobject =0; // will be deleted by father hdf object destructor
- }
-
- return true;
-}
-
-//============================================================================
-/*! Function : Impl_SubstituteSlash
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_StudyManager::Impl_SubstituteSlash(const TCollection_AsciiString& aUrl)
-{
- _errorCode = "";
-
- TCollection_ExtendedString theUrl(aUrl);
- Standard_ExtCharacter val1 = ToExtCharacter('/');
- Standard_ExtCharacter val2 = ToExtCharacter(':');
- theUrl.ChangeAll(val1,val2);
- return theUrl;
-}
-
-//============================================================================
-/*! Function : GetDocumentOfStudy
- * Purpose :
- */
-//============================================================================
-Handle(TDocStd_Document) SALOMEDSImpl_StudyManager::GetDocumentOfStudy(const Handle(SALOMEDSImpl_Study)& theStudy)
-{
- _errorCode = "";
- return theStudy->_doc;
-}
-
-//============================================================================
-/*! Function : CanCopy
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject,
- SALOMEDSImpl_Driver* theEngine)
-{
- _errorCode = "";
- Handle(SALOMEDSImpl_SComponent) aComponent = theObject->GetFatherComponent();
- if (aComponent.IsNull()) return false;
- if (aComponent->GetLabel() == theObject->GetLabel()) return false;
- TCollection_AsciiString IOREngine;
- if (!aComponent->ComponentIOR(IOREngine)) return false;
- if (theEngine == NULL) return false;
- return theEngine->CanCopy(theObject);
-}
-
-//============================================================================
-/*! Function : CopyLabel
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::CopyLabel(const Handle(SALOMEDSImpl_Study)& theSourceStudy,
- SALOMEDSImpl_Driver* theEngine,
- const Standard_Integer theSourceStartDepth,
- const TDF_Label& theSource,
- const TDF_Label& theDestinationMain)
-{
- _errorCode = "";
-
- int a;
- TDF_Label aTargetLabel = theDestinationMain;
- TDF_Label aAuxTargetLabel = theDestinationMain.Father().FindChild(2);
- for(a = theSource.Depth() - theSourceStartDepth; a > 0 ; a--) {
- TDF_Label aSourceLabel = theSource;
- for(int aNbFather = 1; aNbFather < a; aNbFather++) aSourceLabel = aSourceLabel.Father();
- aTargetLabel = aTargetLabel.FindChild(aSourceLabel.Tag());
- aAuxTargetLabel = aAuxTargetLabel.FindChild(aSourceLabel.Tag());
- }
- // iterate attributes
- TDF_AttributeIterator anAttrIterator(theSource);
- Handle(TDF_RelocationTable) aRT = new TDF_RelocationTable();
- for(; anAttrIterator.More(); anAttrIterator.Next()) {
- Handle(TDF_Attribute) anAttr = anAttrIterator.Value();
- if (!Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(anAttr).IsNull()) continue; // never copy tree node attribute
- if (!Handle(SALOMEDSImpl_AttributeTarget)::DownCast(anAttr).IsNull()) continue; // and target attribute
-
- if (!Handle(SALOMEDSImpl_AttributeReference)::DownCast(anAttr).IsNull()) { // reference copied as Comment in aux tree
- TDF_Label aReferenced = Handle(SALOMEDSImpl_AttributeReference)::DownCast(anAttr)->Get();
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(aReferenced, anEntry);
- // store the value of name attribute of referenced label
- Handle(SALOMEDSImpl_AttributeName) aNameAttribute;
- if (aReferenced.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttribute)) {
- anEntry += " ";
- anEntry += aNameAttribute->Value();
- }
- SALOMEDSImpl_AttributeComment::Set(aAuxTargetLabel, TCollection_ExtendedString(anEntry));
- continue;
- }
-
- if (!Handle(SALOMEDSImpl_AttributeIOR)::DownCast(anAttr).IsNull()) { // IOR => ID and TMPFile of Engine
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(theSource, anEntry);
- Handle(SALOMEDSImpl_SObject) aSO = theSourceStudy->FindObjectID(anEntry.ToCString());
- int anObjID;
- long aLen;
- unsigned char* aStream = theEngine->CopyFrom(aSO, anObjID, aLen);
- TCollection_ExtendedString aResStr("");
- for(a = 0; a < aLen; a++) {
- aResStr += TCollection_ExtendedString(ToExtCharacter((Standard_Character)aStream[a]));
- }
- if(aStream != NULL) delete [] aStream;
- SALOMEDSImpl_AttributeInteger::Set(aAuxTargetLabel, anObjID);
- SALOMEDSImpl_AttributeName::Set(aAuxTargetLabel, aResStr);
- continue;
- }
- Handle(TDF_Attribute) aNewAttribute = anAttr->NewEmpty();
- aTargetLabel.AddAttribute(aNewAttribute);
- anAttr->Paste(aNewAttribute, aRT);
- }
-
- return true;
-}
-
-//============================================================================
-/*! Function : Copy
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::Copy(const Handle(SALOMEDSImpl_SObject)& theObject,
- SALOMEDSImpl_Driver* theEngine)
-{
- _errorCode = "";
-
- // adoptation for alliances datamodel copy: without IOR attributes !!!
- bool aStructureOnly; // copy only SObjects and attributes without component help
- aStructureOnly = !theObject->GetLabel().IsAttribute(SALOMEDSImpl_AttributeIOR::GetID());
-
- // get component-engine
- Handle(SALOMEDSImpl_Study) aStudy = theObject->GetStudy();
-
- // CAF document of current study usage
- Handle(TDocStd_Document) aDocument = GetDocumentOfStudy(aStudy);
- if (aDocument.IsNull()) {
- _errorCode = "OCAF document is null";
- return false;
- }
-
- //Clear the clipboard
- _clipboard->Main().Root().ForgetAllAttributes(Standard_True);
- _OCAFApp->Close(_clipboard);
- Handle(TDocStd_Document) aDoc;
- _OCAFApp->NewDocument("SALOME_STUDY", aDoc);
- _clipboard = aDoc;
-
- // set component data type to the name attribute of root label
- if (!aStructureOnly) {
- SALOMEDSImpl_AttributeComment::Set(_clipboard->Main().Root(),
- TCollection_ExtendedString(theEngine->ComponentDataType()));
- }
- // set to the Root label integer attribute: study id
- SALOMEDSImpl_AttributeInteger::Set(_clipboard->Main().Root(), aStudy->StudyId());
- // iterate all theObject's label children
- TDF_Label aStartLabel = theObject->GetLabel();
- Standard_Integer aSourceStartDepth = aStartLabel.Depth();
-
- // copy main source label
- CopyLabel(aStudy, theEngine, aSourceStartDepth, aStartLabel, _clipboard->Main());
-
- // copy all subchildren of the main source label (all levels)
- TDF_ChildIterator anIterator(aStartLabel, Standard_True);
- for(; anIterator.More(); anIterator.Next()) {
- CopyLabel(aStudy, theEngine, aSourceStartDepth, anIterator.Value(), _clipboard->Main());
- }
-
- return true;
-}
-//============================================================================
-/*! Function : CanPaste
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_StudyManager::CanPaste(const Handle(SALOMEDSImpl_SObject)& theObject,
- SALOMEDSImpl_Driver* theEngine)
-{
- _errorCode = "";
-
- if (_clipboard.IsNull()) {
- _errorCode = "Clipboard is null";
- return false;
- }
-
- Handle(SALOMEDSImpl_AttributeComment) aCompName;
- if (!_clipboard->Main().Root().FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aCompName)) {
- _errorCode = "Clipboard has no component type";
- return false;
- }
- Handle(SALOMEDSImpl_AttributeInteger) anObjID;
- if (!_clipboard->Main().Father().FindChild(2).FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anObjID)) {
- _errorCode = "Clipboard has no object id";
- return false;
- }
- Handle(SALOMEDSImpl_SComponent) aComponent = theObject->GetFatherComponent();
- if (aComponent.IsNull()) {
- _errorCode = "Object doesn't belong to component";
- return false;
- }
-
- TCollection_AsciiString IOREngine;
- if (!aComponent->ComponentIOR(IOREngine)) {
- _errorCode = "component has no IOR";
- return false;
- }
- return theEngine->CanPaste(aCompName->Value(), anObjID->Value());
-}
-
-//============================================================================
-/*! Function : PasteLabel
- * Purpose :
- */
-//============================================================================
-TDF_Label SALOMEDSImpl_StudyManager::PasteLabel(const Handle(SALOMEDSImpl_Study)& theDestinationStudy,
- SALOMEDSImpl_Driver* theEngine,
- const TDF_Label& theSource,
- const TDF_Label& theDestinationStart,
- const int theCopiedStudyID,
- const bool isFirstElement)
-{
- _errorCode = "";
-
- // get corresponding source, target and auxiliary labels
- TDF_Label aTargetLabel = theDestinationStart;
-
- TDF_Label aAuxSourceLabel = theSource.Root().FindChild(2);
- int a;
- if (!isFirstElement) {
- for(a = theSource.Depth() - 1; a > 0 ; a--) {
- TDF_Label aSourceLabel = theSource;
- for(int aNbFather = 1; aNbFather < a; aNbFather++) aSourceLabel = aSourceLabel.Father();
- aTargetLabel = aTargetLabel.FindChild(aSourceLabel.Tag());
- aAuxSourceLabel = aAuxSourceLabel.FindChild(aSourceLabel.Tag());
- }
- }
-
- // check auxiliary label for TMPFile => IOR
- Handle(SALOMEDSImpl_AttributeName) aNameAttribute;
- if (aAuxSourceLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttribute)) {
- Handle(SALOMEDSImpl_AttributeInteger) anObjID;
-
- aAuxSourceLabel.FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anObjID);
- Handle(SALOMEDSImpl_AttributeComment) aComponentName;
- theSource.Root().FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aComponentName);
- TCollection_AsciiString aCompName = aComponentName->Value();
-
- if (theEngine->CanPaste(aCompName, anObjID->Value())) {
- TCollection_ExtendedString aTMPStr = aNameAttribute->Value();
- int aLen = aTMPStr.Length();
- unsigned char* aStream = NULL;
- if(aLen > 0) {
- aStream = new unsigned char[aLen+10];
- for(a = 0; a < aLen; a++) {
- aStream[a] = ToCharacter(aTMPStr.Value(a+1));
- }
- }
-
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(aTargetLabel, anEntry);
- Handle(SALOMEDSImpl_SObject) aPastedSO = theDestinationStudy->FindObjectID(anEntry);
-
- if (isFirstElement) {
- TCollection_AsciiString aDestEntry = theEngine->PasteInto(aStream,
- aLen,
- anObjID->Value(),
- aPastedSO->GetFatherComponent());
- TDF_Tool::Label(theDestinationStart.Data(), aDestEntry, aTargetLabel);
- } else
- theEngine->PasteInto(aStream, aLen, anObjID->Value(), aPastedSO);
-
- if(aStream != NULL) delete []aStream;
- }
- }
-
- // iterate attributes
- TDF_AttributeIterator anAttrIterator(theSource);
- Handle(TDF_RelocationTable) aRT = new TDF_RelocationTable();
- for(; anAttrIterator.More(); anAttrIterator.Next()) {
- Handle(TDF_Attribute) anAttr = anAttrIterator.Value();
- if (aTargetLabel.FindAttribute(anAttr->ID(), anAttr)) {
- aTargetLabel.ForgetAttribute(anAttr->ID());
- anAttr = anAttrIterator.Value();
- }
- Handle(TDF_Attribute) aNewAttribute = anAttr->NewEmpty();
- aTargetLabel.AddAttribute(aNewAttribute);
- anAttr->Paste(aNewAttribute, aRT);
- }
-
- // check auxiliary label for Comment => reference or name attribute of the referenced object
- Handle(SALOMEDSImpl_AttributeComment) aCommentAttribute;
- if (aAuxSourceLabel.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aCommentAttribute)) {
- char * anEntry = new char[aCommentAttribute->Value().Length() + 1];
- strcpy(anEntry, TCollection_AsciiString(aCommentAttribute->Value()).ToCString());
- char* aNameStart = strchr(anEntry, ' ');
- if (aNameStart) {
- *aNameStart = '\0';
- aNameStart++;
- }
- if (theCopiedStudyID == theDestinationStudy->StudyId()) { // if copy to the same study, reanimate reference
- TDF_Label aRefLabel;
- TDF_Tool::Label(aTargetLabel.Data(), anEntry, aRefLabel);
- SALOMEDSImpl_AttributeReference::Set(aTargetLabel, aRefLabel);
- // target attributes structure support
- SALOMEDSImpl_AttributeTarget::Set(aRefLabel)->Add(SALOMEDSImpl_Study::SObject(aTargetLabel));
- } else {
- if (aNameStart) SALOMEDSImpl_AttributeName::Set(aTargetLabel, aNameStart);
- else SALOMEDSImpl_AttributeName::Set(aTargetLabel, TCollection_ExtendedString("Reference to:")+anEntry);
- }
- delete [] anEntry;
- }
-
- return aTargetLabel;
-}
-
-//============================================================================
-/*! Function : Paste
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_StudyManager::Paste(const Handle(SALOMEDSImpl_SObject)& theObject,
- SALOMEDSImpl_Driver* theEngine)
-{
- _errorCode = "";
-
- Handle(SALOMEDSImpl_Study) aStudy = theObject->GetStudy();
-
- // if study is locked, then paste can't be done
- if (aStudy->GetProperties()->IsLocked()) {
- _errorCode = "LockProtection";
- throw LockProtection("LockProtection");
- }
-
- // if there is no component name, then paste only SObjects and attributes: without component help
- Handle(SALOMEDSImpl_AttributeComment) aComponentName;
- bool aStructureOnly = !_clipboard->Main().Root().FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aComponentName);
-
- // get copied study ID
- Handle(SALOMEDSImpl_AttributeInteger) aStudyIDAttribute;
- if (!_clipboard->Main().Root().FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), aStudyIDAttribute)) {
- _errorCode = "No study ID was found";
- return NULL;
- }
- int aCStudyID = aStudyIDAttribute->Value();
-
- // CAF document of current study usage
- Handle(TDocStd_Document) aDocument = GetDocumentOfStudy(aStudy);
- if (aDocument.IsNull()) {
- _errorCode = "OCAF document is null";
- return NULL;
- }
-
- Handle(SALOMEDSImpl_SComponent) aComponent = theObject->GetFatherComponent();
-
- // fill root inserted SObject
- TDF_Label aStartLabel;
- if (aStructureOnly) {
- TDF_Label anObjectLabel;
- TDF_Tool::Label(aDocument->GetData(), theObject->GetID(), anObjectLabel);
- aStartLabel = PasteLabel(aStudy, theEngine, _clipboard->Main(), anObjectLabel, aCStudyID, false);
- } else {
- TDF_Label aComponentLabel;
- TDF_Tool::Label(aDocument->GetData(), aComponent->GetID(), aComponentLabel);
- aStartLabel = PasteLabel(aStudy, theEngine, _clipboard->Main(), aComponentLabel, aCStudyID, true);
- }
-
- // paste all sublebels
- TDF_ChildIterator anIterator(_clipboard->Main(), Standard_True);
- for(; anIterator.More(); anIterator.Next()) {
- PasteLabel(aStudy, theEngine, anIterator.Value(), aStartLabel, aCStudyID, false);
- }
-
- return SALOMEDSImpl_Study::SObject(aStartLabel);
-}
-
-//#######################################################################################################
-//# STATIC PRIVATE FUNCTIONS
-//#######################################################################################################
-
-//============================================================================
-/*! Function : SaveAttributes
- * Purpose : Save attributes for object
- */
-//============================================================================
-static void SaveAttributes(Handle(SALOMEDSImpl_SObject) aSO, HDFgroup *hdf_group_sobject)
-{
- hdf_size size[1];
- TDF_AttributeIterator Itr(aSO->GetLabel());
- Handle(TDF_Attribute) anAttr;
- for(; Itr.More(); Itr.Next()) {
- anAttr = Itr.Value();
- //The following attributes are not supposed to be written to the file
- if(anAttr->DynamicType() == STANDARD_TYPE(SALOMEDSImpl_AttributeIOR)) continue; //IOR attribute is not saved
- Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(anAttr);
- TCollection_AsciiString aSaveStr = ga->Save();
- //cout << "Saving: " << aSO->GetID() << " "<< ga->Type() << " value: " << aSaveStr << endl;
- size[0] = (hdf_int32) strlen(aSaveStr.ToCString()) + 1;
- HDFdataset *hdf_dataset = new HDFdataset((char*)ga->Type().ToCString(), hdf_group_sobject,HDF_STRING,size,1);
- hdf_dataset->CreateOnDisk();
- hdf_dataset->WriteOnDisk((char*)aSaveStr.ToCString());
- hdf_dataset->CloseOnDisk();
- hdf_dataset=0; //will be deleted by hdf_sco_group destructor
- }
-}
-
-//===========================================================================
-//Function : ReadAttributes
-//===========================================================================
-static void ReadAttributes(const Handle(SALOMEDSImpl_Study)& theStudy,
- const Handle(SALOMEDSImpl_SObject)& aSO,
- HDFdataset* hdf_dataset)
-{
- hdf_dataset->OpenOnDisk();
-
- Handle(TDF_Attribute) anAttr;
-
- char* current_string = new char[hdf_dataset->GetSize()];
- hdf_dataset->ReadFromDisk(current_string);
-
- if (!strcmp(hdf_dataset->GetName(),"COMPONENTDATATYPE")) {
- anAttr = theStudy->NewBuilder()->FindOrCreateAttribute(aSO, "AttributeComment");
- } else if (!strcmp(hdf_dataset->GetName(),"AttributeReference")) {
- theStudy->NewBuilder()->Addreference(aSO, theStudy->CreateObjectID(current_string));
- delete(current_string);
- hdf_dataset->CloseOnDisk();
- return;
- } else {
- anAttr = theStudy->NewBuilder()->FindOrCreateAttribute(aSO, hdf_dataset->GetName());
- }
-
- if (!anAttr.IsNull()) {
-
- Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(anAttr);
- ga->Load(current_string);
- //cout << "Reading: " << aSO->GetID() << " "<< ga->Type() << " value: " << current_string << endl;
- }
-
- delete(current_string);
- hdf_dataset->CloseOnDisk();
-}
-
-//============================================================================
-//Function : BuildlTree
-//============================================================================
-static void BuildTree (const Handle(SALOMEDSImpl_Study)& theStudy, HDFgroup* hdf_current_group)
-{
- hdf_current_group->OpenOnDisk();
- Handle(SALOMEDSImpl_SObject) aSO;
- char* Entry = hdf_current_group->GetName();
- if (strcmp(Entry,"STUDY_STRUCTURE") == 0) {
- aSO = theStudy->CreateObjectID("0:1");
- }
- else {
- aSO = theStudy->CreateObjectID(Entry);
- }
-
- char name[HDF_NAME_MAX_LEN+1];
- Standard_Integer nbsons = hdf_current_group->nInternalObjects();
- for (Standard_Integer i=0; i<nbsons; i++) {
- hdf_current_group->InternalObjectIndentify(i,name);
- if (strncmp(name, "INTERNAL_COMPLEX",16) == 0) continue;
- hdf_object_type type = hdf_current_group->InternalObjectType(name);
-
- if (type == HDF_DATASET) {
- HDFdataset* new_dataset = new HDFdataset(name,hdf_current_group);
- ReadAttributes(theStudy,aSO,new_dataset);
- new_dataset = 0; // will be deleted by father destructor
-
- }
- else if (type == HDF_GROUP) {
- HDFgroup* new_group = new HDFgroup(name,hdf_current_group);
- BuildTree (theStudy, new_group);
- new_group = 0; // will be deleted by father destructor
- }
- }
- hdf_current_group->CloseOnDisk();
-}
-
-
-//============================================================================
-//Function : Translate_IOR_to_persistentID
-//============================================================================
-static void Translate_IOR_to_persistentID (const Handle(SALOMEDSImpl_SObject)& so,
- SALOMEDSImpl_Driver* engine,
- bool isMultiFile,
- bool isASCII)
-{
- TDF_ChildIterator itchild(so->GetLabel());
- TCollection_AsciiString ior_string, persistent_string, curid;
-
- for (; itchild.More(); itchild.Next()) {
- Handle(SALOMEDSImpl_SObject) current = SALOMEDSImpl_Study::SObject(itchild.Value());
- Handle(SALOMEDSImpl_AttributeIOR) IOR;
- if (current->GetLabel().FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), IOR)) {
- ior_string = IOR->Value();
-
- persistent_string = engine->IORToLocalPersistentID (current, ior_string, isMultiFile, isASCII);
- SALOMEDSImpl_AttributePersistentRef::Set(current->GetLabel(), persistent_string);
- }
- Translate_IOR_to_persistentID (current, engine, isMultiFile, isASCII);
- }
-}
+++ /dev/null
-// File : SALOMEDSImpl_StudyManager.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSImpl_STUDYMANAGER_I_H__
-#define __SALOMEDSImpl_STUDYMANAGER_I_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_StudyManager, MMgt_TShared )
-
-// std C++ headers
-#include <strstream>
-
-// Cascade headers
-#include "SALOMEDSImpl_OCAFApplication.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_Driver.hxx"
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <TDocStd_Document.hxx>
-#include <TColStd_HSequenceOfTransient.hxx>
-
-class HDFgroup;
-
-class SALOMEDSImpl_StudyManager : public MMgt_TShared
-{
-
-private:
-
- Handle (SALOMEDSImpl_OCAFApplication) _OCAFApp;
- int _IDcounter;
- Handle(TDocStd_Document) _clipboard;
- TCollection_AsciiString _errorCode;
-
-public:
-
- //! standard constructor
- Standard_EXPORT SALOMEDSImpl_StudyManager();
-
- //! standard destructor
- Standard_EXPORT virtual ~SALOMEDSImpl_StudyManager();
-
- //! method to Create a New Study of name study_name
- Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) NewStudy(const TCollection_AsciiString& study_name);
-
- //! method to Open a Study from it's persistent reference
- Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) Open(const TCollection_AsciiString& aStudyUrl);
-
- //! method to close a Study
- Standard_EXPORT virtual void Close(const Handle(SALOMEDSImpl_Study)& aStudy);
-
- //! method to save a Study
- Standard_EXPORT virtual bool Save(const Handle(SALOMEDSImpl_Study)& aStudy, SALOMEDSImpl_DriverFactory* aFactory, bool theMultiFile);
-
- Standard_EXPORT virtual bool SaveASCII(const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile);
-
- //! method to save a Study to the persistent reference aUrl
- Standard_EXPORT virtual bool SaveAs(const TCollection_AsciiString& aUrl,
- const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile);
-
- Standard_EXPORT virtual bool SaveAsASCII(const TCollection_AsciiString& aUrl,
- const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile);
-
- //! method to Get name list of open studies in the session
- Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) GetOpenStudies();
-
- //! method to get a Study from it's name
- Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) GetStudyByName(const TCollection_AsciiString& aStudyName) ;
-
- //! method to get a Study from it's ID
- Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) GetStudyByID(int aStudyID) ;
-
-
- Standard_EXPORT Handle(TDocStd_Document) GetDocumentOfStudy(const Handle(SALOMEDSImpl_Study)& theStudy);
-
- Standard_EXPORT Handle(TDocStd_Document) GetClipboard() { return _clipboard; }
-
- Standard_EXPORT bool CopyLabel(const Handle(SALOMEDSImpl_Study)& theSourceStudy,
- SALOMEDSImpl_Driver* theEngine,
- const int theSourceStartDepth,
- const TDF_Label& theSource,
- const TDF_Label& theDestinationMain);
-
- Standard_EXPORT TDF_Label PasteLabel(const Handle(SALOMEDSImpl_Study)& theDestinationStudy,
- SALOMEDSImpl_Driver* theEngine,
- const TDF_Label& theSource,
- const TDF_Label& theDestinationStart,
- const int theCopiedStudyID,
- const bool isFirstElement);
-
- Standard_EXPORT virtual bool CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
- Standard_EXPORT virtual bool Copy(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
- Standard_EXPORT virtual bool CanPaste(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) Paste(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
-
- // _SaveAs private function called by Save and SaveAs
- Standard_EXPORT virtual bool Impl_SaveAs(const TCollection_AsciiString& aUrl,
- const Handle(SALOMEDSImpl_Study)& aStudy,
- SALOMEDSImpl_DriverFactory* aFactory,
- bool theMultiFile,
- bool theASCII);
-
- // _SaveObject private function called by _SaveAs
- Standard_EXPORT virtual bool Impl_SaveObject(const Handle(SALOMEDSImpl_SObject)& SC, HDFgroup *hdf_group_datatype);
-
- // _SubstituteSlash function called by Open and GetStudyByName
- Standard_EXPORT virtual TCollection_AsciiString Impl_SubstituteSlash(const TCollection_AsciiString& aUrl);
-
- Standard_EXPORT virtual bool Impl_SaveProperties(const Handle(SALOMEDSImpl_Study)& aStudy, HDFgroup *hdf_group);
-
- Standard_EXPORT TCollection_AsciiString GetErrorCode() { return _errorCode; }
- Standard_EXPORT virtual bool IsError() { return _errorCode != ""; }
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_StudyManager )
-
-};
-
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_Tool.cxx
-// Created : Mon Oct 21 16:24:34 2002
-// Author : Sergey RUIN
-
-// Project : SALOME
-// Module : SALOMEDSImpl
-// Copyright : Open CASCADE
-
-#include "SALOMEDSImpl_Tool.hxx"
-
-#include <stdio.h>
-#include <iostream>
-#include <fstream>
-#include <OSD_Path.hxx>
-#include <OSD_File.hxx>
-#include <OSD_Directory.hxx>
-#include <OSD_Process.hxx>
-#include <OSD_Directory.hxx>
-#include <OSD_Protection.hxx>
-#include <OSD_SingleProtection.hxx>
-#include <OSD_FileIterator.hxx>
-
-#ifndef WNT
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#include <stdlib.h>
-
-using namespace std;
-
-
-//============================================================================
-// function : GetTempDir
-// purpose : Return a temp directory to store created files like "/tmp/sub_dir/"
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Tool::GetTmpDir()
-{
- //Find a temporary directory to store a file
-
- TCollection_AsciiString aTmpDir;
-
- char *Tmp_dir = getenv("SALOME_TMP_DIR");
- if(Tmp_dir != NULL) {
- aTmpDir = TCollection_AsciiString(Tmp_dir);
-#ifdef WIN32
- if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
-#else
- if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
-#endif
- }
- else {
-#ifdef WIN32
- aTmpDir = TCollection_AsciiString("C:\\");
-#else
- aTmpDir = TCollection_AsciiString("/tmp/");
-#endif
- }
-
- srand((unsigned int)time(NULL));
- int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
- TCollection_AsciiString aSubDir(aRND);
- if(aSubDir.Length() <= 1) aSubDir = TCollection_AsciiString("123409876");
-
- aTmpDir += aSubDir; //Get RND sub directory
-
-#ifdef WIN32
- if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
-#else
- if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
-#endif
-
- OSD_Path aPath(aTmpDir);
- OSD_Directory aDir(aPath);
-
- for(aRND = 0; aDir.Exists(); aRND++) {
- aTmpDir.Insert((aTmpDir.Length() - 1), TCollection_AsciiString(aRND)); //Build a unique directory name
- aPath = OSD_Path(aTmpDir);
- aDir = OSD_Directory(aPath);
- }
-
- OSD_Protection aProtection(OSD_RW, OSD_RWX, OSD_RX, OSD_RX);
- aDir.Build(aProtection);
-
- return aTmpDir;
-}
-
-//============================================================================
-// function : RemoveTemporaryFiles
-// purpose : Removes files listed in theFileList
-//============================================================================
-void SALOMEDSImpl_Tool::RemoveTemporaryFiles(const TCollection_AsciiString& theDirectory,
- const Handle(TColStd_HSequenceOfAsciiString)& theFiles,
- const bool IsDirDeleted)
-{
- TCollection_AsciiString aDirName = theDirectory;
-
- int i, aLength = theFiles->Length();
- for(i=1; i<=aLength; i++) {
- TCollection_AsciiString aFile(aDirName);
- aFile += theFiles->Value(i);
- OSD_Path anOSDPath(aFile);
- OSD_File anOSDFile(anOSDPath);
- if(!anOSDFile.Exists()) continue;
-
- OSD_Protection aProtection = anOSDFile.Protection();
- aProtection.SetUser(OSD_RW);
- anOSDFile.SetProtection(aProtection);
-
- anOSDFile.Remove();
- }
-
- if(IsDirDeleted) {
- OSD_Path aPath(aDirName);
- OSD_Directory aDir(aPath);
- OSD_FileIterator anIterator(aPath, '*');
-
- if(aDir.Exists() && !anIterator.More()) aDir.Remove();
- }
-
-}
-
-//============================================================================
-// function : GetNameFromPath
-// purpose : Returns the name by the path
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Tool::GetNameFromPath(const TCollection_AsciiString& thePath) {
- if (thePath.IsEmpty()) return "";
- OSD_Path aPath = OSD_Path(thePath);
- TCollection_AsciiString aNameString(aPath.Name());
- return aNameString;
-}
-
-//============================================================================
-// function : GetDirFromPath
-// purpose : Returns the dir by the path
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_Tool::GetDirFromPath(const TCollection_AsciiString& thePath) {
- if (thePath.IsEmpty()) return "";
- OSD_Path aPath = OSD_Path(thePath);
- TCollection_AsciiString aDirString(aPath.Trek());
- aDirString.ChangeAll('|','/');
- return aDirString;
-}
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-// File : SALOMEDSImpl_Tool.hxx
-// Created : Mon Oct 21 16:24:50 2002
-// Author : Sergey RUIN
-
-// Project : SALOME
-// Module : SALOMEDSImpl
-// Copyright : Open CASCADE
-
-
-#ifndef __SALOMEDSIMPL_TOOL_H__
-#define __SALOMEDSIMPL_TOOL_H__
-
-#include <TCollection_AsciiString.hxx>
-#include <TDF_Label.hxx>
-#include <TColStd_HSequenceOfAsciiString.hxx>
-
-class SALOMEDSImpl_Tool
-{
-
-public:
-
- // Returns the unique temporary directory, that is defined in SALOME_TMP_DIR if this variable is set
- // otherwise return /tmp/something/ for Unix or c:\something\ for WNT
- static TCollection_AsciiString GetTmpDir();
-
-
- // Removes files which are in <theDirectory>, the files for deletion are listed in <theFiles>
- // if <IsDirDeleted> is true <theDirectory> is also deleted if it is empty
- static void RemoveTemporaryFiles(const TCollection_AsciiString& theDirectory,
- const Handle(TColStd_HSequenceOfAsciiString)& theFiles,
- const bool IsDirDeleted);
-
- // Returns the name by the path
- // for an example: if thePath = "/tmp/aaa/doc1.hdf" the function returns "doc1"
- static TCollection_AsciiString GetNameFromPath(const TCollection_AsciiString& thePath);
-
- // Returns the directory by the path
- // for an example: if thePath = "/tmp/aaa/doc1.hdf" the function returns "/tmp/aaa"
- static TCollection_AsciiString GetDirFromPath(const TCollection_AsciiString& thePath);
-
-};
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-// File : SALOMEDSImpl_UseCaseBuilder.cxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-
-#include "SALOMEDSImpl_UseCaseBuilder.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_Attributes.hxx"
-
-#include <TDF_Label.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_AttributeList.hxx>
-#include <TDF_ListIteratorOfAttributeList.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_ChildIterator.hxx>
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_UseCaseBuilder, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_UseCaseBuilder, MMgt_TShared )
-
-
-#define USE_CASE_LABEL_TAG 2
-#define USE_CASE_GUID "AA43BB12-D9CD-11d6-945D-0050DA506788"
-
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_UseCaseBuilder::SALOMEDSImpl_UseCaseBuilder(const Handle(TDocStd_Document)& theDocument)
-:_doc(theDocument)
-{
- if(_doc.IsNull()) return;
-
- TDF_Label aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG); //Iterate all use cases
- if(!aLabel.FindAttribute(Standard_GUID(USE_CASE_GUID), _root)) {
- _root = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, Standard_GUID(USE_CASE_GUID));
- }
-
- Handle(SALOMEDSImpl_AttributeReference) aRef;
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
- aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());
- }
-
- Handle(SALOMEDSImpl_AttributeName) aNameAttr;
- if(!aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttr)) {
- aNameAttr = SALOMEDSImpl_AttributeName::Set(aLabel, "Use cases");
- }
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_UseCaseBuilder::~SALOMEDSImpl_UseCaseBuilder()
-{
-}
-
-
-//============================================================================
-/*! Function : Append
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::Append(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- if(_root.IsNull() || theObject.IsNull()) return false;
-
- TDF_Label aLabel = theObject->GetLabel();
- if(aLabel.IsNull()) return false;
-
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aCurrentNode;
- aNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, _root->ID());
- aNode->Remove();
-
- Handle(SALOMEDSImpl_AttributeReference) aRef;
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
- aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());
- }
-
- TDF_Label aCurrent = aRef->Get();
- if(aCurrent.IsNull() || !aCurrent.FindAttribute(_root->ID(), aCurrentNode))
- aCurrentNode = _root;
-
- aCurrentNode->Append(aNode);
-
- return true;
-}
-
- //============================================================================
-/*! Function : Remove
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::Remove(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- if(_root.IsNull() || theObject.IsNull()) return false;
-
- TDF_Label aLabel = theObject->GetLabel();
- if(aLabel.IsNull()) return false;
-
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode;
- if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
-
- aNode->Remove();
-
- TDF_AttributeList aList;
- aList.Append(aNode);
-
- Handle(SALOMEDSImpl_AttributeReference) aRef;
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
- aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());
- }
- TDF_Label aCurrent = aRef->Get();
-
- SALOMEDSImpl_ChildNodeIterator aChildItr(aNode, Standard_True);
- for(; aChildItr.More(); aChildItr.Next())
- aList.Append(aChildItr.Value());
-
- TDF_ListIteratorOfAttributeList anIterator(aList);
- for(; anIterator.More(); anIterator.Next()) {
- if(anIterator.Value()->Label() == aCurrent) { //The current node is removed
- aRef->Set(_root->Label()); //Reset the current node to the root
- }
- anIterator.Value()->Label().ForgetAttribute(_root->ID());
- }
-
- return true;
-}
-
-
-//============================================================================
-/*! Function : AppendTo
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::AppendTo(const Handle(SALOMEDSImpl_SObject)& theFather,
- const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- if(_root.IsNull() || theFather.IsNull() || theObject.IsNull()) return false;
-
- TDF_Label aFatherLabel = theFather->GetLabel(), aLabel = theObject->GetLabel();
- Handle(SALOMEDSImpl_AttributeTreeNode) aFather, aNode;
-
- if(aFatherLabel.IsNull()) return false;
- if(!aFatherLabel.FindAttribute(_root->ID(), aFather)) return false;
-
- if(aLabel.IsNull()) return false;
- if(!aLabel.FindAttribute(_root->ID(), aNode)) {
- aNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, _root->ID());
- }
-
- aNode->Remove();
-
- return aFather->Append(aNode);
-}
-
-//============================================================================
-/*! Function : InsertBefore
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::InsertBefore(const Handle(SALOMEDSImpl_SObject)& theFirst,
- const Handle(SALOMEDSImpl_SObject)& theNext)
-{
- if(_root.IsNull() || theFirst.IsNull() || theNext.IsNull()) return false;
-
- TDF_Label aFirstLabel = theFirst->GetLabel(), aLabel= theNext->GetLabel();
- Handle(SALOMEDSImpl_AttributeTreeNode) aFirstNode, aNode;
-
- if(aFirstLabel.IsNull()) return false;
- if(aFirstLabel.FindAttribute(_root->ID(), aFirstNode)) {
- aFirstNode->Remove();
- aFirstLabel.ForgetAttribute(aFirstNode->ID());
- }
-
- aFirstNode = SALOMEDSImpl_AttributeTreeNode::Set(aFirstLabel, _root->ID());
-
- if(aLabel.IsNull()) return false;
- if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
-
- aFirstNode->Remove();
-
- return aNode->InsertBefore(aFirstNode);
-}
-
-
-//============================================================================
-/*! Function : SetCurrentObject
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::SetCurrentObject(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- if(_root.IsNull() || theObject.IsNull()) return false;
-
- TDF_Label aLabel = theObject->GetLabel();
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode;
- if(aLabel.IsNull()) return false;
- if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
-
-
- Handle(SALOMEDSImpl_AttributeReference) aRef;
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
- aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), aNode->Label());
- }
-
- aRef->Set(aNode->Label());
-
- return true;
-}
-
-//============================================================================
-/*! Function : SetRootCurrent
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::SetRootCurrent()
-{
- if(_root.IsNull()) return false;
-
- Handle(SALOMEDSImpl_AttributeReference) aRef;
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef))
- aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());
-
- aRef->Set(_root->Label());
- return true;
-}
-
-//============================================================================
-/*! Function : HasChildren
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::HasChildren(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- if(_root.IsNull()) return false;
-
- TDF_Label aLabel;
- if (theObject.IsNull()) aLabel = _root->Label();
- else
- aLabel = theObject->GetLabel();
- if(aLabel.IsNull()) return false;
-
- Handle(SALOMEDSImpl_AttributeTreeNode) aNode;
- if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
-
- return !(aNode->GetFirst().IsNull());
-}
-
-//============================================================================
-/*! Function : SetName
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::SetName(const TCollection_AsciiString& theName) {
- if(_root.IsNull()) return false;
-
- Handle(SALOMEDSImpl_AttributeName) aNameAttrib;
-
- if (!_root->FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttrib))
- aNameAttrib = SALOMEDSImpl_AttributeName::Set(_root->Label(), theName);
- else
- aNameAttrib->SetValue(theName);
-
- return true;
-}
-
-
-//============================================================================
-/*! Function : GetCurrentObject
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseBuilder::GetCurrentObject()
-{
- if(_root.IsNull()) return NULL;
-
- Handle(SALOMEDSImpl_AttributeReference) aRef;
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
- aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());
- }
- TDF_Label aCurrent = aRef->Get();
- if(aCurrent.IsNull()) return NULL;
-
- return SALOMEDSImpl_Study::SObject(aCurrent);
-}
-
-//============================================================================
-/*! Function : GetName
- * Purpose :
- */
-//============================================================================
-TCollection_AsciiString SALOMEDSImpl_UseCaseBuilder::GetName()
-{
- TCollection_AsciiString aString;
- if(_root.IsNull()) return aString;
-
- Handle(SALOMEDSImpl_AttributeName) aName;
- if (!_root->FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) return aString;
- aString = TCollection_AsciiString(aName->Value());
- return aString;
-}
-
-//============================================================================
-/*! Function : IsUseCase
- * Purpose :
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseBuilder::IsUseCase(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- if(theObject.IsNull()) return false;
- TDF_Label aFather, aLabel = theObject->GetLabel();
- aFather = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG);
- if(aLabel.Father() == aFather) return true;
- return false;
-}
-
-//============================================================================
-/*! Function : NewUseCase
- * Purpose :
- */
-//============================================================================
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseBuilder::AddUseCase(const TCollection_AsciiString& theName)
-{
- Standard_GUID aBasicGUID(USE_CASE_GUID);
-
- //Create a use cases structure if it not exists
-
- Handle(SALOMEDSImpl_AttributeTreeNode) aFatherNode, aNode;
- Handle(SALOMEDSImpl_AttributeInteger) anInteger;
- Handle(SALOMEDSImpl_AttributeReference) aRef;
-
- TDF_Label aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG);
-
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
- aRef = SALOMEDSImpl_AttributeReference::Set(aLabel, aLabel);
- }
-
- if(!aRef->Get().FindAttribute(aBasicGUID, aFatherNode)) {
- aFatherNode = SALOMEDSImpl_AttributeTreeNode::Set(aRef->Get(), aBasicGUID);
- }
-
- if(!_root->FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anInteger)) {
- anInteger = SALOMEDSImpl_AttributeInteger::Set(aLabel, 0);
- }
-
- //Create a new use case
- anInteger->SetValue(anInteger->Value()+1);
- TDF_Label aChild = aLabel.FindChild(anInteger->Value());
- aNode = SALOMEDSImpl_AttributeTreeNode::Set(aChild, aBasicGUID);
- aNode->Remove();
- aFatherNode->Append(aNode);
- SALOMEDSImpl_AttributeName::Set(aChild, theName);
-
- return SALOMEDSImpl_Study::SObject(aChild);
-}
-
-//============================================================================
-/*! Function : GetUseCaseIterator
- * Purpose : Creates a new UseCase iterator, if anObject is null all use cases are iterated
- */
-//============================================================================
-Handle(SALOMEDSImpl_UseCaseIterator)
-SALOMEDSImpl_UseCaseBuilder::GetUseCaseIterator(const Handle(SALOMEDSImpl_SObject)& theObject)
-{
- TDF_Label aLabel;
-
- if(!theObject.IsNull()) {
- aLabel = theObject->GetLabel(); //Iterate only sub tree in the use case
- }
- else {
- aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG); //Iterate all use cases
- }
-
- return new SALOMEDSImpl_UseCaseIterator(aLabel, USE_CASE_GUID, false);
-}
-
-
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseBuilder::GetSObject(const TCollection_AsciiString& theEntry)
-{
- TDF_Label aLabel;
- TDF_Tool::Label(_doc->GetData(), theEntry, aLabel);
- return SALOMEDSImpl_Study::SObject(aLabel);
-}
+++ /dev/null
-// File : SALOMEDSImpl_UseCaseBuilder.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_USECaseBuilder_H__
-#define __SALOMEDSIMPL_USECaseBuilder_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_UseCaseBuilder, MMgt_TShared )
-
-// Cascade headers
-#include <SALOMEDSImpl_AttributeTreeNode.hxx>
-#include <TDocStd_Document.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <Standard_GUID.hxx>
-
-#include "SALOMEDSImpl_UseCaseIterator.hxx"
-
-class SALOMEDSImpl_UseCaseBuilder : public MMgt_TShared
-{
-private:
-
- Handle(SALOMEDSImpl_AttributeTreeNode) _root;
- Handle(TDocStd_Document) _doc;
-
-public:
-
- //! standard constructor
- Standard_EXPORT SALOMEDSImpl_UseCaseBuilder(const Handle(TDocStd_Document)& theDocument);
-
- //! standard destructor
- Standard_EXPORT ~SALOMEDSImpl_UseCaseBuilder();
-
- Standard_EXPORT virtual bool Append(const Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT virtual bool Remove(const Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT virtual bool AppendTo(const Handle(SALOMEDSImpl_SObject)& theFather, const Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT virtual bool InsertBefore(const Handle(SALOMEDSImpl_SObject)& theFirst, const Handle(SALOMEDSImpl_SObject)& theNext);
-
- Standard_EXPORT virtual bool SetCurrentObject(const Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT virtual bool SetRootCurrent();
-
- Standard_EXPORT virtual bool HasChildren(const Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT virtual bool IsUseCase(const Handle(SALOMEDSImpl_SObject)& theObject);
-
- Standard_EXPORT virtual bool SetName(const TCollection_AsciiString& theName);
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetCurrentObject();
-
- Standard_EXPORT virtual TCollection_AsciiString GetName();
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) AddUseCase(const TCollection_AsciiString& theName);
-
- Standard_EXPORT virtual Handle(SALOMEDSImpl_UseCaseIterator) GetUseCaseIterator(const Handle(SALOMEDSImpl_SObject)& anObject);
-
- Standard_EXPORT Handle(SALOMEDSImpl_SObject) GetSObject(const TCollection_AsciiString& theEntry);
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_UseCaseBuilder )
-};
-#endif
+++ /dev/null
-// File : SALOMEDSImpl_UseCaseIterator.cxx
-// Author : Serge RUIN
-// Module : SALOME
-
-#include "SALOMEDSImpl_UseCaseIterator.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-
-using namespace std;
-
-IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_UseCaseIterator, MMgt_TShared )
-IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_UseCaseIterator, MMgt_TShared )
-
-//============================================================================
-/*! Function : constructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_UseCaseIterator::SALOMEDSImpl_UseCaseIterator(const TDF_Label& theLabel,
- const Standard_GUID& theGUID,
- const bool allLevels)
-:_guid(theGUID), _levels(allLevels)
-{
- if(theLabel.FindAttribute(_guid, _node)) {
- _it.Initialize (_node, _levels);
- }
-}
-
-//============================================================================
-/*! Function : destructor
- * Purpose :
- */
-//============================================================================
-SALOMEDSImpl_UseCaseIterator::~SALOMEDSImpl_UseCaseIterator()
-{
-}
-
-//============================================================================
-/*! Function :Init
- *
- */
-//============================================================================
-void SALOMEDSImpl_UseCaseIterator::Init(bool allLevels)
-{
- _it.Initialize (_node, allLevels);
-}
-
-//============================================================================
-/*! Function : More
- *
- */
-//============================================================================
-bool SALOMEDSImpl_UseCaseIterator::More()
-{
- return _it.More();
-}
-
- //============================================================================
-/*! Function : Next
- *
- */
-//============================================================================
-void SALOMEDSImpl_UseCaseIterator::Next()
-{
- _it.Next();
-}
-
-
-//============================================================================
-/*! Function :
- * Purpose :
- */
-//============================================================================
-
-Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseIterator::Value()
-{
- TDF_Label L = _it.Value()->Label();
- return SALOMEDSImpl_Study::SObject(L);
-}
-
+++ /dev/null
-// File : SALOMEDSImpl_UseCaseIterator.hxx
-// Author : Sergey RUIN
-// Module : SALOME
-
-#ifndef __SALOMEDSIMPL_USECASEITERATOR_H__
-#define __SALOMEDSIMPL_USECASEITERATOR_H__
-
-//Handle definition
-#include <Handle_MMgt_TShared.hxx>
-#include <Standard_DefineHandle.hxx>
-DEFINE_STANDARD_HANDLE( SALOMEDSImpl_UseCaseIterator, MMgt_TShared )
-
-#include "SALOMEDSImpl_SObject.hxx"
-
-// Cascade headers
-#include <TDF_ChildIterator.hxx>
-#include <SALOMEDSImpl_ChildNodeIterator.hxx>
-#include <Standard_GUID.hxx>
-
-class SALOMEDSImpl_UseCaseIterator : public MMgt_TShared
-{
-
-private:
- Standard_GUID _guid;
- bool _levels;
- Handle(SALOMEDSImpl_AttributeTreeNode) _node;
- SALOMEDSImpl_ChildNodeIterator _it;
-
-public:
-
- //! standard constructor
- SALOMEDSImpl_UseCaseIterator(const TDF_Label& theLabel,
- const Standard_GUID& theGUID,
- const bool allLevels);
-
- //! standard destructor
- ~SALOMEDSImpl_UseCaseIterator();
-
- virtual void Init(bool);
- virtual bool More();
- virtual void Next();
- virtual Handle(SALOMEDSImpl_SObject) Value();
-
-public:
- DEFINE_STANDARD_RTTI( SALOMEDSImpl_UseCaseIterator )
-};
-#endif
+++ /dev/null
-//File: testDS.cxx
-//Author: Sergey RUIN
-
-#include <stdio.h>
-#include <iostream>
-
-#include <TColStd_HSequenceOfTransient.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDocStd_Document.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Label.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_Tool.hxx>
-
-#include "SALOMEDSImpl_Attributes.hxx"
-#include "SALOMEDSImpl_StudyManager.hxx"
-#include "SALOMEDSImpl_Study.hxx"
-#include "SALOMEDSImpl_StudyBuilder.hxx"
-#include "SALOMEDSImpl_SObject.hxx"
-#include "SALOMEDSImpl_SComponent.hxx"
-//#include "SALOMEDSImpl_.hxx"
-
-int main (int argc, char * argv[])
-{
- cout << "Test started " << endl;
-
- Handle(SALOMEDSImpl_StudyManager) aSM = new SALOMEDSImpl_StudyManager();
- cout << "Manager is created " << endl;
- Handle(SALOMEDSImpl_Study) aStudy = aSM->NewStudy("SRN");
- cout << "Study with id = " << aStudy->StudyId() << " is created " << endl;
- Handle(SALOMEDSImpl_StudyBuilder) aBuilder = aStudy->NewBuilder();
- cout << "StudyBuilder is created " << endl;
- Handle(SALOMEDSImpl_SComponent) aSC = aBuilder->NewComponent("TEST");
- cout << "New component with type " << aSC->ComponentDataType() << " is created " << endl;
- Handle(SALOMEDSImpl_SObject) aSO = aBuilder->NewObject(aSC);
- cout << "New SObject with ID = " << aSO->GetID() << " is created" << endl;
- TCollection_AsciiString anEntry;
- TDF_Tool::Entry(aSO->GetLabel(), anEntry);
- cout << "An entry of newly created SO is " << anEntry << endl;
- Handle(SALOMEDSImpl_AttributeIOR) aIORA = SALOMEDSImpl_AttributeIOR::Set(aSO->GetLabel(), "ior1234");
- cout << "New AttributeIOR is created, it contains " << aIORA->Value() << endl;
- Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aIORA);
- cout << "Attribute has type: " << ga->Type() << " and value: " << ga->Save() << endl;
- cout << "Just another way to create an attribute: official one :) " << endl;
- Handle(TDF_Attribute) aTDFAttr = aBuilder->FindOrCreateAttribute(aSO, "AttributeName");
- Handle(SALOMEDSImpl_AttributeName) aRN = Handle(SALOMEDSImpl_AttributeName)::DownCast(aTDFAttr);
- aRN->SetValue("name_attribute");
- cout << " The type = " << aRN->Type() << endl;
- ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aRN);
- cout << "Attribute has type: " << ga->Type() << " and value: " << ga->Save() << endl;
- cout << "Check GetObjectPath: " << aStudy->GetObjectPath(aSO) << endl;
-
- Handle(SALOMEDSImpl_SObject) aSubSO = aBuilder->NewObject(aSO);
- aTDFAttr = aBuilder->FindOrCreateAttribute(aSubSO, "AttributeIOR");
- Handle(SALOMEDSImpl_AttributeIOR) aIOR2 = Handle(SALOMEDSImpl_AttributeIOR)::DownCast(aTDFAttr);
- aIOR2->SetValue("some ior");
- aBuilder->Addreference(aSubSO, aSO);
- Handle(SALOMEDSImpl_SObject) aRefObject;
- aSubSO->ReferencedObject(aRefObject);
- cout << "Check reference : ReferencedObject is " << aRefObject->GetID() << endl;
- cout << "Check : Remove object: " << endl;
- aBuilder->RemoveObject(aSubSO);
- cout << "Remove: done" << endl;
-
- cout << "Check the attributes on SObject" << endl;
- Handle(TColStd_HSequenceOfTransient) aSeq = aSO->GetAllAttributes();
- for(int i = 1; i <= aSeq->Length(); i++)
- cout << "Found: " << Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aSeq->Value(i))->Type() << endl;
-
- cout << "Check AttributeTreeNode " << endl;
- aTDFAttr = aBuilder->FindOrCreateAttribute(aSO, "AttributeTreeNode");
- cout << Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aTDFAttr)->Type() << endl;
- cout << "Check AttributeTreeNode : done " << endl;
-
- cout << "Test finished " << endl;
- return 0;
-}
-
+++ /dev/null
-// Copyright (C) 2004 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 : FileTraceCollector.cxx
-// Author : Paul RASCLE (EDF)
-// Module : KERNEL
-// $Header$
-
-#include <iostream>
-#include <sstream>
-#include <fstream>
-#include <cstdlib>
-
-using namespace std;
-
-#include "FileTraceCollector.hxx"
-
-// Class attributes initialisation, for class method FileTraceCollector::run
-
-std::string FileTraceCollector::_fileName = "";
-
-// ============================================================================
-/*!
- * This class is for use without CORBA, inside or outside SALOME.
- * SALOME uses SALOMETraceCollector, to allow trace collection via CORBA.
- * Type of trace (and corresponding class) is choosen in LocalTraceBufferPool.
- *
- * Guarantees a unique object instance of the class (singleton thread safe)
- * a separate thread for loop to print traces is launched.
- */
-// ============================================================================
-
-BaseTraceCollector* FileTraceCollector::instance(const char *fileName)
-{
- if (_singleton == 0) // no need of lock when singleton already exists
- {
- int ret;
- ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton == 0) // another thread may have got
- { // the lock after the first test
- DEVTRACE("FileTraceCollector:: instance()");
- BaseTraceCollector* myInstance = new FileTraceCollector();
- _fileName = fileName;
- DEVTRACE(" _fileName: " << _fileName);
-
- sem_init(&_sem,0,0); // to wait until run thread is initialized
- pthread_t traceThread;
- int bid;
- int re2 = pthread_create(&traceThread, NULL,
- FileTraceCollector::run, (void *)bid);
- sem_wait(&_sem);
- _singleton = myInstance; // _singleton known only when init done
- DEVTRACE("FileTraceCollector:: instance()-end");
- }
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
- return _singleton;
-}
-
-// ============================================================================
-/*!
- * In a separate thread, loop to print traces.
- * Mutex garantees intialisation on instance method is done and only one run
- * allowed (double check ...)
- * Loop until there is no more buffer to print,
- * and no ask for end from destructor.
- * Get a buffer. If type = ABORT then exit application with message.
- */
-// ============================================================================
-
-void* FileTraceCollector::run(void *bid)
-{
- _threadId = new pthread_t;
- *_threadId = pthread_self();
- sem_post(&_sem); // unlock instance
-
- LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
- LocalTrace_TraceInfo myTrace;
-
- // --- opens a file with append mode
- // so, several processes can share the same file
-
- ofstream traceFile;
- const char *theFileName = _fileName.c_str();
- traceFile.open(theFileName, ios::out | ios::app);
- if (!traceFile)
- {
- cerr << "impossible to open trace file "<< theFileName << endl;
- exit (1);
- }
-
- // --- Loop until there is no more buffer to print,
- // and no ask for end from destructor.
-
- while ((!_threadToClose) || myTraceBuffer->toCollect() )
- {
- if (_threadToClose)
- {
- DEVTRACE("FileTraceCollector _threadToClose");
- //break;
- }
-
- int fullBuf = myTraceBuffer->retrieve(myTrace);
- if (myTrace.traceType == ABORT_MESS)
- {
-#ifndef WNT
- traceFile << "INTERRUPTION from thread " << myTrace.threadId
- << " : " << myTrace.trace;
-#else
- traceFile << "INTERRUPTION from thread "
- << (void*)(&myTrace.threadId)
- << " : " << myTrace.trace;
-#endif
- traceFile.close();
- cout << flush ;
-#ifndef WNT
- cerr << "INTERRUPTION from thread " << myTrace.threadId
- << " : " << myTrace.trace;
-#else
- cerr << "INTERRUPTION from thread " << (void*)(&myTrace.threadId)
- << " : " << myTrace.trace;
-#endif
- cerr << flush ;
- exit(1);
- }
- else
- {
-#ifndef WNT
- traceFile << "th. " << myTrace.threadId
- << " " << myTrace.trace;
-#else
- traceFile << "th. " << (void*)(&myTrace.threadId)
- << " " << myTrace.trace;
-#endif
- }
- }
- DEVTRACE("traceFile.close()");
- traceFile.close();
- DEVTRACE("traceFile.close()_end");
- pthread_exit(NULL);
-}
-
-// ============================================================================
-/*!
- * Destructor: wait until printing thread ends (FileTraceCollector::run)
- */
-// ============================================================================
-
-FileTraceCollector:: ~FileTraceCollector()
-{
- int ret;
- ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton)
- {
- DEVTRACE("FileTraceCollector:: ~FileTraceCollector()");
- LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
- _threadToClose = 1;
- myTraceBuffer->insert(NORMAL_MESS,"end of trace\n"); // to wake up thread
- if (_threadId)
- {
- int ret = pthread_join(*_threadId, NULL);
- if (ret) cerr << "error close FileTraceCollector : "<< ret << endl;
- else DEVTRACE("FileTraceCollector destruction OK");
- _threadId = 0;
- _threadToClose = 0;
- }
- _singleton = 0;
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
-}
-
-// ============================================================================
-/*!
- * Constructor: no need of LocalTraceBufferPool object initialization here,
- * thread safe singleton used in LocalTraceBufferPool::instance()
- */
-// ============================================================================
-
-FileTraceCollector::FileTraceCollector()
-{
- _threadId=0;
- _threadToClose = 0;
-}
-
-
+++ /dev/null
-// Copyright (C) 2004 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
-//
-// Author : Paul RASCLE (EDF)
-// Module : KERNEL
-// $Header$
-//
-// Cf. C++ Users Journal, June 2004, Tracing Application Execution, Tomer Abramson
-//
-
-#include <iostream>
-#include <limits.h>
-#include <cassert>
-
-#ifndef WNT
-#include <dlfcn.h>
-#else
-#endif
-
-#include "LocalTraceBufferPool.hxx"
-#include "BaseTraceCollector.hxx"
-#include "LocalTraceCollector.hxx"
-#include "FileTraceCollector.hxx"
-#include "BasicsGenericDestructor.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-// In case of truncated message, end of trace contains "...\n\0"
-
-#define TRUNCATED_MESSAGE "...\n"
-#define MAXMESS_LENGTH MAX_TRACE_LENGTH-5
-
-// Class static attributes initialisation
-
-LocalTraceBufferPool* LocalTraceBufferPool::_singleton = 0;
-#ifndef WNT
-pthread_mutex_t LocalTraceBufferPool::_singletonMutex;
-#else
-pthread_mutex_t LocalTraceBufferPool::_singletonMutex =
- PTHREAD_MUTEX_INITIALIZER;
-#endif
-BaseTraceCollector *LocalTraceBufferPool::_myThreadTrace = 0;
-
-// ============================================================================
-/*!
- * Guarantees a unique object instance of the class (singleton thread safe).
- * When the LocalTraceBufferPool instance is created, the trace collector is
- * also created (singleton). Type of trace collector to create depends on
- * environment variable "SALOME_trace":
- * - "local" implies standard err trace, LocalTraceCollector is launched.
- * - "file" implies trace in /tmp/tracetest.log
- * - "file:pathname" implies trace in file pathname
- * - anything else like "other" : try to load dynamically a library named
- * otherTraceCollector, and invoque C method instance() to start a singleton
- * instance of the trace collector. Example: with_loggerTraceCollector, for
- * CORBA Log.
- */
-// ============================================================================
-
-LocalTraceBufferPool* LocalTraceBufferPool::instance()
-{
- if (_singleton == 0) // no need of lock when singleton already exists
- {
- int ret;
- ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton == 0) // another thread may have got
- { // the lock after the first test
- LocalTraceBufferPool* myInstance = new LocalTraceBufferPool();
-
- DESTRUCTOR_OF<LocalTraceBufferPool> *ptrDestroy =
- new DESTRUCTOR_OF<LocalTraceBufferPool> (*myInstance);
-
- // --- start a trace Collector
-
- char* traceKind = getenv("SALOME_trace");
- assert(traceKind);
- //cerr<<"SALOME_trace="<<traceKind<<endl;
-
- if (strcmp(traceKind,"local")==0)
- {
- _myThreadTrace = LocalTraceCollector::instance();
- }
- else if (strncmp(traceKind,"file",strlen("file"))==0)
- {
- char *fileName;
- if (strlen(traceKind) > strlen("file"))
- fileName = &traceKind[strlen("file")+1];
- else
- fileName = "/tmp/tracetest.log";
-
- _myThreadTrace = FileTraceCollector::instance(fileName);
- }
- else // --- try a dynamic library
- {
- void* handle;
-#ifndef WNT
- string impl_name = string ("lib") + traceKind
- + string("TraceCollector.so");
- handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ;
-#else
- string impl_name = string ("lib") + traceKind + string(".dll");
- handle = dlopen( impl_name.c_str() , 0 ) ;
-#endif
- if ( handle )
- {
- typedef BaseTraceCollector * (*FACTORY_FUNCTION) (void);
- FACTORY_FUNCTION TraceCollectorFactory =
- (FACTORY_FUNCTION) dlsym(handle, "SingletonInstance");
- char *error ;
- if ( (error = dlerror() ) != NULL)
- {
- cerr << "Can't resolve symbol: SingletonInstance" <<endl;
- cerr << "dlerror: " << error << endl;
- assert(error == NULL); // to give file and line
- exit(1); // in case assert is deactivated
- }
- _myThreadTrace = (TraceCollectorFactory) ();
- }
- else
- {
- cerr << "library: " << impl_name << " not found !" << endl;
- assert(handle); // to give file and line
- exit(1); // in case assert is deactivated
- }
- }
- _singleton = myInstance;
- }
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
- return _singleton;
-}
-
-// ============================================================================
-/*!
- * Called by trace producers within their threads. The trace message is copied
- * in specific buffer from a circular pool of buffers.
- * Waits until there is a free buffer in the pool, gets the first available
- * buffer, fills it with the message.
- * Messages are printed in a separate thread (see retrieve method)
- */
-// ============================================================================
-
-int LocalTraceBufferPool::insert(int traceType, const char* msg)
-{
-
- // get immediately a message number to control sequence (mutex protected)
-
- unsigned long myMessageNumber = lockedIncrement(_position);
-
- // wait until there is a free buffer in the pool
-
- int ret = sem_wait(&_freeBufferSemaphore);
-
- // get the next free buffer available (mutex protected)
-
- unsigned long myInsertPos = lockedIncrement(_insertPos);
-
- // fill the buffer with message, thread id and type (normal or abort)
-
- strncpy(_myBuffer[myInsertPos%TRACE_BUFFER_SIZE].trace,
- msg,
- MAXMESS_LENGTH); // last chars always "...\n\0" if msg too long
- _myBuffer[myInsertPos%TRACE_BUFFER_SIZE].threadId =pthread_self();//thread id
- _myBuffer[myInsertPos%TRACE_BUFFER_SIZE].traceType = traceType;
- _myBuffer[myInsertPos%TRACE_BUFFER_SIZE].position = myMessageNumber;
-
-
- // increment the full buffer semaphore
- // (if previously 0, awake thread in charge of trace)
-
- ret = sem_post(&_fullBufferSemaphore);
-
- // returns the number of free buffers
-
- sem_getvalue(&_freeBufferSemaphore, &ret);
- return ret;
-}
-
-// ============================================================================
-/*!
- * Called by the thread in charge of printing trace messages.
- * Waits until there is a buffer with a message to print.
- * Gets the first buffer to print, copies it int the provided buffer
- */
-// ============================================================================
-
-int LocalTraceBufferPool::retrieve(LocalTrace_TraceInfo& aTrace)
-{
-
- // wait until there is a buffer in the pool, with a message to print
-
- int ret = sem_wait(&_fullBufferSemaphore);
-
- // get the next buffer to print
-
- unsigned long myRetrievePos = lockedIncrement(_retrievePos);
-
- // copy the buffer from the pool to the provided buffer
-
- memcpy((void*)&aTrace,
- (void*)&_myBuffer[myRetrievePos%TRACE_BUFFER_SIZE],
- sizeof(aTrace));
-
- // increment the free buffer semaphore
- // (if previously 0, awake one of the threads waiting to put a trace, if any)
- // there is no way to preserve the order of waiting threads if several
- // threads are waiting to put a trace: the waken up thread is not
- // necessarily the first thread to wait.
-
- ret = sem_post(&_freeBufferSemaphore);
-
- // returns the number of full buffers
-
- sem_getvalue(&_fullBufferSemaphore, &ret);
- return ret;
-}
-
-// ============================================================================
-/*!
- * Gives the number of buffers to print.
- * Usage : when the thread in charge of messages print id to be stopped,
- * check if there is still something to print, before stop.
- * There is no need of mutex here, provided there is only one thread to
- * retrieve and print the buffers.
- */
-// ============================================================================
-
-unsigned long LocalTraceBufferPool::toCollect()
-{
- return _insertPos - _retrievePos;
-}
-
-// ============================================================================
-/*!
- * Constructor : initialize pool of buffers, semaphores and mutex.
- */
-// ============================================================================
-
-LocalTraceBufferPool::LocalTraceBufferPool()
-{
- //cerr << "LocalTraceBufferPool::LocalTraceBufferPool()" << endl;
-
- _insertPos = ULONG_MAX; // first increment will give 0
- _retrievePos = ULONG_MAX;
- _position=0; // first message will have number = 1
-
- memset(_myBuffer, 0, sizeof(_myBuffer)); // to guarantee end of strings = 0
- for (int i=0; i<TRACE_BUFFER_SIZE; i++)
- strcpy(&(_myBuffer[i].trace[MAXMESS_LENGTH]),TRUNCATED_MESSAGE);
- int ret;
- ret=sem_init(&_freeBufferSemaphore, 0, TRACE_BUFFER_SIZE); // all buffer free
- if (ret!=0) IMMEDIATE_ABORT(ret);
- ret=sem_init(&_fullBufferSemaphore, 0, 0); // 0 buffer full
- if (ret!=0) IMMEDIATE_ABORT(ret);
- ret=pthread_mutex_init(&_incrementMutex,NULL); // default = fast mutex
- if (ret!=0) IMMEDIATE_ABORT(ret);
-
- //cerr << "LocalTraceBufferPool::LocalTraceBufferPool()-end" << endl;
-}
-
-// ============================================================================
-/*!
- * Destructor : release memory associated with semaphores and mutex
- */
-// ============================================================================
-
-LocalTraceBufferPool::~LocalTraceBufferPool()
-{
- int ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton)
- {
- DEVTRACE("LocalTraceBufferPool::~LocalTraceBufferPool()");
- delete (_myThreadTrace);
- _myThreadTrace = 0;
- int ret;
- ret=sem_destroy(&_freeBufferSemaphore);
- ret=sem_destroy(&_fullBufferSemaphore);
- ret=pthread_mutex_destroy(&_incrementMutex);
- DEVTRACE("LocalTraceBufferPool::~LocalTraceBufferPool()-end");
- _singleton = 0;
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
-}
-
-// ============================================================================
-/*!
- * pool counters are incremented under a mutex protection
- */
-// ============================================================================
-
-unsigned long LocalTraceBufferPool::lockedIncrement(unsigned long& pos)
-{
- int ret;
- ret = pthread_mutex_lock(&_incrementMutex); // lock access to counters
- pos++;
- ret = pthread_mutex_unlock(&_incrementMutex); // release lock
- return pos;
-}
-
+++ /dev/null
-// Copyright (C) 2004 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 : LocalTraceCollector.cxx
-// Author : Paul RASCLE (EDF)
-// Module : KERNEL
-// $Header$
-
-#include <iostream>
-#include <sstream>
-#include <fstream>
-#include <cstdlib>
-
-using namespace std;
-
-#include "LocalTraceCollector.hxx"
-
-// ============================================================================
-/*!
- * This class is for use without CORBA, inside or outside SALOME.
- * SALOME uses SALOMETraceCollector, to allow trace collection via CORBA.
- * Type of trace (and corresponding class) is choosen in LocalTraceBufferPool.
- *
- * Guarantees a unique object instance of the class (singleton thread safe)
- * a separate thread for loop to print traces is launched.
- */
-// ============================================================================
-
-BaseTraceCollector* LocalTraceCollector::instance()
-{
- if (_singleton == 0) // no need of lock when singleton already exists
- {
- int ret;
- ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton == 0) // another thread may have got
- { // the lock after the first test
- BaseTraceCollector* myInstance = new LocalTraceCollector();
-
- sem_init(&_sem,0,0); // to wait until run thread is initialized
- pthread_t traceThread;
- int bid;
- int re2 = pthread_create(&traceThread, NULL,
- LocalTraceCollector::run, (void *)bid);
- sem_wait(&_sem);
- _singleton = myInstance; // _singleton known only when init done
- }
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
- return _singleton;
-}
-
-// ============================================================================
-/*!
- * In a separate thread, loop to print traces.
- * Mutex garantees intialisation on instance method is done and only one run
- * allowed (double check ...)
- * Loop until there is no more buffer to print,
- * and no ask for end from destructor.
- * Get a buffer. If type = ABORT then exit application with message.
- */
-// ============================================================================
-
-void* LocalTraceCollector::run(void *bid)
-{
- _threadId = new pthread_t;
- *_threadId = pthread_self();
- sem_post(&_sem); // unlock instance
-
- LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
- LocalTrace_TraceInfo myTrace;
-
- // --- Loop until there is no more buffer to print,
- // and no ask for end from destructor.
-
- while ((!_threadToClose) || myTraceBuffer->toCollect() )
- {
- if (_threadToClose)
- {
- DEVTRACE("FileTraceCollector _threadToClose");
- //break;
- }
-
- int fullBuf = myTraceBuffer->retrieve(myTrace);
- if (myTrace.traceType == ABORT_MESS)
- {
- cout << flush ;
-#ifndef WNT
- cerr << "INTERRUPTION from thread " << myTrace.threadId
- << " : " << myTrace.trace;
-#else
- cerr << "INTERRUPTION from thread " << (void*)(&myTrace.threadId)
- << " : " << myTrace.trace;
-#endif
- cerr << flush ;
- exit(1);
- }
- else
- {
- cout << flush ;
-#ifndef WNT
- cerr << "th. " << myTrace.threadId << " " << myTrace.trace;
-#else
- cerr << "th. " << (void*)(&myTrace.threadId)
- << " " << myTrace.trace;
-#endif
- cerr << flush ;
- }
- }
- pthread_exit(NULL);
- return NULL;
-}
-
-// ============================================================================
-/*!
- * Destructor: wait until printing thread ends (LocalTraceCollector::run)
- */
-// ============================================================================
-
-LocalTraceCollector:: ~LocalTraceCollector()
-{
- int ret;
- ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton)
- {
- DEVTRACE("LocalTraceCollector:: ~LocalTraceCollector()");
- LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
- _threadToClose = 1;
- myTraceBuffer->insert(NORMAL_MESS,"end of trace\n"); // to wake up thread
- if (_threadId)
- {
- int ret = pthread_join(*_threadId, NULL);
- if (ret) cerr << "error close LocalTraceCollector : "<< ret << endl;
- else DEVTRACE("LocalTraceCollector destruction OK");
- _threadId = 0;
- _threadToClose = 0;
- }
- _singleton = 0;
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
-}
-
-// ============================================================================
-/*!
- * Constructor: no need of LocalTraceBufferPool object initialization here,
- * thread safe singleton used in LocalTraceBufferPool::instance()
- */
-// ============================================================================
-
-LocalTraceCollector::LocalTraceCollector()
-{
- _threadId=0;
- _threadToClose = 0;
-}
-
-
+++ /dev/null
-
-#include "SALOMELocalTraceTest.hxx"
-
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <cstdlib>
-#include "LocalTraceBufferPool.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-
-// ============================================================================
-/*!
- *
- */
-// ============================================================================
-
-void
-SALOMELocalTraceTest::setUp()
-{
-}
-
-// ============================================================================
-/*!
- *
- */
-// ============================================================================
-
-void
-SALOMELocalTraceTest::tearDown()
-{
-}
-
-#define TRACEFILE "/tmp/traceUnitTest.log"
-
-// ============================================================================
-/*!
- * Open and close a trace on a file, test singleton
- */
-// ============================================================================
-
-void
-SALOMELocalTraceTest::testSingletonBufferPool()
-{
- // --- 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);
- LocalTraceBufferPool* bp2 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1 == bp2);
- bp1->deleteInstance(bp1);
-}
-
-
-
-#define NUM_THREADS 2
-#define NUM_MESSAGES 5
-void *PrintHello(void *threadid);
-
-// ============================================================================
-/*!
- * open a trace on console, multithread writing on file, close
- */
-// ============================================================================
-
-void
-SALOMELocalTraceTest::testLoadBufferPoolLocal()
-{
- string s = "local";
- CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
-
- // --- numThread thread creation for trace generation.
- int numThread = 2;
- pthread_t threads[numThread];
- int rc, t;
- for(t=0;t<numThread;t++)
- {
- MESSAGE("Creating thread " << t);
- rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t) ;
- CPPUNIT_ASSERT( !rc);
- }
-
- // --- wait for end of each thread producing trace.
-
- for(t=0;t<numThread;t++)
- {
- int ret = pthread_join(threads[t], NULL);
- MESSAGE("--------------------- end of PrintHello thread " << t);
- }
- MESSAGE(" ---- end of PrintHello threads ---- ");
-
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
- bp1->deleteInstance(bp1);
-}
-
-// ============================================================================
-/*!
- * open a trace on a file, multithread writing on file, close
- */
-// ============================================================================
-
-void
-SALOMELocalTraceTest::testLoadBufferPoolFile()
-{
- char *theFileName = TRACEFILE;
-
- string s = "file:";
- s += theFileName;
- //s = "local";
- CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
-
- ofstream traceFile;
- traceFile.open(theFileName, ios::out | ios::trunc);
- CPPUNIT_ASSERT(traceFile); // file created empty, then closed
- traceFile.close();
-
- // --- NUM_THREADS thread creation for trace generation.
-
- pthread_t threads[NUM_THREADS];
- int rc, t;
- for(t=0;t<NUM_THREADS;t++)
- {
- MESSAGE("Creating thread " << t);
- rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t) ;
- CPPUNIT_ASSERT( !rc);
- }
-
- // --- wait for end of each thread producing trace.
-
- for(t=0;t<NUM_THREADS;t++)
- {
- int ret = pthread_join(threads[t], NULL);
- MESSAGE("--------------------- end of PrintHello thread " << t);
- }
- MESSAGE(" ---- end of PrintHello threads ---- ");
-
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
- bp1->deleteInstance(bp1);
-}
-
-// ============================================================================
-/*!
- * NUM_THREAD are created with function PrintHello,
- * which produces NUM_MESSAGES traces.
- */
-// ============================================================================
-
-void *PrintHello(void *threadid)
-{
- int id_thread = (int)threadid;
- for (int i=0; i<NUM_MESSAGES;i++)
- MESSAGE("Hello World! This is a trace test : " << id_thread
- << " - iter " << i);
- pthread_exit(NULL);
-}
+++ /dev/null
-
-#ifndef _SALOMELOCALTRACETEST_HXX_
-#define _SALOMELOCALTRACETEST_HXX_
-
-#include <cppunit/extensions/HelperMacros.h>
-
-class SALOMELocalTraceTest : public CppUnit::TestFixture
-{
- CPPUNIT_TEST_SUITE( SALOMELocalTraceTest );
- CPPUNIT_TEST( testSingletonBufferPool );
- CPPUNIT_TEST( testLoadBufferPoolLocal );
- CPPUNIT_TEST( testLoadBufferPoolFile );
- CPPUNIT_TEST_SUITE_END();
-
-public:
- void setUp();
- void tearDown();
-
- void testSingletonBufferPool();
- void testLoadBufferPoolLocal();
- void testLoadBufferPoolFile();
-};
-
-#endif
+++ /dev/null
-
-// --- include all Unit Test from basics until the present directory
-
-#include "SALOMELocalTraceTest.hxx"
-
-// --- Registers the fixture into the 'registry'
-
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
-
-// --- generic Main program from Basic/Test
-
-#include "BasicMainTest.hxx"
+++ /dev/null
-// Copyright (C) 2004 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 : LocalTraceCollector.cxx
-// Author : Paul RASCLE (EDF)
-// Module : KERNEL
-// $Header$
-
-#include <iostream>
-#include <sstream>
-#include <fstream>
-#include <cstdlib>
-#include <CORBA.h>
-
-using namespace std;
-
-#include "SALOMETraceCollector.hxx"
-#include "TraceCollector_WaitForServerReadiness.hxx"
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(Logger)
-
-// Class attributes initialisation, for class method SALOMETraceCollector::run
-
-CORBA::ORB_ptr SALOMETraceCollector::_orb = 0;
-
-// ============================================================================
-/*!
- * This class is for use with CORBA, inside SALOME.
- * Type of trace (and corresponding class) is choosen in LocalTraceBufferPool.
- *
- * Guarantees a unique object instance of the class (singleton thread safe)
- * a separate thread for loop to print traces is launched.
- */
-// ============================================================================
-
-BaseTraceCollector* SALOMETraceCollector::instance()
-{
- if (_singleton == 0) // no need of lock when singleton already exists
- {
- int ret;
- ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton == 0) // another thread may have got
- { // the lock after the first test
- BaseTraceCollector* myInstance = new SALOMETraceCollector();
- int argc=0;
- char *_argv=0;
- char ** argv = &_argv;
- _orb = CORBA::ORB_init (argc, argv);
-
- sem_init(&_sem,0,0); // to wait until run thread is initialized
- pthread_t traceThread;
- int bid;
- int re2 = pthread_create(&traceThread, NULL,
- SALOMETraceCollector::run, (void *)bid);
- sem_wait(&_sem);
- _singleton = myInstance; // _singleton known only when init done
- }
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
- return _singleton;
-}
-
-// ============================================================================
-/*!
- * In a separate thread, loop to print traces.
- * Mutex garantees intialisation on instance method is done and only one run
- * allowed (double check ...)
- * Loop until there is no more buffer to print,
- * and no ask for end from destructor.
- * Get a buffer. If type = ABORT then exit application with message.
- */
-// ============================================================================
-
-void* SALOMETraceCollector::run(void *bid)
-{
- _threadId = new pthread_t;
- *_threadId = pthread_self();
- sem_post(&_sem); // unlock instance
-
- LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
- LocalTrace_TraceInfo myTrace;
-
- SALOME_Logger::Logger_var m_pInterfaceLogger;
- CORBA::Object_var obj;
-
- obj = TraceCollector_WaitForServerReadiness(_orb,"Logger");
- if (!CORBA::is_nil(obj))
- m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
- if (CORBA::is_nil(m_pInterfaceLogger))
- {
- cerr << "Logger server not found ! Abort" << endl;
- cerr << flush ;
- exit(1);
- }
- else
- {
- CORBA::String_var LogMsg =
- CORBA::string_dup("\n---Init logger trace---\n");
- m_pInterfaceLogger->putMessage(LogMsg);
- DEVTRACE("Logger server found");
- }
-
- // --- Loop until there is no more buffer to print,
- // and no ask for end from destructor.
-
- while ((!_threadToClose) || myTraceBuffer->toCollect() )
- {
- if (_threadToClose)
- {
- DEVTRACE("SALOMETraceCollector _threadToClose");
- //break;
- }
-
- int fullBuf = myTraceBuffer->retrieve(myTrace);
- if (!CORBA::is_nil(_orb))
- {
- if (myTrace.traceType == ABORT_MESS)
- {
- stringstream abortMessage("");
-#ifndef WNT
- abortMessage << "INTERRUPTION from thread "
- << myTrace.threadId << " : " << myTrace.trace;
-#else
- abortMessage << "INTERRUPTION from thread "
- << (void*)&myTrace.threadId
- << " : " << myTrace.trace;
-#endif
- CORBA::String_var LogMsg =
- CORBA::string_dup(abortMessage.str().c_str());
- m_pInterfaceLogger->putMessage(LogMsg);
- exit(1);
- }
- else
- {
- stringstream aMessage("");
-#ifndef WNT
- aMessage << "th. " << myTrace.threadId
-#else
- aMessage << "th. " << (void*)&myTrace.threadId
-#endif
- << " " << myTrace.trace;
- CORBA::String_var LogMsg =
- CORBA::string_dup(aMessage.str().c_str());
- m_pInterfaceLogger->putMessage(LogMsg);
- }
- }
- }
- pthread_exit(NULL);
- return NULL;
-}
-
-// ============================================================================
-/*!
- * Destructor: wait until printing thread ends (SALOMETraceCollector::run)
- */
-// ============================================================================
-
-SALOMETraceCollector:: ~SALOMETraceCollector()
-{
- int ret;
- ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
- if (_singleton)
- {
- DEVTRACE("SALOMETraceCollector:: ~SALOMETraceCollector()");
- LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
- _threadToClose = 1;
- myTraceBuffer->insert(NORMAL_MESS,"end of trace\n"); // to wake up thread
- if (_threadId)
- {
- int ret = pthread_join(*_threadId, NULL);
- if (ret) cerr << "error close SALOMETraceCollector : "<< ret << endl;
- else DEVTRACE("SALOMETraceCollector destruction OK");
- _threadId = 0;
- _threadToClose = 0;
- }
- _singleton = 0;
- ret = pthread_mutex_unlock(&_singletonMutex); // release lock
- }
-}
-
-// ============================================================================
-/*!
- * Constructor: no need of LocalTraceBufferPool object initialization here,
- * thread safe singleton used in LocalTraceBufferPool::instance()
- */
-// ============================================================================
-
-SALOMETraceCollector::SALOMETraceCollector()
-{
- _threadId=0;
- _threadToClose = 0;
-}
-
-// ============================================================================
-/*!
- *
- */
-// ============================================================================
-
-extern "C"
-{
- BaseTraceCollector *SingletonInstance(void)
- {
- BaseTraceCollector *instance = SALOMETraceCollector::instance();
- return instance;
- }
-}
+++ /dev/null
-
-#include "SALOMETraceCollectorTest.hxx"
-
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <cstdlib>
-#include "LocalTraceBufferPool.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-// ============================================================================
-/*!
- *
- */
-// ============================================================================
-
-void
-SALOMETraceCollectorTest::setUp()
-{
-}
-
-// ============================================================================
-/*!
- *
- */
-// ============================================================================
-
-void
-SALOMETraceCollectorTest::tearDown()
-{
-}
-
-#define NUM_THREADS 20
-#define NUM_MESSAGES 20
-void *PrintHello(void *threadid);
-
-// ============================================================================
-/*!
- * open a trace on a CORBA, multithread writing on file, close
- */
-// ============================================================================
-
-void
-SALOMETraceCollectorTest::testLoadBufferPoolCORBA()
-{
- string s = "with_logger";
- CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
-
- // --- NUM_THREADS thread creation for trace generation.
-
- pthread_t threads[NUM_THREADS];
- int rc, t;
- for(t=0;t<NUM_THREADS;t++)
- {
- MESSAGE("Creating thread " << t);
- rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t) ;
- CPPUNIT_ASSERT( !rc);
- }
-
- // --- wait for end of each thread producing trace.
-
- for(t=0;t<NUM_THREADS;t++)
- {
- int ret = pthread_join(threads[t], NULL);
- MESSAGE("--------------------- end of PrintHello thread " << t);
- }
- MESSAGE(" ---- end of PrintHello threads ---- ");
-
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
- bp1->deleteInstance(bp1);
-}
-
-// ============================================================================
-/*!
- * NUM_THREAD are created with function PrintHello,
- * which produces NUM_MESSAGES traces.
- */
-// ============================================================================
-
-void *PrintHello(void *threadid)
-{
- int id_thread = (int)threadid;
- for (int i=0; i<NUM_MESSAGES;i++)
- MESSAGE("Hello World! This is a trace test : " << id_thread
- << " - iter " << i);
- pthread_exit(NULL);
-}
+++ /dev/null
-
-#ifndef _SALOMETRACECOLLECTORTTEST_HXX_
-#define _SALOMETRACECOLLECTORTTEST_HXX_
-
-#include <cppunit/extensions/HelperMacros.h>
-
-class SALOMETraceCollectorTest : public CppUnit::TestFixture
-{
- CPPUNIT_TEST_SUITE( SALOMETraceCollectorTest );
- CPPUNIT_TEST( testLoadBufferPoolCORBA );
- CPPUNIT_TEST_SUITE_END();
-
-public:
- void setUp();
- void tearDown();
-
- void testLoadBufferPoolCORBA();
-};
-
-#endif
+++ /dev/null
-
-// --- include all Unit Test from basics until the present directory
-
-#include "SALOMELocalTraceTest.hxx"
-#include "SALOMETraceCollectorTest.hxx"
-
-// --- Registers the fixture into the 'registry'
-
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
-
-// --- generic Main program from Basic/Test
-
-#include "BasicMainTest.hxx"
+++ /dev/null
-#==============================================================================
-# File : Makefile.in
-# Author : Marc Tajchman
-#==============================================================================
-
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
-
-
-@COMMENCE@
-
-EXPORT_HEADERS = SALOMEDS_Tool.hxx
-
-# Libraries targets
-
-LIB = libTOOLSDS.la
-LIB_SRC = \
- SALOMEDS_Tool.cxx \
-
-# Executables targets
-BIN =
-BIN_SRC =
-LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl SALOME_GenericObj.idl
-BIN_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl
-BIN_CLIENT_IDL =
-
-CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS)
-CXXFLAGS+=$(OCC_CXXFLAGS) $(BOOST_CPPFLAGS)
-LDFLAGS+= -lOpUtil $(CAS_LDPATH) -lTKernel
-
-@CONCLUDE@
-
-
+++ /dev/null
-// File : SALOMEDS_Tool.cxx
-// Created : Mon Oct 21 16:24:34 2002
-// Author : Sergey RUIN
-
-// Project : SALOME
-// Module : SALOMEDS
-// Copyright : Open CASCADE
-
-#include "SALOMEDS_Tool.hxx"
-
-#include "utilities.h"
-
-#include <TCollection_AsciiString.hxx>
-
-#include <OSD_Path.hxx>
-#include <OSD_File.hxx>
-#include <OSD_Directory.hxx>
-#include <OSD_Process.hxx>
-#include <OSD_Directory.hxx>
-#include <OSD_Protection.hxx>
-#include <OSD_SingleProtection.hxx>
-#include <OSD_FileIterator.hxx>
-
-#ifndef WNT
-#include <stdio.h>
-#include <iostream.h>
-#include <fstream.h>
-#include <sys/time.h>
-#else
-#endif
-#include <stdlib.h>
-
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-using namespace std;
-
-//============================================================================
-// function : GetTempDir
-// purpose : Return a temp directory to store created files like "/tmp/sub_dir/"
-//============================================================================
-std::string SALOMEDS_Tool::GetTmpDir()
-{
- //Find a temporary directory to store a file
-
- TCollection_AsciiString aTmpDir;
-
- char *Tmp_dir = getenv("SALOME_TMP_DIR");
- if(Tmp_dir != NULL) {
- aTmpDir = TCollection_AsciiString(Tmp_dir);
-#ifdef WIN32
- if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
-#else
- if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
-#endif
- }
- else {
-#ifdef WIN32
- aTmpDir = TCollection_AsciiString("C:\\");
-#else
- aTmpDir = TCollection_AsciiString("/tmp/");
-#endif
- }
-
- srand((unsigned int)time(NULL));
- int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
- TCollection_AsciiString aSubDir(aRND);
- if(aSubDir.Length() <= 1) aSubDir = TCollection_AsciiString("123409876");
-
- aTmpDir += aSubDir; //Get RND sub directory
-
-#ifdef WIN32
- if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
-#else
- if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
-#endif
-
- OSD_Path aPath(aTmpDir);
- OSD_Directory aDir(aPath);
-
- for(aRND = 0; aDir.Exists(); aRND++) {
- aTmpDir.Insert((aTmpDir.Length() - 1), TCollection_AsciiString(aRND)); //Build a unique directory name
- aPath = OSD_Path(aTmpDir);
- aDir = OSD_Directory(aPath);
- }
-
- MESSAGE("#### TMP" << aTmpDir.ToCString());
-
- OSD_Protection aProtection(OSD_RW, OSD_RWX, OSD_RX, OSD_RX);
- aDir.Build(aProtection);
-
- return aTmpDir.ToCString();
-}
-
-//============================================================================
-// function : RemoveTemporaryFiles
-// purpose : Removes files listed in theFileList
-//============================================================================
-void SALOMEDS_Tool::RemoveTemporaryFiles(const std::string& theDirectory,
- const SALOMEDS::ListOfFileNames& theFiles,
- const bool IsDirDeleted)
-{
- TCollection_AsciiString aDirName(const_cast<char*>(theDirectory.c_str()));
-
- int i, aLength = theFiles.length();
- for(i=0; i<aLength; i++) {
- TCollection_AsciiString aFile(aDirName);
-// aFile += (char*)theFiles[i];
- aFile += (char*)theFiles[i].in();
- OSD_Path anOSDPath(aFile);
- OSD_File anOSDFile(anOSDPath);
- if(!anOSDFile.Exists()) continue;
-
- OSD_Protection aProtection = anOSDFile.Protection();
- aProtection.SetUser(OSD_RW);
- anOSDFile.SetProtection(aProtection);
-
- anOSDFile.Remove();
- }
-
- if(IsDirDeleted) {
- OSD_Path aPath(aDirName);
- OSD_Directory aDir(aPath);
- OSD_FileIterator anIterator(aPath, '*');
-
- if(aDir.Exists() && !anIterator.More()) aDir.Remove();
- }
-
-}
-
-//============================================================================
-// function : PutFilesToStream
-// purpose : converts the files from a list 'theFiles' to the stream
-//============================================================================
-SALOMEDS::TMPFile*
-SALOMEDS_Tool::PutFilesToStream(const std::string& theFromDirectory,
- const SALOMEDS::ListOfFileNames& theFiles,
- const int theNamesOnly)
-{
- int i, aLength = theFiles.length();
- if(aLength == 0)
-// return NULL;
- return (new SALOMEDS::TMPFile);
-
- //Get a temporary directory for saved a file
- TCollection_AsciiString aTmpDir(const_cast<char*>(theFromDirectory.c_str()));
-
- long aBufferSize = 0;
- long aCurrentPos;
-
- int aNbFiles = 0;
- int* aFileNameSize= new int[aLength];
- long* aFileSize= new long[aLength];
-
- //Determine the required size of the buffer
-
- for(i=0; i<aLength; i++) {
-
- //Check if the file exists
-
- if (!theNamesOnly) { // mpv 15.01.2003: if only file names must be stroed, then size of files is zero
- TCollection_AsciiString aFullPath = aTmpDir + CORBA::string_dup(theFiles[i]);
- OSD_Path anOSDPath(aFullPath);
- OSD_File anOSDFile(anOSDPath);
- if(!anOSDFile.Exists()) continue;
-#ifdef WNT
- ifstream aFile(aFullPath.ToCString(), ios::binary);
-#else
- ifstream aFile(aFullPath.ToCString());
-#endif
- aFile.seekg(0, ios::end);
- aFileSize[i] = aFile.tellg();
- aBufferSize += aFileSize[i]; //Add a space to store the file
- }
- aFileNameSize[i] = strlen(theFiles[i])+1;
- aBufferSize += aFileNameSize[i]; //Add a space to store the file name
- aBufferSize += (theNamesOnly)?4:12; //Add 4 bytes: a length of the file name,
- // 8 bytes: length of the file itself
- aNbFiles++;
- }
-
- aBufferSize += 4; //4 bytes for a number of the files that will be written to the stream;
- unsigned char* aBuffer = new unsigned char[aBufferSize];
- if(aBuffer == NULL)
-// return NULL;
- return (new SALOMEDS::TMPFile);
-
- //Initialize 4 bytes of the buffer by 0
- memset(aBuffer, 0, 4);
- //Copy the number of files that will be written to the stream
- memcpy(aBuffer, &aNbFiles, ((sizeof(int) > 4) ? 4 : sizeof(int)));
-
-
- aCurrentPos = 4;
-
- for(i=0; i<aLength; i++) {
- ifstream *aFile;
- if (!theNamesOnly) { // mpv 15.01.2003: we don't open any file if theNamesOnly = true
- TCollection_AsciiString aFullPath = aTmpDir + CORBA::string_dup(theFiles[i]);
- OSD_Path anOSDPath(aFullPath);
- OSD_File anOSDFile(anOSDPath);
- if(!anOSDFile.Exists()) continue;
-#ifdef WNT
- aFile = new ifstream(aFullPath.ToCString(), ios::binary);
-#else
- aFile = new ifstream(aFullPath.ToCString());
-#endif
- }
- //Initialize 4 bytes of the buffer by 0
- memset((aBuffer + aCurrentPos), 0, 4);
- //Copy the length of the file name to the buffer
- memcpy((aBuffer + aCurrentPos), (aFileNameSize + i), ((sizeof(int) > 4) ? 4 : sizeof(int)));
- aCurrentPos += 4;
-
- //Copy the file name to the buffer
- memcpy((aBuffer + aCurrentPos), theFiles[i], aFileNameSize[i]);
- aCurrentPos += aFileNameSize[i];
-
- if (!theNamesOnly) { // mpv 15.01.2003: we don't copy file content to the buffer if !theNamesOnly
- //Initialize 8 bytes of the buffer by 0
- memset((aBuffer + aCurrentPos), 0, 8);
- //Copy the length of the file to the buffer
- memcpy((aBuffer + aCurrentPos), (aFileSize + i), ((sizeof(long) > 8) ? 8 : sizeof(long)));
- aCurrentPos += 8;
-
- aFile->seekg(0, ios::beg);
- aFile->read((char *)(aBuffer + aCurrentPos), aFileSize[i]);
- aFile->close();
- delete(aFile);
- aCurrentPos += aFileSize[i];
- }
- }
-
- delete[] aFileNameSize;
- delete[] aFileSize;
-
-
- CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer;
-
- return (new SALOMEDS::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1));
-}
-
-//============================================================================
-// function : PutStreamToFile
-// purpose : converts the stream "theStream" to the files
-//============================================================================
-SALOMEDS::ListOfFileNames_var
-SALOMEDS_Tool::PutStreamToFiles(const SALOMEDS::TMPFile& theStream,
- const std::string& theToDirectory,
- const int theNamesOnly)
-{
- if(theStream.length() == 0)
- return NULL;
-
- //Get a temporary directory for saving a file
- TCollection_AsciiString aTmpDir(const_cast<char*>(theToDirectory.c_str()));
-
- unsigned char *aBuffer = (unsigned char*)theStream.NP_data();
-
- if(aBuffer == NULL) return NULL;
-
- long aFileSize, aCurrentPos = 4;
- int i, aFileNameSize, aNbFiles = 0;
-
- //Copy the number of files in the stream
- memcpy(&aNbFiles, aBuffer, sizeof(int));
-
- SALOMEDS::ListOfFileNames_var aFiles = new SALOMEDS::ListOfFileNames;
- aFiles->length(aNbFiles);
-
- for(i=0; i<aNbFiles; i++) {
-
- //Put a length of the file name to aFileNameSize
- memcpy(&aFileNameSize, (aBuffer + aCurrentPos), ((sizeof(int) > 4) ? 4 : sizeof(int)));
- aCurrentPos += 4;
-
- char *aFileName = new char[aFileNameSize];
- //Put a file name to aFileName
- memcpy(aFileName, (aBuffer + aCurrentPos), aFileNameSize);
- aCurrentPos += aFileNameSize;
-
- //Put a length of the file to aFileSize
- if (!theNamesOnly) {
- memcpy(&aFileSize, (aBuffer + aCurrentPos), ((sizeof(long) > 8) ? 8 : sizeof(long)));
- aCurrentPos += 8;
-
- TCollection_AsciiString aFullPath = aTmpDir + aFileName;
- ofstream aFile(aFullPath.ToCString());
- aFile.write((char *)(aBuffer+aCurrentPos), aFileSize);
- aFile.close();
- aCurrentPos += aFileSize;
- }
- aFiles[i] = CORBA::string_dup(aFileName);
- delete[] aFileName;
- }
-
- return aFiles;
-}
-
-//============================================================================
-// function : GetNameFromPath
-// purpose : Returns the name by the path
-//============================================================================
-std::string SALOMEDS_Tool::GetNameFromPath(const std::string& thePath) {
- if(thePath == "")
- return "";
- OSD_Path aPath = OSD_Path(TCollection_AsciiString(const_cast<char*>(thePath.c_str())));
- TCollection_AsciiString aNameString(aPath.Name());
- return aNameString.ToCString();
-}
-
-//============================================================================
-// function : GetDirFromPath
-// purpose : Returns the dir by the path
-//============================================================================
-std::string SALOMEDS_Tool::GetDirFromPath(const std::string& thePath) {
- if(thePath == "")
- return "";
- OSD_Path aPath = OSD_Path(TCollection_AsciiString(const_cast<char*>(thePath.c_str())));
- TCollection_AsciiString aDirString(aPath.Trek());
- aDirString.ChangeAll('|','/');
- return aDirString.ToCString();
-}
-
-//=======================================================================
-// name : GetFlag
-// Purpose : Retrieve specified flaf from "AttributeFlags" attribute
-//=======================================================================
-bool SALOMEDS_Tool::GetFlag( const int theFlag,
- SALOMEDS::Study_var theStudy,
- SALOMEDS::SObject_var theObj )
-{
- SALOMEDS::GenericAttribute_var anAttr;
- if ( !theObj->_is_nil() && theObj->FindAttribute( anAttr, "AttributeFlags" ) )
- {
- SALOMEDS::AttributeFlags_var aFlags = SALOMEDS::AttributeFlags::_narrow( anAttr );
- return aFlags->Get( theFlag );
- }
-
- return false;
-}
-
-//=======================================================================
-// name : SetFlag
-// Purpose : Set/Unset specified flaf from "AttributeFlags" attribute
-//=======================================================================
-bool SALOMEDS_Tool::SetFlag( const int theFlag,
- SALOMEDS::Study_var theStudy,
- const std::string& theEntry,
- const bool theValue )
-{
- SALOMEDS::SObject_var anObj = theStudy->FindObjectID(theEntry.c_str());
-
- if ( !anObj->_is_nil() )
- {
- SALOMEDS::GenericAttribute_var aGAttr;
- if ( anObj->FindAttribute( aGAttr, "AttributeFlags" ) )
- {
- SALOMEDS::AttributeFlags_var anAttr = SALOMEDS::AttributeFlags::_narrow( aGAttr );
- anAttr->Set( theFlag, theValue );
- }
- else if ( theValue )
- {
- SALOMEDS::StudyBuilder_var aBuilder = theStudy->NewBuilder();
- SALOMEDS::AttributeFlags_var anAttr = SALOMEDS::AttributeFlags::_narrow(
- aBuilder->FindOrCreateAttribute( anObj, "AttributeFlags" ) );
- anAttr->Set( theFlag, theValue );
- }
- return true;
- }
-
- return false;
-}
-
-//=======================================================================
-// name : getAllChildren
-// Purpose : Get all children of object.
-// If theObj is null all objects of study are returned
-//=======================================================================
-void SALOMEDS_Tool::GetAllChildren( SALOMEDS::Study_var theStudy,
- SALOMEDS::SObject_var theObj,
- std::list<SALOMEDS::SObject_var>& theList )
-{
- if ( theObj->_is_nil() )
- {
- SALOMEDS::SComponentIterator_var anIter = theStudy->NewComponentIterator();
- for ( ; anIter->More(); anIter->Next() )
- {
- SALOMEDS::SObject_var anObj = SALOMEDS::SObject::_narrow( anIter->Value() );
- if ( !anObj->_is_nil() )
- {
- theList.push_back( anObj );
- GetAllChildren( theStudy, anObj, theList );
- }
- }
- }
- else
- {
- SALOMEDS::ChildIterator_var anIter = theStudy->NewChildIterator( theObj );
- for ( ; anIter->More(); anIter->Next() )
- {
- SALOMEDS::SObject_var anObj = anIter->Value();
- SALOMEDS::SObject_var aRef;
- if ( !anObj->ReferencedObject( aRef ) )
- {
- theList.push_back( anObj );
- GetAllChildren( theStudy, anObj, theList );
- }
- }
- }
-}
-
-
-
+++ /dev/null
-// File : SALOMEDS_Tool.hxx
-// Created : Mon Oct 21 16:24:50 2002
-// Author : Sergey RUIN
-
-// Project : SALOME
-// Module : SALOMEDS
-// Copyright : Open CASCADE
-
-
-#ifndef __SALOMEDS_Tool_H__
-#define __SALOMEDS_Tool_H__
-
-#include <string>
-#include <list>
-
-
-// IDL headers
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SALOMEDS)
-
-#ifdef WNT
-#include <SALOME_WNT.hxx>
-#else
-#define SALOME_WNT_EXPORT
-#endif
-
-class SALOME_WNT_EXPORT SALOMEDS_Tool
-{
-
-public:
-
- // Returns the unique temporary directory, that is defined in SALOME_TMP_DIR if this variable is set
- // otherwise return /tmp/something/ for Unix or c:\something\ for WNT
- static std::string GetTmpDir();
-
-
- // Removes files which are in <theDirectory>, the files for deletion are listed in <theFiles>
- // if <IsDirDeleted> is true <theDirectory> is also deleted if it is empty
- static void RemoveTemporaryFiles(const std::string& theDirectory,
- const SALOMEDS::ListOfFileNames& theFiles,
- const bool IsDirDeleted);
-
- // Converts files listed in <theFiles> which are in <theFromDirectory> into a byte sequence TMPFile
- static SALOMEDS::TMPFile* PutFilesToStream(const std::string& theFromDirectory,
- const SALOMEDS::ListOfFileNames& theFiles,
- const int theNamesOnly = 0);
-
- // Converts a byte sequence <theStream> to files and places them in <theToDirectory>
- static SALOMEDS::ListOfFileNames_var PutStreamToFiles(const SALOMEDS::TMPFile& theStream,
- const std::string& theToDirectory,
- const int theNamesOnly = 0);
-
- // Returns the name by the path
- // for an example: if thePath = "/tmp/aaa/doc1.hdf" the function returns "doc1"
- static std::string GetNameFromPath(const std::string& thePath);
-
- // Returns the directory by the path
- // for an example: if thePath = "/tmp/aaa/doc1.hdf" the function returns "/tmp/aaa"
- static std::string GetDirFromPath(const std::string& thePath);
-
- // Retrieves specified flaf from "AttributeFlags" attribute
- static bool GetFlag( const int theFlag,
- SALOMEDS::Study_var theStudy,
- SALOMEDS::SObject_var theObj );
-
- // Sets/Unsets specified flaf from "AttributeFlags" attribute
- static bool SetFlag( const int theFlag,
- SALOMEDS::Study_var theStudy,
- const std::string& theEntry,
- const bool theValue );
-
- // Get all children of object. If theObj is null all objects of study are returned
- static void GetAllChildren( SALOMEDS::Study_var theStudy,
- SALOMEDS::SObject_var theObj,
- std::list<SALOMEDS::SObject_var>& theList );
-
-};
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-#==============================================================================
-# File : Makefile.in
-# Created : mer jui 04 12:58:13 CEST 2003
-# Author : Bernard SECHER, CEA
-# Project : SALOME
-# Copyright : CEA 2003
-# $Header$
-#==============================================================================
-
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS =
-
-EXPORT_HEADERS = TestMPIComponentEngine.hxx
-
-# Libraries targets
-
-LIB = libSalomeTestMPIComponentEngine.la
-LIB_SRC = TestMPIComponentEngine.cxx
-LIB_CLIENT_IDL = Logger.idl SALOME_MPIObject.idl SALOME_TestMPIComponent.idl SALOME_Component.idl
-
-# Executables targets
-BIN = TestMPIContainer
-BIN_SRC =
-BIN_CLIENT_IDL = Logger.idl SALOME_MPIObject.idl SALOME_MPIContainer.idl SALOME_TestMPIComponent.idl
-BIN_SERVER_IDL =
-
-LDFLAGSFORBIN+= -lSalomeNotification -lSalomeNS -lSalomeLifeCycleCORBA -lSalomeMPIContainer -lSalomeContainer -lRegistry -lOpUtil -lSALOMELocalTrace -lSalomeResourcesManager ${MPI_LIBS}
-
-CXXFLAGS+=${MPI_INCLUDES}
-CXX_DEPEND_FLAG+=${MPI_INCLUDES}
-
-@CONCLUDE@
+++ /dev/null
-//=============================================================================
-// File : TestMPIComponentEngine.cxx
-// Created : mer jui 4 12:28:26 CEST 2003
-// Author : Bernard SECHER, 2003
-// Project : SALOME
-// Copyright : CEA 2003
-// $Header$
-//=============================================================================
-
-#include <mpi.h>
-#include "utilities.h"
-#include "TestMPIComponentEngine.hxx"
-using namespace std;
-
-TestMPIComponentEngine::TestMPIComponentEngine(int nbproc, int numproc,
- CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
- const char *interfaceName,
- bool regist) :
- Engines_Component_i(orb, poa, contId, instanceName, interfaceName,true,regist), MPIObject_i(nbproc,numproc)
-{
- MESSAGE("activate object")
- _thisObj = this ;
- _id = _poa->reference_to_id(_thisObj->_this());
-}
-
-TestMPIComponentEngine::TestMPIComponentEngine(): Engines_Component_i(), MPIObject_i()
-{
-}
-
-TestMPIComponentEngine::~TestMPIComponentEngine()
-{
-}
-
-void TestMPIComponentEngine::Coucou(CORBA::Long L)
-{
- if(_numproc==0)
- for(int ip=1;ip<_nbproc;ip++)
- Engines::TestMPIComponent::_narrow((*_tior)[ip])->SPCoucou(L);
- SPCoucou(L);
-}
-
-void TestMPIComponentEngine::SPCoucou(CORBA::Long L)
-{
- BEGIN_OF("[" << _numproc << "] TestMPIComponentEngine::Coucou()");
- MESSAGE("[" << _numproc << "] TestMPIComponentEngine : L = " << L);
- END_OF("[" << _numproc << "] TestMPIComponentEngine::Coucou()");
- MPI_Barrier(MPI_COMM_WORLD);
-}
-
-extern "C"
-{
- PortableServer::ObjectId * TestMPIComponentEngine_factory(
- int nbproc, int numproc,
- CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
- const char *interfaceName)
- {
- bool regist;
- TestMPIComponentEngine * myTestMPIComponent;
- MESSAGE("[" << numproc << "] PortableServer::ObjectId * TestMPIComponentEngine_factory()");
- SCRUTE(interfaceName);
- if(numproc==0)
- regist = true;
- else
- regist = false;
-
- myTestMPIComponent
- = new TestMPIComponentEngine(nbproc,numproc,orb, poa, contId, instanceName, interfaceName,regist);
- return myTestMPIComponent->getId() ;
- }
-}
-
+++ /dev/null
-//=============================================================================
-// File : TestMPIComponentEngine.hxx
-// Created : mer jui 4 12:28:30 CEST 2003
-// Author : Bernard SECHER, CEA
-// Project : SALOME
-// Copyright : CEA 2003
-// $Header$
-//=============================================================================
-
-#ifndef _SALOME_TESTCOMPONENT_I_HXX_
-#define _SALOME_TESTCOMPONENT_I_HXX_
-
-#include <iostream.h>
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_TestMPIComponent)
-#include "SALOME_Component_i.hxx"
-#include "MPIObject_i.hxx"
-
-class TestMPIComponentEngine:
- public POA_Engines::TestMPIComponent,
- public Engines_Component_i, public MPIObject_i
-{
-public:
- TestMPIComponentEngine();
- TestMPIComponentEngine(int nbproc, int numproc,
- CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
- const char *interfaceName,
- bool regist);
-
- virtual ~TestMPIComponentEngine();
-
- void Coucou(CORBA::Long L);
- void SPCoucou(CORBA::Long L);
-
-};
-
-#endif
+++ /dev/null
-// using namespace std;
-//=============================================================================
-// File : TestMPIContainer.cxx
-// Created : mer jui 4 13:11:27 CEST 2003
-// Author : Bernard SECHER, 2003
-// Project : SALOME
-// Copyright : CEA 2003
-// $Header$
-//=============================================================================
-
-#include "utilities.h"
-#include <iostream>
-#include <unistd.h>
-#include <string>
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOME_MPIContainer)
-#include CORBA_CLIENT_HEADER(SALOME_TestMPIComponent)
-
-# include "Utils_ORB_INIT.hxx"
-# include "Utils_SINGLETON.hxx"
-#include "SALOME_NamingService.hxx"
-#include "OpUtil.hxx"
-#include "SALOMETraceCollector.hxx"
-using namespace std;
-
-int main (int argc, char * argv[])
-{
-
- // Initializing omniORB
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- CORBA::ORB_var &orb = init( argc , argv ) ;
- // SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
-
- BEGIN_OF(argv[0])
- try{
-
- int status;
-
- if( argc != 3 || strcmp(argv[1],"-np") ){
- cout << "Usage: TestMPIContainer -np nbproc" << endl;
- exit(0);
- }
-
- // Obtain a reference to the root POA
- CORBA::Object_var obj = orb->resolve_initial_references("RootPOA") ;
- PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) ;
-
- // Use Name Service to find container
- SALOME_NamingService NS(orb) ;
- string containerName = "/Containers/" ;
- string hostName = GetHostname();
- containerName += hostName + "/MPIFactoryServer_" + argv[2];
-
- string dirn(getenv("KERNEL_ROOT_DIR"));
- dirn += "/lib/salome/libSalomeTestMPIComponentEngine.so";
-
- // Try to resolve MPI Container
- obj = NS.Resolve(containerName.c_str()) ;
- Engines::MPIContainer_var iGenFact = Engines::MPIContainer::_narrow(obj);
-
- if(CORBA::is_nil(iGenFact)){
-
- // Launch MPI Container
- string cmd("mpirun -np ");
- cmd += argv[2];
- cmd += " ";
- cmd += getenv("KERNEL_ROOT_DIR");
- cmd += "/bin/salome/SALOME_MPIContainer MPIFactoryServer_";
- cmd += argv[2];
- cmd += " &";
- MESSAGE(cmd);
- status = system(cmd.c_str());
- if (status == -1) {
- INFOS("TestMPIContainer launch MPI Container failed (system command status -1)") ;
- }
- else if (status == 217) {
- INFOS("TestMPIContainer launch MPI Container failed (system command status 217)") ;
- }
-
- // Try to resolve MPI Container
- int it = 0;
- do{
- sleep(1);
- obj = NS.Resolve(containerName.c_str()) ;
- iGenFact = Engines::MPIContainer::_narrow(obj);
- MESSAGE("Waiting for MPI Container " << containerName << " : it = " << it );
- }while( CORBA::is_nil(iGenFact) && (it++<15) );
-
- }
-
- if(CORBA::is_nil(iGenFact)){
- MESSAGE("launching container failed");
- exit(1);
- }
-
-
- Engines::TestMPIComponent_var m1;
-
-// for (int iter = 0; iter < 1 ; iter++){
-// MESSAGE("----------------------------------------------------" << iter);
- obj = iGenFact->load_impl("TestMPIComponent",dirn.c_str());
-
- INFOS("Get Handle on MPI Component");
- m1 = Engines::TestMPIComponent::_narrow(obj);
- if(CORBA::is_nil(m1)){
- INFOS("getting handle on MPI component failed");
- }
- else{
- m1->Coucou(1L);
-// // sleep(5);
- INFOS("Unload MPI Component");
- iGenFact->remove_impl(m1) ;
- }
-// }
-// // Clean-up.
-// // iGenFact->finalize_removal() ;
-// // sleep(5);
- iGenFact->Shutdown();
-// INFOS("shut down corba server for Test MPI Container");
-// orb->destroy();
- }
- catch(CORBA::COMM_FAILURE& ex) {
- INFOS("Caught system exception COMM_FAILURE -- unable to contact the object.");
- }
- catch(CORBA::SystemException&) {
- INFOS("Caught a CORBA::SystemException.");
- }
- catch(CORBA::Exception&) {
- INFOS("Caught CORBA::Exception.");
- }
- catch(...) {
- INFOS("Caught unknown exception.");
- }
-
- END_OF(argv[0]);
- // delete myThreadTrace;
- return 0 ;
-}
+++ /dev/null
-#
-# 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 : Makefile.in
-# Author : Paul RASCLE (EDF)
-# Module : SALOME
-# $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# header files
-EXPORT_HEADERS=
-
-EXPORT_PYSCRIPTS = UnitTests.py
-
-# Libraries targets
-
-LIB =
-LIB_SRC =
-
-# Executables targets
-
-BIN = UnitTests
-BIN_SRC =
-BIN_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
- SALOME_Exception.idl
-
-CXXFLAGS += @CPPUNIT_INCLUDES@
-CPPFLAGS += @CPPUNIT_INCLUDES@
-
-LIBS= @LIBS@ @CPPUNIT_LIBS@
-
-LDFLAGSFORBIN+= \
- -lSALOMELocalTraceTest -lSALOMELocalTrace -lSALOMEBasics \
- -lSALOMETraceCollectorTest \
- -lUtilsTest -lOpUtil \
- -lSalomeNS -lSalomeContainer -lSalomeResourcesManager \
- -lRegistry -lSalomeNotification \
- -lLifeCycleCORBATest -lSalomeLifeCycleCORBA \
-
-
-
-@CONCLUDE@
+++ /dev/null
-
-// --- include all Unit Test from basics until the present directory
-
-#include "SALOMELocalTraceTest.hxx"
-#include "SALOMETraceCollectorTest.hxx"
-#include "UtilsTest.hxx"
-#include "LifeCycleCORBATest.hxx"
-
-// --- Registers the fixture into the 'registry'
-
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( UtilsTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( LifeCycleCORBATest );
-
-// --- generic Main program from Basic/Test
-
-#include "BasicMainTest.hxx"
+++ /dev/null
-
-// --- include all Unit Test from basics until the present directory
-
-#include "SALOMELocalTraceTest.hxx"
-#include "SALOMETraceCollectorTest.hxx"
-#include "UtilsTest.hxx"
-
-// --- Registers the fixture into the 'registry'
-
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
-CPPUNIT_TEST_SUITE_REGISTRATION( UtilsTest );
-
-// --- generic Main program from Basic/Test
-
-#include "BasicMainTest.hxx"
+++ /dev/null
-
-#include "UtilsTest.hxx"
-
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <cstdlib>
-#include "Utils_SALOME_Exception.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-#define TRACEFILE "/tmp/traceUnitTest.log"
-
-// ============================================================================
-/*!
- * Set Trace mecanism
- * - delete preexisting trace classes if any
- * - set trace on file
- */
-// ============================================================================
-
-void
-UtilsTest::setUp()
-{
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
- bp1->deleteInstance(bp1);
-
- // --- 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();
-
- bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
-}
-
-// ============================================================================
-/*!
- * - delete trace classes
- */
-// ============================================================================
-
-void
-UtilsTest::tearDown()
-{
- LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
- CPPUNIT_ASSERT(bp1);
- bp1->deleteInstance(bp1);
-}
-
-int genExcept()
-{
- throw SALOME_Exception("a message");
-};
-
-// ============================================================================
-/*!
- * Check basic SALOME_exception mecanism
- */
-// ============================================================================
-
-void
-UtilsTest::testSALOME_ExceptionThrow()
-{
- CPPUNIT_ASSERT_THROW(genExcept(), SALOME_Exception);
-}
-
-// ============================================================================
-/*!
- * Check message on catch
- */
-// ============================================================================
-
-void
-UtilsTest::testSALOME_ExceptionMessage()
-{
-#define EXAMPLE_EXCEPTION_MESSAGE "something for the end user"
- try
- {
- throw SALOME_Exception(EXAMPLE_EXCEPTION_MESSAGE);
- }
- catch (const SALOME_Exception &ex)
- {
- string expectedMessage = EXAMPLE_EXCEPTION_MESSAGE;
- string actualMessage = ex.what();
- CPPUNIT_ASSERT(actualMessage.find(expectedMessage) != string::npos);
- }
-}
+++ /dev/null
-
-#ifndef _UTILSTEST_HXX_
-#define _UTILSTEST_HXX_
-
-#include <cppunit/extensions/HelperMacros.h>
-
-class UtilsTest : public CppUnit::TestFixture
-{
- CPPUNIT_TEST_SUITE( UtilsTest );
- CPPUNIT_TEST( testSALOME_ExceptionThrow );
- CPPUNIT_TEST( testSALOME_ExceptionMessage );
- CPPUNIT_TEST_SUITE_END();
-
-public:
-
- void setUp();
- void tearDown();
-
- void testSALOME_ExceptionThrow();
- void testSALOME_ExceptionMessage();
-};
-
-#endif
+++ /dev/null
-// File: Utils_ExceptHandler.cxx
-// Created: Mon Mar 15 10:23:41 2004
-// Author: Oksana TCHEBANOVA
-// <ota@localhost.localdomain>
-
-
-#include "Utils_ExceptHandlers.hxx"
-#include "Utils_CorbaException.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOME_Exception)
-
-using namespace std;
-
-void SalomeException ()
-{
- throw SALOME_Exception("Salome Exception");
-}
-
-void SALOME_SalomeException() {
- THROW_SALOME_CORBA_EXCEPTION("INTERNAL ERROR", SALOME::INTERNAL_ERROR);
-}
-