Source code

Revision control

Copy as Markdown

Other Tools

/* 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 module contains the xpcom interfaces exposed to rust code.
//!
//! The items in this module come in a few flavours:
//!
//! 1. `nsI*`: These are the types for XPCOM interfaces. They should always be
//! passed behind a reference, pointer, or `RefPtr`. They may be coerced to
//! their base interfaces using the `coerce` method.
//!
//! 2. `nsI*Coerce`: These traits provide the implementation mechanics for the
//! `coerce` method, and can usually be ignored. *These traits are hidden in
//! rustdoc*
//!
//! 3. `nsI*VTable`: These structs are the vtable definitions for each type.
//! They contain the base interface's vtable, followed by pointers for each
//! of the vtable's methods. If direct access is needed, a `*const nsI*` can
//! be safely transmuted to a `*const nsI*VTable`. *These structs are hidden
//! in rustdoc*
//!
//! 4. Typedefs used in idl file definitions.
// Interfaces defined in .idl files
mod idl;
pub use self::idl::*;
// Other interfaces which are needed to compile
mod nonidl;
pub use self::nonidl::*;