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;
7/// Finds all `#[instruction]` and runs the interpreter on them.
8mod circuit_builder;
9/// Finds and parse the standard dependencies and the user-made dependencies.
10mod dependencies;
11/// Our `Error` type. Inspired from `syn::Error`.
12mod error;
13/// Helps clean the `#[encrypted]` module before returning from the macro.
14/// * Removes helper attributes like `#[instruction]`.
15/// * Adds `#[derive(ArcisType)]` on every `struct`.
16mod helper_cleaner;
17/// Finds all `#[instruction]`. Only used by `arcis-interpreter-random-tests`.
18mod instruction_finder;
19/// The `Interpreter`.
20mod interpreter;
21/// A builder for the `Interpreter`. Helps with lifetime issues.
22mod interpreter_builder;
23/// The `#[encrypted_library]` macro.
24mod library;
25/// Something to parse macros like `println!`.
26mod macro_parser;
27/// The `#[encrypted]` macro.
28mod module;
29/// Some tools for `arcium profile`.
30mod profile;
31/// Contains examples that we want to fail with the right error message.
32#[cfg(test)]
33mod tests;
34/// Utilities.
35mod utils;
36
37pub use crate::{
38    arcis_type::arcis_type_macro,
39    instruction_finder::InstructionFinder,
40    interpreter_builder::InterpreterBuilder,
41    library::library_macro,
42    module::{module_macro, run_interpreter_on_module},
43    utils::error_macro,
44};