Changed a lot of ints to bools.
[pspp-builds.git] / src / data / case.h
index bdb68dc65b55617a463fe0ca6ab10a9892d9327b..df2f03560f3205106e4e60c7daa0d76e31b9c698 100644 (file)
@@ -30,9 +30,6 @@
 struct ccase 
   {
     struct case_data *case_data;        /* Actual data. */
-#if DEBUGGING
-    struct ccase *this;                 /* Detects unauthorized move/copy. */
-#endif
   };
 
 /* Invisible to user code. */
@@ -60,8 +57,8 @@ CASE_INLINE void case_destroy (struct ccase *);
 void case_resize (struct ccase *, size_t old_cnt, size_t new_cnt);
 void case_swap (struct ccase *, struct ccase *);
 
-int case_try_create (struct ccase *, size_t value_cnt);
-int case_try_clone (struct ccase *, const struct ccase *);
+bool case_try_create (struct ccase *, size_t value_cnt);
+bool case_try_clone (struct ccase *, const struct ccase *);
 
 CASE_INLINE void case_copy (struct ccase *dst, size_t dst_idx,
                             const struct ccase *src, size_t src_idx,
@@ -115,8 +112,11 @@ case_clone (struct ccase *clone, const struct ccase *orig)
 static inline void
 case_move (struct ccase *dst, struct ccase *src) 
 {
-  *dst = *src;
-  src->case_data = NULL;
+  if (dst != src) 
+    {
+      *dst = *src;
+      src->case_data = NULL; 
+    }
 }
 
 static inline void
@@ -132,12 +132,14 @@ case_copy (struct ccase *dst, size_t dst_idx,
            const struct ccase *src, size_t src_idx,
            size_t value_cnt) 
 {
-  if (dst->case_data->ref_cnt > 1)
-    case_unshare (dst);
   if (dst->case_data != src->case_data || dst_idx != src_idx) 
-    memmove (dst->case_data->values + dst_idx,
-             src->case_data->values + src_idx,
-             sizeof *dst->case_data->values * value_cnt); 
+    {
+      if (dst->case_data->ref_cnt > 1)
+        case_unshare (dst);
+      memmove (dst->case_data->values + dst_idx,
+               src->case_data->values + src_idx,
+               sizeof *dst->case_data->values * value_cnt); 
+    }
 }
 
 static inline void