casacore
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
python
Converters
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: aips2-request@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
//# $Id: PycExcp.cc,v 1.1 2006/10/17 03:33:50 gvandiep Exp $
27
28
#ifndef PYTHON_PYCIMPORT
29
#define PYTHON_PYCIMPORT
30
31
#include <
casacore/python/Converters/PycImport.h
>
32
#include <
casacore/casa/OS/Path.h
>
33
34
#include <boost/python.hpp>
35
36
namespace
casacore {
namespace
python {
37
38
// This function can be used to create a Python class from C++.
39
// <br>It returns the object to be used to create a class instance.
40
// It initializes Python, imports the main module and the given
41
// module, and finally creates the class object.
42
// Before the import it adds the working directory to the Python
43
// module search path, because Boost-Python does not do that.
44
// <br>For example:
45
// <srcblock>
46
// // Create the class object.
47
// boost::python::object pyClass =
48
// casacore::python::PycImport("modulenm", "classnm");
49
// // Register the converters needed.
50
// casacore::python::register_convert_excp();
51
// casacore::python::register_convert_basicdata();
52
// casacore::python::register_convert_casa_valueholder();
53
// casacore::python::register_convert_casa_record();
54
// casacore::python::register_convert_std_vector<Bool>();
55
// casacore::python::register_convert_std_vector<Int>();
56
// casacore::python::register_convert_std_vector<String>();
57
// // Instantiate the Python class object with possible arguments
58
// // for the __init__ function.
59
// boost::python::object classObject = pyClass(arg1, arg2);
60
// // Invoke the 'setup' function in the Python object
61
// boost::python::object result =
62
// classObject.attr("setup")(arg1, arg2, arg3);
63
// // Extract the result (a dict in this case) as a Record.
64
// Record rec = boost::python::extract<Record>(result);
65
// </srcblock>
66
67
boost::python::object
PycImport
(
const
String& moduleName,
68
const
String& className);
69
70
}}
71
72
#endif
PycImport.h
Path.h
casacore::python::PycImport
boost::python::object PycImport(const String &moduleName, const String &className)
This function can be used to create a Python class from C++.
Generated by
1.8.5