diff options
Diffstat (limited to 'src/components/script/dom/bindings/codegen/DOMJSClass.h')
-rw-r--r-- | src/components/script/dom/bindings/codegen/DOMJSClass.h | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/src/components/script/dom/bindings/codegen/DOMJSClass.h b/src/components/script/dom/bindings/codegen/DOMJSClass.h deleted file mode 100644 index 151960b5901..00000000000 --- a/src/components/script/dom/bindings/codegen/DOMJSClass.h +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_dom_DOMJSClass_h -#define mozilla_dom_DOMJSClass_h - -#include "jsapi.h" -#include "jsfriendapi.h" - -#include "mozilla/dom/PrototypeList.h" // auto-generated - -// We use slot 0 for holding the raw object. This is safe for both -// globals and non-globals. -#define DOM_OBJECT_SLOT 0 - -// All DOM globals must have a slot at DOM_PROTOTYPE_SLOT. We have to -// start at 1 past JSCLASS_GLOBAL_SLOT_COUNT because XPConnect uses -// that one. -#define DOM_PROTOTYPE_SLOT (JSCLASS_GLOBAL_SLOT_COUNT + 1) - -// We use these flag bits for the new bindings. -#define JSCLASS_DOM_GLOBAL JSCLASS_USERBIT1 - -// NOTE: This is baked into the Ion JIT as 0 in codegen for LGetDOMProperty and -// LSetDOMProperty. Those constants need to be changed accordingly if this value -// changes. -#define DOM_PROTO_INSTANCE_CLASS_SLOT 0 - -namespace mozilla { -namespace dom { - -typedef bool -(* ResolveProperty)(JSContext* cx, JSObject* wrapper, jsid id, bool set, - JSPropertyDescriptor* desc); -typedef bool -(* EnumerateProperties)(JSContext* cx, JSObject* wrapper, - JS::AutoIdVector& props); - -struct NativePropertyHooks -{ - ResolveProperty mResolveOwnProperty; - ResolveProperty mResolveProperty; - EnumerateProperties mEnumerateOwnProperties; - EnumerateProperties mEnumerateProperties; - - const NativePropertyHooks *mProtoHooks; -}; - -struct DOMClass -{ - // A list of interfaces that this object implements, in order of decreasing - // derivedness. - const prototypes::ID mInterfaceChain[prototypes::id::_ID_Count]; - - // We store the DOM object in reserved slot with index DOM_OBJECT_SLOT or in - // the proxy private if we use a proxy object. - // Sometimes it's an nsISupports and sometimes it's not; this class tells - // us which it is. - const bool mDOMObjectIsISupports; - - const NativePropertyHooks* mNativeHooks; -}; - -// Special JSClass for reflected DOM objects. -struct DOMJSClass -{ - // It would be nice to just inherit from JSClass, but that precludes pure - // compile-time initialization of the form |DOMJSClass = {...};|, since C++ - // only allows brace initialization for aggregate/POD types. - JSClass mBase; - - DOMClass mClass; - - static DOMJSClass* FromJSClass(JSClass* base) { - MOZ_ASSERT(base->flags & JSCLASS_IS_DOMJSCLASS); - return reinterpret_cast<DOMJSClass*>(base); - } - static const DOMJSClass* FromJSClass(const JSClass* base) { - MOZ_ASSERT(base->flags & JSCLASS_IS_DOMJSCLASS); - return reinterpret_cast<const DOMJSClass*>(base); - } - - static DOMJSClass* FromJSClass(js::Class* base) { - return FromJSClass(Jsvalify(base)); - } - static const DOMJSClass* FromJSClass(const js::Class* base) { - return FromJSClass(Jsvalify(base)); - } - - JSClass* ToJSClass() { return &mBase; } -}; - -inline bool -HasProtoOrIfaceArray(JSObject* global) -{ - MOZ_ASSERT(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL); - // This can be undefined if we GC while creating the global - return !js::GetReservedSlot(global, DOM_PROTOTYPE_SLOT).isUndefined(); -} - -inline JSObject** -GetProtoOrIfaceArray(JSObject* global) -{ - MOZ_ASSERT(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL); - return static_cast<JSObject**>( - js::GetReservedSlot(global, DOM_PROTOTYPE_SLOT).toPrivate()); -} - -} // namespace dom -} // namespace mozilla - -#endif /* mozilla_dom_DOMJSClass_h */ |