Mercurial > octave
diff liboctave/numeric/oct-convn.h @ 29876:89bdb44db76f
move liboctave convn functions inside octave namespace
* oct-convn.h (convn, convn_type): Move inside octave namespace. Also
preserve global convn_type enum. Provide deprecated wrappers for old
names. Change uses where needed.
(convert_enum): New function.
* oct-convn.cc: Move templates and all functions inside octave
namespace.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 14 Jul 2021 00:18:49 -0400 |
parents | 9f7132a05682 |
children | 4c88a452519c |
line wrap: on
line diff
--- a/liboctave/numeric/oct-convn.h Tue Jul 13 23:14:33 2021 -0400 +++ b/liboctave/numeric/oct-convn.h Wed Jul 14 00:18:49 2021 -0400 @@ -48,85 +48,277 @@ class FloatComplexMatrix; class FloatComplexNDArray; +// The remaining includes can be removed when the global enum +// declaration, the convert_enum function, and the deprecated functions +// at the end of this file are removed. + +#include <cstdlib> +#include "dMatrix.h" +#include "dNDArray.h" +#include "CMatrix.h" +#include "CNDArray.h" +#include "fMatrix.h" +#include "fNDArray.h" +#include "fCMatrix.h" +#include "fCNDArray.h" + +// FIXME: Is there any sane way to move a global enum to a namespace and +// tag the global one as deprecated when it is used as a parameter in +// public functions that also need to be tagged as deprecated? + enum convn_type + { + convn_full, + convn_same, + convn_valid + }; + +namespace octave { - convn_full, - convn_same, - convn_valid -}; + enum convn_type + { + convn_full, + convn_same, + convn_valid + }; + + // double real X double real + + extern OCTAVE_API NDArray + convn (const NDArray& a, const NDArray& b, convn_type ct); + + extern OCTAVE_API Matrix + convn (const Matrix& a, const Matrix& b, convn_type ct); + + extern OCTAVE_API Matrix + convn (const Matrix& a, const ColumnVector& c, const RowVector& r, + convn_type ct); + + // double complex X double real -// double real X double real + extern OCTAVE_API ComplexNDArray + convn (const ComplexNDArray& a, const NDArray& b, convn_type ct); + + extern OCTAVE_API ComplexMatrix + convn (const ComplexMatrix& a, const Matrix& b, convn_type ct); + + extern OCTAVE_API ComplexMatrix + convn (const ComplexMatrix& a, const ColumnVector& c, const RowVector& r, + convn_type ct); + + // double complex X double complex + + extern OCTAVE_API ComplexNDArray + convn (const ComplexNDArray& a, const ComplexNDArray& b, convn_type ct); + + extern OCTAVE_API ComplexMatrix + convn (const ComplexMatrix& a, const ComplexMatrix& b, convn_type ct); + + extern OCTAVE_API ComplexMatrix + convn (const ComplexMatrix& a, const ComplexColumnVector& c, + const ComplexRowVector& r, convn_type ct); + + // float real X float real -extern OCTAVE_API NDArray -convn (const NDArray& a, const NDArray& b, convn_type ct); + extern OCTAVE_API FloatNDArray + convn (const FloatNDArray& a, const FloatNDArray& b, convn_type ct); + + extern OCTAVE_API FloatMatrix + convn (const FloatMatrix& a, const FloatMatrix& b, convn_type ct); + + extern OCTAVE_API FloatMatrix + convn (const FloatMatrix& a, const FloatColumnVector& c, + const FloatRowVector& r, convn_type ct); + + // float complex X float real + + extern OCTAVE_API FloatComplexNDArray + convn (const FloatComplexNDArray& a, const FloatNDArray& b, convn_type ct); + + extern OCTAVE_API FloatComplexMatrix + convn (const FloatComplexMatrix& a, const FloatMatrix& b, convn_type ct); + + extern OCTAVE_API FloatComplexMatrix + convn (const FloatComplexMatrix& a, const FloatColumnVector& c, + const FloatRowVector& r, convn_type ct); + + // float complex X float complex + + extern OCTAVE_API FloatComplexNDArray + convn (const FloatComplexNDArray& a, const FloatComplexNDArray& b, + convn_type ct); + + extern OCTAVE_API FloatComplexMatrix + convn (const FloatComplexMatrix& a, const FloatComplexMatrix& b, + convn_type ct); + + extern OCTAVE_API FloatComplexMatrix + convn (const FloatComplexMatrix& a, const FloatComplexColumnVector& c, + const FloatComplexRowVector& r, convn_type ct); -extern OCTAVE_API Matrix -convn (const Matrix& a, const Matrix& b, convn_type ct); + convn_type convert_enum (::convn_type ct) + { + switch (ct) + { + case ::convn_full: + return convn_full; + + case ::convn_same: + return convn_same; + + case ::convn_valid: + return convn_valid; + + default: + abort (); + } + } +} -extern OCTAVE_API Matrix +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline NDArray +convn (const NDArray& a, const NDArray& b, convn_type ct) +{ + return octave::convn (a, b, static_cast<octave::convn_type> (ct)); +} + +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline Matrix +convn (const Matrix& a, const Matrix& b, convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} + +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline Matrix convn (const Matrix& a, const ColumnVector& c, const RowVector& r, - convn_type ct); + convn_type ct) +{ + return octave::convn (a, c, r, octave::convert_enum (ct)); +} // double complex X double real -extern OCTAVE_API ComplexNDArray -convn (const ComplexNDArray& a, const NDArray& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline ComplexNDArray +convn (const ComplexNDArray& a, const NDArray& b, convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API ComplexMatrix -convn (const ComplexMatrix& a, const Matrix& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline ComplexMatrix +convn (const ComplexMatrix& a, const Matrix& b, convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API ComplexMatrix +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline ComplexMatrix convn (const ComplexMatrix& a, const ColumnVector& c, const RowVector& r, - convn_type ct); + convn_type ct) +{ + return octave::convn (a, c, r, octave::convert_enum (ct)); +} // double complex X double complex -extern OCTAVE_API ComplexNDArray -convn (const ComplexNDArray& a, const ComplexNDArray& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline ComplexNDArray +convn (const ComplexNDArray& a, const ComplexNDArray& b, convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API ComplexMatrix -convn (const ComplexMatrix& a, const ComplexMatrix& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline ComplexMatrix +convn (const ComplexMatrix& a, const ComplexMatrix& b, convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API ComplexMatrix +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline ComplexMatrix convn (const ComplexMatrix& a, const ComplexColumnVector& c, - const ComplexRowVector& r, convn_type ct); + const ComplexRowVector& r, convn_type ct) +{ + return octave::convn (a, c, r, octave::convert_enum (ct)); +} // float real X float real -extern OCTAVE_API FloatNDArray -convn (const FloatNDArray& a, const FloatNDArray& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatNDArray +convn (const FloatNDArray& a, const FloatNDArray& b, convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API FloatMatrix -convn (const FloatMatrix& a, const FloatMatrix& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatMatrix +convn (const FloatMatrix& a, const FloatMatrix& b, convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API FloatMatrix +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatMatrix convn (const FloatMatrix& a, const FloatColumnVector& c, - const FloatRowVector& r, convn_type ct); + const FloatRowVector& r, convn_type ct) +{ + return octave::convn (a, c, r, octave::convert_enum (ct)); +} // float complex X float real -extern OCTAVE_API FloatComplexNDArray -convn (const FloatComplexNDArray& a, const FloatNDArray& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatComplexNDArray +convn (const FloatComplexNDArray& a, const FloatNDArray& b, + convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API FloatComplexMatrix -convn (const FloatComplexMatrix& a, const FloatMatrix& b, convn_type ct); +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatComplexMatrix +convn (const FloatComplexMatrix& a, const FloatMatrix& b, + convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API FloatComplexMatrix +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatComplexMatrix convn (const FloatComplexMatrix& a, const FloatColumnVector& c, - const FloatRowVector& r, convn_type ct); + const FloatRowVector& r, convn_type ct) +{ + return octave::convn (a, c, r, octave::convert_enum (ct)); +} // float complex X float complex -extern OCTAVE_API FloatComplexNDArray +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatComplexNDArray convn (const FloatComplexNDArray& a, const FloatComplexNDArray& b, - convn_type ct); + convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API FloatComplexMatrix +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatComplexMatrix convn (const FloatComplexMatrix& a, const FloatComplexMatrix& b, - convn_type ct); + convn_type ct) +{ + return octave::convn (a, b, octave::convert_enum (ct)); +} -extern OCTAVE_API FloatComplexMatrix +OCTAVE_DEPRECATED (7, "use 'octave::convn' instead") +inline FloatComplexMatrix convn (const FloatComplexMatrix& a, const FloatComplexColumnVector& c, - const FloatComplexRowVector& r, convn_type ct); + const FloatComplexRowVector& r, convn_type ct) +{ + return octave::convn (a, c, r, octave::convert_enum (ct)); +} #endif