get renderers

master
Steve Ayerhart 2021-08-09 15:15:25 -04:00
parent 745db6b657
commit 0e6ec218a6
No known key found for this signature in database
GPG Key ID: 5C815FDF3A00B8BA
2 changed files with 19 additions and 7 deletions

View File

@ -1,11 +1,23 @@
USING: kernel destructors ; USING: kernel destructors alien.c-types alien.data strings sequences ;
USING: bemenu.ffi ; USING: bemenu.ffi ;
IN: bemenu IN: bemenu
TUPLE: bemenu-renderer
ptr name priority ;
: get-text ( -- str ) : get-text ( -- str )
[ [
f bm_menu_new &bm_menu_free f bm_menu_new &bm_menu_free
bm_menu_render bm_menu_render
"hi" "hi"
] with-destructors ; ] with-destructors ;
: bm-get-renderers ( -- renderers )
0 uint32_t <ref> [ bm_get_renderers ] keep uint32_t deref void* <c-direct-array>
[
dup
[ bm_renderer_get_name ]
[ bm_renderer_get_priorty ] bi
bemenu-renderer boa
] { } map-as ;

View File

@ -1,5 +1,4 @@
USING: kernel system combinators alien alien.destructors alien.libraries alien.syntax alien.c-types specialized-arrays ; USING: kernel system combinators alien alien.destructors alien.libraries alien.syntax alien.c-types ;
IN: bemenu.ffi IN: bemenu.ffi
<< "bemenu" { << "bemenu" {
@ -8,6 +7,7 @@ IN: bemenu.ffi
LIBRARY: bemenu LIBRARY: bemenu
C-TYPE: bm_renderer C-TYPE: bm_renderer
C-TYPE: bm_menu C-TYPE: bm_menu
C-TYPE: bm_item C-TYPE: bm_item
@ -18,7 +18,7 @@ C-TYPE: bm_item
! and directory containing renderers with BEMENU_RENDERERS env variable. ! and directory containing renderers with BEMENU_RENDERERS env variable.
! !
! @return true on success, false on failure. ! @return true on success, false on failure.
FUNCTION: bool bm_init ( ) FUNCTION-ALIAS: bemenu-init bool bm_init ( )
! Get list of available renderers. ! Get list of available renderers.
! !
@ -31,9 +31,9 @@ FUNCTION: bm_renderer** bm_get_renderers ( uint32_t *out_nmemb )
! @see @link http://semver.org/ Semantic Versioning @endlink ! @see @link http://semver.org/ Semantic Versioning @endlink
! !
! @return Null terminated C "string" to version string. ! @return Null terminated C "string" to version string.
FUNCTION: c-string bm_version ( ) FUNCTION-ALIAS: bemenu-version c-string bm_version ( )
ENUM: bm_priority ENUM: bm_priorty
! renderer runs in terminal ! renderer runs in terminal
BM_PRIO_TERMINAL BM_PRIO_TERMINAL
! renderer runs in GUI ! renderer runs in GUI
@ -49,7 +49,7 @@ FUNCTION: c-string bm_renderer_get_name ( bm_renderer* renderer )
! !
! @param renderer bm_renderer instance. ! @param renderer bm_renderer instance.
! @return bm_priorty enum value. ! @return bm_priorty enum value.
FUNCTION: bm_priority bm_renderer_get_priority ( bm_renderer* renderer ) FUNCTION: bm_priorty bm_renderer_get_priorty ( bm_renderer* renderer )
ENUM: bm_filter_mode ENUM: bm_filter_mode
BM_FILTER_MODE_DMENU BM_FILTER_MODE_DMENU