[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 0c16a43 6/6: Replace boost::any with std::exp
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 0c16a43 6/6: Replace boost::any with std::experimental::any |
Date: |
Sat, 24 Feb 2018 17:26:46 -0500 (EST) |
branch: master
commit 0c16a431a7d4c135a1524a4fa4671f4e00ebdb8d
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Replace boost::any with std::experimental::any
---
multidimgrid_any.cpp | 4 ++--
multidimgrid_any.hpp | 35 ++++++++++++++++++-----------------
multidimgrid_safe.hpp | 26 ++++++++++++++++----------
multidimgrid_safe.tpp | 24 ++++++++++++------------
4 files changed, 48 insertions(+), 41 deletions(-)
diff --git a/multidimgrid_any.cpp b/multidimgrid_any.cpp
index a9d89af..04e43da 100644
--- a/multidimgrid_any.cpp
+++ b/multidimgrid_any.cpp
@@ -437,7 +437,7 @@ wxGrid& MultiDimGrid::grid() const
void MultiDimGrid::FixAxisValue
(std::string const& axisName
- ,boost::any const& value
+ ,Exp::any const& value
)
{
int sel = GetAxisIndexByName(axisName);
@@ -1154,7 +1154,7 @@ wxString MultiDimGrid::GetValue(int row, int col)
std::string MultiDimGrid::DoGetValue(unsigned int row, unsigned int col) const
{
- boost::any value = table().GetValueAny(PrepareFixedCoords(row, col));
+ Exp::any value = table().GetValueAny(PrepareFixedCoords(row, col));
return table().ValueToString(value);
}
diff --git a/multidimgrid_any.hpp b/multidimgrid_any.hpp
index ce799a9..520654e 100644
--- a/multidimgrid_any.hpp
+++ b/multidimgrid_any.hpp
@@ -37,7 +37,7 @@
/// control.
///
/// As an added twist, each of the classes here is available in two versions:
-/// - type-unsafe but template-less version using boost::any and thus
+/// - type-unsafe but template-less version using Exp::any and thus
/// capable of containing any, possibly even heterogeneous, values;
/// these classes are called FooAny below
/// - type-safe version requiring to specify the value and axis types
@@ -91,8 +91,6 @@
#include "alert.hpp"
#include "assert_lmi.hpp"
-#include <boost/any.hpp>
-
#include <wx/choice.h>
#include <wx/grid.h>
@@ -102,6 +100,9 @@
#include <utility> // pair
#include <vector>
+#include <experimental/any>
+namespace Exp {using std::experimental::any;}
+
class MultiDimAxisAny;
class MultiDimAxisAnyChoice;
class MultiDimGrid;
@@ -109,7 +110,7 @@ class MultiDimTableAny;
class WXDLLIMPEXP_FWD_CORE wxBoxSizer;
class WXDLLIMPEXP_FWD_CORE wxGridBagSizer;
-/// Type-unsafe classes using boost::any as value type
+/// Type-unsafe classes using Exp::any as value type
/// --------------------------------------------------
/// Design notes for MultiDimAxisAny
@@ -197,7 +198,7 @@ class MultiDimAxisAny
virtual unsigned int GetCardinality() const = 0;
virtual std::string GetLabel(unsigned int n) const = 0;
- virtual boost::any GetValue(unsigned int n) const = 0;
+ virtual Exp::any GetValue(unsigned int n) const = 0;
virtual MultiDimAxisAnyChoice* CreateChoiceControl
(MultiDimGrid&
@@ -287,7 +288,7 @@ class MultiDimTableAny
{
public:
/// Coordinates for an element of the table
- typedef std::vector<boost::any> Coords;
+ typedef std::vector<Exp::any> Coords;
typedef std::shared_ptr<MultiDimAxisAny> AxisAnyPtr;
typedef std::vector<AxisAnyPtr> AxesAny;
@@ -307,18 +308,18 @@ class MultiDimTableAny
virtual void MakeVaryByDimension(unsigned int n, bool varies) = 0;
virtual bool VariesByDimension(unsigned int n) const = 0;
- boost::any GetValueAny(Coords const& coords) const;
- void SetValueAny(Coords const& coords, boost::any const& value);
+ Exp::any GetValueAny(Coords const& coords) const;
+ void SetValueAny(Coords const& coords, Exp::any const& value);
/// Value conversion methods to be overriden in derived classes.
- virtual boost::any StringToValue(std::string const& value) const = 0;
- virtual std::string ValueToString(boost::any const& value) const = 0;
+ virtual Exp::any StringToValue(std::string const& value) const = 0;
+ virtual std::string ValueToString(Exp::any const& value) const = 0;
protected:
virtual AxesAny DoGetAxesAny() = 0;
virtual unsigned int DoGetDimension() const = 0;
- virtual boost::any DoGetValueAny(Coords const&) const = 0;
- virtual void DoSetValueAny(Coords const&, boost::any const&) = 0;
+ virtual Exp::any DoGetValueAny(Coords const&) const = 0;
+ virtual void DoSetValueAny(Coords const&, Exp::any const&) = 0;
virtual bool DoApplyAxisAdjustment(MultiDimAxisAny& axis, unsigned int n);
virtual bool DoRefreshAxisAdjustment(MultiDimAxisAny& axis, unsigned int
n);
@@ -357,7 +358,7 @@ inline bool MultiDimTableAny::RefreshAxisAdjustment
EnsureValidDimensionIndex(n);
return DoRefreshAxisAdjustment(axis, n);
}
-inline boost::any MultiDimTableAny::GetValueAny(Coords const& coords) const
+inline Exp::any MultiDimTableAny::GetValueAny(Coords const& coords) const
{
if(coords.size() != GetDimension())
{
@@ -366,8 +367,8 @@ inline boost::any MultiDimTableAny::GetValueAny(Coords
const& coords) const
return DoGetValueAny(coords);
}
inline void MultiDimTableAny::SetValueAny
- (Coords const& coords
- ,boost::any const& value
+ (Coords const& coords
+ ,Exp::any const& value
)
{
if(coords.size() != GetDimension())
@@ -494,7 +495,7 @@ class MultiDimGrid
,wxSize const& size = wxDefaultSize
);
- void FixAxisValue(std::string const& axis, boost::any const& sel);
+ void FixAxisValue(std::string const& axis, Exp::any const& sel);
void RefreshTableData();
bool RefreshTableAxis(std::string const& name);
bool RefreshTableAxis();
@@ -554,7 +555,7 @@ class MultiDimGrid
,std::string const&
);
- /// Array of boost::any values
+ /// Array of Exp::any values
typedef MultiDimTableAny::Coords Coords;
/// Helper function used by SetValue() and GetValue() functions
diff --git a/multidimgrid_safe.hpp b/multidimgrid_safe.hpp
index 845cb90..02b8a4a 100644
--- a/multidimgrid_safe.hpp
+++ b/multidimgrid_safe.hpp
@@ -31,10 +31,16 @@
#include "multidimgrid_any.hpp"
-#include <boost/any.hpp>
-
#include <type_traits>
+#include <experimental/any>
+namespace Exp
+{
+ using std::experimental::any;
+ using std::experimental::any_cast;
+ using std::experimental::bad_any_cast;
+}
+
/// MultiDim* type-safe classes
/// ---------------------------
///
@@ -70,7 +76,7 @@ class MultiDimAxis
MultiDimAxis(std::string const& name);
- boost::any GetValue(unsigned int n) const override;
+ Exp::any GetValue(unsigned int n) const override;
protected:
/// Implement this function returning values of the type ValueType
@@ -222,18 +228,18 @@ class MultiDimTable
T DoGetValue(Coords const&) const;
void DoSetValue(Coords const&, T const&);
- /// Helper methods for unwrapping/wrapping a value from/into boost::any.
+ /// Helper methods for unwrapping/wrapping a value from/into Exp::any.
template<typename A>
- static A UnwrapAny(boost::any const&);
+ static A UnwrapAny(Exp::any const&);
template<typename A>
- static boost::any WrapAny(A const&);
+ static Exp::any WrapAny(A const&);
private:
/// MultiDimTableAny overrides.
- boost::any DoGetValueAny(Coords const&) const override;
- void DoSetValueAny(Coords const&, boost::any const&) override;
- boost::any StringToValue(std::string const&) const override;
- std::string ValueToString(boost::any const&) const override;
+ Exp::any DoGetValueAny(Coords const&) const override;
+ void DoSetValueAny(Coords const&, Exp::any const&) override;
+ Exp::any StringToValue(std::string const&) const override;
+ std::string ValueToString(Exp::any const&) const override;
};
/// Design notes for MultiDimAdjustableAxis<AdjustControl,BaseAxisType>
diff --git a/multidimgrid_safe.tpp b/multidimgrid_safe.tpp
index a1f8a82..841c1f8 100644
--- a/multidimgrid_safe.tpp
+++ b/multidimgrid_safe.tpp
@@ -34,9 +34,9 @@ MultiDimAxis<E>::MultiDimAxis(std::string const& name)
}
template<typename E>
-boost::any MultiDimAxis<E>::GetValue(unsigned int n) const
+Exp::any MultiDimAxis<E>::GetValue(unsigned int n) const
{
- return boost::any(static_cast<ValueType>(DoGetValue(n)));
+ return Exp::any(static_cast<ValueType>(DoGetValue(n)));
}
/// MultiDimEnumAxis<E>
@@ -226,7 +226,7 @@ inline void MultiDimTable<T, D, C>::SetValue(Coords const&
coords, T const& t)
}
template<typename T, typename D, typename C>
-boost::any MultiDimTable<T, D, C>::DoGetValueAny
+Exp::any MultiDimTable<T, D, C>::DoGetValueAny
(Coords const& coords
) const
{
@@ -235,15 +235,15 @@ boost::any MultiDimTable<T, D, C>::DoGetValueAny
template<typename T, typename D, typename C>
void MultiDimTable<T, D, C>::DoSetValueAny
- (Coords const& coords
- ,boost::any const& value
+ (Coords const& coords
+ ,Exp::any const& value
)
{
return SetValue(coords, UnwrapAny<T>(value));
}
template<typename T, typename D, typename C>
-boost::any MultiDimTable<T, D, C>::StringToValue
+Exp::any MultiDimTable<T, D, C>::StringToValue
(std::string const& text
) const
{
@@ -252,7 +252,7 @@ boost::any MultiDimTable<T, D, C>::StringToValue
template<typename T, typename D, typename C>
std::string MultiDimTable<T, D, C>::ValueToString
- (boost::any const& value
+ (Exp::any const& value
) const
{
return static_cast<C const&>(*this).ValueToString(UnwrapAny<T>(value));
@@ -260,13 +260,13 @@ std::string MultiDimTable<T, D, C>::ValueToString
template<typename T, typename D, typename C>
template<typename A>
-A MultiDimTable<T, D, C>::UnwrapAny(boost::any const& any)
+A MultiDimTable<T, D, C>::UnwrapAny(Exp::any const& any)
{
try
{
- return boost::any_cast<A>(any);
+ return Exp::any_cast<A>(any);
}
- catch(boost::bad_any_cast const& e)
+ catch(Exp::bad_any_cast const& e)
{
alarum() << "Type mismatch : " << e.what() << LMI_FLUSH;
throw "Unreachable--silences a compiler diagnostic.";
@@ -275,8 +275,8 @@ A MultiDimTable<T, D, C>::UnwrapAny(boost::any const& any)
template<typename T, typename D, typename C>
template<typename A>
-boost::any MultiDimTable<T, D, C>::WrapAny(A const& a)
+Exp::any MultiDimTable<T, D, C>::WrapAny(A const& a)
{
- return boost::any(a);
+ return Exp::any(a);
}
- [lmi-commits] [lmi] master updated (af00582 -> 0c16a43), Greg Chicares, 2018/02/24
- [lmi-commits] [lmi] master 0a40076 1/6: Prefer the C++ standard library to boost, Greg Chicares, 2018/02/24
- [lmi-commits] [lmi] master 45156c8 3/6: Avoid gratuitous use of boost, Greg Chicares, 2018/02/24
- [lmi-commits] [lmi] master d9e80e4 2/6: Avoid gratuitous use of boost, Greg Chicares, 2018/02/24
- [lmi-commits] [lmi] master 5c6922b 4/6: Replace boost::optional with std::experimental::optional, Greg Chicares, 2018/02/24
- [lmi-commits] [lmi] master 0c16a43 6/6: Replace boost::any with std::experimental::any,
Greg Chicares <=
- [lmi-commits] [lmi] master f6760eb 5/6: Prefer explicit 'std::' qualification to using-declarations, Greg Chicares, 2018/02/24