| /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- |
| * vim: set ts=8 sts=4 et sw=4 tw=99: |
| * 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/. */ |
| |
| // This file contains public type declarations that are used *frequently*. If |
| // it doesn't occur at least 10 times in Gecko, it probably shouldn't be in |
| // here. |
| // |
| // It includes only: |
| // - forward declarations of structs and classes; |
| // - typedefs; |
| // - enums (maybe). |
| // It does *not* contain any struct or class definitions. |
| |
| #ifndef js_TypeDecls_h |
| #define js_TypeDecls_h |
| |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "js-config.h" |
| |
| struct JSContext; |
| class JSFunction; |
| class JSObject; |
| class JSScript; |
| class JSString; |
| class JSAddonId; |
| |
| struct jsid; |
| |
| namespace JS { |
| |
| typedef unsigned char Latin1Char; |
| |
| class Symbol; |
| class Value; |
| template <typename T> class Handle; |
| template <typename T> class MutableHandle; |
| template <typename T> class Rooted; |
| template <typename T> class PersistentRooted; |
| |
| typedef Handle<JSFunction*> HandleFunction; |
| typedef Handle<jsid> HandleId; |
| typedef Handle<JSObject*> HandleObject; |
| typedef Handle<JSScript*> HandleScript; |
| typedef Handle<JSString*> HandleString; |
| typedef Handle<JS::Symbol*> HandleSymbol; |
| typedef Handle<Value> HandleValue; |
| |
| typedef MutableHandle<JSFunction*> MutableHandleFunction; |
| typedef MutableHandle<jsid> MutableHandleId; |
| typedef MutableHandle<JSObject*> MutableHandleObject; |
| typedef MutableHandle<JSScript*> MutableHandleScript; |
| typedef MutableHandle<JSString*> MutableHandleString; |
| typedef MutableHandle<JS::Symbol*> MutableHandleSymbol; |
| typedef MutableHandle<Value> MutableHandleValue; |
| |
| typedef Rooted<JSObject*> RootedObject; |
| typedef Rooted<JSFunction*> RootedFunction; |
| typedef Rooted<JSScript*> RootedScript; |
| typedef Rooted<JSString*> RootedString; |
| typedef Rooted<JS::Symbol*> RootedSymbol; |
| typedef Rooted<jsid> RootedId; |
| typedef Rooted<JS::Value> RootedValue; |
| |
| typedef PersistentRooted<JSFunction*> PersistentRootedFunction; |
| typedef PersistentRooted<jsid> PersistentRootedId; |
| typedef PersistentRooted<JSObject*> PersistentRootedObject; |
| typedef PersistentRooted<JSScript*> PersistentRootedScript; |
| typedef PersistentRooted<JSString*> PersistentRootedString; |
| typedef PersistentRooted<JS::Symbol*> PersistentRootedSymbol; |
| typedef PersistentRooted<Value> PersistentRootedValue; |
| |
| } // namespace JS |
| |
| #endif /* js_TypeDecls_h */ |