From 48008cdc6e96796718d09fd41734bfa56745f9fe Mon Sep 17 00:00:00 2001 From: "Daniel J. Hofmann" Date: Wed, 17 Feb 2016 15:10:49 -0800 Subject: [PATCH] Enforce parameter and grammar type to catch subtle bugs --- include/server/api/parameters_parser.hpp | 1 + src/server/api/parameters_parser.cpp | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/server/api/parameters_parser.hpp b/include/server/api/parameters_parser.hpp index 548f48aab..dc990edd4 100644 --- a/include/server/api/parameters_parser.hpp +++ b/include/server/api/parameters_parser.hpp @@ -21,6 +21,7 @@ namespace api namespace detail { template using is_parameter_t = std::is_base_of; +template using is_grammar_t = std::is_base_of; } // ns detail // Starts parsing and iter and modifies it until iter == end or parsing failed diff --git a/src/server/api/parameters_parser.cpp b/src/server/api/parameters_parser.cpp index c636659f7..435e34fc8 100644 --- a/src/server/api/parameters_parser.cpp +++ b/src/server/api/parameters_parser.cpp @@ -18,7 +18,10 @@ namespace api namespace detail { -template +template ::value, int>::type = 0, + typename std::enable_if::value, int>::type = 0> boost::optional parseParameters(std::string::iterator &iter, std::string::iterator end) { GrammarT grammar; @@ -54,18 +57,19 @@ boost::optional parseParameters(std::string::ite end); } -//template <> -//boost::optional parseParameters(std::string::iterator &iter, +// template <> +// boost::optional parseParameters(std::string::iterator &iter, // std::string::iterator end) //{ // return detail::parseParameters(iter, end); //} // -//template <> -//boost::optional parseParameters(std::string::iterator &iter, +// template <> +// boost::optional parseParameters(std::string::iterator &iter, // std::string::iterator end) //{ -// return detail::parseParameters(iter, end); +// return detail::parseParameters(iter, +// end); //} } // ns api