summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMikhail Svetkin <mikhail.svetkin@gmail.com>2020-04-09 20:52:01 +0200
committerMikhail Svetkin <mikhail.svetkin@gmail.com>2020-04-19 00:01:36 +0200
commit9719bf64bb471b8da10e8a5aa419308e8d3b1238 (patch)
treeabbde7b8c4937d94cca647a4dbc76f74b0e135c7 /src
parenta65cc1fa6e8b234ad57838a573ef17f29859bf6d (diff)
Add dependencies file for Coin
Coin by default uses dev branch of qtbase. Add 5.12 qtbase into the dependencies file Change-Id: I849ea65e36c74f153dbd5531c01e3a3b00ab4fef Reviewed-by: Mikhail Svetkin <mikhail.svetkin@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/httpserver/qhttpserver.h2
-rw-r--r--src/httpserver/qhttpserverresponse.h4
-rw-r--r--src/httpserver/qhttpserverrouter.h32
-rw-r--r--src/httpserver/qhttpserverrouterrule.h2
-rw-r--r--src/httpserver/qhttpserverrouterviewtraits.h12
5 files changed, 37 insertions, 15 deletions
diff --git a/src/httpserver/qhttpserver.h b/src/httpserver/qhttpserver.h
index 80bad2c..6d754b1 100644
--- a/src/httpserver/qhttpserver.h
+++ b/src/httpserver/qhttpserver.h
@@ -89,7 +89,7 @@ private:
bool routeImpl(Args &&...args, ViewHandler &&viewHandler)
{
auto routerHandler = [this, viewHandler] (
- QRegularExpressionMatch &match,
+ const QRegularExpressionMatch &match,
const QHttpServerRequest &request,
QTcpSocket *socket) mutable {
auto boundViewHandler = router()->bindCaptured<ViewHandler, ViewTraits>(
diff --git a/src/httpserver/qhttpserverresponse.h b/src/httpserver/qhttpserverresponse.h
index 9f5d3dd..3fef112 100644
--- a/src/httpserver/qhttpserverresponse.h
+++ b/src/httpserver/qhttpserverresponse.h
@@ -95,9 +95,9 @@ public:
void addHeaders(QHttpServerResponder::HeaderList headers);
template<typename Container>
- void addHeaders(const Container &headers)
+ void addHeaders(const Container &headerList)
{
- for (const auto &header : headers)
+ for (const auto &header : headerList)
addHeader(header.first, header.second);
}
diff --git a/src/httpserver/qhttpserverrouter.h b/src/httpserver/qhttpserverrouter.h
index a1f4174..c3f7565 100644
--- a/src/httpserver/qhttpserverrouter.h
+++ b/src/httpserver/qhttpserverrouter.h
@@ -102,7 +102,7 @@ public:
template<typename ViewHandler, typename ViewTraits = QHttpServerRouterViewTraits<ViewHandler>>
typename ViewTraits::BindableType bindCaptured(ViewHandler &&handler,
- QRegularExpressionMatch &match) const
+ const QRegularExpressionMatch &match) const
{
return bindCapturedImpl<ViewHandler, ViewTraits>(
std::forward<ViewHandler>(handler),
@@ -127,13 +127,26 @@ private:
bool addRuleImpl(QHttpServerRouterRule *rule,
const std::initializer_list<int> &metaTypes);
+ // template<typename ViewHandler, typename ViewTraits, int ... Cx, int ... Px>
+ // typename ViewTraits::BindableType bindCapturedImpl(ViewHandler &&handler,
+ // const QRegularExpressionMatch &match,
+ // QtPrivate::IndexesList<Cx...>,
+ // QtPrivate::IndexesList<Px...>) const
+ // {
+ // return std::bind(
+ // std::forward<ViewHandler>(handler),
+ // QVariant(match.captured(Cx + 1))
+ // .value<typename ViewTraits::Arguments::template Arg<Cx>::CleanType>()...,
+ // QtPrivate::QHttpServerRouterPlaceholder<Px>{}...);
+ // }
+
template<typename ViewHandler, typename ViewTraits, int ... Cx, int ... Px>
- typename ViewTraits::BindableType bindCapturedImpl(ViewHandler &&handler,
- QRegularExpressionMatch &match,
+ typename std::enable_if<ViewTraits::Arguments::CapturableCount != 0, typename ViewTraits::BindableType>::type
+ bindCapturedImpl(ViewHandler &&handler,
+ const QRegularExpressionMatch &match,
QtPrivate::IndexesList<Cx...>,
QtPrivate::IndexesList<Px...>) const
{
-
return std::bind(
std::forward<ViewHandler>(handler),
QVariant(match.captured(Cx + 1))
@@ -141,6 +154,17 @@ private:
QtPrivate::QHttpServerRouterPlaceholder<Px>{}...);
}
+ template<typename ViewHandler, typename ViewTraits, int ... Cx, int ... Px>
+ typename std::enable_if<!ViewTraits::Arguments::CapturableCount, typename ViewTraits::BindableType>::type
+ bindCapturedImpl(ViewHandler &&handler,
+ const QRegularExpressionMatch &,
+ QtPrivate::IndexesList<Cx...>,
+ QtPrivate::IndexesList<Px...>) const
+ {
+ return std::bind(
+ std::forward<ViewHandler>(handler),
+ QtPrivate::QHttpServerRouterPlaceholder<Px>{}...);
+ }
QScopedPointer<QHttpServerRouterPrivate> d_ptr;
};
diff --git a/src/httpserver/qhttpserverrouterrule.h b/src/httpserver/qhttpserverrouterrule.h
index 2b168b4..20ad2a2 100644
--- a/src/httpserver/qhttpserverrouterrule.h
+++ b/src/httpserver/qhttpserverrouterrule.h
@@ -48,7 +48,7 @@ class Q_HTTPSERVER_EXPORT QHttpServerRouterRule
Q_DECLARE_PRIVATE(QHttpServerRouterRule)
public:
- using RouterHandler = std::function<void(QRegularExpressionMatch &,
+ using RouterHandler = std::function<void(const QRegularExpressionMatch &,
const QHttpServerRequest &,
QTcpSocket *)>;
diff --git a/src/httpserver/qhttpserverrouterviewtraits.h b/src/httpserver/qhttpserverrouterviewtraits.h
index 377811c..94fd5cc 100644
--- a/src/httpserver/qhttpserverrouterviewtraits.h
+++ b/src/httpserver/qhttpserverrouterviewtraits.h
@@ -308,14 +308,12 @@ struct ViewTraitsHelper {
using Type = std::function<typename FunctionTraits::ReturnType (Args...)>;
};
+ template<int Id>
+ using OffsetArg = typename FunctionTraits::template Arg<CaptureOffset + Id>::Type;
+
template<int ... Idx>
- static constexpr typename FunctionWrapper<
- typename FunctionTraits::template Arg<CaptureOffset + Idx>::Type...>::Type
- eval(QtPrivate::IndexesList<Idx...>) noexcept
- {
- return FunctionWrapper<
- typename FunctionTraits::template Arg<CaptureOffset + Idx>::Type...>::Type();
- }
+ static constexpr typename FunctionWrapper<OffsetArg<Idx>...>::Type
+ eval(QtPrivate::IndexesList<Idx...>) noexcept;
};
};