Skip to content

Commit 975cee3

Browse files
committed
feat(libs): add cstrlen,wrap_cstr_z
1 parent ecd9328 commit 975cee3

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

compiler/libs/libs/c.yaka

+4
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,7 @@ def memset(dest: VoidPtr, character: CInt, size: Size) -> VoidPtr:
222222
@nativedefine("memcmp")
223223
def memcmp(str1: VoidPtr, str2: VoidPtr, size: Size) -> CInt:
224224
pass
225+
226+
@nativedefine("strlen")
227+
def cstrlen(s: CStr) -> Size:
228+
pass

compiler/libs/libs/strings/refs.yaka

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
import libs.c
22

3-
@native("yk__bstr_get_reference")
3+
@nativedefine("yk__bstr_get_reference")
44
def unwrap(a: sr) -> Const[c.CStr]:
55
# Get internal string reference from sr
66
pass
77

8-
@native("yk__bstr_c")
8+
@nativedefine("yk__bstr_c")
99
def wrap_cstr(s: c.CStr, length: int) -> sr:
1010
# Wrap a c.CStr as a sr
1111
pass
1212

13+
def wrap_cstr_z(s: c.CStr) -> sr:
14+
return wrap_cstr(s, cast("int", c.cstrlen(s)))
15+
1316
def wrap(s: sr) -> sr:
1417
# Wrap a str/literal/sr (if a sr is passed in reference is not wrapped again) as sr
1518
# This takes advantage of the auto-casting

0 commit comments

Comments
 (0)