Mercurial > octave-libtiff
changeset 29279:e4c152e827aa
Visibility: Forward declare template classes with visibility attributes (patch #8919).
* Array.h, MArray.h, Sparse.h: Forward declare template classes with visibility
attributes before template class definition.
* Array-i.cc: Instantiate Array<T> template class with more integer types.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Thu, 07 Jan 2021 18:34:18 +0100 |
parents | 7bfc454b9e08 |
children | 448bbc1f99a1 |
files | liboctave/array/Array-i.cc liboctave/array/Array.h liboctave/array/MArray.h liboctave/array/Sparse.h |
diffstat | 4 files changed, 27 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/array/Array-i.cc Thu Jan 07 11:11:39 2021 -0800 +++ b/liboctave/array/Array-i.cc Thu Jan 07 18:34:18 2021 +0100 @@ -43,18 +43,37 @@ extern template class Array<idx_vector>; +template class octave_sort<signed char>; +//template class octave_sort<short>; template class octave_sort<int>; template class octave_sort<long>; #if defined (OCTAVE_HAVE_LONG_LONG_INT) template class octave_sort<long long>; #endif +INSTANTIATE_ARRAY (signed char, OCTAVE_API); +//INSTANTIATE_ARRAY (short, OCTAVE_API); INSTANTIATE_ARRAY (int, OCTAVE_API); INSTANTIATE_ARRAY (long, OCTAVE_API); #if defined (OCTAVE_HAVE_LONG_LONG_INT) INSTANTIATE_ARRAY (long long, OCTAVE_API); #endif +template class octave_sort<unsigned char>; +template class octave_sort<unsigned short>; +template class octave_sort<unsigned int>; +template class octave_sort<unsigned long>; +#if defined (OCTAVE_HAVE_UNSIGNED_LONG_LONG_INT) +template class octave_sort<unsigned long long>; +#endif + +INSTANTIATE_ARRAY (unsigned char, OCTAVE_API); +INSTANTIATE_ARRAY (unsigned short, OCTAVE_API); +INSTANTIATE_ARRAY (unsigned int, OCTAVE_API); +#if defined (OCTAVE_HAVE_UNSIGNED_LONG_LONG_INT) +INSTANTIATE_ARRAY (unsigned long long, OCTAVE_API); +#endif + template class octave_sort<octave_int8>; template class octave_sort<octave_int16>; template class octave_sort<octave_int32>;
--- a/liboctave/array/Array.h Thu Jan 07 11:11:39 2021 -0800 +++ b/liboctave/array/Array.h Thu Jan 07 18:34:18 2021 +0100 @@ -122,6 +122,9 @@ //! - string_vector: Array<std::string> with 1 column //! - Cell: Array<octave_value>, equivalent to an Octave cell. +// forward declare template with visibility attribute +template <typename T> class OCTARRAY_API Array; + template <typename T> class Array
--- a/liboctave/array/MArray.h Thu Jan 07 11:11:39 2021 -0800 +++ b/liboctave/array/MArray.h Thu Jan 07 18:34:18 2021 +0100 @@ -31,7 +31,8 @@ #include "Array.h" #include "mx-inlines.cc" -template <typename T> class MArray; +// forward declare template with visibility attribute +template <typename T> class OCTAVE_API MArray; template <typename T> MArray<T>& operator += (MArray<T>&, const T&); template <typename T> MArray<T>& operator -= (MArray<T>&, const T&);
--- a/liboctave/array/Sparse.h Thu Jan 07 11:11:39 2021 -0800 +++ b/liboctave/array/Sparse.h Thu Jan 07 18:34:18 2021 +0100 @@ -43,6 +43,9 @@ // Two dimensional sparse class. Handles the reference counting for // all the derived classes. +// forward declare template with visibility attribute +template <typename T> class OCTAVE_API Sparse; + template <typename T> class Sparse