void gram_keydown_hook_init (void) { gram_keydown_hook = scm_permanent_object (scm_make_hook (scm_from_unsigned_integer (2))); gram_keydown_hook_object = scm_permanent_object (scm_c_define ("keydown-hook", gram_keydown_hook)); scm_c_export ("keydown-hook", NULL); }
void gram_view_focus_hook_init (void) { gram_view_focus_hook = scm_permanent_object (scm_make_hook (scm_from_unsigned_integer (2))); gram_view_focus_hook_object = scm_permanent_object (scm_c_define ("view-focus-hook", gram_view_focus_hook)); scm_c_export ("view-focus-hook", NULL); }
void gram_output_created_hook_init (void) { gram_output_created_hook = scm_permanent_object (scm_make_hook (scm_from_unsigned_integer (1))); gram_output_created_hook_object = scm_permanent_object (scm_c_define ("output-created-hook", gram_output_created_hook)); scm_c_export ("output-created-hook", NULL); }
void gram_compositor_ready_hook_init (void) { gram_compositor_ready_hook = scm_permanent_object (scm_make_hook (scm_from_unsigned_integer (0))); gram_compositor_ready_hook_object = scm_permanent_object (scm_c_define ("compositor-ready-hook", gram_compositor_ready_hook)); scm_c_export ("compositor-ready-hook", NULL); }
static int print_client(SCM client_smob, SCM port, scm_print_state *pstate) { client_t *client = (client_t *)SCM_SMOB_DATA(client_smob); scm_puts("#<client ", port); scm_display(scm_from_unsigned_integer(client->window), port); scm_puts(">", port); /* success */ return 1; }
SCM scm_c_value_ref (SCM obj, size_t idx) { if (SCM_LIKELY (SCM_VALUESP (obj))) { SCM values = scm_struct_ref (obj, SCM_INUM0); size_t i = idx; while (SCM_LIKELY (scm_is_pair (values))) { if (i == 0) return SCM_CAR (values); values = SCM_CDR (values); i--; } } else if (idx == 0) return obj; scm_error (scm_out_of_range_key, "scm_c_value_ref", "Too few values in ~S to access index ~S", scm_list_2 (obj, scm_from_unsigned_integer (idx)), scm_list_1 (scm_from_unsigned_integer (idx))); }
static SCM pg_exec(SCM conn, SCM query) { struct pg_conn *pgc; struct pg_res *pgr; char *query_s; int i; SCM res_smob; scm_assert_smob_type(pg_conn_tag, conn); pgc = (struct pg_conn *)SCM_SMOB_DATA(conn); pgr = (struct pg_res *)scm_gc_malloc(sizeof(struct pg_res), "pg_res"); query_s = scm_to_utf8_string(query); scm_lock_mutex(pgc->mutex); pgr->res = PQexec(pgc->conn, query_s); scm_unlock_mutex(pgc->mutex); pgr->cursor = 0; pgr->fields = SCM_EOL; pgr->types = SCM_EOL; pgr->nfields = PQnfields(pgr->res); pgr->tuples = PQntuples(pgr->res); pgr->cmd_tuples = atoi(PQcmdTuples(pgr->res)); pgr->status = PQresultStatus(pgr->res); if ((pgr->status == PGRES_FATAL_ERROR) || (pgr->status == PGRES_NONFATAL_ERROR)) { log_msg("PQquery: %s\n", query_s); log_msg("PQerr: %s", PQresultErrorMessage(pgr->res)); } free(query_s); for (i = pgr->nfields - 1; i >= 0; i--) { pgr->fields = scm_cons(scm_from_utf8_symbol( PQfname(pgr->res, i)), pgr->fields); pgr->types = scm_cons(scm_from_unsigned_integer(PQftype(pgr->res, i)), pgr->types); } SCM_NEWSMOB(res_smob, pg_res_tag, pgr); return res_smob; }
static SCM deflate_size(SCM smob) { return scm_from_unsigned_integer(deflate_size_c(smob)); }
static SCM scm_screen_height(void) { return scm_from_unsigned_integer(wm_conf.screen->height_in_pixels); }
static SCM scm_screen_width(void) { return scm_from_unsigned_integer(wm_conf.screen->width_in_pixels); }
static SCM scm_count_clients(void) { int len = sglib_client_t_len(client_list); return scm_from_unsigned_integer(len); }
static SCM scm_client_height(SCM client_smob) { client_t *client = (client_t *)SCM_SMOB_DATA(client_smob); return scm_from_unsigned_integer(client->rect.height); }