gvalue.rkt
#lang racket/base

;(provide -gvalue)
(require "gtype.rkt" "loadlib.rkt" "object.rkt" ffi/unsafe)

(define-gobject* g-value-init (_fun _pointer _gtype -> _pointer))
(define-gobject* g-value-set-boolean (_fun _pointer _bool -> _void))
(define-gobject* g-value-set-char (_fun _pointer _byte -> _void))
(define-gobject* g-value-set-uchar (_fun _pointer _ubyte -> _void))
(define-gobject* g-value-set-int (_fun _pointer _int -> _void))
(define-gobject* g-value-set-uint (_fun _pointer _uint -> _void))
(define-gobject* g-value-set-long (_fun _pointer _long -> _void))
(define-gobject* g-value-set-ulong (_fun _pointer _ulong -> _void))
(define-gobject* g-value-set-int64 (_fun _pointer _int64 -> _void))
(define-gobject* g-value-set-uint64 (_fun _pointer _uint64 -> _void))
(define-gobject* g-value-set-float (_fun _pointer _float -> _void))
(define-gobject* g-value-set-double (_fun _pointer _double -> _void))
(define-gobject* g-value-set-enum (_fun _pointer _int -> _void))
(define-gobject* g-value-set-flags (_fun _pointer _uint -> _void))
(define-gobject* g-value-set-string (_fun _pointer _string -> _void))
(define-gobject* g-value-set-param (_fun _pointer _pointer -> _void))
(define-gobject* g-value-set-boxed (_fun _pointer _pointer -> _void))
(define-gobject* g-value-set-pointer (_fun _pointer _pointer -> _void))
(define-gobject* g-value-set-object (_fun _pointer _gobject -> _void))

(define-gobject* g-value-get-boolean (_fun _pointer -> _bool))
(define-gobject* g-value-get-char (_fun _pointer -> _byte))
(define-gobject* g-value-get-uchar (_fun _pointer -> _ubyte))
(define-gobject* g-value-get-int (_fun _pointer -> _int))
(define-gobject* g-value-get-uint (_fun _pointer -> _uint))
(define-gobject* g-value-get-long (_fun _pointer -> _long))
(define-gobject* g-value-get-ulong (_fun _pointer -> _ulong))
(define-gobject* g-value-get-int64 (_fun _pointer -> _int64))
(define-gobject* g-value-get-uint64 (_fun _pointer -> _uint64))
(define-gobject* g-value-get-float (_fun _pointer -> _float))
(define-gobject* g-value-get-double (_fun _pointer -> _double))
(define-gobject* g-value-get-enum (_fun _pointer -> _int))
(define-gobject* g-value-get-flags (_fun _pointer -> _uint))
(define-gobject* g-value-get-string (_fun _pointer -> _string))
(define-gobject* g-value-get-param (_fun _pointer -> _pointer))
(define-gobject* g-value-get-boxed (_fun _pointer -> _pointer))
(define-gobject* g-value-get-pointer (_fun _pointer -> _pointer))
(define-gobject* g-value-get-object (_fun _pointer -> _gobject))

(define _gvalue (make-cstruct-type 
                 (list _ulong (make-union-type _int _uint _long _ulong _int64 _uint64 _float _double _pointer))))