Mercurial > octave
changeset 23679:ece6f43304e5
new function to convert dim_vector to Array<octave_idx_type>
* dim-vector.h, dim-vector.cc (dim_vector::as_array):
New function.
* oct-refcount.h (refcount::value): New function.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 22 Jun 2017 15:20:46 -0400 |
parents | dcba41788495 |
children | ef71711f6d64 |
files | liboctave/array/dim-vector.cc liboctave/array/dim-vector.h liboctave/util/oct-refcount.h |
diffstat | 3 files changed, 24 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/array/dim-vector.cc Thu Jun 22 15:10:57 2017 -0400 +++ b/liboctave/array/dim-vector.cc Thu Jun 22 15:20:46 2017 -0400 @@ -29,6 +29,7 @@ #include <new> #include <sstream> +#include "Array.h" #include "dim-vector.h" octave_idx_type * @@ -309,3 +310,16 @@ return retval; } } + +Array<octave_idx_type> +dim_vector::as_array (void) const +{ + octave_idx_type nd = ndims (); + + Array<octave_idx_type> retval (dim_vector (1, nd)); + + for (octave_idx_type i = 0; i < nd; i++) + retval(i) = elem (i); + + return retval; +}
--- a/liboctave/array/dim-vector.h Thu Jun 22 15:10:57 2017 -0400 +++ b/liboctave/array/dim-vector.h Thu Jun 22 15:20:46 2017 -0400 @@ -34,6 +34,8 @@ #include "oct-refcount.h" +template <typename T> class Array; + //! Vector representing the dimensions (size) of an Array. /*! A dim_vector is used to represent dimensions of an Array. It is used @@ -548,6 +550,8 @@ } friend bool operator == (const dim_vector& a, const dim_vector& b); + + Array<octave_idx_type> as_array (void) const; }; inline bool
--- a/liboctave/util/oct-refcount.h Thu Jun 22 15:10:57 2017 -0400 +++ b/liboctave/util/oct-refcount.h Thu Jun 22 15:20:46 2017 -0400 @@ -101,9 +101,14 @@ return OCTAVE_ATOMIC_POST_DECREMENT (&count); } + count_type value (void) const + { + return static_cast<count_type const volatile&> (count); + } + operator count_type (void) const { - return static_cast<count_type const volatile&> (count); + return value (); } count_type * get (void)