in sources/cg_c.c [4031:4080]
static void cg_get_column(sem_t sem_type, CSTR cursor, int32_t index, CSTR var, charbuf *output) {
sem_t core_type = core_type_of(sem_type);
bprintf(output, " ");
if (is_nullable(sem_type)) {
switch (core_type) {
case SEM_TYPE_BOOL:
bprintf(output, "cql_column_nullable_bool(%s, %d, &%s);\n", cursor, index, var);
break;
case SEM_TYPE_INTEGER:
bprintf(output, "cql_column_nullable_int32(%s, %d, &%s);\n", cursor, index, var);
break;
case SEM_TYPE_REAL:
bprintf(output, "cql_column_nullable_double(%s, %d, &%s);\n", cursor, index, var);
break;
case SEM_TYPE_LONG_INTEGER:
bprintf(output, "cql_column_nullable_int64(%s, %d, &%s);\n", cursor, index, var);
break;
case SEM_TYPE_TEXT:
bprintf(output, "cql_column_nullable_string_ref(%s, %d, &%s);\n", cursor, index, var);
break;
case SEM_TYPE_BLOB:
bprintf(output, "cql_column_nullable_blob_ref(%s, %d, &%s);\n", cursor, index, var);
break;
}
}
else {
switch (core_type) {
case SEM_TYPE_BOOL:
bprintf(output, "%s = sqlite3_column_int(%s, %d) != 0;\n", var, cursor, index);
break;
case SEM_TYPE_INTEGER:
bprintf(output, "%s = sqlite3_column_int(%s, %d);\n", var, cursor, index);
break;
case SEM_TYPE_REAL:
bprintf(output, "%s = sqlite3_column_double(%s, %d);\n", var, cursor, index);
break;
case SEM_TYPE_LONG_INTEGER:
bprintf(output, "%s = sqlite3_column_int64(%s, %d);\n", var, cursor, index);
break;
case SEM_TYPE_TEXT:
bprintf(output, "cql_column_string_ref(%s, %d, &%s);\n", cursor, index, var);
break;
case SEM_TYPE_BLOB:
bprintf(output, "cql_column_blob_ref(%s, %d, &%s);\n", cursor, index, var);
break;
}
}
}