The R Project SVN R-packages

Rev

Rev 3307 | Rev 3324 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3307 Rev 3308
Line 9... Line 9...
9
    }
9
    }
10
 
10
 
11
    char *iname = SDF_INAME(sdf);
11
    char *iname = SDF_INAME(sdf);
12
    char *varname = CHAR_ELT(name, 0);
12
    char *varname = CHAR_ELT(name, 0);
13
 
13
 
-
 
14
    if (!USE_SDF(iname)) return R_NilValue;
-
 
15
 
14
    /* check if sdf & varname w/in that sdf exists */
16
    /* check if sdf & varname w/in that sdf exists */
15
    sqlite3_stmt *stmt;
17
    sqlite3_stmt *stmt;
16
    sprintf(g_sql_buf[0], "select [%s] from [%s].sdf_data", varname, iname);
18
    sprintf(g_sql_buf[0], "select [%s] from [%s].sdf_data", varname, iname);
17
 
19
 
18
    int res = sqlite3_prepare(g_workspace, g_sql_buf[0], -1, &stmt, 0);
20
    int res = sqlite3_prepare(g_workspace, g_sql_buf[0], -1, &stmt, 0);
Line 116... Line 118...
116
    return added;
118
    return added;
117
}
119
}
118
 
120
 
119
SEXP sdf_get_variable_length(SEXP svec) {
121
SEXP sdf_get_variable_length(SEXP svec) {
120
    char *iname = SDF_INAME(svec);
122
    char *iname = SDF_INAME(svec);
-
 
123
    if (!USE_SDF(iname)) return R_NilValue;
121
    sprintf(g_sql_buf[0], "[%s].sdf_data", iname);
124
    sprintf(g_sql_buf[0], "[%s].sdf_data", iname);
122
 
125
 
123
    SEXP ret;
126
    SEXP ret;
124
    PROTECT(ret = NEW_INTEGER(1));
127
    PROTECT(ret = NEW_INTEGER(1));
125
    INTEGER(ret)[0] = _get_row_count2(g_sql_buf[0]);
128
    INTEGER(ret)[0] = _get_row_count2(g_sql_buf[0]);
Line 131... Line 134...
131
SEXP sdf_get_variable_index(SEXP svec, SEXP idx) {
134
SEXP sdf_get_variable_index(SEXP svec, SEXP idx) {
132
    SEXP ret = R_NilValue, tmp;
135
    SEXP ret = R_NilValue, tmp;
133
    char *iname = SDF_INAME(svec), *varname = SVEC_VARNAME(svec);
136
    char *iname = SDF_INAME(svec), *varname = SVEC_VARNAME(svec);
134
    int index, idxlen, i, retlen=0, res;
137
    int index, idxlen, i, retlen=0, res;
135
 
138
 
-
 
139
    if (!USE_SDF(iname)) return R_NilValue;
-
 
140
 
136
    /* check if sdf exists */
141
    /* check if sdf exists */
137
    sqlite3_stmt *stmt;
142
    sqlite3_stmt *stmt;
138
    sprintf(g_sql_buf[0], "select [%s] from [%s].sdf_data", varname, iname);
143
    sprintf(g_sql_buf[0], "select [%s] from [%s].sdf_data", varname, iname);
139
    res = sqlite3_prepare(g_workspace, g_sql_buf[0], -1, &stmt, 0);
144
    res = sqlite3_prepare(g_workspace, g_sql_buf[0], -1, &stmt, 0);
140
    sqlite3_finalize(stmt);
145
    sqlite3_finalize(stmt);
Line 278... Line 283...
278
    funcname = CHAR_ELT(func, 0);
283
    funcname = CHAR_ELT(func, 0);
279
    iname_src = SDF_INAME(vector);
284
    iname_src = SDF_INAME(vector);
280
    varname_src = SVEC_VARNAME(vector);
285
    varname_src = SVEC_VARNAME(vector);
281
    nargs = INTEGER(_nargs)[0];
286
    nargs = INTEGER(_nargs)[0];
282
 
287
 
-
 
288
    if (!USE_SDF(iname_src)) return R_NilValue;
-
 
289
 
283
    /* check nargs */
290
    /* check nargs */
284
    if (nargs > 2) {
291
    if (nargs > 2) {
285
        Rprintf("Error: Don't know how to handle Math functions w/ more than 2 args\n");
292
        Rprintf("Error: Don't know how to handle Math functions w/ more than 2 args\n");
286
        return R_NilValue;
293
        return R_NilValue;
287
    }
294
    }
Line 312... Line 319...
312
    }
319
    }
313
 
320
 
314
    sqlite3_step(stmt);
321
    sqlite3_step(stmt);
315
    sqlite3_finalize(stmt);
322
    sqlite3_finalize(stmt);
316
 
323
 
317
    /* add to workspace */
-
 
318
    strcpy(g_sql_buf[0], iname);
-
 
319
    iname[namelen] = '.';
-
 
320
    _add_sdf1(iname,  g_sql_buf[0]);
-
 
321
    iname[namelen] = 0;
-
 
322
 
-
 
323
    /* create sqlite.vector sexp */
324
    /* create sqlite.vector sexp */
324
    SEXP ret, value; int nprotected = 0;
325
    SEXP ret, value; int nprotected = 0;
325
    PROTECT(ret = NEW_LIST(2)); nprotected++;
326
    PROTECT(ret = NEW_LIST(2)); nprotected++;
326
 
327
 
327
    /* set list names */
328
    /* set list names */