고전적 표현들
고전 표현식을 위한 Qiskit C API는 Qiskit에서 사용되는 고전 표현식을 검사할 수 있는 기능을 제공합니다. 이 API를 사용하면 일련의 열거형, 구조체 및 액세서 함수를 통해 표현식 트리를 탐색하고 분석할 수 있습니다. 표현식의 구조를 확인하고, 노드 유형을 식별하며, 유형 정보를 조회하고, 표현식 트리 내 각 노드의 상세 속성에 접근할 수 있습니다. 현재 클래식 표현식은 제어 흐름 API를 통해서만 접근할 수 있으며, 예를 들어 클래식 표현식으로 구성된 쿼리 조건을 조회할 때와 같은 경우가 이에 해당합니다.
이 API의 함수들은 부모 표현식 트리가 존재하는 한 유효한 상태를 유지하는 차용 포인터를 반환하므로, 이러한 포인터를 해제할 필요가 없다는 점에 유의하십시오.
데이터 유형.
QkExprNodeKind
enum QkExprNodeKind
고전적인 표현식 트리에서 나타날 수 있는 다양한 유형의 표현식 노드.
값:
enumerator QkExprNodeKind_Unary
단항 연산식 (예: NOT, 부정)
enumerator QkExprNodeKind_Binary
이항 연산식 (예: AND, OR, 산술 연산 등)
enumerator QkExprNodeKind_Cast
형식 변환 표현식
enumerator QkExprNodeKind_Value
리터럴 값 표현식
enumerator QkExprNodeKind_Var
변수 참조 표현식
enumerator QkExprNodeKind_Stretch
스트레치 표현 (타이밍 관련)
enumerator QkExprNodeKind_Index
지수/하첨자 표현식
QkExprType
enum QkExprType
고전적 표현식에서 사용할 수 있는 데이터 유형.
값:
enumerator QkExprType_Bool
부울 유형
enumerator QkExprType_Duration
기간 유형
enumerator QkExprType_Float
부동 소수점 유형(floating-point type)
enumerator QkExprType_Uint
부호 없는 정수형
QkExprTypeInfo
QkUnaryOpType
enum QkUnaryOpType
단항 식이 가질 수 있는 연산 유형. 값은 고전적 표현 시스템의 Python 관례에 맞춰 1부터 시작합니다.
값:
enumerator QkUnaryOpType_BitNot
비트별 NOT 연산
enumerator QkUnaryOpType_LogicNot
논리 NOT 연산
enumerator QkUnaryOpType_Negate
산술적 부정
QkUnaryExprInfo
struct QkUnaryExprInfo
연산자, 피연산자, 결과 유형 및 상수 여부를 포함하여 단항 식을 설명합니다. qk_expr_unary_info 함수에서 반환됩니다. 이 operand 필드는 단항 연산식의 피연산자를 가리키는 차용된 포인터입니다.
QkUnaryOpType op
단항 연산자
const QkExprNode *피연산자
피연산자 식에 대한 차용된 포인터
QkExprTypeInfo ty
연산의 결과 유형
bool 상수
그 표현식이 상수인지 여부
QkBinaryOpType
enum QkBinaryOpType
이진 식이 가질 수 있는 연산 유형. Python 의 관례에 맞춰 값은 1부터 시작합니다.
값:
enumerator QkBinaryOpType_BitAnd
비트별 AND 연산
enumerator QkBinaryOpType_BitOr
비트별 OR 연산
enumerator QkBinaryOpType_BitXor
비트별 XOR 연산
enumerator QkBinaryOpType_LogicAnd
논리 AND 연산
enumerator QkBinaryOpType_LogicOr
논리 OR 연산
enumerator QkBinaryOpType_Equal
동등성 비교
enumerator QkBinaryOpType_NotEqual
불평등 비교
enumerator QkBinaryOpType_Less
~보다 적음
enumerator QkBinaryOpType_LessEqual
작거나 같음 비교
enumerator QkBinaryOpType_Greater
비교 대상보다 더 큰
enumerator QkBinaryOpType_GreaterEqual
‘보다 크거나 같음’ 비교
enumerator QkBinaryOpType_ShiftLeft
좌측 이동 연산
enumerator QkBinaryOpType_ShiftRight
오른쪽 이동 연산
enumerator QkBinaryOpType_Add
더하기 연산
enumerator QkBinaryOpType_Sub
뺄셈 연산
enumerator QkBinaryOpType_Mul
곱셈 연산
enumerator QkBinaryOpType_Div
나눗셈 연산
QkBinaryExprInfo
struct QkBinaryExprInfo
연산자, 피연산자, 결과 유형 및 상수 여부를 포함하여 이항 식을 설명합니다. qk_expr_binary_info 함수에서 반환됩니다. 및 right 필드는 left 이항 연산식의 피연산자를 가리키는 차용 포인터입니다.
QkBinaryOpType op
이항 연산자
const QkExprNode *left
왼쪽 피연산자 표현식을 가리키는 차용된 포인터
const QkExprNode *right
올바른 피연산자 식을 가리키는 차용된 포인터
QkExprTypeInfo ty
연산의 결과 유형
bool 상수
그 표현식이 상수인지 여부
QkCastExprInfo
struct QkCastExprInfo
피연산자, 대상 유형, 암시적 변환 여부, 상수 여부 등을 포함하여 형 변환 표현식을 설명합니다. qk_expr_cast_info 함수에서 반환됩니다. 이 operand 필드는 형변환 표현식의 피연산자를 가리키는 차용 포인터입니다.
const QkExprNode *피연산자
형변환 중인 피연산자 식을 가리키는 빌린 포인터
QkExprTypeInfo ty
변환의 대상 유형
bool 암시적
캐스팅이 암시적(자동)인지 명시적인지
bool 상수
그 표현식이 상수인지 여부
QkIndexExprInfo
struct QkIndexExprInfo
대상, 인덱스, 결과 유형 및 상수 여부를 포함하여 인덱스 표현식을 설명합니다. qk_expr_index_info 함수에서 반환됩니다. 및 index 필드는 target 인덱스 연산식의 대상 및 인덱스를 가리키는 차용된 포인터입니다.
const QkExprNode *target
인덱싱 대상 표현식을 가리키는 차용된 포인터
const QkExprNode *index
인덱스 표현식에 대한 차용된 포인터
QkExprTypeInfo ty
색인 생성 작업의 결과 유형
bool 상수
그 표현식이 상수인지 여부
QkDurationType
enum QkDurationType
기간 표현에 사용되는 다양한 시간 단위를 나타냅니다.
값:
enumerator QkDurationType_Dt
시스템 시간 단위
enumerator QkDurationType_Ps
picoseconds
enumerator QkDurationType_Ns
나노초
enumerator QkDurationType_Us
마이크로초
enumerator QkDurationType_Ms
밀리초
enumerator QkDurationType_S
초
union QkDurationValue
#include <types.h>
정수형으로 시스템 시간 단위(dt)를 저장하거나, 실수형으로 실제 시간을 저장하는 연합체.
이 유니온은 struct의 QkDurationInfo 일부이므로 직접 사용해서는 안 됩니다.
int64_t dt
QkDurationType_Dt시스템 시간 단위 (이 QkDurationInfo 일 때 ty 활성화됨)
속보
실시간 값 (다른 모든 기간 유형에 적용됨)
QkDurationInfo
struct QkDurationInfo
기간 값을 완전히 표현한 것.
이 ty 필드는 합집합 value 중 어느 필드가 활성 상태인지 결정하는 판별자 역할을 합니다.
C에서 초기화할 때, 다음 사항을 확인하는 것은 사용자의 책임입니다:
value.dt``QkDurationType_Dt가 일 때ty, 지속 시간은 에 정수형으로 저장됩니다.value.time그 외의 모든 기간 유형의 경우, 기간은.에 부동 소수점 값으로 저장됩니다.
QkDurationType ty
기간 단위 유형 (합집합의 판별 기준)
QkDurationValue 값
기간 값
함수
qk_expr_kind
QkExprNodeKind qk_expr_kind(const QkExprNode *expr)
고전식 표현식 노드의 유형을 반환합니다.
예
QKExprNodeKind kind = qk_expr_kind(expr);안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 검사할 표현식 노드에 대한 포인터.
리턴
어떤 구체적인 표현 변형이 expr 포함되어 있는지를 설명하는 kind 열거형입니다.
qk_expr_binary_info
QkBinaryExprInfo qk_expr_binary_info(const QkExprNode *expr)
이진 표현식 노드에서 정보를 추출합니다.
가 이진 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.
예
QkBinaryExprInfo info = qk_expr_binary_info(expr);
const QkExprNode *lhs = info.left;
const QkExprNode *rhs = info.right;안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 이항 표현식 노드를 가리키는 포인터.
리턴
연산자, 피연산자, 결과 유형 및 해당 식이 상수인지 여부를 설명하는 구조체 QkBinaryExprInfo .
qk_expr_unary_info
QkUnaryExprInfo qk_expr_unary_info(const QkExprNode *expr)
단항 식 노드에서 정보를 추출합니다.
가 단항 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.
예
QkUnaryExprInfo info = qk_expr_unary_info(expr);
QkUnaryOpType op = info.op;안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 단항 식 노드를 가리키는 포인터.
리턴
연산자, 피연산자, 결과 유형 및 해당 식이 상수인지 여부를 설명하는 구조체 QkUnaryExprInfo .
qk_expr_cast_info
QkCastExprInfo qk_expr_cast_info(const QkExprNode *expr)
캐스트 표현식 노드에서 정보를 추출합니다.
이 노드가 캐스트 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.
예
QkCastExprInfo info = qk_expr_cast_info(expr);
const QkExprNode *operand = info.operand;안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 형변환 표현식 노드를 가리키는 포인터.
리턴
피연산자, 할당 대상 유형, 형 변환이 암시적인지 여부, 그리고 식이 상수인지 여부를 설명하는 구조체 QkCastExprInfo .
qk_expr_index_info
QkIndexExprInfo qk_expr_index_info(const QkExprNode *expr)
인덱스 표현식 노드에서 정보를 추출합니다.
가 인덱스 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.
예
QkIndexExprInfo info = qk_expr_index_info(expr);
const QkExprNode *target = info.target;
const QkExprNode *index = info.index;안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 인덱스 표현식 노드를 가리키는 포인터.
리턴
인덱스 대상, 인덱스 표현식, 결과 유형 및 해당 표현식이 상수인지 여부를 설명하는 구조체입니다 QkIndexExprInfo .
qk_expr_as_value
const QkValue *qk_expr_as_value(const QkExprNode *expr)
표현식 노드의 기본 값을 보여주는 뷰를 반환합니다.
가 값 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.
예
const QkValue *value = qk_expr_as_value(expr);안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 값 표현식 노드를 가리키는 포인터.
리턴
expr안에 저장된 에 QkValue 대한 포인터.
qk_expr_as_var
const QkVar *qk_expr_as_var(const QkExprNode *expr)
식 노드의 기본 변수에 대한 뷰를 반환합니다.
가 변수 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.
예
const QkVar *var = qk_expr_as_var(expr);안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 변수 표현식 노드를 가리키는 포인터.
리턴
expr안에 저장된 에 QkVar 대한 포인터.
qk_expr_as_stretch
const QkStretch *qk_expr_as_stretch(const QkExprNode *expr)
표현식 노드의 기본 구간을 보여주는 뷰를 반환합니다.
가 스트레치 표현식 노드를 가리키지 않으면 expr 오류가 발생합니다.
예
const QkStretch *stretch = qk_expr_as_stretch(expr);안전
QkExprNode가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 expr , 동작은 정의되지 않습니다.
매개변수
- expr – 스트레치 표현식 노드를 가리키는 포인터.
리턴
expr안에 저장된 에 QkStretch 대한 포인터.
qk_value_type_info
QkExprTypeInfo qk_value_type_info(const QkValue *value)
값의 유형 정보를 반환합니다.
예
QkExprTypeInfo type_info = qk_value_type_info(value);안전
Value가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.
매개변수
- value – 검사할 대상에
QkValue대한 포인터.
리턴
값 유형 정보를 포함하는 구조체 QkExprTypeInfo .
qk_value_duration_info
QkDurationInfo qk_value_duration_info(const QkValue *value)
기간 값에서 구조화된 정보를 추출합니다.
가 지속 시간 값을 가리키지 않으면 value 오류가 발생합니다.
예
QkDurationInfo info = qk_value_duration_info(value);안전
QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.
매개변수
- 값 – 지속 시간 값을 가리키는 포인터.
리턴
기간 단위와 원시 값을 포함하는 구조체 QkDurationInfo .
qk_value_float
double qk_value_float(const QkValue *value)
QkValue.에서 부동소수점 값을 추출합니다.
가 부동소수점 값을 가리키지 않으면 value 오류가 발생합니다.
예
double raw = qk_value_float(value);안전
QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.
매개변수
- 값 – float 형 값을 가리키는 포인터.
리턴
value.에 저장된 값은 double
qk_value_uint
uint64_t qk_value_uint(const QkValue *value)
QkExprType_Uint형 QkValue 인 에서 부호 없는 정수 값을 추출합니다.
이 함수를 호출하기 전에 값이 에 uint64_t 들어갈 수 있는지 확인하려면 를 사용해야 qk_value_type_info 합니다.
uint64_t가 QkExprType_Uint 어떤 값도 가리키지 않거나, 저장된 정수 값이 에 들어가지 않을 경우 value 예외가 발생합니다.
예
uint64_t raw = qk_value_uint(value);안전
QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.
매개변수
- 값 – uint 값을 가리키는 포인터.
리턴
정수 값을 변환한 결과 uint64_t.
qk_value_bool
bool qk_value_bool(const QkValue *value)
QkExprType_Bool유형 인 QkValue 에서 값을 추출합니다.
가 bool 값을 가리키지 않으면 value 오류가 발생합니다.
예
bool raw = qk_value_bool(value);안전
QkValue가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 value , 동작은 정의되지 않습니다.
매개변수
- 값 – bool 값을 가리키는 포인터.
리턴
true 저장된 정수 표현이 0이 아닌 경우, 그렇지 않으면 false.
qk_var_name
char *qk_var_name(const QkVar *var)
변수의 이름을 새로 할당된 C 문자열로 반환합니다.
예
char *name = qk_var_name(var);
if (name != NULL) {
// Use the name...
qk_str_free(name);
}안전
QkVar가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 var , 동작은 정의되지 않습니다.
매개변수
- var – 검사할 변수를 가리키는 포인터.
리턴
변수 이름을 포함하는 널 종결 문자열, 또는 NULL if var 가 독립형이 아닌 변수(즉, 고전 비트나 고전 레지스터에 기반한 변수)를 가리키는 경우. qk_str_free호출자는 반환된 문자열을 소유하고 있으므로, 이를.을 사용하여 해제해야 합니다.
qk_var_type_info
QkExprTypeInfo qk_var_type_info(const QkVar *var)
변수에 대한 전체 유형 정보를 반환합니다.
값이 다소 변동성이 있을 경우 var 오류가 발생하는데, 이는 현재 이 API에서 아직 지원되지 않습니다.
예
QkExprTypeInfo type_info = qk_var_type_info(var);안전
QkVar가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 var , 동작은 정의되지 않습니다.
매개변수
- var – 검사할 변수를 가리키는 포인터.
리턴
변수 유형 정보를 포함하는 구조체 QkExprTypeInfo .
qk_stretch_name
char *qk_stretch_name(const QkStretch *stretch)
스트레치의 이름을 반환합니다.
예
char *name = qk_stretch_name(stretch);
// Use the name...
qk_str_free(name);안전
QkStretch가 에 대한 유효하고 null이 아닌 포인터가 아닌 경우 stretch , 동작은 정의되지 않습니다.
매개변수
- stretch – 검사할 stretch에 대한 포인터.
리턴
스트레치 이름이 포함된 널 종결 문자열. qk_str_free호출자는 반환된 문자열의 소유자이므로, 이를.을 사용하여 해제해야 합니다.