2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
3 * Copyright (C) 2003, 2008 Apple Inc. All rights reserved.
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.
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.
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
22 #include "BooleanConstructor.h"
24 #include "BooleanPrototype.h"
25 #include "JSGlobalObject.h"
26 #include "Operations.h"
30 ASSERT_HAS_TRIVIAL_DESTRUCTOR(BooleanConstructor
);
32 const ClassInfo
BooleanConstructor::s_info
= { "Function", &Base::s_info
, 0, 0, CREATE_METHOD_TABLE(BooleanConstructor
) };
34 BooleanConstructor::BooleanConstructor(JSGlobalObject
* globalObject
, Structure
* structure
)
35 : InternalFunction(globalObject
, structure
)
39 void BooleanConstructor::finishCreation(ExecState
* exec
, BooleanPrototype
* booleanPrototype
)
41 Base::finishCreation(exec
->vm(), booleanPrototype
->classInfo()->className
);
42 putDirectWithoutTransition(exec
->vm(), exec
->propertyNames().prototype
, booleanPrototype
, DontEnum
| DontDelete
| ReadOnly
);
44 // no. of arguments for constructor
45 putDirectWithoutTransition(exec
->vm(), exec
->propertyNames().length
, jsNumber(1), ReadOnly
| DontDelete
| DontEnum
);
49 JSObject
* constructBoolean(ExecState
* exec
, const ArgList
& args
)
51 BooleanObject
* obj
= BooleanObject::create(exec
->vm(), asInternalFunction(exec
->callee())->globalObject()->booleanObjectStructure());
52 obj
->setInternalValue(exec
->vm(), jsBoolean(args
.at(0).toBoolean(exec
)));
56 static EncodedJSValue JSC_HOST_CALL
constructWithBooleanConstructor(ExecState
* exec
)
59 return JSValue::encode(constructBoolean(exec
, args
));
62 ConstructType
BooleanConstructor::getConstructData(JSCell
*, ConstructData
& constructData
)
64 constructData
.native
.function
= constructWithBooleanConstructor
;
65 return ConstructTypeHost
;
69 static EncodedJSValue JSC_HOST_CALL
callBooleanConstructor(ExecState
* exec
)
71 return JSValue::encode(jsBoolean(exec
->argument(0).toBoolean(exec
)));
74 CallType
BooleanConstructor::getCallData(JSCell
*, CallData
& callData
)
76 callData
.native
.function
= callBooleanConstructor
;
80 JSObject
* constructBooleanFromImmediateBoolean(ExecState
* exec
, JSGlobalObject
* globalObject
, JSValue immediateBooleanValue
)
82 BooleanObject
* obj
= BooleanObject::create(exec
->vm(), globalObject
->booleanObjectStructure());
83 obj
->setInternalValue(exec
->vm(), immediateBooleanValue
);