aboutsummaryrefslogtreecommitdiffstats
path: root/include/utility.h
diff options
context:
space:
mode:
authoripknHama <ipknhama@gmail.com>2014-12-12 01:38:57 +0900
committeripknHama <ipknhama@gmail.com>2014-12-12 01:38:57 +0900
commit966867a9ca8ca3dd9e783d628b8184563318d03c (patch)
tree27b86384181a400863580dab1b719ca3b01d2a91 /include/utility.h
parentc2f75a7de1eaa9a0e1a5a97b5fc1ee60c8c3a642 (diff)
downloadcrow-966867a9ca8ca3dd9e783d628b8184563318d03c.tar.gz
crow-966867a9ca8ca3dd9e783d628b8184563318d03c.zip
change pointer to reference; fix up spaces
Diffstat (limited to 'include/utility.h')
-rw-r--r--include/utility.h92
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
}