#![deny(clippy::all, clippy::cargo)]
#![allow(clippy::as_conversions)]
#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(feature = "std")]
extern crate core;
extern crate endian_type_rs as endian_type;
#[macro_use]
extern crate memoffset;
#[macro_use]
extern crate static_assertions;
extern crate fallible_iterator;
extern crate unsafe_unwrap;
pub mod base;
pub mod error;
pub mod index;
pub mod prelude;
pub mod spec;
#[doc(hidden)]
pub mod common;
pub(crate) mod priv_util;
#[cfg(all(any(feature = "doctest", doc), feature = "std"))]
#[doc(hidden)]
pub mod doctest {
pub use crate::base::*;
pub use crate::index::*;
pub use crate::prelude::*;
macro_rules! external_doc_test {
($x:expr) => {
#[doc = $x]
extern "C" {}
};
}
external_doc_test!(include_str!("../README.md"));
#[repr(align(4))]
struct _Wrapper<T>(T);
pub const FDT: &[u8] = &_Wrapper(*include_bytes!("../tests/riscv64-virt.dtb")).0;
pub fn doctest_index<'i, 'dt: 'i>() -> (DevTreeIndex<'i, 'dt>, Vec<u8>) {
let devtree = unsafe { DevTree::new(FDT) }.unwrap();
let layout = DevTreeIndex::get_layout(&devtree).unwrap();
let mut vec = vec![0u8; layout.size() + layout.align()];
let (p, s) = (vec.as_mut_ptr(), vec.len());
unsafe {
let vec_copy = core::slice::from_raw_parts_mut(p, s);
(DevTreeIndex::new(devtree, vec_copy).unwrap(), vec)
}
}
}