add option to parse partial to parseInt()

This commit is contained in:
John
2024-12-31 07:29:44 +01:00
parent 58e6ec86f0
commit 6f16175e67
2 changed files with 7 additions and 6 deletions
+3 -3
View File
@@ -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;
}
+4 -3
View File
@@ -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.