88 if (!isRange || !valueFrom || !valueTo || !param) {
98 lex.buffer = param->ptr + 1;
100 lex.len = param->len - 2;
102 for (i = 0; i <= index; i++) {
228 size_t fromDimensions;
231 err =
channelSpec(context, state, valuesFrom, length, &fromDimensions);
235 err =
channelSpec(context, state, valuesTo, length, &toDimensions);
239 if (fromDimensions != toDimensions) {
242 *dimensions = fromDimensions;
245 *dimensions = fromDimensions;
272 if (!isRange || !param || !dimensions || (length && (!valuesFrom || !valuesTo))) {
282 lex.buffer = param->ptr + 1;
283 lex.pos = lex.buffer;
284 lex.len = param->len - 2;
292 for (i = 0; i <= index; i++) {
293 res =
channelRange(context, &lex, isRange, valuesFrom, valuesTo, (i == index) ? length : 0, dimensions);
void SCPI_ErrorPush(scpi_t *context, int16_t err)
@ SCPI_ERROR_SYSTEM_ERROR
@ SCPI_ERROR_EXPRESSION_PARSING_ERROR
@ SCPI_ERROR_DATA_TYPE_ERROR
static scpi_expr_result_t numericRange(lex_state_t *state, scpi_bool_t *isRange, scpi_token_t *valueFrom, scpi_token_t *valueTo)
scpi_expr_result_t SCPI_ExprChannelListEntry(scpi_t *context, scpi_parameter_t *param, int index, scpi_bool_t *isRange, int32_t *valuesFrom, int32_t *valuesTo, size_t length, size_t *dimensions)
scpi_expr_result_t SCPI_ExprNumericListEntry(scpi_t *context, scpi_parameter_t *param, int index, scpi_bool_t *isRange, scpi_parameter_t *valueFrom, scpi_parameter_t *valueTo)
static scpi_expr_result_t channelSpec(scpi_t *context, lex_state_t *state, int32_t *values, size_t length, size_t *dimensions)
static scpi_expr_result_t channelRange(scpi_t *context, lex_state_t *state, scpi_bool_t *isRange, int32_t *valuesFrom, int32_t *valuesTo, size_t length, size_t *dimensions)
scpi_expr_result_t SCPI_ExprNumericListEntryInt(scpi_t *context, scpi_parameter_t *param, int index, scpi_bool_t *isRange, int32_t *valueFrom, int32_t *valueTo)
scpi_expr_result_t SCPI_ExprNumericListEntryDouble(scpi_t *context, scpi_parameter_t *param, int index, scpi_bool_t *isRange, double *valueFrom, double *valueTo)
enum _scpi_expr_result_t scpi_expr_result_t
int scpiLex_DecimalNumericProgramData(lex_state_t *state, scpi_token_t *token)
int scpiLex_SpecificCharacter(lex_state_t *state, scpi_token_t *token, char chr)
int scpiLex_IsEos(lex_state_t *state)
int scpiLex_Comma(lex_state_t *state, scpi_token_t *token)
int scpiLex_Colon(lex_state_t *state, scpi_token_t *token)
scpi_bool_t SCPI_ParamToDouble(scpi_t *context, scpi_parameter_t *parameter, double *value)
scpi_bool_t SCPI_ParamToInt32(scpi_t *context, scpi_parameter_t *parameter, int32_t *value)
@ SCPI_TOKEN_PROGRAM_EXPRESSION
scpi_token_t scpi_parameter_t