diff options
author | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
---|---|---|
committer | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/cython/1 basic/libdir | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/cython/1 basic/libdir')
-rw-r--r-- | meson/test cases/cython/1 basic/libdir/cstorer.pxd | 9 | ||||
-rw-r--r-- | meson/test cases/cython/1 basic/libdir/meson.build | 8 | ||||
-rw-r--r-- | meson/test cases/cython/1 basic/libdir/storer.c | 24 | ||||
-rw-r--r-- | meson/test cases/cython/1 basic/libdir/storer.h | 8 | ||||
-rw-r--r-- | meson/test cases/cython/1 basic/libdir/storer.pyx | 16 |
5 files changed, 65 insertions, 0 deletions
diff --git a/meson/test cases/cython/1 basic/libdir/cstorer.pxd b/meson/test cases/cython/1 basic/libdir/cstorer.pxd new file mode 100644 index 000000000..7b730fc75 --- /dev/null +++ b/meson/test cases/cython/1 basic/libdir/cstorer.pxd @@ -0,0 +1,9 @@ + +cdef extern from "storer.h": + ctypedef struct Storer: + pass + + Storer* storer_new(); + void storer_destroy(Storer *s); + int storer_get_value(Storer *s); + void storer_set_value(Storer *s, int v); diff --git a/meson/test cases/cython/1 basic/libdir/meson.build b/meson/test cases/cython/1 basic/libdir/meson.build new file mode 100644 index 000000000..144bb1f14 --- /dev/null +++ b/meson/test cases/cython/1 basic/libdir/meson.build @@ -0,0 +1,8 @@ +slib = py3.extension_module( + 'storer', + 'storer.pyx', + 'storer.c', + dependencies : py3_dep +) + +pydir = meson.current_build_dir() diff --git a/meson/test cases/cython/1 basic/libdir/storer.c b/meson/test cases/cython/1 basic/libdir/storer.c new file mode 100644 index 000000000..0199bb850 --- /dev/null +++ b/meson/test cases/cython/1 basic/libdir/storer.c @@ -0,0 +1,24 @@ +#include"storer.h" +#include<stdlib.h> + +struct _Storer { + int value; +}; + +Storer* storer_new() { + Storer *s = malloc(sizeof(struct _Storer)); + s->value = 0; + return s; +} + +void storer_destroy(Storer *s) { + free(s); +} + +int storer_get_value(Storer *s) { + return s->value; +} + +void storer_set_value(Storer *s, int v) { + s->value = v; +} diff --git a/meson/test cases/cython/1 basic/libdir/storer.h b/meson/test cases/cython/1 basic/libdir/storer.h new file mode 100644 index 000000000..4f7191711 --- /dev/null +++ b/meson/test cases/cython/1 basic/libdir/storer.h @@ -0,0 +1,8 @@ +#pragma once + +typedef struct _Storer Storer; + +Storer* storer_new(); +void storer_destroy(Storer *s); +int storer_get_value(Storer *s); +void storer_set_value(Storer *s, int v); diff --git a/meson/test cases/cython/1 basic/libdir/storer.pyx b/meson/test cases/cython/1 basic/libdir/storer.pyx new file mode 100644 index 000000000..ed551dc5f --- /dev/null +++ b/meson/test cases/cython/1 basic/libdir/storer.pyx @@ -0,0 +1,16 @@ +cimport cstorer + +cdef class Storer: + cdef cstorer.Storer* _c_storer + + def __cinit__(self): + self._c_storer = cstorer.storer_new() + + def __dealloc__(self): + cstorer.storer_destroy(self._c_storer) + + cpdef int get_value(self): + return cstorer.storer_get_value(self._c_storer) + + cpdef set_value(self, int value): + cstorer.storer_set_value(self._c_storer, value) |