The R Project SVN R-packages

Rev

Rev 3324 | Rev 3397 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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