__lib__dir__ = "lib64"
else:
__lib__dir__ = "lib"
- return get_lib_dir()
+ return __lib__dir__
# -----------------------------------------------------------------------------
__lib__dir__ = "lib64"
else:
__lib__dir__ = "lib"
- return get_lib_dir()
+ return __lib__dir__
# -----------------------------------------------------------------------------
AC_DEFUN([CHECK_OPENMPI],[
AC_ARG_WITH(openmpi,
- AC_HELP_STRING([--with-openmpi],[root directory path of openmpi installation]),
+ AC_HELP_STRING([--with-openmpi=DIR],[root directory path of openmpi installation]),
WITHOPENMPI="yes",WITHOPENMPI="no")
MPI_INCLUDES=""
import sys
import string
-import omnipatch # PAL10310
-
from omniORB import CORBA, PortableServer
import SALOMEDS
import Engines, Engines__POA
#ifndef _BASIC_PORT_FACTORY_HXX_
#define _BASIC_PORT_FACTORY_HXX_
+#include "port_factory.hxx"
#include "data_short_port_provides.hxx"
#include "data_short_port_uses.hxx"
* to be used by Superv_Component_i.
* It builds basic ports.
*/
-class basic_port_factory
+class basic_port_factory :
+ public port_factory
{
public:
basic_port_factory();
using namespace std;
data_short_port_uses::data_short_port_uses() {
- _my_port = Ports::Data_Short_Port::_nil();
_my_ports = NULL;
}
return "IDL:Ports/Data_Short_Port:1.0";
}
-bool
-data_short_port_uses::set_port(Ports::Port_ptr port) {
- _my_port = Ports::Data_Short_Port::_narrow(port);
-}
-
void
data_short_port_uses::put(CORBA::Short data) {
// if (!CORBA::is_nil(_my_port))
*/
virtual const char * get_repository_id();
- /*!
- * \warning deprecated
- */
- virtual bool set_port(Ports::Port_ptr port);
-
/*!
* This method is used by the component to send
* a short value to all the provides ports connected.
const Engines::DSC::Message message);
private :
- Ports::Data_Short_Port_ptr _my_port;
Engines::DSC::uses_port * _my_ports;
};
#ifndef _CALCIUM_PORT_FACTORY_HXX_
#define _CALCIUM_PORT_FACTORY_HXX_
+#include "port_factory.hxx"
#include "uses_port.hxx"
#include "provides_port.hxx"
#include <string>
using namespace std;
-class calcium_port_factory
+class calcium_port_factory :
+ public port_factory
{
public:
calcium_port_factory();
virtual ~GenericUsesPort();
virtual const char * get_repository_id();
- virtual bool set_port(Ports::Port_ptr port);
template <typename TimeType,typename TagType>
void put(CorbaInDataType data, TimeType time, TagType tag);
}
-template <typename DataManipulator,typename CorbaPortType, char * repositoryName, typename UsesPort >
-bool
-GenericUsesPort< DataManipulator,CorbaPortType, repositoryName, UsesPort >::set_port(Ports::Port_ptr port) {
- if (_my_ports) {
- size_t n = _my_ports->length()+1;
- _my_ports->length(n);
- (*_my_ports)[n]=CorbaPortType::_narrow(port);
- return true;
- } else {
- // Vérifier si port is_nil
- _my_ports = new Engines::DSC::uses_port();
- _my_ports->length(1);
- (*_my_ports)[0]=CorbaPortType::_narrow(port);
- return true;
- }
- return false;
-}
-
template <typename DataManipulator,typename CorbaPortType, char * repositoryName, typename UsesPort >
template <typename TimeType,typename TagType>
void
#ifndef _PALM_PORT_FACTORY_HXX_
#define _PALM_PORT_FACTORY_HXX_
+#include "port_factory.hxx"
#include "uses_port.hxx"
#include "provides_port.hxx"
#include <string>
using namespace std;
-class palm_port_factory
+class palm_port_factory :
+ public port_factory
{
public:
palm_port_factory();
uses_port.hxx \
provides_port.hxx \
Superv_Component_i.hxx \
- DSC_Exception.hxx
+ DSC_Exception.hxx \
+ port_factory.hxx
#
# ===============================================================
#ifdef _DEBUG_
std::cout << "--Superv_Component_i : MARK 1 ---- " << instanceName << "----" << std::endl;
#endif
- _my_basic_factory = new basic_port_factory();
- _my_palm_factory = new palm_port_factory();
- _my_calcium_factory = new calcium_port_factory();
+ register_factory("BASIC", new basic_port_factory());
+ register_factory("PALM", new palm_port_factory());
+ register_factory("CALCIUM", new calcium_port_factory());
}
-Superv_Component_i::~Superv_Component_i() {
- delete _my_basic_factory;
+Superv_Component_i::~Superv_Component_i()
+{
+ factory_map_t::iterator begin = _factory_map.begin();
+ factory_map_t::iterator end = _factory_map.end();
+ for(;begin!=end;begin++)
+ {
+ delete begin->second;
+ }
+}
+
+void
+Superv_Component_i::register_factory(const std::string & factory_name,
+ port_factory * factory_ptr)
+{
+ factory_map_t::iterator it = _factory_map.find(factory_name);
+
+ if (it == _factory_map.end() )
+ {
+ _factory_map[factory_name] = factory_ptr;
+ }
+}
+
+port_factory *
+Superv_Component_i::get_factory(const std::string & factory_name)
+{
+ port_factory * rtn_factory = NULL;
+ factory_map_t::iterator it = _factory_map.find(factory_name);
+
+ if (it != _factory_map.end() )
+ {
+ rtn_factory = _factory_map[factory_name];
+ }
+
+ return rtn_factory;
}
provides_port *
-Superv_Component_i::create_provides_data_port(const char* port_fab_type)
+Superv_Component_i::create_provides_data_port(const std::string& port_fab_type)
throw (BadFabType)
{
- assert(port_fab_type);
-
provides_port * rtn_port = NULL;
- string the_type(port_fab_type);
+ std::string factory_name;
+ std::string type_name;
int search_result;
- search_result = the_type.find("BASIC_");
- if (search_result == 0) {
- rtn_port = _my_basic_factory->create_data_servant(the_type.substr(search_result+6,
- the_type.length()));
- }
- search_result = the_type.find("PALM_");
- if (search_result == 0) {
- rtn_port = _my_palm_factory->create_data_servant(the_type.substr(search_result+5,
- the_type.length()));
- }
+ search_result = port_fab_type.find("_");
+ factory_name = port_fab_type.substr(0,search_result);
+ type_name = port_fab_type.substr(search_result+1, port_fab_type.length());
- search_result = the_type.find("CALCIUM_");
- if (search_result == 0) {
- rtn_port = _my_calcium_factory->create_data_servant(the_type.substr(search_result+8, the_type.length()));
+ port_factory * factory = get_factory(factory_name);
+ if (factory) {
+ rtn_port = factory->create_data_servant(type_name);
}
if (rtn_port == NULL)
}
uses_port *
-Superv_Component_i::create_uses_data_port(const char* port_fab_type)
+Superv_Component_i::create_uses_data_port(const std::string& port_fab_type)
throw (BadFabType)
{
- assert(port_fab_type);
-
uses_port * rtn_proxy = NULL;
- string the_type(port_fab_type);
+ std::string factory_name;
+ std::string type_name;
int search_result;
- search_result = the_type.find("BASIC_");
- if (search_result == 0) {
- rtn_proxy = _my_basic_factory->create_data_proxy(the_type.substr(search_result+6,
- the_type.length()));
- }
-
- search_result = the_type.find("CALCIUM_");
- if (search_result == 0) {
-#ifdef _DEBUG_
- std::cout << "---- Superv_Component_i::create_uses_data_port : MARK 1 ---- " << the_type.substr(search_result+8, the_type.length()) << "----" << std::endl;
-#endif
- rtn_proxy = _my_calcium_factory->create_data_proxy(the_type.substr(search_result+8, the_type.length()));
+ search_result = port_fab_type.find("_");
+ factory_name = port_fab_type.substr(0,search_result);
+ type_name = port_fab_type.substr(search_result+1, port_fab_type.length());
+
+ port_factory * factory = get_factory(factory_name);
+ if (factory) {
+ rtn_proxy = factory->create_data_proxy(type_name);
}
if (rtn_proxy == NULL)
#include "base_port.hxx"
#include "uses_port.hxx"
#include "provides_port.hxx"
+#include "port_factory.hxx"
-// Les différentes fabriques de ports
+// default ports factories on the Kernel
#include "basic_port_factory.hxx"
#include "palm_port_factory.hxx"
#include "calcium_port_factory.hxx"
{return NULL;}
/*!
- * This methode permits to create a provides port provided by the platform.
+ * This method permits to create a provides port provided by the platform.
* (See documentation of DSC for knoing these ports).
*
*
*
* \note It's user repsonsability to destroy the provides port.
*/
- virtual provides_port * create_provides_data_port(const char* port_fab_type)
+ virtual provides_port * create_provides_data_port(const std::string& port_fab_type)
throw (BadFabType);
/*!
- * This methode permits to create a uses port provided by the platform.
+ * This method permits to create a uses port provided by the platform.
* (See documentation of DSC for knoing these ports).
*
*
*
* \note It's user repsonsability to destroy the uses port.
*/
- virtual uses_port * create_uses_data_port(const char* port_fab_type)
+ virtual uses_port * create_uses_data_port(const std::string& port_fab_type)
throw (BadFabType);
/*!
const Engines::DSC::Message message);
-private:
+ /*!
+ * Add a factory the component. If the factory_name is already
+ * used, the new library is not added.
+ *
+ * \param factory_name name of the factory (used by Superv_Component_i::create_provides_data_port
+ * and Superv_Component_i::create_uses_data_port)
+ * \param factory_ptr factory pointer (destroyed by the component)
+ */
+ virtual void register_factory(const std::string & factory_name,
+ port_factory * factory_ptr);
+
+ /*!
+ * Get a factory from the component.
+ *
+ * \param factory_name name of the factory.
+ * \return factory pointer, NULL if the factory doesn't exist.
+ */
+ virtual port_factory * get_factory(const std::string & factory_name);
- // Fabrics
- basic_port_factory * _my_basic_factory;
- palm_port_factory * _my_palm_factory;
- calcium_port_factory * _my_calcium_factory;
+private:
+ // Factory map
+ typedef std::map<std::string, port_factory*> factory_map_t;
+ factory_map_t _factory_map;
/*-------------------------------------------------*/
// A Superv_Component port.
--- /dev/null
+// Copyright (C) 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.
+//
+// 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 : port_factory.hxx
+// Author : André RIBES (EDF)
+// Module : KERNEL
+
+#ifndef _PORT_FACTORY_HXX
+#define _PORT_FACTORY_HXX
+
+#include "base_port.hxx"
+#include "uses_port.hxx"
+#include "provides_port.hxx"
+
+#include <string>
+
+/*! \class port_factory
+ * \brief This class is an abstract for all the DSC ports factories that have to be
+ * registered into the component.
+ */
+class port_factory {
+ public:
+ virtual ~port_factory() {}
+
+ /*!
+ * This method creates a provides port.
+ *
+ * \param type port's type.
+ * \return a pointer of the provides port.
+ */
+ virtual provides_port * create_data_servant(std::string type) = 0;
+
+ /*!
+ * This method creates a uses port.
+ *
+ * \param type port's type.
+ * \return a pointer of the uses port.
+ */
+ virtual uses_port * create_data_proxy(std::string type) = 0;
+};
+
+#endif
+
*/
virtual const char * get_repository_id() = 0;
- /*!
- * DEPRECATED --- WILL BE REMOVED
- * It was used when uses port where not multiple.
- * It's an abstract method.
- *
- */
- virtual bool set_port(Ports::Port_ptr port) = 0;
-
/*!
* This method is the uses port's callback to be aware of
* connections states.
module salome gives access to Salome ressources:
variables:
- salome:orb : CORBA
+ salome.orb : CORBA
salome.naming_service : instance of naming Service class
methods:
Resolve(name) : find a CORBA object (ior) by its pathname
-help = SalomeDoc('''
+Help = SalomeDoc('''
Availables modules:
salome : gives access to Salome ressources
geompy : encapsulation of GEOM Engine methods
supervision : gives access to SuperVision Engine
-To obtain specific help on a module "truc", type: help.truc()
+To obtain specific help on a module "truc", type: Help.truc()
To run an example, type: import example3
''')
# Author : Paul RASCLE, EDF
# Module : SALOME
# $Header$
+"""
+Module salome gives access to Salome ressources.
+
+variables:
+
+ salome.orb : CORBA
+ salome.naming_service : instance of naming Service class
+ methods:
+ Resolve(name) : find a CORBA object (ior) by its pathname
+ Register(name) : register a CORBA object under a pathname
+ salome.lcc : instance of lifeCycleCORBA class
+ methods:
+ FindOrLoadComponent(server,name) :
+ obtain an Engine (CORBA object)
+ or launch the Engine if not found,
+ with a Server name and an Engine name
+ salome.sg
+ methods:
+ updateObjBrowser(bool):
+ getActiveStudyId():
+ getActiveStudyName():
+
+ SelectedCount(): returns number of selected objects
+ getSelected(i): returns entry of selected object number i
+ getAllSelected(): returns list of entry of selected objects
+ AddIObject(Entry): select an existing Interactive object
+ RemoveIObject(Entry): remove object from selection
+ ClearIObjects(): clear selection
+
+ Display(*Entry):
+ DisplayOnly(Entry):
+ Erase(Entry):
+ DisplayAll():
+ EraseAll():
+
+ IDToObject(Entry): returns CORBA reference from entry
+
+ salome.myStudyName : active Study Name
+ salome.myStudyId : active Study Id
+ salome.myStudy : the active Study itself (CORBA ior)
+ methods : defined in SALOMEDS.idl
+
+"""
from salome_kernel import *
from salome_study import *
from salome_iapp import *
+orb, lcc, naming_service, cm,sg=None,None,None,None,None
+myStudyManager, myStudyId, myStudy, myStudyName=None,None,None,None
+
salome_initial=1
def salome_init(theStudyId=0,embedded=0):
"""
============================================
"""
raise
+
+#to expose all objects to pydoc
+__all__=dir()
salome_iapp_initial = 1
-class SalomeOutsideGUI:
+class SalomeOutsideGUI(object):
"""
Provides a replacement for class SalomeGUI outside GUI process.
Do almost nothing
#--------------------------------------------------------------------------
def DumpStudy(Study):
+ """
+ Dump a study, given the ior
+ """
itcomp = Study.NewComponentIterator()
while itcomp.More():
SC = itcomp.Value()
from SALOME_utilities import *
#=============================================================================
-class SALOME_NamingServicePy_i:
+class SALOME_NamingServicePy_i(object):
_orb = None
_root_context=None
_current_context=None
if steps == 0 and self._root_context is None:
MESSAGE ( "Name Service Reference is invalid" )
sys.exit(1)
+
#-------------------------------------------------------------------------
+
def Register(self,ObjRef, Path):
+ """ ns.Register(object,pathname )
+
+ register a CORBA object under a pathname
+ """
+
MESSAGE ( "SALOME_NamingServicePy_i::Register" )
_not_exist = 0
path_list = list(Path)
except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
MESSAGE ( "Register : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
-
#-------------------------------------------------------------------------
+
def Resolve(self, Path):
+ """ ns.Resolve(pathname) -> object
+
+ find a CORBA object (ior) by its pathname
+ """
#MESSAGE ( "SALOME_NamingServicePy_i::Resolve" )
path_list = list(Path)
if path_list[0]=='/':
return self._obj
-
#-------------------------------------------------------------------------
+
def Create_Directory(self,ObjRef, Path):
MESSAGE ( "SALOME_NamingServicePy_i::Create_Directory" )
_not_exist = 0
bin_PROGRAMS = TestContainer TestLogger
TestContainer_SOURCES = TestContainer.cxx
TestContainer_CPPFLAGS = $(COMMON_CPPFLAGS)
-TestContainer_LDADD = $(COMMON_LIBS) libSalomeTestComponentEngine.la
+TestContainer_LDADD = libSalomeTestComponentEngine.la
TestLogger_SOURCES = TestLogger.cxx
TestLogger_CPPFLAGS = $(COMMON_CPPFLAGS)
-TestLogger_LDADD = $(COMMON_LIBS) libSalomeTestComponentEngine.la
+TestLogger_LDADD = libSalomeTestComponentEngine.la