home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / netscape / javascript / NativeClosure.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  2.9 KB  |  59 lines

  1. package com.netscape.javascript;
  2.  
  3. public class NativeClosure extends ScriptableObject implements Function {
  4.    public Scriptable construct(Context var1, Scriptable var2, Object[] var3) throws JavaScriptException {
  5.       Function var4 = this.checkProto();
  6.       return var4.construct(var1, ((ScriptableObject)this).getParentScope(), var3);
  7.    }
  8.  
  9.    public Object getDefaultValue(Class var1) {
  10.       return var1 == ScriptRuntime.FunctionClass ? super.prototype : super.getDefaultValue(var1);
  11.    }
  12.  
  13.    public NativeClosure() {
  14.    }
  15.  
  16.    public NativeClosure(Context var1, Scriptable var2, NativeFunction var3) {
  17.       ((ScriptableObject)this).setPrototype(var3);
  18.       ((ScriptableObject)this).setParentScope(var2);
  19.       String var4 = var3.names != null ? var3.names[0] : "";
  20.       if (var4 != null && var4.length() > 0) {
  21.          var2.put(var4, var2, var2.getParentScope() == null ? var3 : this);
  22.       }
  23.  
  24.    }
  25.  
  26.    private Function checkProto() {
  27.       Scriptable var1 = ((ScriptableObject)this).getPrototype();
  28.       if (!(var1 instanceof Function)) {
  29.          throw Context.reportRuntimeError(Context.getMessage("msg.closure.proto", (Object[])null));
  30.       } else {
  31.          return (Function)var1;
  32.       }
  33.    }
  34.  
  35.    public static Object js_Closure(Context var0, Object[] var1, Function var2, boolean var3) {
  36.       Object[] var4 = new Object[]{"Closure"};
  37.       throw Context.reportRuntimeError(Context.getMessage("msg.cant.call.indirect", var4));
  38.    }
  39.  
  40.    public Object call(Context var1, Scriptable var2, Scriptable var3, Object[] var4) throws JavaScriptException {
  41.       Function var5 = this.checkProto();
  42.       return var5.call(var1, ((ScriptableObject)this).getParentScope(), var3, var4);
  43.    }
  44.  
  45.    public static Object newClosureSpecial(Context var0, Scriptable var1, Object[] var2, Function var3) {
  46.       ScriptRuntime.checkDeprecated(var0, "Closure");
  47.       NativeFunction var4 = var2.length > 0 && var2[0] instanceof NativeFunction ? (NativeFunction)var2[0] : null;
  48.       NativeClosure var5 = var4 != null ? new NativeClosure(var0, var1, var4) : new NativeClosure();
  49.       Scriptable var6 = ScriptableObject.getTopLevelScope(var3);
  50.       ((ScriptableObject)var5).setPrototype(var2.length == 0 ? ScriptableObject.getObjectPrototype(var6) : ScriptRuntime.toObject(var6, var2[0]));
  51.       ((ScriptableObject)var5).setParentScope(var1);
  52.       return var5;
  53.    }
  54.  
  55.    public String getClassName() {
  56.       return "Closure";
  57.    }
  58. }
  59.