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

#include "skymodelr_types.h"
#include <RcppThread.h>
#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// makesky_rcpp
Rcpp::NumericVector makesky_rcpp(double albedo, double turbidity, double elevation, double azimuth_deg, unsigned int resolution, unsigned int number_cores, std::string model, std::string prg_dataset, double altitude, double visibility, std::string render_mode, Rcpp::Nullable<Rcpp::NumericVector> lambda_nm, bool below_horizon);
RcppExport SEXP _skymodelr_makesky_rcpp(SEXP albedoSEXP, SEXP turbiditySEXP, SEXP elevationSEXP, SEXP azimuth_degSEXP, SEXP resolutionSEXP, SEXP number_coresSEXP, SEXP modelSEXP, SEXP prg_datasetSEXP, SEXP altitudeSEXP, SEXP visibilitySEXP, SEXP render_modeSEXP, SEXP lambda_nmSEXP, SEXP below_horizonSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type albedo(albedoSEXP);
    Rcpp::traits::input_parameter< double >::type turbidity(turbiditySEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type azimuth_deg(azimuth_degSEXP);
    Rcpp::traits::input_parameter< unsigned int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< unsigned int >::type number_cores(number_coresSEXP);
    Rcpp::traits::input_parameter< std::string >::type model(modelSEXP);
    Rcpp::traits::input_parameter< std::string >::type prg_dataset(prg_datasetSEXP);
    Rcpp::traits::input_parameter< double >::type altitude(altitudeSEXP);
    Rcpp::traits::input_parameter< double >::type visibility(visibilitySEXP);
    Rcpp::traits::input_parameter< std::string >::type render_mode(render_modeSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type lambda_nm(lambda_nmSEXP);
    Rcpp::traits::input_parameter< bool >::type below_horizon(below_horizonSEXP);
    rcpp_result_gen = Rcpp::wrap(makesky_rcpp(albedo, turbidity, elevation, azimuth_deg, resolution, number_cores, model, prg_dataset, altitude, visibility, render_mode, lambda_nm, below_horizon));
    return rcpp_result_gen;
END_RCPP
}
// calculate_sun_brightness_rcpp
double calculate_sun_brightness_rcpp(double albedo, double turbidity, double elevation, double azimuth_deg, std::string model, std::string prg_dataset, double altitude, double visibility, Rcpp::Nullable<Rcpp::NumericVector> lambda_nm);
RcppExport SEXP _skymodelr_calculate_sun_brightness_rcpp(SEXP albedoSEXP, SEXP turbiditySEXP, SEXP elevationSEXP, SEXP azimuth_degSEXP, SEXP modelSEXP, SEXP prg_datasetSEXP, SEXP altitudeSEXP, SEXP visibilitySEXP, SEXP lambda_nmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type albedo(albedoSEXP);
    Rcpp::traits::input_parameter< double >::type turbidity(turbiditySEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type azimuth_deg(azimuth_degSEXP);
    Rcpp::traits::input_parameter< std::string >::type model(modelSEXP);
    Rcpp::traits::input_parameter< std::string >::type prg_dataset(prg_datasetSEXP);
    Rcpp::traits::input_parameter< double >::type altitude(altitudeSEXP);
    Rcpp::traits::input_parameter< double >::type visibility(visibilitySEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type lambda_nm(lambda_nmSEXP);
    rcpp_result_gen = Rcpp::wrap(calculate_sun_brightness_rcpp(albedo, turbidity, elevation, azimuth_deg, model, prg_dataset, altitude, visibility, lambda_nm));
    return rcpp_result_gen;
END_RCPP
}
// calculate_sun_radiance_band_rcpp
double calculate_sun_radiance_band_rcpp(double albedo, double turbidity, double elevation, double azimuth_deg, std::string model, std::string prg_dataset, double altitude, double visibility, Rcpp::Nullable<Rcpp::NumericVector> lambda_nm);
RcppExport SEXP _skymodelr_calculate_sun_radiance_band_rcpp(SEXP albedoSEXP, SEXP turbiditySEXP, SEXP elevationSEXP, SEXP azimuth_degSEXP, SEXP modelSEXP, SEXP prg_datasetSEXP, SEXP altitudeSEXP, SEXP visibilitySEXP, SEXP lambda_nmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type albedo(albedoSEXP);
    Rcpp::traits::input_parameter< double >::type turbidity(turbiditySEXP);
    Rcpp::traits::input_parameter< double >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< double >::type azimuth_deg(azimuth_degSEXP);
    Rcpp::traits::input_parameter< std::string >::type model(modelSEXP);
    Rcpp::traits::input_parameter< std::string >::type prg_dataset(prg_datasetSEXP);
    Rcpp::traits::input_parameter< double >::type altitude(altitudeSEXP);
    Rcpp::traits::input_parameter< double >::type visibility(visibilitySEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type lambda_nm(lambda_nmSEXP);
    rcpp_result_gen = Rcpp::wrap(calculate_sun_radiance_band_rcpp(albedo, turbidity, elevation, azimuth_deg, model, prg_dataset, altitude, visibility, lambda_nm));
    return rcpp_result_gen;
END_RCPP
}
// calculate_raw_prague_radiance
Rcpp::NumericVector calculate_raw_prague_radiance(Rcpp::NumericVector phi, Rcpp::NumericVector theta, Rcpp::NumericVector lambda_nm, Rcpp::NumericVector elevation, Rcpp::NumericVector albedo, Rcpp::NumericVector altitude, Rcpp::NumericVector visibility, Rcpp::NumericVector azimuth, unsigned int number_cores, std::string prg_dataset, std::string render_mode);
RcppExport SEXP _skymodelr_calculate_raw_prague_radiance(SEXP phiSEXP, SEXP thetaSEXP, SEXP lambda_nmSEXP, SEXP elevationSEXP, SEXP albedoSEXP, SEXP altitudeSEXP, SEXP visibilitySEXP, SEXP azimuthSEXP, SEXP number_coresSEXP, SEXP prg_datasetSEXP, SEXP render_modeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type phi(phiSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type lambda_nm(lambda_nmSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type albedo(albedoSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type altitude(altitudeSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type visibility(visibilitySEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type azimuth(azimuthSEXP);
    Rcpp::traits::input_parameter< unsigned int >::type number_cores(number_coresSEXP);
    Rcpp::traits::input_parameter< std::string >::type prg_dataset(prg_datasetSEXP);
    Rcpp::traits::input_parameter< std::string >::type render_mode(render_modeSEXP);
    rcpp_result_gen = Rcpp::wrap(calculate_raw_prague_radiance(phi, theta, lambda_nm, elevation, albedo, altitude, visibility, azimuth, number_cores, prg_dataset, render_mode));
    return rcpp_result_gen;
END_RCPP
}
// calculate_raw_prague
Rcpp::NumericMatrix calculate_raw_prague(Rcpp::NumericVector phi, Rcpp::NumericVector theta, Rcpp::NumericVector elevation, Rcpp::NumericVector albedo, Rcpp::NumericVector altitude, Rcpp::NumericVector visibility, Rcpp::NumericVector azimuth, unsigned int number_cores, std::string prg_dataset, std::string render_mode);
RcppExport SEXP _skymodelr_calculate_raw_prague(SEXP phiSEXP, SEXP thetaSEXP, SEXP elevationSEXP, SEXP albedoSEXP, SEXP altitudeSEXP, SEXP visibilitySEXP, SEXP azimuthSEXP, SEXP number_coresSEXP, SEXP prg_datasetSEXP, SEXP render_modeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type phi(phiSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type elevation(elevationSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type albedo(albedoSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type altitude(altitudeSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type visibility(visibilitySEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type azimuth(azimuthSEXP);
    Rcpp::traits::input_parameter< unsigned int >::type number_cores(number_coresSEXP);
    Rcpp::traits::input_parameter< std::string >::type prg_dataset(prg_datasetSEXP);
    Rcpp::traits::input_parameter< std::string >::type render_mode(render_modeSEXP);
    rcpp_result_gen = Rcpp::wrap(calculate_raw_prague(phi, theta, elevation, albedo, altitude, visibility, azimuth, number_cores, prg_dataset, render_mode));
    return rcpp_result_gen;
END_RCPP
}
// cie_1931_2deg_rcpp
Rcpp::List cie_1931_2deg_rcpp();
RcppExport SEXP _skymodelr_cie_1931_2deg_rcpp() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(cie_1931_2deg_rcpp());
    return rcpp_result_gen;
END_RCPP
}
// spd_values_rcpp
Rcpp::NumericVector spd_values_rcpp(Rcpp::NumericVector lambda_nm, std::string spd_type);
RcppExport SEXP _skymodelr_spd_values_rcpp(SEXP lambda_nmSEXP, SEXP spd_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type lambda_nm(lambda_nmSEXP);
    Rcpp::traits::input_parameter< std::string >::type spd_type(spd_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(spd_values_rcpp(lambda_nm, spd_type));
    return rcpp_result_gen;
END_RCPP
}
// make_starfield_rcpp
Rcpp::NumericVector make_starfield_rcpp(Rcpp::DataFrame stars, unsigned int resolution, double zero_point, double lon_deg, double lat_deg, double jd, double turbidity, double ozone_du, double altitude, double star_width, bool use_rgb, bool atmosphere_effects, bool upper_hemisphere_only, unsigned int number_cores);
RcppExport SEXP _skymodelr_make_starfield_rcpp(SEXP starsSEXP, SEXP resolutionSEXP, SEXP zero_pointSEXP, SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP jdSEXP, SEXP turbiditySEXP, SEXP ozone_duSEXP, SEXP altitudeSEXP, SEXP star_widthSEXP, SEXP use_rgbSEXP, SEXP atmosphere_effectsSEXP, SEXP upper_hemisphere_onlySEXP, SEXP number_coresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::DataFrame >::type stars(starsSEXP);
    Rcpp::traits::input_parameter< unsigned int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< double >::type zero_point(zero_pointSEXP);
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< double >::type jd(jdSEXP);
    Rcpp::traits::input_parameter< double >::type turbidity(turbiditySEXP);
    Rcpp::traits::input_parameter< double >::type ozone_du(ozone_duSEXP);
    Rcpp::traits::input_parameter< double >::type altitude(altitudeSEXP);
    Rcpp::traits::input_parameter< double >::type star_width(star_widthSEXP);
    Rcpp::traits::input_parameter< bool >::type use_rgb(use_rgbSEXP);
    Rcpp::traits::input_parameter< bool >::type atmosphere_effects(atmosphere_effectsSEXP);
    Rcpp::traits::input_parameter< bool >::type upper_hemisphere_only(upper_hemisphere_onlySEXP);
    Rcpp::traits::input_parameter< unsigned int >::type number_cores(number_coresSEXP);
    rcpp_result_gen = Rcpp::wrap(make_starfield_rcpp(stars, resolution, zero_point, lon_deg, lat_deg, jd, turbidity, ozone_du, altitude, star_width, use_rgb, atmosphere_effects, upper_hemisphere_only, number_cores));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_skymodelr_makesky_rcpp", (DL_FUNC) &_skymodelr_makesky_rcpp, 13},
    {"_skymodelr_calculate_sun_brightness_rcpp", (DL_FUNC) &_skymodelr_calculate_sun_brightness_rcpp, 9},
    {"_skymodelr_calculate_sun_radiance_band_rcpp", (DL_FUNC) &_skymodelr_calculate_sun_radiance_band_rcpp, 9},
    {"_skymodelr_calculate_raw_prague_radiance", (DL_FUNC) &_skymodelr_calculate_raw_prague_radiance, 11},
    {"_skymodelr_calculate_raw_prague", (DL_FUNC) &_skymodelr_calculate_raw_prague, 10},
    {"_skymodelr_cie_1931_2deg_rcpp", (DL_FUNC) &_skymodelr_cie_1931_2deg_rcpp, 0},
    {"_skymodelr_spd_values_rcpp", (DL_FUNC) &_skymodelr_spd_values_rcpp, 2},
    {"_skymodelr_make_starfield_rcpp", (DL_FUNC) &_skymodelr_make_starfield_rcpp, 14},
    {NULL, NULL, 0}
};

RcppExport void R_init_skymodelr(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
