1#![cfg_attr(not(feature = "std"), no_std)]
2#![cfg_attr(not(feature = "std"), feature(alloc))]
3
4#[cfg(not(feature = "std"))]
5#[macro_use]
6extern crate alloc;
7
8extern crate parity_wasm;
9extern crate byteorder;
10#[macro_use] extern crate log;
11
12pub mod rules;
13
14mod build;
15mod optimizer;
16mod gas;
17mod symbols;
18mod ext;
19mod pack;
20mod runtime_type;
21
22pub mod stack_height;
23
24pub use build::{build, SourceTarget, Error as BuildError};
25pub use optimizer::{optimize, Error as OptimizerError};
26pub use gas::inject_gas_counter;
27pub use ext::{externalize, externalize_mem, underscore_funcs, ununderscore_funcs, shrink_unknown_stack};
28pub use pack::{pack_instance, Error as PackingError};
29pub use runtime_type::inject_runtime_type;
30
31pub struct TargetRuntime {
32 pub create_symbol: &'static str,
33 pub call_symbol: &'static str,
34 pub return_symbol: &'static str,
35}
36
37impl TargetRuntime {
38 pub fn substrate() -> TargetRuntime {
39 TargetRuntime {
40 create_symbol: "deploy",
41 call_symbol: "call",
42 return_symbol: "ext_return",
43 }
44 }
45
46 pub fn owasm() -> TargetRuntime {
47 TargetRuntime {
48 create_symbol: "deploy",
49 call_symbol: "call",
50 return_symbol: "ret",
51 }
52 }
53}
54
55#[cfg(not(feature = "std"))]
56mod std {
57 pub use core::*;
58 pub use alloc::{vec, string, boxed, borrow};
59
60 pub mod collections {
61 pub use alloc::collections::{BTreeMap, BTreeSet};
62 }
63}