8void *
Matrix_memset(
void *dest,
int ch, R_xlen_t length,
size_t size)
10 if (dest && length > 0 && size > 0) {
12 char *dest_ = (
char *) dest;
13 size_t N = SIZE_MAX / size;
15#if (SIZE_MAX < R_XLEN_T_MAX)
16 R_xlen_t S_M = (R_xlen_t) SIZE_MAX;
22 size_t n = (size_t) length;
24 memset(dest_, ch, n * size);
32 memset(dest_, ch, n * size);
35#if (SIZE_MAX < R_XLEN_T_MAX)
40 size_t n, d = N * size;
41 while (length > S_M) {
48 memset(dest_, ch, n * size);
57 memset(dest_, ch, n * size);
70void *
Matrix_memcpy(
void *dest,
const void *src, R_xlen_t length,
size_t size)
72 if (dest && src && length > 0 && size > 0) {
74 char *dest_ = (
char *) dest;
75 const char *src_ = (
const char *) src;
77 size_t N = SIZE_MAX / size;
79#if (SIZE_MAX < R_XLEN_T_MAX)
80 R_xlen_t S_M = (R_xlen_t) SIZE_MAX;
86 size_t n = (size_t) length;
88 memcpy(dest_, src_, n * size);
92 memcpy(dest_, src_, d);
97 memcpy(dest_, src_, n * size);
100#if (SIZE_MAX < R_XLEN_T_MAX)
105 size_t n, d = N * size;
106 while (length > S_M) {
109 memcpy(dest_, src_, d);
114 memcpy(dest_, src_, n * size);
119 memcpy(dest_, src_, d);
123 memcpy(dest_, src_, n * size);
137 va_start(args, format);
146 for (
int i = 0; i < n; ++i)
147 if (strcmp(CHAR(STRING_ELT(s1, i)), CHAR(STRING_ELT(s2, i))) != 0)
154 Rcomplex *px = COMPLEX(x);
155 R_xlen_t nx = XLENGTH(x);
165 Rcomplex *px = COMPLEX(x);
166 R_xlen_t nx = XLENGTH(x);
176 Rcomplex *px = COMPLEX(x);
177 R_xlen_t nx = XLENGTH(x);
187 R_xlen_t i, n = XLENGTH(x);
191 int *px = LOGICAL(x);
192 for (i = 0; i < n; ++i, ++px)
193 if (*px == NA_LOGICAL)
199 int *px = INTEGER(x);
200 for (i = 0; i < n; ++i, ++px)
201 if (*px == NA_INTEGER)
207 double *px = REAL(x);
208 for (i = 0; i < n; ++i, ++px)
215 Rcomplex *px = COMPLEX(x);
216 for (i = 0; i < n; ++i, ++px)
217 if (ISNAN((*px).r) || ISNAN((*px).i))
#define Matrix_ErrorBufferSize
#define ERROR_INVALID_TYPE(_X_, _FUNC_)
void * Matrix_memset(void *dest, int ch, R_xlen_t length, size_t size)
int equal_character_vectors(SEXP s1, SEXP s2, int n)
void * Matrix_memcpy(void *dest, const void *src, R_xlen_t length, size_t size)
char * Matrix_sprintf(const char *format,...)