diff libinterp/octave-value/ov.h @ 30232:a2936935c7c8

attempt to limit possible const_cast damage * Array.h (Array<T>::mex_get_data): Delete. * Sparse.h (Sparse<T>::mex_get_data, Sparse<T>::mex_get_ir, Sparse<T>::mex_get_jc): Delete. * oct-inttypes.h (octave_int<T>::mex_get_data): Delete. * mex.cc (mxArray_octave_value::get_data, mxArray_octave_value::get_ir, mxArray_octave_value::get_jc): Cast away const here, not in octave_value methods. * ov.h, ov.cc (octave_value::mex_get_data, octave_value::mex_get_ir, octave_value::mex_get_jc): Return const void pointer. * ov-base.h (octave_base_value::mex_get_data, octave_base_value::mex_get_ir, octave_base_value::mex_get_jc): Likewise. Change all derived classes.
author John W. Eaton <jwe@octave.org>
date Thu, 07 Oct 2021 17:08:44 -0400
parents c789e728d57a
children 91c6288781ba a61e1a0f6024
line wrap: on
line diff
--- a/libinterp/octave-value/ov.h	Thu Oct 07 09:16:18 2021 -0700
+++ b/libinterp/octave-value/ov.h	Thu Oct 07 17:08:44 2021 -0400
@@ -1478,15 +1478,23 @@
 
   octave_base_value * internal_rep (void) const { return m_rep; }
 
-  // Unsafe.  These functions exist to support the MEX interface.
+  // These functions exist to support the MEX interface.
   // You should not use them anywhere else.
-  OCTINTERP_API void *
+
+  OCTINTERP_API const void *
   mex_get_data (mxClassID class_id = mxUNKNOWN_CLASS,
                 mxComplexity complexity = mxREAL) const;
 
-  octave_idx_type * mex_get_ir (void) const { return m_rep->mex_get_ir (); }
+  const octave_idx_type * mex_get_ir (void) const
+  {
+    return m_rep->mex_get_ir ();
+  }
 
-  octave_idx_type * mex_get_jc (void) const { return m_rep->mex_get_jc (); }
+  const octave_idx_type *
+  mex_get_jc (void) const
+  {
+    return m_rep->mex_get_jc ();
+  }
 
   mxArray * as_mxArray (bool interleaved = false) const
   { return m_rep->as_mxArray (interleaved); }