Andrey Nakin
2013-09-20 b0f3f01bd236b56223d4fbc85aaad61e15062440
	modified:   libscpi/inc/scpi/parser.h
modified: libscpi/src/parser.c
2个文件已修改
52 ■■■■■ 已修改文件
libscpi/inc/scpi/parser.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libscpi/src/parser.c 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libscpi/inc/scpi/parser.h
@@ -54,11 +54,13 @@
    size_t SCPI_ResultInt(scpi_t * context, int32_t val);
    size_t SCPI_ResultDouble(scpi_t * context, double val);
    size_t SCPI_ResultText(scpi_t * context, const char * data);
    size_t SCPI_ResultBool(scpi_t * context, bool_t val);
    bool_t SCPI_ParamInt(scpi_t * context, int32_t * value, bool_t mandatory);
    bool_t SCPI_ParamDouble(scpi_t * context, double * value, bool_t mandatory);
    bool_t SCPI_ParamString(scpi_t * context, const char ** value, size_t * len, bool_t mandatory);
    bool_t SCPI_ParamText(scpi_t * context, const char ** value, size_t * len, bool_t mandatory);    
    bool_t SCPI_ParamBool(scpi_t * context, bool_t * value, bool_t mandatory);
#ifdef    __cplusplus
libscpi/src/parser.c
@@ -364,6 +364,16 @@
}
/**
 * Write boolean value to the result
 * @param context
 * @param val
 * @return
 */
size_t SCPI_ResultBool(scpi_t * context, bool_t val) {
    return SCPI_ResultInt(context, val);
}
/**
 * Write double walue to the result
 * @param context
 * @param val
@@ -567,3 +577,43 @@
    return FALSE;
}
/**
 * Parse boolean parameter
 * @param context
 * @param value
 * @param mandatory
 * @return
 */
bool_t SCPI_ParamBool(scpi_t * context, bool_t * value, bool_t mandatory) {
    const char * param;
    size_t param_len;
    size_t num_len;
    int32_t i;
    if (!value) {
        return FALSE;
    }
    if (!SCPI_ParamString(context, &param, &param_len, mandatory)) {
        return FALSE;
    }
    if (matchPattern("ON", 2, param, param_len)) {
        *value = TRUE;
    } else if (matchPattern("OFF", 3, param, param_len)) {
        *value = FALSE;
    } else {
        num_len = strToLong(param, &i);
        if (num_len != param_len) {
            SCPI_ErrorPush(context, SCPI_ERROR_SUFFIX_NOT_ALLOWED);
            return FALSE;
        }
        *value = i ? TRUE : FALSE;
    }
    return TRUE;
}