ref: acde9cddfda6e49d5093c6deee0076c6415d6ded
parent: 5dab2871759082fb9037c23af5e9387bb6366e1d
parent: e9530b76f3c6b264732e87fa56bf39737792cb19
author: ozan yigit <ozan.yigit@gmail.com>
date: Sun Jun 23 17:13:57 EDT 2024
rewrite of if-else chain as switch
--- a/b.c
+++ b/b.c
@@ -369,36 +369,49 @@
/* BUG: should advance by utf-8 char even if makes no sense */
- if ((c = *p++) == 't') {+ switch ((c = *p++)) {+ case 't':
c = '\t';
- } else if (c == 'n') {+ break;
+ case 'n':
c = '\n';
- } else if (c == 'f') {+ break;
+ case 'f':
c = '\f';
- } else if (c == 'r') {+ break;
+ case 'r':
c = '\r';
- } else if (c == 'b') {+ break;
+ case 'b':
c = '\b';
- } else if (c == 'v') {+ break;
+ case 'v':
c = '\v';
- } else if (c == 'a') {+ break;
+ case 'a':
c = '\a';
- } else if (c == '\\') {+ break;
+ case '\\':
c = '\\';
- } else if (c == 'x') { /* 2 hex digits follow */- c = hexstr(&p, 2); /* this adds a null if number is invalid */
- } else if (c == 'u') { /* unicode char number up to 8 hex digits */+ break;
+ case 'x': /* 2 hex digits follow */
+ c = hexstr(&p, 2); /* this adds a null if number is invalid */
+ break;
+ case 'u': /* unicode char number up to 8 hex digits */
c = hexstr(&p, 8);
- } else if (isoctdigit(c)) { /* \d \dd \ddd */- int n = c - '0';
- if (isoctdigit(*p)) {- n = 8 * n + *p++ - '0';
- if (isoctdigit(*p))
+ break;
+ default:
+ if (isoctdigit(c)) { /* \d \dd \ddd */+ int n = c - '0';
+ if (isoctdigit(*p)) {n = 8 * n + *p++ - '0';
+ if (isoctdigit(*p))
+ n = 8 * n + *p++ - '0';
+ }
+ c = n;
}
- c = n;
- } /* else */
- /* c = c; */
+ }
+
*pp = p;
return c;
}
--
⑨