use regex::Regex;
#[crate::polydat_node(category = Hashing)]
fn hash(input: u64) -> u64 {
crate::numeric::hash::splitmix64_u64(input)
}
#[crate::polydat_node(category = Arithmetic)]
fn mul(input: u64, factor: crate::derive_support::Const<u64>) -> u64 {
input.wrapping_mul(*factor)
}
#[crate::polydat_node(category = Arithmetic)]
fn u64_add(a: u64, b: u64) -> u64 {
a.wrapping_add(b)
}
#[crate::polydat_node(category = Comparison)]
fn u64_eq(a: u64, b: u64) -> u64 {
if a == b { 1 } else { 0 }
}
fn compile_regex(pattern: &str) -> Regex {
Regex::new(pattern).unwrap_or_else(|e| panic!("regex_match: pattern '{pattern}': {e}"))
}
#[crate::polydat_node(category = Regex)]
fn regex_match(
input: &str,
pattern: crate::derive_support::Const<&str>,
#[poly_const(compile_regex, from = pattern)] re: &Regex,
) -> bool {
let _ = pattern;
re.is_match(input)
}
#[crate::polydat_node(category = Arithmetic)]
fn add(input: u64, addend: crate::derive_support::Const<u64>) -> u64 {
input.wrapping_add(*addend)
}
#[crate::polydat_node(category = Comparison)]
fn u64_gt(a: u64, b: u64) -> u64 {
if a > b { 1 } else { 0 }
}