
 

// This file is autogenerated. DO NOT EDIT

#pragma once
#include <robotpy_build.h>


#include <../src/include/frc2/command/TrapezoidProfileCommand.h>

#include <frc2/command/Command.h>
#include <frc2/command/Subsystem.h>



#include <rpygen/frc2__CommandBase.hpp>

namespace rpygen {

using namespace frc2;


template <typename CfgBase>
using PyTrampolineCfgBase_frc2__TrapezoidProfileCommand =
    PyTrampolineCfg_frc2__CommandBase<
CfgBase
>;

template <typename Distance, typename CfgBase = EmptyTrampolineCfg>
struct PyTrampolineCfg_frc2__TrapezoidProfileCommand :
    PyTrampolineCfgBase_frc2__TrapezoidProfileCommand< CfgBase>
{
    using Base = frc2::TrapezoidProfileCommand<Distance>;

    using override_base_Initialize_v = frc2::TrapezoidProfileCommand<Distance>;
    using override_base_Execute_v = frc2::TrapezoidProfileCommand<Distance>;
    using override_base_End_b = frc2::TrapezoidProfileCommand<Distance>;
    using override_base_IsFinished_v = frc2::TrapezoidProfileCommand<Distance>;
};


template <typename PyTrampolineBase, typename PyTrampolineCfg>
using PyTrampolineBase_frc2__TrapezoidProfileCommand =
    PyTrampoline_frc2__CommandBase<
        PyTrampolineBase
        
        , PyTrampolineCfg
    >
;

template <typename PyTrampolineBase, typename Distance, typename PyTrampolineCfg>
struct PyTrampoline_frc2__TrapezoidProfileCommand : PyTrampolineBase_frc2__TrapezoidProfileCommand<PyTrampolineBase, PyTrampolineCfg> {
    using PyTrampolineBase_frc2__TrapezoidProfileCommand<PyTrampolineBase, PyTrampolineCfg>::PyTrampolineBase_frc2__TrapezoidProfileCommand;


using State = typename frc::TrapezoidProfile<Distance>::State;
#ifndef RPYGEN_DISABLE_Initialize_v
    void Initialize() override {
        using LookupBase = typename PyTrampolineCfg::Base;
        using CxxCallBase = typename PyTrampolineCfg::override_base_Initialize_v;
        PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(void), LookupBase,
            "initialize", );
        return CxxCallBase::Initialize();
    }
#endif

#ifndef RPYGEN_DISABLE_Execute_v
    void Execute() override {
        using LookupBase = typename PyTrampolineCfg::Base;
        using CxxCallBase = typename PyTrampolineCfg::override_base_Execute_v;
        PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(void), LookupBase,
            "execute", );
        return CxxCallBase::Execute();
    }
#endif

#ifndef RPYGEN_DISABLE_End_b
    void End(bool interrupted) override {
        using LookupBase = typename PyTrampolineCfg::Base;
        using CxxCallBase = typename PyTrampolineCfg::override_base_End_b;
        PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(void), LookupBase,
            "end", interrupted);
        return CxxCallBase::End(interrupted);
    }
#endif

#ifndef RPYGEN_DISABLE_IsFinished_v
    bool IsFinished() override {
        using LookupBase = typename PyTrampolineCfg::Base;
        using CxxCallBase = typename PyTrampolineCfg::override_base_IsFinished_v;
        PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(bool), LookupBase,
            "isFinished", );
        return CxxCallBase::IsFinished();
    }
#endif




};

}; // namespace rpygen


namespace rpygen {

using namespace frc2;


template <typename Distance>
struct bind_frc2__TrapezoidProfileCommand {

          using State = typename frc::TrapezoidProfile<Distance>::State;


      using TrapezoidProfileCommand_Trampoline = rpygen::PyTrampoline_frc2__TrapezoidProfileCommand<typename frc2::TrapezoidProfileCommand<Distance>, Distance, typename rpygen::PyTrampolineCfg_frc2__TrapezoidProfileCommand<Distance>>;
py::class_<typename frc2::TrapezoidProfileCommand<Distance>, TrapezoidProfileCommand_Trampoline, CommandBase> cls_TrapezoidProfileCommand;




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

bind_frc2__TrapezoidProfileCommand(py::module &m, const char * clsName) :
    cls_TrapezoidProfileCommand(m, clsName),



    m(m),
    clsName(clsName)
{
    
}

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

    cls_TrapezoidProfileCommand.doc() =
    "A command that runs a TrapezoidProfile.  Useful for smoothly controlling\n"
"mechanism motion.\n"
"\n"
"@see TrapezoidProfile";

  cls_TrapezoidProfileCommand
      .def(py::init<frc::TrapezoidProfile<Distance >, std::function<void(State)>, wpi::span<std::shared_ptr<Subsystem> >>(),
      py::arg("profile"), py::arg("output"), py::arg("requirements")=wpi::span<std::shared_ptr<Subsystem> >{}, release_gil(), py::doc(
    "Creates a new TrapezoidProfileCommand that will execute the given\n"
"TrapezoidalProfile. Output will be piped to the provided consumer function.\n"
"\n"
":param profile:      The motion profile to execute.\n"
":param output:       The consumer for the profile output.\n"
":param requirements: The list of requirements.")
  )
    
      .def("initialize", &frc2::TrapezoidProfileCommand<Distance>::Initialize, release_gil()
  )
    
      .def("execute", &frc2::TrapezoidProfileCommand<Distance>::Execute, release_gil()
  )
    
      .def("end", &frc2::TrapezoidProfileCommand<Distance>::End,
      py::arg("interrupted"), release_gil()
  )
    
      .def("isFinished", &frc2::TrapezoidProfileCommand<Distance>::IsFinished, release_gil()
  )
    
;

  

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

    
}

}; // struct bind_frc2__TrapezoidProfileCommand

}; // namespace rpygen