blob: 320cfe995c0a889273138667cfd135a942af5ae3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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/. */
use super::CodeOracle;
/// A trait that is able to render a declaration about a particular member declared in
/// the `ComponentInterface`.
/// Like `CodeType`, it can render declaration code and imports. It also is able to render
/// code at start-up of the FFI.
/// All methods are optional, and there is no requirement that the trait be used for a particular
/// `interface::` member. Thus, it can also be useful for conditionally rendering code.
pub trait CodeDeclaration {
/// A list of imports that are needed if this type is in use.
/// Classes are imported exactly once.
fn imports(&self, _oracle: &dyn CodeOracle) -> Option<Vec<String>> {
None
}
/// Code (one or more statements) that is run on start-up of the library,
/// but before the client code has access to it.
fn initialization_code(&self, _oracle: &dyn CodeOracle) -> Option<String> {
None
}
/// Code which represents this member. e.g. the foreign language class definition for
/// a given Object type.
fn definition_code(&self, _oracle: &dyn CodeOracle) -> Option<String> {
None
}
}
|