changelog shortlog tags changeset file revisions annotate raw

liboctave/idx-vector.cc

revision 7572: 85da2ab0c6fd
parent 7425:fe4a43e1d1d3
child 7573:755bf7ecc29b
       1--- a/liboctave/idx-vector.cc	Mon Jan 28 09:13:01 2008 +0000
       2+++ b/liboctave/idx-vector.cc	Fri Mar 07 20:17:54 2008 -0500
       3@@ -249,41 +249,51 @@
       4 }
       5 
       6 IDX_VEC_REP::idx_vector_rep (bool b)
       7-  : data (0), len (1), num_zeros (0), num_ones (0), range_base (0),
       8+  : data (0), len (b ? 1 : 0), num_zeros (0), num_ones (0), range_base (0),
       9     range_step (0), max_val (0), min_val (0), count (1),
      10     frozen_at_z_len (0), frozen_len (0), colon (0), range(0),
      11-    one_zero (1), initialized (0), frozen (0), colon_equiv_checked (0),
      12-    colon_equiv (0), orig_dims (1, 1)
      13+    one_zero (0), initialized (0), frozen (0), colon_equiv_checked (0),
      14+    colon_equiv (0), orig_dims (len, len)
      15 {
      16-  data = new octave_idx_type [len];
      17-
      18-  data[0] = tree_to_mat_idx (b);
      19-
      20-  init_state ();
      21+  if (len == 0)
      22+    initialized = 1;
      23+  else
      24+    {
      25+      data = new octave_idx_type [len];
      26+      data[0] = 0;
      27+      init_state ();
      28+    }
      29 }
      30 
      31 IDX_VEC_REP::idx_vector_rep (const boolNDArray& bnda)
      32-  : data (0), len (bnda.length ()), num_zeros (0), num_ones (0),
      33+  : data (0), len (bnda.nnz ()), num_zeros (0), num_ones (0),
      34     range_base (0), range_step (0), max_val (0), min_val (0),
      35     count (1), frozen_at_z_len (0), frozen_len (0), colon (0),
      36-    range(0), one_zero (1), initialized (0), frozen (0),
      37-    colon_equiv_checked (0), colon_equiv (0), orig_dims (bnda.dims ())
      38+    range(0), one_zero (0), initialized (0), frozen (0),
      39+    colon_equiv_checked (0), colon_equiv (0), orig_dims ()
      40 {
      41   if (len == 0)
      42     {
      43+      orig_dims = dim_vector (0, 0);
      44       initialized = 1;
      45-      return;
      46     }
      47   else
      48     {
      49-      octave_idx_type k = 0;
      50       data = new octave_idx_type [len];
      51 
      52-      for (octave_idx_type i = 0; i < len; i++)
      53-	data[k++] = tree_to_mat_idx (bnda.elem (i));
      54+      octave_idx_type ntot = bnda.length ();
      55+
      56+      for (octave_idx_type i = 0, k = 0; i < ntot; i++, k < len)
      57+	if (bnda.elem (i))
      58+	  data[k++] = i;
      59+
      60+      dim_vector dv = bnda.dims ();
      61+
      62+      orig_dims = ((dv.length () == 2 && dv(0) == 1)
      63+		   ? dim_vector (1, len) : orig_dims = dim_vector (len, 1));
      64+
      65+      init_state ();
      66     }
      67-
      68-  init_state ();
      69 }
      70 
      71 IDX_VEC_REP&
      72@@ -600,8 +610,6 @@
      73 	frozen_len = 0;
      74       else
      75 	{
      76-	  maybe_convert_one_zero_to_idx (z_len);
      77-
      78 	  max_val = max ();
      79 	  min_val = min ();
      80