17eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams#define NO_RS_FUNCS 1 27eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 37eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams#include "stdio.h" 47eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams#include "RenderScript.h" 57eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams#include <vector> 67eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 77eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsstruct Element; 87eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 97eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsstruct ElementField { 107eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams const char *name; 117eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element *e; 127eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams ElementField(const char *n, Element *_e) { 137eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams name = n; 147eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e = _e; 157eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 167eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams ElementField() { 177eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams name = NULL; 187eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e = NULL; 197eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 207eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams}; 217eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 227eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsstruct Element { 237eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams ElementField *fields; 247eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams size_t fieldCount; 257eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams const char *name; 267eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams bool generated; 277eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 287eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams RsDataType compType; 297eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams uint32_t compVectorSize; 307eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 317eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element() { 327eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fields = NULL; 337eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fieldCount = 0; 347eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams name = NULL; 357eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams generated = false; 367eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams compType = RS_TYPE_ELEMENT; 377eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams compVectorSize = 0; 387eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 397eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 407eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element(uint32_t _fieldCount, const char *_name) { 417eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fields = new ElementField[_fieldCount]; 427eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fieldCount = _fieldCount; 437eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams name = _name; 447eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams generated = false; 457eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams compType = RS_TYPE_ELEMENT; 467eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams compVectorSize = 0; 477eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 487eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 497eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element(RsDataType t, uint32_t s) { 507eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fields = NULL; 517eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fieldCount = 0; 527eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams name = NULL; 537eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams generated = false; 547eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams compType = t; 557eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams compVectorSize = s; 567eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 577eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 587eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams}; 597eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 607eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 617eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsstatic void genHeader(FILE *f, const char *packageName) 627eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams{ 637eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "package %s;\n", packageName); 647eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "\n"); 657eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "import android.renderscript.*;\n"); 667eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "\n"); 677eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "\n"); 687eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams} 697eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 707eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsstatic const char * RSTypeToJava(RsDataType dt) 717eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams{ 727eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams switch(dt) { 737eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_FLOAT_16: return "float"; 747eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_FLOAT_32: return "float"; 757eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_FLOAT_64: return "double"; 767eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 777eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_SIGNED_8: return "byte"; 787eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_SIGNED_16: return "short"; 797eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_SIGNED_32: return "int"; 807eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_SIGNED_64: return "long"; 817eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 827eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_UNSIGNED_8: return "short"; 837eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_UNSIGNED_16: return "int"; 847eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_UNSIGNED_32: return "long"; 857eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_UNSIGNED_64: return NULL; 867eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 877eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_ELEMENT: return "android.renderscript.Element"; 887eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_TYPE: return "android.renderscript.Type"; 897eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_ALLOCATION: return "android.renderscript.Allocation"; 907eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_SAMPLER: return "android.renderscript.Sampler"; 917eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_SCRIPT: return "android.renderscript.Script"; 927eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_MESH: return "android.renderscript.Mesh"; 937eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_FRAGMENT: return "android.renderscript.ProgramFragment"; 947eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_VERTEX: return "android.renderscript.ProgramVertex"; 957eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_RASTER: return "android.renderscript.ProgramRaster"; 967eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_STORE: return "android.renderscript.ProgramStore"; 977eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams default: return NULL; 987eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 997eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams return NULL; 1007eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams} 1017eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1027eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsstatic const char * RSTypeToString(RsDataType dt) 1037eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams{ 1047eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams switch(dt) { 1057eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_FLOAT_16: return "F16"; 1067eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_FLOAT_32: return "F32"; 1077eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_FLOAT_64: return "F64"; 1087eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1097eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_SIGNED_8: return "I8"; 1107eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_SIGNED_16: return "I16"; 1117eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_SIGNED_32: return "I32"; 1127eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_SIGNED_64: return "I64"; 1137eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1147eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_UNSIGNED_8: return "U8"; 1157eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_UNSIGNED_16: return "U16"; 1167eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_UNSIGNED_32: return "U32"; 1177eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams case RS_TYPE_UNSIGNED_64: return "U64"; 1187eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1197eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_ELEMENT: return "android.renderscript.Element"; 1207eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_TYPE: return "android.renderscript.Type"; 1217eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_ALLOCATION: return "android.renderscript.Allocation"; 1227eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_SAMPLER: return "android.renderscript.Sampler"; 1237eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_SCRIPT: return "android.renderscript.Script"; 1247eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_MESH: return "android.renderscript.Mesh"; 1257eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_FRAGMENT: return "android.renderscript.ProgramFragment"; 1267eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_VERTEX: return "android.renderscript.ProgramVertex"; 1277eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_RASTER: return "android.renderscript.ProgramRaster"; 1287eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams //case RS_TYPE_PROGRAM_STORE: return "android.renderscript.ProgramStore"; 1297eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams default: return NULL; 1307eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 1317eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams return NULL; 1327eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams} 1337eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1347eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsbool rsGenerateElementClass(const Element *e, const char *packageName, FILE *f) 1357eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams{ 1367eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams genHeader(f, packageName); 1377eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1387eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "class Element_%s {\n", e->name); 1397eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1407eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams for (size_t ct=0; ct < e->fieldCount; ct++) { 1417eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams const char *ts = RSTypeToJava(e->fields[ct].e->compType); 1427eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams if (ts == NULL) { 1437eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams return false; 1447eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 1457eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " public %s %s;\n", ts, e->fields[ct].name); 1467eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 1477eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1487eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "\n"); 1497eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " static Element getElement(RenderScript rs) {\n"); 1507eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " Element.Builder eb = new Element.Builder(rs);\n"); 1517eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams for (size_t ct=0; ct < e->fieldCount; ct++) { 1527eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams const char *ts = RSTypeToString(e->fields[ct].e->compType); 1537eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " eb.add(Element.USER_%s(rs), \"%s\");\n", ts, e->fields[ct].name); 1547eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 1557eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " return eb.create();\n"); 1567eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " }\n"); 1577eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1587eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " static Allocation createAllocation(RenderScript rs) {\n"); 1597eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " Element e = getElement(rs);\n"); 1607eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " Allocation a = Allocation.createSized(rs, e, 1);\n"); 1617eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " return a;\n"); 1627eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " }\n"); 1637eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1647eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1657eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " void copyToAllocation(Allocation a) {\n"); 1667eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " mIOBuffer.reset();\n"); 1677eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams for (size_t ct=0; ct < e->fieldCount; ct++) { 1687eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams const char *ts = RSTypeToString(e->fields[ct].e->compType); 1697eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " mIOBuffer.add%s(%s);\n", ts, e->fields[ct].name); 1707eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams } 1717eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " a.data(mIOBuffer.getData());\n"); 1727eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " }\n"); 1737eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1747eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1757eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1767eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " private FieldPacker mIOBuffer[];\n"); 1777eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " public Element_%s() {\n", e->name); 1787eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " mIOBuffer = new FieldPacker(%i);\n", 100/*element->getSizeBytes()*/); 1797eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, " }\n"); 1807eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1817eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1827eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "}\n"); 1837eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1847eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams return true; 1857eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams} 1867eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1877eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsbool rsGenerateElementClassFile(Element *e, const char *packageName) 1887eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams{ 1897eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams char buf[1024]; 1907eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams sprintf(buf, "Element_%s.java", e->name); 1917eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams printf("Creating file %s \n", buf); 1927eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams FILE *f = fopen(buf, "w"); 1937eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams bool ret = rsGenerateElementClass(e, packageName, f); 1947eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fclose(f); 1957eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams return ret; 1967eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams} 1977eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1987eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 1997eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2007eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2017eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams/* 2027eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsbool rsGenerateScriptClass(const ScriptC *script, const char *packageName, FILE *f) 2037eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams{ 2047eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams genHeader(f, packageName); 2057eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2067eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams fprintf(f, "class ScriptC_%s {\n", script->getName()); 2077eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2087eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2097eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2107eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams ObjectBaseRef<const Type> mTypes[MAX_SCRIPT_BANKS]; 2117eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams String8 mSlotNames[MAX_SCRIPT_BANKS]; 2127eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams bool mSlotWritable[MAX_SCRIPT_BANKS]; 2137eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2147eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2157eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams} 2167eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams*/ 2177eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2187eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2197eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2207eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Samsint main(int argc, const char *argv) 2217eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams{ 2227eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element *u8 = new Element(RS_TYPE_UNSIGNED_8, 1); 2237eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element *i32 = new Element(RS_TYPE_SIGNED_32, 1); 2247eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element *f32 = new Element(RS_TYPE_FLOAT_32, 1); 2257eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2267eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element *e_Pixel = new Element(4, "Pixel"); 2277eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[0].e = u8; 2287eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[0].name = "a"; 2297eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[1].e = u8; 2307eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[1].name = "b"; 2317eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[2].e = u8; 2327eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[2].name = "g"; 2337eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[3].e = u8; 2347eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Pixel->fields[3].name = "r"; 2357eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2367eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams Element *e_Params = new Element(5, "Params"); 2377eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[0].e = i32; 2387eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[0].name = "inHeight"; 2397eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[1].e = i32; 2407eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[1].name = "inWidth"; 2417eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[2].e = i32; 2427eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[2].name = "outHeight"; 2437eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[3].e = i32; 2447eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[3].name = "outWidth"; 2457eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[4].e = f32; 2467eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams e_Params->fields[4].name = "threshold"; 2477eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2487eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2497eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams printf("1\n"); 2507eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams rsGenerateElementClassFile(e_Pixel, "android"); 2517eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams rsGenerateElementClassFile(e_Params, "android"); 2527eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 2537eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams} 2547eecbf2085bcfe475daf68090a1a4f47fbb6ec72Jason Sams 255