Matrix r4655
Loading...
Searching...
No Matches
Macros | Functions | Variables
bind.c File Reference
#include "Mdefines.h"
#include "coerce.h"
#include "bind.h"

Go to the source code of this file.

Macros

#define BIND_CASES(_BIND_)
 
#define BIND_E(_CTYPE_, _PTR_, _MASK_)
 
#define BIND_C1R0(_CTYPE_, _PTR_, _MASK_)
 
#define BIND_C0R1(_CTYPE_, _PTR_, _MASK_)
 
#define BIND_T(_CTYPE_, _PTR_, _MASK_)
 

Functions

static void scanArgs (SEXP args, SEXP exprs, int margin, int level, int *rdim, int *rdimnames, char *kind, char *repr)
 
static void coerceArgs (SEXP args, int margin, int *rdim, char kind, char repr)
 
static void bindArgs (SEXP args, int margin, SEXP res, int *rdim, char kind, char repr)
 
static SEXP bind (SEXP args, SEXP exprs, int margin, int level)
 
SEXP R_bind (SEXP args)
 

Variables

static const char * valid [] = { VALID_NONVIRTUAL_MATRIX, "" }
 
static SEXP tagWasVector = NULL
 

Macro Definition Documentation

◆ BIND_C0R1

#define BIND_C0R1 (   _CTYPE_,
  _PTR_,
  _MASK_ 
)
Value:
do { \
_MASK_(_CTYPE_ *px = _PTR_(x), *psx); \
for (a = args; a != R_NilValue; a = CDR(a)) { \
s = CAR(a); \
if (s == R_NilValue) \
continue; \
PROTECT(sp = GET_SLOT(s, Matrix_pSym)); \
PROTECT(si = GET_SLOT(s, iSym)); \
_MASK_(PROTECT(sx = GET_SLOT(s, Matrix_xSym))); \
psp = INTEGER(sp); \
psi = INTEGER(si); \
_MASK_(psx = _PTR_(sx)); \
for (j = 0, k = 0; j < n; ++j) { \
kend = psp[j + 1]; \
while (k < kend) { \
pi[work[j]] = *(psi++) + pos; \
_MASK_(px[work[j]] = *(psx++)); \
work[j]++; \
++k; \
} \
} \
_MASK_(UNPROTECT(1)); \
UNPROTECT(2); \
pos += INTEGER(GET_SLOT(s, Matrix_DimSym))[margin]; \
} \
} while (0)
#define GET_SLOT(x, what)
Definition Mdefines.h:85
SEXP Matrix_DimSym
Definition Msymbols.h:3
SEXP Matrix_xSym
Definition Msymbols.h:22
SEXP Matrix_pSym
Definition Msymbols.h:17

◆ BIND_C1R0

#define BIND_C1R0 (   _CTYPE_,
  _PTR_,
  _MASK_ 
)
Value:
do { \
_MASK_(_CTYPE_ *px = _PTR_(x), *psx); \
for (a = args; a != R_NilValue; a = CDR(a)) { \
s = CAR(a); \
if (s == R_NilValue) \
continue; \
PROTECT(sp = GET_SLOT(s, Matrix_pSym)); \
PROTECT(si = GET_SLOT(s, iSym)); \
_MASK_(PROTECT(sx = GET_SLOT(s, Matrix_xSym))); \
psp = INTEGER(sp); \
psi = INTEGER(si); \
_MASK_(psx = _PTR_(sx)); \
n = (int) (XLENGTH(sp) - 1); \
Matrix_memcpy(pi, psi, psp[n], sizeof(int)); \
_MASK_(Matrix_memcpy(px, psx, psp[n], sizeof(_CTYPE_))); \
pi += psp[n]; \
_MASK_(px += psp[n]); \
_MASK_(UNPROTECT(1)); \
UNPROTECT(2); \
} \
} while (0)
void * Matrix_memcpy(void *dest, const void *src, R_xlen_t length, size_t size)
Definition utils.c:70

◆ BIND_CASES

#define BIND_CASES (   _BIND_)
Value:
do { \
switch (kind) { \
case 'l': \
_BIND_(int, LOGICAL, SHOW); \
break; \
case 'i': \
_BIND_(int, INTEGER, SHOW); \
break; \
case 'd': \
_BIND_(double, REAL, SHOW); \
break; \
case 'z': \
_BIND_(Rcomplex, COMPLEX, SHOW); \
break; \
default: \
break; \
} \
} while (0)
#define SHOW(...)
Definition Mdefines.h:201

◆ BIND_E

#define BIND_E (   _CTYPE_,
  _PTR_,
  _MASK_ 
)

◆ BIND_T

#define BIND_T (   _CTYPE_,
  _PTR_,
  _MASK_ 
)

Function Documentation

◆ bind()

static SEXP bind ( SEXP  args,
SEXP  exprs,
int  margin,
int  level 
)
static

◆ bindArgs()

static void bindArgs ( SEXP  args,
int  margin,
SEXP  res,
int *  rdim,
char  kind,
char  repr 
)
static

◆ coerceArgs()

static void coerceArgs ( SEXP  args,
int  margin,
int *  rdim,
char  kind,
char  repr 
)
static

◆ R_bind()

SEXP R_bind ( SEXP  args)

Definition at line 948 of file bind.c.

References bind().

◆ scanArgs()

static void scanArgs ( SEXP  args,
SEXP  exprs,
int  margin,
int  level,
int *  rdim,
int *  rdimnames,
char *  kind,
char *  repr 
)
static

Variable Documentation

◆ tagWasVector

SEXP tagWasVector = NULL
static

Definition at line 7 of file bind.c.

Referenced by bind(), and coerceArgs().

◆ valid

const char* valid[] = { VALID_NONVIRTUAL_MATRIX, "" }
static

Definition at line 5 of file bind.c.

Referenced by bind(), CHMfactor_solve(), coerceArgs(), CR2spV(), Csparse_writeMM(), dtCMatrix_diag(), get_factor(), Matrix_kind(), Matrix_nonvirtual(), Matrix_repr(), Matrix_shape(), R_dense_as_general(), R_dense_as_kind(), R_dense_as_packed(), R_dense_as_sparse(), R_dense_as_unpacked(), R_dense_band(), R_dense_diag_get(), R_dense_diag_set(), R_dense_force_symmetric(), R_dense_is_diagonal(), R_dense_is_symmetric(), R_dense_is_triangular(), R_dense_marginsum(), R_dense_matmult(), R_dense_prod(), R_dense_skewpart(), R_dense_sum(), R_dense_symmpart(), R_dense_transpose(), R_diagonal_as_dense(), R_diagonal_as_kind(), R_diagonal_as_sparse(), R_diagonal_matmult(), R_index_as_dense(), R_index_as_kind(), R_index_as_sparse(), R_Matrix_as_Csparse(), R_Matrix_as_general(), R_Matrix_as_kind(), R_Matrix_as_matrix(), R_Matrix_as_packed(), R_Matrix_as_Rsparse(), R_Matrix_as_Tsparse(), R_Matrix_as_unpacked(), R_Matrix_as_vector(), R_sparse_as_Csparse(), R_sparse_as_dense(), R_sparse_as_general(), R_sparse_as_kind(), R_sparse_as_Rsparse(), R_sparse_as_Tsparse(), R_sparse_band(), R_sparse_diag_get(), R_sparse_diag_N2U(), R_sparse_diag_set(), R_sparse_diag_U2N(), R_sparse_drop0(), R_sparse_force_symmetric(), R_sparse_is_diagonal(), R_sparse_is_symmetric(), R_sparse_is_triangular(), R_sparse_marginsum(), R_sparse_matmult(), R_sparse_prod(), R_sparse_skewpart(), R_sparse_sum(), R_sparse_symmpart(), R_sparse_transpose(), R_subscript_1ary(), R_subscript_1ary_mat(), R_subscript_2ary(), R_vector_as_sparse(), scanArgs(), set_factor(), sexp_as_cholmod_dense(), sexp_as_cholmod_factor(), sexp_as_cholmod_sparse(), sexp_as_cholmod_triplet(), strmatch(), strmatch(), strmatch(), and Tsparse_aggregate().