added more ncurses functions
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 27 Apr 2022 19:40:23 +0000 (14:40 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 27 Apr 2022 19:40:23 +0000 (14:40 -0500)
modules/ncurses/module.onyx
modules/ncurses/ncurses.c
modules/ncurses/onyx_ncurses.so

index 3ca8d6b9bf6933db8753bea761e98baa6c2386af..5908a1f3e85cd1ba90ef9ec40820a7f6ddcc1175 100644 (file)
@@ -25,7 +25,7 @@ void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); }
 """
     cast_map :: (#type struct {type: type_expr; name: str;}).[
         .{ WINDOW, "WINDOW *" },
-    ]
+   ]
 */
 
     // initscr
@@ -35,6 +35,7 @@ void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); }
     newterm   :: (type: cstr, out_fd, in_fd: ^u32) -> SCREEN ---
     set_term  :: (new: SCREEN) -> SCREEN ---
     delscreen :: (sp: SCREEN) -> void ---
+    exit_curses :: (code: i32) -> void ---
 
     // color
     start_color :: () -> i32 ---
@@ -269,12 +270,113 @@ void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); }
     mvvline  :: (y, x: i32, ch: chtype, n: i32) -> i32 ---
     mvwvline :: (w: WINDOW, y, x: i32, ch: chtype, n: i32) -> i32 ---
 
+    // new_pair
+    allow_pair :: (fg, bg: i32) -> i32 ---
+    find_pair  :: (fg, bg: i32) -> i32 ---
+    free_pair  :: (pair: i32)   -> i32 ---
+
+    // default_colors
+    use_default_colors :: () -> i32 ---
+    assume_default_colors :: (fg, bg: i32) -> i32 ---
+
+    // termattrs
+    buadrate :: () -> i32 ---
+    erasechar :: () -> u8 ---
+    has_ic :: () -> bool ---
+    has_il :: () -> bool ---
+    killchar :: () -> u8 ---
+    longname :: () -> cptr(u8) ---
+    term_attrs :: () -> attr_t ---
+    termattrs :: () -> chtype ---
+    termname :: () -> void ---
+
+    // beep
+    beep :: () -> void ---
+    flash :: () -> void ---
+
+    // overlay
+    overlay :: (srcwin: WINDOW, dstwin: WINDOW) -> i32 ---
+    overwrite :: (srcwin: WINDOW, dstwin: WINDOW) -> i32 ---
+    copywin :: (srcwin: WINDOW, dstwin: WINDOW, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol, overlay: i32) -> i32 ---
+
+    // pad
+    newpad :: (nlines, ncols: i32) -> WINDOW ---
+    subpad :: (orig: WINDOW, nlines, ncols: i32, begin_y, begin_x: i32) -> WINDOW ---
+    prefresh :: (pad: WINDOW, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol: i32) -> i32 ---
+    pnoutrefresh :: (pad: WINDOW, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol: i32) -> i32 ---
+    pechochar :: (pad: WINDOW, ch: chtype) -> i32 ---
+
+    // define_key
+    define_key :: (definition: cstr, keycode: i32) -> i32 ---
+    keyok      :: (keycode: i32, enable: bool) -> i32 ---
+    key_defined :: (definition: cstr) -> i32 ---
+
+    // delch
+    delch :: () -> i32 ---
+    wdelch :: (w: WINDOW) -> i32 ---
+    mvdelch :: (y, x: i32) -> i32 ---
+    mvwdelch :: (w: WINDOW, y, x: i32) -> i32 ---
+
+    // deleteln
+    deleteln :: () -> i32 ---
+    wdeleteln :: (w: WINDOW) -> i32 ---
+    insdelln :: (n: i32) -> i32 ---
+    winsdelln :: (w: WINDOW, n: i32) -> i32 ---
+    insertln :: () -> i32 ---
+    winsertln :: (w: WINDOW) -> i32 ---
+
+    // slk
+    slk_init :: (fmt: i32) -> i32 ---
+    slk_set :: (labnum: i32, label: cstr, fmt: i32) -> i32 ---
+    slk_label :: (labnum: i32) -> cptr(u8) ---
+    slk_refresh :: () -> i32 ---
+    slk_noutrefresh :: () -> i32 ---
+    slk_clear :: () -> i32 ---
+    slk_restore :: () -> i32 ---
+    slk_touch :: () -> i32 ---
+    slk_attron  :: (attrs: chtype) -> i32 ---
+    slk_attroff :: (attrs: chtype) -> i32 ---
+    slk_attrset :: (attrs: chtype) -> i32 ---
+    slk_attr :: () -> attr_t ---
+    slk_color :: (pair: i32) -> i32 ---
+
+    // legacy
+    getattrs :: (w: WINDOW) -> i32 ---
+    getbegx :: (w: WINDOW) -> i32 ---
+    getbegy :: (w: WINDOW) -> i32 ---
+    getcurx :: (w: WINDOW) -> i32 ---
+    getcury :: (w: WINDOW) -> i32 ---
+    getmaxx :: (w: WINDOW) -> i32 ---
+    getmaxy :: (w: WINDOW) -> i32 ---
+    getparx :: (w: WINDOW) -> i32 ---
+    getpary :: (w: WINDOW) -> i32 ---
+
+    // mouse
+    has_mouse :: () -> bool ---
+    getmouse :: (@out event: ^MEvent) -> i32 ---
+    ungetmouse :: (@out event: ^MEvent) -> i32 ---
+    mousemask :: (newmask: mmask_t, @out oldmask: ^mmask_t) -> mmask_t ---
+    wenclone :: (w: WINDOW, y, x: i32) -> bool ---
+    mouse_trafo :: (py, px: ^i32, to_screen: bool) -> bool ---
+    wmouse_trafo :: (w: WINDOW, py, px: ^i32, to_screen: bool) -> bool ---
+    mouseinterval :: (erval: i32) -> i32 ---
+
+    // resizeterm
+    is_term_resized :: (lines, columns: i32) -> bool ---
+    resize_term :: (lines, columns: i32) -> bool ---
+    resizeterm :: (lines, columns: i32) -> bool ---
+
+    // scroll
+    scroll :: (w: WINDOW) -> i32 ---
+    scrl   :: (n: i32) -> i32 ---
+    wscrl  :: (w: WINDOW, n: i32) -> i32 ---
 
     // variables
     __get_stdscr :: () -> WINDOW ---
     NCURSES_ACS  :: (a: i32) -> chtype ---
 }
 
+
 stdscr    :: __get_stdscr
 getyx     :: __get_yx
 getparyx  :: __get_par_yx
@@ -334,6 +436,51 @@ SCREEN :: #distinct u64
 chtype :: u32
 attr_t :: u32
 
+mmask_t :: u64
+MEvent :: struct {
+    id: u16;
+    x, y, z: i32;
+    bstate: mmask_t;
+}
+
+BUTTON1_RELEASED       :: 0x01 << (0 * 6)
+BUTTON1_PRESSED        :: 0x02 << (0 * 6)
+BUTTON1_CLICKED        :: 0x04 << (0 * 6)
+BUTTON1_DOUBLE_CLICKED :: 0x08 << (0 * 6)
+BUTTON1_TRIPLE_CLICKED :: 0x10 << (0 * 6)
+BUTTON2_RELEASED       :: 0x01 << (1 * 6)
+BUTTON2_PRESSED        :: 0x02 << (1 * 6)
+BUTTON2_CLICKED        :: 0x04 << (1 * 6)
+BUTTON2_DOUBLE_CLICKED :: 0x08 << (1 * 6)
+BUTTON2_TRIPLE_CLICKED :: 0x10 << (1 * 6)
+BUTTON3_RELEASED       :: 0x01 << (2 * 6)
+BUTTON3_PRESSED        :: 0x02 << (2 * 6)
+BUTTON3_CLICKED        :: 0x04 << (2 * 6)
+BUTTON3_DOUBLE_CLICKED :: 0x08 << (2 * 6)
+BUTTON3_TRIPLE_CLICKED :: 0x10 << (2 * 6)
+BUTTON4_RELEASED       :: 0x01 << (3 * 6)
+BUTTON4_PRESSED        :: 0x02 << (3 * 6)
+BUTTON4_CLICKED        :: 0x04 << (3 * 6)
+BUTTON4_DOUBLE_CLICKED :: 0x08 << (3 * 6)
+BUTTON4_TRIPLE_CLICKED :: 0x10 << (3 * 6)
+BUTTON5_RELEASED       :: 0x01 << (4 * 6)
+BUTTON5_PRESSED        :: 0x02 << (4 * 6)
+BUTTON5_CLICKED        :: 0x04 << (4 * 6)
+BUTTON5_DOUBLE_CLICKED :: 0x08 << (4 * 6)
+BUTTON5_TRIPLE_CLICKED :: 0x10 << (4 * 6)
+BUTTON_CTRL            :: 0x01 << (6 * 6)
+BUTTON_SHIFT           :: 0x02 << (6 * 6)
+BUTTON_ALT             :: 0x04 << (6 * 6)
+REPORT_MOUSE_POSITION  :: 0x08 << (6 * 6)
+
+BUTTON_RELEASE      :: macro (e: mmask_t, button: i32) => (e & (1  << (button * 6))) != 0;
+BUTTON_PRESS        :: macro (e: mmask_t, button: i32) => (e & (2  << (button * 6))) != 0;
+BUTTON_CLICK        :: macro (e: mmask_t, button: i32) => (e & (4  << (button * 6))) != 0;
+BUTTON_DOUBLE_CLICK :: macro (e: mmask_t, button: i32) => (e & (8  << (button * 6))) != 0;
+BUTTON_TRIPLE_CLICK :: macro (e: mmask_t, button: i32) => (e & (16 << (button * 6))) != 0;
+
+ALL_MOUSE_EVENTS :: (1 << (7 * 6)) - 1
+
 A_NORMAL :: 0
 A_ATTRIBUTES :: 0xffffff00
 A_CHARTEXT   :: 0xff
@@ -364,3 +511,93 @@ COLOR_MAGENTA :: 5
 COLOR_CYAN :: 6
 COLOR_WHITE :: 7
 
+
+KEY_DOWN :: 0402               /* down-arrow key */
+KEY_UP :: 0403         /* up-arrow key */
+KEY_LEFT :: 0404               /* left-arrow key */
+KEY_RIGHT :: 0405              /* right-arrow key */
+KEY_HOME :: 0406               /* home key */
+KEY_BACKSPACE :: 0407          /* backspace key */
+KEY_F0 :: 0410         /* Function keys.  Space for 64 */
+KEY_F :: macro (n) => KEY_FO + n /* Value of function key n */
+KEY_DL :: 0510         /* delete-line key */
+KEY_IL :: 0511         /* insert-line key */
+KEY_DC :: 0512         /* delete-character key */
+KEY_IC :: 0513         /* insert-character key */
+KEY_EIC :: 0514                /* sent by rmir or smir in insert mode */
+KEY_CLEAR :: 0515              /* clear-screen or erase key */
+KEY_EOS :: 0516                /* clear-to-end-of-screen key */
+KEY_EOL :: 0517                /* clear-to-end-of-line key */
+KEY_SF :: 0520         /* scroll-forward key */
+KEY_SR :: 0521         /* scroll-backward key */
+KEY_NPAGE :: 0522              /* next-page key */
+KEY_PPAGE :: 0523              /* previous-page key */
+KEY_STAB :: 0524               /* set-tab key */
+KEY_CTAB :: 0525               /* clear-tab key */
+KEY_CATAB :: 0526              /* clear-all-tabs key */
+KEY_ENTER :: 0527              /* enter/send key */
+KEY_PRINT :: 0532              /* print key */
+KEY_LL :: 0533         /* lower-left key (home down) */
+KEY_A1 :: 0534         /* upper left of keypad */
+KEY_A3 :: 0535         /* upper right of keypad */
+KEY_B2 :: 0536         /* center of keypad */
+KEY_C1 :: 0537         /* lower left of keypad */
+KEY_C3 :: 0540         /* lower right of keypad */
+KEY_BTAB :: 0541               /* back-tab key */
+KEY_BEG :: 0542                /* begin key */
+KEY_CANCEL :: 0543             /* cancel key */
+KEY_CLOSE :: 0544              /* close key */
+KEY_COMMAND :: 0545            /* command key */
+KEY_COPY :: 0546               /* copy key */
+KEY_CREATE :: 0547             /* create key */
+KEY_END :: 0550                /* end key */
+KEY_EXIT :: 0551               /* exit key */
+KEY_FIND :: 0552               /* find key */
+KEY_HELP :: 0553               /* help key */
+KEY_MARK :: 0554               /* mark key */
+KEY_MESSAGE :: 0555            /* message key */
+KEY_MOVE :: 0556               /* move key */
+KEY_NEXT :: 0557               /* next key */
+KEY_OPEN :: 0560               /* open key */
+KEY_OPTIONS :: 0561            /* options key */
+KEY_PREVIOUS :: 0562           /* previous key */
+KEY_REDO :: 0563               /* redo key */
+KEY_REFERENCE :: 0564          /* reference key */
+KEY_REFRESH :: 0565            /* refresh key */
+KEY_REPLACE :: 0566            /* replace key */
+KEY_RESTART :: 0567            /* restart key */
+KEY_RESUME :: 0570             /* resume key */
+KEY_SAVE :: 0571               /* save key */
+KEY_SBEG :: 0572               /* shifted begin key */
+KEY_SCANCEL :: 0573            /* shifted cancel key */
+KEY_SCOMMAND :: 0574           /* shifted command key */
+KEY_SCOPY :: 0575              /* shifted copy key */
+KEY_SCREATE :: 0576            /* shifted create key */
+KEY_SDC :: 0577                /* shifted delete-character key */
+KEY_SDL :: 0600                /* shifted delete-line key */
+KEY_SELECT :: 0601             /* select key */
+KEY_SEND :: 0602               /* shifted end key */
+KEY_SEOL :: 0603               /* shifted clear-to-end-of-line key */
+KEY_SEXIT :: 0604              /* shifted exit key */
+KEY_SFIND :: 0605              /* shifted find key */
+KEY_SHELP :: 0606              /* shifted help key */
+KEY_SHOME :: 0607              /* shifted home key */
+KEY_SIC :: 0610                /* shifted insert-character key */
+KEY_SLEFT :: 0611              /* shifted left-arrow key */
+KEY_SMESSAGE :: 0612           /* shifted message key */
+KEY_SMOVE :: 0613              /* shifted move key */
+KEY_SNEXT :: 0614              /* shifted next key */
+KEY_SOPTIONS :: 0615           /* shifted options key */
+KEY_SPREVIOUS :: 0616          /* shifted previous key */
+KEY_SPRINT :: 0617             /* shifted print key */
+KEY_SREDO :: 0620              /* shifted redo key */
+KEY_SREPLACE :: 0621           /* shifted replace key */
+KEY_SRIGHT :: 0622             /* shifted right-arrow key */
+KEY_SRSUME :: 0623             /* shifted resume key */
+KEY_SSAVE :: 0624              /* shifted save key */
+KEY_SSUSPEND :: 0625           /* shifted suspend key */
+KEY_SUNDO :: 0626              /* shifted undo key */
+KEY_SUSPEND :: 0627            /* suspend key */
+KEY_UNDO :: 0630               /* undo key */
+KEY_MOUSE :: 0631              /* Mouse event has occurred */
+
index 8ccc641c36594668966698dd560484bcba18a234..029c211c7328846ea4af6d45a34479e76823640d 100644 (file)
@@ -47,6 +47,11 @@ ONYX_DEF(delscreen, (WASM_I64), ()) {
     return NULL;
 }
 
+ONYX_DEF(exit_curses, (WASM_I32), ()) {
+    exit_curses(P(0, i32));
+    return NULL;
+}
+
 ONYX_DEF(start_color, (), (WASM_I32)) {
     results->data[0] = WASM_I32_VAL(start_color());
     return NULL;
@@ -977,6 +982,371 @@ ONYX_DEF(mvwvline, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32
     return NULL;
 }
 
+ONYX_DEF(allow_pair, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(allow_pair(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(find_pair, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(find_pair(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(free_pair, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(free_pair(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(use_default_colors, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(use_default_colors());
+    return NULL;
+}
+
+ONYX_DEF(assume_default_colors, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(assume_default_colors(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(buadrate, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(buadrate());
+    return NULL;
+}
+
+ONYX_DEF(erasechar, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(erasechar());
+    return NULL;
+}
+
+ONYX_DEF(has_ic, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(has_ic());
+    return NULL;
+}
+
+ONYX_DEF(has_il, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(has_il());
+    return NULL;
+}
+
+ONYX_DEF(killchar, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(killchar());
+    return NULL;
+}
+
+ONYX_DEF(longname, (), (WASM_I64)) {
+    results->data[0] = WASM_I64_VAL(longname());
+    return NULL;
+}
+
+ONYX_DEF(term_attrs, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(term_attrs());
+    return NULL;
+}
+
+ONYX_DEF(termattrs, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(termattrs());
+    return NULL;
+}
+
+ONYX_DEF(termname, (), ()) {
+    termname();
+    return NULL;
+}
+
+ONYX_DEF(beep, (), ()) {
+    beep();
+    return NULL;
+}
+
+ONYX_DEF(flash, (), ()) {
+    flash();
+    return NULL;
+}
+
+ONYX_DEF(overlay, (WASM_I64, WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(overlay((WINDOW *) P(0, i64), (WINDOW *) P(1, i64)));
+    return NULL;
+}
+
+ONYX_DEF(overwrite, (WASM_I64, WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(overwrite((WINDOW *) P(0, i64), (WINDOW *) P(1, i64)));
+    return NULL;
+}
+
+ONYX_DEF(copywin, (WASM_I64, WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(copywin((WINDOW *) P(0, i64), (WINDOW *) P(1, i64), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), P(8, i32)));
+    return NULL;
+}
+
+ONYX_DEF(newpad, (WASM_I32, WASM_I32), (WASM_I64)) {
+    results->data[0] = WASM_I64_VAL(newpad(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(subpad, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I64)) {
+    results->data[0] = WASM_I64_VAL(subpad((WINDOW *) P(0, i64), P(1, i32), P(2, i32), P(3, i32), P(4, i32)));
+    return NULL;
+}
+
+ONYX_DEF(prefresh, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(prefresh((WINDOW *) P(0, i64), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32)));
+    return NULL;
+}
+
+ONYX_DEF(pnoutrefresh, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(pnoutrefresh((WINDOW *) P(0, i64), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32)));
+    return NULL;
+}
+
+ONYX_DEF(pechochar, (WASM_I64, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(pechochar((WINDOW *) P(0, i64), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(define_key, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(define_key(ONYX_PTR(P(0, i32)), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(keyok, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(keyok(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(key_defined, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(key_defined(ONYX_PTR(P(0, i32))));
+    return NULL;
+}
+
+ONYX_DEF(delch, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(delch());
+    return NULL;
+}
+
+ONYX_DEF(wdelch, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(wdelch((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(mvdelch, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(mvdelch(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(mvwdelch, (WASM_I64, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(mvwdelch((WINDOW *) P(0, i64), P(1, i32), P(2, i32)));
+    return NULL;
+}
+
+ONYX_DEF(deleteln, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(deleteln());
+    return NULL;
+}
+
+ONYX_DEF(wdeleteln, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(wdeleteln((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(insdelln, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(insdelln(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(winsdelln, (WASM_I64, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(winsdelln((WINDOW *) P(0, i64), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(insertln, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(insertln());
+    return NULL;
+}
+
+ONYX_DEF(winsertln, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(winsertln((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(slk_init, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_init(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(slk_set, (WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_set(P(0, i32), ONYX_PTR(P(1, i32)), P(2, i32)));
+    return NULL;
+}
+
+ONYX_DEF(slk_label, (WASM_I32), (WASM_I64)) {
+    results->data[0] = WASM_I64_VAL(slk_label(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(slk_refresh, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_refresh());
+    return NULL;
+}
+
+ONYX_DEF(slk_noutrefresh, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_noutrefresh());
+    return NULL;
+}
+
+ONYX_DEF(slk_clear, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_clear());
+    return NULL;
+}
+
+ONYX_DEF(slk_restore, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_restore());
+    return NULL;
+}
+
+ONYX_DEF(slk_touch, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_touch());
+    return NULL;
+}
+
+ONYX_DEF(slk_attron, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_attron(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(slk_attroff, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_attroff(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(slk_attrset, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_attrset(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(slk_attr, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_attr());
+    return NULL;
+}
+
+ONYX_DEF(slk_color, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(slk_color(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(getattrs, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getattrs((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getbegx, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getbegx((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getbegy, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getbegy((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getcurx, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getcurx((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getcury, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getcury((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getmaxx, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getmaxx((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getmaxy, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getmaxy((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getparx, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getparx((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(getpary, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getpary((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(has_mouse, (), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(has_mouse());
+    return NULL;
+}
+
+ONYX_DEF(getmouse, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(getmouse(ONYX_PTR(P(0, i32))));
+    return NULL;
+}
+
+ONYX_DEF(ungetmouse, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(ungetmouse(ONYX_PTR(P(0, i32))));
+    return NULL;
+}
+
+ONYX_DEF(mousemask, (WASM_I64, WASM_I32), (WASM_I64)) {
+    results->data[0] = WASM_I64_VAL(mousemask(P(0, i64), ONYX_PTR(P(1, i32))));
+    return NULL;
+}
+
+ONYX_DEF(wenclone, (WASM_I64, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(wenclone((WINDOW *) P(0, i64), P(1, i32), P(2, i32)));
+    return NULL;
+}
+
+ONYX_DEF(mouse_trafo, (WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(mouse_trafo(ONYX_PTR(P(0, i32)), ONYX_PTR(P(1, i32)), P(2, i32)));
+    return NULL;
+}
+
+ONYX_DEF(wmouse_trafo, (WASM_I64, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(wmouse_trafo((WINDOW *) P(0, i64), ONYX_PTR(P(1, i32)), ONYX_PTR(P(2, i32)), P(3, i32)));
+    return NULL;
+}
+
+ONYX_DEF(mouseinterval, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(mouseinterval(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(is_term_resized, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(is_term_resized(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(resize_term, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(resize_term(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(resizeterm, (WASM_I32, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(resizeterm(P(0, i32), P(1, i32)));
+    return NULL;
+}
+
+ONYX_DEF(scroll, (WASM_I64), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(scroll((WINDOW *) P(0, i64)));
+    return NULL;
+}
+
+ONYX_DEF(scrl, (WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(scrl(P(0, i32)));
+    return NULL;
+}
+
+ONYX_DEF(wscrl, (WASM_I64, WASM_I32), (WASM_I32)) {
+    results->data[0] = WASM_I32_VAL(wscrl((WINDOW *) P(0, i64), P(1, i32)));
+    return NULL;
+}
+
 ONYX_DEF(__get_stdscr, (), (WASM_I64)) {
     results->data[0] = WASM_I64_VAL(__get_stdscr());
     return NULL;
@@ -996,6 +1366,7 @@ ONYX_LIBRARY {
     ONYX_FUNC(newterm)
     ONYX_FUNC(set_term)
     ONYX_FUNC(delscreen)
+    ONYX_FUNC(exit_curses)
     ONYX_FUNC(start_color)
     ONYX_FUNC(has_colors)
     ONYX_FUNC(can_change_color)
@@ -1182,6 +1553,79 @@ ONYX_LIBRARY {
     ONYX_FUNC(mvwhline)
     ONYX_FUNC(mvvline)
     ONYX_FUNC(mvwvline)
+    ONYX_FUNC(allow_pair)
+    ONYX_FUNC(find_pair)
+    ONYX_FUNC(free_pair)
+    ONYX_FUNC(use_default_colors)
+    ONYX_FUNC(assume_default_colors)
+    ONYX_FUNC(buadrate)
+    ONYX_FUNC(erasechar)
+    ONYX_FUNC(has_ic)
+    ONYX_FUNC(has_il)
+    ONYX_FUNC(killchar)
+    ONYX_FUNC(longname)
+    ONYX_FUNC(term_attrs)
+    ONYX_FUNC(termattrs)
+    ONYX_FUNC(termname)
+    ONYX_FUNC(beep)
+    ONYX_FUNC(flash)
+    ONYX_FUNC(overlay)
+    ONYX_FUNC(overwrite)
+    ONYX_FUNC(copywin)
+    ONYX_FUNC(newpad)
+    ONYX_FUNC(subpad)
+    ONYX_FUNC(prefresh)
+    ONYX_FUNC(pnoutrefresh)
+    ONYX_FUNC(pechochar)
+    ONYX_FUNC(define_key)
+    ONYX_FUNC(keyok)
+    ONYX_FUNC(key_defined)
+    ONYX_FUNC(delch)
+    ONYX_FUNC(wdelch)
+    ONYX_FUNC(mvdelch)
+    ONYX_FUNC(mvwdelch)
+    ONYX_FUNC(deleteln)
+    ONYX_FUNC(wdeleteln)
+    ONYX_FUNC(insdelln)
+    ONYX_FUNC(winsdelln)
+    ONYX_FUNC(insertln)
+    ONYX_FUNC(winsertln)
+    ONYX_FUNC(slk_init)
+    ONYX_FUNC(slk_set)
+    ONYX_FUNC(slk_label)
+    ONYX_FUNC(slk_refresh)
+    ONYX_FUNC(slk_noutrefresh)
+    ONYX_FUNC(slk_clear)
+    ONYX_FUNC(slk_restore)
+    ONYX_FUNC(slk_touch)
+    ONYX_FUNC(slk_attron)
+    ONYX_FUNC(slk_attroff)
+    ONYX_FUNC(slk_attrset)
+    ONYX_FUNC(slk_attr)
+    ONYX_FUNC(slk_color)
+    ONYX_FUNC(getattrs)
+    ONYX_FUNC(getbegx)
+    ONYX_FUNC(getbegy)
+    ONYX_FUNC(getcurx)
+    ONYX_FUNC(getcury)
+    ONYX_FUNC(getmaxx)
+    ONYX_FUNC(getmaxy)
+    ONYX_FUNC(getparx)
+    ONYX_FUNC(getpary)
+    ONYX_FUNC(has_mouse)
+    ONYX_FUNC(getmouse)
+    ONYX_FUNC(ungetmouse)
+    ONYX_FUNC(mousemask)
+    ONYX_FUNC(wenclone)
+    ONYX_FUNC(mouse_trafo)
+    ONYX_FUNC(wmouse_trafo)
+    ONYX_FUNC(mouseinterval)
+    ONYX_FUNC(is_term_resized)
+    ONYX_FUNC(resize_term)
+    ONYX_FUNC(resizeterm)
+    ONYX_FUNC(scroll)
+    ONYX_FUNC(scrl)
+    ONYX_FUNC(wscrl)
     ONYX_FUNC(__get_stdscr)
     ONYX_FUNC(NCURSES_ACS)
     NULL
index ca0c57c57da270458262de8f7c0425096fc8c0d4..e3be48003cbb007ba3792594380468bb36564e22 100755 (executable)
Binary files a/modules/ncurses/onyx_ncurses.so and b/modules/ncurses/onyx_ncurses.so differ