基本的に、私はPythonでC APIをラップしています(CFFIを使用しています(これは素晴らしいです))。
私はそのC APIに列挙型を持っています:
typedef enum
{
enum1 = value1;
enum2 = value2;
...
} enumSomething;
Python では、その列挙にある変数の名前を文字列 : として受け取ります"enum1"
。頂きたいですvalue1
。
を使用CFFI
すると、列挙型をラップしてそのメンバーに簡単にアクセスできます (ここに例があります)。ここでの問題は、変数自体ではなく、変数の名前を表す文字列があることです。
したがって、cwrapper.c."enum1"
機能しません (cwrapper
ラップするモジュールの名前であり、ライブラリのラップ中 c
に返される名前です)。ffi.dlopen(libname)
次のように、変数名を文字列として実際の変数にマップする辞書を作成できます。
enum = { "enum1" : cwrapper.c.enum1, "enum2" : cwrapper.c.enum2, ... }
しかし、この時点で、enum を Python 辞書として書き直したほうがよいでしょう。
正規表現を使用して C ファイルを読み取ることもできますが、それを処理するためのより良い方法がまだあると思います。何か案が?