2 import java.util.ArrayList;
\r
3 import java.util.List;
\r
7 String className = "com.google.android.gles_jni.GL11Impl";
\r
13 List<String> argNames = new ArrayList<String>();
\r
14 List<JType> argTypes = new ArrayList<JType>();
\r
15 List<Integer> argCIndices = new ArrayList<Integer>();
\r
17 boolean hasBufferArg = false;
\r
18 boolean hasTypedBufferArg = false;
\r
19 ArrayList<String> bufferArgNames = new ArrayList<String>();
\r
21 public JFunc(CFunc cfunc) {
\r
25 public CFunc getCFunc() {
\r
29 public void setName(String fname) {
\r
33 public String getName() {
\r
37 public void setType(JType ftype) {
\r
41 public JType getType() {
\r
45 public void setClassName(String className) {
\r
46 this.className = className;
\r
49 public String getClassName() {
\r
53 public boolean hasBufferArg() {
\r
54 return hasBufferArg;
\r
57 public boolean hasTypedBufferArg() {
\r
58 return hasTypedBufferArg;
\r
61 public String getBufferArgName(int index) {
\r
62 return bufferArgNames.get(index);
\r
65 public void addArgument(String argName, JType argType, int cindex) {
\r
66 argNames.add(argName);
\r
67 argTypes.add(argType);
\r
68 argCIndices.add(new Integer(cindex));
\r
70 if (argType.isBuffer()) {
\r
71 hasBufferArg = true;
\r
72 bufferArgNames.add(argName);
\r
74 if (argType.isTypedBuffer()) {
\r
75 hasTypedBufferArg = true;
\r
76 bufferArgNames.add(argName);
\r
80 public int getNumArgs() {
\r
81 return argNames.size();
\r
84 public int getArgIndex(String name) {
\r
85 int len = argNames.size();
\r
86 for (int i = 0; i < len; i++) {
\r
87 if (name.equals(argNames.get(i))) {
\r
94 public String getArgName(int index) {
\r
95 return argNames.get(index);
\r
98 public JType getArgType(int index) {
\r
99 return argTypes.get(index);
\r
102 public int getArgCIndex(int index) {
\r
103 return argCIndices.get(index).intValue();
\r
106 public static JFunc convert(CFunc cfunc, boolean useArray) {
\r
107 JFunc jfunc = new JFunc(cfunc);
\r
108 jfunc.setName(cfunc.getName());
\r
109 jfunc.setType(JType.convert(cfunc.getType(), false));
\r
111 int numArgs = cfunc.getNumArgs();
\r
112 int numOffsets = 0;
\r
113 for (int i = 0; i < numArgs; i++) {
\r
114 CType cArgType = cfunc.getArgType(i);
\r
115 if (cArgType.isTypedPointer() && useArray) {
\r
120 for (int i = 0; i < numArgs; i++) {
\r
121 String cArgName = cfunc.getArgName(i);
\r
122 CType cArgType = cfunc.getArgType(i);
\r
124 jfunc.addArgument(cArgName, JType.convert(cArgType, useArray), i);
\r
125 if (cArgType.isTypedPointer() && useArray) {
\r
126 if (numOffsets > 1) {
\r
127 jfunc.addArgument(cArgName + "Offset", new JType("int"), i);
\r
129 jfunc.addArgument("offset", new JType("int"), i);
\r
137 public String toString() {
\r
138 String s = "Function " + fname + " returns " + ftype + ": ";
\r
139 for (int i = 0; i < argNames.size(); i++) {
\r
143 s += argTypes.get(i) + " " + argNames.get(i);
\r