|
|
1.1 root 1: BEGIN {
2:
3: FS=":";
4: type["c"] = "char"
5: type["c*"] = "char *"
6: type["c**"] = "char **"
7: type["i"] = "int"
8: type["l"] = "long"
9: type["s"] = "short"
10: type["v"] = "void"
11:
12: type["B"] = "Bitmap"
13: type["B*"] = "Bitmap *"
14: type["C"] = "Code"
15: type["F"] = "Font"
16: type["F*"] = "Font *"
17: type["M"] = "Menu"
18: type["M*"] = "Menu *"
19: type["P"] = "Point"
20: type["P*"] = "Point *"
21: type["R"] = "Rectangle"
22: type["R*"] = "Rectangle *"
23: type["T"] = "Texture"
24: type["T*"] = "Texture *"
25:
26: s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz "
27: # set upper["A"] = upper["a"] = "A"
28: for (i = 1; i <= 27; i++) {
29: upper[substr(s,i+27,1)] = substr(s,i,1)
30: upper[substr(s,i,1)] = substr(s,i,1)
31: }
32:
33: STUB = "stubs.c"
34: printf "#include \"jerq.h\"\n" >STUB
35: printf "#include \"commands.h\"\n" >STUB
36: printf "#include \"io.h\"\n" >STUB
37: printf "\n" >STUB
38:
39: COM = "commands.h"
40: printf "#define CCBALLOC 1\n#define CCBFREE 2\n#define CCEXIT 3\n" >COM
41: printf "#define CCFFREE 4\n#define CCGETFONT 5\n" >COM
42: printf "#define CCMENUHIT 6\n#define CCMENU 7\n#define CCBSPLINE 8\n" >COM
43: printf "#define CCGETMOUSE 9\n#define CCKBDCHAR 20\n" >COM
44: printf "#define CCTRACKARC 10\n#define CCTRACKRECT 11\n" >COM
45: printf "#define CCTRACKCIRCLE 12\n#define CCTRACKDISC 13\n" >COM
46: printf "#define CCTRACKELARC 14\n#define CCTRACKELDISC 15\n" >COM
47: printf "#define CCTRACKELLIPSE 16\n#define CCTRACKLINE 17\n" >COM
48: printf "#define CCTRACKRECTF 18\n#define CCTRACKSTRING 19\n" >COM
49: d = 21
50: }
51:
52: func doSendRec(s,cmd) {
53: printf "\t%s", cmd >STUB
54: u = index(s,"u")
55: tt = index(s,"**")
56: t = index(s,"*")
57: f = index(s,"*()")
58: if (f>0) {
59: printf "Function" >STUB
60: s = type[substr(s,u+1,f-u-1)]
61: }
62: else if (tt>0) {
63: printf "ToTo" >STUB
64: s = type[substr(s,u+1,tt-u-1)]
65: }
66: else if (t>0) {
67: printf "To" >STUB
68: s = type[substr(s,u+1,t-u-1)]
69: }
70: else if (u>0) {
71: printf "Unsigned" >STUB
72: s = type[substr(s,u+1,length(s)-u)]
73: }
74: else s = type[s]
75: s2 = substr(s,2,length(s)-1)
76: s1 = upper[substr(s,1,1)]
77: printf "%s%s", s1, s2 >STUB
78: if (cmd == "send") printf "(arg%d);\n", i-2 >STUB
79: else printf "();\n" >STUB
80: }
81:
82: {
83: printf "%s %s(", type[$1], $2 >STUB
84: for (i=3; i<=NF; i++) {
85: if (i>3)
86: printf ", " >STUB
87: printf "arg%d", i-2 >STUB
88: }
89: printf ")\n" >STUB
90: for (i=3; i<=NF; i++) {
91: u = index($i, "u")
92: f = index($i,"*()")
93: t = index($i,"*")
94: if (u>0) printf "unsigned " >STUB
95: if (f>0)
96: printf "%s (*arg%d)();\n", type[substr($i,u+1,f-u-1)], i-2 >STUB
97: else {
98: printf "%s", type[substr($i,u+1,length($i)-u)] >STUB
99: if (t==0) printf " " >STUB
100: printf "arg%d;\n", i-2 >STUB
101: }
102: }
103: printf "{\n" >STUB
104: printf "\tsendCommand(CC" >STUB
105: # printf "\t" >COM
106: printf "#define CC" >COM
107: for (i=1; i<=length($2); i++) {
108: printf "%s", upper[substr($2,i,1)] >STUB
109: printf "%s", upper[substr($2,i,1)] >COM
110: }
111: printf ");\n" >STUB
112: # printf ",\n" >COM
113: printf " %d\n", d >COM
114: d = d+1
115: for (i=3; i<=NF; i++) doSendRec($i,"send")
116: if ($1 != "v") doSendRec($1,"flush();\n\treturn rec")
117: printf "}\n\n" >STUB
118: }
119:
120: #END {
121: # printf "};\n" >COM
122: #}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.