home *** CD-ROM | disk | FTP | other *** search
- package com.netscape.javascript;
-
- public class NativeClosure extends ScriptableObject implements Function {
- public Scriptable construct(Context var1, Scriptable var2, Object[] var3) throws JavaScriptException {
- Function var4 = this.checkProto();
- return var4.construct(var1, ((ScriptableObject)this).getParentScope(), var3);
- }
-
- public Object getDefaultValue(Class var1) {
- return var1 == ScriptRuntime.FunctionClass ? super.prototype : super.getDefaultValue(var1);
- }
-
- public NativeClosure() {
- }
-
- public NativeClosure(Context var1, Scriptable var2, NativeFunction var3) {
- ((ScriptableObject)this).setPrototype(var3);
- ((ScriptableObject)this).setParentScope(var2);
- String var4 = var3.names != null ? var3.names[0] : "";
- if (var4 != null && var4.length() > 0) {
- var2.put(var4, var2, var2.getParentScope() == null ? var3 : this);
- }
-
- }
-
- private Function checkProto() {
- Scriptable var1 = ((ScriptableObject)this).getPrototype();
- if (!(var1 instanceof Function)) {
- throw Context.reportRuntimeError(Context.getMessage("msg.closure.proto", (Object[])null));
- } else {
- return (Function)var1;
- }
- }
-
- public static Object js_Closure(Context var0, Object[] var1, Function var2, boolean var3) {
- Object[] var4 = new Object[]{"Closure"};
- throw Context.reportRuntimeError(Context.getMessage("msg.cant.call.indirect", var4));
- }
-
- public Object call(Context var1, Scriptable var2, Scriptable var3, Object[] var4) throws JavaScriptException {
- Function var5 = this.checkProto();
- return var5.call(var1, ((ScriptableObject)this).getParentScope(), var3, var4);
- }
-
- public static Object newClosureSpecial(Context var0, Scriptable var1, Object[] var2, Function var3) {
- ScriptRuntime.checkDeprecated(var0, "Closure");
- NativeFunction var4 = var2.length > 0 && var2[0] instanceof NativeFunction ? (NativeFunction)var2[0] : null;
- NativeClosure var5 = var4 != null ? new NativeClosure(var0, var1, var4) : new NativeClosure();
- Scriptable var6 = ScriptableObject.getTopLevelScope(var3);
- ((ScriptableObject)var5).setPrototype(var2.length == 0 ? ScriptableObject.getObjectPrototype(var6) : ScriptRuntime.toObject(var6, var2[0]));
- ((ScriptableObject)var5).setParentScope(var1);
- return var5;
- }
-
- public String getClassName() {
- return "Closure";
- }
- }
-