blob: 0a59a0601e069d7092dcc702521db39790904a74 [file] [log] [blame]
/*
* R : A Computer Language for Statistical Data Analysis
* Copyright (C) 1998-2017 The R Core Team
*
* This header file is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
* This file is part of R. R is distributed under the terms of the
* GNU General Public License, either Version 2, June 1991 or Version 3,
* June 2007. See doc/COPYRIGHTS for details of the copyright status of R.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, a copy is available at
* https://www.R-project.org/Licenses/
*
*
* Generally useful UTILITIES *NOT* relying on R internals (from Defn.h)
*/
/* Included by R.h: API */
#ifndef R_EXT_UTILS_H_
#define R_EXT_UTILS_H_
#include <R_ext/Boolean.h>
#include <R_ext/Complex.h>
#if defined(__cplusplus) && !defined(DO_NOT_USE_CXX_HEADERS)
# include <cstddef>
# define R_SIZE_T std::size_t
#else
# include <stddef.h>
# define R_SIZE_T size_t
#endif
#define revsort Rf_revsort
#define iPsort Rf_iPsort
#define rPsort Rf_rPsort
#define cPsort Rf_cPsort
#define IndexWidth Rf_IndexWidth
#define setIVector Rf_setIVector
#define setRVector Rf_setRVector
#define StringFalse Rf_StringFalse
#define StringTrue Rf_StringTrue
#define isBlankString Rf_isBlankString
#ifdef __cplusplus
extern "C" {
#endif
/* ../../main/sort.c : */
void R_isort(int*, int);
void R_rsort(double*, int);
void R_csort(Rcomplex*, int);
void rsort_with_index(double *, int *, int);
void revsort(double*, int*, int);/* reverse; sort i[] alongside */
void iPsort(int*, int, int);
void rPsort(double*, int, int);
void cPsort(Rcomplex*, int, int);
/* ../../main/qsort.c : */
/* dummy renamed to II to avoid problems with g++ on Solaris */
void R_qsort (double *v, R_SIZE_T i, R_SIZE_T j);
void R_qsort_I (double *v, int *II, int i, int j);
void R_qsort_int (int *iv, R_SIZE_T i, R_SIZE_T j);
void R_qsort_int_I(int *iv, int *II, int i, int j);
#ifdef R_RS_H
void F77_NAME(qsort4)(double *v, int *indx, int *ii, int *jj);
void F77_NAME(qsort3)(double *v, int *ii, int *jj);
#endif
/* ../../main/util.c and others : */
const char *R_ExpandFileName(const char *);
#ifdef Win32
const char *R_ExpandFileNameUTF8(const char *);
#endif
void setIVector(int*, int, int);
void setRVector(double*, int, double);
Rboolean StringFalse(const char *);
Rboolean StringTrue(const char *);
Rboolean isBlankString(const char *);
/* These two are guaranteed to use '.' as the decimal point,
and to accept "NA".
*/
double R_atof(const char *str);
double R_strtod(const char *c, char **end);
char *R_tmpnam(const char *prefix, const char *tempdir);
char *R_tmpnam2(const char *prefix, const char *tempdir, const char *fileext);
void R_CheckUserInterrupt(void);
void R_CheckStack(void);
void R_CheckStack2(R_SIZE_T);
/* ../../appl/interv.c: also in Applic.h */
int findInterval(double *xt, int n, double x,
Rboolean rightmost_closed, Rboolean all_inside, int ilo,
int *mflag);
int findInterval2(double *xt, int n, double x,
Rboolean rightmost_closed, Rboolean all_inside, Rboolean left_open,
int ilo, int *mflag);
#ifdef R_RS_H
int F77_SUB(interv)(double *xt, int *n, double *x,
Rboolean *rightmost_closed, Rboolean *all_inside,
int *ilo, int *mflag);
#endif
void find_interv_vec(double *xt, int *n, double *x, int *nx,
int *rightmost_closed, int *all_inside, int *indx);
/* ../../appl/maxcol.c: also in Applic.h */
void R_max_col(double *matrix, int *nr, int *nc, int *maxes, int *ties_meth);
#ifdef __cplusplus
}
#endif
#endif /* R_EXT_UTILS_H_ */