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