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>
This commit is contained in:
Mikhail Svetkin 2020-04-09 20:52:01 +02:00
parent a65cc1fa6e
commit 9719bf64bb
9 changed files with 45 additions and 17 deletions

View File

@ -0,0 +1,3 @@
dependencies:
../../qt/qt5.git:
ref: "5.12"

4
dependencies.yaml Normal file
View File

@ -0,0 +1,4 @@
dependencies:
../../qt/qtbase:
ref: "7d7afe1d2b1d85ea5221d1d2883c8bf80aa0e927"
required: true

View File

@ -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>(

View File

@ -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);
}

View File

@ -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;
};

View File

@ -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 *)>;

View File

@ -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;
};
};

View File

@ -3,7 +3,6 @@ TEMPLATE = subdirs
QT = network
SUBDIRS = \
cmake \
qabstracthttpserver \
qhttpserver \
qhttpserverresponder \

View File

@ -57,7 +57,7 @@ struct HttpServer : QAbstractHttpServer {
void route(const char *path, const QHttpServerRequest::Methods methods, ViewHandler &&viewHandler)
{
auto rule = new QHttpServerRouterRule(
path, methods, [this, &viewHandler] (QRegularExpressionMatch &match,
path, methods, [this, &viewHandler] (const QRegularExpressionMatch &match,
const QHttpServerRequest &request,
QTcpSocket *socket) {
auto boundViewHandler = router.bindCaptured<ViewHandler>(