Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/smesh.git] / src / SMESH_I / SMESH_PythonDump.hxx
1 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
3 // 
4 //  This library is free software; you can redistribute it and/or 
5 //  modify it under the terms of the GNU Lesser General Public 
6 //  License as published by the Free Software Foundation; either 
7 //  version 2.1 of the License. 
8 // 
9 //  This library is distributed in the hope that it will be useful, 
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 //  Lesser General Public License for more details. 
13 // 
14 //  You should have received a copy of the GNU Lesser General Public 
15 //  License along with this library; if not, write to the Free Software 
16 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
17 // 
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19
20 #ifndef _SMESH_PYTHONDUMP_HXX_
21 #define _SMESH_PYTHONDUMP_HXX_
22
23 #include "SMESH.hxx"
24
25 #include <SALOMEconfig.h>
26 #include CORBA_SERVER_HEADER(SMESH_Mesh)
27 #include CORBA_SERVER_HEADER(SALOMEDS)
28
29 #include <sstream>
30
31 class SMESH_Gen_i;
32 class SMESH_MeshEditor_i;
33 class TCollection_AsciiString;
34 class Resource_DataMapOfAsciiStringAsciiString;
35
36 // ===========================================================================================
37 /*!
38  * \brief Tool converting SMESH engine calls into commands defined in smesh.py
39  *
40  * Implementation is in SMESH_2smeshpy.cxx
41  */
42 // ===========================================================================================
43
44 class SMESH_2smeshpy
45 {
46 public:
47   /*!
48    * \brief Convert a python script using commands of smesh.py
49    * \param theScript - Input script
50    * \param theEntry2AccessorMethod - The returning method names to access to
51    *        objects wrapped with python class
52    * \retval TCollection_AsciiString - Convertion result
53    */
54   static TCollection_AsciiString
55   ConvertScript(const TCollection_AsciiString& theScript,
56                 Resource_DataMapOfAsciiStringAsciiString& theEntry2AccessorMethod);
57
58   /*!
59    * \brief Return the name of the python file wrapping IDL API
60     * \retval TCollection_AsciiString - The file name
61    */
62   static char* SmeshpyName() { return "smesh"; }
63   static char* GenName() { return "smesh.smesh"; }
64 };
65
66 namespace SMESH
67 {
68   class FilterLibrary_i;
69   class FilterManager_i;
70   class Filter_i;
71   class Functor_i;
72
73 // ===========================================================================================
74 /*!
75  * \brief Utility helping in storing SMESH engine calls as python commands
76  */
77 // ===========================================================================================
78
79   class SMESH_I_EXPORT TPythonDump
80   {
81     std::ostringstream myStream;
82     static size_t myCounter;
83   public:
84     TPythonDump();
85     virtual ~TPythonDump();
86     
87     TPythonDump& 
88     operator<<(long int theArg);
89
90     TPythonDump& 
91     operator<<(int theArg);
92
93     TPythonDump& 
94     operator<<(double theArg);
95
96     TPythonDump& 
97     operator<<(float theArg);
98
99     TPythonDump& 
100     operator<<(const void* theArg);
101
102     TPythonDump& 
103     operator<<(const char* theArg);
104
105     TPythonDump& 
106     operator<<(const SMESH::ElementType& theArg);
107
108     TPythonDump& 
109     operator<<(const SMESH::long_array& theArg);
110
111     TPythonDump& 
112     operator<<(const SMESH::double_array& theArg);
113
114     TPythonDump& 
115     operator<<(SALOMEDS::SObject_ptr theArg);
116
117     TPythonDump& 
118     operator<<(CORBA::Object_ptr theArg);
119
120     TPythonDump& 
121     operator<<(SMESH::FilterLibrary_i* theArg);
122
123     TPythonDump& 
124     operator<<(SMESH::FilterManager_i* theArg);
125
126     TPythonDump& 
127     operator<<(SMESH::Filter_i* theArg);
128
129     TPythonDump& 
130     operator<<(SMESH::Functor_i* theArg);
131
132     TPythonDump& 
133     operator<<(SMESH_Gen_i* theArg);
134
135     TPythonDump& 
136     operator<<(SMESH_MeshEditor_i* theArg);
137
138     TPythonDump& 
139     operator<<(SMESH::MED_VERSION theArg);
140
141     TPythonDump&
142     operator<<(const SMESH::AxisStruct & theAxis);
143
144     TPythonDump&
145     operator<<(const SMESH::DirStruct & theDir);
146
147     TPythonDump&
148     operator<<(const TCollection_AsciiString & theArg);
149
150     static char* SMESHGenName() { return "smeshgen"; }
151     static char* MeshEditorName() { return "mesh_editor"; }
152
153     /*!
154      * \brief Return marker of long string literal beginning
155       * \param type - a name of functionality producing the string literal 
156       * \retval TCollection_AsciiString - the marker string to be written into
157       * a raw python script
158      */
159     static TCollection_AsciiString LongStringStart(const char* type);
160     /*!
161      * \brief Return marker of long string literal end
162       * \retval TCollection_AsciiString - the marker string to be written into
163       * a raw python script
164      */
165     static TCollection_AsciiString LongStringEnd();
166     /*!
167      * \brief Cut out a long string literal from a string
168       * \param theText - text possibly containing string literals
169       * \param theFrom - position in the text to search from
170       * \param theLongString - the retrieved literal
171       * \param theStringType - a name of functionality produced the literal
172       * \retval bool - true if a string literal found
173      * 
174      * The literal is removed from theText; theFrom points position right after
175      * the removed literal
176      */
177     static bool  CutoutLongString( TCollection_AsciiString & theText,
178                                    int                     & theFrom,
179                                    TCollection_AsciiString & theLongString,
180                                    TCollection_AsciiString & theStringType);
181   };
182 }
183
184 #endif