46 lines
934 B
Rust
46 lines
934 B
Rust
#[cfg(feature = "num-rug-adapter")]
|
|
use num_rug_adapter as rug;
|
|
#[cfg(feature = "rug")]
|
|
use rug;
|
|
|
|
#[macro_use]
|
|
mod macros;
|
|
mod allocator;
|
|
mod arithmetic;
|
|
mod clause_types;
|
|
mod codegen;
|
|
mod debray_allocator;
|
|
mod fixtures;
|
|
mod forms;
|
|
mod heap_iter;
|
|
mod heap_print;
|
|
mod indexing;
|
|
mod instructions;
|
|
mod iterators;
|
|
mod machine;
|
|
mod read;
|
|
mod targets;
|
|
mod write;
|
|
|
|
use machine::streams::*;
|
|
use machine::*;
|
|
use read::*;
|
|
|
|
use nix::sys::signal;
|
|
use std::sync::atomic::Ordering;
|
|
|
|
extern "C" fn handle_sigint(signal: libc::c_int) {
|
|
let signal = signal::Signal::from_c_int(signal).unwrap();
|
|
if signal == signal::Signal::SIGINT {
|
|
INTERRUPT.store(true, Ordering::Relaxed);
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let handler = signal::SigHandler::Handler(handle_sigint);
|
|
unsafe { signal::signal(signal::Signal::SIGINT, handler) }.unwrap();
|
|
|
|
let mut wam = Machine::new(readline::input_stream(), Stream::stdout());
|
|
wam.run_top_level();
|
|
}
|