diff --git a/bindings/c/include/manifold/manifoldc.h b/bindings/c/include/manifold/manifoldc.h index 64ca0d62f..79597157c 100644 --- a/bindings/c/include/manifold/manifoldc.h +++ b/bindings/c/include/manifold/manifoldc.h @@ -392,6 +392,18 @@ size_t manifold_box_size(); size_t manifold_rect_size(); size_t manifold_curvature_size(); +// allocation + +ManifoldManifold *manifold_alloc_manifold(); +ManifoldManifoldVec *manifold_alloc_manifold_vec(); +ManifoldCrossSection *manifold_alloc_cross_section(); +ManifoldCrossSectionVec *manifold_alloc_cross_section_vec(); +ManifoldSimplePolygon *manifold_alloc_simple_polygon(); +ManifoldPolygons *manifold_alloc_polygons(); +ManifoldMeshGL *manifold_alloc_meshgl(); +ManifoldBox *manifold_alloc_box(); +ManifoldRect *manifold_alloc_rect(); + // destruction void manifold_destruct_manifold(ManifoldManifold *m); diff --git a/bindings/c/manifoldc.cpp b/bindings/c/manifoldc.cpp index f4c98634c..1569bc061 100644 --- a/bindings/c/manifoldc.cpp +++ b/bindings/c/manifoldc.cpp @@ -599,6 +599,40 @@ size_t manifold_meshgl_size() { return sizeof(MeshGL); } size_t manifold_box_size() { return sizeof(Box); } size_t manifold_rect_size() { return sizeof(Rect); } +// allocation +ManifoldManifold *manifold_alloc_manifold() { + return to_c(static_cast(malloc(manifold_manifold_size()))); +} +ManifoldManifoldVec *manifold_alloc_manifold_vec() { + return to_c(static_cast *>( + malloc(manifold_manifold_vec_size()))); +} +ManifoldCrossSection *manifold_alloc_cross_section() { + return to_c( + static_cast(malloc(manifold_cross_section_size()))); +} +ManifoldCrossSectionVec *manifold_alloc_cross_section_vec() { + return to_c(static_cast *>( + malloc(manifold_cross_section_vec_size()))); +} +ManifoldSimplePolygon *manifold_alloc_simple_polygon() { + return to_c( + static_cast(malloc(manifold_simple_polygon_size()))); +} +ManifoldPolygons *manifold_alloc_polygons() { + return to_c(static_cast *>( + malloc(manifold_polygons_size()))); +} +ManifoldMeshGL *manifold_alloc_meshgl() { + return to_c(static_cast(malloc(manifold_meshgl_size()))); +} +ManifoldBox *manifold_alloc_box() { + return to_c(static_cast(malloc(manifold_box_size()))); +} +ManifoldRect *manifold_alloc_rect() { + return to_c(static_cast(malloc(manifold_rect_size()))); +} + // pointer free + destruction void manifold_delete_cross_section(ManifoldCrossSection *c) { delete from_c(c);