%module{Slic3r::XS}; %{ #include #include "ExtrusionEntity.hpp" %} %name{Slic3r::ExtrusionLoop} class ExtrusionLoop { ~ExtrusionLoop(); SV* arrayref() %code{% RETVAL = THIS->polygon.to_SV(); %}; SV* pp() %code{% RETVAL = THIS->polygon.to_SV_pureperl(); %}; ExtrusionPath* split_at_index(int index) %code{% const char* CLASS = "Slic3r::ExtrusionPath"; RETVAL = THIS->split_at_index(index); %}; ExtrusionPath* split_at_first_point() %code{% const char* CLASS = "Slic3r::ExtrusionPath"; RETVAL = THIS->split_at_first_point(); %}; %{ ExtrusionLoop* _new(CLASS, polygon_sv, role, height, flow_spacing) char* CLASS; SV* polygon_sv; ExtrusionRole role; double height; double flow_spacing; CODE: RETVAL = new ExtrusionLoop (); RETVAL->polygon.from_SV_check(polygon_sv); RETVAL->role = role; RETVAL->height = height; RETVAL->flow_spacing = flow_spacing; OUTPUT: RETVAL Polygon* ExtrusionLoop::polygon(...) PREINIT: const char* CLASS = "Slic3r::Polygon"; CODE: if (items > 1) { THIS->polygon.from_SV_check( ST(1) ); } RETVAL = new Polygon(THIS->polygon); OUTPUT: RETVAL ExtrusionRole ExtrusionLoop::role(...) CODE: if (items > 1) { THIS->role = (ExtrusionRole)SvUV(ST(1)); } RETVAL = THIS->role; OUTPUT: RETVAL double ExtrusionLoop::height(...) CODE: if (items > 1) { THIS->height = (double)SvNV(ST(1)); } RETVAL = THIS->height; OUTPUT: RETVAL double ExtrusionLoop::flow_spacing(...) CODE: if (items > 1) { THIS->flow_spacing = (double)SvNV(ST(1)); } RETVAL = THIS->flow_spacing; OUTPUT: RETVAL %} };