Skip to main content

arcis_interpreter/
lib.rs

1/// The macro to define `ArcisType`, which we use to help run the tests.
2/// * input and output generation
3/// * formatting to use arcis_compiler functions
4/// * packing and unpacking
5/// * random generation in `ArcisRNG::gen_uniform`
6mod arcis_type;
7mod assert_current_module;
8/// Finds all `#[instruction]` and runs the interpreter on them.
9mod circuit_builder;
10/// Finds and parse the standard dependencies and the user-made dependencies.
11mod dependencies;
12/// The `encrypted_mod!` macro.
13mod encrypted_mod;
14/// Our `Error` type. Inspired from `syn::Error`.
15mod error;
16/// Helps clean the `#[encrypted]` module before returning from the macro.
17/// * Removes helper attributes like `#[instruction]`.
18/// * Adds `#[derive(ArcisType)]` on every `struct`.
19mod helper_cleaner;
20/// The `Interpreter`.
21mod interpreter;
22/// A builder for the `Interpreter`. Helps with lifetime issues.
23mod interpreter_builder;
24/// The `#[encrypted_library]` macro.
25mod library;
26/// The `#[encrypted]` macro.
27mod module;
28/// Some tools for `arcium profile`.
29mod profile;
30/// Contains examples that we want to fail with the right error message.
31#[cfg(test)]
32mod tests;
33/// Utilities.
34mod utils;
35
36pub use crate::{
37    arcis_type::arcis_type_macro,
38    assert_current_module::assert_current_module_macro,
39    encrypted_mod::encrypted_mod_macro,
40    interpreter_builder::InterpreterBuilder,
41    library::library_macro,
42    module::{module_macro, run_interpreter_on_module},
43    utils::error_macro,
44};