Python code -> to C code

Duncan Booth duncan at NOSPAMrcp.co.uk
Wed Apr 30 07:06:03 EDT 2003


Thomas Heller <theller at python.net> wrote in news:bryo1gj6.fsf at python.net:

> Normally this is used to implement "callback functions" in Python, to
> call functions like Windows' EnumWindows(), or to implement COM object
> method tables.
> 
> Does this count as embedding? It seems so, although I have never seen it
> this way.

I think it counts as half of embedding. It lets you call Python from C, 
provided the C was called originally from Python. I don't see that it helps 
at all with the situation in my original posting which was calling Python 
from an otherwise purely C program.

I'm impressed by the example wrapping qsort. I can't think offhand of a way 
to achieve this easily in Pyrex. That is, Pyrex could easily wrap qsort to 
call a specific Python function for the comparison, but there isn't 
anywhere in the qsort callback to store state, and I can't see how you 
manage to convert a Python function into a C level function without some 
additional state.

-- 
Duncan Booth                                             duncan at rcp.co.uk
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?




More information about the Python-list mailing list