annotate oct-py-object.h @ 398:3905052ebe1d

maint: sort uses of new header file oct-py-object.h * Makefile.am (PYTAVE_HEADER_FILES): Sort the list. * oct-py-object.h: Add missing #include <Python.h>. * oct-py-util.cc: Sort the include files.
author Mike Miller <mtmiller@octave.org>
date Fri, 28 Apr 2017 09:03:55 -0700
parents fc0fb94161de
children 3a64a336d214
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
397
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
1 /*
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
2
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
3 Copyright (C) 2017 Abhinav Tripathi
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
4
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
5 This file is part of Pytave.
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
6
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
7 Pytave is free software; you can redistribute it and/or modify it
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
10 option) any later version.
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
11
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
12 Pytave is distributed in the hope that it will be useful, but WITHOUT
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
15 for more details.
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
16
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
18 along with Pytave; see the file COPYING. If not, see
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>.
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
20
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
21 */
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
22
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
23 #if ! defined (pytave_oct_py_object_h)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
24 #define pytave_oct_py_object_h
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
25
398
3905052ebe1d maint: sort uses of new header file oct-py-object.h
Mike Miller <mtmiller@octave.org>
parents: 397
diff changeset
26 #include <Python.h>
3905052ebe1d maint: sort uses of new header file oct-py-object.h
Mike Miller <mtmiller@octave.org>
parents: 397
diff changeset
27
397
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
28 namespace pytave
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
29 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
30
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
31 class python_object
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
32 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
33 public:
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
34 python_object (PyObject *obj = 0)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
35 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
36 pyobj = obj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
37 isowned = pyobj != 0;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
38 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
39
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
40 python_object (const python_object& oth)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
41 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
42 pyobj = oth.pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
43 isowned = oth.isowned;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
44 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
45 Py_INCREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
46 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
47
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
48 ~python_object ()
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
49 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
50 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
51 Py_DECREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
52 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
53
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
54 python_object& operator= (const python_object& oth)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
55 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
56 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
57 Py_DECREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
58 pyobj = oth.pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
59 isowned = oth.isowned;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
60 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
61 Py_INCREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
62 return *this;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
63 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
64
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
65 python_object& operator= (PyObject *obj)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
66 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
67 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
68 Py_DECREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
69 pyobj = obj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
70 isowned = pyobj != 0;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
71 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
72 Py_INCREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
73 return *this;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
74 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
75
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
76 operator bool () const
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
77 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
78 return isowned;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
79 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
80
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
81 operator PyObject *()
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
82 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
83 return pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
84 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
85
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
86 bool is_none ()
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
87 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
88 return pyobj && pyobj == Py_None;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
89 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
90
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
91 PyObject *release ()
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
92 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
93 isowned = false;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
94 PyObject *ret = pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
95 pyobj = 0;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
96 return ret;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
97 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
98
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
99 private:
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
100 PyObject *pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
101 bool isowned;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
102 };
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
103
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
104 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
105
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
106 #endif