MODULE = Geo::Geos                PACKAGE = Geo::Geos::Algorithm::MinimumDiameter
PROTOTYPES: DISABLE

MinimumDiameter* new(SV*, Geometry& g, SV* hint = NULL) {
    if (!hint) {
        bool convex = SvTRUE(hint);
        RETVAL = new MinimumDiameter(&g, convex);
    }
    else RETVAL = new MinimumDiameter(&g);
}

Sv getMinimumRectangle(Object obj) {
    Geometry* r;
    if (obj.stash().name() == "Geo::Geos::Algorithm::MinimumDiameter") {
        auto& self = xs::in<MinimumDiameter&>(obj);
        r = self.getMinimumRectangle();
    }
    else {
        auto& g = xs::in<Geometry&>(obj);
        r = MinimumDiameter::getMinimumRectangle(&g);
    }
    RETVAL = Helper::uplift(r);
}

Sv getMinimumDiameter(Geometry& g) {
    RETVAL = Helper::uplift(MinimumDiameter::getMinimumDiameter(&g));
}

double MinimumDiameter::getLength()

Coordinate* MinimumDiameter::getWidthCoordinate() {
    RETVAL = new Coordinate(* (THIS->getWidthCoordinate()));
}

LineString* MinimumDiameter::getSupportingSegment () {
    RETVAL = dyn_cast<LineString*>(THIS->getSupportingSegment());
}

LineString* MinimumDiameter::getDiameter () {
    RETVAL = dyn_cast<LineString*>(THIS->getDiameter());
}


int CLONE_SKIP (...) { PERL_UNUSED_VAR(items); RETVAL = 1; }

BOOT {
    xs::exp::autoexport(Stash(__PACKAGE__));
}