Coroutines in C
June 22, 2005
Coroutines in C are an interesting design concept that allows you to basically leave a function and go back to the same place you left off at the next time you call the function. The end result, for example, is a mesh of functions that get and put data. It's basically the same as using a static function variable and a switch statement, but with all that abstracted for the most part with macros.
Anyhow, the examples expose some not often used switch statements including a loop that spans case statements.
switch (count % 8) { case 0: do { *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; } while ((count -= 8) > 0); }