File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11#include <stdio.h>
22#include <inttypes.h>
33
4- #define fixnum_mask 1
5- #define fixnum_tag 0
6- #define fixnum_shift 1
7-
8- #define boolean_mask 1
9- #define boolean_tag 1
10- #define boolean_shift 1
4+ #define typeof_mask 1
5+ #define val_shift 1
6+ #define type_fixnum 0
7+ #define type_bool 1
118
129int64_t entry ();
1310
1411int main (int argc , char * * argv ) {
1512 int64_t result = entry ();
16- if ((result & fixnum_mask ) == fixnum_tag ) {
17- printf ("%" PRId64 "\n" , result >> fixnum_shift );
18- } else if ((result & boolean_mask ) == boolean_tag ) {
19- if (result >> boolean_shift ) {
20- printf ("#t\n" );
21- } else {
22- printf ("#f\n" );
23- }
13+ switch (typeof_mask & result ) {
14+ case type_fixnum :
15+ printf ("%" PRId64 "\n" , result >> val_shift );
16+ break ;
17+ case type_bool :
18+ printf ("#%c\n" , (result >> val_shift ) ? 't' : 'f' );
19+ break ;
2420 }
25-
2621 return 0 ;
2722}
Original file line number Diff line number Diff line change 22#include <inttypes.h>
33#include <stdlib.h>
44
5- #define fixnum_mask 1
6- #define fixnum_tag 0
7- #define fixnum_shift 1
8-
9- #define boolean_mask 1
10- #define boolean_tag 1
11- #define boolean_shift 1
5+ #define typeof_mask 1
6+ #define val_shift 1
7+ #define type_fixnum 0
8+ #define type_bool 1
129
1310int64_t entry ();
1411
1512int main (int argc , char * * argv ) {
1613 int64_t result = entry ();
17- if ((result & fixnum_mask ) == fixnum_tag ) {
18- printf ("%" PRId64 "\n" , result >> fixnum_shift );
19- } else if ((result & boolean_mask ) == boolean_tag ) {
20- if (result >> boolean_shift ) {
21- printf ("#t\n" );
22- } else {
23- printf ("#f\n" );
24- }
14+ switch (typeof_mask & result ) {
15+ case type_fixnum :
16+ printf ("%" PRId64 "\n" , result >> val_shift );
17+ break ;
18+ case type_bool :
19+ printf ("#%c\n" , result >> val_shift ? 't' : 'f' );
20+ break ;
2521 }
26-
2722 return 0 ;
2823}
2924
You can’t perform that action at this time.
0 commit comments