FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python/include/boost/python/def.hpp at develop · shelltdf/python · GitHub
shelltdf
/
python
Public
forked from
boostorg/python
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
python
/
include
/
boost
/
python
/
def.hpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
114 lines (97 loc) · 3.11 KB
Breadcrumbs
python
/
include
/
boost
/
python
/
def.hpp
Copy path
File metadata and controls
114 lines (97 loc) · 3.11 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//
Copyright David Abrahams 2002.
//
Distributed under the Boost Software License, Version 1.0. (See
//
accompanying file LICENSE_1_0.txt or copy at
//
http://www.boost.org/LICENSE_1_0.txt)
#
ifndef
DEF_DWA200292_HPP
#
define
DEF_DWA200292_HPP
#
include
<
boost/python/detail/prefix.hpp
>
#
include
<
boost/python/object_fwd.hpp
>
#
include
<
boost/python/make_function.hpp
>
#
include
<
boost/python/detail/def_helper.hpp
>
#
include
<
boost/python/detail/overloads_fwd.hpp
>
#
include
<
boost/python/scope.hpp
>
#
include
<
boost/python/signature.hpp
>
#
include
<
boost/python/detail/scope.hpp
>
namespace
boost
{
namespace
python
{
namespace
detail
{
namespace
error
{
//
Compile-time error messages
template
<
bool
>
struct
multiple_functions_passed_to_def
;
template
<>
struct
multiple_functions_passed_to_def
<
false
> {
typedef
char
type; };
}
//
//
def_from_helper --
//
//
Use a def_helper to define a regular wrapped function in the current scope.
template
<
class
F
,
class
Helper
>
void
def_from_helper
(
char
const
* name, F
const
& fn, Helper
const
& helper)
{
//
Must not try to use default implementations except with method definitions.
typedef
typename
error::multiple_functions_passed_to_def<
Helper::has_default_implementation
>::type assertion
BOOST_ATTRIBUTE_UNUSED
;
detail::scope_setattr_doc
(
name,
boost::python::make_function
(
fn
, helper.
policies
()
, helper.
keywords
())
, helper.
doc
()
);
}
//
//
These two overloads discriminate between def() as applied to
//
regular functions and def() as applied to the result of
//
BOOST_PYTHON_FUNCTION_OVERLOADS(). The final argument is used to
//
discriminate.
//
template
<
class
Fn
,
class
A1
>
void
def_maybe_overloads
(
char
const
* name
, Fn fn
,
A1
const
& a1
, ...)
{
detail::def_from_helper
(name, fn, def_helper<
A1
>(a1));
}
template
<
class
StubsT
,
class
SigT
>
void
def_maybe_overloads
(
char
const
* name
, SigT sig
, StubsT
const
& stubs
, detail::overloads_base
const
*)
{
scope current;
detail::define_with_defaults
(
name, stubs, current,
detail::get_signature
(sig));
}
template
<
class
T
>
object
make_function1
(T fn, ...) {
return
make_function
(fn); }
inline
object
make_function1
(object
const
& x, object
const
*) {
return
x; }
}
template
<
class
Fn
>
void
def
(
char
const
* name, Fn fn)
{
detail::scope_setattr_doc
(name,
detail::make_function1
(fn, &fn),
0
);
}
template
<
class
Arg1T
,
class
Arg2T
>
void
def
(
char
const
* name, Arg1T arg1, Arg2T
const
& arg2)
{
detail::def_maybe_overloads
(name, arg1, arg2, &arg2);
}
template
<
class
F
,
class
A1
,
class
A2
>
void
def
(
char
const
* name, F f,
A1
const
& a1,
A2
const
& a2)
{
detail::def_from_helper
(name, f, detail::def_helper<
A1
,
A2
>(a1,a2));
}
template
<
class
F
,
class
A1
,
class
A2
,
class
A3
>
void
def
(
char
const
* name, F f,
A1
const
& a1,
A2
const
& a2,
A3
const
& a3)
{
detail::def_from_helper
(name, f, detail::def_helper<
A1
,
A2
,
A3
>(a1,a2,a3));
}
}}
//
namespace boost::python
#
endif
//
DEF_DWA200292_HPP
Back
|
FazBrowse Home
|
New Git URL