FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python/test/input_iterator.cpp at develop · elmopl/python · GitHub
elmopl
/
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
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
python
/
test
/
input_iterator.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
48 lines (40 loc) · 1.49 KB
Breadcrumbs
python
/
test
/
input_iterator.cpp
Copy path
File metadata and controls
48 lines (40 loc) · 1.49 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
//
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)
#
include
<
boost/python/module.hpp
>
#
include
<
boost/python/def.hpp
>
#
include
<
boost/python/class.hpp
>
#
include
<
boost/python/iterator.hpp
>
#
include
<
boost/iterator/transform_iterator.hpp
>
#
include
<
list
>
using
namespace
boost
::python
;
typedef
std::list<
int
> list_int;
//
Prove that we can handle InputIterators which return rvalues.
struct
doubler
{
typedef
int
result_type;
int
operator
()(
int
x)
const
{
return
x *
2
; }
};
typedef
boost::transform_iterator<doubler, list_int::iterator> doubling_iterator;
typedef
std::pair<doubling_iterator,doubling_iterator> list_range2;
list_range2
range2
(list_int& x)
{
return
list_range2
(
boost::make_transform_iterator<doubler>(x.
begin
(),
doubler
())
, boost::make_transform_iterator<doubler>(x.
end
(),
doubler
()));
}
//
We do this in a separate module from iterators_ext (iterators.cpp)
//
to work around an MSVC6 linker bug, which causes it to complain
//
about a "duplicate comdat" if the input iterator is instantiated in
//
the same module with the others.
BOOST_PYTHON_MODULE
(input_iterator)
{
def
(
"
range2
"
, &::range2);
class_<list_range2>(
"
list_range2
"
)
//
We can wrap InputIterators which return by-value
.
def
(
"
__iter__
"
,
range
(&list_range2::first, &list_range2::second))
;
}
#
include
"
module_tail.cpp
"
Back
|
FazBrowse Home
|
New Git URL