
 

// This file is autogenerated. DO NOT EDIT

#pragma once
#include <robotpy_build.h>


#include <../../_impl/include/frc/trajectory/constraint/RectangularRegionConstraint.h>

#include <PyTrajectoryConstraint.h>



#include <rpygen/frc__TrajectoryConstraint.hpp>

namespace rpygen {

using namespace frc;


template <typename CfgBase>
using PyTrampolineCfgBase_frc__RectangularRegionConstraint =
    PyTrampolineCfg_frc__TrajectoryConstraint<
CfgBase
>;

template <typename Constraint, typename CfgBase = EmptyTrampolineCfg>
struct PyTrampolineCfg_frc__RectangularRegionConstraint :
    PyTrampolineCfgBase_frc__RectangularRegionConstraint< CfgBase>
{
    using Base = frc::RectangularRegionConstraint<Constraint>;

    using override_base_KMaxVelocity_KRTPose2d_Tcurvature_t_Tmeters_per_second_t = frc::RectangularRegionConstraint<Constraint>;
    using override_base_KMinMaxAcceleration_KRTPose2d_Tcurvature_t_Tmeters_per_second_t = frc::RectangularRegionConstraint<Constraint>;
};


template <typename PyTrampolineBase, typename PyTrampolineCfg>
using PyTrampolineBase_frc__RectangularRegionConstraint =
    PyTrampoline_frc__TrajectoryConstraint<
        PyTrampolineBase
        
        , PyTrampolineCfg
    >
;

template <typename PyTrampolineBase, typename Constraint, typename PyTrampolineCfg>
struct PyTrampoline_frc__RectangularRegionConstraint : PyTrampolineBase_frc__RectangularRegionConstraint<PyTrampolineBase, PyTrampolineCfg> {
    using PyTrampolineBase_frc__RectangularRegionConstraint<PyTrampolineBase, PyTrampolineCfg>::PyTrampolineBase_frc__RectangularRegionConstraint;


using MinMax = frc::TrajectoryConstraint::MinMax;
#ifndef RPYGEN_DISABLE_KMaxVelocity_KRTPose2d_Tcurvature_t_Tmeters_per_second_t
    units::meters_per_second_t MaxVelocity(const Pose2d& pose, units::curvature_t curvature, units::meters_per_second_t velocity) const override {
        using LookupBase = typename PyTrampolineCfg::Base;
        using CxxCallBase = typename PyTrampolineCfg::override_base_KMaxVelocity_KRTPose2d_Tcurvature_t_Tmeters_per_second_t;
        PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(units::meters_per_second_t), LookupBase,
            "maxVelocity", pose, curvature, velocity);
        return CxxCallBase::MaxVelocity(pose, curvature, velocity);
    }
#endif

#ifndef RPYGEN_DISABLE_KMinMaxAcceleration_KRTPose2d_Tcurvature_t_Tmeters_per_second_t
    MinMax MinMaxAcceleration(const Pose2d& pose, units::curvature_t curvature, units::meters_per_second_t speed) const override {
        using LookupBase = typename PyTrampolineCfg::Base;
        using CxxCallBase = typename PyTrampolineCfg::override_base_KMinMaxAcceleration_KRTPose2d_Tcurvature_t_Tmeters_per_second_t;
        PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(MinMax), LookupBase,
            "minMaxAcceleration", pose, curvature, speed);
        return CxxCallBase::MinMaxAcceleration(pose, curvature, speed);
    }
#endif




};

}; // namespace rpygen


namespace rpygen {

using namespace frc;


template <typename Constraint>
struct bind_frc__RectangularRegionConstraint {

          using MinMax = frc::TrajectoryConstraint::MinMax;


      using RectangularRegionConstraint_Trampoline = rpygen::PyTrampoline_frc__RectangularRegionConstraint<typename frc::RectangularRegionConstraint<Constraint>, Constraint, typename rpygen::PyTrampolineCfg_frc__RectangularRegionConstraint<Constraint>>;
py::class_<typename frc::RectangularRegionConstraint<Constraint>, RectangularRegionConstraint_Trampoline, TrajectoryConstraint> cls_RectangularRegionConstraint;




    py::module &m;
    std::string clsName;

bind_frc__RectangularRegionConstraint(py::module &m, const char * clsName) :
    cls_RectangularRegionConstraint(m, clsName),



    m(m),
    clsName(clsName)
{
    
}

void finish(const char * set_doc = NULL, const char * add_doc = NULL) {

    cls_RectangularRegionConstraint.doc() =
    "Enforces a particular constraint only within a rectangular region.";

  cls_RectangularRegionConstraint
      .def(py::init<const Translation2d&, const Translation2d&, const Constraint&>(),
      py::arg("bottomLeftPoint"), py::arg("topRightPoint"), py::arg("constraint"), release_gil()    , py::keep_alive<1, 2>()    , py::keep_alive<1, 3>()    , py::keep_alive<1, 4>(), py::doc(
    "Constructs a new RectangularRegionConstraint.\n"
"\n"
":param bottomLeftPoint: The bottom left point of the rectangular region in\n"
"                        which to enforce the constraint.\n"
":param topRightPoint:   The top right point of the rectangular region in which\n"
"                        to enforce the constraint.\n"
":param constraint:      The constraint to enforce when the robot is within the\n"
"                        region.")
  )
    
      .def("maxVelocity", &frc::RectangularRegionConstraint<Constraint>::MaxVelocity,
      py::arg("pose"), py::arg("curvature"), py::arg("velocity"), release_gil()
  )
    
      .def("minMaxAcceleration", &frc::RectangularRegionConstraint<Constraint>::MinMaxAcceleration,
      py::arg("pose"), py::arg("curvature"), py::arg("speed"), release_gil()
  )
    
      .def("isPoseInRegion", &frc::RectangularRegionConstraint<Constraint>::IsPoseInRegion,
      py::arg("pose"), release_gil(), py::doc(
    "Returns whether the specified robot pose is within the region that the\n"
"constraint is enforced in.\n"
"\n"
":param pose: The robot pose.\n"
"\n"
":returns: Whether the robot pose is within the constraint region.")
  )
    
;

  

    if (set_doc) {
        cls_RectangularRegionConstraint.doc() = set_doc;
    }
    if (add_doc) {
        cls_RectangularRegionConstraint.doc() = py::cast<std::string>(cls_RectangularRegionConstraint.doc()) + add_doc;
    }

    
}

}; // struct bind_frc__RectangularRegionConstraint

}; // namespace rpygen