#![doc = include_str!("../README.md")]
#![no_std]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(clippy::all)]
use core::{
ffi::{CStr, FromBytesUntilNulError},
fmt::Debug,
str,
};
include!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/src/generated/",
env!("TARGET_TRIPLE"),
"/bindings.rs"
));
pub const QHULL_LICENSE_TEXT: &str = include_str!("../qhull/COPYING.txt");
fn str_from_c_char_array<'a>(data: &'a [core::ffi::c_char]) -> Result<&'a CStr, FromBytesUntilNulError> {
unsafe {
CStr::from_bytes_until_nul(core::slice::from_raw_parts(
data.as_ptr() as *const u8,
data.len(),
))
}
}
impl Debug for qhT {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
f.debug_struct("qhT")
.field("ALLpoints", &self.ALLpoints)
.field("ALLOWshort", &self.ALLOWshort)
.field("ALLOWwarning", &self.ALLOWwarning)
.field("ALLOWwide", &self.ALLOWwide)
.field("ANGLEmerge", &self.ANGLEmerge)
.field("APPROXhull", &self.APPROXhull)
.field("MINoutside", &self.MINoutside)
.field("ANNOTATEoutput", &self.ANNOTATEoutput)
.field("ATinfinity", &self.ATinfinity)
.field("AVOIDold", &self.AVOIDold)
.field("BESToutside", &self.BESToutside)
.field("CDDinput", &self.CDDinput)
.field("CDDoutput", &self.CDDoutput)
.field("CHECKduplicates", &self.CHECKduplicates)
.field("CHECKfrequently", &self.CHECKfrequently)
.field("premerge_cos", &self.premerge_cos)
.field("postmerge_cos", &self.postmerge_cos)
.field("DELAUNAY", &self.DELAUNAY)
.field("DOintersections", &self.DOintersections)
.field("DROPdim", &self.DROPdim)
.field("FLUSHprint", &self.FLUSHprint)
.field("FORCEoutput", &self.FORCEoutput)
.field("GOODpoint", &self.GOODpoint)
.field("GOODpointp", &self.GOODpointp)
.field("GOODthreshold", &self.GOODthreshold)
.field("GOODvertex", &self.GOODvertex)
.field("GOODvertexp", &self.GOODvertexp)
.field("HALFspace", &self.HALFspace)
.field("ISqhullQh", &self.ISqhullQh)
.field("IStracing", &self.IStracing)
.field("KEEParea", &self.KEEParea)
.field("KEEPcoplanar", &self.KEEPcoplanar)
.field("KEEPinside", &self.KEEPinside)
.field("KEEPmerge", &self.KEEPmerge)
.field("KEEPminArea", &self.KEEPminArea)
.field("MAXcoplanar", &self.MAXcoplanar)
.field("MAXwide", &self.MAXwide)
.field("MERGEexact", &self.MERGEexact)
.field("MERGEindependent", &self.MERGEindependent)
.field("MERGING", &self.MERGING)
.field("premerge_centrum", &self.premerge_centrum)
.field("postmerge_centrum", &self.postmerge_centrum)
.field("MERGEpinched", &self.MERGEpinched)
.field("MERGEvertices", &self.MERGEvertices)
.field("MINvisible", &self.MINvisible)
.field("NOnarrow", &self.NOnarrow)
.field("NOnearinside", &self.NOnearinside)
.field("NOpremerge", &self.NOpremerge)
.field("ONLYgood", &self.ONLYgood)
.field("ONLYmax", &self.ONLYmax)
.field("PICKfurthest", &self.PICKfurthest)
.field("POSTmerge", &self.POSTmerge)
.field("PREmerge", &self.PREmerge)
.field("PRINTcentrums", &self.PRINTcentrums)
.field("PRINTcoplanar", &self.PRINTcoplanar)
.field("PRINTdim", &self.PRINTdim)
.field("PRINTdots", &self.PRINTdots)
.field("PRINTgood", &self.PRINTgood)
.field("PRINTinner", &self.PRINTinner)
.field("PRINTneighbors", &self.PRINTneighbors)
.field("PRINTnoplanes", &self.PRINTnoplanes)
.field("PRINToptions1st", &self.PRINToptions1st)
.field("PRINTouter", &self.PRINTouter)
.field("PRINTprecision", &self.PRINTprecision)
.field("PRINTout", &self.PRINTout)
.field("PRINTridges", &self.PRINTridges)
.field("PRINTspheres", &self.PRINTspheres)
.field("PRINTstatistics", &self.PRINTstatistics)
.field("PRINTsummary", &self.PRINTsummary)
.field("PRINTtransparent", &self.PRINTtransparent)
.field("PROJECTdelaunay", &self.PROJECTdelaunay)
.field("PROJECTinput", &self.PROJECTinput)
.field("RANDOMdist", &self.RANDOMdist)
.field("RANDOMfactor", &self.RANDOMfactor)
.field("RANDOMa", &self.RANDOMa)
.field("RANDOMb", &self.RANDOMb)
.field("RANDOMoutside", &self.RANDOMoutside)
.field("REPORTfreq", &self.REPORTfreq)
.field("REPORTfreq2", &self.REPORTfreq2)
.field("RERUN", &self.RERUN)
.field("ROTATErandom", &self.ROTATErandom)
.field("SCALEinput", &self.SCALEinput)
.field("SCALElast", &self.SCALElast)
.field("SETroundoff", &self.SETroundoff)
.field("SKIPcheckmax", &self.SKIPcheckmax)
.field("SKIPconvex", &self.SKIPconvex)
.field("SPLITthresholds", &self.SPLITthresholds)
.field("STOPadd", &self.STOPadd)
.field("STOPcone", &self.STOPcone)
.field("STOPpoint", &self.STOPpoint)
.field("TESTpoints", &self.TESTpoints)
.field("TESTvneighbors", &self.TESTvneighbors)
.field("TRACElevel", &self.TRACElevel)
.field("TRACElastrun", &self.TRACElastrun)
.field("TRACEpoint", &self.TRACEpoint)
.field("TRACEdist", &self.TRACEdist)
.field("TRACEmerge", &self.TRACEmerge)
.field("TRIangulate", &self.TRIangulate)
.field("TRInormals", &self.TRInormals)
.field("UPPERdelaunay", &self.UPPERdelaunay)
.field("USEstdout", &self.USEstdout)
.field("VERIFYoutput", &self.VERIFYoutput)
.field("VIRTUALmemory", &self.VIRTUALmemory)
.field("VORONOI", &self.VORONOI)
.field("AREAfactor", &self.AREAfactor)
.field("DOcheckmax", &self.DOcheckmax)
.field("feasible_string", &self.feasible_string)
.field("feasible_point", &self.feasible_point)
.field("GETarea", &self.GETarea)
.field("KEEPnearinside", &self.KEEPnearinside)
.field("hull_dim", &self.hull_dim)
.field("input_dim", &self.input_dim)
.field("num_points", &self.num_points)
.field("first_point", &self.first_point)
.field("POINTSmalloc", &self.POINTSmalloc)
.field("input_points", &self.input_points)
.field("input_malloc", &self.input_malloc)
.field("qhull_command", &str_from_c_char_array(&self.qhull_command))
.field("qhull_commandsiz2", &self.qhull_commandsiz2)
.field("rbox_command", &str_from_c_char_array(&self.rbox_command))
.field("qhull_options", &str_from_c_char_array(&self.qhull_options))
.field("qhull_optionlen", &self.qhull_optionlen)
.field("qhull_optionsiz", &self.qhull_optionsiz)
.field("qhull_optionsiz2", &self.qhull_optionsiz2)
.field("run_id", &self.run_id)
.field("VERTEXneighbors", &self.VERTEXneighbors)
.field("ZEROcentrum", &self.ZEROcentrum)
.field("upper_threshold", &self.upper_threshold)
.field("lower_threshold", &self.lower_threshold)
.field("upper_bound", &self.upper_bound)
.field("lower_bound", &self.lower_bound)
.field("ANGLEround", &self.ANGLEround)
.field("centrum_radius", &self.centrum_radius)
.field("cos_max", &self.cos_max)
.field("DISTround", &self.DISTround)
.field("MAXabs_coord", &self.MAXabs_coord)
.field("MAXlastcoord", &self.MAXlastcoord)
.field("MAXoutside", &self.MAXoutside)
.field("MAXsumcoord", &self.MAXsumcoord)
.field("MAXwidth", &self.MAXwidth)
.field("MINdenom_1", &self.MINdenom_1)
.field("MINdenom", &self.MINdenom)
.field("MINdenom_1_2", &self.MINdenom_1_2)
.field("MINdenom_2", &self.MINdenom_2)
.field("MINlastcoord", &self.MINlastcoord)
.field("NEARzero", &self.NEARzero)
.field("NEARinside", &self.NEARinside)
.field("ONEmerge", &self.ONEmerge)
.field("outside_err", &self.outside_err)
.field("WIDEfacet", &self.WIDEfacet)
.field("NARROWhull", &self.NARROWhull)
.field("qhull", &self.qhull)
.field("errexit", &"...")
.field("jmpXtra", &"...")
.field("restartexit", &"...")
.field("jmpXtra2", &"...")
.field("fin", &self.fin)
.field("fout", &self.fout)
.field("ferr", &self.ferr)
.field("interior_point", &self.interior_point)
.field("normal_size", &self.normal_size)
.field("center_size", &self.center_size)
.field("TEMPsize", &self.TEMPsize)
.field("facet_list", &self.facet_list)
.field("facet_tail", &self.facet_tail)
.field("facet_next", &self.facet_next)
.field("newfacet_list", &self.newfacet_list)
.field("visible_list", &self.visible_list)
.field("num_visible", &self.num_visible)
.field("tracefacet_id", &self.tracefacet_id)
.field("tracefacet", &self.tracefacet)
.field("traceridge_id", &self.traceridge_id)
.field("traceridge", &self.traceridge)
.field("tracevertex_id", &self.tracevertex_id)
.field("tracevertex", &self.tracevertex)
.field("vertex_list", &self.vertex_list)
.field("vertex_tail", &self.vertex_tail)
.field("newvertex_list", &self.newvertex_list)
.field("num_facets", &self.num_facets)
.field("num_vertices", &self.num_vertices)
.field("num_outside", &self.num_outside)
.field("num_good", &self.num_good)
.field("facet_id", &self.facet_id)
.field("ridge_id", &self.ridge_id)
.field("vertex_id", &self.vertex_id)
.field("first_newfacet", &self.first_newfacet)
.field("hulltime", &self.hulltime)
.field("ALLOWrestart", &self.ALLOWrestart)
.field("build_cnt", &self.build_cnt)
.field("CENTERtype", &self.CENTERtype)
.field("furthest_id", &self.furthest_id)
.field("last_errcode", &self.last_errcode)
.field("GOODclosest", &self.GOODclosest)
.field("coplanar_apex", &self.coplanar_apex)
.field("hasAreaVolume", &self.hasAreaVolume)
.field("hasTriangulation", &self.hasTriangulation)
.field("isRenameVertex", &self.isRenameVertex)
.field("JOGGLEmax", &self.JOGGLEmax)
.field("maxoutdone", &self.maxoutdone)
.field("max_outside", &self.max_outside)
.field("max_vertex", &self.max_vertex)
.field("min_vertex", &self.min_vertex)
.field("NEWfacets", &self.NEWfacets)
.field("NEWtentative", &self.NEWtentative)
.field("findbestnew", &self.findbestnew)
.field("findbest_notsharp", &self.findbest_notsharp)
.field("NOerrexit", &self.NOerrexit)
.field("PRINTcradius", &self.PRINTcradius)
.field("PRINTradius", &self.PRINTradius)
.field("POSTmerging", &self.POSTmerging)
.field("printoutvar", &self.printoutvar)
.field("printoutnum", &self.printoutnum)
.field("repart_facetid", &self.repart_facetid)
.field("retry_addpoint", &self.retry_addpoint)
.field("QHULLfinished", &self.QHULLfinished)
.field("totarea", &self.totarea)
.field("totvol", &self.totvol)
.field("visit_id", &self.visit_id)
.field("vertex_visit", &self.vertex_visit)
.field("WAScoplanar", &self.WAScoplanar)
.field("ZEROall_ok", &self.ZEROall_ok)
.field("facet_mergeset", &self.facet_mergeset)
.field("degen_mergeset", &self.degen_mergeset)
.field("vertex_mergeset", &self.vertex_mergeset)
.field("hash_table", &self.hash_table)
.field("other_points", &self.other_points)
.field("del_vertices", &self.del_vertices)
.field("gm_matrix", &self.gm_matrix)
.field("gm_row", &self.gm_row)
.field("line", &self.line)
.field("maxline", &self.maxline)
.field("half_space", &self.half_space)
.field("temp_malloc", &self.temp_malloc)
.field("ERREXITcalled", &self.ERREXITcalled)
.field("firstcentrum", &self.firstcentrum)
.field("old_randomdist", &self.old_randomdist)
.field("coplanarfacetset", &self.coplanarfacetset)
.field("last_low", &self.last_low)
.field("last_high", &self.last_high)
.field("last_newhigh", &self.last_newhigh)
.field("lastcpu", &self.lastcpu)
.field("lastfacets", &self.lastfacets)
.field("lastmerges", &self.lastmerges)
.field("lastplanes", &self.lastplanes)
.field("lastdist", &self.lastdist)
.field("lastreport", &self.lastreport)
.field("mergereport", &self.mergereport)
.field("old_tempstack", &self.old_tempstack)
.field("ridgeoutnum", &self.ridgeoutnum)
.field("last_random", &self.last_random)
.field("rbox_errexit", &"...")
.field("jmpXtra3", &"...")
.field("rbox_isinteger", &self.rbox_isinteger)
.field("rbox_out_offset", &self.rbox_out_offset)
.field("cpp_object", &self.cpp_object)
.field("cpp_other", &self.cpp_other)
.field("cpp_user", &self.cpp_user)
.field("qhmem", &self.qhmem)
.field("qhstat", &"...")
.finish()
}
}