refs #721 Use QLatin1String for JSON object keys (disabled until Qt 5.7.1).

This commit is contained in:
Mathew Sutcliffe
2016-08-23 17:14:37 +01:00
parent e2e1e53d42
commit 8b1bdbdcf8
3 changed files with 152 additions and 5 deletions

View File

@@ -124,6 +124,9 @@ namespace BlackMisc
{
return Private::invoke(m_ptr, std::forward<T>(object), std::forward<Ts>(args)...);
}
//! Return name as QLatin1String.
Q_DECL_CONSTEXPR auto latin1Name() const { return QLatin1String(m_name); }
};
/*!
@@ -241,12 +244,12 @@ namespace BlackMisc
template <typename F>
static void forEachMemberName(T &object, F &&visitor)
{
forEachImpl([ & ](auto &&member, auto) { std::forward<F>(visitor)(member.in(object), QString(member.m_name)); });
forEachImpl([ & ](auto &&member, auto) { std::forward<F>(visitor)(member.in(object), member.latin1Name()); });
}
template <typename F>
static void forEachMemberName(const T &object, F &&visitor)
{
forEachImpl([ & ](auto &&member, auto) { std::forward<F>(visitor)(member.in(object), QString(member.m_name)); });
forEachImpl([ & ](auto &&member, auto) { std::forward<F>(visitor)(member.in(object), member.latin1Name()); });
}
//! @}