Salome HOME
Porting to Mandrake 10.1 and new products:
[modules/kernel.git] / idl / SALOME_ModuleCatalog.idl
index 3f6bfaefbc6225171d08e8541f8b038b43157fba..6ff8899094aa108462d5814e800e91796d8d3cf0 100644 (file)
   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 */
@@ -46,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
@@ -55,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.
@@ -88,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.
 */
@@ -104,9 +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 modulename;     /*!<Name of the module.*/
     string moduleusername; /*!<UserName of the module.*/
-    string moduleicone; /*!<Icone representing 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)
@@ -122,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() ;
@@ -145,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
@@ -188,36 +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;
 
-/*! 
-Sets/gets the user name of the component
+/*!
+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.
@@ -256,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();
   } ;
 };