# $Id: TODO,v 1.18 2001/07/09 23:48:12 matju Exp $ #

Typing/Metatyping/Protocol/XRequests

	[x] make new marshalling subsystem based on #xread,#xwrite instead
		of #xpack,#xunpack,#xlength.

	[ ] optional values; move many in_headers to end while making them opt.

	[ ] separate typing from marshalling (two files even?)

	[ ] match errors with requests
	[ ] Allow error handling on async requests

	[ ] separate symmetric stuff from client stuff

	[ ] async requests should return rid instead of nil
	[ ] async'ed sync requests too
	[ ] Display#wait_for should take an optional *list of rids
	[ ] Display#wait_for's block should be optional.

	[x] fix the circular dependencies in Require.
	[ ] make more comfortable, following Ruby guidelines
	[ ] Unused[] should be packable as random numbers, always.
	[x] inheritance on remote methods

	[x] Reimplement PartialTuple on top of Hash

	[ ] XImage

	[ ] XIDs could be held by weakref hashes, so that one remote object
		corresponds to one local object.

	[ ] class Screen < Window, for "root windows"; that object would
		hold display info. rearrange Display's info objects

	[x] all requests (and tuples ?) should also accept a single hash
		instead of the regular arg-list; all requests should allow
		to be passed an in-tuple of the right kind directly.

	[x] add Tuple#to_h, PartialTuple#to_h

	[ ] XID constructors
	[ ] XID destructors (explicit: #close/#free)
		a #close/#free operation should do self.xid = :dead
	[ ] XID destructors (implicit) (?)

	[ ] arrange parameter order for comfort (maybe)

	[ ] make Graphics have GraphicsInfo properties,
		keep a diff, and flush upon graphics request.

	[x] fix Fontable

	[ ] more features from MIT-Xlib

	[x] buffer socket input
		with read(n) never blocking nor returning partial input

	[x] #multi_xreceive does as many xreceives as possible.

Known Bugs

	[ ] test02.rb: make WM_SIZE_HINTS to work
	[ ] bad args to a request causes a seq_num desync
	[ ] see also !@#$ marks in the code

	[ ] Display#set_font_path (Str encoding confl with compiler)
	[ ] Display#list_fonts_with_info (multiple replies impl)
	[ ] Display#send_event (event encoding impl)
	[ ] Window#change_property (for format = 16 or 32)
	[ ] Drawable#get_image

Not tested

	[ ] Display#*grab,#allow_events
	[ ] selections
	[ ] properties (not very much)
	[ ] get_image
	[ ] Display#*input_focus
	[ ] Display#*extension*
	[ ] Display# 100 101 102 103 104
	[ ] Display# 105 106 116 117 118 119
	[ ] Display# 107 108 115
	[ ] Display# 109 110 111 112 113

	[ ] 

	[ ] scan other classes for "not tested"
	[ ] write tests (those can be interactive demos using Hybris)

Other

	[ ] complete the documentation
	[ ] write tests/test_all.rb

Extensions/etc

	[ ] XSHM
	[ ] WM_HINTS
	[ ] ICCCM in general
	[ ] Xatom.h
	[ ] XKB, XInput, etc.
	 * send me your proposals for new extension support

Questions

	[ ] Which name is better, Uint or Card ?
	[ ] Should I make Choices.rb's symbols :like_this instead of :LikeThis ?

Notes

	cvs tag ruby_x11_0_5
	mkdir RubyX11-0.5
	cd RubyX11-0.5
	cvs -d :pserver:matju@cvs.ruby-lang.org:/src \
		export -r ruby_x11_0_5 lib/xlib
	mv lib/xlib/* .
	rmdir lib/xlib
	rmdir lib



/usr/bin/time ruby -r../hybris/tests/boumprofile -rX11/Display X11/Keysyms.rb \
&> startup.prof.foo
