Как я могу преобразовать перечисление C ++ в ctypes.Structure с использованием Python 2.7.2?

Я искал и искал, но я не нашел пример, который делает то, что мне нужно сделать.
я нашел
Как я могу представить Enum в Python?
здесь на SO, но это не распространяется на ctypes.Structure.
Я также нашел
Использование перечислений в ctypes.Structure
здесь на SO, но он включает в себя указатели, с которыми я не знаком.

У меня есть файл заголовка, который включает ende typedef, который мне нужно использовать в ctypes.Structure в файле Python.

Заголовочный файл C ++:

typedef enum {

ID_UNUSED,
ID_DEVICE_NAME,
ID_SCSI,
ID_DEVICE_NUM,
} id_type_et;

Файл Python (как я сейчас это делаю):

class IdTypeEt(ctypes.Structure):

_pack_ = 1
_fields_ = [ ("ID_UNUSED", ctypes.c_int32),
("ID_DEVICE_NAME", ctypes.c_char*64),
("ID_SCSI", ctypes.c_int32),
("ID_DEVICE_NUM", ctypes.c_int32) ]

Любой совет будет принята с благодарностью. Чем проще, тем лучше.

4

Решение

enum это не структура, это целочисленный тип с предопределенным набором значений (константы перечислителя). Не имеет смысла представлять его ctypes.Structure, Вы ищете что-то вроде этого:

from ctypes import c_int

id_type_et = c_int
ID_UNUSED = id_type_et(0)
ID_DEVICE_NAME = id_type_et(1)
ID_SCSI = id_type_et(2)
ID_DEVICE_NUM = id_type_et(3)
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector