Mercurial > pytave
annotate oct-py-util.h @ 364:1470ed26917a
Use pyobject_unwrap_object when an existing PyObject is expected
* pycall.cc (Fpycall): Use pyobject_unwrap_object when argument is an object.
* pyeval.cc (Fpyeval): Use pyobject_unwrap_object on optional argument. Clean
up imports no longer necessary.
* pyeval.cc (Fpyeval): Likewise.
* oct-py-util.cc, oct-py-util.h (pytave::get_builtins_module,
pytave::get_object_from_python): Delete unused functions. Update copyright
notice, file has been completely rewritten.
author | Mike Miller <mtmiller@octave.org> |
---|---|
date | Thu, 25 Aug 2016 12:11:02 -0700 |
parents | b0677c492655 |
children | c4b78e449c62 |
rev | line source |
---|---|
306
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
1 /* |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
2 |
364
1470ed26917a
Use pyobject_unwrap_object when an existing PyObject is expected
Mike Miller <mtmiller@octave.org>
parents:
362
diff
changeset
|
3 Copyright (C) 2016 Mike Miller |
306
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
4 |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
5 This file is part of Pytave. |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
6 |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
7 Pytave is free software; you can redistribute it and/or modify it |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
10 option) any later version. |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
11 |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
12 Pytave is distributed in the hope that it will be useful, but WITHOUT |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
15 for more details. |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
16 |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
18 along with Pytave; see the file COPYING. If not, see |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
20 |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
21 */ |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
22 |
331
cee203ea6245
Rename oct-py-util.cc from pytave_utils.cc
Mike Miller <mtmiller@octave.org>
parents:
306
diff
changeset
|
23 #if ! defined (pytave_oct_py_util_h) |
cee203ea6245
Rename oct-py-util.cc from pytave_utils.cc
Mike Miller <mtmiller@octave.org>
parents:
306
diff
changeset
|
24 #define pytave_oct_py_util_h |
306
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
25 |
364
1470ed26917a
Use pyobject_unwrap_object when an existing PyObject is expected
Mike Miller <mtmiller@octave.org>
parents:
362
diff
changeset
|
26 #include <Python.h> |
1470ed26917a
Use pyobject_unwrap_object when an existing PyObject is expected
Mike Miller <mtmiller@octave.org>
parents:
362
diff
changeset
|
27 #include <stdint.h> |
333
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
28 #include <string> |
306
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
29 |
331
cee203ea6245
Rename oct-py-util.cc from pytave_utils.cc
Mike Miller <mtmiller@octave.org>
parents:
306
diff
changeset
|
30 class octave_value; |
cee203ea6245
Rename oct-py-util.cc from pytave_utils.cc
Mike Miller <mtmiller@octave.org>
parents:
306
diff
changeset
|
31 |
306
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
32 namespace pytave |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
33 { |
331
cee203ea6245
Rename oct-py-util.cc from pytave_utils.cc
Mike Miller <mtmiller@octave.org>
parents:
306
diff
changeset
|
34 |
357
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
35 //! Return a reference to the builtins module. |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
36 //! |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
37 //! @return reference to the builtins module |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
38 PyObject * |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
39 py_builtins_module (); |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
40 |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
41 //! Return a reference to the named function in the given module. |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
42 //! |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
43 //! @param module module to find the function in |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
44 //! @param name name of the function |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
45 //! @return a reference to the function, or a null pointer |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
46 PyObject * |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
47 py_find_function (PyObject *module, const std::string& name); |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
48 |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
49 //! Return a reference to the named function in the given module. |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
50 //! |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
51 //! @param module name of the module to find the function in |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
52 //! @param name name of the function |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
53 //! @return a reference to the function, or a null pointer |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
54 PyObject * |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
55 py_find_function (const std::string& module, const std::string& name); |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
56 |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
57 //! Return a reference to the fully-qualified function name. |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
58 //! |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
59 //! @param name fully-qualified name of the function |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
60 //! @return a reference to the function, or a null pointer |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
61 PyObject * |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
62 py_find_function (const std::string& name); |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
63 |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
64 //! Return a reference to the fully-qualified type name. |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
65 //! |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
66 //! @param name fully-qualified name of the type |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
67 //! @return a reference to the type, or a null pointer |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
68 PyObject * |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
69 py_find_type (const std::string& name); |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
70 |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
71 //! Return a reference to the named module. |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
72 //! |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
73 //! @param name fully-qualified name of the module |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
74 //! @return a reference to the module, or a null pointer |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
75 PyObject * |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
76 py_import_module (const std::string& name); |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
77 |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
78 //! Check whether an object is an instance of a type. |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
79 //! |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
80 //! @param obj Python object |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
81 //! @param type Python type |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
82 //! @return @c true if @a obj is an instance of @a type, @c false otherwise |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
83 bool |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
84 py_isinstance (PyObject *obj, PyObject *type); |
ebd83497ebda
Add utility functions to look up Python modules, functions, and types
Mike Miller <mtmiller@octave.org>
parents:
333
diff
changeset
|
85 |
333
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
86 std::string |
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
87 py_object_class_name (PyObject *obj); |
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
88 |
362
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
89 void |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
90 py_objstore_del (uint64_t key); |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
91 |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
92 PyObject * |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
93 py_objstore_get (uint64_t key); |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
94 |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
95 uint64_t |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
96 py_objstore_put (PyObject *obj); |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
97 |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
98 octave_value |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
99 pyobject_wrap_object (PyObject *obj); |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
100 |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
101 PyObject * |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
102 pyobject_unwrap_object (const octave_value& value); |
b0677c492655
Overhaul Python object storage and wrapping in pyobject
Mike Miller <mtmiller@octave.org>
parents:
357
diff
changeset
|
103 |
333
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
104 bool |
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
105 is_py_kwargs_argument (PyObject *obj); |
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
106 |
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
107 PyObject * |
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
108 update_py_dict (PyObject *dict_orig, PyObject *dict_new); |
96b78e78a235
pycall: add support for keyword arguments from pyargs (fixes issue #45)
Mike Miller <mtmiller@octave.org>
parents:
331
diff
changeset
|
109 |
306
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
110 } |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
111 |
2ecae5c6eeb6
Refactor code, have common functions in pytave_utils
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff
changeset
|
112 #endif |