lmi-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]