diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c1cd8bbb..031bdac2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -59,7 +59,7 @@ CHECK_CXX_COMPILER_FLAG("-Wuseless-cast" COMPILER_SUPPORTS_WUSELESS_CAST) CHECK_CXX_COMPILER_FLAG("-Wdouble-promotion" COMPILER_SUPPORTS_WDOUBLE_PROMOTION) CHECK_CXX_COMPILER_FLAG("-Wrange-loop-analysis" COMPILER_SUPPORTS_WRANGE_LOOP_ANALYSIS) CHECK_CXX_COMPILER_FLAG("-Wundef" COMPILER_SUPPORTS_WUNDEF) -CHECK_CXX_COMPILER_FLAG("-Wshadow=local" COMPILER_SUPPORTS_WSHADOW_LOCAL) +CHECK_CXX_COMPILER_FLAG("-Wshadow" COMPILER_SUPPORTS_WSHADOW) if(COMPILER_SUPPORTS_WALL) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") @@ -73,8 +73,8 @@ endif() if(COMPILER_SUPPORTS_WERROR) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") endif() -if(COMPILER_SUPPORTS_WSHADOW_LOCAL) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow=local") +if(COMPILER_SUPPORTS_WSHADOW) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow") endif() if(COMPILER_SUPPORTS_WSIGN_CONVERSION) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-conversion") diff --git a/toml/region.hpp b/toml/region.hpp index 37ba3a30..2e01e51d 100644 --- a/toml/region.hpp +++ b/toml/region.hpp @@ -73,13 +73,13 @@ struct location final : public region_base using difference_type = typename const_iterator::difference_type; using source_ptr = std::shared_ptr>; - location(std::string name, std::vector cont) + location(std::string source_name, std::vector cont) : source_(std::make_shared>(std::move(cont))), - line_number_(1), source_name_(std::move(name)), iter_(source_->cbegin()) + line_number_(1), source_name_(std::move(source_name)), iter_(source_->cbegin()) {} - location(std::string name, const std::string& cont) + location(std::string source_name, const std::string& cont) : source_(std::make_shared>(cont.begin(), cont.end())), - line_number_(1), source_name_(std::move(name)), iter_(source_->cbegin()) + line_number_(1), source_name_(std::move(source_name)), iter_(source_->cbegin()) {} location(const location&) = default; @@ -343,9 +343,9 @@ struct region final : public region_base })) { // unwrap the first '#' by std::next. - auto str = make_string(std::next(comment_found), iter); - if(!str.empty() && str.back() == '\r') {str.pop_back();} - com.push_back(std::move(str)); + auto s = make_string(std::next(comment_found), iter); + if(!s.empty() && s.back() == '\r') {s.pop_back();} + com.push_back(std::move(s)); } else { @@ -396,9 +396,9 @@ struct region final : public region_base })) { // unwrap the first '#' by std::next. - auto str = make_string(std::next(comment_found), this->line_end()); - if(!str.empty() && str.back() == '\r') {str.pop_back();} - com.push_back(std::move(str)); + auto s = make_string(std::next(comment_found), this->line_end()); + if(!s.empty() && s.back() == '\r') {s.pop_back();} + com.push_back(std::move(s)); } } } diff --git a/toml/serializer.hpp b/toml/serializer.hpp index 77aef589..b27abfd9 100644 --- a/toml/serializer.hpp +++ b/toml/serializer.hpp @@ -26,19 +26,19 @@ namespace toml // a `"` and escaping some special character is boring. template std::basic_string -format_key(const std::basic_string& key) +format_key(const std::basic_string& k) { // check the key can be a bare (unquoted) key - detail::location loc(key, std::vector(key.begin(), key.end())); + detail::location loc(k, std::vector(k.begin(), k.end())); detail::lex_unquoted_key::invoke(loc); if(loc.iter() == loc.end()) { - return key; // all the tokens are consumed. the key is unquoted-key. + return k; // all the tokens are consumed. the key is unquoted-key. } //if it includes special characters, then format it in a "quoted" key. std::basic_string serialized("\""); - for(const char c : key) + for(const char c : k) { switch(c) { diff --git a/toml/types.hpp b/toml/types.hpp index 0818ebd1..7bf4b2e8 100644 --- a/toml/types.hpp +++ b/toml/types.hpp @@ -21,6 +21,11 @@ class basic_value; using character = char; using key = std::string; +#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ <= 4 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wshadow" +#endif + using boolean = bool; using integer = std::int64_t; using floating = double; // "float" is a keyward, cannot use it here. @@ -32,12 +37,26 @@ using floating = double; // "float" is a keyward, cannot use it here. // - local_date // - local_time +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic pop +#endif + // default toml::value and default array/table. these are defined after defining // basic_value itself. // using value = basic_value; // using array = typename value::array_type; // using table = typename value::table_type; +// to avoid warnings about `value_t::integer` is "shadowing" toml::integer in +// GCC -Wshadow=global. +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic push +# if 7 <= __GNUC__ +# pragma GCC diagnostic ignored "-Wshadow=global" +# else // gcc-6 or older +# pragma GCC diagnostic ignored "-Wshadow" +# endif +#endif enum class value_t : std::uint8_t { empty = 0, @@ -52,6 +71,9 @@ enum class value_t : std::uint8_t array = 9, table = 10, }; +#if defined(__GNUC__) && !defined(__clang__) +# pragma GCC diagnostic pop +#endif template inline std::basic_ostream& @@ -147,4 +169,5 @@ template struct is_exact_toml_type } // detail } // toml + #endif// TOML11_TYPES_H diff --git a/toml/value.hpp b/toml/value.hpp index f2e6c635..ed8c76e3 100644 --- a/toml/value.hpp +++ b/toml/value.hpp @@ -281,9 +281,9 @@ class basic_value // overwrite comments ---------------------------------------------------- - basic_value(const basic_value& v, std::vector comments) + basic_value(const basic_value& v, std::vector com) : type_(v.type()), region_info_(v.region_info_), - comments_(std::move(comments)) + comments_(std::move(com)) { switch(v.type()) { @@ -301,9 +301,9 @@ class basic_value } } - basic_value(basic_value&& v, std::vector comments) + basic_value(basic_value&& v, std::vector com) : type_(v.type()), region_info_(std::move(v.region_info_)), - comments_(std::move(comments)) + comments_(std::move(com)) { switch(this->type_) // here this->type_ is already initialized { @@ -359,9 +359,9 @@ class basic_value template class T, template class A> - basic_value(const basic_value& v, std::vector comments) + basic_value(const basic_value& v, std::vector com) : type_(v.type()), region_info_(v.region_info_), - comments_(std::move(comments)) + comments_(std::move(com)) { switch(v.type()) { @@ -443,10 +443,10 @@ class basic_value assigner(this->boolean_, b); return *this; } - basic_value(boolean b, std::vector comments) + basic_value(boolean b, std::vector com) : type_(value_t::boolean), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->boolean_, b); } @@ -478,10 +478,10 @@ class basic_value template, detail::negation>>::value, std::nullptr_t>::type = nullptr> - basic_value(T i, std::vector comments) + basic_value(T i, std::vector com) : type_(value_t::integer), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->integer_, static_cast(i)); } @@ -511,10 +511,10 @@ class basic_value template::value, std::nullptr_t>::type = nullptr> - basic_value(T f, std::vector comments) + basic_value(T f, std::vector com) : type_(value_t::floating), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->floating_, f); } @@ -535,10 +535,10 @@ class basic_value assigner(this->string_, s); return *this; } - basic_value(toml::string s, std::vector comments) + basic_value(toml::string s, std::vector com) : type_(value_t::string), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->string_, std::move(s)); } @@ -563,17 +563,17 @@ class basic_value { assigner(this->string_, toml::string(std::move(s), kind)); } - basic_value(std::string s, std::vector comments) + basic_value(std::string s, std::vector com) : type_(value_t::string), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->string_, toml::string(std::move(s))); } - basic_value(std::string s, string_t kind, std::vector comments) + basic_value(std::string s, string_t kind, std::vector com) : type_(value_t::string), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->string_, toml::string(std::move(s), kind)); } @@ -598,17 +598,17 @@ class basic_value { assigner(this->string_, toml::string(std::string(s), kind)); } - basic_value(const char* s, std::vector comments) + basic_value(const char* s, std::vector com) : type_(value_t::string), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->string_, toml::string(std::string(s))); } - basic_value(const char* s, string_t kind, std::vector comments) + basic_value(const char* s, string_t kind, std::vector com) : type_(value_t::string), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->string_, toml::string(std::string(s), kind)); } @@ -628,10 +628,10 @@ class basic_value assigner(this->string_, toml::string(s)); return *this; } - basic_value(std::string_view s, std::vector comments) + basic_value(std::string_view s, std::vector com) : type_(value_t::string), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->string_, toml::string(s)); } @@ -641,10 +641,10 @@ class basic_value { assigner(this->string_, toml::string(s, kind)); } - basic_value(std::string_view s, string_t kind, std::vector comments) + basic_value(std::string_view s, string_t kind, std::vector com) : type_(value_t::string), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->string_, toml::string(s, kind)); } @@ -666,10 +666,10 @@ class basic_value assigner(this->local_date_, ld); return *this; } - basic_value(const local_date& ld, std::vector comments) + basic_value(const local_date& ld, std::vector com) : type_(value_t::local_date), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->local_date_, ld); } @@ -682,10 +682,10 @@ class basic_value { assigner(this->local_time_, lt); } - basic_value(const local_time& lt, std::vector comments) + basic_value(const local_time& lt, std::vector com) : type_(value_t::local_time), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->local_time_, lt); } @@ -707,10 +707,10 @@ class basic_value } template basic_value(const std::chrono::duration& dur, - std::vector comments) + std::vector com) : type_(value_t::local_time), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->local_time_, local_time(dur)); } @@ -732,10 +732,10 @@ class basic_value { assigner(this->local_datetime_, ldt); } - basic_value(const local_datetime& ldt, std::vector comments) + basic_value(const local_datetime& ldt, std::vector com) : type_(value_t::local_datetime), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->local_datetime_, ldt); } @@ -756,10 +756,10 @@ class basic_value { assigner(this->offset_datetime_, odt); } - basic_value(const offset_datetime& odt, std::vector comments) + basic_value(const offset_datetime& odt, std::vector com) : type_(value_t::offset_datetime), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->offset_datetime_, odt); } @@ -778,10 +778,10 @@ class basic_value assigner(this->offset_datetime_, offset_datetime(tp)); } basic_value(const std::chrono::system_clock::time_point& tp, - std::vector comments) + std::vector com) : type_(value_t::offset_datetime), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->offset_datetime_, offset_datetime(tp)); } @@ -802,10 +802,10 @@ class basic_value { assigner(this->array_, ary); } - basic_value(const array_type& ary, std::vector comments) + basic_value(const array_type& ary, std::vector com) : type_(value_t::array), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->array_, ary); } @@ -833,10 +833,10 @@ class basic_value template::value, std::nullptr_t>::type = nullptr> - basic_value(std::initializer_list list, std::vector comments) + basic_value(std::initializer_list list, std::vector com) : type_(value_t::array), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { array_type ary(list.begin(), list.end()); assigner(this->array_, std::move(ary)); @@ -876,10 +876,10 @@ class basic_value detail::negation>, detail::is_container >::value, std::nullptr_t>::type = nullptr> - basic_value(const T& list, std::vector comments) + basic_value(const T& list, std::vector com) : type_(value_t::array), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { static_assert(std::is_convertible::value, "elements of a container should be convertible to toml::value"); @@ -915,10 +915,10 @@ class basic_value { assigner(this->table_, tab); } - basic_value(const table_type& tab, std::vector comments) + basic_value(const table_type& tab, std::vector com) : type_(value_t::table), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { assigner(this->table_, tab); } @@ -943,10 +943,10 @@ class basic_value } basic_value(std::initializer_list> list, - std::vector comments) + std::vector com) : type_(value_t::table), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { table_type tab; for(const auto& elem : list) {tab[elem.first] = elem.second;} @@ -982,10 +982,10 @@ class basic_value detail::negation>, detail::is_map >::value, std::nullptr_t>::type = nullptr> - basic_value(const Map& mp, std::vector comments) + basic_value(const Map& mp, std::vector com) : type_(value_t::table), region_info_(std::make_shared(region_base{})), - comments_(std::move(comments)) + comments_(std::move(com)) { table_type tab; for(const auto& elem : mp) {tab[elem.first] = elem.second;} @@ -1017,8 +1017,8 @@ class basic_value template::value, std::nullptr_t>::type = nullptr> - basic_value(const T& ud, std::vector comments) - : basic_value(ud.into_toml(), std::move(comments)) + basic_value(const T& ud, std::vector com) + : basic_value(ud.into_toml(), std::move(com)) {} template::value, std::nullptr_t>::type = nullptr> @@ -1033,8 +1033,8 @@ class basic_value template)> basic_value(const T& ud): basic_value(::toml::into::into_toml(ud)) {} template)> - basic_value(const T& ud, std::vector comments) - : basic_value(::toml::into::into_toml(ud), std::move(comments)) + basic_value(const T& ud, std::vector com) + : basic_value(::toml::into::into_toml(ud), std::move(com)) {} template)> basic_value& operator=(const T& ud) @@ -1134,10 +1134,10 @@ class basic_value template::value, std::nullptr_t>::type = nullptr> - basic_value(std::pair parse_result, std::vector comments) + basic_value(std::pair parse_result, std::vector com) : basic_value(std::move(parse_result.first), std::move(parse_result.second), - std::move(comments)) + std::move(com)) {} // type checking and casting ============================================