;;;
;;; request-stubs.lisp
;;;
;;; Dummied-out X protocol request handlers
;;;
;;; Copyright (C) 2008, Alastair Bridgewater
;;;

(in-package :clxs)

;;;
;;; This file is not intended for compilation.  It is, instead, a
;;; place to put all of the pieces not yet implemented.  As they are
;;; filled in, they are to be moved elsewhere, until this file is
;;; empty and can be deleted.
;;;

(define-x-request create-window (:opcode 1)
    ((opcode :opcode :value 1)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request change-window-attributes (:opcode 2)
    ((opcode :opcode :value 2)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request get-window-attributes (:opcode 3)
    ((opcode :opcode :value 3)
     (length :length :value 2)
     (window :window))
  )

(define-x-request destroy-window (:opcode 4)
    ((opcode :opcode :value 4)
     (length :length :value 2)
     (window :window))
  )

(define-x-request destroy-subwindows (:opcode 5)
    ((opcode :opcode :value 5)
     (length :length :value 2)
     (window :window))
  )

(define-x-request change-save-set (:opcode 6)
    ((opcode :opcode :value 6)
     (mode (:enum :u8 (:insert :delete)))
     (length :length :value 2)
     (window :window))
  )

(define-x-request reparent-window (:opcode 7)
    ((opcode :opcode :value 7)
     (length :length :value 4)
     (window :window)
     (parent :window)
     (x :s16)
     (y :s16))
  )

(define-x-request map-window (:opcode 8)
    ((opcode :opcode :value 8)
     (length :length :value 2)
     (window :window))
  )

(define-x-request map-subwindows (:opcode 9)
    ((opcode :opcode :value 9)
     (length :length :value 2))
  )

(define-x-request unmap-window (:opcode 10)
    ((opcode :opcode :value 10)
     (length :length :value 2)
     (window :window))
  )

(define-x-request unmap-subwindows (:opcode 11)
    ((opcode :opcode :value 11)
     (length :length :value 2)
     (window :window))
  )

(define-x-request configure-window (:opcode 12)
    ((opcode :opcode :value 12)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request circulate-window (:opcode 13)
    ((opcode :opcode :value 13)
     (direction (:enum :u8 (:raise-lowst :lower-highest)))
     (length :length :value 2)
     (window :window))
  )

(define-x-request get-geometry (:opcode 14)
    ((opcode :opcode :value 14)
     (length :length :value 2)
     (drawable :drawable))
  )

(define-x-request query-tree (:opcode 15)
    ((opcode :opcode :value 15)
     (length :length :value 2)
     (window :window))
  )

;; 16: intern-atom             (atoms.lisp)
;; 17: get-atom-name           (atoms.lisp)
;; 18: change-property         (properties.lisp)
;; 19: delete-property         (properties.lisp)
;; 20: get-property            (properties.lisp)
;; 21: list-properties         (properties.lisp)

(define-x-request set-selection-owner (:opcode 22)
    ((opcode :opcode :value 22)
     (length :length :value 4)
     (owner (:union :window (:enum :u32 (:none))))
     (selection :atom)
     (time )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request get-selection-owner (:opcode 23)
    ((opcode :opcode :value 23)
     (length :length :value 2)
     (selection :atom))
  )

(define-x-request convert-selection (:opcode 24)
    ((opcode :opcode :value 24)
     (length :length :value 6)
     (requestor :window)
     (selection :atom)
     (target :atom)
     (property (:union :atom (:enum :u32 (:none))))
     (time )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request send-event (:opcode 25)
    ((opcode :opcode :value 25)
     (propagate :bool)
     (length :length :value 11)
     (destination (:union :window (:enum :u32 (:pointer-window :input-focus))))
     (event-mask :set-of-event)
     (event )) ;; FIXME: 32 octet event structure in "standard format".
  )

(define-x-request grab-pointer (:opcode 26)
    ((opcode :opcode :value 26)
     (owner-events :bool)
     (length :length :value 6)
     (grab-window :window)
     (event-mask :set-of-pointer-event)
     (pointer-mode (:enum :u8 (:synchronous :asynchronous)))
     (keyboard-mode (:enum :u8 (:synchronous :asynchronous)))
     (confine-to (:union :window (:enum :u32 (:none))))
     (cursor (:union :cursor (:enum :u32 (:none))))
     (time )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request ungrab-pointer (:opcode 27)
    ((opcode :opcode :value 27)
     (length :length :value 2)
     (time )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request grab-button (:opcode 28)
    ((opcode :opcode :value 28)
     (owner-events :bool)
     (length :length :value 6)
     (grab-window :window)
     (event-mask :set-of-pointer-event)
     (pointer-mode (:enum :u8 (:synchronous :asynchronous)))
     (keyboard-mode (:enum :u8 (:synchronous :asynchronous)))
     (confine-to (:union :window (:enum :u32 (:none))))
     (cursor (:union :cursor (:enum :u32 (:none))))
     (button ) ;; FIXME: BUTTON or 0 (None), 8-bit type.
     (modifiers )) ;; FIXME: SETofKEYMASK with #x8000 (AnyModifier).
  )

(define-x-request ungrab-button (:opcode 29)
    ((opcode :opcode :value 29)
     (button ) ;; FIXME: BUTTON or 0 (None), 8-bit type.
     (length :length :value 3)
     (grab-window :window)
     (modifiers )) ;; FIXME: SETofKEYMASK with #x8000 (AnyModifier).
  )

(define-x-request change-active-pointer-grab (:opcode 30)
    ((opcode :opcode :value 30)
     (length :length :value 4)
     (cursor (:union :cursor (:enum :u32 (:none))))
     (time ) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
     (event-mask :set-of-pointer-event))
  )

(define-x-request grab-keyboard (:opcode 31)
    ((opcode :opcode :value 31)
     (owner-events :bool)
     (length :length :value 4)
     (grab-window :window)
     (time ) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
     (pointer-mode (:enum :u8 (:synchronous :asynchronous)))
     (keyboard-mode (:enum :u8 (:synchronous :asynchronous))))
  )

(define-x-request ungrab-keyboard (:opcode 32)
    ((opcode :opcode :value 32)
     (length :length :value 2)
     (time )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request grab-key (:opcode 33)
    ((opcode :opcode :value 33)
     (owner-events :bool)
     (length :length :value 4)
     (grab-window :window)
     (modifiers ) ;; FIXME: SETofKEYMASK with #x8000 (AnyModifier).
     (key ) ;; FIXME: KEYCODE or 0 (AnyKey), 8-bit type.
     (pointer-mode (:enum :u8 (:synchronous :asynchronous)))
     (keyboard-mode (:enum :u8 (:synchronous :asynchronous))))
  )

(define-x-request ungrab-key (:opcode 34)
    ((opcode :opcode :value 34)
     (key ) ;; FIXME: KEYCODE or 0 (AnyKey), 8-bit type.
     (length :length :value 3)
     (grab-window :window)
     (modifiers )) ;; FIXME: SETofKEYMASK with #x8000 (AnyModifier).
  )

(define-x-request allow-events (:opcode 35)
    ((opcode :opcode :value 35)
     (mode (:enum :u8 (:async-pointer :sync-pointer :replay-pointer
		       :async-keyboard :sync-keyboard :replay-keyboard
		       :async-both :sync-both)))
     (length :length :value 2)
     (time )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request grab-server (:opcode 36)
    ((opcode :opcode :value 36)
     (length :length :value 1))
  )

(define-x-request ungrab-server (:opcode 37)
    ((opcode :opcode :value 37)
     (length :length :value 1))
  )

(define-x-request query-pointer (:opcode 38)
    ((opcode :opcode :value 38)
     (length :length :value 2)
     (window :window))
  )

(define-x-request get-motion-events (:opcode 39)
    ((opcode :opcode :value 39)
     (length :length :value 4)
     (window :window)
     (start ) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
     (stop )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request translate-coordinates (:opcode 40)
    ((opcode :opcode :value 40)
     (length :length :value 4)
     (src-window :window)
     (dst-window :window)
     (src-x :s16)
     (src-y :s16))
  )

(define-x-request warp-pointer (:opcode 41)
    ((opcode :opcode :value 41)
     (length :length :value 6)
     (src-window (:union :window (:enum :u32 (:none))))
     (dst-window (:union :window (:enum :u32 (:none))))
     (src-x :s16)
     (src-y :s16)
     (src-width :u16)
     (src-height :u16)
     (dst-x :s16)
     (dst-y :s16))
  )

(define-x-request set-input-focus (:opcode 42)
    ((opcode :opcode :value 42)
     (revert-to (:enum :u8 (:none :pointer-root :parent)))
     (length :length :value 3)
     (focus (:union :window (:enum :u32 (:none :pointer-root))))
     (time )) ;; FIXME: TIMESTAMP or 0 (CurrentTime).
  )

(define-x-request get-input-focus (:opcode 43)
    ((opcode :opcode :value 43)
     (length :length :value 1))
  )

(define-x-request query-keymap (:opcode 44)
    ((opcode :opcode :value 44)
     (length :length :value 1))
  )

(define-x-request open-font (:opcode 45)
    ((opcode :opcode :value 45)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request close-font (:opcode 46)
    ((opcode :opcode :value 46)
     (length :length :value 2)
     (font :font))
  )

(define-x-request query-font (:opcode 47)
    ((opcode :opcode :value 47)
     (length :length :value 2)
     (font :fontable))
  )

(define-x-request query-text-extents (:opcode 48)
    ((opcode :opcode :value 48)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request list-fonts (:opcode 49)
    ((opcode :opcode :value 49)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request list-fonts-with-info (:opcode 50)
    ((opcode :opcode :value 50)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request set-font-path (:opcode 51)
    ((opcode :opcode :value 51)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request get-font-path (:opcode 52)
    ((opcode :opcode :value 52)
     (length :length :value 1))
  )

(define-x-request create-pixmap (:opcode 53)
    ((opcode :opcode :value 53)
     (depth :u8)
     (length :length :value 4)
     (pid :new-resource-id)
     (drawable :drawable)
     (width :u16)
     (height :u16))
  )

(define-x-request free-pixmap (:opcode 54)
    ((opcode :opcode :value 54)
     (length :length :value 2)
     (pixmap :pixmap))
  )

(define-x-request create-gc (:opcode 55)
    ((opcode :opcode :value 55)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request change-gc (:opcode 56)
    ((opcode :opcode :value 56)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request copy-gc (:opcode 57)
    ((opcode :opcode :value 57)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request set-dashes (:opcode 58)
    ((opcode :opcode :value 58)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request set-clip-rectangles (:opcode 59)
    ((opcode :opcode :value 59)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request free-gc (:opcode 60)
    ((opcode :opcode :value 60)
     (length :length :value 2)
     (gc :gcontext))
  )

(define-x-request clear-area (:opcode 61)
    ((opcode :opcode :value 61)
     (exposures :bool)
     (length :length :value 4)
     (window :window)
     (x :s16)
     (y :s16)
     (width :u16)
     (height :u16))
  )

(define-x-request copy-area (:opcode 62)
    ((opcode :opcode :value 62)
     (length :length :value 7)
     (src-drawable :drawable)
     (dst-drawable :drawable)
     (gc :gcontext)
     (src-x :s16)
     (src-y :s16)
     (dst-x :s16)
     (dst-y :s16)
     (width :u16)
     (height :u16))
  )

(define-x-request copy-plane (:opcode 63)
    ((opcode :opcode :value 63)
     (length :length :value 8)
     (src-drawable :drawable)
     (dst-drawable :drawable)
     (gc :gcontext)
     (src-x :s16)
     (src-y :s16)
     (dst-x :s16)
     (dst-y :s16)
     (width :u16)
     (height :u16)
     (bit-plane :u32))
  )

(define-x-request poly-point (:opcode 64)
    ((opcode :opcode :value 64)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request poly-line (:opcode 65)
    ((opcode :opcode :value 65)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request poly-segment (:opcode 66)
    ((opcode :opcode :value 66)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request poly-rectangle (:opcode 67)
    ((opcode :opcode :value 67)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request poly-arc (:opcode 68)
    ((opcode :opcode :value 68)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request fill-poly (:opcode 69)
    ((opcode :opcode :value 69)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request poly-fill-rectangle (:opcode 70)
    ((opcode :opcode :value 70)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request poly-fill-arc (:opcode 71)
    ((opcode :opcode :value 71)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request put-image (:opcode 72)
    ((opcode :opcode :value 72)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request get-image (:opcode 73)
    ((opcode :opcode :value 73)
     (format (:enum :u8 (nil :xy-pixmap :z-pixmap)))
     (length :length :value 5)
     (drawable :drawable)
     (x :s16)
     (y :s16)
     (width :u16)
     (height :u16)
     (plane-mask :u32))
  )

(define-x-request poly-text-8 (:opcode 74)
    ((opcode :opcode :value 74)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request poly-text-16 (:opcode 75)
    ((opcode :opcode :value 75)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request image-text-8 (:opcode 76)
    ((opcode :opcode :value 76)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request image-text-16 (:opcode 77)
    ((opcode :opcode :value 77)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request create-colormap (:opcode 78)
    ((opcode :opcode :value 78)
     (alloc (:enum :u8 (:none :all)))
     (length :length :value 4)
     (mid :new-resource-id)
     (window :window)
     (visual :visualid))
  )

(define-x-request free-colormap (:opcode 79)
    ((opcode :opcode :value 79)
     (length :length :value 2)
     (cmap :colormap))
  )

(define-x-request copy-colormap-and-free (:opcode 80)
    ((opcode :opcode :value 80)
     (length :length :value 3)
     (mid :colormap) ;; FIXME: Check to see if this should be :new-resource-id.
     (src-cmap :colormap))
  )

(define-x-request install-colormap (:opcode 81)
    ((opcode :opcode :value 81)
     (length :length :value 2)
     (cmap :colormap))
  )

(define-x-request uninstall-colormap (:opcode 82)
    ((opcode :opcode :value 82)
     (length :length :value 2)
     (cmap :colormap))
  )

(define-x-request list-installed-colormaps (:opcode 83)
    ((opcode :opcode :value 83)
     (length :length :value 2)
     (window :window))
  )

(define-x-request alloc-color (:opcode 84)
    ((opcode :opcode :value 84)
     (length :length :value 4)
     (cmap :colormap)
     (red :u16)
     (green :u16)
     (blue :u16))
  )

(define-x-request alloc-named-color (:opcode 85)
    ((opcode :opcode :value 85)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request alloc-color-cells (:opcode 86)
    ((opcode :opcode :value 86)
     (contiguous :bool)
     (length :length :value 3)
     (cmap :colormap)
     (colors :u16)
     (planes :u16))
  )

(define-x-request alloc-color-planes (:opcode 87)
    ((opcode :opcode :value 87)
     (contiguous :bool)
     (length :length :value 4)
     (cmap :colormap)
     (colors :u16)
     (reds :u16)
     (greens :u16)
     (blues :u16))
  )

(define-x-request free-colors (:opcode 88)
    ((opcode :opcode :value 88)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request store-coloros (:opcode 89)
    ((opcode :opcode :value 89)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request store-named-color (:opcode 90)
    ((opcode :opcode :value 90)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request query-colors (:opcode 91)
    ((opcode :opcode :value 91)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request lookup-color (:opcode 92)
    ((opcode :opcode :value 92)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request create-cursor (:opcode 93)
    ((opcode :opcode :value 93)
     (length :length :value 8)
     (cid :new-resource-id)
     (source :pixmap)
     (mask (:union :pixmap (:enum :u32 (:none))))
     (fore-red :u16)
     (fore-green :u16)
     (fore-blue :u16)
     (back-red :u16)
     (back-green :u16)
     (back-blue :u16)
     (x :u16)
     (y :u16))
  )

(define-x-request create-glyph-cursor (:opcode 94)
    ((opcode :opcode :value 94)
     (length :length :value 8)
     (cid :new-resource-id)
     (source-font :font)
     (mask-font (:union :font (:enum :u32 (:none))))
     (source-char :u16)
     (mask-char :u16)
     (fore-red :u16)
     (fore-green :u16)
     (fore-blue :u16)
     (back-red :u16)
     (back-green :u16)
     (back-blue :u16))
  )

(define-x-request free-cursor (:opcode 95)
    ((opcode :opcode :value 95)
     (length :length :value 2)
     (cursor :cursor))
  )

(define-x-request recolor-cursor (:opcode 96)
    ((opcode :opcode :value 96)
     (length :length :value 5)
     (cursor :cursor)
     (fore-red :u16)
     (fore-green :u16)
     (fore-blue :u16)
     (back-red :u16)
     (back-green :u16)
     (back-blue :u16))
  )

(define-x-request query-best-size (:opcode 97)
    ((opcode :opcode :value 97)
     (class (:enum :u8 (:cursor :tile :stipple)))
     (length :length :value 3)
     (drawable :drawable)
     (width :u16)
     (height :u16))
  )

(define-x-request query-extension (:opcode 98)
    ((opcode :opcode :value 98)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request list-extensions (:opcode 99)
    ((opcode :opcode :value 99)
     (length :length :value 1))
  )

(define-x-request change-keyboard-mapping (:opcode 100)
    ((opcode :opcode :value 100)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request get-keyboard-mapping (:opcode 101)
    ((opcode :opcode :value 101)
     (length :length :value 2)
     (first-keycode ) ;; FIXME: KEYCODE, 8-bit type.
     (count :u8))
  )

(define-x-request change-keyboard-control (:opcode 102)
    ((opcode :opcode :value 102)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request get-keyboard-control (:opcode 103)
    ((opcode :opcode :value 103)
     (length :length :value 1))
  )

(define-x-request bell (:opcode 104)
    ((opcode :opcode :value 104)
     (percent :u8)
     (length :length :value 1))
  )

(define-x-request change-pointer-control (:opcode 105)
    ((opcode :opcode :value 105)
     (length :length :value 3)
     (acceleration-numerator :s16)
     (acceleration-denominator :s16)
     (threshhold :s16)
     (do-acceleration :bool)
     (do-threshhold :bool))
  )

(define-x-request get-pointer-control (:opcode 106)
    ((opcode :opcode :value 106)
     (length :length :value 1))
  )

(define-x-request set-screen-saver (:opcode 107)
    ((opcode :opcode :value 107)
     (length :length :value 3)
     (timeout :s16)
     (interval :s16)
     (prefer-blanking (:enum :u8 (:no :yes :default)))
     (allow-exposures (:enum :u8 (:no :yes :default))))
  )

(define-x-request get-screen-saver (:opcode 108)
    ((opcode :opcode :value 108)
     (length :length :value 1))
  )

(define-x-request change-hosts (:opcode 109)
    ((opcode :opcode :value 109)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request list-hosts (:opcode 110)
    ((opcode :opcode :value 110)
     (length :length :value 1))
  )

(define-x-request set-access-control (:opcode 111)
    ((opcode :opcode :value 111)
     (mode (:enum :u8 (:disable :enable)))
     (length :length :value 1))
  )

(define-x-request set-close-down-mode (:opcode 112)
    ((opcode :opcode :value 112)
     (mode (:enum :u8 (:destroy :retain-permanent :retain-temporary)))
     (length :length :value 1))
  )

(define-x-request kill-client (:opcode 113)
    ((opcode :opcode :value 113)
     (length :length :value 2)
     (resource )) ;; FIXME: CARD32 or 0 (AllTemporary), presumably must be valid resource or in a valid resource allocation region.
  )

;; 114: rotate-properties      (properties.lisp)

(define-x-request force-screen-saver (:opcode 115)
    ((opcode :opcode :value 115)
     (mode (:enum :u8 (:reset :activate)))
     (length :length :value 1))
  )

(define-x-request set-pointer-mapping (:opcode 116)
    ((opcode :opcode :value 116)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request get-pointer-mapping (:opcode 117)
    ((opcode :opcode :value 117)
     (length :length :value 1))
  )

(define-x-request set-modifier-mapping (:opcode 118)
    ((opcode :opcode :value 118)
     (length :length :value ...))
  ;; FIXME: Fill in.
  )

(define-x-request get-modifier-mapping (:opcode 119)
    ((opcode :opcode :value 119)
     (length :length :value 1))
  )

(define-x-request no-operation (:opcode 127)
    ((opcode :opcode :value 127)
     (length :length)) ;; NOTE: No length validation.
  )


;;; EOF
