Salome HOME
0019827: EDF 736 GEOM : Duplication of a object along an elliptic path
[modules/geom.git] / src / GEOM_I / GEOM_Gen_i.hh
index f8537d7d3010d3f3b5ffc36dfa3bef9345c26c5d..9f904ddb81c8d963b73477fc7f73385e340fc97f 100644 (file)
@@ -1,19 +1,39 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either 
+// version 2.1 of the License.
+// 
+// This library is distributed in the hope that it will be useful 
+// but WITHOUT ANY WARRANTY; without even the implied warranty of 
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public  
+// License along with this library; if not, write to the Free Software 
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 #ifndef __GEOM_GEN_I_H__
 #define __GEOM_GEN_I_H__
 
+#include "GEOM_GEOM_I.hxx"
+
 #include "GEOMImpl_Gen.hxx"
 
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(GEOM_Gen)
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOME_Component_i.hxx"
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
 
-#include "SALOME_NamingService.hxx"
 
-#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
+#include "SALOME_Component_i.hxx"
+#include "SALOME_NamingService.hxx"
 
 #include "GEOM_IBasicOperations_i.hh"
 #include "GEOM_ITransformOperations_i.hh"
 #include "GEOM_IMeasureOperations_i.hh"
 #include "GEOM_IGroupOperations_i.hh"
 
+//#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
+
+
 //=====================================================================
 // GEOM_Gen_i : class definition
 //=====================================================================
-class GEOM_Gen_i: public POA_GEOM::GEOM_Gen, public Engines_Component_i
+class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Component_i
 {
  public:
 
   //-----------------------------------------------------------------------//
   // Constructor / Destructor                                              //
   //-----------------------------------------------------------------------//
-  // constructor to be called for servant creation. 
+
+  // constructor to be called for servant creation.
   GEOM_Gen_i();
   GEOM_Gen_i(CORBA::ORB_ptr orb,
             PortableServer::POA_ptr poa,
-            PortableServer::ObjectId * contId, 
-            const char *instanceName, 
+            PortableServer::ObjectId * contId,
+            const char *instanceName,
             const char *interfaceName);
 
   // destructor, doing nothing (for now)
@@ -55,7 +79,7 @@ class GEOM_Gen_i: public POA_GEOM::GEOM_Gen, public Engines_Component_i
 
   //-----------------------------------------------------------------------//
   // Inherited methods from SALOMEDS::Driver                               //
-  //-----------------------------------------------------------------------//    
+  //-----------------------------------------------------------------------//
 
   SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent,
                          const char* theURL,
@@ -64,7 +88,7 @@ class GEOM_Gen_i: public POA_GEOM::GEOM_Gen, public Engines_Component_i
   SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent,
                               const char* theURL,
                               bool isMultiFile);
-  
+
   CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent,
                      const SALOMEDS::TMPFile& theStream,
                      const char* theURL,
@@ -101,13 +125,36 @@ class GEOM_Gen_i: public POA_GEOM::GEOM_Gen, public Engines_Component_i
                                  CORBA::Long theObjectID,
                                  SALOMEDS::SObject_ptr theObject);
 
-  //Adds theObject in the study with a name = theName, if theFather is not null the object is placed under theFather
-  SALOMEDS::SObject_ptr AddInStudy(SALOMEDS::Study_ptr theStudy, GEOM::GEOM_Object_ptr theObject, const char* theName, GEOM::GEOM_Object_ptr theFather);
+  /*! \brief Adds theObject in the study with a name = theName, if
+   *         theFather is not null the object is placed under theFather
+   */
+  SALOMEDS::SObject_ptr AddInStudy (SALOMEDS::Study_ptr theStudy,
+                                   GEOM::GEOM_Object_ptr theObject,
+                                   const char* theName,
+                                   GEOM::GEOM_Object_ptr theFather);
+
+  /*! \brief Publish sub-shapes, standing for arguments and sub-shapes of arguments.
+   *         To be used from python scripts out of geompy.addToStudy (non-default usage)
+   */
+  CORBA::Boolean RestoreSubShapesO (SALOMEDS::Study_ptr     theStudy,
+                                   GEOM::GEOM_Object_ptr   theObject,
+                                   const GEOM::ListOfGO&   theArgs,
+                                   GEOM::find_shape_method theFindMethod,
+                                   CORBA::Boolean          theInheritFirstArg);
+
+  /*! \brief Publish sub-shapes, standing for arguments and sub-shapes of arguments.
+   *         To be used from GUI and from geompy.addToStudy
+   */
+  CORBA::Boolean RestoreSubShapesSO (SALOMEDS::Study_ptr     theStudy,
+                                    SALOMEDS::SObject_ptr   theSObject,
+                                    const GEOM::ListOfGO&   theArgs,
+                                    GEOM::find_shape_method theFindMethod,
+                                    CORBA::Boolean          theInheritFirstArg);
 
   //-----------------------------------------------------------------------//
-  // Transaction methods                                                    //
-  //-----------------------------------------------------------------------// 
+  // Transaction methods                                                   //
+  //-----------------------------------------------------------------------//
+
   //Undos one transaction in the document associated with theStudyID
   virtual void Undo(CORBA::Long theStudyID);
 
@@ -116,12 +163,12 @@ class GEOM_Gen_i: public POA_GEOM::GEOM_Gen, public Engines_Component_i
 
   //-----------------------------------------------------------------------//
   // Operations methods                                                    //
-  //-----------------------------------------------------------------------// 
+  //-----------------------------------------------------------------------//
 
   //Returns a pointer to BasicOperations interface
   virtual GEOM::GEOM_IBasicOperations_ptr GetIBasicOperations (CORBA::Long theStudyID)
     throw (SALOME::SALOME_Exception);
-  
+
   //Returns a pointer to TransformOperations interface
   virtual GEOM::GEOM_ITransformOperations_ptr GetITransformOperations (CORBA::Long theStudyID)
     throw (SALOME::SALOME_Exception);
@@ -167,7 +214,8 @@ class GEOM_Gen_i: public POA_GEOM::GEOM_Gen, public Engines_Component_i
     throw (SALOME::SALOME_Exception);
 
   //Adds a new sub shape
-  virtual GEOM::GEOM_Object_ptr AddSubShape(GEOM::GEOM_Object_ptr theMainShape, const GEOM::ListOfLong& theIndices);
+  virtual GEOM::GEOM_Object_ptr AddSubShape (GEOM::GEOM_Object_ptr theMainShape,
+                                            const GEOM::ListOfLong& theIndices);
 
   virtual void RemoveObject(GEOM::GEOM_Object_ptr theObject);
 
@@ -175,17 +223,39 @@ class GEOM_Gen_i: public POA_GEOM::GEOM_Gen, public Engines_Component_i
 
   virtual GEOM::GEOM_Object_ptr GetIORFromString(const char* stringIOR);
 
-  //********************************************************************************************************//
-  //     Internal methods
-  //********************************************************************************************************//
+  virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy,
+                                      CORBA::Boolean isPublished,
+                                      CORBA::Boolean& isValidScript);
+
+  char* GetDumpName (const char* theStudyEntry);
+
+  GEOM::string_array* GetAllDumpNames();
+
+  //-----------------------------------------------------------------------//
+  // Internal methods                                                      //
+  //-----------------------------------------------------------------------//
+
   virtual GEOM::GEOM_Object_ptr GetObject(CORBA::Long theStudyID, const char* theEntry);
 
  private:
+  GEOM::ListOfGO* RestoreSubShapesOneLevel (SALOMEDS::Study_ptr     theStudy,
+                                           SALOMEDS::SObject_ptr   theOldSO,
+                                           SALOMEDS::SObject_ptr   theNewSO,
+                                           GEOM::GEOM_Object_ptr   theNewO,
+                                           GEOM::find_shape_method theFindMethod);
+
+  CORBA::Boolean RestoreSubShapes (SALOMEDS::Study_ptr     theStudy,
+                                  GEOM::GEOM_Object_ptr   theObject,
+                                  SALOMEDS::SObject_ptr   theSObject,
+                                  const GEOM::ListOfGO&   theArgs,
+                                  GEOM::find_shape_method theFindMethod,
+                                  CORBA::Boolean          theInheritFirstArg);
+
+ private:
+
    ::GEOMImpl_Gen* _impl;
    SALOME_NamingService * name_service;
-   char * _name; 
-
+   char * _name;
 };
 
-#endif 
+#endif