%module{Slic3r::XS}; %{ #include #include "libslic3r/ExtrusionEntity.hpp" %} %name{Slic3r::ExtrusionMultiPath} class ExtrusionMultiPath { ExtrusionMultiPath(); ~ExtrusionMultiPath(); Clone clone() %code{% RETVAL = THIS; %}; void reverse(); Clone first_point(); Clone 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() %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 %} };