Skip to content

Commit 20305ee

Browse files
Saurav AgarwalSaurav Agarwal
authored andcommitted
update gnuplot iostream
1 parent 3eea9c7 commit 20305ee

File tree

1 file changed

+19
-28
lines changed

1 file changed

+19
-28
lines changed

cppsrc/core/include/CoverageControl/extern/gnuplot/gnuplot-iostream.h

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ struct Error_WasNotContainer {
742742

743743
// The unspecialized version of this class gives traits for things that are *not* arrays.
744744
template <typename T, typename Enable=void>
745-
class ArrayTraits {
745+
class ArrayTraitsImpl {
746746
public:
747747
// The value type of elements after all levels of nested containers have been dereferenced.
748748
typedef Error_WasNotContainer value_type;
@@ -765,6 +765,9 @@ class ArrayTraits {
765765
}
766766
};
767767

768+
template <typename T>
769+
using ArrayTraits = ArrayTraitsImpl<typename std::remove_reference<typename std::remove_cv<T>::type>::type>;
770+
768771
// Most specializations of ArrayTraits should inherit from this (with V set to the value type).
769772
// It sets some default values.
770773
template <typename V>
@@ -777,16 +780,6 @@ class ArrayTraitsDefaults {
777780
static constexpr size_t depth = ArrayTraits<V>::depth + 1;
778781
};
779782

780-
// This handles reference types, such as are given with std::tie.
781-
// It also allows for instance "ArrayTraits<T[N]>" to match "ArrayTraits<T (&) [N]>".
782-
// I think this is okay to do... The alternative is to use remove_reference all over the place.
783-
template <typename T>
784-
class ArrayTraits<T&> : public ArrayTraits<T> { };
785-
786-
// This supports gp.send1d(std::forward_as_tuple(x, std::move(y)));
787-
template <typename T>
788-
class ArrayTraits<T&&> : public ArrayTraits<T> { };
789-
790783
// }}}2
791784

792785
// {{{2 STL container support
@@ -833,7 +826,7 @@ class IteratorRange {
833826
};
834827

835828
template <typename T>
836-
class ArrayTraits<T,
829+
class ArrayTraitsImpl<T,
837830
typename std::enable_if_t<is_like_stl_container<T>>
838831
> : public ArrayTraitsDefaults<typename T::value_type> {
839832
public:
@@ -845,7 +838,7 @@ class ArrayTraits<T,
845838
};
846839

847840
template <typename T>
848-
class ArrayTraits<T,
841+
class ArrayTraitsImpl<T,
849842
typename std::enable_if_t<is_like_stl_container2<T>>
850843
> : public ArrayTraitsDefaults<typename std::iterator_traits<decltype(begin(std::declval<T const>()))>::value_type> {
851844
using IterType = decltype(begin(std::declval<T const>()));
@@ -863,7 +856,7 @@ class ArrayTraits<T,
863856
// {{{2 C style array support
864857

865858
template <typename T, size_t N>
866-
class ArrayTraits<T[N]> : public ArrayTraitsDefaults<T> {
859+
class ArrayTraitsImpl<T[N]> : public ArrayTraitsDefaults<T> {
867860
public:
868861
typedef IteratorRange<const T*, T> range_type;
869862

@@ -918,7 +911,7 @@ class PairOfRange {
918911
};
919912

920913
template <typename T, typename U>
921-
class ArrayTraits<std::pair<T, U>> {
914+
class ArrayTraitsImpl<std::pair<T, U>> {
922915
public:
923916
typedef PairOfRange<typename ArrayTraits<T>::range_type, typename ArrayTraits<U>::range_type> range_type;
924917
typedef std::pair<typename ArrayTraits<T>::value_type, typename ArrayTraits<U>::value_type> value_type;
@@ -944,7 +937,7 @@ class ArrayTraits<std::pair<T, U>> {
944937
// {{{2 boost::tuple support
945938

946939
template <typename T>
947-
class ArrayTraits<T,
940+
class ArrayTraitsImpl<T,
948941
typename std::enable_if_t<
949942
is_boost_tuple<T> && !is_boost_tuple_nulltype<typename T::tail_type>
950943
>
@@ -969,7 +962,7 @@ class ArrayTraits<T,
969962
};
970963

971964
template <typename T>
972-
class ArrayTraits<T,
965+
class ArrayTraitsImpl<T,
973966
typename std::enable_if_t<
974967
is_boost_tuple<T> && is_boost_tuple_nulltype<typename T::tail_type>
975968
>
@@ -1015,7 +1008,7 @@ struct StdTupUnwinder<Tuple, 0> {
10151008
};
10161009

10171010
template <typename... Args>
1018-
class ArrayTraits<std::tuple<Args...>> :
1011+
class ArrayTraitsImpl<std::tuple<Args...>> :
10191012
public ArrayTraits<typename StdTupUnwinder<std::tuple<Args...>, sizeof...(Args)-1>::type>
10201013
{
10211014
typedef std::tuple<Args...> Tuple;
@@ -2036,9 +2029,7 @@ inline Gnuplot &operator<<(Gnuplot &gp, PlotGroup &&sp) {
20362029

20372030
// The first version of this library didn't use namespaces, and now this must be here forever
20382031
// for reverse compatibility.
2039-
// Saurav: Removed this as this causes forward declaration issues with clang
2040-
// using gnuplotio::Gnuplot;
2041-
using namespace gnuplotio;
2032+
using gnuplotio::Gnuplot;
20422033

20432034
#endif // GNUPLOT_IOSTREAM_H
20442035

@@ -2161,7 +2152,7 @@ class BlitzIterator<T, ArrayDim, 1> {
21612152
};
21622153

21632154
template <typename T, int ArrayDim>
2164-
class ArrayTraits<blitz::Array<T, ArrayDim>> : public ArrayTraitsDefaults<T> {
2155+
class ArrayTraitsImpl<blitz::Array<T, ArrayDim>> : public ArrayTraitsDefaults<T> {
21652156
public:
21662157
static constexpr bool allow_auto_unwrap = false;
21672158
static constexpr size_t depth = ArrayTraits<T>::depth + ArrayDim;
@@ -2204,7 +2195,7 @@ template <typename T> static constexpr bool dont_treat_as_stl_container<arma::fi
22042195
// {{{3 Cube
22052196

22062197
template <typename T>
2207-
class ArrayTraits<arma::Cube<T>> : public ArrayTraitsDefaults<T> {
2198+
class ArrayTraitsImpl<arma::Cube<T>> : public ArrayTraitsDefaults<T> {
22082199
class SliceRange {
22092200
public:
22102201
SliceRange() : p(nullptr), col(0), slice(0) { }
@@ -2374,17 +2365,17 @@ class ArrayTraits_ArmaMatOrField : public ArrayTraitsDefaults<T> {
23742365
};
23752366

23762367
template <typename T>
2377-
class ArrayTraits<arma::field<T>> : public ArrayTraits_ArmaMatOrField<arma::field<T>, T> { };
2368+
class ArrayTraitsImpl<arma::field<T>> : public ArrayTraits_ArmaMatOrField<arma::field<T>, T> { };
23782369

23792370
template <typename T>
2380-
class ArrayTraits<arma::Mat<T>> : public ArrayTraits_ArmaMatOrField<arma::Mat<T>, T> { };
2371+
class ArrayTraitsImpl<arma::Mat<T>> : public ArrayTraits_ArmaMatOrField<arma::Mat<T>, T> { };
23812372

23822373
// }}}3
23832374

23842375
// {{{3 Row
23852376

23862377
template <typename T>
2387-
class ArrayTraits<arma::Row<T>> : public ArrayTraitsDefaults<T> {
2378+
class ArrayTraitsImpl<arma::Row<T>> : public ArrayTraitsDefaults<T> {
23882379
public:
23892380
static constexpr bool allow_auto_unwrap = false;
23902381

@@ -2401,7 +2392,7 @@ class ArrayTraits<arma::Row<T>> : public ArrayTraitsDefaults<T> {
24012392
// {{{3 Col
24022393

24032394
template <typename T>
2404-
class ArrayTraits<arma::Col<T>> : public ArrayTraitsDefaults<T> {
2395+
class ArrayTraitsImpl<arma::Col<T>> : public ArrayTraitsDefaults<T> {
24052396
public:
24062397
static constexpr bool allow_auto_unwrap = false;
24072398

@@ -2564,7 +2555,7 @@ class ArrayTraits_Eigen2D : public ArrayTraitsDefaults<typename RF::value_type>
25642555
};
25652556

25662557
template <typename T>
2567-
class ArrayTraits<T, typename std::enable_if_t<is_eigen_matrix<T>>> :
2558+
class ArrayTraitsImpl<T, typename std::enable_if_t<is_eigen_matrix<T>>> :
25682559
public std::conditional_t<
25692560
T::RowsAtCompileTime == 1 || T::ColsAtCompileTime == 1,
25702561
ArrayTraits_Eigen1D<T>,

0 commit comments

Comments
 (0)