[Xcb] about api changes

Christoph Pfister christophpfister at gmail.com
Wed Jun 13 04:16:54 PDT 2007


Am Mittwoch, 13. Juni 2007 00:02 schrieb Thomas Hunger:
> > Another thing I discovered: for example xcb_char2b_iterator_t
> > (guess that there are others too) is of no use - because there's no
> > function returning such an iterator ... :) I don't think that they
> > really make sense and they could be removed.
>
> This is unfortunally not so simple: The iterators could be used by
> extension protocols. It is true that no CHAR2B is used anywhere
> (yet). A different example is the RECTANGLE iterator. It is not
> needed in xproto, but xfixes has a reply with a list of RECTANGLEs,
> so the iterator is needed.

A possible problem with that (oh - currently I seem to detect them all) is 
when you have one place where you have those elements stored in continuous 
list and one place where you have a non-continuous list. Right, the iterator 
structure itself isn't affected by that, but the accessor functions are - so 
in theory you would need to name the accessor functions not xcb_<it-name>_* 
but xcb_<context>_* - luckily non-continuous lists aren't used much and this 
problem hasn't arised (yet) ...
(Those issues are somewhat the cost we have to pay to use iterators in c; in 
languages like c++ you can handle it way more elegantly).

> Extensions could be installed much later than xproto, so there are two
> possibilities:
>
> 1) The extension creates its own private iterator if it does not
>    exist yet.
> 2) It can expect that an iterator already exists if the type is
>    known.
>
> I believe that 2) is the only way to go. So we should create all
> iterators even if they are not needed.

Okay, 2) seems to be the realistic way - just pray that the worst case 
described above won't happen.

Christoph


More information about the Xcb mailing list