use std::ffi::CStr;
use tg_sys::{
GeometryConstructors::tg_geom_free,
GeometryParsing::{tg_geom_error, tg_parse_wkt},
GeometryPredicates::tg_geom_intersects,
};
fn main() {
if std::env::args().len() != 3 {
eprintln!(
"Usage: {} <geom-a> <geom-b>",
std::env::args().next().as_deref().unwrap_or("__")
);
std::process::exit(1);
}
let mut a = std::env::args().nth(1).unwrap();
a.push('\0');
let a = CStr::from_bytes_with_nul(a.as_bytes()).unwrap();
let a = unsafe { tg_parse_wkt(a.as_ptr()) };
let err = unsafe { tg_geom_error(a) };
if !err.is_null() {
let err = unsafe { CStr::from_ptr(err) };
eprintln!(
"In {}: {:?}",
std::env::args().nth(1).unwrap(),
err.to_str().expect("INVALID ERROR STRING")
);
std::process::exit(1);
}
let mut b = std::env::args().nth(2).unwrap();
b.push('\0');
let b = CStr::from_bytes_with_nul(b.as_bytes()).unwrap();
let b = unsafe { tg_parse_wkt(b.as_ptr()) };
let err = unsafe { tg_geom_error(b) };
if !err.is_null() {
let err = unsafe { CStr::from_ptr(err) };
eprintln!(
"In {}: {:?}",
std::env::args().nth(2).unwrap(),
err.to_str().expect("INVALID ERROR STRING")
);
std::process::exit(1);
}
if unsafe { tg_geom_intersects(a, b) } {
println!("yes");
} else {
println!("no");
}
unsafe {
tg_geom_free(a);
tg_geom_free(b);
}
}