[Xcb] language bindings for xcb

Barton C Massey bart at cs.pdx.edu
Sun May 20 19:22:25 PDT 2007


I don't know enough about python's module system to be
helpful there, I'm afraid...

	Bart

In message <200705180001.18470.hto at arcor.de> you wrote:
> Hello, 
> 
> the following problem came up when I reactivated my old python 
> bindings for xcb [1]. It is a more general problem for all 
> object-oriented bindings.
> 
> Each extension (e.g. render) has its own library and header file. To 
> use it from c one uses pkg-config and the appropiate #include.
> 
> In my bindings there is a class "Connection" which connects at 
> __init__ time. Now I can use the basic functions like this:
> 
> >>> import xcb
> >>> c = xcb.Connection()
> >>> win = c.generate_id()
> >>> ...
> 
> The connection object in the first example cannot use e.g. 
> 
> >>> c.render_create_picture(...) 
> 
> because the connection does not now whether the render extension is 
> available at all [2]. The module-source would also need all possible 
> extensions installed at compile time (modules cannot be developed 
> separatly).
> 
> If I follow the c-model for extensions the result would be:
> 
> >>> import render
> >>> render.create_picture(c, ...)
> 
> meaning that the connection is passed as the first argument. The 
> explicit import ensures that either the render extension module is 
> available or an exception is thrown. The extension-modules can also 
> be developed separatly. OTOH this is not very object oriented.
> 
> Another possibility would be to override the __new__ method of the 
> Connection. When __new__ is called it scans for python-xcb-modules 
> and creates an attribute for each found module. Connection could then 
> be used like this:
> 
> >>> c.render.create_picture(...) # module render exists
> 
> After all this the question is: What do you think the api should be 
> like for object-oriented programming languages?
> 
> Tom
> 
> [1] I will put them online next week, I am not at home currently.
> [2] It is possible to do create additional render_xxx methods for
>     the connection class after an "import render" statement. This is
>     not trivial to do from c. I also think that it is not very
>     intuitive.
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb


More information about the Xcb mailing list