// Copyright 2023-Present Jonas Kruckenberg
//
// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
// http://opensource.org/licenses/MIT>, at your option. This file may not be
// copied, modified, or distributed except according to those terms.

#![cfg_attr(not(test), no_std)]

extern crate alloc;

mod address_space;
mod frame;
mod frame_allocator;
#[cfg(test)]
mod test_utils;

pub type Result<T> = anyhow::Result<T>;

pub use access_rules::{AccessRules, WriteOrExecute};
pub use address_space::{AddressSpace, RawAddressSpace};
pub use addresses::{AddressRangeExt, PhysicalAddress, VirtualAddress};
pub use frame::Frame;
pub use frame_allocator::{AreaSelection, FrameAllocator, SelectionError, select_areas};
