cffi の下に列挙型を定義するとします。
from cffi import FFI
ffi = FFI()
ffi.cdef('typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy;')
これで、再度呼び出すときに簡単にアクセスできますcdef
。しかし、再宣言せずに、Pythonでこの列挙型にアクセスするにはどうすればよいでしょうか? ドキュメントに言及が見つかりません。
cffi の下に列挙型を定義するとします。
from cffi import FFI
ffi = FFI()
ffi.cdef('typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy;')
これで、再度呼び出すときに簡単にアクセスできますcdef
。しかし、再宣言せずに、Pythonでこの列挙型にアクセスするにはどうすればよいでしょうか? ドキュメントに言及が見つかりません。
を使用ffi.dlopen
し、 の戻り値を使用して修飾することにより、列挙値にアクセスしますffi.dlopen
。
>>> from cffi import FFI
>>> ffi = FFI()
>>> ffi.cdef('typedef enum {RANDOM, IMMEDIATE, SEARCH} strategy;')
>>> c = ffi.dlopen('c')
>>> c.RANDOM
0
>>> c.IMMEDIATE
1
>>> c.SEARCH
2
ライブラリをラップした場合は、上記と同じものを次のように使用できます。
import _wrappedlib
print _wrappedlib.lib.RANDOM