Skip to content

Commit

Permalink
Find info from GIR for a name in a namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
mwunsch committed Mar 7, 2017
1 parent 83e954c commit 0329371
Showing 1 changed file with 35 additions and 3 deletions.
38 changes: 35 additions & 3 deletions ffi/introspection.rkt
Expand Up @@ -6,11 +6,43 @@

(define-ffi-definer define-gir (ffi-lib "libgirepository-1.0"))

(define _GITypelib (_cpointer 'GITypelib))
(define _gi-base-info (_cpointer 'GIBaseInfo))
(define _gi-info-type (_enum '(invalid
function
callback
struct
boxed
enum
flags
object
interface
constant
invalid-0
union
value
signal
vfunc
property
field
arg
type
unresolved)))

(define-gir g_irepository_require (_fun (_pointer = #f) _string _string _int _pointer -> _GITypelib))
(define-gir g_irepository_find_by_name (_fun (_pointer = #f) _string _string -> _pointer))
(define-gir g_base_info_get_namespace (_fun _gi-base-info -> _string))
(define-gir g_base_info_get_name (_fun _gi-base-info -> _string))
(define-gir g_base_info_get_type (_fun _gi-base-info -> _gi-info-type))
(define-gir g_base_info_unref (_fun _gi-base-info -> _void)
#:wrap (deallocator))

(define-gir g_irepository_require (_fun (_pointer = #f) _string _string _int _pointer -> _pointer))
(define-gir g_irepository_get_n_infos (_fun (_pointer = #f) _string -> _int))
(define-gir g_irepository_find_by_name (_fun (_pointer = #f) _string _string -> _gi-base-info)
#:wrap (allocator g_base_info_unref))

(define (gir-require namespace)
(g_irepository_require namespace #f 0 #f))

(define (introspect namespace)
(gir-require namespace)
(lambda (lookup)
(g_irepository_find_by_name namespace lookup)))

0 comments on commit 0329371

Please sign in to comment.