Fix build by adding all (hopefully) the missing includes.
[WebKit-https.git] / JavaScriptCore / kjs / BooleanPrototype.cpp
1 /*
2  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
3  *  Copyright (C) 2003, 2008 Apple Inc. All rights reserved.
4  *
5  *  This library is free software; you can redistribute it and/or
6  *  modify it under the terms of the GNU Lesser General Public
7  *  License as published by the Free Software Foundation; either
8  *  version 2 of the License, or (at your option) any later version.
9  *
10  *  This library is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  *  Lesser General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Lesser General Public
16  *  License along with this library; if not, write to the Free Software
17  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18  *
19  */
20
21 #include "config.h"
22 #include "BooleanPrototype.h"
23
24 #include "FunctionPrototype.h"
25 #include "JSFunction.h"
26 #include "ObjectPrototype.h"
27
28 namespace KJS {
29
30 // Functions
31 static JSValue* booleanProtoFuncToString(ExecState*, JSObject*, JSValue*, const ArgList&);
32 static JSValue* booleanProtoFuncValueOf(ExecState*, JSObject*, JSValue*, const ArgList&);
33
34 // ECMA 15.6.4
35
36 BooleanPrototype::BooleanPrototype(ExecState* exec, ObjectPrototype* objectPrototype, FunctionPrototype* functionPrototype)
37     : BooleanObject(objectPrototype)
38 {
39     setInternalValue(jsBoolean(false));
40
41     putDirectFunction(new (exec) PrototypeFunction(exec, functionPrototype, 0, exec->propertyNames().toString, booleanProtoFuncToString), DontEnum);
42     putDirectFunction(new (exec) PrototypeFunction(exec, functionPrototype, 0, exec->propertyNames().valueOf, booleanProtoFuncValueOf), DontEnum);
43 }
44
45
46 // ------------------------------ Functions --------------------------
47
48 // ECMA 15.6.4.2 + 15.6.4.3
49
50 JSValue* booleanProtoFuncToString(ExecState* exec, JSObject*, JSValue* thisValue, const ArgList&)
51 {
52     if (thisValue == jsBoolean(false))
53         return jsString(exec, "false");
54
55     if (thisValue == jsBoolean(true))
56         return jsString(exec, "true");
57
58     if (!thisValue->isObject(&BooleanObject::info))
59         return throwError(exec, TypeError);
60
61     if (static_cast<BooleanObject*>(thisValue)->internalValue() == jsBoolean(false))
62         return jsString(exec, "false");
63
64     ASSERT(static_cast<BooleanObject*>(thisValue)->internalValue() == jsBoolean(true));
65     return jsString(exec, "true");
66 }
67
68 JSValue* booleanProtoFuncValueOf(ExecState* exec, JSObject*, JSValue* thisValue, const ArgList&)
69 {
70     if (JSImmediate::isBoolean(thisValue))
71         return thisValue;
72
73     if (!thisValue->isObject(&BooleanObject::info))
74         return throwError(exec, TypeError);
75
76     return static_cast<BooleanObject*>(thisValue)->internalValue();
77 }
78
79 } // namespace KJS