InternalFunction.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
  3. * Copyright (C) 2003, 2006, 2007, 2008 Apple Inc. All rights reserved.
  4. * Copyright (C) 2007 Cameron Zwarich (cwzwarich@uwaterloo.ca)
  5. * Copyright (C) 2007 Maks Orlovich
  6. *
  7. * This library is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Library General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2 of the License, or (at your option) any later version.
  11. *
  12. * This library is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Library General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Library General Public License
  18. * along with this library; see the file COPYING.LIB. If not, write to
  19. * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  20. * Boston, MA 02110-1301, USA.
  21. *
  22. */
  23. #ifndef InternalFunction_h
  24. #define InternalFunction_h
  25. #include "Identifier.h"
  26. #include "JSDestructibleObject.h"
  27. namespace JSC {
  28. class FunctionPrototype;
  29. class InternalFunction : public JSDestructibleObject {
  30. public:
  31. typedef JSDestructibleObject Base;
  32. static JS_EXPORTDATA const ClassInfo s_info;
  33. JS_EXPORT_PRIVATE const String& name(ExecState*);
  34. const String displayName(ExecState*);
  35. const String calculatedDisplayName(ExecState*);
  36. static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
  37. {
  38. return Structure::create(vm, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
  39. }
  40. protected:
  41. static const unsigned StructureFlags = ImplementsHasInstance | JSObject::StructureFlags;
  42. JS_EXPORT_PRIVATE InternalFunction(JSGlobalObject*, Structure*);
  43. JS_EXPORT_PRIVATE void finishCreation(VM&, const String& name);
  44. static CallType getCallData(JSCell*, CallData&);
  45. };
  46. InternalFunction* asInternalFunction(JSValue);
  47. inline InternalFunction* asInternalFunction(JSValue value)
  48. {
  49. ASSERT(asObject(value)->inherits(&InternalFunction::s_info));
  50. return static_cast<InternalFunction*>(asObject(value));
  51. }
  52. } // namespace JSC
  53. #endif // InternalFunction_h