raiguard/tcom
git clone https://git.raiguard.me/raiguard/tcom
7992681
trunk
1#+vet explicit-allocators 2 3// Public system API. 4package tcom 5 6import rt "base:runtime" 7import "core:io" 8 9g_sys_term_cached_dims : TTY_Pos 10 11// --------------------------------------------------------------------------------------------------------------------- 12// BOOTSTRAP 13 14sys_init :: proc () { 15_sys_init () 16} 17 18sys_fini :: proc () { 19_sys_fini () 20} 21 22// --------------------------------------------------------------------------------------------------------------------- 23// CHILD 24 25Sys_Child_Info :: _Sys_Child_Info 26 27sys_child_start :: proc ( cmd : [] string , dim : TTY_Pos , allocator : rt . Allocator ) -> ( info : Sys_Child_Info , err : rt . Allocator_Error ) { 28return _sys_child_start ( cmd , dim , allocator ) 29} 30 31sys_child_write :: proc ( info : Sys_Child_Info , str : string ) -> ( ok : bool ) { 32return _sys_child_write ( info , str ) 33} 34 35// --------------------------------------------------------------------------------------------------------------------- 36// EVENTS 37 38Sys_Event :: union { 39Sys_Event_Pane_Died , 40Sys_Event_TTY , 41Sys_Event_TTY_Error , 42Sys_Event_Input_Raw , 43Sys_Event_IO_Error , 44} 45 46Sys_Event_Pane_Died :: struct { 47pane : Pane_Handle , 48} 49Sys_Event_TTY :: TTY_Event 50Sys_Event_TTY_Error :: TTY_Error 51Sys_Event_Input_Raw :: struct { 52text : string , 53} 54Sys_Event_IO_Error :: struct { 55data : [] byte , 56start_i , end_i : int , 57err : io . Error , 58} 59 60Sys_Event_Iterator :: struct { 61allocator : rt . Allocator , 62_sys_info : _Sys_Event_Iterator_Info , 63} 64 65sys_event_iterator_create :: proc ( allocator : rt . Allocator ) -> ( it : Sys_Event_Iterator ) { 66it . allocator = allocator 67_sys_event_iterator_create ( & it ) 68return 69} 70 71sys_event_iterator_iterate :: proc ( it : ^ Sys_Event_Iterator ) -> ( e : Sys_Event , cond : bool ) { 72return _sys_event_iterator_iterate ( it ) 73} 74 75sys_event_iterator_destroy :: proc ( it : ^ Sys_Event_Iterator ) { 76_sys_event_iterator_destroy ( it ) 77} 78 79// --------------------------------------------------------------------------------------------------------------------- 80// TERMINAL 81 82sys_term_get_dims :: proc () -> ( d : TTY_Pos ) { 83dims , ok := _sys_term_get_dims () 84if ok { 85g_sys_term_cached_dims = dims 86} 87return g_sys_term_cached_dims 88} 89 90sys_term_set_dims :: proc ( d : TTY_Pos , c : Sys_Child_Info ) { 91_sys_term_set_dims ( d , c ) 92}