casacore
Loading...
Searching...
No Matches
PycImport.h
Go to the documentation of this file.
1// # PycImport.h: Function to import a module and class in Python
2// # Copyright (C) 2015
3// # Associated Universities, Inc. Washington DC, USA.
4// #
5// # This library is free software; you can redistribute it and/or modify it
6// # under the terms of the GNU Library General Public License as published by
7// # the Free Software Foundation; either version 2 of the License, or (at your
8// # option) any later version.
9// #
10// # This library is distributed in the hope that it will be useful, but WITHOUT
11// # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12// # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13// # License for more details.
14// #
15// # You should have received a copy of the GNU Library General Public License
16// # along with this library; if not, write to the Free Software Foundation,
17// # Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18// #
19// # Correspondence concerning AIPS++ should be addressed as follows:
20// # Internet email: casa-feedback@nrao.edu.
21// # Postal address: AIPS++ Project Office
22// # National Radio Astronomy Observatory
23// # 520 Edgemont Road
24// # Charlottesville, VA 22903-2475 USA
25
26#ifndef PYTHON_PYCIMPORT
27#define PYTHON_PYCIMPORT
28
29#include <casacore/python/Converters/PycImport.h>
30#include <casacore/casa/OS/Path.h>
31
32#include <boost/python.hpp>
33
34namespace casacore {
35namespace python {
36
37// This function can be used to create a Python class from C++.
38// <br>It returns the object to be used to create a class instance.
39// It initializes Python, imports the main module and the given
40// module, and finally creates the class object.
41// Before the import it adds the working directory to the Python
42// module search path, because Boost-Python does not do that.
43// <br>For example:
44// <srcblock>
45// // Create the class object.
46// boost::python::object pyClass =
47// casacore::python::PycImport("modulenm", "classnm");
48// // Register the converters needed.
49// casacore::python::register_convert_excp();
50// casacore::python::register_convert_basicdata();
51// casacore::python::register_convert_casa_valueholder();
52// casacore::python::register_convert_casa_record();
53// casacore::python::register_convert_std_vector<Bool>();
54// casacore::python::register_convert_std_vector<Int>();
55// casacore::python::register_convert_std_vector<String>();
56// // Instantiate the Python class object with possible arguments
57// // for the __init__ function.
58// boost::python::object classObject = pyClass(arg1, arg2);
59// // Invoke the 'setup' function in the Python object
60// boost::python::object result =
61// classObject.attr("setup")(arg1, arg2, arg3);
62// // Extract the result (a dict in this case) as a Record.
63// Record rec = boost::python::extract<Record>(result);
64// </srcblock>
65
66boost::python::object PycImport(const String& moduleName, const String& className);
67
68} // namespace python
69} // namespace casacore
70
71#endif
String: the storage and methods of handling collections of characters.
Definition String.h:355
boost::python::object PycImport(const String &moduleName, const String &className)
This function can be used to create a Python class from C++.
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28