static SCM lsscm_make_lazy_string_smob (CORE_ADDR address, int length, const char *encoding, struct type *type) { lazy_string_smob *ls_smob = (lazy_string_smob *) scm_gc_malloc (sizeof (lazy_string_smob), lazy_string_smob_name); SCM ls_scm; /* Caller must verify this. */ gdb_assert (!(address == 0 && length != 0)); gdb_assert (type != NULL); ls_smob->address = address; /* Coerce all values < 0 to -1. */ ls_smob->length = length < 0 ? -1 : length; if (encoding == NULL || strcmp (encoding, "") == 0) ls_smob->encoding = NULL; else ls_smob->encoding = xstrdup (encoding); ls_smob->type = type; ls_scm = scm_new_smob (lazy_string_smob_tag, (scm_t_bits) ls_smob); gdbscm_init_gsmob (&ls_smob->base); return ls_scm; }
void gdbscm_init_chained_gsmob (chained_gdb_smob *base) { gdbscm_init_gsmob ((gdb_smob *) base); base->prev = NULL; base->next = NULL; }
static SCM arscm_make_arch_smob (struct gdbarch *gdbarch) { arch_smob *a_smob = (arch_smob *) scm_gc_malloc (sizeof (arch_smob), arch_smob_name); SCM a_scm; a_smob->gdbarch = gdbarch; a_scm = scm_new_smob (arch_smob_tag, (scm_t_bits) a_smob); gdbscm_init_gsmob (&a_smob->base); return a_scm; }
static SCM stscm_make_sal_smob (void) { sal_smob *s_smob = (sal_smob *) scm_gc_malloc (sizeof (sal_smob), sal_smob_name); SCM s_scm; s_smob->symtab_scm = SCM_BOOL_F; memset (&s_smob->sal, 0, sizeof (s_smob->sal)); s_scm = scm_new_smob (sal_smob_tag, (scm_t_bits) s_smob); gdbscm_init_gsmob (&s_smob->base); return s_scm; }
static SCM gdbscm_make_pretty_printer_worker (SCM display_hint, SCM to_string, SCM children) { pretty_printer_worker_smob *w_smob = (pretty_printer_worker_smob *) scm_gc_malloc (sizeof (pretty_printer_worker_smob), pretty_printer_worker_smob_name); SCM w_scm; w_smob->display_hint = display_hint; w_smob->to_string = to_string; w_smob->children = children; w_scm = scm_new_smob (pretty_printer_worker_smob_tag, (scm_t_bits) w_smob); gdbscm_init_gsmob (&w_smob->base); return w_scm; }
static SCM bpscm_make_breakpoint_smob (void) { breakpoint_smob *bp_smob = (breakpoint_smob *) scm_gc_malloc (sizeof (breakpoint_smob), breakpoint_smob_name); SCM bp_scm; memset (bp_smob, 0, sizeof (*bp_smob)); bp_smob->number = -1; bp_smob->stop = SCM_BOOL_F; bp_scm = scm_new_smob (breakpoint_smob_tag, (scm_t_bits) bp_smob); bp_smob->containing_scm = bp_scm; gdbscm_init_gsmob (&bp_smob->base); return bp_scm; }
SCM gdbscm_make_exception (SCM key, SCM args) { exception_smob *e_smob = (exception_smob *) scm_gc_malloc (sizeof (exception_smob), exception_smob_name); SCM smob; e_smob->key = key; e_smob->args = args; smob = scm_new_smob (exception_smob_tag, (scm_t_bits) e_smob); gdbscm_init_gsmob (&e_smob->base); ++gdbscm_exception_count; return smob; }
static SCM cmdscm_make_command_smob (void) { command_smob *c_smob = (command_smob *) scm_gc_malloc (sizeof (command_smob), command_smob_name); SCM c_scm; memset (c_smob, 0, sizeof (*c_smob)); c_smob->cmd_class = no_class; c_smob->invoke = SCM_BOOL_F; c_smob->complete = SCM_BOOL_F; c_scm = scm_new_smob (command_smob_tag, (scm_t_bits) c_smob); c_smob->containing_scm = c_scm; gdbscm_init_gsmob (&c_smob->base); return c_scm; }
static SCM pascm_make_param_smob (void) { param_smob *p_smob = (param_smob *) scm_gc_malloc (sizeof (param_smob), param_smob_name); SCM p_scm; memset (p_smob, 0, sizeof (*p_smob)); p_smob->cmd_class = no_class; p_smob->type = var_boolean; /* ARI: var_boolean */ p_smob->set_func = SCM_BOOL_F; p_smob->show_func = SCM_BOOL_F; p_scm = scm_new_smob (parameter_smob_tag, (scm_t_bits) p_smob); p_smob->containing_scm = p_scm; gdbscm_init_gsmob (&p_smob->base); return p_scm; }
static SCM gdbscm_make_pretty_printer (SCM name, SCM lookup) { pretty_printer_smob *pp_smob = (pretty_printer_smob *) scm_gc_malloc (sizeof (pretty_printer_smob), pretty_printer_smob_name); SCM smob; SCM_ASSERT_TYPE (scm_is_string (name), name, SCM_ARG1, FUNC_NAME, _("string")); SCM_ASSERT_TYPE (gdbscm_is_procedure (lookup), lookup, SCM_ARG2, FUNC_NAME, _("procedure")); pp_smob->name = name; pp_smob->lookup = lookup; pp_smob->enabled = SCM_BOOL_T; smob = scm_new_smob (pretty_printer_smob_tag, (scm_t_bits) pp_smob); gdbscm_init_gsmob (&pp_smob->base); return smob; }
void gdbscm_init_eqable_gsmob (eqable_gdb_smob *base, SCM containing_scm) { gdbscm_init_gsmob ((gdb_smob *) base); base->containing_scm = containing_scm; }