;;; Helper functions

(define-interface xlib-helper-interface
  (export make-enum-alist->vector
	  make-vector->enum-alist
	  none-resource?
	  none-resource
	  alist-split
	  vector-map!))

;; these are internal interfaces that describe the construction and access
;; functions to all the new datatypes. They are not needed by the user

(define-interface xlib-internal-types-interface
  (export
   
   display? make-display display-Xdisplay display-after-function 
   display-set-after-function! close-display display-message-inport

   window? make-window destroy-window window-Xwindow window-display

   drawable? make-drawable drawable-abstraction drawable-display
   drawable-Xobject

   color? internal-make-color extract-rgb-values create-color color-Xcolor

   colormap? make-colormap free-colormap colormap-display colormap-Xcolormap

   pixel? make-pixel pixel-Xpixel

   gcontext? make-gcontext free-gcontext gcontext? gcontext-display
   gcontext-Xgcontext

   pixmap? make-pixmap free-pixmap pixmap-Xpixmap pixmap-display

   font? make-font font-Xfont font-Xfontstruct font-display font-name
   load-font open-font unload-font close-font

   atom? make-atom atom-Xatom intern-atom

   cursor? make-cursor cursor-display cursor-Xcursor free-cursor

   visual? make-visual visual-Xvisual

   region? make-region destroy-region region-Xregion

   ((event-mask) :syntax) event-mask-all-events
   integer->event-mask event-mask->integer

   integer->state-set state-set->integer
   integer->button button->integer
   integer->is-hint? is-hint?->integer
   integer->notify-mode notify-mode->integer
   integer->notify-detail notify-detail->integer
   integer->visibility-state visibility-state->integer
   integer->place place->integer
   integer->property-state property-state->integer
   integer->colormap-state colormap-state->integer
   integer->mapping-request mapping-request->integer

   ((state state-set button notify-mode notify-detail
     visibility-state place property-state colormap-state
     mapping-request bit-gravity gravity backing-store) :syntax)

   gravity->integer integer->gravity

   make-enum-alist->integer+vector
   make-integer+vector->enum-alist
   make-integer->enum-set make-enum-set->integer
   
   set-window-attribute-alist->integer+vector
   ((set-window-attribute make-set-window-attribute-alist) :syntax)

   ((window-change make-window-change-alist stack-mode) :syntax)
   window-change-alist->integer+vector integer+vector->window-change-alist

   ((window-attribute make-window-attribute-alist) :syntax)
   integer+vector->window-attribute-alist
   
   ((window-class map-state) :syntax)

   ((byte-order bit-order) :syntax)
   integer->byte-order integer->bit-order

   ((fill-rule) :syntax)
   fill-rule->integer integer->fill-rule

   ))