The R Project SVN R-packages

Rev

Rev 3397 | Rev 3435 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3255 mrmanese 1
#include "R.h"
2
#include "Rdefines.h"
3
#include "Rinternals.h"
4
#include "sqlite3.h"
5
 
6
#ifndef __SQLITE_DATAFRAME__
7
#define __SQLITE_DATAFRAME__
8
 
3419 mrmanese 9
#define WORKSPACE_COLUMNS 6
3324 mrmanese 10
#ifndef WIN32
3308 mrmanese 11
#define MAX_ATTACHED 30     /* 31 including workspace.db */
3324 mrmanese 12
#else
13
#define MAX_ATTACHED 10     /* set to 10 until I have recompiled it to 30 */
14
#endif
3255 mrmanese 15
 
3307 mrmanese 16
/* utilities for checking characteristics of arg */
3255 mrmanese 17
int _is_r_sym(char *sym);
18
int _file_exists(char *filename);
3307 mrmanese 19
int _sdf_exists2(char *iname);
20
 
21
/* sdf utilities */
3419 mrmanese 22
int USE_SDF1(const char *iname, int exists, int protect);  /* call this before doing anything on an SDF */
23
int UNUSE_SDF2(const char *iname); /* somewhat like UNPROTECT */
3307 mrmanese 24
SEXP _create_sdf_sexp(const char *iname);  /* create a SEXP for an SDF */
25
int _add_sdf1(char *filename, char *internal_name); /* add SDF to workspace */
3324 mrmanese 26
void _delete_sdf2(const char *iname); /* remove SDF from workspace */
3255 mrmanese 27
int _get_factor_levels1(const char *iname, const char *varname, SEXP var);
3358 mrmanese 28
int _get_row_count2(const char *table, int quote);
3307 mrmanese 29
SEXP _get_rownames(const char *sdf_iname);
30
char *_get_full_pathname2(char *relpath); /* get full path given relpath, used in workspace mgmt */
3419 mrmanese 31
int _is_factor2(const char *iname, const char *factor_type, const char *colname);
32
SEXP _get_rownames2(const char *sdf_iname);
3255 mrmanese 33
 
3307 mrmanese 34
/* utilities for creating SDF's */
3419 mrmanese 35
char *_create_sdf_skeleton1(SEXP name, int *o_namelen, int protect);
3358 mrmanese 36
int _copy_factor_levels2(const char *factor_type, const char *iname_src,
37
        const char *colname_src, const char *iname_dst, const char *colname_dst);
3397 mrmanese 38
int _create_factor_table2(const char *iname, const char *factor_type, 
39
        const char *colname);
3419 mrmanese 40
char *_create_svector1(SEXP name, const char *type, int * _namelen, int protect);
3307 mrmanese 41
 
42
/* R utilities */
43
SEXP _getListElement(SEXP list, char *varname);
44
SEXP _shrink_vector(SEXP vec, int len); /* shrink vector size */
45
 
46
/* sqlite utilities */
47
int _empty_callback(void *data, int ncols, char **row, char **cols);
3397 mrmanese 48
int _sqlite_error_check(int res, const char *file, int line);
3307 mrmanese 49
const char *_get_column_type(const char *class, int type); /* get sqlite type corresponding to R class & type */
3397 mrmanese 50
sqlite3* _is_sqlitedb(char *filename);
3307 mrmanese 51
 
52
/* global buffer (g_sql_buf) utilities */
53
int _expand_buf(int i, int size);  /* expand ith buf if size > buf[i].size */
54
 
55
 
56
/* sqlite.vector utilities */
3281 mrmanese 57
SEXP sdf_get_variable(SEXP sdf, SEXP name);
3358 mrmanese 58
SEXP sdf_detach_sdf(SEXP internal_name);
3281 mrmanese 59
 
3397 mrmanese 60
/* workspace utilities */
61
int _prepare_attach2();  /* prepare workspace before attaching a sqlite db */
62
 
3307 mrmanese 63
/* misc utilities */
64
char *_r2iname(char *internal_name, char *filename);
65
char *_fixname(char *rname);
3397 mrmanese 66
char *_str_tolower(char *out, const char *ref);
3307 mrmanese 67
 
68
/* register functions to sqlite */
69
void __register_vector_math();
70
 
3255 mrmanese 71
#define _sqlite_exec(sql) sqlite3_exec(g_workspace, sql, _empty_callback, NULL, NULL)
3419 mrmanese 72
#define _sqlite_error(res) _sqlite_error_check((res), __FILE__, __LINE__)
73
 
74
#ifdef __SQLITE_DEBUG__
75
#define _sqlite_begin  { _sqlite_error(_sqlite_exec("begin")); Rprintf("begin at "  __FILE__  " line %d\n",  __LINE__); }
76
#define _sqlite_commit  { _sqlite_error(_sqlite_exec("commit")); Rprintf("commit at "  __FILE__  " line %d\n",  __LINE__); }
77
#else
78
#define _sqlite_begin  _sqlite_error(_sqlite_exec("begin")) 
79
#define _sqlite_commit _sqlite_error(_sqlite_exec("commit"))
80
#endif
81
 
3281 mrmanese 82
#ifndef SET_ROWNAMES
83
#define SET_ROWNAMES(x,n) setAttrib(x, R_RowNamesSymbol, n)
84
#endif
3255 mrmanese 85
 
3324 mrmanese 86
/* override R's, which does a GetRowNames which is different I believe */
87
#undef GET_ROWNAMES
88
#define GET_ROWNAMES(x) getAttrib(x, R_RowNamesSymbol)
89
 
3255 mrmanese 90
/* R object accessors shortcuts */
91
#define CHAR_ELT(str, i) CHAR(STRING_ELT(str,i))
92
 
93
/* SDF object accessors shortcuts */
94
#define SDF_INAME(sdf) CHAR(STRING_ELT(_getListElement(sdf, "iname"),0))
95
#define SVEC_VARNAME(sdf) CHAR(STRING_ELT(_getListElement(sdf, "varname"),0))
96
 
97
/* # of sql buffers */
98
#define NBUFS 4
99
 
100
/* possible var types when stored in sqlite as integer */
101
#define VAR_INTEGER 0
102
#define VAR_FACTOR  1
103
#define VAR_ORDERED 2
104
 
3307 mrmanese 105
/* detail constants (see _get_sdf_detail2 in sqlite_workspace.c) */
106
#define SDF_DETAIL_EXISTS 0
107
#define SDF_DETAIL_FULLFILENAME 1
3255 mrmanese 108
 
3358 mrmanese 109
/* R SXP type constants */
110
#define FACTORSXP 11
111
#define ORDEREDSXP 12
112
 
3255 mrmanese 113
#ifndef __SQLITE_WORKSPACE__
114
extern sqlite3 *g_workspace;
115
extern char *g_sql_buf[NBUFS];
116
extern int g_sql_buf_sz[NBUFS];
117
#endif
118
 
119
#endif