#![allow(non_snake_case)]
#![allow(dead_code)]
#![allow(unused_parens)]
extern crate core;
extern crate alloc;
pub mod htracer;
pub mod modules;
pub mod components;
mod thread_manager;
mod context_manager;
pub mod crates;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum Errors
{
#[error("'module/{0}' not found in config")]
CannotFoundConfigNode(String),
#[error("module '{0}' configuration returned a error : {1}")]
ModuleConfigError(String,#[source] anyhow::Error),
}
#[macro_export]
macro_rules! HTrace
{
($a:expr) => {
$crate::htracer::HTracer::trace(&$a, $crate::components::level::Level::NORMAL, file!(), line!(), vec![]);
};
(($b:expr) $a:expr) => {
if($b.tou8() >= $crate::components::level::Level::ERROR.tou8())
{
$crate::htracer::HTracer::trace(&$a, $b, file!(), line!(),$crate::htracer::HTracer::backtrace(file!()));
}
else
{
$crate::htracer::HTracer::trace(&$a, $b, file!(), line!(), vec![]);
}
};
($a:expr $(,$arg:expr)*) => {
$crate::htracer::HTracer::trace(&format!($a,$($arg),*), $crate::components::level::Level::NORMAL, file!(), line!(), vec![])
};
(($b:expr) $a:expr $(,$arg:expr)*) => {
if($b.tou8() >= $crate::components::level::Level::ERROR.tou8())
{
$crate::htracer::HTracer::trace(&format!($a,$($arg),*), $b, file!(), line!(),$crate::htracer::HTracer::backtrace(file!()))
}
else
{
$crate::htracer::HTracer::trace(&format!($a,$($arg),*), $b, file!(), line!(), vec![])
}
};
}
#[macro_export]
macro_rules! HTraceError
{
($a:expr) => {
if let Err(errorToTrace) = $a {
$crate::HTrace!(($crate::components::level::Level::ERROR) errorToTrace);
}
};
($desc:expr,$a:expr) => {
if let Err(errorToTrace) = $a {
$crate::HTrace!(($crate::components::level::Level::ERROR) $desc,errorToTrace);
}
};
(($b:expr) $a:expr) => {
if let Err(errorToTrace) = $a {
$crate::HTrace!(($b) errorToTrace);
}
};
(($b:expr) $desc:expr,$a:expr) => {
if let Err(errorToTrace) = $a {
$crate::HTrace!(($b) $desc, errorToTrace);
}
};
}