// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#ifndef RCPP_BeSS_RCPPEXPORTS_H_GEN_
#define RCPP_BeSS_RCPPEXPORTS_H_GEN_

#include <RcppEigen.h>
#include <Rcpp.h>

namespace BeSS {

    using namespace Rcpp;

    namespace {
        void validateSignature(const char* sig) {
            Rcpp::Function require = Rcpp::Environment::base_env()["require"];
            require("BeSS", Rcpp::Named("quietly") = true);
            typedef int(*Ptr_validate)(const char*);
            static Ptr_validate p_validate = (Ptr_validate)
                R_GetCCallable("BeSS", "_BeSS_RcppExport_validate");
            if (!p_validate(sig)) {
                throw Rcpp::function_not_exported(
                    "C++ function with signature '" + std::string(sig) + "' not found in BeSS");
            }
        }
    }

    inline List bess_lm(Eigen::MatrixXd X, Eigen::VectorXd y, int T0, int max_steps, Eigen::VectorXd beta0) {
        typedef SEXP(*Ptr_bess_lm)(SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_bess_lm p_bess_lm = NULL;
        if (p_bess_lm == NULL) {
            validateSignature("List(*bess_lm)(Eigen::MatrixXd,Eigen::VectorXd,int,int,Eigen::VectorXd)");
            p_bess_lm = (Ptr_bess_lm)R_GetCCallable("BeSS", "_BeSS_bess_lm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_bess_lm(Shield<SEXP>(Rcpp::wrap(X)), Shield<SEXP>(Rcpp::wrap(y)), Shield<SEXP>(Rcpp::wrap(T0)), Shield<SEXP>(Rcpp::wrap(max_steps)), Shield<SEXP>(Rcpp::wrap(beta0)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<List >(rcpp_result_gen);
    }

    inline List get_A(Eigen::MatrixXd& X, Eigen::VectorXd& y, Eigen::VectorXd& beta, double& coef0, int& T0, Eigen::VectorXi& B, Eigen::VectorXd& weights) {
        typedef SEXP(*Ptr_get_A)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_get_A p_get_A = NULL;
        if (p_get_A == NULL) {
            validateSignature("List(*get_A)(Eigen::MatrixXd&,Eigen::VectorXd&,Eigen::VectorXd&,double&,int&,Eigen::VectorXi&,Eigen::VectorXd&)");
            p_get_A = (Ptr_get_A)R_GetCCallable("BeSS", "_BeSS_get_A");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_get_A(Shield<SEXP>(Rcpp::wrap(X)), Shield<SEXP>(Rcpp::wrap(y)), Shield<SEXP>(Rcpp::wrap(beta)), Shield<SEXP>(Rcpp::wrap(coef0)), Shield<SEXP>(Rcpp::wrap(T0)), Shield<SEXP>(Rcpp::wrap(B)), Shield<SEXP>(Rcpp::wrap(weights)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<List >(rcpp_result_gen);
    }

    inline List getcox_A(Eigen::MatrixXd& X, Eigen::VectorXd& beta, int& T0, Eigen::VectorXi& B, Eigen::VectorXd& status, Eigen::VectorXd& weights) {
        typedef SEXP(*Ptr_getcox_A)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_getcox_A p_getcox_A = NULL;
        if (p_getcox_A == NULL) {
            validateSignature("List(*getcox_A)(Eigen::MatrixXd&,Eigen::VectorXd&,int&,Eigen::VectorXi&,Eigen::VectorXd&,Eigen::VectorXd&)");
            p_getcox_A = (Ptr_getcox_A)R_GetCCallable("BeSS", "_BeSS_getcox_A");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_getcox_A(Shield<SEXP>(Rcpp::wrap(X)), Shield<SEXP>(Rcpp::wrap(beta)), Shield<SEXP>(Rcpp::wrap(T0)), Shield<SEXP>(Rcpp::wrap(B)), Shield<SEXP>(Rcpp::wrap(status)), Shield<SEXP>(Rcpp::wrap(weights)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<List >(rcpp_result_gen);
    }

    inline Eigen::MatrixXd EigenR(Eigen::MatrixXd X) {
        typedef SEXP(*Ptr_EigenR)(SEXP);
        static Ptr_EigenR p_EigenR = NULL;
        if (p_EigenR == NULL) {
            validateSignature("Eigen::MatrixXd(*EigenR)(Eigen::MatrixXd)");
            p_EigenR = (Ptr_EigenR)R_GetCCallable("BeSS", "_BeSS_EigenR");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_EigenR(Shield<SEXP>(Rcpp::wrap(X)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<Eigen::MatrixXd >(rcpp_result_gen);
    }

    inline List gbess_lm(Eigen::MatrixXd X, Eigen::VectorXd y, Eigen::VectorXd G, Eigen::VectorXd index, List PhiG, List invPhiG, int T0, int max_steps, Eigen::VectorXd beta0, int n, int p, int N) {
        typedef SEXP(*Ptr_gbess_lm)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_gbess_lm p_gbess_lm = NULL;
        if (p_gbess_lm == NULL) {
            validateSignature("List(*gbess_lm)(Eigen::MatrixXd,Eigen::VectorXd,Eigen::VectorXd,Eigen::VectorXd,List,List,int,int,Eigen::VectorXd,int,int,int)");
            p_gbess_lm = (Ptr_gbess_lm)R_GetCCallable("BeSS", "_BeSS_gbess_lm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_gbess_lm(Shield<SEXP>(Rcpp::wrap(X)), Shield<SEXP>(Rcpp::wrap(y)), Shield<SEXP>(Rcpp::wrap(G)), Shield<SEXP>(Rcpp::wrap(index)), Shield<SEXP>(Rcpp::wrap(PhiG)), Shield<SEXP>(Rcpp::wrap(invPhiG)), Shield<SEXP>(Rcpp::wrap(T0)), Shield<SEXP>(Rcpp::wrap(max_steps)), Shield<SEXP>(Rcpp::wrap(beta0)), Shield<SEXP>(Rcpp::wrap(n)), Shield<SEXP>(Rcpp::wrap(p)), Shield<SEXP>(Rcpp::wrap(N)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<List >(rcpp_result_gen);
    }

    inline List gget_A(Eigen::MatrixXd X, Eigen::VectorXd y, Eigen::VectorXi G, Eigen::VectorXi index, int T0, Eigen::VectorXd beta0, double coef0, int n, int p, int N, Eigen::VectorXd weights, Eigen::VectorXi B00) {
        typedef SEXP(*Ptr_gget_A)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_gget_A p_gget_A = NULL;
        if (p_gget_A == NULL) {
            validateSignature("List(*gget_A)(Eigen::MatrixXd,Eigen::VectorXd,Eigen::VectorXi,Eigen::VectorXi,int,Eigen::VectorXd,double,int,int,int,Eigen::VectorXd,Eigen::VectorXi)");
            p_gget_A = (Ptr_gget_A)R_GetCCallable("BeSS", "_BeSS_gget_A");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_gget_A(Shield<SEXP>(Rcpp::wrap(X)), Shield<SEXP>(Rcpp::wrap(y)), Shield<SEXP>(Rcpp::wrap(G)), Shield<SEXP>(Rcpp::wrap(index)), Shield<SEXP>(Rcpp::wrap(T0)), Shield<SEXP>(Rcpp::wrap(beta0)), Shield<SEXP>(Rcpp::wrap(coef0)), Shield<SEXP>(Rcpp::wrap(n)), Shield<SEXP>(Rcpp::wrap(p)), Shield<SEXP>(Rcpp::wrap(N)), Shield<SEXP>(Rcpp::wrap(weights)), Shield<SEXP>(Rcpp::wrap(B00)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<List >(rcpp_result_gen);
    }

    inline List ggetcox_A(Eigen::MatrixXd X, Eigen::VectorXi G, Eigen::VectorXi index, int T0, Eigen::VectorXd beta0, int n, int p, int N, Eigen::VectorXd status, Eigen::VectorXd weights, Eigen::VectorXi B00) {
        typedef SEXP(*Ptr_ggetcox_A)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_ggetcox_A p_ggetcox_A = NULL;
        if (p_ggetcox_A == NULL) {
            validateSignature("List(*ggetcox_A)(Eigen::MatrixXd,Eigen::VectorXi,Eigen::VectorXi,int,Eigen::VectorXd,int,int,int,Eigen::VectorXd,Eigen::VectorXd,Eigen::VectorXi)");
            p_ggetcox_A = (Ptr_ggetcox_A)R_GetCCallable("BeSS", "_BeSS_ggetcox_A");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_ggetcox_A(Shield<SEXP>(Rcpp::wrap(X)), Shield<SEXP>(Rcpp::wrap(G)), Shield<SEXP>(Rcpp::wrap(index)), Shield<SEXP>(Rcpp::wrap(T0)), Shield<SEXP>(Rcpp::wrap(beta0)), Shield<SEXP>(Rcpp::wrap(n)), Shield<SEXP>(Rcpp::wrap(p)), Shield<SEXP>(Rcpp::wrap(N)), Shield<SEXP>(Rcpp::wrap(status)), Shield<SEXP>(Rcpp::wrap(weights)), Shield<SEXP>(Rcpp::wrap(B00)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<List >(rcpp_result_gen);
    }

}

#endif // RCPP_BeSS_RCPPEXPORTS_H_GEN_
