/* {{{ rberkeley_db_get_cachesize */ SEXP rberkeley_db_get_cachesize (SEXP _dbp) { DB *dbp; int ncachep, ret; u_int32_t gbytesp, bytesp; dbp = R_ExternalPtrAddr(_dbp); if(R_ExternalPtrTag(_dbp) != RBerkeley_DB || dbp == NULL) error("invalid 'db' handle"); ret = dbp->get_cachesize(dbp, &gbytesp, &bytesp, &ncachep); if(ret != 0) return ScalarInteger(ret); SEXP result; PROTECT(result = allocVector(VECSXP, 3)); SET_VECTOR_ELT(result, 0, ScalarInteger(gbytesp)); SET_VECTOR_ELT(result, 1, ScalarInteger(bytesp)); SET_VECTOR_ELT(result, 2, ScalarInteger(ncachep)); UNPROTECT(1); return result; }