X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dict.c;h=2cb6894ce957d508a739ca86070c35704689f092;hb=e294a372f351d7105c21a2db58022af8b119aa64;hp=357ec031b5504aae5de48c72355b4dbf146642df;hpb=a19b858e0ac3c69e4a28c0ca6d8674427268a863;p=pspp diff --git a/src/ui/gui/psppire-dict.c b/src/ui/gui/psppire-dict.c index 357ec031b5..2cb6894ce9 100644 --- a/src/ui/gui/psppire-dict.c +++ b/src/ui/gui/psppire-dict.c @@ -46,7 +46,6 @@ static GObjectClass *parent_class = NULL; enum {VARIABLE_CHANGED, VARIABLE_INSERTED, - VARIABLE_DELETED, VARIABLES_DELETED, n_SIGNALS}; @@ -119,17 +118,6 @@ psppire_dict_class_init (PsppireDictClass *class) 1, G_TYPE_INT); - signal[VARIABLE_DELETED] = - g_signal_new ("variable_deleted", - G_TYPE_FROM_CLASS(class), - G_SIGNAL_RUN_FIRST, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__INT, - G_TYPE_NONE, - 1, - G_TYPE_INT); - signal[VARIABLES_DELETED] = g_signal_new ("variables_deleted", @@ -151,8 +139,6 @@ psppire_dict_finalize (GObject *object) gint v; PsppireDict *d = PSPPIRE_DICT (object); - - for (v = 0 ; v < psppire_dict_get_var_cnt(d) ; ++v ) g_free(d->variables[v]); @@ -212,10 +198,10 @@ static gchar * auto_generate_var_name(PsppireDict *dict) { gint d = 0; - static gchar name[255]; + static gchar name[10]; - while (g_snprintf(name, 255, "VAR%05d",d++), + while (g_snprintf(name, 10, "VAR%05d",d++), psppire_dict_lookup_var(dict, name)) ; @@ -228,6 +214,7 @@ auto_generate_var_name(PsppireDict *dict) void psppire_dict_insert_variable(PsppireDict *d, gint idx, const gchar *name) { + struct variable *var ; gint i; g_return_if_fail(d); g_return_if_fail(G_IS_PSPPIRE_DICT(d)); @@ -257,12 +244,10 @@ psppire_dict_insert_variable(PsppireDict *d, gint idx, const gchar *name) if ( ! name ) name = auto_generate_var_name(d); - struct variable *var = - dict_create_var(d->dict, name, 0); + var = dict_create_var(d->dict, name, 0); dict_reorder_var(d->dict, var, idx); - d->variables[idx] = g_malloc(sizeof (struct PsppireVariable)); d->variables[idx]->v = var; d->variables[idx]->dict = d; @@ -321,7 +306,6 @@ psppire_dict_set_name(PsppireDict* d, gint idx, const gchar *name) { /* new variable */ dict_create_var(d->dict, name, 0); - g_print("Emitting variable-inserted signal\n"); g_signal_emit(d, signal[VARIABLE_INSERTED], 0, idx); } } @@ -332,14 +316,17 @@ psppire_dict_set_name(PsppireDict* d, gint idx, const gchar *name) struct PsppireVariable * psppire_dict_get_variable(PsppireDict *d, gint idx) { + struct PsppireVariable *var ; g_return_val_if_fail(d, NULL); g_return_val_if_fail(d->dict, NULL); - g_return_val_if_fail(d->variables, NULL); + + if ( ! d->variables) + return NULL; if (idx < 0 || idx >= psppire_dict_get_var_cnt(d)) return NULL; - struct PsppireVariable *var = d->variables[idx] ; + var = d->variables[idx] ; if (! var ) { @@ -394,19 +381,21 @@ psppire_dict_clear(PsppireDict *d) g_return_if_fail(d); g_return_if_fail(d->dict); - const gint n_vars = dict_get_var_cnt(d->dict); - gint i; + { + const gint n_vars = dict_get_var_cnt(d->dict); + gint i; - dict_clear(d->dict); + dict_clear(d->dict); - /* Invalidate the entire cache */ - for ( i = 0 ; i < d->cache_size ; ++i ) - { - g_free(d->variables[i]); - d->variables[i] = 0; - } + /* Invalidate the entire cache */ + for ( i = 0 ; i < d->cache_size ; ++i ) + { + g_free(d->variables[i]); + d->variables[i] = 0; + } - g_signal_emit(d, signal[VARIABLES_DELETED], 0, 0, n_vars ); + g_signal_emit(d, signal[VARIABLES_DELETED], 0, 0, n_vars ); + } } @@ -431,3 +420,10 @@ psppire_dict_check_name(const PsppireDict *dict, return TRUE; } + + +inline gint +psppire_dict_get_next_value_idx (const PsppireDict *dict) +{ + return dict_get_next_value_idx(dict->dict); +}