%module{Slic3r::XS};

%{
#include <myinit.h>
#include "Geometry.hpp"
%}


%package{Slic3r::Geometry};

%{

Polygon*
convex_hull(points)
    Points      points
    PREINIT:
        const char* CLASS = "Slic3r::Polygon";
    CODE:
        RETVAL = new Polygon ();
        Slic3r::Geometry::convex_hull(points, RETVAL);
    OUTPUT:
        RETVAL

std::vector<Points::size_type>
chained_path(points)
    Points      points
    CODE:
        Slic3r::Geometry::chained_path(points, RETVAL);
    OUTPUT:
        RETVAL

std::vector<Points::size_type>
chained_path_from(points, start_from)
    Points      points
    Point*      start_from
    CODE:
        Slic3r::Geometry::chained_path(points, RETVAL, *start_from);
    OUTPUT:
        RETVAL

%}