
ulx


$@%j%/%(%9%H$N7A<0(J

$@@_Dj(J
	(with-buffer-request (display reqest-code) -> macros.l
	  (data depth)
	  (resource-id wid)
	  (window parent)
	  (chard16 x y)
	  ....
	                )

	

	<- (type-name param)
	$@=g=x$O%Q%1%C%H$NCf?H$N=g=x$KBP1~$7$F$$$k(J
	3,4 $@%P%$%HL\$O%Q%1%C%H$ND9$5$H7h$^$C$F$$$k$N$G8=$l$F$$$J$$!#(J


(defmacro with-buffer-request...
	-> with-buffer-request-function-nolock	-> buffer.l
	-> with-buffer-request-function		-> buffer.l
	-> with-buffer-request-internal

	-> with-buffer
	-> display-invoke-after-function




(open-display
	-> open-x-stream	$@%5!<%P$H$N(Jstream$@@\B3(J
	-> make-buffer
	-> display-connect	$@%5!<%P$H$N#X%W%m%H%3%k$K$h$k@\B33NN)(J

	-> intialize-resource-allocator
	-> intialize-predefined-atoms

	-> close-display


(display-connect
	-> with-buffer-output	; bufmac.l

	-> card8-put		; macros.l $@$G%^%/%m@8@.(J
	-> card16-put
	-> write-sequence-char	; buffer.l
	-> buffer-force-output

	-> with-buffer-input
	-> buffer-input


	with-buffer-output $@$N0z?t$H$7$FM?$($k(J :sizes $@$O(J clx-overlapping-arrays
	$@$N;~$K$7$+;H$o$l$F$$$J$$!#(JULX $@$G$O>JN,$7$F$7$^$C$F$$$$$b$N$H;W$o$l$k(J




(with-buffer-output (buffer) length index . body)
	-> index>=, index+
	buffer-flush

	buffer-boffset $@$r(J (or index (buffer-boffset buffer)),
	buffer-bbuf $@$r(J (buffer-obuf8 buffer) $@$K%;%C%H$9$k!#(J(dynamic extent)
	buffer-boffset, buffer-bbuf $@$O(J read-* $@%^%/%mCf$G=q$-9~$_@h$H$7$F;2>H(J
	$@$5$l$F$$$k(J

	%buffer-sizes $@$r(J macrolet $@$7$F$$$k$,!"(Jclx-overlapping-arrays $@$N(J
	$@;~$K$7$+;HMQ$7$F$$$J$$$H;W$o$l$k!#(J

	lets $@$NCf$K(J buffer-boffset, buffer-bbuf $@$H$"$k$N$O2?$N$?$a$@$+ITL@(J

(write-sequence-char
	 buffer boffset data &optional (start 0) (end (length data)) transform)
	-> write-sequence-card8		(buffer.l)
	-> char->card8 (default transform function)

	transform $@$O%P%$%H$NJQ494X?t(J
	$@;H$o$l$F$$$k$N$O(J display-connect(display.l) $@$H(J
	put-string (macros.l: define-accessor string) $@$@$1!#(J
	$@$$$:$l$b(J transform $@$O;H$o$l$F$$$J$$!#(J
	
	(write-sequence-card8
		-> write-list-card8[-with-transform]
		-> write-simple-array-card8[-with-transform]
		-> write-vector-card8[-with-transform]

		called from:
		write-sequence-char (transform=char->card8)
		write-sequence-int8 (transform=int8->card8)

		write-sequence-int8 $@$OA4$/;H$o$l$F$$$J$$(J

(writing-buffer-chunks (type args decls &body body)
	-> with-buffer-output
	-> buffer-flush

** bufmac.l
(set-buffer-offset (value)
	
	buffer-boffset $@$N@_Dj(J
	clx-overlapping-arrays $@$N>l9g$O(J %buffer-sizes $@$r;2>H$7$F(J
	$@I,MW$K1~$8$F(J buffer-woffset, buffer-loffset $@$NJd@5$r$9$k!#(J

** buffer.l
(buffer-input (buffer vector start end &optional timeout)
	"Read into VECTOR from the buffer stream
	 Timeout, when non-nil, is in seconds
	 Returns non-nil if EOF encountered
	 Returns :TIMEOUT when timeout exceeded

	-> buffer-dead
	-> wrap-buf-input
	-> buffer-input-wait-function


(wrap-buf-input ((buffer) &body body)
	Error recovery wrapper.

	Genera $@$G$O%M%C%H%o!<%/$N%(%i!<$KBP$7$F(J connection close $@$J$I$N=hM}$r(J
	$@9T$J$C$F$$$k$i$7$$$,!"(Jutilisp $@$G$O$?$@$N(J (prog . body)

** dependent.l
(holding-lock
(current-process
(without-interrupts
(process-block
(make-process-lock
	$@JBNs%7%9%F%`MQ(J

(conditional-store
	-> without-interrupts
	$@JBNs%7%9%F%`MQ!)$h$/$o$+$i$:(J

(without-aborts
	???
