First step in making struct variable opaque: the boring mechanical
[pspp-builds.git] / src / ui / gui / psppire-variable.c
index 0b0c24915081d916a84174a0a9626b0b21d6174c..6195a16b2ce1c1b421880a2d9e031d2f426dc684 100644 (file)
@@ -43,7 +43,7 @@ psppire_variable_set_name(struct PsppireVariable *pv, const gchar *text)
   if ( !text) 
     return FALSE;
 
-  if ( 0 == strcmp(pv->v->name, text))
+  if ( 0 == strcmp(var_get_name (pv->v), text))
     return FALSE;
 
   if ( ! psppire_dict_check_name(pv->dict, text, TRUE) )
@@ -64,7 +64,7 @@ psppire_variable_set_columns(struct PsppireVariable *pv, gint columns)
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  pv->v->display_width = columns;
+  var_set_display_width (pv->v, columns);
   
   psppire_dict_var_changed(pv->dict, pv->v->index);
 
@@ -78,8 +78,7 @@ psppire_variable_set_label(struct PsppireVariable *pv, const gchar *label)
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  g_free(pv->v->label);
-  pv->v->label = g_strdup(label);
+  var_set_label (pv->v, label);
 
   psppire_dict_var_changed(pv->dict, pv->v->index);
 
@@ -96,8 +95,7 @@ psppire_variable_set_decimals(struct PsppireVariable *pv, gint decimals)
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  fmt = pv->v->write;
-
+  fmt = *var_get_write_format (pv->v);
   fmt.d = decimals;
 
   return psppire_variable_set_format(pv, &fmt);
@@ -113,21 +111,20 @@ psppire_variable_set_width(struct PsppireVariable *pv, gint width)
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  fmt = pv->v->write;
-
+  fmt = *var_get_write_format (pv->v);
   fmt.w = width;
 
-  if ( pv->v->type == ALPHA ) 
+  if (var_is_alpha (pv->v))
     {
       gint old_var_cnt , new_var_cnt ;
 
-      if ( pv->v->width == 0 ) 
+      if ( var_get_width (pv->v) == 0 ) 
        old_var_cnt = 1;
       else
-       old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING);
+       old_var_cnt = DIV_RND_UP(var_get_width (pv->v), MAX_SHORT_STRING);
       
       new_var_cnt = DIV_RND_UP(width, MAX_SHORT_STRING);
-    pv->v->width = width;
+      pv->v->width = width;
 
       psppire_dict_resize_variable(pv->dict, pv,
                                   old_var_cnt, new_var_cnt);
@@ -146,20 +143,20 @@ psppire_variable_set_type(struct PsppireVariable *pv, int type)
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  pv->v->type = type; 
-
-  if ( pv->v->width == 0 ) 
+  if ( var_get_width (pv->v) ) 
     old_var_cnt = 1;
   else
-    old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING);
+    old_var_cnt = DIV_RND_UP (var_get_width (pv->v), MAX_SHORT_STRING);
 
   if ( type == NUMERIC ) 
     pv->v->width = 0;
+  else if (var_get_width (pv->v))
+    pv->v->width = 1;
 
-  if ( pv->v->width == 0 ) 
+  if ( var_get_width (pv->v) == 0 ) 
     new_var_cnt = 1;
   else
-    new_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING);
+    new_var_cnt = DIV_RND_UP (var_get_width (pv->v), MAX_SHORT_STRING);
 
   psppire_dict_resize_variable(pv->dict, pv,
                               old_var_cnt, new_var_cnt);
@@ -178,11 +175,11 @@ psppire_variable_set_format(struct PsppireVariable *pv, struct fmt_spec *fmt)
 
   msg_disable ();
   if ( fmt_check_output(fmt) 
-       && fmt_check_type_compat (fmt, pv->v->type)
-       && fmt_check_width_compat (fmt, pv->v->width)) 
+       && fmt_check_type_compat (fmt, var_get_type (pv->v))
+       && fmt_check_width_compat (fmt, var_get_width (pv->v))) 
     {
       msg_enable ();
-      pv->v->write = pv->v->print = *fmt;
+      var_set_both_formats (pv->v, fmt);
       psppire_dict_var_changed(pv->dict, pv->v->index);
       return TRUE;
     }
@@ -215,7 +212,7 @@ psppire_variable_set_missing(const struct PsppireVariable *pv,
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  mv_copy(&pv->v->miss, miss);
+  var_set_missing_values (pv->v, miss);
 
   psppire_dict_var_changed(pv->dict, pv->v->index);
   return TRUE;
@@ -227,7 +224,7 @@ psppire_variable_set_write_spec(const struct PsppireVariable *pv, struct fmt_spe
   g_return_val_if_fail(pv, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  pv->v->write = fmt;
+  var_set_write_format (pv->v, &fmt);
 
   psppire_dict_var_changed(pv->dict, pv->v->index);
   return TRUE;
@@ -239,7 +236,7 @@ psppire_variable_set_print_spec(const struct PsppireVariable *pv, struct fmt_spe
   g_return_val_if_fail(pv, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  pv->v->print = fmt;
+  var_set_print_format (pv->v, &fmt);
 
   psppire_dict_var_changed(pv->dict, pv->v->index);
   return TRUE;
@@ -254,7 +251,7 @@ psppire_variable_set_alignment(struct PsppireVariable *pv, gint align)
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  pv->v->alignment = align;
+  var_set_alignment (pv->v, align);
 
   psppire_dict_var_changed(pv->dict, pv->v->index);
   return TRUE;
@@ -268,7 +265,7 @@ psppire_variable_set_measure(struct PsppireVariable *pv, gint measure)
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  pv->v->measure = measure + 1;
+  var_set_measure (pv->v, measure + 1);
 
   psppire_dict_var_changed(pv->dict, pv->v->index);
   return TRUE;
@@ -281,8 +278,7 @@ psppire_variable_get_write_spec(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, NULL);
   g_return_val_if_fail(pv->v, NULL);
 
-
-  return &pv->v->write;
+  return var_get_write_format (pv->v);
 }
 
 
@@ -292,7 +288,7 @@ psppire_variable_get_name(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, NULL);
   g_return_val_if_fail(pv->v, NULL);
 
-  return pv->v->name;
+  return var_get_name (pv->v);
 }
 
 
@@ -302,7 +298,7 @@ psppire_variable_get_columns(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, -1);
   g_return_val_if_fail(pv->v, -1);
 
-  return pv->v->display_width;
+  return var_get_display_width (pv->v);
 }
 
 
@@ -313,7 +309,7 @@ psppire_variable_get_label(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, NULL);
   g_return_val_if_fail(pv->v, NULL);
 
-  return pv->v->label;
+  return var_get_label (pv->v);
 }
 
 
@@ -323,7 +319,7 @@ psppire_variable_get_missing(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, NULL);
   g_return_val_if_fail(pv->v, NULL);
 
-  return &pv->v->miss;
+  return var_get_missing_values (pv->v);
 }
 
 
@@ -343,7 +339,7 @@ psppire_variable_get_alignment(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, -1);
   g_return_val_if_fail(pv->v, -1);
 
-  return pv->v->alignment;
+  return var_get_alignment (pv->v);
 }
 
 
@@ -354,7 +350,7 @@ psppire_variable_get_measure(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, -1);
   g_return_val_if_fail(pv->v, -1);
 
-  return pv->v->measure - 1;
+  return var_get_measure (pv->v) - 1;
 }
 
 gint
@@ -363,7 +359,7 @@ psppire_variable_get_type(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, -1);
   g_return_val_if_fail(pv->v, -1);
 
-  return pv->v->type;
+  return var_get_type (pv->v);
 }
 
 
@@ -373,7 +369,7 @@ psppire_variable_get_width(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, -1);
   g_return_val_if_fail(pv->v, -1);
 
-  return pv->v->width;
+  return var_get_width (pv->v);
 }