use super::defaults;
use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct GeneralConfig {
#[serde(default)]
pub trace_instructions: bool,
#[serde(default = "GeneralConfig::default_start_pc")]
pub start_pc: u64,
#[serde(default = "GeneralConfig::default_direct_mode")]
pub direct_mode: bool,
#[serde(default)]
pub initial_sp: Option<u64>,
}
impl GeneralConfig {
const fn default_start_pc() -> u64 {
defaults::RAM_BASE
}
const fn default_direct_mode() -> bool {
true
}
}
impl Default for GeneralConfig {
fn default() -> Self {
Self {
trace_instructions: false,
start_pc: defaults::RAM_BASE,
direct_mode: true,
initial_sp: None,
}
}
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Console {
#[default]
Stdout,
Stderr,
Quiet,
Captured,
}