# HG changeset patch # User jwe # Date 793460011 0 # Node ID 65430ec9a4aa10630fb78b5d57d728331ef243f0 # Parent 32fbe094cc10c49fa2f36378b2674d2615ca3bf9 [project @ 1995-02-22 13:32:29 by jwe] diff -r 32fbe094cc10 -r 65430ec9a4aa liboctave/idx-vector.cc --- a/liboctave/idx-vector.cc Wed Feb 22 13:29:03 1995 +0000 +++ b/liboctave/idx-vector.cc Wed Feb 22 13:33:31 1995 +0000 @@ -54,7 +54,7 @@ min_val = a.min_val; } else - data = (int *) 0; + data = 0; } static inline int @@ -77,7 +77,7 @@ if (nr == 0 || nc == 0) { len = 0; - data = (int *) 0; + data =0; num_zeros = 0; num_ones = 0; one_zero = 0; @@ -128,7 +128,7 @@ } else if (len == 0) { - data = (int *) 0; + data = 0; num_zeros = 0; num_ones = 0; one_zero = 0; @@ -203,16 +203,7 @@ if (one_zero && z_len == len) { - if (num_zeros == len) - { - delete [] data; - len = 0; - data = (int *) 0; - num_zeros = 0; - num_ones = 0; - one_zero = 0; - } - else if (num_ones != len || user_pref.prefer_zero_one_indexing) + if (num_ones != len || user_pref.prefer_zero_one_indexing) convert_one_zero_to_idx (); } else if (min_val < 0) @@ -246,6 +237,7 @@ max_val = 0; min_val = 0; delete [] data; + data = 0; } else { diff -r 32fbe094cc10 -r 65430ec9a4aa src/tc-rep-idx.cc --- a/src/tc-rep-idx.cc Wed Feb 22 13:29:03 1995 +0000 +++ b/src/tc-rep-idx.cc Wed Feb 22 13:33:31 1995 +0000 @@ -556,7 +556,45 @@ int result_size = iv.length (); - if (nc == 1 || (nr != 1 && iv.one_zero_only ())) +// XXX FIXME XXX -- there is way too much duplicate code here... + + if (iv.one_zero_only ()) + { + if (iv.ones_count () == 0) + { + retval = Matrix (); + } + else + { + if (nr == 1) + { + CRMATRIX (m, cm, 1, result_size); + + for (int i = 0; i < result_size; i++) + { + int idx = iv.elem (i); + CRMATRIX_ASSIGN_ELEM (m, cm, 0, i, cop_out [idx], + c_cop_out [idx], real_type); + } + + ASSIGN_CRMATRIX_TO (retval, m, cm); + } + else + { + CRMATRIX (m, cm, result_size, 1); + + for (int i = 0; i < result_size; i++) + { + int idx = iv.elem (i); + CRMATRIX_ASSIGN_ELEM (m, cm, i, 0, cop_out [idx], + c_cop_out [idx], real_type); + } + + ASSIGN_CRMATRIX_TO (retval, m, cm); + } + } + } + else if (nc == 1) { CRMATRIX (m, cm, result_size, 1);