Annotation of researchv10no/libj/stubs.awk, revision 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.