# HG changeset patch # User Jaroslav Hajek # Date 1236763868 -3600 # Node ID d91fa4b20bbbfa35b91a9cbf332e41babfa329fe # Parent 6d3fcbf89267c97f621c1d1e90645c8d27728522 ensure nonnegative char -> real conversion diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/CMatrix.cc --- a/liboctave/CMatrix.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/CMatrix.cc Wed Mar 11 10:31:08 2009 +0100 @@ -312,7 +312,7 @@ { for (octave_idx_type i = 0; i < a.rows (); i++) for (octave_idx_type j = 0; j < a.cols (); j++) - elem (i, j) = a.elem (i, j); + elem (i, j) = static_cast (a.elem (i, j)); } bool diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/CNDArray.cc --- a/liboctave/CNDArray.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/CNDArray.cc Wed Mar 11 10:31:08 2009 +0100 @@ -61,6 +61,14 @@ } #endif +ComplexNDArray::ComplexNDArray (const charNDArray& a) + : MArrayN (a.dims ()) +{ + octave_idx_type n = a.numel (); + for (octave_idx_type i = 0; i < n; i++) + xelem (i) = static_cast (a(i)); +} + #if defined (HAVE_FFTW3) ComplexNDArray ComplexNDArray::fourier (int dim) const diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/CNDArray.h --- a/liboctave/CNDArray.h Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/CNDArray.h Wed Mar 11 10:31:08 2009 +0100 @@ -52,6 +52,8 @@ template ComplexNDArray (const ArrayN& a) : MArrayN (a) { } + ComplexNDArray (const charNDArray&); + ComplexNDArray& operator = (const ComplexNDArray& a) { MArrayN::operator = (a); diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/ChangeLog Wed Mar 11 10:31:08 2009 +0100 @@ -1,3 +1,30 @@ +2009-03-11 Jaroslav Hajek + + * dNDArray.cc (NDArray::NDArray (const charNDArray&)): New + constructor. + * fNDArray.cc (FloatNDArray::FloatNDArray (const charNDArray&)): + Ditto. + * CNDArray.cc (ComplexNDArray::ComplexNDArray (const charNDArray&)): + Ditto. + * fCNDArray.cc (FloatComplexNDArray::FloatComplexNDArray + (const charNDArray&)): Ditto. + + * dNDArray.h (NDArray::NDArray (const charNDArray&)): Declare. + * fNDArray.h (FloatNDArray::FloatNDArray (const charNDArray&)): + Ditto. + * CNDArray.h (ComplexNDArray::ComplexNDArray (const charNDArray&)): + Ditto. + * fCNDArray.h (FloatComplexNDArray::FloatComplexNDArray + (const charNDArray&)): Ditto. + + * dMatrix.cc (Matrix::Matrix (const charMatrix&)): Cast to unsigned + chars. + * fMatrix.cc (FloatMatrix::FloatMatrix (const charMatrix&)): Likewise. + * CMatrix.cc (ComplexMatrix::ComplexMatrix (const charMatrix&)): + Likewise. + * fCMatrix.cc (FloatComplexMatrix::FloatComplexMatrix + (const charMatrix&)): Likewise. + 2009-03-10 Jason Riedy * sparse-base-lu.cc (Pc_vec): The column permutation should be diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/dMatrix.cc --- a/liboctave/dMatrix.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/dMatrix.cc Wed Mar 11 10:31:08 2009 +0100 @@ -275,7 +275,7 @@ { for (octave_idx_type i = 0; i < a.rows (); i++) for (octave_idx_type j = 0; j < a.cols (); j++) - elem (i, j) = a.elem (i, j); + elem (i, j) = static_cast (a.elem (i, j)); } bool diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/dNDArray.cc --- a/liboctave/dNDArray.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/dNDArray.cc Wed Mar 11 10:31:08 2009 +0100 @@ -87,6 +87,14 @@ } } +NDArray::NDArray (const charNDArray& a) + : MArrayN (a.dims ()) +{ + octave_idx_type n = a.numel (); + for (octave_idx_type i = 0; i < n; i++) + xelem (i) = static_cast (a(i)); +} + #if defined (HAVE_FFTW3) ComplexNDArray diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/dNDArray.h --- a/liboctave/dNDArray.h Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/dNDArray.h Wed Mar 11 10:31:08 2009 +0100 @@ -60,6 +60,8 @@ template explicit NDArray (const intNDArray& a) : MArrayN (a) { } + NDArray (const charNDArray&); + NDArray& operator = (const NDArray& a) { MArrayN::operator = (a); diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/fCMatrix.cc --- a/liboctave/fCMatrix.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/fCMatrix.cc Wed Mar 11 10:31:08 2009 +0100 @@ -306,7 +306,7 @@ { for (octave_idx_type i = 0; i < a.rows (); i++) for (octave_idx_type j = 0; j < a.cols (); j++) - elem (i, j) = a.elem (i, j); + elem (i, j) = static_cast (a.elem (i, j)); } bool diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/fCNDArray.cc --- a/liboctave/fCNDArray.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/fCNDArray.cc Wed Mar 11 10:31:08 2009 +0100 @@ -56,6 +56,14 @@ } #endif +FloatComplexNDArray::FloatComplexNDArray (const charNDArray& a) + : MArrayN (a.dims ()) +{ + octave_idx_type n = a.numel (); + for (octave_idx_type i = 0; i < n; i++) + xelem (i) = static_cast (a(i)); +} + #if defined (HAVE_FFTW3) FloatComplexNDArray FloatComplexNDArray::fourier (int dim) const diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/fCNDArray.h --- a/liboctave/fCNDArray.h Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/fCNDArray.h Wed Mar 11 10:31:08 2009 +0100 @@ -52,6 +52,8 @@ template FloatComplexNDArray (const ArrayN& a) : MArrayN (a) { } + FloatComplexNDArray (const charNDArray&); + FloatComplexNDArray& operator = (const FloatComplexNDArray& a) { MArrayN::operator = (a); diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/fMatrix.cc --- a/liboctave/fMatrix.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/fMatrix.cc Wed Mar 11 10:31:08 2009 +0100 @@ -274,7 +274,7 @@ { for (octave_idx_type i = 0; i < a.rows (); i++) for (octave_idx_type j = 0; j < a.cols (); j++) - elem (i, j) = a.elem (i, j); + elem (i, j) = static_cast (a.elem (i, j)); } bool diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/fNDArray.cc --- a/liboctave/fNDArray.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/fNDArray.cc Wed Mar 11 10:31:08 2009 +0100 @@ -41,6 +41,14 @@ #include "oct-locbuf.h" #include "mx-op-defs.h" +FloatNDArray::FloatNDArray (const charNDArray& a) + : MArrayN (a.dims ()) +{ + octave_idx_type n = a.numel (); + for (octave_idx_type i = 0; i < n; i++) + xelem (i) = static_cast (a(i)); +} + #if defined (HAVE_FFTW3) #include "oct-fftw.h" diff -r 6d3fcbf89267 -r d91fa4b20bbb liboctave/fNDArray.h --- a/liboctave/fNDArray.h Tue Mar 10 21:54:39 2009 -0400 +++ b/liboctave/fNDArray.h Wed Mar 11 10:31:08 2009 +0100 @@ -57,6 +57,8 @@ template explicit FloatNDArray (const intNDArray& a) : MArrayN (a) { } + FloatNDArray (const charNDArray&); + FloatNDArray& operator = (const FloatNDArray& a) { MArrayN::operator = (a); diff -r 6d3fcbf89267 -r d91fa4b20bbb src/ChangeLog --- a/src/ChangeLog Tue Mar 10 21:54:39 2009 -0400 +++ b/src/ChangeLog Wed Mar 11 10:31:08 2009 +0100 @@ -1,3 +1,9 @@ +2009-03-11 Jaroslav Hajek + + * ov-ch-mat.cc (octave_char_matrix::double_value, + octave_char_matrix::float_value, octave_char_matrix::complex_value, + octave_char_matrix::float_complex_value): Cast to unsigned char. + 2009-03-10 Jason Riedy * DLD-FUNCTIONS/find.cc (find_nonzero_elem_idx): New override diff -r 6d3fcbf89267 -r d91fa4b20bbb src/ov-ch-mat.cc --- a/src/ov-ch-mat.cc Tue Mar 10 21:54:39 2009 -0400 +++ b/src/ov-ch-mat.cc Wed Mar 11 10:31:08 2009 +0100 @@ -64,7 +64,7 @@ gripe_implicit_conversion ("Octave:array-as-scalar", "character matrix", "real scalar"); - retval = matrix (0, 0); + retval = static_cast (matrix (0, 0)); } else gripe_invalid_conversion ("character matrix", "real scalar"); @@ -82,7 +82,7 @@ gripe_implicit_conversion ("Octave:array-as-scalar", "character matrix", "real scalar"); - retval = matrix (0, 0); + retval = static_cast (matrix (0, 0)); } else gripe_invalid_conversion ("character matrix", "real scalar"); @@ -102,7 +102,7 @@ gripe_implicit_conversion ("Octave:array-as-scalar", "character matrix", "complex scalar"); - retval = matrix (0, 0); + retval = static_cast (matrix (0, 0)); } else gripe_invalid_conversion ("character matrix", "complex scalar"); @@ -122,7 +122,7 @@ gripe_implicit_conversion ("Octave:array-as-scalar", "character matrix", "complex scalar"); - retval = matrix (0, 0); + retval = static_cast (matrix (0, 0)); } else gripe_invalid_conversion ("character matrix", "complex scalar");