static SCM glist_to_scm_list_helper(GList *glist, swig_type_info *wct) { SCM list = SCM_EOL; GList *node; for (node = glist; node; node = node->next) list = scm_cons(SWIG_NewPointerObj(node->data, wct, 0), list); return scm_reverse (list); }
SCM scm_from_netlist_list (NETLIST *netlist_list) { NETLIST *netlist; SCM lst = SCM_EOL; for (netlist = netlist_list; netlist; netlist = netlist->next) { lst = scm_cons (scm_from_netlist (netlist), lst); } return scm_reverse (lst); }
/* Given a uref, Return a list of pairs, each pair contains the name * of the pin, and the name of the net connected to that pin. */ SCM g_get_pins_nets(SCM scm_uref) { SCM pinslist = SCM_EOL; SCM pairlist = SCM_EOL; NETLIST *nl_current = NULL; CPINLIST *pl_current = NULL; char *wanted_uref = NULL; char *net_name = NULL; char *pin = NULL; SCM_ASSERT(scm_is_string (scm_uref), scm_uref, SCM_ARG1, "gnetlist:get-pins-nets"); wanted_uref = scm_to_utf8_string (scm_uref); /* search for the any instances */ /* through the entire list */ for (nl_current = netlist_head; nl_current != NULL; nl_current = nl_current->next) { /* is there a uref? */ if (nl_current->component_uref) { /* is it the one we want ? */ if (strcmp(nl_current->component_uref, wanted_uref) == 0) { for (pl_current = nl_current->cpins; pl_current != NULL; pl_current = pl_current->next) { /* is there a valid pin number and a valid name ? */ if (pl_current->pin_number) { if (pl_current->net_name) { /* yes, add it to the list */ pin = pl_current->pin_number; net_name = pl_current->net_name; pairlist = scm_cons (scm_from_utf8_string (pin), scm_from_utf8_string (net_name)); pinslist = scm_cons (pairlist, pinslist); } } } } } } free (wanted_uref); pinslist = scm_reverse (pinslist); /* pins are in reverse order on the way * out */ return (pinslist); }
SCM scm_from_pin_list (CPINLIST *pin_list) { CPINLIST *pin; SCM lst = SCM_EOL; for (pin = pin_list; pin; pin = pin->next) { lst = scm_cons (scm_from_pin (pin), lst); } return scm_reverse (lst); }
/******************************************************************** * gnc_glist_string_to_scm * i.e. (glist-of (<gw:mchars> calee-owned) callee-owned) * or equivalently * i.e. (glist-of (<gw:gchars> calee-owned) callee-owned) ********************************************************************/ SCM gnc_glist_string_to_scm(GList *glist) { SCM list = SCM_EOL; GList *node; for (node = glist; node; node = node->next) { if (node->data) list = scm_cons (scm_from_locale_string(node->data), list); else list = scm_cons (SCM_BOOL_F, list); } return scm_reverse (list); }
static void gnc_column_view_edit_remove_cb(GtkButton * button, gpointer user_data) { gnc_column_view_edit * r = user_data; SCM newlist = SCM_EOL; SCM oldlist = r->contents_list; int count; int oldlength; if (scm_is_list(r->contents_list)) { oldlength = scm_ilength(r->contents_list); if (oldlength > r->contents_selected) { for (count = 0; count < r->contents_selected; count++) { newlist = scm_cons(SCM_CAR(oldlist), newlist); oldlist = SCM_CDR(oldlist); } if (count <= oldlength) { newlist = scm_append(scm_listify(scm_reverse(newlist), SCM_CDR(oldlist), SCM_UNDEFINED)); } } if (r->contents_selected > 0 && oldlength == r->contents_selected + 1) { r->contents_selected --; } scm_gc_unprotect_object(r->contents_list); r->contents_list = newlist; scm_gc_protect_object(r->contents_list); gnc_column_view_set_option(r->odb, "__general", "report-list", r->contents_list); gnc_options_dialog_changed (r->optwin); } update_display_lists(r); }
static SCM pg_map_rows(SCM res, SCM rest) { struct pg_res *pgr; SCM bag, row; scm_assert_smob_type(pg_res_tag, res); bag = row = SCM_EOL; pgr = (struct pg_res *)SCM_SMOB_DATA(res); while (pgr->cursor < pgr->tuples) { row = build_row(pgr); if (!scm_is_null(rest)) bag = scm_cons(scm_call_1(SCM_CAR(rest), row), bag); else bag = scm_cons(row, bag); pgr->cursor++; } PQclear(pgr->res); pgr->res = NULL; bag = scm_reverse(bag); scm_remember_upto_here_2(bag, row); scm_remember_upto_here_2(res, rest); return bag; }
static void gnc_edit_column_view_move_up_cb(GtkButton * button, gpointer user_data) { gnc_column_view_edit * r = user_data; SCM oldlist = r->contents_list; SCM newlist = SCM_EOL; SCM temp; int oldlength; int count; oldlength = scm_ilength(r->contents_list); if ((r->contents_selected > 0) && (oldlength > r->contents_selected)) { for (count = 1; count < r->contents_selected; count++) { newlist = scm_cons(SCM_CAR(oldlist), newlist); oldlist = SCM_CDR(oldlist); } temp = SCM_CAR(oldlist); oldlist = SCM_CDR(oldlist); newlist = scm_cons(temp, scm_cons(SCM_CAR(oldlist), newlist)); newlist = scm_append(scm_listify(scm_reverse(newlist), SCM_CDR(oldlist), SCM_UNDEFINED)); scm_gc_unprotect_object(r->contents_list); r->contents_list = newlist; scm_gc_protect_object(r->contents_list); r->contents_selected = r->contents_selected - 1; gnc_column_view_set_option(r->odb, "__general", "report-list", r->contents_list); gnc_options_dialog_changed (r->optwin); update_display_lists(r); } }
static SCM guile_server_listeners (SCM server) { svz_server_t *xserver = NULL; svz_array_t *listeners; char *str; unsigned long i; SCM list = SCM_EOL; /* Server instance name given? */ if ((str = guile_to_string (server)) != NULL) { xserver = svz_server_get (str); free (str); } /* Maybe server smob given. */ if (xserver == NULL) { scm_assert_smob_type (guile_svz_server_tag, server); xserver = (svz_server_t *) SCM_SMOB_DATA (server); } /* Create a list of socket smobs for the server. */ if ((listeners = svz_server_listeners (xserver)) != NULL) { SCM smob; for (i = 0; i < svz_array_size (listeners); i++) { SCM_NEWSMOB (smob, guile_svz_socket_tag, (svz_socket_t *) svz_array_get (listeners, i)); list = scm_cons (smob, list); } svz_array_destroy (listeners); } return scm_reverse (list); }
static void gnc_column_view_edit_add_cb(GtkButton * button, gpointer user_data) { gnc_column_view_edit * r = user_data; SCM make_report = scm_c_eval_string("gnc:make-report"); SCM mark_report = scm_c_eval_string("gnc:report-set-needs-save?!"); SCM template_name; SCM new_report; SCM newlist = SCM_EOL; SCM oldlist = r->contents_list; int count; int oldlength, id; if (scm_is_list(r->available_list) && (scm_ilength(r->available_list) > r->available_selected)) { template_name = scm_list_ref(r->available_list, scm_int2num(r->available_selected)); new_report = scm_call_1(make_report, template_name); id = scm_num2int(new_report, SCM_ARG1, G_STRFUNC); scm_call_2(mark_report, gnc_report_find(id), SCM_BOOL_T); oldlength = scm_ilength(r->contents_list); if (oldlength > r->contents_selected) { for (count = 0; count < r->contents_selected; count++) { newlist = scm_cons(SCM_CAR(oldlist), newlist); oldlist = SCM_CDR(oldlist); } newlist = scm_append (scm_listify(scm_reverse(scm_cons(SCM_LIST4(new_report, scm_int2num(1), scm_int2num(1), SCM_BOOL_F), newlist)), oldlist, SCM_UNDEFINED)); } else { newlist = scm_append (scm_listify(oldlist, SCM_LIST1(SCM_LIST4(new_report, scm_int2num(1), scm_int2num(1), SCM_BOOL_F)), SCM_UNDEFINED)); r->contents_selected = oldlength; } scm_gc_unprotect_object(r->contents_list); r->contents_list = newlist; scm_gc_protect_object(r->contents_list); gnc_column_view_set_option(r->odb, "__general", "report-list", r->contents_list); gnc_options_dialog_changed (r->optwin); } update_display_lists(r); }