Annotation of researchv10no/libj/stubs.awk, revision 1.1.1.1

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: #}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.