203 lines
6.2 KiB
Java
203 lines
6.2 KiB
Java
package com.he.jsbinding;
|
|
|
|
import java.lang.reflect.Method;
|
|
import java.nio.ByteBuffer;
|
|
|
|
public class JsContext {
|
|
protected final int id;
|
|
|
|
protected final boolean scoped;
|
|
|
|
protected final long vm;
|
|
|
|
JsContext(long paramLong, int paramInt) {
|
|
boolean bool;
|
|
if (getClass() == JsScopedContext.class) {
|
|
bool = true;
|
|
} else {
|
|
bool = false;
|
|
}
|
|
this.scoped = bool;
|
|
this.vm = paramLong;
|
|
this.id = paramInt;
|
|
}
|
|
|
|
public JsContext(JsEngine paramJsEngine) {
|
|
boolean bool;
|
|
if (getClass() == JsScopedContext.class) {
|
|
bool = true;
|
|
} else {
|
|
bool = false;
|
|
}
|
|
this.scoped = bool;
|
|
this.vm = paramJsEngine.vm;
|
|
this.id = JsEngine.createContext(this.vm);
|
|
}
|
|
|
|
private static byte getTypeCode(Class<?> paramClass) {
|
|
if (paramClass == void.class)
|
|
return 118;
|
|
if (paramClass == boolean.class)
|
|
return 122;
|
|
if (paramClass == byte.class)
|
|
return 98;
|
|
if (paramClass == char.class)
|
|
return 99;
|
|
if (paramClass == short.class)
|
|
return 115;
|
|
if (paramClass == int.class)
|
|
return 105;
|
|
if (paramClass == float.class)
|
|
return 102;
|
|
if (paramClass == double.class)
|
|
return 100;
|
|
if (paramClass == long.class)
|
|
return 106;
|
|
if (paramClass == String.class)
|
|
return 36;
|
|
if (paramClass == ByteBuffer.class)
|
|
return 66;
|
|
if (paramClass == JsObject.class)
|
|
return 79;
|
|
if (paramClass == JsScopedContext.class)
|
|
return 64;
|
|
StringBuilder stringBuilder = new StringBuilder("unsupported type ");
|
|
stringBuilder.append(paramClass.getCanonicalName());
|
|
throw new RuntimeException(stringBuilder.toString());
|
|
}
|
|
|
|
public int compile(byte[] paramArrayOfbyte, String paramString, boolean paramBoolean) {
|
|
return JsEngine.compileBytes(this.vm, this.id, paramArrayOfbyte, paramString, paramBoolean);
|
|
}
|
|
|
|
public JsObject createArray(int paramInt) {
|
|
long l = this.vm;
|
|
int i = this.id;
|
|
return new JsObject(l, i, JsEngine.createArray(l, i, paramInt));
|
|
}
|
|
|
|
public JsObject createArrayBuffer(int paramInt) {
|
|
long l = this.vm;
|
|
int i = this.id;
|
|
return new JsObject(l, i, JsEngine.createArrayBuffer(l, i, paramInt));
|
|
}
|
|
|
|
public JsObject createFunction(JsFunctionCallback paramJsFunctionCallback) {
|
|
long l = this.vm;
|
|
int i = this.id;
|
|
return new JsObject(l, i, JsEngine.createFunction(l, i, paramJsFunctionCallback));
|
|
}
|
|
|
|
public JsObject createFunction(Object paramObject, String paramString, Class<?>... paramVarArgs) throws NoSuchMethodException {
|
|
if (paramVarArgs.length <= 8) {
|
|
Method method = paramObject.getClass().getMethod(paramString, paramVarArgs);
|
|
int i = 0;
|
|
long l1 = 0L;
|
|
while (i < paramVarArgs.length) {
|
|
l1 |= getTypeCode(paramVarArgs[i]) << i << 3;
|
|
i++;
|
|
}
|
|
long l2 = this.vm;
|
|
i = this.id;
|
|
return new JsObject(l2, i, JsEngine.newMethodWrap(l2, i, paramObject, method, l1, getTypeCode(method.getReturnType())));
|
|
}
|
|
paramObject = new RuntimeException("we only support methods with no more than 8 arguments");
|
|
throw paramObject;
|
|
}
|
|
|
|
public JsObject createFunction(Object paramObject, Method paramMethod) {
|
|
Class[] arrayOfClass = paramMethod.getParameterTypes();
|
|
if (arrayOfClass.length <= 8) {
|
|
int i = 0;
|
|
long l1 = 0L;
|
|
while (i < arrayOfClass.length) {
|
|
l1 |= getTypeCode(arrayOfClass[i]) << i << 3;
|
|
i++;
|
|
}
|
|
long l2 = this.vm;
|
|
i = this.id;
|
|
return new JsObject(l2, i, JsEngine.newMethodWrap(l2, i, paramObject, paramMethod, l1, getTypeCode(paramMethod.getReturnType())));
|
|
}
|
|
paramObject = new RuntimeException("we only support methods with no more than 8 arguments");
|
|
throw paramObject;
|
|
}
|
|
|
|
public JsObject createObject() {
|
|
long l = this.vm;
|
|
int i = this.id;
|
|
return new JsObject(l, i, JsEngine.createObject(l, i));
|
|
}
|
|
|
|
public JsObject deserialize(ByteBuffer paramByteBuffer) {
|
|
int i = JsEngine.deserialize(this.vm, this.id, paramByteBuffer);
|
|
if (i != -1)
|
|
return new JsObject(this.vm, this.id, i);
|
|
throw new RuntimeException("wrong buffer format");
|
|
}
|
|
|
|
public void eval(String paramString1, String paramString2) {
|
|
if (paramString1 != null) {
|
|
JsEngine.eval(this.vm, this.id, paramString1, paramString2, this.scoped);
|
|
return;
|
|
}
|
|
throw new NullPointerException("code is null");
|
|
}
|
|
|
|
public void eval(ByteBuffer paramByteBuffer, String paramString) {
|
|
if (paramByteBuffer != null) {
|
|
JsEngine.evalByteBuffer(this.vm, this.id, paramByteBuffer, paramString, this.scoped);
|
|
return;
|
|
}
|
|
throw new NullPointerException("code is null");
|
|
}
|
|
|
|
public void eval(byte[] paramArrayOfbyte, String paramString) {
|
|
if (paramArrayOfbyte != null) {
|
|
JsEngine.evalBytes(this.vm, this.id, paramArrayOfbyte, paramString, this.scoped);
|
|
return;
|
|
}
|
|
throw new NullPointerException("code is null");
|
|
}
|
|
|
|
public void execute(int paramInt, boolean paramBoolean) {
|
|
JsEngine.executeScript(this.vm, this.id, paramInt, this.scoped, paramBoolean);
|
|
}
|
|
|
|
public final JsEngine getEngine() {
|
|
return new JsEngine(this.vm);
|
|
}
|
|
|
|
public final JsObject global() {
|
|
long l = this.vm;
|
|
int i = this.id;
|
|
return new JsObject(l, i, JsEngine.getGlobal(l, i));
|
|
}
|
|
|
|
public void release() {
|
|
JsEngine.releaseContext(this.vm, this.id);
|
|
}
|
|
|
|
public void releaseCompiledScript(int paramInt) {
|
|
JsEngine.releaseScript(this.vm, this.id, paramInt);
|
|
}
|
|
|
|
public JsObject retain(JsObject paramJsObject) {
|
|
long l = this.vm;
|
|
int i = this.id;
|
|
return new JsObject(l, i, JsEngine.retain(l, i, paramJsObject.ctx_id, paramJsObject.id));
|
|
}
|
|
|
|
public void run(ScopeCallback paramScopeCallback) {
|
|
JsEngine.run(this.vm, this.id, paramScopeCallback);
|
|
}
|
|
|
|
public static interface ScopeCallback {
|
|
void run(JsScopedContext param1JsScopedContext);
|
|
}
|
|
}
|
|
|
|
|
|
/* Location: C:\Users\august\Desktop\tik\df_miniapp\classes.jar!\com\he\jsbinding\JsContext.class
|
|
* Java compiler version: 6 (50.0)
|
|
* JD-Core Version: 1.1.3
|
|
*/ |