동적 타입 지정 시스템
Qiskit의 여러 곳에서는 추가적인 유형과 동작을 런타임에 정의할 수 있습니다. 이들은 일관된 동적 타입 지정 메서드와 헬퍼를 사용하여 이러한 객체를 선언하고 상호 작용할 수 있게 해줍니다.
QkVtableEntry
struct QkVtableEntry
사용자 정의 동작을 가진 객체를 정의하기 위한 vtable의 항목.
C 프로그램의 실행 시점에 객체에 대한 “사용자 정의 동작”을 동적으로 정의할 때, 이 같은 구조가 여러 곳에서 사용됩니다. slot, 및 flag 의 함수 포인터 유형에 대한 유효한 값은 이를 전달하는 컨텍스트에 따라 ptr 달라집니다.
일반적으로 이러한 테이블의 프로그램 정적 변수를 정의할 때는 센티넬 값으로 끝맺게 됩니다 {-1, 0, NULL}. 다양한 Qiskit C API 함수는 이러한 형식의 인자를 받아, “vtable” 핸들을 반환하며, 이 핸들을 사용하여 해당 동작이 적용된 객체의 “인스턴스”를 정의할 수 있습니다.
uint32_t 슬롯
함수의 “슬롯”, 즉 배열의 마지막 요소를 표시하는 (uint32_t)-1 센티넬.
이는 일반적으로 특정 enum 값으로 설정되며, 여기서 ‘특정’ 값은 정의하는 vtable에 따라 enum 달라집니다.
uint32_t 플래그
해당 테이블 항목에 대한 추가 “플래그”가 있는 경우. 이들은 일반적으로 OR 연산(|)으로 결합되며, 유효한 플래그 집합은 테이블 사용자가 문서화합니다.
void *ptr
와 slot 의 조합에 대해 올바른 시그니처를 구현하는 함수 포인터 flags.
이는 오직 NULL 가 센티넬인 slots 경우에만 성립한다 -1.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.