Skip to content

Commit 7fadeae

Browse files
committed
Enabled c backend for test_c_interop_03
1 parent 1718782 commit 7fadeae

File tree

3 files changed

+36
-26
lines changed

3 files changed

+36
-26
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,5 @@ src/lpython/parser/parser.tab.hh
168168
integration_tests/test_c_interop_01.c
169169
integration_tests/test_c_interop_01
170170
integration_tests/test_c_interop_03
171+
integration_tests/test_c_interop_03.c
171172
integration_tests/test_c_interop_04

integration_tests/test_c_interop_03.py

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,42 @@
44
def f_pi32_i32(x: CPtr) -> i32:
55
pass
66

7-
# @ccall
8-
# def f_pi64_i32(x: CPtr) -> i64:
9-
# pass
7+
@ccall
8+
def f_pi64_i32(x: CPtr) -> i64:
9+
pass
1010

11-
# @ccall
12-
# def f_pf32_i32(x: CPtr) -> f32:
13-
# pass
11+
@ccall
12+
def f_pf32_i32(x: CPtr) -> f32:
13+
pass
1414

15-
# @ccall
16-
# def f_pf64_i32(x: CPtr) -> f64:
17-
# pass
15+
@ccall
16+
def f_pf64_i32(x: CPtr) -> f64:
17+
pass
1818

1919
def test_c_callbacks():
2020
xi32: i32
2121
xi32 = 3
2222
p: CPtr
2323
p_c_pointer(pointer(xi32), p)
24-
# print(pointer(xi32), p)
25-
# assert f_pi32_i32(p) == 4
26-
27-
# xi64: i64
28-
# xi64 = 3
29-
# p_c_pointer(xi64, p)
30-
# assert f_pi64_i32(p) == 4
31-
32-
# xf32: f32
33-
# xf32 = 3.3
34-
# p_c_pointer(xf32, p)
35-
# assert abs(f_pf32_i32(p)-4.3) < 1e-6
36-
37-
# xf64: f64
38-
# xf64 = 3.3
39-
# p_c_pointer(xf64, p)
40-
# assert abs(f_pf64_i32(p)-4.3) < 1e-12
24+
print(pointer(xi32), p)
25+
assert f_pi32_i32(p) == 4
26+
27+
xi64: i64
28+
xi64 = 3
29+
p_c_pointer(pointer(xi64), p)
30+
print(pointer(xi64), p)
31+
assert f_pi64_i32(p) == 4
32+
33+
xf32: f32
34+
xf32 = 3.3
35+
p_c_pointer(pointer(xf32), p)
36+
print(pointer(xf32), p)
37+
assert abs(f_pf32_i32(p)-4.3) < 1e-6
38+
39+
xf64: f64
40+
xf64 = 3.3
41+
p_c_pointer(pointer(xf64), p)
42+
print(pointer(xf64), p)
43+
assert abs(f_pf64_i32(p)-4.3) < 1e-12
4144

4245
test_c_callbacks()

src/libasr/codegen/asr_to_c.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,12 @@ R"(
335335
case ASR::ttypeType::Character: {
336336
return "%s";
337337
}
338+
case ASR::ttypeType::CPtr: {
339+
return "%p";
340+
}
341+
case ASR::ttypeType::Pointer: {
342+
return "%p";
343+
}
338344
default : throw LFortranException("Not implemented");
339345
}
340346
}

0 commit comments

Comments
 (0)