Andrey Nakin
2013-09-23 b83dd1cbc0af5d0a0ca76c1948e648b2582ed75a
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 ? 1 : 0);
}
/**
 * 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;
}