01: /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
02: *
03: * ***** BEGIN LICENSE BLOCK *****
04: * Version: MPL 1.1/GPL 2.0
05: *
06: * The contents of this file are subject to the Mozilla Public License Version
07: * 1.1 (the "License"); you may not use this file except in compliance with
08: * the License. You may obtain a copy of the License at
09: * http://www.mozilla.org/MPL/
10: *
11: * Software distributed under the License is distributed on an "AS IS" basis,
12: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13: * for the specific language governing rights and limitations under the
14: * License.
15: *
16: * The Original Code is Rhino code, released
17: * May 6, 1999.
18: *
19: * The Initial Developer of the Original Code is
20: * Netscape Communications Corporation.
21: * Portions created by the Initial Developer are Copyright (C) 1997-1999
22: * the Initial Developer. All Rights Reserved.
23: *
24: * Contributor(s):
25: * Norris Boyd
26: *
27: * Alternatively, the contents of this file may be used under the terms of
28: * the GNU General Public License Version 2 or later (the "GPL"), in which
29: * case the provisions of the GPL are applicable instead of those above. If
30: * you wish to allow use of your version of this file only under the terms of
31: * the GPL and not to allow others to use your version of this file under the
32: * MPL, indicate your decision by deleting the provisions above and replacing
33: * them with the notice and other provisions required by the GPL. If you do
34: * not delete the provisions above, a recipient may use your version of this
35: * file under either the MPL or the GPL.
36: *
37: * ***** END LICENSE BLOCK ***** */
38:
39: // API class
40: package org.mozilla.javascript;
41:
42: /**
43: * This is interface that all functions in JavaScript must implement.
44: * The interface provides for calling functions and constructors.
45: *
46: * @see org.mozilla.javascript.Scriptable
47: * @author Norris Boyd
48: */
49:
50: public interface Function extends Scriptable, Callable {
51: /**
52: * Call the function.
53: *
54: * Note that the array of arguments is not guaranteed to have
55: * length greater than 0.
56: *
57: * @param cx the current Context for this thread
58: * @param scope the scope to execute the function relative to. This is
59: * set to the value returned by getParentScope() except
60: * when the function is called from a closure.
61: * @param thisObj the JavaScript <code>this</code> object
62: * @param args the array of arguments
63: * @return the result of the call
64: */
65: public Object call(Context cx, Scriptable scope,
66: Scriptable this Obj, Object[] args);
67:
68: /**
69: * Call the function as a constructor.
70: *
71: * This method is invoked by the runtime in order to satisfy a use
72: * of the JavaScript <code>new</code> operator. This method is
73: * expected to create a new object and return it.
74: *
75: * @param cx the current Context for this thread
76: * @param scope an enclosing scope of the caller except
77: * when the function is called from a closure.
78: * @param args the array of arguments
79: * @return the allocated object
80: */
81: public Scriptable construct(Context cx, Scriptable scope,
82: Object[] args);
83: }
|