MODULE = Geo::Geos PACKAGE = Geo::Geos::PrecisionModel PROTOTYPES: DISABLE PrecisionModel* new(SV*, SV* arg1 = NULL, SV* arg2 = NULL, SV* arg3 = NULL) { if (!arg1) RETVAL = new PrecisionModel(); else { if(SvIOK(arg1)) { PrecisionModel::Type model = static_cast(SvIV(arg1)); RETVAL = new PrecisionModel(model); } else { double scale = SvNV(arg1); if (arg2) { if(!arg3) throw("undef not allowed"); double offsetX = SvNV(arg2); double offsetY = SvNV(arg3); RETVAL = new PrecisionModel(scale, offsetX, offsetY); } else RETVAL = new PrecisionModel(scale); } } } double PrecisionModel::getScale() double PrecisionModel::getOffsetX() double PrecisionModel::getOffsetY() bool PrecisionModel::isFloating() int PrecisionModel::getMaximumSignificantDigits() int PrecisionModel::getType() double PrecisionModel::makePrecise(double val) std::string PrecisionModel::toString(...) int PrecisionModel::compareTo(PrecisionModel& other) { RETVAL = THIS->compareTo(&other); } BOOT { auto this_stash = Stash(__PACKAGE__); xs::exp::create_constants(this_stash, { {"TYPE_FIXED", PrecisionModel::Type::FIXED}, {"TYPE_FLOATING", PrecisionModel::Type::FLOATING}, {"TYPE_FLOATING_SINGLE", PrecisionModel::Type::FLOATING_SINGLE} }); xs::exp::autoexport(this_stash); }