use of com.codename1.ui.util.xml.Val in project CodenameOne by codenameone.
the class Resources method confirmBorder.
private Border confirmBorder(Hashtable h, String key) {
Object val = h.get(key);
if (val == null) {
return null;
}
if (!(val instanceof Border)) {
String[] value = (String[]) val;
if (value == null) {
throw new IllegalArgumentException("Couldn't find resource: " + key);
}
// the resource was not already loaded when we loaded the theme
// it must be loaded now so we can resolve the temporary name
Border imageBorder = createImageBorder(value);
return imageBorder;
}
return (Border) val;
}
use of com.codename1.ui.util.xml.Val in project CodenameOne by codenameone.
the class CustomInvoke method appendInstruction.
@Override
public void appendInstruction(StringBuilder b) {
// special case for clone on an array which isn't a real method invocation
if (name.equals("clone") && owner.indexOf('[') > -1) {
if (targetObjectLiteral != null) {
b.append(" PUSH_OBJ(cloneArray(").append(targetObjectLiteral).append("));\n");
} else {
b.append(" POP_MANY_AND_PUSH_OBJ(cloneArray(PEEK_OBJ(1)), 1);\n");
}
return;
}
StringBuilder bld = new StringBuilder();
if (origOpcode == Opcodes.INVOKEINTERFACE || origOpcode == Opcodes.INVOKEVIRTUAL) {
b.append(" ");
bld.append("virtual_");
} else {
b.append(" ");
}
if (origOpcode == Opcodes.INVOKESTATIC) {
// find the actual class of the static method to workaround javac not defining it correctly
ByteCodeClass bc = Parser.getClassObject(owner.replace('/', '_').replace('$', '_'));
owner = findActualOwner(bc);
}
// if(owner.replace('/', '_').replace('$', '_').equals("java_lang_System_1") && name.equals("sleep")) {
// System.out.println("Break");
// }
bld.append(owner.replace('/', '_').replace('$', '_'));
bld.append("_");
if (name.equals("<init>")) {
bld.append("__INIT__");
} else {
if (name.equals("<clinit>")) {
bld.append("__CLINIT__");
} else {
bld.append(name);
}
}
bld.append("__");
ArrayList<String> args = new ArrayList<String>();
String returnVal = BytecodeMethod.appendMethodSignatureSuffixFromDesc(desc, bld, args);
int numLiteralArgs = this.getNumLiteralArgs();
if (numLiteralArgs > 0) {
b.append("/* CustomInvoke */");
}
boolean noPop = false;
if (returnVal == null || noReturn) {
b.append(bld);
} else {
if (args.size() - numLiteralArgs == 0 && origOpcode == Opcodes.INVOKESTATIC) {
// special case for static method
if (returnVal.equals("JAVA_OBJECT")) {
b.append("PUSH_OBJ");
} else {
if (returnVal.equals("JAVA_INT")) {
b.append("PUSH_INT");
} else {
if (returnVal.equals("JAVA_LONG")) {
b.append("PUSH_LONG");
} else {
if (returnVal.equals("JAVA_DOUBLE")) {
b.append("PUSH_DOUBLE");
} else {
if (returnVal.equals("JAVA_FLOAT")) {
b.append("PUSH_FLOAT");
} else {
throw new UnsupportedOperationException("Unknown type: " + returnVal);
}
}
}
}
}
// b.append(returnVal);
noPop = true;
b.append("(");
} else {
// b.append("POP_MANY_AND_");
// b.append(returnVal);
b.append("{ ");
b.append(returnVal);
b.append(" tmpResult = ");
}
b.append(bld);
}
b.append("(threadStateData");
if (origOpcode != Opcodes.INVOKESTATIC) {
if (targetObjectLiteral == null) {
b.append(", SP[-");
b.append(args.size() + 1 - numLiteralArgs);
b.append("].data.o");
} else {
b.append(", " + targetObjectLiteral);
numLiteralArgs++;
}
}
int offset = args.size();
// int numArgs = offset;
int argIndex = 0;
for (String a : args) {
b.append(", ");
if (literalArgs != null && literalArgs[argIndex] != null) {
b.append(literalArgs[argIndex]);
} else {
b.append("SP[-");
b.append(offset);
b.append("].data.");
b.append(a);
offset--;
}
argIndex++;
}
if (noPop) {
b.append("));\n");
return;
}
if (returnVal != null && !noReturn) {
b.append(");\n");
if (origOpcode != Opcodes.INVOKESTATIC) {
if (args.size() - numLiteralArgs > 0) {
b.append(" SP -= ");
b.append(args.size() - numLiteralArgs);
b.append(";\n");
}
} else {
if (args.size() - numLiteralArgs > 1) {
b.append(" SP -= ");
b.append(args.size() - numLiteralArgs - 1);
b.append(";\n");
}
}
if (targetObjectLiteral == null) {
if (returnVal.equals("JAVA_OBJECT")) {
b.append(" SP[-1].data.o = tmpResult; SP[-1].type = CN1_TYPE_OBJECT; }\n");
} else {
if (returnVal.equals("JAVA_INT")) {
b.append(" SP[-1].data.i = tmpResult; SP[-1].type = CN1_TYPE_INT; }\n");
} else {
if (returnVal.equals("JAVA_LONG")) {
b.append(" SP[-1].data.l = tmpResult; SP[-1].type = CN1_TYPE_LONG; }\n");
} else {
if (returnVal.equals("JAVA_DOUBLE")) {
b.append(" SP[-1].data.d = tmpResult; SP[-1].type = CN1_TYPE_DOUBLE; }\n");
} else {
if (returnVal.equals("JAVA_FLOAT")) {
b.append(" SP[-1].data.f = tmpResult; SP[-1].type = CN1_TYPE_FLOAT; }\n");
} else {
throw new UnsupportedOperationException("Unknown type: " + returnVal);
}
}
}
}
}
} else {
if (returnVal.equals("JAVA_OBJECT")) {
b.append(" PUSH_OBJ(tmpResult); }\n");
} else {
if (returnVal.equals("JAVA_INT")) {
b.append(" PUSH_INT(tmpResult); }\n");
} else {
if (returnVal.equals("JAVA_LONG")) {
b.append(" PUSH_LONG(tmpResult); }\n");
} else {
if (returnVal.equals("JAVA_DOUBLE")) {
b.append(" PUSH_DOUBLE(tmpResult); }\n");
} else {
if (returnVal.equals("JAVA_FLOAT")) {
b.append(" PUSH_FLOAT(tmpResult); }\n");
} else {
throw new UnsupportedOperationException("Unknown type: " + returnVal);
}
}
}
}
}
}
return;
}
b.append("); ");
int val;
if (origOpcode != Opcodes.INVOKESTATIC) {
val = args.size() + 1 - numLiteralArgs;
} else {
val = args.size() - numLiteralArgs;
}
if (val > 0) {
b.append(" SP -= ");
b.append(val);
b.append(";\n");
} else {
b.append("\n");
}
}
Aggregations