owasm_utils/
lib.rs

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}