2016-06-07 2 views
0

나는 다음과 같은 열거 형이 C에서 정의한 ++ API는 :파이썬 : C++에서 열거 변수를 검색하는 사용하는 ctypes

RESULT res; 

:

typedef enum RESULT_ENUM 
{ 
    SUCCESS, 
    ERR_INVALID_PORT_DEFINITION, 
    ERR_TOO_MANY_SAMPLES, 
    ERR_RECORDING_THREAD_ALREADY_RUNNING, 
    ERR_RECORDING_WITHOUT_APPLY_SETTINGS, 
    ... 
}RESULT; 

나는 API 및 생성을 사용하여 C++의 프로그램이 그럼 예를 들어, res 내부의 값을 설정하는 API 함수를 사용 :

res = SetProfile(APP_PROFILE); 
res = SetDynamicImageFilter(filterType); 
res = StartCalibration(); 

내가 C 원하는 ctypes을 사용하여 똑같은 (말 그대로) 파이썬 프로그램을 재 작성하십시오. RESULT res;을 pythonic 방식으로 번역하려면 어떻게해야합니까? 함수에서 원하는 결과가 포함되도록하려면 어떻게해야합니까?

는 편집 :

그 기능은 RESULT 열거 일치하는 값을 반환합니다. 파이썬에서 그 열거자를 얻고 싶습니다. 어떻게 할 수 있습니까? 현재 열거 자 값에 해당하는 숫자를 얻고 있습니다.

+0

파이썬에서'enum'을 다시 만드는 것은 언어 디자인에 잘 맞지 않으므로 조금 어색합니다. 예제는 [this post] (http://stackoverflow.com/questions/1546355/using-enums-in-ctypes-structure)를 참조하십시오. – Tim

+0

C++에서'res'는 API에 의해 내부적으로 변하고 C++ 프로그램에서 접근 가능합니다. 파이썬에서 그 동작을 모방하는 방법이 있습니까? C++ API에 따라 변경 될'ctypes' 변수를 생성하는 것과 같은가? – galah92

답변

0

name to value 매핑은 바이너리로 컴파일되지 않습니다.

파이썬에서 가치있는 열거 형 하드 코드의 값을 필요로하는 모든 ctypes 코드.

파이썬 확장에 C++ 코드를 래핑하는 경우 열거 형 값을 모듈의 파이썬 기호로 표시하도록 선택할 수 있습니다.

호출중인 C++ 구현을 제어하는 ​​경우 필요한 enum 값을 반환하는 도우미 함수를 추가 할 수 있습니다.

+0

C++ API를 제어하지 않습니다. 그래서 내가 원하는 것은 열거 형 값을 파이썬 심볼로 노출하는 것입니다. 어떻게해야합니까? – galah92