defines or C vars visible to python?

Tom Morton tmorton at yikesstation.freeserve.co.uk
Sun Mar 5 00:37:19 CET 2000


"Fredrik Lundh" <effbot at telia.com> wrote:
>Tom Morton wrote:
>> I'm writing a small colour ncurses module (in C) for a python project of
>mine.
>> I've had no real trouble apart from one point: Various colours are defined
>in
>> the module as:
>> #define COL_RED 1
>> etc.
>> Is there any way I can make these visible to python when the module is
>> imported, so instead of using numbers I can do this:
>>
>> cursesmod.changecol(COL_RED)
>>
>> instead of:
>>
>> cursesmod.changecol(1)
>>
>> I've probaby missed something in the Python/C api docs but it's driving me
>> insane!
>
>just add them to the module dictionary:
>
>static void
>setint(PyObject *d, char* name, int value)
>{
>    PyObject *v = PyInt_FromLong(value);
>    if (!v || PyDict_SetItemString(d, name, v))
>        PyErr_Clear(); /* just ignore errors */
>    Py_XDECREF(v);
>}
>
>init_mymodule()
>{
>    PyObject* m;
>    PyObject* d;
>
>    m = Py_InitModule("mymodule", myfunctions);
>    d = PyModule_GetDict(m);
>
>    setint(d, "MY_CONSTANT", MY_CONSTANT);
>    /* etc */
>}
>
>hope this helps!
>

Thanks! It works great now!

-- 
Tom Morton, Drangband Maintainer:
http://www.yikesstation.freeserve.co.uk/drang/drang.htm
Yikes Station, Frontier Elite 2 Fansite:
http://www.yikesstation.freeserve.co.uk/frontier/yikes.htm



More information about the Python-list mailing list