mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2026-08-27 00:26:02 -04:00
[gdb/python] Introduce py_{none,true,false,notimplemented} functions
I came across this code:
...
if (c)
return v;
else
Py_RETURN_NONE;
...
and realized I couldn't easily rewrite it into "return c ? v : ...".
Probably something like this would work:
...
return c ? v : ([] { Py_RETURN_NONE; } ());
...
but it made me wonder if we can get rid of Py_RETURN_NONE.
The only point of it seems to be to increase the reference count on the
Py_None object for older python versions.
Add a refcount-safe wrapper py_none (returning a gdbpy_ref), with the aim of
replacing all uses of Py_RETURN_NONE with "return py_none ().release ()".
Likewise for Py_RETURN_TRUE/Py_RETURN_FALSE/Py_RETURN_NOTIMPLEMENTED.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=34145
This commit is contained in:
parent
776715ea68
commit
b37f2bd246
1 changed files with 31 additions and 0 deletions
|
|
@ -1343,4 +1343,35 @@ protected:
|
|||
extern int eval_python_command (const char *command, int start_symbol,
|
||||
const char *filename = nullptr);
|
||||
|
||||
/* The following four functions are refcount-safe wrappers around
|
||||
Py_RETURN_{NONE,TRUE,FALSE,NOTIMPLEMENTED}. */
|
||||
|
||||
static inline gdbpy_ref<>
|
||||
py_none ()
|
||||
{
|
||||
auto f = [] { Py_RETURN_NONE; };
|
||||
return gdbpy_ref<> (f ());
|
||||
}
|
||||
|
||||
static inline gdbpy_ref<>
|
||||
py_true ()
|
||||
{
|
||||
auto f = [] { Py_RETURN_TRUE; };
|
||||
return gdbpy_ref<> (f ());
|
||||
}
|
||||
|
||||
static inline gdbpy_ref<>
|
||||
py_false ()
|
||||
{
|
||||
auto f = [] { Py_RETURN_FALSE; };
|
||||
return gdbpy_ref<> (f ());
|
||||
}
|
||||
|
||||
static inline gdbpy_ref<>
|
||||
py_notimplemented ()
|
||||
{
|
||||
auto f = [] { Py_RETURN_NOTIMPLEMENTED; };
|
||||
return gdbpy_ref<> (f ());
|
||||
}
|
||||
|
||||
#endif /* GDB_PYTHON_PYTHON_INTERNAL_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue