X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FSALOME_ModuleCatalog.idl;h=22aacbc1c5926227b9bc4672a8be4311e402e20c;hb=01fb5e19b0cc6f25c64be7bf96fa35676609a4e7;hp=227c6b7e0e77eb45b37f68cf5c8205d433ea0201;hpb=e016b7585c279113f84350c12ed1afdc898a47a3;p=modules%2Fkernel.git diff --git a/idl/SALOME_ModuleCatalog.idl b/idl/SALOME_ModuleCatalog.idl index 227c6b7e0..22aacbc1c 100644 --- a/idl/SALOME_ModuleCatalog.idl +++ b/idl/SALOME_ModuleCatalog.idl @@ -1,42 +1,42 @@ -// 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-2022 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 */ -/*! -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 current set of definitions of the components integrated +/*! \brief This enumeration contains a current set of definitions of the components integrated into %SALOME application. */ enum ComponentType { GEOM, /*! ListOfServicesParameter; +//! The list of datastream parameters of service. + typedef sequence ListOfServicesDataStreamParameter; -/*! -This struct contains fields completely defining each service. -*/ +//! a string list + typedef sequence 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 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 ListOfTypeDefinition; +//! This struct contains fields defining each service. struct Service { - string ServiceName; /*! ListOfInterfaceService; -/*! -List of services. -*/ +//! List of services. typedef sequence ListOfServices ; -/*! -This struct contains fields defining each interface. -*/ +//! This struct contains fields defining each interface. struct DefinitionInterface { string interfacename ; /*! ListOfDefInterface ; -/*! -List of names of interfaces. -*/ +//! List of interface names. typedef sequence 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 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; + ImplType implementationType; + string implname; + string icon; + string constraint; + ListOfDefInterface interfaces; + PathPrefixes paths; + }; + +//! List of component names. typedef sequence ListOfComponents ; -/*! -List of names of computers. -*/ +//! List of computer names. typedef sequence 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; /*! 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 ; /*!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 the 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
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 @@ -165,108 +228,124 @@ List of pair GUI elements (component name, component icone) 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
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
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
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; -/*! -Sets/gets the user name of the component +/*! \brief Get the user name of the component */ readonly attribute string componentusername; -/*! -Defines 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(); } ; };