summaryrefslogtreecommitdiffstats
path: root/xpcom/rust/xpcom/src/interfaces/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'xpcom/rust/xpcom/src/interfaces/mod.rs')
-rw-r--r--xpcom/rust/xpcom/src/interfaces/mod.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/xpcom/rust/xpcom/src/interfaces/mod.rs b/xpcom/rust/xpcom/src/interfaces/mod.rs
new file mode 100644
index 0000000000..5b9de5cef5
--- /dev/null
+++ b/xpcom/rust/xpcom/src/interfaces/mod.rs
@@ -0,0 +1,31 @@
+/* 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::*;