pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] Changes to pspp/src/missing-values.c


From: John Darrington
Subject: [Pspp-cvs] Changes to pspp/src/missing-values.c
Date: Fri, 02 Dec 2005 18:58:19 -0500

Index: pspp/src/missing-values.c
diff -u pspp/src/missing-values.c:1.3 pspp/src/missing-values.c:1.4
--- pspp/src/missing-values.c:1.3       Sat Oct 29 23:35:55 2005
+++ pspp/src/missing-values.c   Fri Dec  2 23:58:18 2005
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include "str.h"
 
+
 /* Initializes MV as a set of missing values for a variable of
    the given WIDTH.  Although only numeric variables and short
    string variables may have missing values, WIDTH may be any
@@ -35,10 +36,19 @@
   mv->width = width;
 }
 
+void 
+mv_set_type(struct missing_values *mv, enum mv_type type)
+{
+  mv->type = type;
+}
+
+
 /* Copies SRC to MV. */
 void
 mv_copy (struct missing_values *mv, const struct missing_values *src) 
 {
+  assert(src);
+
   *mv = *src;
 }
 
@@ -135,7 +145,7 @@
 /* Returns true if MV contains an individual value,
    false if MV is empty (or contains only a range). */
 bool
-mv_has_value (struct missing_values *mv)
+mv_has_value (const struct missing_values *mv)
 {
   switch (mv->type) 
     {
@@ -163,10 +173,44 @@
   *v = mv->values[mv->type & 3];
 }
 
+/* Stores  a value  in *V.
+   MV must contain an individual value (as determined by
+   mv_has_value()). 
+   IDX is the zero based index of the value to get
+*/
+void
+mv_peek_value (const struct missing_values *mv, union value *v, int idx) 
+{
+  assert (idx >= 0 ) ;
+  assert (idx < 3);
+
+  assert (mv_has_value (mv));
+  *v = mv->values[idx];
+}
+
+void 
+mv_replace_value (struct missing_values *mv, const union value *v, int idx)
+{
+  assert (idx >= 0) ;
+  assert (idx < mv_n_values(mv));
+
+  mv->values[idx] = *v;
+}
+
+
+
+int  
+mv_n_values (const struct missing_values *mv)
+{
+  assert(mv_has_value(mv));
+  return mv->type & 3;
+}
+
+
 /* Returns true if MV contains a numeric range,
    false if MV is empty (or contains only individual values). */
 bool
-mv_has_range (struct missing_values *mv) 
+mv_has_range (const struct missing_values *mv) 
 {
   switch (mv->type) 
     {
@@ -194,6 +238,19 @@
   *high = mv->values[2].f;
   mv->type &= 3;
 }
+
+
+/* Returns the numeric range from MV  into *LOW and
+   *HIGH.  MV must contain a individual range (as determined by
+   mv_has_range()). */
+void
+mv_peek_range (const struct missing_values *mv, double *low, double *high) 
+{
+  assert (mv_has_range (mv));
+  *low = mv->values[1].f;
+  *high = mv->values[2].f;
+}
+
 
 /* Returns true if values[IDX] is in use when the `type' member
    is set to TYPE (in struct missing_values),




reply via email to

[Prev in Thread] Current Thread [Next in Thread]