changeset 33342:c2dbaa9dca4f

Use correct attributes for overridable functions. * ov-base-mat.h, ov-base-scalar.h, ov-base-int.h: Use correct attributes for overridable member functions of class templates "octave_base_matrix", "octave_base_scalar", and "octave_base_int".
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 06 Apr 2024 18:04:59 +0200
parents 8e6e656b6f61
children eb8a24370c2b
files libinterp/octave-value/ov-base-int.h libinterp/octave-value/ov-base-mat.h libinterp/octave-value/ov-base-scalar.h
diffstat 3 files changed, 117 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/octave-value/ov-base-int.h	Fri Apr 05 17:18:42 2024 -0700
+++ b/libinterp/octave-value/ov-base-int.h	Sat Apr 06 18:04:59 2024 +0200
@@ -72,7 +72,7 @@
 
   OCTINTERP_API octave_base_value * try_narrowing_conversion ();
 
-  OCTINTERP_API bool isreal () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool isreal () const { return true; }
 
   //  void increment () { matrix += 1; }
 
@@ -137,25 +137,31 @@
 {
 public:
 
-  OCTINTERP_API octave_base_int_scalar () : octave_base_scalar<T> () { }
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  octave_base_int_scalar () : octave_base_scalar<T> () { }
 
-  OCTINTERP_API octave_base_int_scalar (const T& s) : octave_base_scalar<T> (s) { }
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  octave_base_int_scalar (const T& s) : octave_base_scalar<T> (s) { }
 
-  OCTINTERP_API ~octave_base_int_scalar () = default;
+  OCTINTERP_OVERRIDABLE_FUNC_API ~octave_base_int_scalar () = default;
 
-  OCTINTERP_API octave_base_value * clone () const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_base_value * clone () const
   { return new octave_base_int_scalar (*this); }
-  OCTINTERP_API octave_base_value * empty_clone () const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_base_value * empty_clone () const
   { return new octave_base_int_scalar (); }
 
-  OCTINTERP_API octave_base_value * try_narrowing_conversion ()
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_base_value *
+  try_narrowing_conversion ()
   { return nullptr; }
 
-  OCTINTERP_API bool is_maybe_function () const { return false; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool is_maybe_function () const
+  { return false; }
 
-  OCTINTERP_API bool isreal () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool isreal () const
+  { return true; }
 
-  OCTINTERP_API bool is_real_scalar () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool is_real_scalar () const
+  { return true; }
 
   //  void increment () { scalar += 1; }
 
--- a/libinterp/octave-value/ov-base-mat.h	Fri Apr 05 17:18:42 2024 -0700
+++ b/libinterp/octave-value/ov-base-mat.h	Sat Apr 06 18:04:59 2024 +0200
@@ -51,10 +51,12 @@
 
   typedef MT object_type;
 
-  OCTINTERP_API octave_base_matrix ()
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  octave_base_matrix ()
     : octave_base_value (), m_matrix (), m_typ (), m_idx_cache () { }
 
-  OCTINTERP_API octave_base_matrix (const MT& m, const MatrixType& t = MatrixType ())
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  octave_base_matrix (const MT& m, const MatrixType& t = MatrixType ())
     : octave_base_value (), m_matrix (m),
       m_typ (t.is_known () ? new MatrixType (t) : nullptr), m_idx_cache ()
   {
@@ -62,22 +64,28 @@
       m_matrix.resize (dim_vector (0, 0));
   }
 
-  OCTINTERP_API octave_base_matrix (const octave_base_matrix& m)
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  octave_base_matrix (const octave_base_matrix& m)
     : octave_base_value (), m_matrix (m.m_matrix),
       m_typ (m.m_typ ? new MatrixType (*m.m_typ) : nullptr),
       m_idx_cache (m.m_idx_cache ? new octave::idx_vector (*m.m_idx_cache)
                    : nullptr)
   { }
 
-  OCTINTERP_API ~octave_base_matrix () { clear_cached_info (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  ~octave_base_matrix () { clear_cached_info (); }
 
-  OCTINTERP_API std::size_t byte_size () const { return m_matrix.byte_size (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  std::size_t byte_size () const { return m_matrix.byte_size (); }
 
-  OCTINTERP_API octave_value squeeze () const { return MT (m_matrix.squeeze ()); }
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  octave_value squeeze () const { return MT (m_matrix.squeeze ()); }
 
-  OCTINTERP_API octave_value full_value () const { return m_matrix; }
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  octave_value full_value () const { return m_matrix; }
 
-  OCTINTERP_API void maybe_economize () { m_matrix.maybe_economize (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API
+  void maybe_economize () { m_matrix.maybe_economize (); }
 
   // We don't need to override all three forms of subsref.  The using
   // declaration will avoid warnings about partially-overloaded virtual
@@ -90,7 +98,7 @@
   OCTINTERP_API octave_value_list
   simple_subsref (char type, octave_value_list& idx, int nargout);
 
-  OCTINTERP_API octave_value_list
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value_list
   subsref (const std::string& type, const std::list<octave_value_list>& idx, int)
   { return subsref (type, idx); }
 
@@ -115,65 +123,76 @@
 
   OCTINTERP_API void delete_elements (const octave_value_list& idx);
 
-  OCTINTERP_API dim_vector dims () const { return m_matrix.dims (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API dim_vector
+  dims () const { return m_matrix.dims (); }
 
-  OCTINTERP_API octave_idx_type numel () const { return m_matrix.numel (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_idx_type
+  numel () const { return m_matrix.numel (); }
 
-  OCTINTERP_API int ndims () const { return m_matrix.ndims (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API int
+  ndims () const { return m_matrix.ndims (); }
 
-  OCTINTERP_API octave_idx_type nnz () const { return m_matrix.nnz (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_idx_type
+  nnz () const { return m_matrix.nnz (); }
 
-  OCTINTERP_API octave_value reshape (const dim_vector& new_dims) const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  reshape (const dim_vector& new_dims) const
   { return MT (m_matrix.reshape (new_dims)); }
 
-  OCTINTERP_API octave_value permute (const Array<int>& vec, bool inv = false) const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  permute (const Array<int>& vec, bool inv = false) const
   { return MT (m_matrix.permute (vec, inv)); }
 
   OCTINTERP_API octave_value
   resize (const dim_vector& dv, bool fill = false) const;
 
-  OCTINTERP_API octave_value all (int dim = 0) const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value all (int dim = 0) const
   { return m_matrix.all (dim); }
-  OCTINTERP_API octave_value any (int dim = 0) const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value any (int dim = 0) const
   { return m_matrix.any (dim); }
 
-  OCTINTERP_API MatrixType matrix_type () const
+  OCTINTERP_OVERRIDABLE_FUNC_API MatrixType matrix_type () const
   { return m_typ ? *m_typ : MatrixType (); }
   OCTINTERP_API MatrixType matrix_type (const MatrixType& _typ) const;
 
-  OCTINTERP_API octave_value diag (octave_idx_type k = 0) const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  diag (octave_idx_type k = 0) const
   { return octave_value (m_matrix.diag (k)); }
 
-  OCTINTERP_API octave_value diag (octave_idx_type m, octave_idx_type n) const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  diag (octave_idx_type m, octave_idx_type n) const
   { return octave_value (m_matrix.diag (m, n)); }
 
-  OCTINTERP_API octave_value
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
   sort (octave_idx_type dim = 0, sortmode mode = ASCENDING) const
   { return octave_value (m_matrix.sort (dim, mode)); }
-  OCTINTERP_API octave_value
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
   sort (Array<octave_idx_type>& sidx, octave_idx_type dim = 0,
         sortmode mode = ASCENDING) const
   { return octave_value (m_matrix.sort (sidx, dim, mode)); }
 
-  OCTINTERP_API sortmode issorted (sortmode mode = UNSORTED) const
+  OCTINTERP_OVERRIDABLE_FUNC_API sortmode issorted (sortmode mode = UNSORTED) const
   { return m_matrix.issorted (mode); }
 
-  OCTINTERP_API Array<octave_idx_type>
+  OCTINTERP_OVERRIDABLE_FUNC_API Array<octave_idx_type>
   sort_rows_idx (sortmode mode = ASCENDING) const
   { return m_matrix.sort_rows_idx (mode); }
 
-  OCTINTERP_API sortmode is_sorted_rows (sortmode mode = UNSORTED) const
+  OCTINTERP_OVERRIDABLE_FUNC_API sortmode
+  is_sorted_rows (sortmode mode = UNSORTED) const
   { return m_matrix.is_sorted_rows (mode); }
 
-  OCTINTERP_API bool is_matrix_type () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool
+  is_matrix_type () const { return true; }
 
-  OCTINTERP_API bool is_full_num_matrix () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool
+  is_full_num_matrix () const { return true; }
 
-  OCTINTERP_API bool isnumeric () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool isnumeric () const { return true; }
 
-  OCTINTERP_API bool is_defined () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool is_defined () const { return true; }
 
-  OCTINTERP_API bool is_constant () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool is_constant () const { return true; }
 
   OCTINTERP_API bool is_true () const;
 
@@ -192,13 +211,13 @@
   edit_display (const float_display_format& fmt,
                 octave_idx_type i, octave_idx_type j) const;
 
-  OCTINTERP_API MT& matrix_ref ()
+  OCTINTERP_OVERRIDABLE_FUNC_API MT& matrix_ref ()
   {
     clear_cached_info ();
     return m_matrix;
   }
 
-  OCTINTERP_API const MT& matrix_ref () const
+  OCTINTERP_OVERRIDABLE_FUNC_API const MT& matrix_ref () const
   {
     return m_matrix;
   }
@@ -211,13 +230,14 @@
 
   // This function exists to support the MEX interface.
   // You should not use it anywhere else.
-  OCTINTERP_API const void * mex_get_data () const { return m_matrix.data (); }
+  OCTINTERP_OVERRIDABLE_FUNC_API const void *
+  mex_get_data () const { return m_matrix.data (); }
 
 protected:
 
   MT m_matrix;
 
-  OCTINTERP_API octave::idx_vector
+  OCTINTERP_OVERRIDABLE_FUNC_API octave::idx_vector
   set_idx_cache (const octave::idx_vector& idx) const
   {
     delete m_idx_cache;
@@ -225,7 +245,7 @@
     return idx;
   }
 
-  OCTINTERP_API void clear_cached_info () const
+  OCTINTERP_OVERRIDABLE_FUNC_API void clear_cached_info () const
   {
     delete m_typ; m_typ = nullptr;
     delete m_idx_cache; m_idx_cache = nullptr;
--- a/libinterp/octave-value/ov-base-scalar.h	Fri Apr 05 17:18:42 2024 -0700
+++ b/libinterp/octave-value/ov-base-scalar.h	Sat Apr 06 18:04:59 2024 +0200
@@ -50,20 +50,22 @@
 
   typedef ST scalar_type;
 
-  OCTINTERP_API octave_base_scalar ()
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_base_scalar ()
     : octave_base_value (), scalar () { }
 
-  OCTINTERP_API octave_base_scalar (const ST& s)
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_base_scalar (const ST& s)
     : octave_base_value (), scalar (s) { }
 
-  OCTINTERP_API octave_base_scalar (const octave_base_scalar& s)
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_base_scalar (const octave_base_scalar& s)
     : octave_base_value (), scalar (s.scalar) { }
 
-  OCTINTERP_API ~octave_base_scalar () = default;
+  OCTINTERP_OVERRIDABLE_FUNC_API ~octave_base_scalar () = default;
 
-  OCTINTERP_API octave_value squeeze () const { return scalar; }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  squeeze () const { return scalar; }
 
-  OCTINTERP_API octave_value full_value () const { return scalar; }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  full_value () const { return scalar; }
 
   // We don't need to override all three forms of subsref.  The using
   // declaration will avoid warnings about partially-overloaded virtual
@@ -73,7 +75,7 @@
   OCTINTERP_API octave_value
   subsref (const std::string& type, const std::list<octave_value_list>& idx);
 
-  OCTINTERP_API octave_value_list
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value_list
   subsref (const std::string& type, const std::list<octave_value_list>& idx, int)
   { return subsref (type, idx); }
 
@@ -81,36 +83,41 @@
   subsasgn (const std::string& type, const std::list<octave_value_list>& idx,
             const octave_value& rhs);
 
-  OCTINTERP_API bool is_constant () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool is_constant () const { return true; }
 
-  OCTINTERP_API bool is_defined () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool is_defined () const { return true; }
 
   OCTINTERP_API dim_vector dims () const;
 
-  OCTINTERP_API octave_idx_type numel () const { return 1; }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_idx_type numel () const { return 1; }
 
-  OCTINTERP_API int ndims () const { return 2; }
+  OCTINTERP_OVERRIDABLE_FUNC_API int ndims () const { return 2; }
 
-  OCTINTERP_API octave_idx_type nnz () const { return (scalar != ST () ? 1 : 0); }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_idx_type
+  nnz () const { return (scalar != ST () ? 1 : 0); }
 
   OCTINTERP_API octave_value permute (const Array<int>&, bool = false) const;
 
   OCTINTERP_API octave_value reshape (const dim_vector& new_dims) const;
 
-  OCTINTERP_API std::size_t byte_size () const { return sizeof (ST); }
+  OCTINTERP_OVERRIDABLE_FUNC_API std::size_t
+  byte_size () const { return sizeof (ST); }
 
-  OCTINTERP_API octave_value all (int = 0) const { return (scalar != ST ()); }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  all (int = 0) const { return (scalar != ST ()); }
 
-  OCTINTERP_API octave_value any (int = 0) const { return (scalar != ST ()); }
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  any (int = 0) const { return (scalar != ST ()); }
 
   OCTINTERP_API octave_value diag (octave_idx_type k = 0) const;
 
   OCTINTERP_API octave_value diag (octave_idx_type m, octave_idx_type n) const;
 
-  OCTINTERP_API octave_value sort (octave_idx_type, sortmode) const
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
+  sort (octave_idx_type, sortmode) const
   { return octave_value (scalar); }
 
-  OCTINTERP_API octave_value
+  OCTINTERP_OVERRIDABLE_FUNC_API octave_value
   sort (Array<octave_idx_type>& sidx, octave_idx_type, sortmode) const
   {
     sidx.resize (dim_vector (1, 1));
@@ -118,29 +125,37 @@
     return octave_value (scalar);
   }
 
-  OCTINTERP_API sortmode issorted (sortmode mode = UNSORTED) const
+  OCTINTERP_OVERRIDABLE_FUNC_API sortmode
+  issorted (sortmode mode = UNSORTED) const
   { return mode == UNSORTED ? ASCENDING : mode; }
 
-  OCTINTERP_API Array<octave_idx_type> sort_rows_idx (sortmode) const
+  OCTINTERP_OVERRIDABLE_FUNC_API Array<octave_idx_type>
+  sort_rows_idx (sortmode) const
   {
     return Array<octave_idx_type> (dim_vector (1, 1),
                                    static_cast<octave_idx_type> (0));
   }
 
-  OCTINTERP_API sortmode is_sorted_rows (sortmode mode = UNSORTED) const
+  OCTINTERP_OVERRIDABLE_FUNC_API sortmode
+  is_sorted_rows (sortmode mode = UNSORTED) const
   { return mode == UNSORTED ? ASCENDING : mode; }
 
-  OCTINTERP_API MatrixType matrix_type () const
+  OCTINTERP_OVERRIDABLE_FUNC_API MatrixType
+  matrix_type () const
   { return MatrixType::Diagonal; }
 
-  OCTINTERP_API MatrixType matrix_type (const MatrixType&) const
+  OCTINTERP_OVERRIDABLE_FUNC_API MatrixType
+  matrix_type (const MatrixType&) const
   { return matrix_type (); }
 
-  OCTINTERP_API bool is_maybe_function () const { return false; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool
+  is_maybe_function () const { return false; }
 
-  OCTINTERP_API bool is_scalar_type () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool
+  is_scalar_type () const { return true; }
 
-  OCTINTERP_API bool isnumeric () const { return true; }
+  OCTINTERP_OVERRIDABLE_FUNC_API bool
+  isnumeric () const { return true; }
 
   OCTINTERP_API bool is_true () const;
 
@@ -162,11 +177,14 @@
 
   // This function exists to support the MEX interface.
   // You should not use it anywhere else.
-  OCTINTERP_API const void * mex_get_data () const { return &scalar; }
+  OCTINTERP_OVERRIDABLE_FUNC_API const void *
+  mex_get_data () const { return &scalar; }
 
-  OCTINTERP_API const ST& scalar_ref () const { return scalar; }
+  OCTINTERP_OVERRIDABLE_FUNC_API const ST& scalar_ref () const
+  { return scalar; }
 
-  OCTINTERP_API ST& scalar_ref () { return scalar; }
+  OCTINTERP_OVERRIDABLE_FUNC_API ST& scalar_ref ()
+  { return scalar; }
 
   OCTINTERP_API octave_value fast_elem_extract (octave_idx_type n) const;