1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef ECMASCRIPT_BUILTINS_BUILTINS_FUNCTION_H 17 #define ECMASCRIPT_BUILTINS_BUILTINS_FUNCTION_H 18 19 #include "ecmascript/base/builtins_base.h" 20 #include "ecmascript/js_tagged_value-inl.h" 21 22 namespace panda::ecmascript::builtins { 23 class BuiltinsFunction : public base::BuiltinsBase { 24 public: 25 // ecma 19.2.1 Function (p1, p2, ... , pn, body) 26 static JSTaggedValue FunctionConstructor(EcmaRuntimeCallInfo *argv); 27 28 // ecma 19.2.3 The Function prototype object is itself a built-in function object. 29 static JSTaggedValue FunctionPrototypeInvokeSelf(EcmaRuntimeCallInfo *argv); 30 31 // ecma 19.2.3.1 Function.prototype.apply (thisArg, argArray) 32 static JSTaggedValue FunctionPrototypeApply(EcmaRuntimeCallInfo *argv); 33 34 // ecma 19.2.3.2 Function.prototype.bind (thisArg , ...args) 35 static JSTaggedValue FunctionPrototypeBind(EcmaRuntimeCallInfo *argv); 36 37 // ecma 19.2.3.3 Function.prototype.call (thisArg , ...args) 38 static JSTaggedValue FunctionPrototypeCall(EcmaRuntimeCallInfo *argv); 39 40 // ecma 19.2.3.5 Function.prototype.toString () 41 static JSTaggedValue FunctionPrototypeToString(EcmaRuntimeCallInfo *argv); 42 43 // ecma 19.2.3.6 Function.prototype[@@hasInstance] (V) 44 static JSTaggedValue FunctionPrototypeHasInstance(EcmaRuntimeCallInfo *argv); 45 }; 46 } // namespace panda::ecmascript::builtins 47 #endif // ECMASCRIPT_BUILTINS_BUILTINS_FUNCTION_H 48