-// 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
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
+// Copyright (C) 2003-2007 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, or (at your option) any later version.
//
+// 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/ or email : webmaster.salome@opencascade.com
+//
+
// 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
+//
+/*! \file SALOME_ModuleCatalog.idl \brief interfaces used for
+ getting information from module catalog in %SALOME application
*/
-/*! \ingroup Kernel
-The main package of interfaces used for creation of the module catalog in %SALOME application.
+/*! \brief
+The main package of interfaces used for 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.
+/*! \brief This enumeration contains a current set of definitions of the components integrated
+into %SALOME application.
*/
enum ComponentType { GEOM, /*!<Module %GEOM */
MESH, /*!<Module %MESH */
SUPERV, /*!<Module %SUPERVISION */
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
{
- string Parametertype; /*!<Type of the parameter.*/
- string Parametername; /*!<Name of the parameter.*/
+ string Parametertype; /*!<Parameter type name.*/
+ string Parametername; /*!<Parameter name.*/
+ } ;
+
+//! enumeration to define datastream ports dependency
+ enum DataStreamDependency {
+ DATASTREAM_UNDEFINED, /*!< dependency not defined */
+ DATASTREAM_TEMPORAL, /*!< time dependency */
+ DATASTREAM_ITERATIVE /*!< iterative dependency */
} ;
+//! struct to define datastream ports
+ struct ServicesDataStreamParameter
+ {
+ string Parametertype; /*!<Parameter type name.*/
+ string Parametername; /*!<Parameter name.*/
+ DataStreamDependency Parameterdependency; /*!<Temporal or iterative dependency.*/
+ } ;
+
+//! The list of the parameters of service.
typedef sequence<ServicesParameter> ListOfServicesParameter;
-/*!
-This struct contains fields completely defining each service.
-*/
+//! The list of datastream parameters of service.
+ typedef sequence<ServicesDataStreamParameter> ListOfServicesDataStreamParameter;
+
+//! a string list
+ typedef sequence<string> ListOfString;
+//! enumeration to define data types used by services
+ enum TypeKind
+ {
+ NONE ,
+ Dble , /*!< a double */
+ Int , /*!< an integer */
+ Str , /*!< a string */
+ Bool , /*!< a boolean */
+ Objref , /*!< an object reference */
+ Seq , /*!< a sequence of a content type */
+ Array , /*!< an array */
+ Struc /*!< a structure with named members */
+ };
+
+//! struct to define members of a Struc TypeKind
+ struct MemberDefinition
+ {
+ string name; /*!< Member name */
+ string type; /*!< Member type name */
+ };
+//! List of member definitions in a structure
+ typedef sequence<MemberDefinition> ListOfMemberDefinition;
+
+//! Struct to get the definition of types used in Salome catalogs
+ struct TypeDefinition
+ {
+ string name; /*!< Type name*/
+ TypeKind kind; /*!< Type kind.*/
+ string id; /*!< id (if needed) */
+ string content; /*!< Content type (if needed) */
+ ListOfString bases; /*!< base types (if needed) */
+ ListOfMemberDefinition members; /*!< Member types (if needed) */
+ };
+
+//! list of type definitions
+ typedef sequence<TypeDefinition> ListOfTypeDefinition;
+
+//! This struct contains fields 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.
-*/
+//! List of services of the interface.
typedef sequence<Service> ListOfInterfaceService;
-/*!
-List of services.
-*/
+//! List of services.
typedef sequence<string> ListOfServices ;
-/*!
-This struct contains fields defining each interface.
-*/
+//! This struct contains fields defining each interface.
struct DefinitionInterface
{
string interfacename ; /*!<Name of the interface.*/
ListOfInterfaceService interfaceservicelist ; /*!<List of services of the interface.*/
} ;
-/*!
-List of interface definitions.
-*/
+//! List of interface definitions.
typedef sequence<DefinitionInterface> ListOfDefInterface ;
-/*!
-List of interfaces.
-*/
+//! List of interface names.
typedef sequence<string> ListOfInterfaces ;
-/*!
-List of names of components.
+
+/*! \brief 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;
+
+//! Component implementation type
+ enum ImplType {
+ SO, /*!< component implemented as a dynamic library loadable with dlopen */
+ PY, /*!< component implemented as a python module loadable with import */
+ EXE, /*!< component implemented as an executable */
+ CEXE /*!< component to be loaded by a container which executable is given in the catalog */
+ } ;
+
+//! Description of a component
+ struct ComponentDef
+ {
+ ComponentType type;
+ string name;
+ string username;
+ boolean multistudy;
+ ImplType implementationType;
+ string implname;
+ string icon;
+ string constraint;
+ ListOfDefInterface interfaces;
+ PathPrefixes paths;
+ };
+
+//! List of component names.
typedef sequence<string> ListOfComponents ;
-/*!
-List of names of computers.
-*/
+//! List of computer names.
typedef sequence<string> ListOfComputers ;
-/*!
-This struct contains GUI elements used for representation of the module in %IAPP component.
-*/
+//! This struct contains GUI elements used for representation of the module in %IAPP component.
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)
+/*! \brief List of pair GUI elements (component name, component icone)
+
used for representation of the module in %IAPP component.
*/
typedef sequence<IAPP_Affich> ListOfIAPP_Affich ;
-/*!
- This exception is raised when a %component, a %service or a % pathPrefix is not found.
-*/
+//! This exception is raised when a %component, a %service or a %pathPrefix is not found.
exception NotFound
{
string what ; /*!<Indicates if it's a %component, a %service or a % pathPrefix.*/
} ;
+ /*! \brief This interface provides the common functionality 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
+ /*! \brief Get the list of interface names of the component
+
\return a list of interfaces of the component
*/
ListOfInterfaces GetInterfaceList() ;
- // GetInterface : operation to get one interface of a component
-
- /*!
- Gets a definite interface of the component
+ /*! \brief Get an interface of the component
+
\note <BR>If the specified interface doesn't exist, Notfound exception is thrown
\param interfacename Name of the interface
\return Required interface
*/
DefinitionInterface GetInterface(in string interfacename) raises(NotFound);
- // 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.
+ /*! \brief Get the list of service names of an 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
ListOfServices GetServiceList(in string interfacename) raises(NotFound);
- // GetService : operation to get one service of an interface of a component
-
- /*!
- Gets a definite service of an interface of the component.
+ /*! \brief Get a service of an interface of the component.
+
\note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
\param interfacename Name of the interface
\param servicename Name of the service
\return Required service
*/
-
Service GetService(in string interfacename,
in string servicename) raises(NotFound);
- // GetDefaultService : operation to get the default service
- // of an interface of a component
-/*!
- Gets the default service of an interface of the component.
+/*! \brief Get the default service of an interface of the component.
+
\note <BR>If the required service or the specified interface don't exist, Notfound exception is thrown.
\param interfacename Name of the interface
\return Required service
*/
-
Service GetDefaultService(in string interfacename) raises(NotFound);
- // GetPathPrefix : operation to get the PathPrefix of a computer
- /*!
- Gets the prefix path of the computer containing the %component.
+ /*! \brief Get the prefix path of the computer containing the %component.
+
\note <BR>If the required computer doesn't exist, Notfound exception is thrown
\param machinename Name of the machine
\return Prefix path
*/
-
string GetPathPrefix(in string machinename) raises(NotFound);
-/*!
- Sets/gets the constraint affected to the component
- (to be resolved by LifeCycle for the computer choice)
+/*! \brief Get the constraint affected to the component
+
+ constraint to be resolved by LifeCycle for the computer choice
*/
readonly attribute string constraint ;
-/*!
-Sets/gets the name of the component
+/*! \brief Get the component name
*/
readonly attribute string componentname;
-/*!
-Defines whether the component can be multistudy or not
+/*! \brief Get the user name of the component
+*/
+ readonly attribute string componentusername;
+
+/*! \brief Get whether the component is multistudy or not
*/
readonly attribute boolean multistudy;
-/*!
-Defines the type of the component
+/*! \brief Get the type of the component
*/
readonly attribute ComponentType component_type ;
-/*!
-Sets/gets the icone of the component (for IAPP)
+/*! \brief Get the icone of the component (for IAPP)
*/
readonly attribute string component_icone;
+
+/*! \brief Get the implementation type of the component
+
+ C++ (dyn lib), Python (module) or executable
+*/
+ readonly attribute ImplType implementation_type;
+/*! \brief Get the implementation name of the component
+
+ It's the name of the dyn lib or the python module or the executable
+if the default naming scheme is not convenient.
+*/
+ readonly attribute string implementation_name;
} ;
+
/*! \brief %Module catalog interface
-This interface is used for creation of the module catalog in %SALOME application.
+Interface to get information about components from the module catalog in %SALOME application.
*/
interface ModuleCatalog
{
+/*! \brief ping the ModuleCatalog server
+*/
void ping();
-/*!
- Gets a list of names of computers of the catalog
+/*! \brief Returns the PID of the ModuleCatalog server
+*/
+ long getPID();
+
+/*! \brief Shutdown the ModuleCatalog server
+*/
+ oneway void ShutdownWithExit();
+
+/*! \brief Get the types of the catalog
+ */
+ ListOfTypeDefinition GetTypes();
+
+/*! \brief Get a list of computer names of the catalog
*/
ListOfComputers GetComputerList();
-/*!
-Gets the %PathPrefix of a computer
-*/
+//! Get the %PathPrefix of a computer
string GetPathPrefix(in string machinename) raises(NotFound);
-/*!
- Gets a list of names of components of the catalog
-*/
+
+//! Get a list of component names of the catalog
ListOfComponents GetComponentList();
-/*!
-Gets a list of pair GUI elements (component name, component icone)
+
+/*! \brief Get a list of pair GUI elements (component name, component icone)
used for representation of the module in %IAPP component.
*/
-
ListOfIAPP_Affich GetComponentIconeList();
-/*!
-Gets a list of names of components of a particular type, which belong to this catalog.
+
+/*! \brief Get a list of component names of a particular type, which belong to this catalog.
*/
- // GetComponentList : operation to get a list of the components name of
- // a particular type of the catalog
ListOfComponents GetTypedComponentList(in ComponentType _component_type);
-/*!
-Gets one component of the catalog.
+/*! \brief Get one component of the catalog.
*/
Acomponent GetComponent(in string componentname) raises(NotFound);
+
+/*! \brief Get the description of a component of the catalog.
+*/
+ ComponentDef GetComponentInfo(in string componentName) raises(NotFound);
+
+/*! \brief Read a xml file and import new components from this file.
+
+New components replace existing components with the same name.
+*/
+ void ImportXmlCatalogFile(in string filename) raises(NotFound);
+
+/*! \brief Shutdown the module catalog server
+*/
+ void shutdown();
} ;
};