Getting rid of that ugly switch statement

modified:   src/nms.c
This commit is contained in:
Brian Barto 2016-04-07 14:27:27 -04:00
parent 72bf59301a
commit 420987a544

View File

@ -29,43 +29,32 @@ int main(void) {
int c, x = 1, y = 1;
bool first = true;
while ((c = getchar()) != EOF) {
switch (c) {
case '\n':
++y;
x = 1;
break;
case ' ':
case '\t':
case '\f':
case '\r':
case '\v':
++x;
break;
default:
if (first) {
start.source = c;
start.row = y;
start.col = x;
start.next = (struct winpos *) 0;
first = false;
++x;
} else {
// Allocate space for the new struct in our linked list
// and point *next to it.
list_pointer->next = malloc(sizeof(struct winpos));
if (c == NEWLINE) {
++y;
x = 1;
} else if (isspace(c)) {
++x;
} else if (first) {
start.source = c;
start.row = y;
start.col = x;
start.next = (struct winpos *) 0;
first = false;
++x;
} else {
// Allocate space for the new struct in our linked list
// and point *next to it.
list_pointer->next = malloc(sizeof(struct winpos));
// Now let's point list_pointer to the next structure
// and populate it.
list_pointer = list_pointer->next;
list_pointer->source = c;
list_pointer->row = y;
list_pointer->col = x;
list_pointer->next = (struct winpos *) 0;
++x;
}
break;
// Now let's point list_pointer to the next structure
// and populate it.
list_pointer = list_pointer->next;
list_pointer->source = c;
list_pointer->row = y;
list_pointer->col = x;
list_pointer->next = (struct winpos *) 0;
++x;
}
}