The R Project SVN R-packages

Rev

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

Rev 3324 Rev 3358
Line 77... Line 77...
77
}
77
}
78
 
78
 
79
int _sqlite_error(int res) {
79
int _sqlite_error(int res) {
80
    int ret = FALSE;
80
    int ret = FALSE;
81
    if (res != SQLITE_OK) { 
81
    if (res != SQLITE_OK) { 
82
        Rprintf("ERROR: %s\n", sqlite3_errmsg(g_workspace));
82
        Rprintf("SQLITE ERROR: %s\n", sqlite3_errmsg(g_workspace));
83
        ret = TRUE;
83
        ret = TRUE;
84
    }
84
    }
85
    return ret;
85
    return ret;
86
}
86
}
87
 
87
 
Line 103... Line 103...
103
int __count_callback(void *data, int ncols, char **rows, char **cols) {
103
int __count_callback(void *data, int ncols, char **rows, char **cols) {
104
    *((int*) data) = atoi(rows[0]);
104
    *((int*) data) = atoi(rows[0]);
105
    return 0;
105
    return 0;
106
}
106
}
107
 
107
 
108
int _get_row_count2(const char *table) {
108
int _get_row_count2(const char *table, int quote) {
-
 
109
    if (quote) sprintf(g_sql_buf[2], "select count(*) from [%s].sdf_data", table);
109
    sprintf(g_sql_buf[2], "select count(*) from %s", table);
110
    else sprintf(g_sql_buf[2], "select count(*) from %s", table);
110
   
111
   
111
    int ret, res;
112
    int ret, res;
112
    res = sqlite3_exec(g_workspace, g_sql_buf[2], __count_callback, &ret, NULL);
113
    res = sqlite3_exec(g_workspace, g_sql_buf[2], __count_callback, &ret, NULL);
113
    if (res != SQLITE_OK) return -1;
114
    if (res != SQLITE_OK) return -1;
114
    return ret;
115
    return ret;
Line 261... Line 262...
261
    
262
    
262
int _get_factor_levels1(const char *iname, const char *varname, SEXP var) {
263
int _get_factor_levels1(const char *iname, const char *varname, SEXP var) {
263
    int ret = VAR_INTEGER;
264
    int ret = VAR_INTEGER;
264
    
265
    
265
    sprintf(g_sql_buf[1], "[%s].[factor %s]", iname, varname);
266
    sprintf(g_sql_buf[1], "[%s].[factor %s]", iname, varname);
266
    int res = _get_row_count2(g_sql_buf[1]);
267
    int res = _get_row_count2(g_sql_buf[1], 0);
267
    if (res > 0) { /* res is exptected to be {-1} \union I+ */
268
    if (res > 0) { /* res is exptected to be {-1} \union I+ */
268
        __attach_levels2(g_sql_buf[1], var, res);
269
        __attach_levels2(g_sql_buf[1], var, res);
269
        ret = VAR_FACTOR;
270
        ret = VAR_FACTOR;
270
    }
271
    }
271
 
272
 
272
    sprintf(g_sql_buf[1], "[%s].[ordered %s]", iname, varname);
273
    sprintf(g_sql_buf[1], "[%s].[ordered %s]", iname, varname);
273
    res = _get_row_count2(g_sql_buf[1]);
274
    res = _get_row_count2(g_sql_buf[1], 0);
274
    if (res > 0) {
275
    if (res > 0) {
275
        __attach_levels2(g_sql_buf[1], var, res);
276
        __attach_levels2(g_sql_buf[1], var, res);
276
        ret = VAR_ORDERED;
277
        ret = VAR_ORDERED;
277
    }
278
    }
278
 
279
 
Line 306... Line 307...
306
    }
307
    }
307
 
308
 
308
    return ret;
309
    return ret;
309
}
310
}
310
 
311
 
-
 
312
/* see equivalent: inherits() */
-
 
313
/* int _sexp_instance_of(SEXP obj, const char *class) {
-
 
314
    SEXP obj_class = GET_CLASS(obj);
-
 
315
    int ret = 0, len = LENGTH(obj_class), i;
-
 
316
 
-
 
317
    for (i = 0; i < len; i++) {
-
 
318
        if (strcmp(CHAR_ELT(obj_class, i), class) == 0) {
-
 
319
            ret = 1; break;
-
 
320
        }
-
 
321
    }
-
 
322
    return ret;
-
 
323
} */
-
 
324