mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
Avoid use of goto in FormatSpec::useCharacter
This commit is contained in:
@@ -22,29 +22,29 @@ void FormatSpec::useCharacter(int c) {
|
|||||||
case ' ':
|
case ' ':
|
||||||
case '+':
|
case '+':
|
||||||
if (state > FORMAT_SIGN) {
|
if (state > FORMAT_SIGN) {
|
||||||
goto invalid;
|
break;
|
||||||
}
|
}
|
||||||
state = FORMAT_EXACT;
|
state = FORMAT_EXACT;
|
||||||
sign = c;
|
sign = c;
|
||||||
break;
|
return;
|
||||||
|
|
||||||
// exact
|
// exact
|
||||||
case '#':
|
case '#':
|
||||||
if (state > FORMAT_EXACT) {
|
if (state > FORMAT_EXACT) {
|
||||||
goto invalid;
|
break;
|
||||||
}
|
}
|
||||||
state = FORMAT_ALIGN;
|
state = FORMAT_ALIGN;
|
||||||
exact = true;
|
exact = true;
|
||||||
break;
|
return;
|
||||||
|
|
||||||
// align
|
// align
|
||||||
case '-':
|
case '-':
|
||||||
if (state > FORMAT_ALIGN) {
|
if (state > FORMAT_ALIGN) {
|
||||||
goto invalid;
|
break;
|
||||||
}
|
}
|
||||||
state = FORMAT_WIDTH;
|
state = FORMAT_WIDTH;
|
||||||
alignLeft = true;
|
alignLeft = true;
|
||||||
break;
|
return;
|
||||||
|
|
||||||
// pad, width, and prec values
|
// pad, width, and prec values
|
||||||
case '0':
|
case '0':
|
||||||
@@ -71,27 +71,27 @@ void FormatSpec::useCharacter(int c) {
|
|||||||
} else if (state == FORMAT_PREC) {
|
} else if (state == FORMAT_PREC) {
|
||||||
precision = precision * 10 + (c - '0');
|
precision = precision * 10 + (c - '0');
|
||||||
} else {
|
} else {
|
||||||
goto invalid;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
return;
|
||||||
|
|
||||||
// width
|
// width
|
||||||
case '.':
|
case '.':
|
||||||
if (state > FORMAT_WIDTH) {
|
if (state > FORMAT_WIDTH) {
|
||||||
goto invalid;
|
break;
|
||||||
}
|
}
|
||||||
state = FORMAT_FRAC;
|
state = FORMAT_FRAC;
|
||||||
hasFrac = true;
|
hasFrac = true;
|
||||||
break;
|
return;
|
||||||
|
|
||||||
// prec
|
// prec
|
||||||
case 'q':
|
case 'q':
|
||||||
if (state > FORMAT_PREC) {
|
if (state > FORMAT_PREC) {
|
||||||
goto invalid;
|
break;
|
||||||
}
|
}
|
||||||
state = FORMAT_PREC;
|
state = FORMAT_PREC;
|
||||||
hasPrec = true;
|
hasPrec = true;
|
||||||
break;
|
return;
|
||||||
|
|
||||||
// type
|
// type
|
||||||
case 'd':
|
case 'd':
|
||||||
@@ -103,18 +103,19 @@ void FormatSpec::useCharacter(int c) {
|
|||||||
case 'f':
|
case 'f':
|
||||||
case 's':
|
case 's':
|
||||||
if (state >= FORMAT_DONE) {
|
if (state >= FORMAT_DONE) {
|
||||||
goto invalid;
|
break;
|
||||||
}
|
}
|
||||||
state = FORMAT_DONE;
|
state = FORMAT_DONE;
|
||||||
valid = true;
|
valid = true;
|
||||||
type = c;
|
type = c;
|
||||||
break;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
invalid:
|
break;
|
||||||
state = FORMAT_INVALID;
|
|
||||||
valid = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state = FORMAT_INVALID;
|
||||||
|
valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormatSpec::finishCharacters() {
|
void FormatSpec::finishCharacters() {
|
||||||
|
|||||||
Reference in New Issue
Block a user