add option to parse partial to parseInt()
This commit is contained in:
@@ -56,12 +56,12 @@ static const symbol_t CRC_LOOKUP_TABLE[] = {
|
|||||||
|
|
||||||
|
|
||||||
unsigned int parseInt(const char* str, int base, unsigned int minValue, unsigned int maxValue,
|
unsigned int parseInt(const char* str, int base, unsigned int minValue, unsigned int maxValue,
|
||||||
result_t* result, size_t* length) {
|
result_t* result, size_t* length, bool allowIncomplete) {
|
||||||
char* strEnd = nullptr;
|
char* strEnd = nullptr;
|
||||||
|
|
||||||
unsigned long ret = strtoul(str, &strEnd, base);
|
unsigned long ret = strtoul(str, &strEnd, base);
|
||||||
|
|
||||||
if (strEnd == nullptr || strEnd == str || *strEnd != 0) {
|
if (strEnd == nullptr || strEnd == str || (!allowIncomplete && *strEnd != 0)) {
|
||||||
*result = RESULT_ERR_INVALID_NUM; // invalid value
|
*result = RESULT_ERR_INVALID_NUM; // invalid value
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -83,7 +83,7 @@ int parseSignedInt(const char* str, int base, int minValue, int maxValue,
|
|||||||
|
|
||||||
long ret = strtol(str, &strEnd, base);
|
long ret = strtol(str, &strEnd, base);
|
||||||
|
|
||||||
if (strEnd == nullptr || (!allowIncomplete && *strEnd != 0)) {
|
if (strEnd == nullptr || strEnd == str || (!allowIncomplete && *strEnd != 0)) {
|
||||||
*result = RESULT_ERR_INVALID_NUM; // invalid value
|
*result = RESULT_ERR_INVALID_NUM; // invalid value
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,20 +91,21 @@ enum PredefinedSymbol : symbol_t {
|
|||||||
/**
|
/**
|
||||||
* Parse an unsigned int value.
|
* Parse an unsigned int value.
|
||||||
* @param str the string to parse.
|
* @param str the string to parse.
|
||||||
* @param base the numerical base.
|
* @param base the numerical base (or 0 to determine from the prefix).
|
||||||
* @param minValue the minimum resulting value.
|
* @param minValue the minimum resulting value.
|
||||||
* @param maxValue the maximum resulting value.
|
* @param maxValue the maximum resulting value.
|
||||||
* @param result the variable in which to store an error code when parsing failed or the value is out of bounds.
|
* @param result the variable in which to store an error code when parsing failed or the value is out of bounds.
|
||||||
* @param length the optional variable in which to store the number of read characters.
|
* @param length the optional variable in which to store the number of read characters.
|
||||||
|
* @param allowIncomplete true to allow parsing less than the complete string.
|
||||||
* @return the parsed value.
|
* @return the parsed value.
|
||||||
*/
|
*/
|
||||||
unsigned int parseInt(const char* str, int base, unsigned int minValue, unsigned int maxValue,
|
unsigned int parseInt(const char* str, int base, unsigned int minValue, unsigned int maxValue,
|
||||||
result_t* result, size_t* length = nullptr);
|
result_t* result, size_t* length = nullptr, bool allowIncomplete = false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a signed int value.
|
* Parse a signed int value.
|
||||||
* @param str the string to parse.
|
* @param str the string to parse.
|
||||||
* @param base the numerical base.
|
* @param base the numerical base (or 0 to determine from the prefix).
|
||||||
* @param minValue the minimum resulting value.
|
* @param minValue the minimum resulting value.
|
||||||
* @param maxValue the maximum resulting value.
|
* @param maxValue the maximum resulting value.
|
||||||
* @param result the variable in which to store an error code when parsing failed or the value is out of bounds.
|
* @param result the variable in which to store an error code when parsing failed or the value is out of bounds.
|
||||||
|
|||||||
Reference in New Issue
Block a user