Salome HOME
0022782: [CEA 1315] GetFirstVertex does not return the edge's starting point
[modules/geom.git] / src / GEOM_I / GEOM_Gen_i.hh
index 8633964ca719479d81332cbe44dcdd44f7775800..f56712fb0283347405b45821e86d4a8db31beb05 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // 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.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -18,6 +18,7 @@
 // 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_IMeasureOperations_i.hh"
 #include "GEOM_IGroupOperations_i.hh"
 #include "GEOM_IFieldOperations_i.hh"
+#include "GEOMUtils.hxx"
 
 #include <TopTools_IndexedMapOfShape.hxx>
 
 #include <map>
 #include <set>
+#include <list>
 #include <string>
 
 //#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
+class TopTools_SequenceOfShape;
 
 //=====================================================================
 // Generic operations creator (for plugins mechanism)
@@ -195,6 +199,10 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
                                       CORBA::Boolean          theInheritFirstArg,
                                       CORBA::Boolean          theAddPrefix);
 
+  //Collects dependencies of the given objects from other ones
+  SALOMEDS::TMPFile* GetDependencyTree(SALOMEDS::Study_ptr theStudy,
+                                      const GEOM::string_array& theObjectEntries);
+
   //-----------------------------------------------------------------------//
   // Transaction methods                                                   //
   //-----------------------------------------------------------------------//
@@ -316,6 +324,15 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
   // SIMAN-related functions (check out/check in) : get modified data
   virtual Engines::ListOfData* getModifiedData(CORBA::Long studyId);
 
+  /*! \brief Fills 3 lists that is used to clean study of redundant objects.
+   *         To be used from GUI.
+   */
+  void GetEntriesToReduceStudy(SALOMEDS::Study_ptr theStudy,
+                              GEOM::string_array& theSelectedEntries,
+                              GEOM::string_array& theParentEntries,
+                              GEOM::string_array& theSubEntries,
+                              GEOM::string_array& theOtherEntries);
+
   //-----------------------------------------------------------------------//
   // Internal methods                                                      //
   //-----------------------------------------------------------------------//
@@ -364,6 +381,31 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
                              const Standard_CString& GrName,
                              GEOM::ListOfGO_var aResList);
 
+  void getUpwardDependency( GEOM::GEOM_BaseObject_ptr gbo, 
+                            GEOMUtils::LevelsList &upLevelList,  
+                           std::map< std::string, std::set<std::string> > &passedEntries,
+                            int level = 0 );
+
+  void getDownwardDependency( GEOM::GEOM_BaseObject_ptr gbo, 
+                              GEOMUtils::LevelsList &downLevelList, 
+                             std::map< std::string, std::set<std::string> > &passedEntries,
+                              int level = 0 );
+
+  void includeParentDependencies(GEOM::GEOM_BaseObject_ptr gbo,
+                                std::set<std::string>& aSelected,
+                                std::set<std::string>& aParents, 
+                                std::set<std::string>& aChildren, 
+                                std::set<std::string>& anOthers);
+
+  void includeSubObjects(SALOMEDS::Study_ptr theStudy,
+                        const std::string& aSelectedEntry,
+                        std::set<std::string>& aSelected,
+                        std::set<std::string>& aParents, 
+                        std::set<std::string>& aChildren, 
+                        std::set<std::string>& anOthers);
+
+  void LoadPlugin(const std::string& theLibName);
+
  private:
 
    ::GEOMImpl_Gen* _impl;