2  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 
   3  *  Copyright (C) 2006, 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 
  21 #ifndef FunctionConstructor_h 
  22 #define FunctionConstructor_h 
  24 #include "InternalFunction.h" 
  32     class FunctionPrototype
; 
  34     class FunctionConstructor 
: public InternalFunction 
{ 
  36         typedef InternalFunction Base
; 
  38         static FunctionConstructor
* create(ExecState
* exec
, JSGlobalObject
* globalObject
, Structure
* structure
, FunctionPrototype
* functionPrototype
) 
  40             FunctionConstructor
* constructor 
= new (NotNull
, allocateCell
<FunctionConstructor
>(*exec
->heap())) FunctionConstructor(globalObject
, structure
); 
  41             constructor
->finishCreation(exec
, functionPrototype
); 
  45         static const ClassInfo s_info
; 
  47         static Structure
* createStructure(VM
& vm
, JSGlobalObject
* globalObject
, JSValue prototype
)  
  49             return Structure::create(vm
, globalObject
, prototype
, TypeInfo(ObjectType
, StructureFlags
), &s_info
);  
  53         FunctionConstructor(JSGlobalObject
*, Structure
*); 
  54         void finishCreation(ExecState
*, FunctionPrototype
*); 
  55         static ConstructType 
getConstructData(JSCell
*, ConstructData
&); 
  56         static CallType 
getCallData(JSCell
*, CallData
&); 
  59     JSObject
* constructFunction(ExecState
*, JSGlobalObject
*, const ArgList
&, const Identifier
& functionName
, const String
& sourceURL
, const WTF::TextPosition
&); 
  60     JSObject
* constructFunction(ExecState
*, JSGlobalObject
*, const ArgList
&); 
  62     JS_EXPORT_PRIVATE JSObject
* constructFunctionSkippingEvalEnabledCheck(ExecState
*, JSGlobalObject
*, const ArgList
&, const Identifier
&, const String
&, const WTF::TextPosition
&); 
  66 #endif // FunctionConstructor_h