diff options
author | ipknHama <ipknhama@gmail.com> | 2014-12-12 01:38:57 +0900 |
---|---|---|
committer | ipknHama <ipknhama@gmail.com> | 2014-12-12 01:38:57 +0900 |
commit | 966867a9ca8ca3dd9e783d628b8184563318d03c (patch) | |
tree | 27b86384181a400863580dab1b719ca3b01d2a91 /include/utility.h | |
parent | c2f75a7de1eaa9a0e1a5a97b5fc1ee60c8c3a642 (diff) | |
download | crow-966867a9ca8ca3dd9e783d628b8184563318d03c.tar.gz crow-966867a9ca8ca3dd9e783d628b8184563318d03c.zip |
change pointer to reference; fix up spaces
Diffstat (limited to 'include/utility.h')
-rw-r--r-- | include/utility.h | 92 |
1 files changed, 43 insertions, 49 deletions
diff --git a/include/utility.h b/include/utility.h index 835fdbd..c036d35 100644 --- a/include/utility.h +++ b/include/utility.h @@ -7,48 +7,48 @@ namespace crow { - namespace black_magic - { - struct OutOfRange - { - OutOfRange(unsigned pos, unsigned length) {} - }; - constexpr unsigned requires_in_range( unsigned i, unsigned len ) - { - return i >= len ? throw OutOfRange(i, len) : i; - } - - class const_str - { - const char * const begin_; - unsigned size_; - - public: - template< unsigned N > - constexpr const_str( const char(&arr)[N] ) : begin_(arr), size_(N - 1) { - static_assert( N >= 1, "not a string literal"); - } - constexpr char operator[]( unsigned i ) const { - return requires_in_range(i, size_), begin_[i]; - } - - constexpr operator const char *() const { - return begin_; - } - - constexpr const char* begin() const { return begin_; } - constexpr const char* end() const { return begin_ + size_; } - - constexpr unsigned size() const { - return size_; - } - }; - - - constexpr unsigned find_closing_tag(const_str s, unsigned p) - { - return s[p] == '>' ? p : find_closing_tag(s, p+1); - } + namespace black_magic + { + struct OutOfRange + { + OutOfRange(unsigned pos, unsigned length) {} + }; + constexpr unsigned requires_in_range( unsigned i, unsigned len ) + { + return i >= len ? throw OutOfRange(i, len) : i; + } + + class const_str + { + const char * const begin_; + unsigned size_; + + public: + template< unsigned N > + constexpr const_str( const char(&arr)[N] ) : begin_(arr), size_(N - 1) { + static_assert( N >= 1, "not a string literal"); + } + constexpr char operator[]( unsigned i ) const { + return requires_in_range(i, size_), begin_[i]; + } + + constexpr operator const char *() const { + return begin_; + } + + constexpr const char* begin() const { return begin_; } + constexpr const char* end() const { return begin_ + size_; } + + constexpr unsigned size() const { + return size_; + } + }; + + + constexpr unsigned find_closing_tag(const_str s, unsigned p) + { + return s[p] == '>' ? p : find_closing_tag(s, p+1); + } constexpr bool is_valid(const_str s, unsigned i = 0, int f = 0) { @@ -322,16 +322,10 @@ template <typename F, typename Set> namespace utility { template <class T, class... Args> - T get_element_by_type(std::tuple<Args...>& t) + T& get_element_by_type(std::tuple<Args...>& t) { return std::get<detail::get_index_of_element_from_tuple_by_type_impl<T, 0, Args...>::value>(t); } - template <class T, class... Args> - T* get_element_by_type_ptr(std::tuple<Args...>& t) - { - return &std::get<detail::get_index_of_element_from_tuple_by_type_impl<T, 0, Args...>::value>(t); - } - } // namespace utility } |