| 21 | #define VOID(p) ((const void*)(p)) |
| 22 | |
| 23 | static void PrintString(const TString* ts) |
| 24 | { |
| 25 | const char* s=getstr(ts); |
| 26 | size_t i,n=ts->tsv.len; |
| 27 | putchar('"'); |
| 28 | for (i=0; i<n; i++) |
| 29 | { |
| 30 | int c=s[i]; |
| 31 | switch (c) |
| 32 | { |
| 33 | case '"': printf("\\\""); break; |
| 34 | case '\\': printf("\\\\"); break; |
| 35 | case '\a': printf("\\a"); break; |
| 36 | case '\b': printf("\\b"); break; |
| 37 | case '\f': printf("\\f"); break; |
| 38 | case '\n': printf("\\n"); break; |
| 39 | case '\r': printf("\\r"); break; |
| 40 | case '\t': printf("\\t"); break; |
| 41 | case '\v': printf("\\v"); break; |
| 42 | default: if (isprint((unsigned char)c)) |
| 43 | putchar(c); |
| 44 | else |
| 45 | printf("\\%03u",(unsigned char)c); |
| 46 | } |
| 47 | } |
| 48 | putchar('"'); |
| 49 | } |
| 50 | |
| 51 | static void PrintConstant(const Proto* f, int i) |
| 52 | { |