File tree 3 files changed +33
-0
lines changed 3 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,10 @@ def f_pi32_i32(x: CPtr) -> i32:
12
12
def f_pstruct_i32 (x : CPtr ) -> i32 :
13
13
pass
14
14
15
+ @ccall
16
+ def f_enum_i32 (x : i32 ) -> i32 :
17
+ pass
18
+
15
19
@ccall
16
20
def driver1 () -> i32 :
17
21
pass
@@ -28,6 +32,10 @@ def driver3() -> i32:
28
32
def driver4 () -> i32 :
29
33
pass
30
34
35
+ @ccall
36
+ def driver5 () -> i32 :
37
+ pass
38
+
31
39
@ccallback
32
40
def callback1 () -> i32 :
33
41
xi32 : i32
@@ -48,12 +56,17 @@ def callback3(p: CPtr) -> i32:
48
56
def callback4 (p : CPtr ) -> i32 :
49
57
return f_pstruct_i32 (p )
50
58
59
+ @ccallback
60
+ def callback5 (x : i32 ) -> i32 :
61
+ return f_enum_i32 (x )
62
+
51
63
52
64
def test_c_callbacks ():
53
65
assert driver1 () == 4
54
66
assert driver2 () == 4
55
67
assert driver3 () == 4
56
68
assert driver4 () == 4
69
+ assert driver5 () == 4
57
70
58
71
59
72
test_c_callbacks ()
Original file line number Diff line number Diff line change @@ -12,6 +12,10 @@ int32_t f_pstruct_i32(struct Data *x) {
12
12
return x -> a + 1 ;
13
13
}
14
14
15
+ int32_t f_enum_i32 (enum MyEnum x ) {
16
+ return (int32_t )x + 2 ;
17
+ }
18
+
15
19
int32_t driver1 () {
16
20
return callback1 ();
17
21
}
@@ -33,3 +37,9 @@ int32_t driver4() {
33
37
x .a = 3 ;
34
38
return callback4 (& x );
35
39
}
40
+
41
+ int32_t driver5 () {
42
+ enum MyEnum x ;
43
+ x = M_c ;
44
+ return callback5 (x );
45
+ }
Original file line number Diff line number Diff line change @@ -10,19 +10,29 @@ struct Data {
10
10
char name [25 ];
11
11
};
12
12
13
+ enum MyEnum {
14
+ M_a = 0 ,
15
+ M_b = 1 ,
16
+ M_c = 2 ,
17
+ M_d = 3 ,
18
+ };
19
+
13
20
int32_t f_i32_i32 (int32_t x );
14
21
int32_t f_pi32_i32 (int32_t * x );
15
22
int32_t f_pstruct_i32 (struct Data * x );
23
+ int32_t f_enum_i32 (enum MyEnum x );
16
24
17
25
int32_t callback1 ();
18
26
int32_t callback2 (int32_t x );
19
27
int32_t callback3 (int32_t * x );
20
28
int32_t callback4 (struct Data * x );
29
+ int32_t callback5 (enum MyEnum x );
21
30
22
31
int32_t driver1 ();
23
32
int32_t driver2 ();
24
33
int32_t driver3 ();
25
34
int32_t driver4 ();
35
+ int32_t driver5 ();
26
36
27
37
28
38
#endif // TEST_C_INTEROP_05B
You can’t perform that action at this time.
0 commit comments