[Xcb] language bindings for xcb

Jeremy Kolb jkolb at brandeis.edu
Mon May 21 05:17:58 PDT 2007


You could use the xslt to generate python code instead of c code if you
wanted.  Then you could make the interface however you want.

Jeremy

Barton C Massey wrote:
> 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
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb



More information about the Xcb mailing list