added time.to_epoch; bugfix with BufferStream
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 30 Nov 2022 04:20:17 +0000 (22:20 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 30 Nov 2022 04:20:17 +0000 (22:20 -0600)
core/io/stream.onyx
core/time/time.onyx
runtime/onyx_runtime.c
runtime/src/ort_time.h

index 1916843d135198ea80a30a3749bace0c38af3d5f..0a58a7a8e8f1fe2e6ac894c325849c677413bafa 100644 (file)
@@ -192,7 +192,7 @@ buffer_stream_make :: #match #locked {
     (initial_size := 1024, allocator := context.allocator) -> BufferStream {
         return .{
             .{ vtable = ^buffer_stream_vtable },
-            make([..] u8, 1024, allocator = allocator)
+            make([..] u8, initial_size, allocator = allocator)
         };
     }
 }
index 0f2d61f6abf3252375c73b443aff8e18907d9342..0922c2fedd64f909d4939d9ba96e40a20efd5099 100644 (file)
@@ -28,6 +28,7 @@ Timestamp :: struct #size (sizeof u32 * 12) {
 
 localtime :: __time_localtime
 gmtime    :: __time_gmtime
+to_epoch  :: __time_mktime
 
 strftime :: (buf: [] u8, format: [] u8, tm: ^Timestamp) -> str {
     f := cast(cstr) core.alloc.from_stack(format.length + 1);
@@ -272,6 +273,7 @@ parse_number_and_advance :: (buf: ^[] u8, result: ^i32, low, high, offset: i32)
     #foreign "onyx_runtime" {
         __time_localtime :: (time: u64, tm: ^Timestamp) -> void ---
         __time_gmtime    :: (time: u64, tm: ^Timestamp) -> void ---
+        __time_mktime    :: (tm: ^Timestamp) -> u64 ---
         __time_strftime  :: (buf: [] u8, format: cstr, tm: ^Timestamp) -> u32 ---
     }
 }
index f7eebfca46457ad9fee2e18decf460b447aaa017..deb4d2ae5cf0fcff5071581244813706bafeef06 100644 (file)
@@ -75,6 +75,7 @@ ONYX_LIBRARY {
     ONYX_FUNC(__time_localtime)
     ONYX_FUNC(__time_gmtime)
     ONYX_FUNC(__time_strftime)
+    ONYX_FUNC(__time_mktime)
 
     ONYX_FUNC(__net_create_socket)
     ONYX_FUNC(__net_close_socket)
index 7dd76751c2ed3570ed68df564bc8c890a9164eed..86f75ba613c049b4a1977ad1093982e8c46e00b9 100644 (file)
@@ -19,3 +19,10 @@ ONYX_DEF(__time_strftime, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32))
     results->data[0] = WASM_I32_VAL(len); 
     return NULL;
 }
+
+ONYX_DEF(__time_mktime, (WASM_I32), (WASM_I64)) {
+    struct tm *time = (struct tm *) ONYX_PTR(params->data[0].of.i32);
+    results->data[0] = WASM_I64_VAL(mktime(time));
+    return NULL;
+}
+