summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2016-12-09 14:06:50 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2016-12-09 14:07:49 +0000
commit05c2137e867737f3b5903ec5884028dfec1dce56 (patch)
treeb46e489eb4778b33d4782d553617384aa54acda6
parentPass format string as template argument into writer to avoid copying out byte... (diff)
downloadlibadhocutil-05c2137e867737f3b5903ec5884028dfec1dce56.tar.bz2
libadhocutil-05c2137e867737f3b5903ec5884028dfec1dce56.tar.xz
libadhocutil-05c2137e867737f3b5903ec5884028dfec1dce56.zip
Simplify parser templates
-rw-r--r--libadhocutil/compileTimeFormatter.h33
1 files changed, 9 insertions, 24 deletions
diff --git a/libadhocutil/compileTimeFormatter.h b/libadhocutil/compileTimeFormatter.h
index 1a09bb1..d45d662 100644
--- a/libadhocutil/compileTimeFormatter.h
+++ b/libadhocutil/compileTimeFormatter.h
@@ -144,41 +144,26 @@ namespace AdHoc {
}
};
- template <const char * const & S, int offset, char s0, char ... sn>
- struct Parser<S, offset, WRAP_AT, s0, sn...> {
+ template <const char * const & S, bool more, char ... sn>
+ struct ParserBase {
static auto parse()
{
- return Buffer<true, 0, sn..., s0>();
+ return innerparse();
}
static auto innerparse()
{
- return Buffer<true, 0, sn..., s0>();
+ return Buffer<more, 0, sn...>();
}
};
+ template <const char * const & S, int offset, char s0, char ... sn>
+ struct Parser<S, offset, WRAP_AT, s0, sn...> : public ParserBase<S, true, sn..., s0> { };
+
template <const char * const & S, int offset, char ... sn>
- struct Parser<S, offset, WRAP_AT, 0, sn...> {
- static auto parse()
- {
- return Buffer<false, 0, sn...>();
- }
- static auto innerparse()
- {
- return Buffer<false, 0, sn...>();
- }
- };
+ struct Parser<S, offset, WRAP_AT, 0, sn...> : public ParserBase<S, true, sn..., 0> { };
template <const char * const & S, int offset, int roffset, char ... sn>
- struct Parser<S, offset, roffset, 0, sn...> {
- static auto parse()
- {
- return Buffer<false, 0, sn..., 0>();
- }
- static auto innerparse()
- {
- return Buffer<false, 0, sn..., 0>();
- }
- };
+ struct Parser<S, offset, roffset, 0, sn...> : public ParserBase<S, false, sn..., 0>{ };
template <const char * const & S>
struct Formatter {