use anyhow::Result; use std::{ffi::CString, mem::MaybeUninit, ptr}; extern crate triangle_sys as sys; pub struct TrianglulateOptions {} pub struct TriangulateResult {} pub fn triangulate(opts: TrianglulateOptions) -> Result { let switches = CString::new("")?; let mut input = sys::triangulateio { pointlist: todo!(), pointattributelist: todo!(), pointmarkerlist: todo!(), numberofpoints: todo!(), numberofpointattributes: todo!(), trianglelist: todo!(), triangleattributelist: todo!(), trianglearealist: todo!(), neighborlist: todo!(), numberoftriangles: todo!(), numberofcorners: todo!(), numberoftriangleattributes: todo!(), segmentlist: todo!(), segmentmarkerlist: todo!(), numberofsegments: todo!(), holelist: todo!(), numberofholes: todo!(), regionlist: todo!(), numberofregions: todo!(), edgelist: todo!(), edgemarkerlist: todo!(), normlist: todo!(), numberofedges: todo!(), }; let mut output = MaybeUninit::::uninit(); let mut vorout = ptr::null::(); unsafe { sys::triangulate( switches.as_ptr() as *mut _, &mut input as *mut _, output.as_mut_ptr(), vorout as *mut _, ) }; Ok(TriangulateResult {}) }