diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-05-26 18:42:09 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-05-26 18:42:09 +0100 |
| commit | 993e842fdff8fd6a909c2f525cfc006257eedd57 (patch) | |
| tree | 1ce0eff435db35f3ee5370b9949d42bb51e31180 /src | |
| parent | 499bde10bdef43b8621ccd5b277d7a475b4f8fe7 (diff) | |
Retreat ! go back to C++11 only code
This reverts commit b42de850314e7d76f873ddc7d64c5f7d2a30eb00.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Makefile | 2 | ||||
| -rw-r--r-- | src/client_manager.cc | 2 | ||||
| -rw-r--r-- | src/containers.hh | 2 | ||||
| -rw-r--r-- | src/flags.hh | 17 | ||||
| -rw-r--r-- | src/hash.hh | 4 | ||||
| -rw-r--r-- | src/highlighter.hh | 2 | ||||
| -rw-r--r-- | src/highlighters.cc | 10 | ||||
| -rw-r--r-- | src/main.cc | 4 | ||||
| -rw-r--r-- | src/safe_ptr.hh | 3 | ||||
| -rw-r--r-- | src/string.hh | 4 | ||||
| -rw-r--r-- | src/utils.hh | 28 |
11 files changed, 55 insertions, 23 deletions
diff --git a/src/Makefile b/src/Makefile index 74b7bad1..e30c6f2b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -9,7 +9,7 @@ bindir := $(DESTDIR)$(PREFIX)/bin sharedir := $(DESTDIR)$(PREFIX)/share/kak docdir := $(DESTDIR)$(PREFIX)/share/doc/kak -CXXFLAGS += -std=gnu++1y -g -Wall -Wno-reorder -Wno-sign-compare -pedantic +CXXFLAGS += -std=gnu++11 -g -Wall -Wno-reorder -Wno-sign-compare -pedantic ifneq (,$(findstring CYGWIN,$(os))) LDFLAGS += -rdynamic endif diff --git a/src/client_manager.cc b/src/client_manager.cc index edb3251e..ecade79c 100644 --- a/src/client_manager.cc +++ b/src/client_manager.cc @@ -84,7 +84,7 @@ WindowAndSelections ClientManager::get_free_window(Buffer& buffer) { return &ws.window->buffer() == &buffer; }); if (it == m_free_windows.rend()) - return { std::make_unique<Window>(buffer), { buffer, Selection{} } }; + return { make_unique<Window>(buffer), { buffer, Selection{} } }; it->window->forget_timestamp(); WindowAndSelections res = std::move(*it); diff --git a/src/containers.hh b/src/containers.hh index 0f94dba7..56e5fc1f 100644 --- a/src/containers.hh +++ b/src/containers.hh @@ -91,7 +91,7 @@ using TransformedResult = decltype(std::declval<T>()(*std::declval<I>())); template<typename Iterator, typename Transform> struct TransformedIterator : std::iterator<std::forward_iterator_tag, - std::remove_reference_t<TransformedResult<Iterator, Transform>>> + typename std::remove_reference<TransformedResult<Iterator, Transform>>::type> { TransformedIterator(Transform transform, Iterator it) : m_it(std::move(it)), m_transform(std::move(transform)) {} diff --git a/src/flags.hh b/src/flags.hh index f3562d95..2b68751b 100644 --- a/src/flags.hh +++ b/src/flags.hh @@ -10,18 +10,21 @@ template<typename Flags> struct WithBitOps : std::false_type {}; template<typename Flags> -using EnableIfWithBitOps = std::enable_if_t<WithBitOps<Flags>::value>; +using UnderlyingType = typename std::underlying_type<Flags>::type; + +template<typename Flags> +using EnableIfWithBitOps = typename std::enable_if<WithBitOps<Flags>::value>::type; template<typename Flags, typename = EnableIfWithBitOps<Flags>> constexpr Flags operator|(Flags lhs, Flags rhs) { - return (Flags)((std::underlying_type_t<Flags>) lhs | (std::underlying_type_t<Flags>) rhs); + return (Flags)((UnderlyingType<Flags>) lhs | (UnderlyingType<Flags>) rhs); } template<typename Flags, typename = EnableIfWithBitOps<Flags>> Flags& operator|=(Flags& lhs, Flags rhs) { - (std::underlying_type_t<Flags>&) lhs |= (std::underlying_type_t<Flags>) rhs; + (UnderlyingType<Flags>&) lhs |= (UnderlyingType<Flags>) rhs; return lhs; } @@ -29,27 +32,27 @@ template<typename Flags> struct TestableFlags { Flags value; - constexpr operator bool() const { return (std::underlying_type_t<Flags>)value; } + constexpr operator bool() const { return (UnderlyingType<Flags>)value; } constexpr operator Flags() const { return value; } }; template<typename Flags, typename = EnableIfWithBitOps<Flags>> constexpr TestableFlags<Flags> operator&(Flags lhs, Flags rhs) { - return { (Flags)((std::underlying_type_t<Flags>) lhs & (std::underlying_type_t<Flags>) rhs) }; + return { (Flags)((UnderlyingType<Flags>) lhs & (UnderlyingType<Flags>) rhs) }; } template<typename Flags, typename = EnableIfWithBitOps<Flags>> Flags& operator&=(Flags& lhs, Flags rhs) { - (std::underlying_type_t<Flags>&) lhs &= (std::underlying_type_t<Flags>) rhs; + (UnderlyingType<Flags>&) lhs &= (UnderlyingType<Flags>) rhs; return lhs; } template<typename Flags, typename = EnableIfWithBitOps<Flags>> constexpr Flags operator~(Flags lhs) { - return (Flags)(~(std::underlying_type_t<Flags>)lhs); + return (Flags)(~(UnderlyingType<Flags>)lhs); } } diff --git a/src/hash.hh b/src/hash.hh index 232baea5..3fc8abd2 100644 --- a/src/hash.hh +++ b/src/hash.hh @@ -19,10 +19,10 @@ size_t hash_value(const Type&... val) } template<typename Type> -std::enable_if_t<std::is_enum<Type>::value, size_t> +typename std::enable_if<std::is_enum<Type>::value, size_t>::type hash_value(const Type& val) { - return hash_value((std::underlying_type_t<Type>)val); + return hash_value((typename std::underlying_type<Type>::type)val); } template<typename Type> diff --git a/src/highlighter.hh b/src/highlighter.hh index ddd2a78b..4e259c51 100644 --- a/src/highlighter.hh +++ b/src/highlighter.hh @@ -61,7 +61,7 @@ private: template<typename T> std::unique_ptr<SimpleHighlighter<T>> make_simple_highlighter(T func) { - return std::make_unique<SimpleHighlighter<T>>(std::move(func)); + return make_unique<SimpleHighlighter<T>>(std::move(func)); } using HighlighterParameters = ConstArrayView<String>; diff --git a/src/highlighters.cc b/src/highlighters.cc index 091bbb4e..aa1e09eb 100644 --- a/src/highlighters.cc +++ b/src/highlighters.cc @@ -272,8 +272,8 @@ public: Regex ex{params[0].begin(), params[0].end(), Regex::optimize}; - return {id, std::make_unique<RegexHighlighter>(std::move(ex), - std::move(faces))}; + return {id, make_unique<RegexHighlighter>(std::move(ex), + std::move(faces))}; } catch (RegexError& err) { @@ -447,7 +447,7 @@ template<typename RegexGetter, typename FaceGetter> std::unique_ptr<DynamicRegexHighlighter<RegexGetter, FaceGetter>> make_dynamic_regex_highlighter(RegexGetter regex_getter, FaceGetter face_getter) { - return std::make_unique<DynamicRegexHighlighter<RegexGetter, FaceGetter>>( + return make_unique<DynamicRegexHighlighter<RegexGetter, FaceGetter>>( std::move(regex_getter), std::move(face_getter)); } @@ -896,7 +896,7 @@ HighlighterAndId create_highlighter_group(HighlighterParameters params) if (params.size() != 1) throw runtime_error("wrong parameter count"); - return HighlighterAndId(params[0], std::make_unique<HighlighterGroup>()); + return HighlighterAndId(params[0], make_unique<HighlighterGroup>()); } HighlighterAndId create_reference_highlighter(HighlighterParameters params) @@ -1200,7 +1200,7 @@ public: } auto default_group = parser.get_switch("default").value_or(StringView{}).str(); - return {parser[0], std::make_unique<RegionsHighlighter>(std::move(regions), default_group)}; + return {parser[0], make_unique<RegionsHighlighter>(std::move(regions), default_group)}; } catch (RegexError& err) { diff --git a/src/main.cc b/src/main.cc index c8fc9d03..7b1f62f9 100644 --- a/src/main.cc +++ b/src/main.cc @@ -261,7 +261,7 @@ void create_local_client(StringView init_command) } static Client* client = ClientManager::instance().create_client( - std::make_unique<LocalUI>(), get_env_vars(), init_command); + make_unique<LocalUI>(), get_env_vars(), init_command); signal(SIGHUP, [](int) { if (client) ClientManager::instance().remove_client(*client); @@ -299,7 +299,7 @@ int run_client(StringView session, StringView init_command) try { EventManager event_manager; - RemoteClient client{session, std::make_unique<NCursesUI>(), + RemoteClient client{session, make_unique<NCursesUI>(), get_env_vars(), init_command}; while (true) event_manager.handle_next_events(EventMode::Normal); diff --git a/src/safe_ptr.hh b/src/safe_ptr.hh index 5fe894b3..2e3b3d2b 100644 --- a/src/safe_ptr.hh +++ b/src/safe_ptr.hh @@ -94,7 +94,8 @@ private: }; template<typename T> using SafePtr = - RefPtr<T, std::conditional_t<std::is_const<T>::value, const SafeCountable, SafeCountable>>; + RefPtr<T, typename std::conditional<std::is_const<T>::value, + const SafeCountable, SafeCountable>::type>; } diff --git a/src/string.hh b/src/string.hh index e2e2d412..b5ad8e5a 100644 --- a/src/string.hh +++ b/src/string.hh @@ -297,10 +297,10 @@ namespace detail template<typename T> using IsString = std::is_convertible<T, StringView>; -template<typename T, class = std::enable_if_t<!IsString<T>::value>> +template<typename T, class = typename std::enable_if<!IsString<T>::value>::type> auto format_param(const T& val) -> decltype(to_string(val)) { return to_string(val); } -template<typename T, class = std::enable_if_t<IsString<T>::value>> +template<typename T, class = typename std::enable_if<IsString<T>::value>::type> StringView format_param(const T& val) { return val; } } diff --git a/src/utils.hh b/src/utils.hh index 7a7eb071..ee2591c0 100644 --- a/src/utils.hh +++ b/src/utils.hh @@ -8,6 +8,34 @@ namespace Kakoune { +template<typename T, typename... Args> +std::unique_ptr<T> make_unique(Args&&... args) +{ + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); +} + +template<size_t... I> +struct IndexSequence +{ + using Next = IndexSequence<I..., sizeof...(I)>; +}; + +template<size_t N> +struct MakeIndexSequence +{ + using Type = typename MakeIndexSequence<N-1>::Type::Next; +}; + +template<> +struct MakeIndexSequence<0> +{ + using Type = IndexSequence<>; +}; + +template<size_t N> +constexpr typename MakeIndexSequence<N>::Type +make_index_sequence() { return typename MakeIndexSequence<N>::Type{}; } + // *** Singleton *** // // Singleton helper class, every singleton type T should inherit |
