[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master c3edd4c 2/2: Require C++17 standard library
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master c3edd4c 2/2: Require C++17 standard library |
Date: |
Mon, 12 Mar 2018 19:33:28 -0400 (EDT) |
branch: master
commit c3edd4c4fd60a0cbd06385ec7a9089018c40e35f
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Require C++17 standard library
---
multidimgrid_any.cpp | 4 +--
multidimgrid_any.hpp | 32 ++++++++---------
multidimgrid_safe.hpp | 25 +++++---------
multidimgrid_safe.tpp | 22 ++++++------
rate_table.cpp | 96 +++++++++++++++++++++++++--------------------------
5 files changed, 84 insertions(+), 95 deletions(-)
diff --git a/multidimgrid_any.cpp b/multidimgrid_any.cpp
index 04e43da..593977f 100644
--- a/multidimgrid_any.cpp
+++ b/multidimgrid_any.cpp
@@ -437,7 +437,7 @@ wxGrid& MultiDimGrid::grid() const
void MultiDimGrid::FixAxisValue
(std::string const& axisName
- ,Exp::any const& value
+ ,std::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
{
- Exp::any value = table().GetValueAny(PrepareFixedCoords(row, col));
+ std::any value = table().GetValueAny(PrepareFixedCoords(row, col));
return table().ValueToString(value);
}
diff --git a/multidimgrid_any.hpp b/multidimgrid_any.hpp
index 520654e..0c6dc07 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 Exp::any and thus
+/// - type-unsafe but template-less version using std::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
@@ -94,15 +94,13 @@
#include <wx/choice.h>
#include <wx/grid.h>
+#include <any>
#include <cstddef> // size_t
#include <memory> // shared_ptr
#include <string>
#include <utility> // pair
#include <vector>
-#include <experimental/any>
-namespace Exp {using std::experimental::any;}
-
class MultiDimAxisAny;
class MultiDimAxisAnyChoice;
class MultiDimGrid;
@@ -110,7 +108,7 @@ class MultiDimTableAny;
class WXDLLIMPEXP_FWD_CORE wxBoxSizer;
class WXDLLIMPEXP_FWD_CORE wxGridBagSizer;
-/// Type-unsafe classes using Exp::any as value type
+/// Type-unsafe classes using std::any as value type
/// --------------------------------------------------
/// Design notes for MultiDimAxisAny
@@ -198,7 +196,7 @@ class MultiDimAxisAny
virtual unsigned int GetCardinality() const = 0;
virtual std::string GetLabel(unsigned int n) const = 0;
- virtual Exp::any GetValue(unsigned int n) const = 0;
+ virtual std::any GetValue(unsigned int n) const = 0;
virtual MultiDimAxisAnyChoice* CreateChoiceControl
(MultiDimGrid&
@@ -288,7 +286,7 @@ class MultiDimTableAny
{
public:
/// Coordinates for an element of the table
- typedef std::vector<Exp::any> Coords;
+ typedef std::vector<std::any> Coords;
typedef std::shared_ptr<MultiDimAxisAny> AxisAnyPtr;
typedef std::vector<AxisAnyPtr> AxesAny;
@@ -308,18 +306,18 @@ class MultiDimTableAny
virtual void MakeVaryByDimension(unsigned int n, bool varies) = 0;
virtual bool VariesByDimension(unsigned int n) const = 0;
- Exp::any GetValueAny(Coords const& coords) const;
- void SetValueAny(Coords const& coords, Exp::any const& value);
+ std::any GetValueAny(Coords const& coords) const;
+ void SetValueAny(Coords const& coords, std::any const& value);
/// Value conversion methods to be overriden in derived classes.
- virtual Exp::any StringToValue(std::string const& value) const = 0;
- virtual std::string ValueToString(Exp::any const& value) const = 0;
+ virtual std::any StringToValue(std::string const& value) const = 0;
+ virtual std::string ValueToString(std::any const& value) const = 0;
protected:
virtual AxesAny DoGetAxesAny() = 0;
virtual unsigned int DoGetDimension() const = 0;
- virtual Exp::any DoGetValueAny(Coords const&) const = 0;
- virtual void DoSetValueAny(Coords const&, Exp::any const&) = 0;
+ virtual std::any DoGetValueAny(Coords const&) const = 0;
+ virtual void DoSetValueAny(Coords const&, std::any const&) = 0;
virtual bool DoApplyAxisAdjustment(MultiDimAxisAny& axis, unsigned int n);
virtual bool DoRefreshAxisAdjustment(MultiDimAxisAny& axis, unsigned int
n);
@@ -358,7 +356,7 @@ inline bool MultiDimTableAny::RefreshAxisAdjustment
EnsureValidDimensionIndex(n);
return DoRefreshAxisAdjustment(axis, n);
}
-inline Exp::any MultiDimTableAny::GetValueAny(Coords const& coords) const
+inline std::any MultiDimTableAny::GetValueAny(Coords const& coords) const
{
if(coords.size() != GetDimension())
{
@@ -368,7 +366,7 @@ inline Exp::any MultiDimTableAny::GetValueAny(Coords const&
coords) const
}
inline void MultiDimTableAny::SetValueAny
(Coords const& coords
- ,Exp::any const& value
+ ,std::any const& value
)
{
if(coords.size() != GetDimension())
@@ -495,7 +493,7 @@ class MultiDimGrid
,wxSize const& size = wxDefaultSize
);
- void FixAxisValue(std::string const& axis, Exp::any const& sel);
+ void FixAxisValue(std::string const& axis, std::any const& sel);
void RefreshTableData();
bool RefreshTableAxis(std::string const& name);
bool RefreshTableAxis();
@@ -555,7 +553,7 @@ class MultiDimGrid
,std::string const&
);
- /// Array of Exp::any values
+ /// Array of std::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 02b8a4a..60d72dc 100644
--- a/multidimgrid_safe.hpp
+++ b/multidimgrid_safe.hpp
@@ -31,16 +31,9 @@
#include "multidimgrid_any.hpp"
+#include <any>
#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
/// ---------------------------
///
@@ -76,7 +69,7 @@ class MultiDimAxis
MultiDimAxis(std::string const& name);
- Exp::any GetValue(unsigned int n) const override;
+ std::any GetValue(unsigned int n) const override;
protected:
/// Implement this function returning values of the type ValueType
@@ -228,18 +221,18 @@ class MultiDimTable
T DoGetValue(Coords const&) const;
void DoSetValue(Coords const&, T const&);
- /// Helper methods for unwrapping/wrapping a value from/into Exp::any.
+ /// Helper methods for unwrapping/wrapping a value from/into std::any.
template<typename A>
- static A UnwrapAny(Exp::any const&);
+ static A UnwrapAny(std::any const&);
template<typename A>
- static Exp::any WrapAny(A const&);
+ static std::any WrapAny(A const&);
private:
/// MultiDimTableAny overrides.
- 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;
+ std::any DoGetValueAny(Coords const&) const override;
+ void DoSetValueAny(Coords const&, std::any const&) override;
+ std::any StringToValue(std::string const&) const override;
+ std::string ValueToString(std::any const&) const override;
};
/// Design notes for MultiDimAdjustableAxis<AdjustControl,BaseAxisType>
diff --git a/multidimgrid_safe.tpp b/multidimgrid_safe.tpp
index 841c1f8..6de332b 100644
--- a/multidimgrid_safe.tpp
+++ b/multidimgrid_safe.tpp
@@ -34,9 +34,9 @@ MultiDimAxis<E>::MultiDimAxis(std::string const& name)
}
template<typename E>
-Exp::any MultiDimAxis<E>::GetValue(unsigned int n) const
+std::any MultiDimAxis<E>::GetValue(unsigned int n) const
{
- return Exp::any(static_cast<ValueType>(DoGetValue(n)));
+ return std::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>
-Exp::any MultiDimTable<T, D, C>::DoGetValueAny
+std::any MultiDimTable<T, D, C>::DoGetValueAny
(Coords const& coords
) const
{
@@ -236,14 +236,14 @@ Exp::any MultiDimTable<T, D, C>::DoGetValueAny
template<typename T, typename D, typename C>
void MultiDimTable<T, D, C>::DoSetValueAny
(Coords const& coords
- ,Exp::any const& value
+ ,std::any const& value
)
{
return SetValue(coords, UnwrapAny<T>(value));
}
template<typename T, typename D, typename C>
-Exp::any MultiDimTable<T, D, C>::StringToValue
+std::any MultiDimTable<T, D, C>::StringToValue
(std::string const& text
) const
{
@@ -252,7 +252,7 @@ Exp::any MultiDimTable<T, D, C>::StringToValue
template<typename T, typename D, typename C>
std::string MultiDimTable<T, D, C>::ValueToString
- (Exp::any const& value
+ (std::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(Exp::any const& any)
+A MultiDimTable<T, D, C>::UnwrapAny(std::any const& any)
{
try
{
- return Exp::any_cast<A>(any);
+ return std::any_cast<A>(any);
}
- catch(Exp::bad_any_cast const& e)
+ catch(std::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(Exp::any const& any)
template<typename T, typename D, typename C>
template<typename A>
-Exp::any MultiDimTable<T, D, C>::WrapAny(A const& a)
+std::any MultiDimTable<T, D, C>::WrapAny(A const& a)
{
- return Exp::any(a);
+ return std::any(a);
}
diff --git a/rate_table.cpp b/rate_table.cpp
index 37d1308..67c9f47 100644
--- a/rate_table.cpp
+++ b/rate_table.cpp
@@ -44,14 +44,12 @@
#include <limits>
#include <map>
#include <memory>
+#include <optional>
#include <ostream>
#include <sstream>
#include <stdexcept>
#include <utility> // make_pair(), swap()
-#include <experimental/optional>
-namespace Exp {using std::experimental::optional;}
-
// Note about error handling in this code: with a few exceptions (e.g.
// strict_parse_number), most of the functions in this file throw on error.
// If the exception is thrown from a low level function, it is caught and
@@ -173,7 +171,7 @@ void to_bytes(char* bytes, T value)
// the later Boost.Optional versions.
template<typename T, typename U>
inline
-T get_value_or(Exp::optional<T> const& o, U v)
+T get_value_or(std::optional<T> const& o, U v)
{
return o ? *o : v;
}
@@ -392,17 +390,17 @@ class writer
explicit writer(std::ostream& os) : os_(os) {}
template<typename T>
- void write(enum_soa_field field, Exp::optional<T> const& onum);
+ void write(enum_soa_field field, std::optional<T> const& onum);
void write_table_type(table_type tt);
- void write(enum_soa_field field, Exp::optional<std::string> const& ostr);
+ void write(enum_soa_field field, std::optional<std::string> const& ostr);
void write_values
(std::vector<double> const& values
- ,Exp::optional<std::uint16_t> const& num_decimals
- ,Exp::optional<std::uint16_t> const& min_age
- ,Exp::optional<std::uint16_t> const& max_age
- ,Exp::optional<std::uint16_t> const& select_period
- ,Exp::optional<std::uint16_t> const& max_select_age
+ ,std::optional<std::uint16_t> const& num_decimals
+ ,std::optional<std::uint16_t> const& min_age
+ ,std::optional<std::uint16_t> const& max_age
+ ,std::optional<std::uint16_t> const& select_period
+ ,std::optional<std::uint16_t> const& max_select_age
);
void end();
@@ -417,11 +415,11 @@ class writer
void writer::write_values
(std::vector<double> const& values
- ,Exp::optional<std::uint16_t> const& num_decimals
- ,Exp::optional<std::uint16_t> const& min_age
- ,Exp::optional<std::uint16_t> const& max_age
- ,Exp::optional<std::uint16_t> const& select_period
- ,Exp::optional<std::uint16_t> const& max_select_age
+ ,std::optional<std::uint16_t> const& num_decimals
+ ,std::optional<std::uint16_t> const& min_age
+ ,std::optional<std::uint16_t> const& max_age
+ ,std::optional<std::uint16_t> const& select_period
+ ,std::optional<std::uint16_t> const& max_select_age
)
{
// Notice that to keep things more interesting, number of decimals comes
@@ -497,7 +495,7 @@ void writer::do_write_field(enum_soa_field field, T num)
}
template<typename T>
-void writer::write(enum_soa_field field, Exp::optional<T> const& onum)
+void writer::write(enum_soa_field field, std::optional<T> const& onum)
{
if(onum)
{
@@ -510,7 +508,7 @@ void writer::write_table_type(table_type tt)
do_write_field(e_field_table_type, static_cast<std::uint8_t>(tt));
}
-void writer::write(enum_soa_field field, Exp::optional<std::string> const&
ostr)
+void writer::write(enum_soa_field field, std::optional<std::string> const&
ostr)
{
if(ostr)
{
@@ -563,15 +561,15 @@ class writer
explicit writer(std::ostream& os) : os_(os) {}
template<typename T>
- void write(enum_soa_field field, Exp::optional<T> const& oval);
+ void write(enum_soa_field field, std::optional<T> const& oval);
void write_table_type(table_type tt);
void write_values
(std::vector<double> const& values
- ,Exp::optional<std::uint16_t> const& num_decimals
- ,Exp::optional<std::uint16_t> const& min_age
- ,Exp::optional<std::uint16_t> const& max_age
- ,Exp::optional<std::uint16_t> const& select_period
- ,Exp::optional<std::uint16_t> const& max_select_age
+ ,std::optional<std::uint16_t> const& num_decimals
+ ,std::optional<std::uint16_t> const& min_age
+ ,std::optional<std::uint16_t> const& max_age
+ ,std::optional<std::uint16_t> const& select_period
+ ,std::optional<std::uint16_t> const& max_select_age
);
void end();
@@ -581,7 +579,7 @@ class writer
};
template<typename T>
-void writer::write(enum_soa_field field, Exp::optional<T> const& oval)
+void writer::write(enum_soa_field field, std::optional<T> const& oval)
{
if(oval)
{
@@ -598,11 +596,11 @@ void writer::write_table_type(table_type tt)
void writer::write_values
(std::vector<double> const& values
- ,Exp::optional<std::uint16_t> const& num_decimals
- ,Exp::optional<std::uint16_t> const& min_age
- ,Exp::optional<std::uint16_t> const& max_age
- ,Exp::optional<std::uint16_t> const& select_period
- ,Exp::optional<std::uint16_t> const& max_select_age
+ ,std::optional<std::uint16_t> const& num_decimals
+ ,std::optional<std::uint16_t> const& min_age
+ ,std::optional<std::uint16_t> const& max_age
+ ,std::optional<std::uint16_t> const& select_period
+ ,std::optional<std::uint16_t> const& max_select_age
)
{
write(e_field_min_age , min_age );
@@ -705,13 +703,13 @@ struct field_and_value
// explaining the problem.
//
// The line_num and table_number are only used for diagnostics.
-Exp::optional<field_and_value> parse_field_and_value
+std::optional<field_and_value> parse_field_and_value
(std::string const& line
,int line_num
- ,Exp::optional<std::uint32_t> const& table_number
+ ,std::optional<std::uint32_t> const& table_number
)
{
- Exp::optional<field_and_value> const no_field;
+ std::optional<field_and_value> const no_field;
auto const pos_colon = line.find(':');
if(pos_colon == std::string::npos)
@@ -865,7 +863,7 @@ class table_impl final
// read_xxx() methods for binary format.
static void read_string
- (Exp::optional<std::string>& ostr
+ (std::optional<std::string>& ostr
,enum_soa_field field
,std::istream& ifs
,std::uint16_t length
@@ -878,7 +876,7 @@ class table_impl final
template<typename T>
static void read_number
- (Exp::optional<T>& onum
+ (std::optional<T>& onum
,enum_soa_field field
,std::istream& ifs
,std::uint16_t length
@@ -891,7 +889,7 @@ class table_impl final
// after reading them, this would already result in a "duplicate field"
// error).
void read_number_before_values
- (Exp::optional<std::uint16_t>& onum
+ (std::optional<std::uint16_t>& onum
,enum_soa_field field
,std::istream& ifs
,std::uint16_t length
@@ -906,7 +904,7 @@ class table_impl final
// This method returns the pointer to ostr string value to allow further
// modifying it later in the caller.
static std::string* parse_string
- (Exp::optional<std::string>& ostr
+ (std::optional<std::string>& ostr
,enum_soa_field field
,int line_num
,std::string const& value
@@ -922,7 +920,7 @@ class table_impl final
template<typename T>
static void parse_number
- (Exp::optional<T>& onum
+ (std::optional<T>& onum
,enum_soa_field field
,int line_num
,std::string const& value
@@ -994,11 +992,11 @@ class table_impl final
template<typename T>
void do_write(std::ostream& os) const;
- // The values are not represented by Exp::optional<>, the emptiness of
+ // The values are not represented by std::optional<>, the emptiness of
// the vector signals if we have any values or not.
std::vector<double> values_;
- Exp::optional<std::string>
+ std::optional<std::string>
name_,
contributor_,
data_source_,
@@ -1009,18 +1007,18 @@ class table_impl final
published_reference_,
comments_;
- Exp::optional<std::uint32_t>
+ std::optional<std::uint32_t>
number_,
hash_value_;
- Exp::optional<std::uint16_t>
+ std::optional<std::uint16_t>
num_decimals_,
min_age_,
max_age_,
select_period_,
max_select_age_;
- Exp::optional<table_type>
+ std::optional<table_type>
type_;
};
@@ -1075,7 +1073,7 @@ void throw_if_unexpected_length
// is true.
template<typename T>
inline
-void throw_if_missing_field(Exp::optional<T> const& o, enum_soa_field field)
+void throw_if_missing_field(std::optional<T> const& o, enum_soa_field field)
{
if(!o)
{
@@ -1091,7 +1089,7 @@ void throw_if_missing_field(Exp::optional<T> const& o,
enum_soa_field field)
} // anonymous namespace
void table_impl::read_string
- (Exp::optional<std::string>& ostr
+ (std::optional<std::string>& ostr
,enum_soa_field field
,std::istream& ifs
,std::uint16_t length
@@ -1148,7 +1146,7 @@ void table_impl::read_type(std::istream& ifs,
std::uint16_t length)
template<typename T>
void table_impl::read_number
- (Exp::optional<T>& onum
+ (std::optional<T>& onum
,enum_soa_field field
,std::istream& ifs
,std::uint16_t length
@@ -1162,7 +1160,7 @@ void table_impl::read_number
}
void table_impl::read_number_before_values
- (Exp::optional<std::uint16_t>& onum
+ (std::optional<std::uint16_t>& onum
,enum_soa_field field
,std::istream& ifs
,std::uint16_t length
@@ -1283,7 +1281,7 @@ void table_impl::read_values(std::istream& ifs,
std::uint16_t /* length */)
}
std::string* table_impl::parse_string
- (Exp::optional<std::string>& ostr
+ (std::optional<std::string>& ostr
,enum_soa_field field
,int line_num
,std::string const& value
@@ -1346,7 +1344,7 @@ unsigned long table_impl::do_parse_number
template<typename T>
void table_impl::parse_number
- (Exp::optional<T>& onum
+ (std::optional<T>& onum
,enum_soa_field field
,int line_num
,std::string const& value