pike.git / src / post_modules / GL / gen.pike

version» Context lines:

pike.git/src/post_modules/GL/gen.pike:1:   #!/usr/local/bin/pike   /*    V=void    I=int    D=double    F=float    E=enum    B=bitfield +  O=bool    R=double/float    Q=int/float    Z=(byte/)double/float/int/short       +XXXX = 3/4/array(3/4)    +XXX = 2/3/4/array(2/3/4)    =XXXX = 4/array(4)    =XXX = 3/array(3)    @X = 1/array(n)   
pike.git/src/post_modules/GL/gen.pike:36:   {    string tm="BIT_FLOAT|BIT_INT", baset="float|int", rt="if";    array(string) typ=({});    int i, ad;    if(sizeof(Array.uniq(values(ty)))!=1)    error("Unparsable 234 type '%s'.", ty);    switch(ty[0]) {    case 'E':    case 'B':    case 'I': +  case 'O':    baset="int";    tm="BIT_INT";    rt="i";    break;    case 'D':    ad=1; /* fallthrough */    case 'F':    baset="float";    tm="BIT_FLOAT";    rt=(ad?"":"f");
pike.git/src/post_modules/GL/gen.pike:83:    string res="", got="", prot, vdec, vret, fu=name;    array novec, args=({}), argt=({});    int r234, argt_cut=-1;    string rtypes;       switch(ty[0]) {    case 'V':    prot=":void";    break;    case 'I': +  case 'O':    prot=":int";    vdec="INT32";    vret="push_int";    break;    default:    error("%s: Unknown return type '%c'.", name, ty[0]);    }       res += "static void f_"+name+"(INT32 args)\n{\n"+    (vdec?(" "+vdec+" res;\n"):"");       for(int i=1; i<sizeof(ty); i++)    switch(ty[i]) {    case 'B':    case 'E': -  +  case 'O':    case 'I':    argt += ({"int"});    args += ({ "arg"+i });    res += " INT32 arg"+i+";\n";    got += " arg"+i+"=sp["+(i-1)+"-args].u.integer;\n";    break;    case 'D':    argt += ({"float"});    args += ({ "arg"+i });    res += " double arg"+i+";\n";