static void gen_data_type()

in sources/gen_sql.c [204:250]


static void gen_data_type(ast_node *ast) {
  if (is_ast_create_data_type(ast)) {
    gen_printf("CREATE ");
    gen_data_type(ast->left);
    return;
  }
  else if (is_ast_notnull(ast)) {
    gen_data_type(ast->left);
    gen_printf(" NOT NULL");
    return;
  }
  else if (is_ast_sensitive_attr(ast)) {
    gen_data_type(ast->left);
    if (!for_sqlite()) {
      gen_printf(" @SENSITIVE");
    }
    return;
  }
  else if (is_ast_type_int(ast)) {
    gen_printf("INTEGER");
  } else if (is_ast_type_text(ast)) {
    gen_printf("TEXT");
  } else if (is_ast_type_blob(ast)) {
    gen_printf("BLOB");
  } else if (is_ast_type_object(ast)) {
    gen_printf("OBJECT");
  } else if (is_ast_type_long(ast)) {
    gen_printf("LONG_INT");
  } else if (is_ast_type_real(ast)) {
    gen_printf("REAL");
  } else if (is_ast_type_bool(ast)) {
    gen_printf("BOOL");
  } else {
    Contract(is_ast_str(ast));
    EXTRACT_STRING(name, ast);
    gen_printf("%s", name);
    return;
  }

  if (!for_sqlite()) {
    if (ast->left) {
      gen_printf("<");
      gen_name(ast->left);
      gen_printf(">");
    }
  }
}