annotate oct-py-object.h @ 403:3644df6564bc

maint: use C++11 nullptr rather than 0 or NULL * __py_struct_from_dict__.cc, oct-py-eval.cc, oct-py-eval.h, oct-py-object.h, oct-py-types.cc, oct-py-util.cc, pycall.cc, pyeval.cc, pyexec.cc: Use C++11 nullptr rather than 0 or NULL.
author Mike Miller <mtmiller@octave.org>
date Fri, 28 Apr 2017 14:19:49 -0700
parents 3a64a336d214
children
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)
401
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
24 #define pytave_oct_py_object_h 1
397
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:
403
3644df6564bc maint: use C++11 nullptr rather than 0 or NULL
Mike Miller <mtmiller@octave.org>
parents: 401
diff changeset
34 python_object (PyObject *obj = nullptr)
397
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;
403
3644df6564bc maint: use C++11 nullptr rather than 0 or NULL
Mike Miller <mtmiller@octave.org>
parents: 401
diff changeset
37 isowned = pyobj != nullptr;
397
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
401
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
54 python_object&
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
55 operator = (const python_object& oth)
397
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
56 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
57 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
58 Py_DECREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
59 pyobj = oth.pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
60 isowned = oth.isowned;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
61 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
62 Py_INCREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
63 return *this;
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
401
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
66 python_object&
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
67 operator = (PyObject *obj)
397
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
68 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
69 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
70 Py_DECREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
71 pyobj = obj;
403
3644df6564bc maint: use C++11 nullptr rather than 0 or NULL
Mike Miller <mtmiller@octave.org>
parents: 401
diff changeset
72 isowned = pyobj != nullptr;
397
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
73 if (isowned)
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
74 Py_INCREF (pyobj);
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
75 return *this;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
76 }
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 operator bool () const
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 return isowned;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
81 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
82
401
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
83 operator PyObject * ()
397
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 return pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
86 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
87
401
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
88 bool
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
89 is_none () const
397
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 return pyobj && pyobj == Py_None;
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
401
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
94 PyObject *
3a64a336d214 maint: fix coding style on method declarations
Mike Miller <mtmiller@octave.org>
parents: 398
diff changeset
95 release ()
397
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
96 {
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
97 isowned = false;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
98 PyObject *ret = pyobj;
403
3644df6564bc maint: use C++11 nullptr rather than 0 or NULL
Mike Miller <mtmiller@octave.org>
parents: 401
diff changeset
99 pyobj = nullptr;
397
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
100 return ret;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
101 }
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 private:
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
104 PyObject *pyobj;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
105 bool isowned;
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
106 };
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
107
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
108 }
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
109
fc0fb94161de Add a wrapper for PyObject pointers (fixes issue #81)
Abhinav Tripathi <genuinelucifer@gmail.com>
parents:
diff changeset
110 #endif