mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 13:15:12 +00:00
more code style checks in Travis CI :)
This commit is contained in:
parent
fe40dfe67d
commit
cc4efe69c2
@ -27,25 +27,23 @@ public:
|
||||
if (!src_ || !PyCallable_Check(src_.ptr()))
|
||||
return false;
|
||||
|
||||
{
|
||||
/*
|
||||
When passing a C++ function as an argument to another C++
|
||||
function via Python, every function call would normally involve
|
||||
a full C++ -> Python -> C++ roundtrip, which can be prohibitive.
|
||||
Here, we try to at least detect the case where the function is
|
||||
stateless (i.e. function pointer or lambda function without
|
||||
captured variables), in which case the roundtrip can be avoided.
|
||||
*/
|
||||
if (PyCFunction_Check(src_.ptr())) {
|
||||
capsule c(PyCFunction_GetSelf(src_.ptr()), true);
|
||||
auto rec = (function_record *) c;
|
||||
using FunctionType = Return (*) (Args...);
|
||||
/*
|
||||
When passing a C++ function as an argument to another C++
|
||||
function via Python, every function call would normally involve
|
||||
a full C++ -> Python -> C++ roundtrip, which can be prohibitive.
|
||||
Here, we try to at least detect the case where the function is
|
||||
stateless (i.e. function pointer or lambda function without
|
||||
captured variables), in which case the roundtrip can be avoided.
|
||||
*/
|
||||
if (PyCFunction_Check(src_.ptr())) {
|
||||
capsule c(PyCFunction_GetSelf(src_.ptr()), true);
|
||||
auto rec = (function_record *) c;
|
||||
using FunctionType = Return (*) (Args...);
|
||||
|
||||
if (rec && rec->is_stateless && rec->data[1] == &typeid(FunctionType)) {
|
||||
struct capture { FunctionType f; };
|
||||
value = ((capture *) &rec->data)->f;
|
||||
return true;
|
||||
}
|
||||
if (rec && rec->is_stateless && rec->data[1] == &typeid(FunctionType)) {
|
||||
struct capture { FunctionType f; };
|
||||
value = ((capture *) &rec->data)->f;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -693,8 +693,8 @@ struct field_descriptor {
|
||||
inline PYBIND11_NOINLINE void register_structured_dtype(
|
||||
const std::initializer_list<field_descriptor>& fields,
|
||||
const std::type_info& tinfo, size_t itemsize,
|
||||
bool (*direct_converter)(PyObject *, void *&))
|
||||
{
|
||||
bool (*direct_converter)(PyObject *, void *&)) {
|
||||
|
||||
auto& numpy_internals = get_numpy_internals();
|
||||
if (numpy_internals.get_type_info(tinfo, false))
|
||||
pybind11_fail("NumPy: dtype is already registered");
|
||||
|
@ -39,6 +39,19 @@ while read -u 3 f; do
|
||||
echo " $f"
|
||||
done
|
||||
|
||||
found=
|
||||
# The mt=41 sets a red background for matched tabs:
|
||||
exec 3< <(GREP_COLORS='mt=41' grep '^\s*{\s*$' include/ docs/*.rst -rn --color=always)
|
||||
while read -u 3 f; do
|
||||
if [ -z "$found" ]; then
|
||||
echo -e '\e[31m\e[01mError: braces should occur on the same line as the if/while/.. statement. Found issues in the following files: \e[0m'
|
||||
found=1
|
||||
errors=1
|
||||
fi
|
||||
|
||||
echo " $f"
|
||||
done
|
||||
|
||||
found=
|
||||
exec 3< <(grep '\<\(if\|for\|while\)(\|){' include/ tests/*.{cpp,py,h} -rn --color=always)
|
||||
while read -u 3 line; do
|
||||
|
Loading…
Reference in New Issue
Block a user