#[macro_export]
macro_rules! cmn_assert {
($($arg:tt)*) => {
if !$($arg)* {
panic!("Assertion failed!");
}
};
}
#[macro_export]
macro_rules! cmn_contains {
($s:expr, $sub:expr) => {
$s.contains($sub)
};
}
#[macro_export]
macro_rules! cmn_in_range {
($value:expr, $min:expr, $max:expr) => {
($value >= $min && $value <= $max)
};
}
#[macro_export]
macro_rules! cmn_max {
($x:expr $(, $y:expr)*) => {{
let mut max = $x;
$(
if max < $y { max = $y; }
)*
max
}};
}
#[macro_export]
macro_rules! cmn_min {
($x:expr $(, $y:expr)*) => {{
let mut min = $x;
$(
if min > $y { min = $y; }
)*
min
}};
}
#[macro_export]
macro_rules! cmn_to_num {
($s:expr) => {
$s.parse::<f64>().unwrap_or(0.0)
};
}
#[macro_export]
macro_rules! cmn_constants {
($($name:ident = $value:expr),*) => {
$(
pub const $name: f64 = $value;
)*
};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn {
($($tt:tt)*) => {
cmn::Common::parse($($tt)*)
};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn_parse {
($input:expr) => {
Common::parse($input)
};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn_join {
($($s:expr),*) => {{
let mut s = String::new();
$(
s += &$s;
)*
s
}};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn_split {
($s:expr) => {{
let mut v = Vec::new();
for w in $s.split_whitespace() {
v.push(w.to_string());
}
v
}};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn_vec {
($($elem:expr),*) => {{
let mut v = Vec::new();
$(v.push($elem);)*
v
}};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn_map {
($($key:expr => $value:expr),*) => {{
let mut map =
::std::collections::HashMap::new();
$(
map.insert($key, $value);
)*
map
}};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn_print {
($($arg:tt)*) => {
println!("{}", format_args!("{}", $($arg)*));
};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! cmn_print_vec {
($($v:expr),*) => {{
for v in $($v),* {
println!("{}", v);
}
}};
}