Salome HOME
SUPERV testing removed from win32 version
[modules/kernel.git] / idl / SALOME_ModuleCatalog.idl
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 //
21 //
22 //  File   : SALOME_ModuleCatalog.idl
23 //  Author : Estelle Deville
24 //  $Header$
25
26 /*! \file SALOME_ModuleCatalog.idl This file conatins a set of interfaces used for  
27   creation of the catalog of components in %SALOME application
28 */
29
30 /*!  
31 The main package of interfaces used for creation of the module catalog in %SALOME application.
32 Module catalog allows to manage components of %SALOME application, to call specified in the
33 xml files interfaces with the help of AComponent interface.
34 */
35 module SALOME_ModuleCatalog
36 {
37   // Type Definitions
38 /*! 
39 This enumeration contains a current set of definitions of the components integrated
40 into %SALOME application.
41 */
42   enum ComponentType {  GEOM,  /*!<Module %GEOM */
43                         MESH,  /*!<Module %MESH */
44                          Med,  /*!<Module %Med*/
45                       SOLVER,  /*!<Module of %SOLVER type */
46                         DATA,  /*!<Module %DATA */
47                         VISU,  /*!<Module %VISU */
48                       SUPERV,  /*!<Module %SUPERVISION */
49                        OTHER   /*!<Any other type of module */
50                      } ;
51 /*! 
52 This struct contains fields defining the parameter of the service.
53 */
54
55   struct ServicesParameter
56   {
57     string Parametertype; /*!<Type of the parameter.*/
58     string Parametername; /*!<Name of the parameter.*/
59   } ;
60
61   enum DataStreamDependency {
62     DATASTREAM_UNDEFINED,
63     DATASTREAM_TEMPORAL,
64     DATASTREAM_ITERATIVE
65   } ;
66
67   enum DataStreamType {
68     DATASTREAM_UNKNOWN,
69     DATASTREAM_INTEGER,
70     DATASTREAM_FLOAT,
71     DATASTREAM_DOUBLE,
72     DATASTREAM_STRING,
73     DATASTREAM_BOOLEAN
74   } ;
75
76   struct ServicesDataStreamParameter
77   {
78     DataStreamType Parametertype; /*!<Type of the parameter.*/
79     string Parametername;         /*!<Name of the parameter.*/
80     DataStreamDependency Parameterdependency; /*!<Temporal or iterative dependency.*/
81   } ;
82
83 /*! 
84 The list of the parameters of service.
85 */
86
87   typedef sequence<ServicesParameter> ListOfServicesParameter;
88   typedef sequence<ServicesDataStreamParameter> ListOfServicesDataStreamParameter;
89
90 /*! 
91 This struct contains fields completely defining each service.
92 */
93
94   struct Service
95   {
96     string                            ServiceName; /*!<Name of the service.*/
97     ListOfServicesParameter           ServiceinParameter; /*!< List of input parameters of the services.*/
98     ListOfServicesParameter           ServiceoutParameter; /*!< List of output parameters of the services.*/
99     ListOfServicesDataStreamParameter ServiceinDataStreamParameter; /*!< List of input parameters of the services.*/
100     ListOfServicesDataStreamParameter ServiceoutDataStreamParameter; /*!< List of output parameters of the services.*/
101     boolean                           Servicebydefault; /*!<True if the service is taken with its default fields.*/
102     boolean                           TypeOfNode; /*!<True is the service is a factory node. Otherwise, it's a compute node.*/
103   } ;
104 /*! 
105 List of services of the interface.
106 */
107   typedef sequence<Service> ListOfInterfaceService;
108 /*! 
109 List of services.
110 */
111   typedef sequence<string> ListOfServices ;
112 /*! 
113 This struct contains fields defining each interface.
114 */
115   struct DefinitionInterface
116   {
117     string                 interfacename ; /*!<Name of the interface.*/
118     ListOfInterfaceService interfaceservicelist ; /*!<List of services of the interface.*/
119   } ;
120 /*! 
121 List of interface definitions.
122 */
123   typedef sequence<DefinitionInterface> ListOfDefInterface ;
124 /*! 
125 List of names of interfaces.
126 */
127   typedef sequence<string> ListOfInterfaces ;
128
129 /*!
130 PathPrefix : association of a machine name and
131 a path to a component
132 */
133   struct PathPrefix {
134     string             machine;
135     string             path;
136   };
137
138 /*! 
139 List of path prefixes
140 */
141   typedef sequence<PathPrefix> PathPrefixes;
142
143 /*!
144 Description of a component
145 */
146   struct Component
147   {
148     ComponentType      type;
149     string             name;
150     string             username;
151     boolean            multistudy;
152     boolean            implementationType;
153     string             icon;
154     string             constraint;
155     ListOfDefInterface interfaces;
156     PathPrefixes       paths;
157   };
158
159 /*! 
160 List of names of components.
161 */
162   typedef sequence<string> ListOfComponents ;
163 /*! 
164 List of names of computers.
165 */
166   typedef sequence<string> ListOfComputers ;
167 /*! 
168 This struct contains GUI elements used for representation of the module in %IAPP component.
169 */
170   struct IAPP_Affich
171   {
172     string modulename;     /*!<Name of the module.*/
173     string moduleusername; /*!<UserName of the module.*/
174     string moduleicone;    /*!<Icone representing the module.*/
175     string moduleversion;  /*!<Version of the module.*/
176     string modulecomment;  /*!<Comment to the module.*/
177   };
178 /*!
179 List of pair GUI elements (component name, component icone)
180  used for representation of the module in %IAPP component.
181 */
182   typedef sequence<IAPP_Affich> ListOfIAPP_Affich ;
183
184 /*! 
185  This exception is raised when a %component, a %service or a % pathPrefix is not found.
186 */
187   exception NotFound
188   {
189     string what ; /*!<Indicates if it's a %component, a %service or a % pathPrefix.*/
190   } ;
191
192   /*!
193    This interface provides the common funcionality information of corresponding component.
194    Information is loaded from specific xml files.
195   */
196   interface Acomponent
197   {
198     // GetInterfaceList : operation to get a list of the interfaces name of
199     //                    a component
200   /*!
201    Gets the list of names of interfaces of the component
202     \return a list of interfaces of the component 
203   */
204     ListOfInterfaces GetInterfaceList() ;
205
206     // GetInterface : operation to get one interface of a component
207   
208   /*! 
209     Gets a definite interface of the component
210     \note <BR>If the specified interface doesn't exist, Notfound exception is thrown
211     \param interfacename  Name of the interface 
212     \return Required interface
213   */
214     DefinitionInterface GetInterface(in string interfacename) raises(NotFound);
215
216     // GetServiceList : operation to get a list of the services name of
217     //                  an interface of a component
218  /*! 
219    Gets the list of names of services of a definite interface belonging to the component.
220    \note <BR>If the specified interface doesn't exist, Notfound exception is thrown.
221    \param interfacename Name of the interface 
222    \return List of services of the required interface
223  */
224     ListOfServices GetServiceList(in string interfacename) raises(NotFound);
225
226     
227     // GetService : operation to get one service of an interface of a component
228   
229  /*! 
230    Gets a definite service of an interface of the component.
231    \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
232    \param interfacename Name of the interface
233    \param servicename Name of the service
234    \return Required service
235  */
236
237     Service GetService(in string interfacename, 
238                        in string servicename) raises(NotFound);
239
240     // GetDefaultService : operation to get the default service
241     //                     of an interface of a component
242 /*! 
243    Gets the default service of an interface of the component.
244    \note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
245    \param interfacename Name of the interface
246    \return Required service
247  */
248
249     Service GetDefaultService(in string interfacename) raises(NotFound);
250
251     // GetPathPrefix : operation to get the PathPrefix of a computer
252  /*!  
253    Gets the prefix path of the computer containing the %component.
254    \note <BR>If the required computer doesn't exist, Notfound exception is thrown
255    \param machinename Name of the machine 
256    \return Prefix path
257  */
258
259     string GetPathPrefix(in string machinename) raises(NotFound);
260
261 /*! 
262     Get the constraint affected to the component 
263     (to be resolved by LifeCycle for the computer choice)
264 */
265     readonly attribute string constraint ;
266
267 /*! 
268 Get the name of the component
269 */
270     readonly attribute string componentname;
271
272 /*!
273 Get the user name of the component
274 */
275     readonly attribute string componentusername;
276
277 /*! 
278 Ask whether the component is multistudy or not
279 */
280     readonly attribute boolean multistudy;
281
282 /*! 
283 Ask the type of the component
284 */
285     readonly attribute ComponentType component_type ;
286
287 /*! 
288 Gets the icone of the component (for IAPP)
289 */
290     readonly attribute string component_icone;
291
292 /*! 
293 Gets the implementation type of the component : C++ or Python (for IAPP)
294 */
295     readonly attribute boolean implementation_type;
296   } ;
297
298 /*! \brief %Module catalog interface
299
300 This interface is used for creation of the module catalog in %SALOME application.
301 */
302   interface ModuleCatalog
303   {
304     void ping();
305
306 /*! 
307  Gets a list of names of computers of the catalog 
308 */   
309     ListOfComputers GetComputerList();
310
311 /*! 
312 Gets the %PathPrefix of a computer
313 */
314     string GetPathPrefix(in string machinename) raises(NotFound);
315 /*! 
316  Gets a list of names of components of the catalog 
317 */   
318     ListOfComponents GetComponentList();
319 /*! 
320 Gets a list of pair GUI elements (component name, component icone) 
321 used for representation of the module in %IAPP component.
322 */
323
324     ListOfIAPP_Affich GetComponentIconeList();
325 /*! 
326 Gets a list of names of components of a particular type, which belong to this catalog.
327 */  
328     // GetComponentList : operation to get a list of the components name of
329     //                    a particular type of the catalog   
330     ListOfComponents GetTypedComponentList(in ComponentType _component_type);
331
332 /*! 
333 Gets one component of the catalog.
334 */
335     Acomponent GetComponent(in string componentname) raises(NotFound);
336
337 /*! 
338 Gets the description of a component of the catalog.
339 */
340     Component GetComponentInfo(in string componentName) raises(NotFound);
341
342 /*!
343 Reads a xml file and imports new components from this file.
344 New components replace existing components with the same name.
345 */
346     void ImportXmlCatalogFile(in string filename) raises(NotFound);
347
348     void shutdown();
349   } ;
350 };