FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python/test/ben_scott1.cpp at develop · XLTools/python · GitHub
XLTools
/
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
/
ben_scott1.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
54 lines (43 loc) · 1.17 KB
Breadcrumbs
python
/
test
/
ben_scott1.cpp
Copy path
File metadata and controls
54 lines (43 loc) · 1.17 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
//
Copyright David Abrahams 2004. 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.hpp
>
#
include
<
iostream
>
using
namespace
boost
::python
;
using
namespace
boost
;
struct
Product
{};
typedef
shared_ptr<Product> ProductPtr;
struct
Creator
{
virtual
~Creator
() {}
virtual
ProductPtr
create
() = 0;
};
struct
Factory
{
void
reg
(Creator* c) {
mC
= c; }
ProductPtr
create
()
{
std::cout <<
"
Name:
"
<< (
typeid
(*
mC
)).
name
() << std::endl;
return
mC
->
create
();
}
private:
Creator*
mC
;
};
struct
CreatorWrap
:
public
Creator
{
CreatorWrap
(PyObject* self) :
mSelf
(self) {}
ProductPtr
create
() {
return
call_method<ProductPtr>(
mSelf
,
"
create
"
); }
PyObject*
mSelf
;
};
BOOST_PYTHON_MODULE
(ben_scott1_ext)
{
class_<Product, ProductPtr>(
"
Product
"
);
class_<Creator, CreatorWrap, noncopyable>(
"
Creator
"
)
.
def
(
"
create
"
, &CreatorWrap::create)
;
class_<Factory>(
"
Factory
"
)
.
def
(
"
reg
"
, &Factory::reg, with_custodian_and_ward<
1
,
2
>())
.
def
(
"
create
"
, &Factory::create)
;
}
#
include
"
../test/module_tail.cpp
"
Back
|
FazBrowse Home
|
New Git URL