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

#include <Rcpp.h>

using namespace Rcpp;

// udunits_init
void udunits_init(CharacterVector path);
RcppExport SEXP _units_udunits_init(SEXP pathSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type path(pathSEXP);
    udunits_init(path);
    return R_NilValue;
END_RCPP
}
// udunits_exit
void udunits_exit();
RcppExport SEXP _units_udunits_exit() {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    udunits_exit();
    return R_NilValue;
END_RCPP
}
// R_ut_parse
SEXP R_ut_parse(CharacterVector name);
RcppExport SEXP _units_R_ut_parse(SEXP nameSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type name(nameSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_parse(name));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_get_dimensionless_unit_one
SEXP R_ut_get_dimensionless_unit_one(CharacterVector name);
RcppExport SEXP _units_R_ut_get_dimensionless_unit_one(SEXP nameSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type name(nameSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_get_dimensionless_unit_one(name));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_are_convertible
LogicalVector R_ut_are_convertible(SEXP a, SEXP b);
RcppExport SEXP _units_R_ut_are_convertible(SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type a(aSEXP);
    Rcpp::traits::input_parameter< SEXP >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_are_convertible(a, b));
    return rcpp_result_gen;
END_RCPP
}
// R_convert_doubles
NumericVector R_convert_doubles(SEXP from, SEXP to, NumericVector val);
RcppExport SEXP _units_R_convert_doubles(SEXP fromSEXP, SEXP toSEXP, SEXP valSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type from(fromSEXP);
    Rcpp::traits::input_parameter< SEXP >::type to(toSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type val(valSEXP);
    rcpp_result_gen = Rcpp::wrap(R_convert_doubles(from, to, val));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_new_dimensionless_unit
void R_ut_new_dimensionless_unit(CharacterVector name);
RcppExport SEXP _units_R_ut_new_dimensionless_unit(SEXP nameSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type name(nameSEXP);
    R_ut_new_dimensionless_unit(name);
    return R_NilValue;
END_RCPP
}
// R_ut_new_base_unit
void R_ut_new_base_unit(CharacterVector name);
RcppExport SEXP _units_R_ut_new_base_unit(SEXP nameSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type name(nameSEXP);
    R_ut_new_base_unit(name);
    return R_NilValue;
END_RCPP
}
// R_ut_remove_unit
void R_ut_remove_unit(CharacterVector name);
RcppExport SEXP _units_R_ut_remove_unit(SEXP nameSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type name(nameSEXP);
    R_ut_remove_unit(name);
    return R_NilValue;
END_RCPP
}
// R_ut_scale
void R_ut_scale(CharacterVector nw, CharacterVector old, NumericVector d);
RcppExport SEXP _units_R_ut_scale(SEXP nwSEXP, SEXP oldSEXP, SEXP dSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type nw(nwSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type old(oldSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type d(dSEXP);
    R_ut_scale(nw, old, d);
    return R_NilValue;
END_RCPP
}
// R_ut_offset
void R_ut_offset(CharacterVector nw, CharacterVector old, NumericVector d);
RcppExport SEXP _units_R_ut_offset(SEXP nwSEXP, SEXP oldSEXP, SEXP dSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type nw(nwSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type old(oldSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type d(dSEXP);
    R_ut_offset(nw, old, d);
    return R_NilValue;
END_RCPP
}
// R_ut_divide
SEXP R_ut_divide(SEXP numer, SEXP denom);
RcppExport SEXP _units_R_ut_divide(SEXP numerSEXP, SEXP denomSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type numer(numerSEXP);
    Rcpp::traits::input_parameter< SEXP >::type denom(denomSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_divide(numer, denom));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_multiply
SEXP R_ut_multiply(SEXP a, SEXP b);
RcppExport SEXP _units_R_ut_multiply(SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type a(aSEXP);
    Rcpp::traits::input_parameter< SEXP >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_multiply(a, b));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_invert
SEXP R_ut_invert(SEXP a);
RcppExport SEXP _units_R_ut_invert(SEXP aSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type a(aSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_invert(a));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_raise
SEXP R_ut_raise(SEXP a, IntegerVector i);
RcppExport SEXP _units_R_ut_raise(SEXP aSEXP, SEXP iSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type a(aSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type i(iSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_raise(a, i));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_root
SEXP R_ut_root(SEXP a, IntegerVector i);
RcppExport SEXP _units_R_ut_root(SEXP aSEXP, SEXP iSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type a(aSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type i(iSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_root(a, i));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_log
SEXP R_ut_log(SEXP a, NumericVector base);
RcppExport SEXP _units_R_ut_log(SEXP aSEXP, SEXP baseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type a(aSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type base(baseSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_log(a, base));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_format
CharacterVector R_ut_format(SEXP p, bool names, bool definition, bool ascii);
RcppExport SEXP _units_R_ut_format(SEXP pSEXP, SEXP namesSEXP, SEXP definitionSEXP, SEXP asciiSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type p(pSEXP);
    Rcpp::traits::input_parameter< bool >::type names(namesSEXP);
    Rcpp::traits::input_parameter< bool >::type definition(definitionSEXP);
    Rcpp::traits::input_parameter< bool >::type ascii(asciiSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_format(p, names, definition, ascii));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_set_encoding
void R_ut_set_encoding(std::string enc_str);
RcppExport SEXP _units_R_ut_set_encoding(SEXP enc_strSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type enc_str(enc_strSEXP);
    R_ut_set_encoding(enc_str);
    return R_NilValue;
END_RCPP
}
// R_ut_get_symbol
CharacterVector R_ut_get_symbol(CharacterVector ustr);
RcppExport SEXP _units_R_ut_get_symbol(SEXP ustrSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type ustr(ustrSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_get_symbol(ustr));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_get_name
CharacterVector R_ut_get_name(CharacterVector ustr);
RcppExport SEXP _units_R_ut_get_name(SEXP ustrSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type ustr(ustrSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_get_name(ustr));
    return rcpp_result_gen;
END_RCPP
}
// R_ut_map_name_to_unit
SEXP R_ut_map_name_to_unit(CharacterVector name, SEXP inunit);
RcppExport SEXP _units_R_ut_map_name_to_unit(SEXP nameSEXP, SEXP inunitSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type name(nameSEXP);
    Rcpp::traits::input_parameter< SEXP >::type inunit(inunitSEXP);
    rcpp_result_gen = Rcpp::wrap(R_ut_map_name_to_unit(name, inunit));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_units_udunits_init", (DL_FUNC) &_units_udunits_init, 1},
    {"_units_udunits_exit", (DL_FUNC) &_units_udunits_exit, 0},
    {"_units_R_ut_parse", (DL_FUNC) &_units_R_ut_parse, 1},
    {"_units_R_ut_get_dimensionless_unit_one", (DL_FUNC) &_units_R_ut_get_dimensionless_unit_one, 1},
    {"_units_R_ut_are_convertible", (DL_FUNC) &_units_R_ut_are_convertible, 2},
    {"_units_R_convert_doubles", (DL_FUNC) &_units_R_convert_doubles, 3},
    {"_units_R_ut_new_dimensionless_unit", (DL_FUNC) &_units_R_ut_new_dimensionless_unit, 1},
    {"_units_R_ut_new_base_unit", (DL_FUNC) &_units_R_ut_new_base_unit, 1},
    {"_units_R_ut_remove_unit", (DL_FUNC) &_units_R_ut_remove_unit, 1},
    {"_units_R_ut_scale", (DL_FUNC) &_units_R_ut_scale, 3},
    {"_units_R_ut_offset", (DL_FUNC) &_units_R_ut_offset, 3},
    {"_units_R_ut_divide", (DL_FUNC) &_units_R_ut_divide, 2},
    {"_units_R_ut_multiply", (DL_FUNC) &_units_R_ut_multiply, 2},
    {"_units_R_ut_invert", (DL_FUNC) &_units_R_ut_invert, 1},
    {"_units_R_ut_raise", (DL_FUNC) &_units_R_ut_raise, 2},
    {"_units_R_ut_root", (DL_FUNC) &_units_R_ut_root, 2},
    {"_units_R_ut_log", (DL_FUNC) &_units_R_ut_log, 2},
    {"_units_R_ut_format", (DL_FUNC) &_units_R_ut_format, 4},
    {"_units_R_ut_set_encoding", (DL_FUNC) &_units_R_ut_set_encoding, 1},
    {"_units_R_ut_get_symbol", (DL_FUNC) &_units_R_ut_get_symbol, 1},
    {"_units_R_ut_get_name", (DL_FUNC) &_units_R_ut_get_name, 1},
    {"_units_R_ut_map_name_to_unit", (DL_FUNC) &_units_R_ut_map_name_to_unit, 2},
    {NULL, NULL, 0}
};

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