How to use C enum in Python CTypes?

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Tue Aug 7 08:11:28 CEST 2007


On Tue, 07 Aug 2007 04:57:19 +0000, rozniy wrote:

> typedef enum olss_tag
>    {
>    OLSS_AD,
>    OLSS_DA,
>    OLSS_DIN,
>    OLSS_DOUT,
>    OLSS_SRL,
>    OLSS_CT
>    }
> OLSS;
> 
> I managed to fudge the HDEV, UINT and PHDASS types as CTypes c_long(),
> but I am not sure how translate a C enum into Python...
> 
> This site
> http://python.net/crew/theller/ctypes/tutorial.html#bugs-todo-and-non-implemented-things
> 
> says that enumeration types is not implemented,
> "Enumeration types are not implemented. You can do it easily yourself,
> using c_int as the base class."

I would just define constants:

(OLSS_AD,
 OLSS_DA,
 OLSS_DIN,
 OLSS_DOUT,
 OLSS_SRL,
 OLSS_CT) = map(ctypes.c_int, xrange(6))

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list