Browse Source

Add other constants to c and libc

gingerBill 3 years ago
parent
commit
9980f81062
5 changed files with 14 additions and 3 deletions
  1. 8 0
      core/c/c.odin
  2. 3 0
      core/c/libc/signal.odin
  3. 1 1
      core/c/libc/string.odin
  4. 1 1
      core/mem/mem.odin
  5. 1 1
      core/runtime/procs.odin

+ 8 - 0
core/c/c.odin

@@ -89,6 +89,14 @@ INT16_MIN      :: ~INT16_MAX
 INT32_MIN      :: ~INT32_MAX
 INT32_MIN      :: ~INT32_MAX
 INT64_MIN      :: ~INT64_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))
 NULL           :: rawptr(uintptr(0))
 
 
 NDEBUG         :: !ODIN_DEBUG
 NDEBUG         :: !ODIN_DEBUG

+ 3 - 0
core/c/libc/signal.odin

@@ -10,6 +10,9 @@ when ODIN_OS == "windows" {
 
 
 sig_atomic_t :: distinct atomic_int
 sig_atomic_t :: distinct atomic_int
 
 
+SIG_ATOMIC_MIN :: min(sig_atomic_t)
+SIG_ATOMIC_MAX :: max(sig_atomic_t)
+
 @(default_calling_convention="c")
 @(default_calling_convention="c")
 foreign libc {
 foreign libc {
 	signal :: proc(sig: int, func: proc "c" (int)) -> proc "c" (int) ---
 	signal :: proc(sig: int, func: proc "c" (int)) -> proc "c" (int) ---

+ 1 - 1
core/c/libc/string.odin

@@ -38,7 +38,7 @@ foreign libc {
 	strtok   :: proc(s1: [^]char, s2: cstring) -> [^]char ---
 	strtok   :: proc(s1: [^]char, s2: cstring) -> [^]char ---
 
 
 	// 7.24.6 Miscellaneous functions
 	// 7.24.6 Miscellaneous functions
-	memset   : proc(s: rawptr, c: int, n: size_t) -> rawptr : runtime.memset
 	strerror :: proc(errnum: int) -> [^]char ---
 	strerror :: proc(errnum: int) -> [^]char ---
 	strlen   :: proc(s: cstring) -> size_t ---
 	strlen   :: proc(s: cstring) -> size_t ---
 }
 }
+memset : proc "c" (s: rawptr, c: int, n: size_t) -> rawptr : runtime.memset

+ 1 - 1
core/mem/mem.odin

@@ -4,7 +4,7 @@ import "core:runtime"
 import "core:intrinsics"
 import "core:intrinsics"
 
 
 set :: proc "contextless" (data: rawptr, value: byte, len: int) -> rawptr #no_bounds_check {
 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 {
 zero :: proc "contextless" (data: rawptr, len: int) -> rawptr {
 	return set(data, 0, len)
 	return set(data, 0, len)

+ 1 - 1
core/runtime/procs.odin

@@ -1,7 +1,7 @@
 package runtime
 package runtime
 
 
 @(link_name="memset")
 @(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 {
 	if ptr != nil && len != 0 {
 		b := byte(val)
 		b := byte(val)
 		p := ([^]byte)(ptr)
 		p := ([^]byte)(ptr)