Salome HOME
Join modifications from branch OCC_debug_for_3_2_0b1
[modules/smesh.git] / src / SMESH_I / SMESH_2smeshpy.hxx
index 78117eaa347062daa770bfa9616ba7f65cef9f95..aabba67dd2f004461c9c273069d755f4e0775dbc 100644 (file)
@@ -1,3 +1,22 @@
+// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
 // File      : SMESH_smesh.hxx
 // Created   : Fri Nov 18 12:05:18 2005
 // Author    : Edward AGAPOV (eap)
@@ -73,24 +92,31 @@ DEFINE_STANDARD_HANDLE (_pyMesh      ,_pyObject);
 DEFINE_STANDARD_HANDLE (_pyHypothesis,_pyObject);
 DEFINE_STANDARD_HANDLE (_pyAlgorithm ,_pyHypothesis);
 
+typedef TCollection_AsciiString _pyID;
+
+// ===========================================================
 /*!
  * \brief Class operating on a command string looking like
  *        ResultValue = Object.Method( Arg1, Arg2,...)
  */
+// ===========================================================
+
 class _pyCommand: public Standard_Transient
 {
-  int myOrderNb; // position within the script
-  TCollection_AsciiString myString;
-  TCollection_AsciiString myRes, myObj, myMeth;
-  TColStd_SequenceOfAsciiString myArgs;
-  TColStd_SequenceOfInteger myBegPos; //!< where myRes, myObj, ... begin
-  std::list< Handle(_pyCommand) > myDependentCmds;
+  int                             myOrderNb;            //!< position within the script
+  TCollection_AsciiString         myString;             //!< command text
+  TCollection_AsciiString         myRes, myObj, myMeth; //!< found parts of command
+  TColStd_SequenceOfAsciiString   myArgs;               //!< found arguments
+  TColStd_SequenceOfInteger       myBegPos;             //!< where myRes, myObj, ... begin
+  std::list< Handle(_pyCommand) > myDependentCmds; //!< commands that sould follow me in the script
+
   enum { UNKNOWN=-1, EMPTY=0, RESULT_IND, OBJECT_IND, METHOD_IND, ARG1_IND };
   int GetBegPos( int thePartIndex );
   void SetBegPos( int thePartIndex, int thePosition );
   void SetPart( int thePartIndex, const TCollection_AsciiString& theNewPart,
                 TCollection_AsciiString& theOldPart);
   void FindAllArgs() { GetArg(1); }
+
 public:
   _pyCommand() {};
   _pyCommand( const TCollection_AsciiString& theString, int theNb )
@@ -123,13 +149,14 @@ public:
   { return myDependentCmds.push_back( cmd ); }
   bool SetDependentCmdsAfter() const;
 
+  bool AddAccessorMethod( _pyID theObjectID, const char* theAcsMethod );
+
   DEFINE_STANDARD_RTTI (_pyCommand)
 };
 
 /*!
  * \brief Root of all objects
  */
-typedef TCollection_AsciiString _pyID;
 
 class _pyObject: public Standard_Transient
 {
@@ -142,6 +169,7 @@ public:
   int GetCommandNb() { return myCreationCmd->GetOrderNb(); }
   virtual void Process(const Handle(_pyCommand) & theCommand) = 0;
   virtual void Flush() = 0;
+  virtual const char* AccessorMethod() const;
 
   DEFINE_STANDARD_RTTI (_pyObject)
 };
@@ -165,11 +193,13 @@ public:
   void SetCommandAfter( Handle(_pyCommand) theCmd, Handle(_pyCommand) theAfterCmd );
   std::list< Handle(_pyCommand) >& GetCommands() { return myCommands; }
   void SetAccessorMethod(const _pyID& theID, const char* theMethod );
+  const char* AccessorMethod() const { return SMESH_2smeshpy::GenName(); }
 private:
   std::map< _pyID, Handle(_pyMesh) > myMeshes;
   std::list< Handle(_pyHypothesis) > myHypos;
   std::list< Handle(_pyCommand) >    myCommands;
   int                                myNbCommands;
+  bool                               myHasPattern;
   Resource_DataMapOfAsciiStringAsciiString& myID2AccessorMethod;
 
   DEFINE_STANDARD_RTTI (_pyGen)
@@ -178,21 +208,26 @@ private:
 /*!
  * \brief Contains commands concerning mesh substructures
  */
+#define _pyMesh_ACCESS_METHOD "GetMesh()"
 class _pyMesh: public _pyObject
 {
+  std::list< Handle(_pyHypothesis) > myHypos;
   std::list< Handle(_pyCommand) > myAddHypCmds;
-  std::list< Handle(_pyCommand) > mySubmeshes; 
+  std::list< Handle(_pyCommand) > mySubmeshes;
+  bool                            myHasEditor;
 public:
   _pyMesh(const Handle(_pyCommand) theCreationCmd);
   const _pyID& GetGeom() { return GetCreationCmd()->GetArg(1); }
   void Process( const Handle(_pyCommand)& theCommand);
   void Flush();
+  const char* AccessorMethod() const { return _pyMesh_ACCESS_METHOD; }
 private:
   static void AddMeshAccess( const Handle(_pyCommand)& theCommand )
-  { theCommand->SetObject( theCommand->GetObject() + ".GetMesh()" ); }
+  { theCommand->SetObject( theCommand->GetObject() + "." _pyMesh_ACCESS_METHOD ); }
 
   DEFINE_STANDARD_RTTI (_pyMesh)
 };
+#undef _pyMesh_ACCESS_METHOD 
 
 /*!
  * \brief Root class for hypothesis
@@ -266,6 +301,7 @@ public:
   _pyNumberOfSegmentsHyp(const Handle(_pyCommand)& theCrCmd): _pyHypothesis(theCrCmd) {}
   virtual bool Addition2Creation( const Handle(_pyCommand)& theAdditionCmd,
                                   const _pyID&              theMesh);
+  void Flush();
 
   DEFINE_STANDARD_RTTI (_pyNumberOfSegmentsHyp)
 };
@@ -280,6 +316,7 @@ public:
   _pyAlgorithm(const Handle(_pyCommand)& theCreationCmd);
   virtual bool Addition2Creation( const Handle(_pyCommand)& theAdditionCmd,
                                   const _pyID&              theMesh);
+  const char* AccessorMethod() const { return "GetAlgorithm()"; }
 
   DEFINE_STANDARD_RTTI (_pyAlgorithm)
 };