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,
|
||||
result_t* result, size_t* length) {
|
||||
result_t* result, size_t* length, bool allowIncomplete) {
|
||||
char* strEnd = nullptr;
|
||||
|
||||
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
|
||||
return 0;
|
||||
}
|
||||
@@ -83,7 +83,7 @@ int parseSignedInt(const char* str, int base, int minValue, int maxValue,
|
||||
|
||||
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
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -91,20 +91,21 @@ enum PredefinedSymbol : symbol_t {
|
||||
/**
|
||||
* Parse an unsigned int value.
|
||||
* @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 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 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.
|
||||
*/
|
||||
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.
|
||||
* @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 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.
|
||||
|
||||
Reference in New Issue
Block a user