#![warn(rustdoc::missing_crate_level_docs)]
#![doc(test(attr(deny(warnings))))]
#![cfg_attr(docsrs, feature(doc_cfg))]
pub(crate) use hyperscan_sys::hs;
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub mod alloc;
pub mod database;
pub mod error;
#[cfg(feature = "compiler")]
#[cfg_attr(docsrs, doc(cfg(feature = "compiler")))]
pub mod expression;
#[cfg(feature = "compiler")]
#[cfg_attr(docsrs, doc(cfg(feature = "compiler")))]
pub mod flags;
pub mod matchers;
pub mod state;
pub mod stream;
unsafe fn free_misc(p: *mut u8) {
let p = p as *mut std::os::raw::c_void;
cfg_if::cfg_if! {
if #[cfg(feature = "alloc")] {
alloc::misc_free_func(p);
} else {
libc::free(p);
}
}
}
#[cfg(feature = "chimera")]
unsafe fn free_misc_chimera(p: *mut u8) {
let p = p as *mut std::os::raw::c_void;
cfg_if::cfg_if! {
if #[cfg(feature = "alloc")] {
alloc::chimera::chimera_misc_free_func(p);
} else {
libc::free(p);
}
}
}
#[cfg(feature = "compiler")]
#[cfg_attr(docsrs, doc(cfg(feature = "compiler")))]
pub fn check_valid_platform() -> Result<(), error::HyperscanRuntimeError> {
error::HyperscanRuntimeError::from_native(unsafe { hs::hs_valid_platform() })
}
pub fn hyperscan_version() -> &'static std::ffi::CStr {
unsafe { std::ffi::CStr::from_ptr(hs::hs_version()) }
}
#[cfg(feature = "chimera")]
#[cfg_attr(docsrs, doc(cfg(feature = "chimera")))]
pub fn chimera_version() -> &'static std::ffi::CStr {
unsafe { std::ffi::CStr::from_ptr(hs::ch_version()) }
}