Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
cython
Commits
9564b99f
Commit
9564b99f
authored
Jun 16, 2018
by
scoder
Committed by
GitHub
Jun 16, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2324 from gabrieldemarmiesse/update_cpp_examples
Update cpp examples
parents
e3651b15
d41a072d
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
319 additions
and
176 deletions
+319
-176
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.cpp
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.cpp
+40
-0
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.h
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.h
+17
-0
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.pxd
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.pxd
+12
-0
docs/examples/userguide/wrapping_CPlusPlus/cython_usage.pyx
docs/examples/userguide/wrapping_CPlusPlus/cython_usage.pyx
+12
-0
docs/examples/userguide/wrapping_CPlusPlus/rect.pyx
docs/examples/userguide/wrapping_CPlusPlus/rect.pyx
+23
-0
docs/examples/userguide/wrapping_CPlusPlus/rect_ptr.pyx
docs/examples/userguide/wrapping_CPlusPlus/rect_ptr.pyx
+12
-0
docs/examples/userguide/wrapping_CPlusPlus/rect_with_attributes.pyx
...les/userguide/wrapping_CPlusPlus/rect_with_attributes.pyx
+52
-0
docs/examples/userguide/wrapping_CPlusPlus/setup.py
docs/examples/userguide/wrapping_CPlusPlus/setup.py
+5
-0
docs/src/userguide/wrapping_CPlusPlus.rst
docs/src/userguide/wrapping_CPlusPlus.rst
+146
-176
No files found.
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.cpp
0 → 100644
View file @
9564b99f
#include <iostream>
#include "Rectangle.h"
namespace
shapes
{
// Default constructor
Rectangle
::
Rectangle
()
{}
// Overloaded constructor
Rectangle
::
Rectangle
(
int
x0
,
int
y0
,
int
x1
,
int
y1
)
{
this
->
x0
=
x0
;
this
->
y0
=
y0
;
this
->
x1
=
x1
;
this
->
y1
=
y1
;
}
// Destructor
Rectangle
::~
Rectangle
()
{}
// Return the area of the rectangle
int
Rectangle
::
getArea
()
{
return
(
this
->
x1
-
this
->
x0
)
*
(
this
->
y1
-
this
->
y0
);
}
// Get the size of the rectangle.
// Put the size in the pointer args
void
Rectangle
::
getSize
(
int
*
width
,
int
*
height
)
{
(
*
width
)
=
x1
-
x0
;
(
*
height
)
=
y1
-
y0
;
}
// Move the rectangle by dx dy
void
Rectangle
::
move
(
int
dx
,
int
dy
)
{
this
->
x0
+=
dx
;
this
->
y0
+=
dy
;
this
->
x1
+=
dx
;
this
->
y1
+=
dy
;
}
}
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.h
0 → 100644
View file @
9564b99f
#ifndef RECTANGLE_H
#define RECTANGLE_H
namespace
shapes
{
class
Rectangle
{
public:
int
x0
,
y0
,
x1
,
y1
;
Rectangle
();
Rectangle
(
int
x0
,
int
y0
,
int
x1
,
int
y1
);
~
Rectangle
();
int
getArea
();
void
getSize
(
int
*
width
,
int
*
height
);
void
move
(
int
dx
,
int
dy
);
};
}
#endif
docs/examples/userguide/wrapping_CPlusPlus/Rectangle.pxd
0 → 100644
View file @
9564b99f
cdef
extern
from
"Rectangle.cpp"
:
pass
# Decalre the class with cdef
cdef
extern
from
"Rectangle.h"
namespace
"shapes"
:
cdef
cppclass
Rectangle
:
Rectangle
()
except
+
Rectangle
(
int
,
int
,
int
,
int
)
except
+
int
x0
,
y0
,
x1
,
y1
int
getArea
()
void
getSize
(
int
*
width
,
int
*
height
)
void
move
(
int
,
int
)
docs/examples/userguide/wrapping_CPlusPlus/cython_usage.pyx
0 → 100644
View file @
9564b99f
# distutils: language = c++
from
Rectangle
cimport
Rectangle
def
main
():
rec_ptr
=
new
Rectangle
(
1
,
2
,
3
,
4
)
# Instantiate a Rectangle object on the heap
try
:
rec_area
=
rec_ptr
.
getArea
()
finally
:
del
rec_ptr
# delete heap allocated object
cdef
Rectangle
rec_stack
# Instantiate a Rectangle object on the stack
docs/examples/userguide/wrapping_CPlusPlus/rect.pyx
0 → 100644
View file @
9564b99f
# distutils: language = c++
from
Rectangle
cimport
Rectangle
# Create a Cython extension type which holds a C++ instance
# as an attribute and create a bunch of forwarding methods
# Python extension type.
cdef
class
PyRectangle
:
cdef
Rectangle
c_rect
# Hold a C++ instance which we're wrapping
def
__cinit__
(
self
,
int
x0
,
int
y0
,
int
x1
,
int
y1
):
self
.
c_rect
=
Rectangle
(
x0
,
y0
,
x1
,
y1
)
def
get_area
(
self
):
return
self
.
c_rect
.
getArea
()
def
get_size
(
self
):
cdef
int
width
,
height
self
.
c_rect
.
getSize
(
&
width
,
&
height
)
return
width
,
height
def
move
(
self
,
dx
,
dy
):
self
.
c_rect
.
move
(
dx
,
dy
)
docs/examples/userguide/wrapping_CPlusPlus/rect_ptr.pyx
0 → 100644
View file @
9564b99f
# distutils: language = c++
from
Rectangle
cimport
Rectangle
cdef
class
PyRectangle
:
cdef
Rectangle
*
c_rect
# hold a pointer to the C++ instance which we're wrapping
def
__cinit__
(
self
,
int
x0
,
int
y0
,
int
x1
,
int
y1
):
self
.
c_rect
=
new
Rectangle
(
x0
,
y0
,
x1
,
y1
)
def
__dealloc__
(
self
):
del
self
.
c_rect
docs/examples/userguide/wrapping_CPlusPlus/rect_with_attributes.pyx
0 → 100644
View file @
9564b99f
# distutils: language = c++
from
Rectangle
cimport
Rectangle
cdef
class
PyRectangle
:
cdef
Rectangle
c_rect
def
__cinit__
(
self
,
int
x0
,
int
y0
,
int
x1
,
int
y1
):
self
.
c_rect
=
Rectangle
(
x0
,
y0
,
x1
,
y1
)
def
get_area
(
self
):
return
self
.
c_rect
.
getArea
()
def
get_size
(
self
):
cdef
int
width
,
height
self
.
c_rect
.
getSize
(
&
width
,
&
height
)
return
width
,
height
def
move
(
self
,
dx
,
dy
):
self
.
c_rect
.
move
(
dx
,
dy
)
# Attribute access
@
property
def
x0
(
self
):
return
self
.
c_rect
.
x0
@
x0
.
setter
def
x0
(
self
,
x0
):
self
.
c_rect
.
x0
=
x0
# Attribute access
@
property
def
x1
(
self
):
return
self
.
c_rect
.
x1
@
x1
.
setter
def
x1
(
self
,
x1
):
self
.
c_rect
.
x1
=
x1
# Attribute access
@
property
def
y0
(
self
):
return
self
.
c_rect
.
y0
@
y0
.
setter
def
y0
(
self
,
y0
):
self
.
c_rect
.
y0
=
y0
# Attribute access
@
property
def
y1
(
self
):
return
self
.
c_rect
.
y1
@
y1
.
setter
def
y1
(
self
,
y1
):
self
.
c_rect
.
y1
=
y1
docs/examples/userguide/wrapping_CPlusPlus/setup.py
0 → 100644
View file @
9564b99f
from
distutils.core
import
setup
from
Cython.Build
import
cythonize
setup
(
ext_modules
=
cythonize
(
"rect.pyx"
))
docs/src/userguide/wrapping_CPlusPlus.rst
View file @
9564b99f
This diff is collapsed.
Click to expand it.
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