Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
pybind11
Commits
984c7624
Commit
984c7624
authored
Aug 29, 2016
by
Ivan Smirnov
Browse files
Use handle::is_none() instead of raw ptrs
parent
f5e8b6d9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
13 deletions
+13
-13
include/pybind11/cast.h
include/pybind11/cast.h
+10
-10
include/pybind11/functional.h
include/pybind11/functional.h
+2
-2
include/pybind11/pybind11.h
include/pybind11/pybind11.h
+1
-1
No files found.
include/pybind11/cast.h
View file @
984c7624
...
...
@@ -155,7 +155,7 @@ public:
PYBIND11_NOINLINE
bool
load
(
handle
src
,
bool
convert
)
{
if
(
!
src
||
!
typeinfo
)
return
false
;
if
(
src
.
ptr
()
==
Py_N
one
)
{
if
(
src
.
is_n
one
()
)
{
value
=
nullptr
;
return
true
;
}
else
if
(
PyType_IsSubtype
(
Py_TYPE
(
src
.
ptr
()),
typeinfo
->
type
))
{
...
...
@@ -180,7 +180,7 @@ public:
const
void
*
existing_holder
=
nullptr
)
{
void
*
src
=
const_cast
<
void
*>
(
_src
);
if
(
src
==
nullptr
)
return
handle
(
Py_None
).
inc_ref
();
return
none
();
auto
&
internals
=
get_internals
();
...
...
@@ -408,7 +408,7 @@ template <> class type_caster<void_type> {
public:
bool
load
(
handle
,
bool
)
{
return
false
;
}
static
handle
cast
(
void_type
,
return_value_policy
/* policy */
,
handle
/* parent */
)
{
return
handle
(
Py_None
).
inc_ref
();
return
none
();
}
PYBIND11_TYPE_CASTER
(
void_type
,
_
(
"None"
));
};
...
...
@@ -420,7 +420,7 @@ public:
bool
load
(
handle
h
,
bool
)
{
if
(
!
h
)
{
return
false
;
}
else
if
(
h
.
ptr
()
==
Py_N
one
)
{
}
else
if
(
h
.
is_n
one
()
)
{
value
=
nullptr
;
return
true
;
}
...
...
@@ -446,7 +446,7 @@ public:
if
(
ptr
)
return
capsule
(
ptr
).
release
();
else
return
handle
(
Py_None
).
inc_ref
();
return
none
();
}
template
<
typename
T
>
using
cast_op_type
=
void
*&
;
...
...
@@ -558,12 +558,12 @@ protected:
template
<
>
class
type_caster
<
char
>
:
public
type_caster
<
std
::
string
>
{
public:
bool
load
(
handle
src
,
bool
convert
)
{
if
(
src
.
ptr
()
==
Py_N
one
)
return
true
;
if
(
src
.
is_n
one
()
)
return
true
;
return
type_caster
<
std
::
string
>::
load
(
src
,
convert
);
}
static
handle
cast
(
const
char
*
src
,
return_value_policy
/* policy */
,
handle
/* parent */
)
{
if
(
src
==
nullptr
)
return
handle
(
Py_None
).
inc_ref
();
if
(
src
==
nullptr
)
return
none
();
return
PyUnicode_FromString
(
src
);
}
...
...
@@ -581,12 +581,12 @@ public:
template
<
>
class
type_caster
<
wchar_t
>
:
public
type_caster
<
std
::
wstring
>
{
public:
bool
load
(
handle
src
,
bool
convert
)
{
if
(
src
.
ptr
()
==
Py_N
one
)
return
true
;
if
(
src
.
is_n
one
()
)
return
true
;
return
type_caster
<
std
::
wstring
>::
load
(
src
,
convert
);
}
static
handle
cast
(
const
wchar_t
*
src
,
return_value_policy
/* policy */
,
handle
/* parent */
)
{
if
(
src
==
nullptr
)
return
handle
(
Py_None
).
inc_ref
();
if
(
src
==
nullptr
)
return
none
();
return
PyUnicode_FromWideChar
(
src
,
(
ssize_t
)
wcslen
(
src
));
}
...
...
@@ -757,7 +757,7 @@ public:
bool
load
(
handle
src
,
bool
convert
)
{
if
(
!
src
||
!
typeinfo
)
{
return
false
;
}
else
if
(
src
.
ptr
()
==
Py_N
one
)
{
}
else
if
(
src
.
is_n
one
()
)
{
value
=
nullptr
;
return
true
;
}
else
if
(
PyType_IsSubtype
(
Py_TYPE
(
src
.
ptr
()),
typeinfo
->
type
))
{
...
...
include/pybind11/functional.h
View file @
984c7624
...
...
@@ -20,7 +20,7 @@ template <typename Return, typename... Args> struct type_caster<std::function<Re
typedef
typename
std
::
conditional
<
std
::
is_same
<
Return
,
void
>::
value
,
void_type
,
Return
>::
type
retval_type
;
public:
bool
load
(
handle
src_
,
bool
)
{
if
(
src_
.
ptr
()
==
Py_N
one
)
if
(
src_
.
is_n
one
()
)
return
true
;
src_
=
detail
::
get_function
(
src_
);
...
...
@@ -62,7 +62,7 @@ public:
template
<
typename
Func
>
static
handle
cast
(
Func
&&
f_
,
return_value_policy
policy
,
handle
/* parent */
)
{
if
(
!
f_
)
return
handle
(
Py_None
).
inc_ref
();
return
none
();
auto
result
=
f_
.
template
target
<
Return
(
*
)(
Args
...)>();
if
(
result
)
...
...
include/pybind11/pybind11.h
View file @
984c7624
...
...
@@ -1143,7 +1143,7 @@ inline void keep_alive_impl(handle nurse, handle patient) {
if
(
!
nurse
||
!
patient
)
pybind11_fail
(
"Could not activate keep_alive!"
);
if
(
patient
.
ptr
()
==
Py_N
one
||
nurse
.
ptr
()
==
Py_N
one
)
if
(
patient
.
is_n
one
()
||
nurse
.
is_n
one
()
)
return
;
/* Nothing to keep alive or nothing to be kept alive by */
cpp_function
disable_lifesupport
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment