Mercurial > hg > octave-nkf
changeset 4514:8373b9b41eee
[project @ 2003-09-19 21:47:10 by jwe]
author | jwe |
---|---|
date | Fri, 19 Sep 2003 21:47:10 +0000 |
parents | 508238e65af7 |
children | 228d2d5b6d66 |
files | liboctave/CNDArray.cc liboctave/CNDArray.h liboctave/ChangeLog liboctave/boolNDArray.cc liboctave/boolNDArray.h liboctave/chNDArray.cc liboctave/chNDArray.h |
diffstat | 7 files changed, 597 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/liboctave/CNDArray.cc @@ -0,0 +1,103 @@ +// N-D Array manipulations. +/* + +Copyright (C) 1996, 1997 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION) +#pragma implementation +#endif + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "CNDArray.h" +#include "mx-base.h" +#include "lo-ieee.h" + +// XXX FIXME XXX -- this is not quite the right thing. + +boolMatrix +ComplexNDArray::all (int dim) const +{ + boolMatrix retval; + + if (dimensions.length () == 2) + { + ComplexMatrix tmp = matrix_value (); + retval = tmp.all (dim); + } + else + (*current_liboctave_error_handler) + ("all is not yet implemented for N-d Arrays"); + + return retval; +} + +boolMatrix +ComplexNDArray::any (int dim) const +{ + boolMatrix retval; + + if (dimensions.length () == 2) + { + ComplexMatrix tmp = matrix_value (); + retval = tmp.any (dim); + } + else + (*current_liboctave_error_handler) + ("any is not yet implemented for N-d Arrays"); + + return retval; +} + +ComplexMatrix +ComplexNDArray::matrix_value (void) const +{ + ComplexMatrix retval; + + int nd = ndims (); + + switch (nd) + { + case 1: + retval = ComplexMatrix (Array2<Complex> (*this, dimensions(0), 1)); + break; + + case 2: + retval = ComplexMatrix (Array2<Complex> (*this, dimensions(0), + dimensions(1))); + break; + + default: + (*current_liboctave_error_handler) + ("invalid converstion of ComplexNDArray to ComplexMatrix"); + break; + } + + return retval; +} + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/
new file mode 100644 --- /dev/null +++ b/liboctave/CNDArray.h @@ -0,0 +1,96 @@ +/* + +Copyright (C) 2003 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if !defined (octave_ComplexNDArray_h) +#define octave_ComplexNDArray_h 1 + +#if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION) +#pragma interface +#endif + +#include "MArrayN.h" +#include "CMatrix.h" + +#include "mx-defs.h" +#include "mx-op-defs.h" + +#include "data-conv.h" +#include "mach-info.h" + +class +ComplexNDArray : public MArrayN<Complex> +{ +public: + + ComplexNDArray (void) : MArrayN<Complex> () { } + + ComplexNDArray (dim_vector& dims) : MArrayN<Complex> (dims) { } + + ComplexNDArray (dim_vector& dims, const Complex& val) + : MArrayN<Complex> (dims, val) { } + + ComplexNDArray (const ComplexNDArray& a) : MArrayN<Complex> (a) { } + + ComplexNDArray (const ComplexMatrix& a) : MArrayN<Complex> (a) { } + + ComplexNDArray (const MArrayN<Complex>& a) : MArrayN<Complex> (a) { } + + ComplexNDArray (const ArrayN<Complex>& a) : MArrayN<Complex> (a) { } + + ComplexNDArray& operator = (const ComplexNDArray& a) + { + MArrayN<Complex>::operator = (a); + return *this; + } + + // XXX FIXME XXX -- this is not quite the right thing. + + boolMatrix all (int dim = -1) const; + boolMatrix any (int dim = -1) const; + + ComplexMatrix matrix_value (void) const; + + // i/o + + // friend std::ostream& operator << (std::ostream& os, const NDArray& a); + // friend std::istream& operator >> (std::istream& is, NDArray& a); + + static Complex resize_fill_value (void) { return Complex (0.0, 0.0); } + + // bool all_elements_are_real (void) const; + // bool all_integers (double& max_val, double& min_val) const; + +private: + + ComplexNDArray (Complex *d, dim_vector& dims) + : MArrayN<Complex> (d, dims) { } +}; + +MARRAY_FORWARD_DEFS (MArrayN, ComplexNDArray, Complex) + +#endif + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/
--- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,5 +1,7 @@ 2003-09-19 John W. Eaton <jwe@bevo.che.wisc.edu> + * chNDArray.h, chNDArray.cc, boolNDArray.h, boolNDArray.cc: New files. + * Array.h, Array-idx.h, Array.cc: Fold all N-d functionality here. Turn inheritance hierarchy upside down (2-d and 3-d arrays are now just special cases of the general purpose N-d Array object).
new file mode 100644 --- /dev/null +++ b/liboctave/boolNDArray.cc @@ -0,0 +1,103 @@ +// N-D Array manipulations. +/* + +Copyright (C) 1996, 1997 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION) +#pragma implementation +#endif + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "CNDArray.h" +#include "mx-base.h" +#include "lo-ieee.h" + +// XXX FIXME XXX -- this is not quite the right thing. + +boolMatrix +boolNDArray::all (int dim) const +{ + boolMatrix retval; + + if (dimensions.length () == 2) + { + boolMatrix tmp = matrix_value (); + retval = tmp.all (dim); + } + else + (*current_liboctave_error_handler) + ("all is not yet implemented for N-d Arrays"); + + return retval; +} + +boolMatrix +boolNDArray::any (int dim) const +{ + boolMatrix retval; + + if (dimensions.length () == 2) + { + boolMatrix tmp = matrix_value (); + retval = tmp.any (dim); + } + else + (*current_liboctave_error_handler) + ("any is not yet implemented for N-d Arrays"); + + return retval; +} + +boolMatrix +boolNDArray::matrix_value (void) const +{ + boolMatrix retval; + + int nd = ndims (); + + switch (nd) + { + case 1: + retval = boolMatrix (Array2<bool> (*this, dimensions(0), 1)); + break; + + case 2: + retval = boolMatrix (Array2<bool> (*this, dimensions(0), + dimensions(1))); + break; + + default: + (*current_liboctave_error_handler) + ("invalid converstion of boolNDArray to boolMatrix"); + break; + } + + return retval; +} + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/
new file mode 100644 --- /dev/null +++ b/liboctave/boolNDArray.h @@ -0,0 +1,93 @@ +/* + +Copyright (C) 2003 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if !defined (octave_boolNDArray_h) +#define octave_boolNDArray_h 1 + +#if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION) +#pragma interface +#endif + +#include "ArrayN.h" +#include "CMatrix.h" + +#include "mx-defs.h" +#include "mx-op-defs.h" + +#include "data-conv.h" +#include "mach-info.h" + +class +boolNDArray : public ArrayN<bool> +{ +public: + + boolNDArray (void) : ArrayN<bool> () { } + + boolNDArray (dim_vector& dims) : ArrayN<bool> (dims) { } + + boolNDArray (dim_vector& dims, const bool& val) + : ArrayN<bool> (dims, val) { } + + boolNDArray (const boolNDArray& a) : ArrayN<bool> (a) { } + + boolNDArray (const boolMatrix& a) : ArrayN<bool> (a) { } + + boolNDArray (const Array2<bool>& a) : ArrayN<bool> (a) { } + + boolNDArray (const ArrayN<bool>& a) : ArrayN<bool> (a) { } + + boolNDArray& operator = (const boolNDArray& a) + { + ArrayN<bool>::operator = (a); + return *this; + } + + // XXX FIXME XXX -- this is not quite the right thing. + + boolMatrix all (int dim = -1) const; + boolMatrix any (int dim = -1) const; + + boolMatrix matrix_value (void) const; + + // i/o + + // friend std::ostream& operator << (std::ostream& os, const NDArray& a); + // friend std::istream& operator >> (std::istream& is, NDArray& a); + + static bool resize_fill_value (void) { return false; } + + // bool all_elements_are_real (void) const; + // bool all_integers (double& max_val, double& min_val) const; + +private: + + boolNDArray (bool *d, dim_vector& dims) : ArrayN<bool> (d, dims) { } +}; + +#endif + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/
new file mode 100644 --- /dev/null +++ b/liboctave/chNDArray.cc @@ -0,0 +1,103 @@ +// N-D Array manipulations. +/* + +Copyright (C) 2003 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION) +#pragma implementation +#endif + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "chNDArray.h" +#include "mx-base.h" +#include "lo-ieee.h" + +// XXX FIXME XXX -- this is not quite the right thing. + +boolMatrix +charNDArray::all (int dim) const +{ + boolMatrix retval; + + if (dimensions.length () == 2) + { + charMatrix tmp = matrix_value (); + retval = tmp.all (dim); + } + else + (*current_liboctave_error_handler) + ("all is not yet implemented for N-d Arrays"); + + return retval; +} + +boolMatrix +charNDArray::any (int dim) const +{ + boolMatrix retval; + + if (dimensions.length () == 2) + { + charMatrix tmp = matrix_value (); + retval = tmp.any (dim); + } + else + (*current_liboctave_error_handler) + ("any is not yet implemented for N-d Arrays"); + + return retval; +} + +charMatrix +charNDArray::matrix_value (void) const +{ + charMatrix retval; + + int nd = ndims (); + + switch (nd) + { + case 1: + retval = charMatrix (Array2<char> (*this, dimensions(0), 1)); + break; + + case 2: + retval = charMatrix (Array2<char> (*this, dimensions(0), + dimensions(1))); + break; + + default: + (*current_liboctave_error_handler) + ("invalid converstion of charNDArray to charMatrix"); + break; + } + + return retval; +} + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/
new file mode 100644 --- /dev/null +++ b/liboctave/chNDArray.h @@ -0,0 +1,97 @@ +/* + +Copyright (C) 2003 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if !defined (octave_charNDArray_h) +#define octave_charNDArray_h 1 + +#if defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION) +#pragma interface +#endif + +#include "MArrayN.h" +#include "chMatrix.h" + +#include "mx-defs.h" +#include "mx-op-defs.h" + +#include "data-conv.h" +#include "mach-info.h" + +class +charNDArray : public MArrayN<char> +{ +public: + + charNDArray (void) : MArrayN<char> () { } + + charNDArray (dim_vector& dims) : MArrayN<char> (dims) { } + + charNDArray (dim_vector& dims, char val) : MArrayN<char> (dims, val) { } + + charNDArray (const charNDArray& a) : MArrayN<char> (a) { } + + charNDArray (const charMatrix& a) : MArrayN<char> (a) { } + + charNDArray (char c) : MArrayN<char> (charMatrix (c)) { } + + charNDArray (const char *s) : MArrayN<char> (charMatrix (s)) { } + + charNDArray (const std::string& s) : MArrayN<char> (charMatrix (s)) { } + + charNDArray (const string_vector& s) : MArrayN<char> (charMatrix (s)) { } + + charNDArray (const ArrayN<char>& a) : MArrayN<char> (a) { } + + charNDArray& operator = (const charNDArray& a) + { + MArrayN<char>::operator = (a); + return *this; + } + + // XXX FIXME XXX -- this is not quite the right thing. + + boolMatrix all (int dim = -1) const; + boolMatrix any (int dim = -1) const; + + charMatrix matrix_value (void) const; + + // i/o + + // friend std::ostream& operator << (std::ostream& os, const charNDArray& a); + // friend std::istream& operator >> (std::istream& is, charNDArray& a); + + static char resize_fill_value (void) { return '\0'; } + +private: + + charNDArray (char *d, dim_vector& dims) : MArrayN<char> (d, dims) { } +}; + +MARRAY_FORWARD_DEFS (MArrayN, charNDArray, char) + +#endif + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/