;;;
;;; newlisp ncurses example
;;;
(set 'buffer "newlisp * ncurses How simple can it get :) press a key!")
;;; import functions from ncurses lib
(set 'ncfuncs '( "initscr" "box" "newwin" "endwin" "delwin" "wgetch" "wrefresh" "mvwprintw" ))
(define (import-ncurses) (dolist (x ncfuncs ) (import "/lib/libncurses.so.5" x)))
;;; Newlisp-Ncurses
(import-ncurses)
(initscr)
(set 'window (newwin 3 80 0 0 ))
(box window 0 0)
(mvwprintw window 1 1 buffer )
(wrefresh window)
(wgetch window)
(delwin window)
(endwin)
;;; exit
(exit)
5 Cent tip for today [ Ncurses ]
5 Cent tip for today [ Ncurses ]
-- (define? (Cornflakes))
Wonderful Norman, your ncurses example is amazing!
About 'get-integer', 'get-float' etc.: you only need those when the return value from your 'C' function is a pointer to those. As some of the curses functions take and return pointers you can receive and feed them back directly.
You can even retrieve structure members when structure pointers come back using those get-xxxx functions and adding offsets to the pointers (see mysql.lsp).
Lutz
About 'get-integer', 'get-float' etc.: you only need those when the return value from your 'C' function is a pointer to those. As some of the curses functions take and return pointers you can receive and feed them back directly.
You can even retrieve structure members when structure pointers come back using those get-xxxx functions and adding offsets to the pointers (see mysql.lsp).
Lutz
-
- Posts: 7
- Joined: Thu Jul 05, 2012 5:24 am
Re: 5 Cent tip for today [ Ncurses ]
How does the foreign function interface treat C-preprocessor macros? Some `functions' in the ncurses library, such as getyx, are really macros and would screw up for example the simple ffi of Clisp. (The backdoor is then to write wrapper code in C and link it against the Clisp library.)
Klaus Schilling
Klaus Schilling
Re: 5 Cent tip for today [ Ncurses ]
Both FFI flavors in newLISP - the simple and the libffi based - will not import macros. But on the BSD manual page for getcurx on OSX its says "All of these interfaces are provided as macros and functions". But instead of getyx use getcurx and getcury on the ncurses lib.