%module{Slic3r::XS}; %{ #include <xsinit.h> #include "libslic3r/ExtrusionEntity.hpp" %} %name{Slic3r::ExtrusionMultiPath} class ExtrusionMultiPath { ExtrusionMultiPath(); ~ExtrusionMultiPath(); Clone<ExtrusionMultiPath> clone() %code{% RETVAL = THIS; %}; void reverse(); Clone<Point> first_point(); Clone<Point> last_point(); void append(ExtrusionPath* path) %code{% THIS->paths.push_back(*path); %}; double length(); Polygons polygons_covered_by_width(); Polygons polygons_covered_by_spacing(); Clone<Polyline> polyline() %code{% RETVAL = THIS->as_polyline(); %}; %{ SV* ExtrusionMultiPath::arrayref() CODE: AV* av = newAV(); av_fill(av, THIS->paths.size()-1); for (ExtrusionPaths::iterator it = THIS->paths.begin(); it != THIS->paths.end(); ++it) { av_store(av, it - THIS->paths.begin(), perl_to_SV_ref(*it)); } RETVAL = newRV_noinc((SV*)av); OUTPUT: RETVAL %} };