From 9980f8106238671f0334932bf92ff57daaaa638e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 10 Sep 2021 16:14:39 +0100 Subject: [PATCH] Add other constants to c and libc --- core/c/c.odin | 8 ++++++++ core/c/libc/signal.odin | 3 +++ core/c/libc/string.odin | 2 +- core/mem/mem.odin | 2 +- core/runtime/procs.odin | 2 +- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/core/c/c.odin b/core/c/c.odin index 2aa91551a..d135fa93c 100644 --- a/core/c/c.odin +++ b/core/c/c.odin @@ -89,6 +89,14 @@ INT16_MIN :: ~INT16_MAX INT32_MIN :: ~INT32_MAX INT64_MIN :: ~INT64_MAX +SIZE_MAX :: max(size_t) + +PTRDIFF_MIN :: min(ptrdiff_t) +PTRDIFF_MAX :: max(ptrdiff_t) + +WCHAR_MIN :: min(wchar_t) +WCHAR_MAX :: max(wchar_t) + NULL :: rawptr(uintptr(0)) NDEBUG :: !ODIN_DEBUG diff --git a/core/c/libc/signal.odin b/core/c/libc/signal.odin index afb81dea1..ad007287e 100644 --- a/core/c/libc/signal.odin +++ b/core/c/libc/signal.odin @@ -10,6 +10,9 @@ when ODIN_OS == "windows" { sig_atomic_t :: distinct atomic_int +SIG_ATOMIC_MIN :: min(sig_atomic_t) +SIG_ATOMIC_MAX :: max(sig_atomic_t) + @(default_calling_convention="c") foreign libc { signal :: proc(sig: int, func: proc "c" (int)) -> proc "c" (int) --- diff --git a/core/c/libc/string.odin b/core/c/libc/string.odin index 822fe43c5..343bdd22d 100644 --- a/core/c/libc/string.odin +++ b/core/c/libc/string.odin @@ -38,7 +38,7 @@ foreign libc { strtok :: proc(s1: [^]char, s2: cstring) -> [^]char --- // 7.24.6 Miscellaneous functions - memset : proc(s: rawptr, c: int, n: size_t) -> rawptr : runtime.memset strerror :: proc(errnum: int) -> [^]char --- strlen :: proc(s: cstring) -> size_t --- } +memset : proc "c" (s: rawptr, c: int, n: size_t) -> rawptr : runtime.memset diff --git a/core/mem/mem.odin b/core/mem/mem.odin index 6b216e029..92b76ff83 100644 --- a/core/mem/mem.odin +++ b/core/mem/mem.odin @@ -4,7 +4,7 @@ import "core:runtime" import "core:intrinsics" set :: proc "contextless" (data: rawptr, value: byte, len: int) -> rawptr #no_bounds_check { - return runtime.memset(data, i32(value), len) + return runtime.memset(data, i32(value), int(len)) } zero :: proc "contextless" (data: rawptr, len: int) -> rawptr { return set(data, 0, len) diff --git a/core/runtime/procs.odin b/core/runtime/procs.odin index 0aaf49928..94624eea6 100644 --- a/core/runtime/procs.odin +++ b/core/runtime/procs.odin @@ -1,7 +1,7 @@ package runtime @(link_name="memset") -memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr #no_bounds_check { +memset :: proc "c" (ptr: rawptr, val: i32, len: uint) -> rawptr #no_bounds_check { if ptr != nil && len != 0 { b := byte(val) p := ([^]byte)(ptr)