aboutsummaryrefslogtreecommitdiffstats
path: root/utility.h
diff options
context:
space:
mode:
authoripknHama <ipknhama@gmail.com>2014-04-03 05:31:32 +0900
committeripknHama <ipknhama@gmail.com>2014-04-03 08:29:22 +0900
commitd533a619c99c5ead31e86afd14dd9b017c63a9ab (patch)
tree3afcd6fd4ddb83ea623fbba374a011ff40042659 /utility.h
parent5e5d69688435ffe8fc148af73fe33b029d9f6110 (diff)
downloadcrow-d533a619c99c5ead31e86afd14dd9b017c63a9ab.tar.gz
crow-d533a619c99c5ead31e86afd14dd9b017c63a9ab.zip
routing class working version
Diffstat (limited to 'utility.h')
-rw-r--r--utility.h15
1 files changed, 7 insertions, 8 deletions
diff --git a/utility.h b/utility.h
index c8575d3..8499532 100644
--- a/utility.h
+++ b/utility.h
@@ -14,37 +14,36 @@ namespace flask
}
// from http://akrzemi1.wordpress.com/2011/05/11/parsing-strings-at-compile-time-part-i/
- class StrWrap
+ class const_str
{
const char * const begin_;
unsigned size_;
public:
template< unsigned N >
- constexpr StrWrap( const char(&arr)[N] ) : begin_(arr), size_(N - 1) {
+ 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 ) {
+ constexpr char operator[]( unsigned i ) const {
return requires_in_range(i, size_), begin_[i];
}
- constexpr operator const char *() {
+ constexpr operator const char *() const {
return begin_;
}
- constexpr unsigned size() {
+ constexpr unsigned size() const {
return size_;
}
};
- constexpr int find_closing_tag(StrWrap s, std::size_t p)
+ constexpr unsigned find_closing_tag(const_str s, unsigned p)
{
return s[p] == '>' ? p : find_closing_tag(s, p+1);
}
- constexpr int count(StrWrap s, int i=0)
+ constexpr int count(const_str s, int i=0)
{
return i == s.size() ? 0 : s[i] == '<' ? 1+count(s,i+1) : count(s,i+1);
}