Salome HOME
Porting to Mandrake 10.1 and new products:
[modules/kernel.git] / idl / SALOME_ModuleCatalog.idl
index d7e079c39420aeeb53aec9d189a8733980037617..6ff8899094aa108462d5814e800e91796d8d3cf0 100644 (file)
@@ -1,22 +1,43 @@
-// File: SALOME_ModuleCatalog.idl
-// Created: Tue June 25 2001
-// Author: Estelle Deville
-// Project: SALOME
-// Copyright : CEA/DEN/DMSS/LGLS
-// $Header$
+//  Copyright (C) 2003  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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_ModuleCatalog.idl
+//  Author : Estelle Deville
+//  $Header$
 
 /*! \file SALOME_ModuleCatalog.idl This file conatins a set of interfaces used for  
   creation of the catalog of components in %SALOME application
 */
 
-/*! \ingroup Kernel 
+/*!  
 The main package of interfaces used for creation of the module catalog in %SALOME application.
+Module catalog allows to manage components of %SALOME application, to call specified in the
+xml files interfaces with the help of AComponent interface.
 */
 module SALOME_ModuleCatalog
 {
   // Type Definitions
 /*! 
-This enumeration contains a set of definitions of %SALOME modules.
+This enumeration contains a current set of definitions of the components integrated
+into %SALOME application.
 */
   enum ComponentType {  GEOM,  /*!<Module %GEOM */
                         MESH,  /*!<Module %MESH */
@@ -28,7 +49,7 @@ This enumeration contains a set of definitions of %SALOME modules.
                        OTHER   /*!<Any other type of module */
                      } ;
 /*! 
-This struct contains fields defining the parameters of the services.
+This struct contains fields defining the parameter of the service.
 */
 
   struct ServicesParameter
@@ -37,17 +58,48 @@ This struct contains fields defining the parameters of the services.
     string Parametername; /*!<Name of the parameter.*/
   } ;
 
+  enum DataStreamDependency {
+    DATASTREAM_UNDEFINED,
+    DATASTREAM_TEMPORAL,
+    DATASTREAM_ITERATIVE
+  } ;
+
+  enum DataStreamType {
+    DATASTREAM_UNKNOWN,
+    DATASTREAM_INTEGER,
+    DATASTREAM_FLOAT,
+    DATASTREAM_DOUBLE,
+    DATASTREAM_STRING,
+    DATASTREAM_BOOLEAN
+  } ;
+
+  struct ServicesDataStreamParameter
+  {
+    DataStreamType Parametertype; /*!<Type of the parameter.*/
+    string Parametername;         /*!<Name of the parameter.*/
+    DataStreamDependency Parameterdependency; /*!<Temporal or iterative dependency.*/
+  } ;
+
+/*! 
+The list of the parameters of service.
+*/
+
   typedef sequence<ServicesParameter> ListOfServicesParameter;
+  typedef sequence<ServicesDataStreamParameter> ListOfServicesDataStreamParameter;
+
 /*! 
 This struct contains fields completely defining each service.
 */
 
   struct Service
   {
-    string                  ServiceName; /*!<Name of the service.*/
-    ListOfServicesParameter ServiceinParameter; /*!< List of input parameters of the services.*/
-    ListOfServicesParameter ServiceoutParameter; /*!< List of input parameters of the services.*/
-    boolean                 Servicebydefault; /*!<True if the service is taken with its defult fields.*/
+    string                            ServiceName; /*!<Name of the service.*/
+    ListOfServicesParameter           ServiceinParameter; /*!< List of input parameters of the services.*/
+    ListOfServicesParameter           ServiceoutParameter; /*!< List of output parameters of the services.*/
+    ListOfServicesDataStreamParameter ServiceinDataStreamParameter; /*!< List of input parameters of the services.*/
+    ListOfServicesDataStreamParameter ServiceoutDataStreamParameter; /*!< List of output parameters of the services.*/
+    boolean                           Servicebydefault; /*!<True if the service is taken with its default fields.*/
+    boolean                           TypeOfNode; /*!<True is the service is a factory node. Otherwise, it's a compute node.*/
   } ;
 /*! 
 List of services of the interface.
@@ -70,9 +122,40 @@ List of interface definitions.
 */
   typedef sequence<DefinitionInterface> ListOfDefInterface ;
 /*! 
-List of interfaces.
+List of names of interfaces.
 */
   typedef sequence<string> ListOfInterfaces ;
+
+/*!
+PathPrefix : association of a machine name and
+a path to a component
+*/
+  struct PathPrefix {
+    string             machine;
+    string             path;
+  };
+
+/*! 
+List of path prefixes
+*/
+  typedef sequence<PathPrefix> PathPrefixes;
+
+/*!
+Description of a component
+*/
+  struct Component
+  {
+    ComponentType      type;
+    string             name;
+    string             username;
+    boolean            multistudy;
+    boolean            implementationType;
+    string             icon;
+    string             constraint;
+    ListOfDefInterface interfaces;
+    PathPrefixes       paths;
+  };
+
 /*! 
 List of names of components.
 */
@@ -86,8 +169,11 @@ This struct contains GUI elements used for representation of the module in %IAPP
 */
   struct IAPP_Affich
   {
-    string modulename; /*!<Name of the module.*/
-    string moduleicone; /*!<Icone representing the module.*/
+    string modulename;     /*!<Name of the module.*/
+    string moduleusername; /*!<UserName of the module.*/
+    string moduleicone;    /*!<Icone representing the module.*/
+    string moduleversion;  /*!<Version of the module.*/
+    string modulecomment;  /*!<Comment to the module.*/
   };
 /*!
 List of pair GUI elements (component name, component icone)
@@ -103,12 +189,16 @@ List of pair GUI elements (component name, component icone)
     string what ; /*!<Indicates if it's a %component, a %service or a % pathPrefix.*/
   } ;
 
+  /*!
+   This interface provides the common funcionality information of corresponding component.
+   Information is loaded from specific xml files.
+  */
   interface Acomponent
   {
     // GetInterfaceList : operation to get a list of the interfaces name of
     //                    a component
   /*!
-   Gets a list of names of interfaces of the component
+   Gets the list of names of interfaces of the component
     \return a list of interfaces of the component 
   */
     ListOfInterfaces GetInterfaceList() ;
@@ -126,7 +216,7 @@ List of pair GUI elements (component name, component icone)
     // GetServiceList : operation to get a list of the services name of
     //                  an interface of a component
  /*! 
-   Gets a list of names of services of a definite interface belonging to the component.
+   Gets the list of names of services of a definite interface belonging to the component.
    \note <BR>If the specified interface doesn't exist, Notfound exception is thrown.
    \param interfacename Name of the interface 
    \return List of services of the required interface
@@ -169,31 +259,42 @@ List of pair GUI elements (component name, component icone)
     string GetPathPrefix(in string machinename) raises(NotFound);
 
 /*! 
-    Sets/gets the constraint affected to the component 
+    Get the constraint affected to the component 
     (to be resolved by LifeCycle for the computer choice)
 */
     readonly attribute string constraint ;
 
 /*! 
-Sets/gets the name of the component
+Get the name of the component
 */
     readonly attribute string componentname;
 
+/*!
+Get the user name of the component
+*/
+    readonly attribute string componentusername;
+
 /*! 
-Defines whether the component can be multistudy or not
+Ask whether the component is multistudy or not
 */
     readonly attribute boolean multistudy;
 
 /*! 
-Defines the type of the component
+Ask the type of the component
 */
     readonly attribute ComponentType component_type ;
 
 /*! 
-Sets/gets the icone of the component (for IAPP)
+Gets the icone of the component (for IAPP)
 */
     readonly attribute string component_icone;
+
+/*! 
+Gets the implementation type of the component : C++ or Python (for IAPP)
+*/
+    readonly attribute boolean implementation_type;
   } ;
+
 /*! \brief %Module catalog interface
 
 This interface is used for creation of the module catalog in %SALOME application.
@@ -232,5 +333,18 @@ Gets a list of names of components of a particular type, which belong to this ca
 Gets one component of the catalog.
 */
     Acomponent GetComponent(in string componentname) raises(NotFound);
+
+/*! 
+Gets the description of a component of the catalog.
+*/
+    Component GetComponentInfo(in string componentName) raises(NotFound);
+
+/*!
+Reads a xml file and imports new components from this file.
+New components replace existing components with the same name.
+*/
+    void ImportXmlCatalogFile(in string filename) raises(NotFound);
+
+    void shutdown();
   } ;
 };