📄 javaadapter.java
字号:
/** * The each iterator */ public Value each() { throw new UnsupportedOperationException(); } /** * Returns the first value. */ public Value reset() { throw new UnsupportedOperationException(); } /** * Returns the last value. */ public Value end() { throw new UnsupportedOperationException(); } /** * Returns the corresponding key if this array contains the given value * * @param value the value to search for in the array * * @return the key if it is found in the array, NULL otherwise * * @throws NullPointerException */ public Value contains(Value value) { for (Map.Entry<Value,Value> entry : entrySet()) { if (entry.getValue().equals(value)) return entry.getKey(); } return NullValue.NULL; } /** * Returns the corresponding key if this array contains the given value * * @param value the value to search for in the array * * @return the key if it is found in the array, NULL otherwise * * @throws NullPointerException */ public Value containsStrict(Value value) { throw new UnsupportedOperationException(); } /** * Returns the corresponding valeu if this array contains the given key * * @param key the key to search for in the array * * @return the value if it is found in the array, NULL otherwise * * @throws NullPointerException */ public Value containsKey(Value key) { throw new UnsupportedOperationException(getClass().getName()); } /** * Returns an object array of this array. This is a copy of this object's * backing structure. Null elements are not included. * * @return an object array of this array */ public Map.Entry<Value, Value>[] toEntryArray() { throw new UnsupportedOperationException(); } /** * Sorts this array based using the passed Comparator * * @param comparator the comparator for sorting the array * @param resetKeys true if the keys should not be preserved * @param strict true if alphabetic keys should not be preserved */ public void sort(Comparator<Map.Entry<Value, Value>> comparator, boolean resetKeys, boolean strict) { Map.Entry<Value,Value>[] entries = new Map.Entry[getSize()]; int i = 0; for (Map.Entry<Value,Value> entry : entrySet()) { entries[i++] = entry; } Arrays.sort(entries, comparator); clear(); long base = 0; if (! resetKeys) strict = false; for (int j = 0; j < entries.length; j++) { Value key = entries[j].getKey(); if (resetKeys && (! (key instanceof StringValue) || strict)) put(LongValue.create(base++), entries[j].getValue()); else put(entries[j].getKey(), entries[j].getValue()); } } /** * Serializes the value. */ public void serialize(StringBuilder sb) { throw new UnsupportedOperationException(); } /** * Exports the value. */ public void varExport(StringBuilder sb) { throw new UnsupportedOperationException(); } /** * Resets all numerical keys with the first index as base * * @param base the initial index * @param strict if true, string keys are also reset */ public boolean keyReset(long base, boolean strict) { throw new UnsupportedOperationException(); } /** * Takes the values of this array and puts them in a java array */ public Value[] valuesToArray() { Value[] values = new Value[getSize()]; int i = 0; for (Map.Entry<Value,Value> entry : entrySet()) { values[i++] = entry.getValue(); } return values; } /** * Takes the values of this array, unmarshalls them to objects of type * <i>elementType</i>, and puts them in a java array. */ @Override public Object valuesToArray(Env env, Class elementType) { int size = getSize(); Object array = Array.newInstance(elementType, size); MarshalFactory factory = env.getModuleContext().getMarshalFactory(); Marshal elementMarshal = factory.create(elementType); int i = 0; for (Map.Entry<Value, Value> entry : entrySet()) { Array.set(array, i++, elementMarshal.marshal(env, entry.getValue(), elementType)); } return array; } @Override public Value getField(Env env, StringValue name) { return _classDef.getField(env, this, name); } @Override public Value putField(Env env, StringValue name, Value value) { return _classDef.putField(env, this, name, value); } /** * Returns the class name. */ public String getName() { return _classDef.getName(); } public boolean isA(String name) { return _classDef.isA(name); } /** * Returns the method. */ public AbstractFunction findFunction(String methodName) { return _classDef.findFunction(methodName); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen, Expr []args) { return _classDef.callMethod(env, this, hash, name, nameLen, args); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen, Value []args) { return _classDef.callMethod(env, this, hash, name, nameLen, args); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen) { return _classDef.callMethod(env, this, hash, name, nameLen); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen, Value a1) { return _classDef.callMethod(env, this, hash, name, nameLen, a1); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen, Value a1, Value a2) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen, Value a1, Value a2, Value a3) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2, a3); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen, Value a1, Value a2, Value a3, Value a4) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2, a3, a4); } /** * Evaluates a method. */ @Override public Value callMethod(Env env, int hash, char []name, int nameLen, Value a1, Value a2, Value a3, Value a4, Value a5) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2, a3, a4, a5); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen, Expr []args) { return _classDef.callMethod(env, this, hash, name, nameLen, args); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen, Value []args) { return _classDef.callMethod(env, this, hash, name, nameLen, args); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen) { return _classDef.callMethod(env, this, hash, name, nameLen); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen, Value a1) { return _classDef.callMethod(env, this, hash, name, nameLen, a1); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen, Value a1, Value a2) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen, Value a1, Value a2, Value a3) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2, a3); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen, Value a1, Value a2, Value a3, Value a4) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2, a3, a4); } /** * Evaluates a method. */ @Override public Value callMethodRef(Env env, int hash, char []name, int nameLen, Value a1, Value a2, Value a3, Value a4, Value a5) { return _classDef.callMethod(env, this, hash, name, nameLen, a1, a2, a3, a4, a5); } @Override public void varDumpImpl(Env env, WriteStream out, int depth, IdentityHashMap<Value, String> valueSet) throws IOException { out.println("array(" + getSize() + ") {"); int nestedDepth = depth + 1; for (Map.Entry<Value,Value> mapEntry : entrySet()) { printDepth(out, nestedDepth * 2); out.print("["); Value key = mapEntry.getKey(); if (key.isString()) out.print("\"" + key + "\""); else out.print(key); out.println("]=>"); printDepth(out, nestedDepth * 2); if (_refs != null && _refs.get(key) != null) out.print('&'); mapEntry.getValue().varDump(env, out, nestedDepth, valueSet); out.println(); } printDepth(out, 2 * depth); out.print("}"); } @Override protected void printRImpl(Env env, WriteStream out, int depth, IdentityHashMap<Value, String> valueSet) throws IOException { out.println("Array"); printDepth(out, 8 * depth); out.println("("); for (Map.Entry<Value,Value> mapEntry : entrySet()) { printDepth(out, 8 * depth); out.print(" ["); out.print(mapEntry.getKey()); out.print("] => "); Value value = mapEntry.getValue(); if (value != null) value.printR(env, out, depth + 1, valueSet); out.println(); } printDepth(out, 8 * depth); out.println(")"); } // // Java Serialization // private void writeObject(ObjectOutputStream out) throws IOException { out.writeObject(_object); out.writeObject(_classDef.getName()); } private void readObject(ObjectInputStream in) throws ClassNotFoundException, IOException { _envRef = new WeakReference<Env>(Env.getInstance()); _object = in.readObject(); _classDef = getEnv().getJavaClassDefinition((String) in.readObject()); } /** * Converts to a string. */ public String toString() { return String.valueOf(_object); } public class KeySet extends AbstractSet<Value> { Env _env; KeySet(Env env) { _env = env; } @Override public int size() { return getSize(); } @Override public Iterator<Value> iterator() { return getKeyIterator(_env); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -