casacore
Loading...
Searching...
No Matches
PycValueHolder.h
Go to the documentation of this file.
1// # PycValueHolder.h: Class to convert a ValueHolder to/from Python
2// # Copyright (C) 2006
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 PYRAP_PYCVALUEHOLDER_H
27#define PYRAP_PYCVALUEHOLDER_H
28
29// # Includes
30
31// include first to avoid _POSIX_C_SOURCE redefined warnings
32#include <boost/python.hpp>
33#include <casacore/casa/Containers/ValueHolder.h>
34#include <casacore/casa/Utilities/DataType.h>
35
36namespace casacore {
37namespace python {
38
39// <summary>
40// A class to convert a ValueHolder to/from Python objects.
41// </summary>
42
43// <use visibility=export>
44// <reviewed reviewer="" date="" tests="">
45// </reviewed>
46
47// <synopsis>
48// </synopsis>
49
51 static boost::python::object makeobject(ValueHolder const&);
52 static PyObject* convert(ValueHolder const& c) {
53 return boost::python::incref(makeobject(c).ptr());
54 }
55};
56
59 boost::python::converter::registry::push_back(&convertible, &construct,
60 boost::python::type_id<ValueHolder>());
61 }
62
63 // Check if it is a type we can convert.
64 static void* convertible(PyObject* obj_ptr);
65
66 // Constructs a ValueHolder from a Python object.
67 static void construct(PyObject* obj_ptr,
68 boost::python::converter::rvalue_from_python_stage1_data* data);
69
70 // Make a ValueHolder from all possible python data types.
71 static ValueHolder makeValueHolder(PyObject* obj_ptr);
72
73 // Make a vector from a python sequence.
74 static ValueHolder toVector(PyObject* obj_ptr);
75 // Get (and check) the data type in a python sequence.
76 static DataType checkDataType(PyObject* obj_ptr);
77};
78
79// Register the ValueHolder conversion.
81 static void reg();
82 static bool _done;
83};
85
86} // namespace python
87} // namespace casacore
88
89#endif
void register_convert_casa_valueholder()
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
static ValueHolder toVector(PyObject *obj_ptr)
Make a vector from a python sequence.
static ValueHolder makeValueHolder(PyObject *obj_ptr)
Make a ValueHolder from all possible python data types.
static void * convertible(PyObject *obj_ptr)
Check if it is a type we can convert.
static DataType checkDataType(PyObject *obj_ptr)
Get (and check) the data type in a python sequence.
static void construct(PyObject *obj_ptr, boost::python::converter::rvalue_from_python_stage1_data *data)
Constructs a ValueHolder from a Python object.
static PyObject * convert(ValueHolder const &c)
static boost::python::object makeobject(ValueHolder const &)
Register the ValueHolder conversion.