Commit 6e6baf58 authored by scoder's avatar scoder Committed by GitHub

Merge pull request #2407 from gabrieldemarmiesse/test_sharing_declarations_2

Adding tests for "sharing declarations" part 1
parents c04ca703 27da4152
cdef enum otherstuff:
sausage, eggs, lettuce
cdef struct spamdish:
int oz_of_spam
otherstuff filler
from __future__ import print_function
cimport dishes
from dishes cimport spamdish
cdef void prepare(spamdish *d):
d.oz_of_spam = 42
d.filler = dishes.sausage
def serve():
cdef spamdish d
prepare(&d)
print(f'{d.oz_of_spam} oz spam, filler no. {d.filler}')
from __future__ import print_function
from volume cimport cube
def menu(description, size):
print(description, ":", cube(size),
"cubic metres of spam")
menu("Entree", 1)
menu("Main course", 3)
menu("Dessert", 2)
cdef float cube(float x):
return x * x * x
...@@ -80,28 +80,13 @@ Here is an example. :file:`dishes.pxd` is a definition file which exports a ...@@ -80,28 +80,13 @@ Here is an example. :file:`dishes.pxd` is a definition file which exports a
C data type. :file:`restaurant.pyx` is an implementation file which imports and C data type. :file:`restaurant.pyx` is an implementation file which imports and
uses it. uses it.
:file:`dishes.pxd`:: :file:`dishes.pxd`:
cdef enum otherstuff: .. literalinclude:: ../../examples/userguide/sharing_declarations/dishes.pxd
sausage, eggs, lettuce
cdef struct spamdish: :file:`restaurant.pyx`:
int oz_of_spam
otherstuff filler
:file:`restaurant.pyx`:: .. literalinclude:: ../../examples/userguide/sharing_declarations/restaurant.pyx
cimport dishes
from dishes cimport spamdish
cdef void prepare(spamdish *d):
d.oz_of_spam = 42
d.filler = dishes.sausage
def serve():
cdef spamdish d
prepare(&d)
print("%d oz spam, filler no. %d" % (d.oz_of_spam, d.filler))
It is important to understand that the :keyword:`cimport` statement can only It is important to understand that the :keyword:`cimport` statement can only
be used to import C data types, C functions and variables, and extension be used to import C data types, C functions and variables, and extension
...@@ -169,28 +154,17 @@ C functions defined at the top level of a module can be made available via ...@@ -169,28 +154,17 @@ C functions defined at the top level of a module can be made available via
:keyword:`cimport` by putting headers for them in the ``.pxd`` file, for :keyword:`cimport` by putting headers for them in the ``.pxd`` file, for
example: example:
:file:`volume.pxd`:: :file:`volume.pxd`:
cdef float cube(float)
:file:`volume.pyx`::
cdef float cube(float x):
return x * x * x
:file:`spammery.pyx`:: .. literalinclude:: ../../examples/userguide/sharing_declarations/volume.pxd
from __future__ import print_function :file:`volume.pyx`:
from volume cimport cube .. literalinclude:: ../../examples/userguide/sharing_declarations/volume.pyx
def menu(description, size): :file:`spammery.pyx`:
print(description, ":", cube(size),
"cubic metres of spam")
menu("Entree", 1) .. literalinclude:: ../../examples/userguide/sharing_declarations/spammery.pyx
menu("Main course", 3)
menu("Dessert", 2)
.. note:: .. note::
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment