Fix some qdoc warnings for QString/View/Tokenizer

Use correct member function prototype, which requires the template declaration.
Remove see-alsos that don't exist.
Document parameters for qTokenize.

Still lots of warnings from QStringTokenizer, due to the inheritance structure
of that template class and the declarations of nested types in undocumented
base classes.

Also, qdoc doesn't seem to recognize training this-lvalue/this-rvalue
declarations for overloads, and considers the second toContainer documentations
to override the first.

Change-Id: Iadf967d3328ddda52b6f66786836853bddeda79b
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
bb10
Volker Hilsheimer 2020-09-25 15:24:58 +02:00
parent c2be134d15
commit 756104d5e1
4 changed files with 62 additions and 39 deletions

View File

@ -2387,7 +2387,7 @@ QString::QString(QChar ch)
\snippet qstring/main.cpp 45
If you want to append a certain number of identical characters to
the string, use the \l {QString::}{resize(int, QChar)} overload.
the string, use the \l {QString::}{resize(qsizetype, QChar)} overload.
If you want to expand the string so that it reaches a certain
width and fill the new positions with a particular character, use
@ -2417,7 +2417,7 @@ void QString::resize(qsizetype size)
\overload
\since 5.7
Unlike \l {QString::}{resize(int)}, this overload
Unlike \l {QString::}{resize(qsizetype)}, this overload
initializes the new characters to \a fillChar:
\snippet qstring/main.cpp 46

View File

@ -143,30 +143,30 @@ QT_BEGIN_NAMESPACE
use(e);
\endcode
\sa QStringView::split(), QLatin1String::split(), QRegularExpression
\sa QStringView::split(), QString::split(), QRegularExpression
*/
/*!
\typedef QStringTokenizer::value_type
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::value_type
Alias for \c{const QStringView} or \c{const QLatin1String},
depending on the tokenizer's \c Haystack template argument.
*/
/*!
\typedef QStringTokenizer::difference_type
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::difference_type
Alias for qsizetype.
*/
/*!
\typedef QStringTokenizer::size_type
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::size_type
Alias for qsizetype.
*/
/*!
\typedef QStringTokenizer::reference
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::reference
Alias for \c{value_type &}.
@ -175,13 +175,13 @@ QT_BEGIN_NAMESPACE
*/
/*!
\typedef QStringTokenizer::const_reference
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::const_reference
Alias for \c{value_type &}.
*/
/*!
\typedef QStringTokenizer::pointer
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::pointer
Alias for \c{value_type *}.
@ -190,13 +190,13 @@ QT_BEGIN_NAMESPACE
*/
/*!
\typedef QStringTokenizer::const_pointer
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::const_pointer
Alias for \c{value_type *}.
*/
/*!
\typedef QStringTokenizer::iterator
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::iterator
This typedef provides an STL-style const iterator for
QStringTokenizer.
@ -208,7 +208,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
\typedef QStringTokenizer::const_iterator
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::const_iterator
This typedef provides an STL-style const iterator for
QStringTokenizer.
@ -217,7 +217,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
\typedef QStringTokenizer::sentinel
\typedef template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::sentinel
This typedef provides an STL-style sentinel for
QStringTokenizer::iterator and QStringTokenizer::const_iterator.
@ -226,8 +226,8 @@ QT_BEGIN_NAMESPACE
*/
/*!
\fn QStringTokenizer(Haystack haystack, String needle, Qt::CaseSensitivity cs, Qt::SplitBehavior sb)
\fn QStringTokenizer(Haystack haystack, String needle, Qt::SplitBehavior sb, Qt::CaseSensitivity cs)
\fn template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::QStringTokenizer(Haystack haystack, Needle needle, Qt::CaseSensitivity cs, Qt::SplitBehavior sb)
\fn template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::QStringTokenizer(Haystack haystack, Needle needle, Qt::SplitBehavior sb, Qt::CaseSensitivity cs)
Constructs a string tokenizer that splits the string \a haystack
into substrings wherever \a needle occurs, and allows iteration
@ -241,11 +241,11 @@ QT_BEGIN_NAMESPACE
If \a sb is QString::SkipEmptyParts, empty entries don't
appear in the result. By default, empty entries are included.
\sa QStringView::split(), QLatin1String::split(), Qt::CaseSensitivity, Qt::SplitBehavior
\sa QStringView::split(), QString::split(), Qt::CaseSensitivity, Qt::SplitBehavior
*/
/*!
\fn QStringTokenizer::const_iterator QStringTokenizer::begin() const
\fn template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::const_iterator QStringTokenizer<Haystack, Needle>::begin() const
Returns a const \l{STL-style iterators}{STL-style iterator}
pointing to the first token in the list.
@ -254,7 +254,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
\fn QStringTokenizer::const_iterator QStringTokenizer::cbegin() const
\fn template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::const_iterator QStringTokenizer<Haystack, Needle>::cbegin() const
Same as begin().
@ -262,7 +262,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
\fn QStringTokenizer::sentinel QStringTokenizer::end() const
\fn template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::sentinel QStringTokenizer<Haystack, Needle>::end() const
Returns a const \l{STL-style iterators}{STL-style sentinel}
pointing to the imaginary token after the last token in the list.
@ -271,7 +271,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
\fn QStringTokenizer::sentinel QStringTokenizer::cend() const
\fn template <typename Haystack, typename Needle> QStringTokenizer<Haystack, Needle>::sentinel QStringTokenizer<Haystack, Needle>::cend() const
Same as end().
@ -279,19 +279,18 @@ QT_BEGIN_NAMESPACE
*/
/*!
\fn QStringTokenizer::toContainer(Container &&c) const &
\fn template <typename Haystack, typename Needle> template<typename Container> Container QStringTokenizer<Haystack, Needle>::toContainer(Container &&c) const &
Convenience method to convert the lazy sequence into a
(typically) random-access container.
Converts the lazy sequence into a (typically) random-access container of
type \c Container.
This function is only available if \c Container has a \c value_type
matching this tokenizer's value_type.
If you pass in a named container (an lvalue), then that container
is filled, and a reference to it is returned.
If you pass in a temporary container (an rvalue, incl. the default
argument), then that container is filled, and returned by value.
If you pass in a named container (an lvalue)for \a c, then that container
is filled, and a reference to it is returned. If you pass in a temporary
container (an rvalue, incl. the default argument), then that container is
filled, and returned by value.
\code
// assuming tok's value_type is QStringView, then...
@ -311,9 +310,12 @@ QT_BEGIN_NAMESPACE
*/
/*!
\fn QStringTokenizer::toContainer(Container &&c) const &&
\fn template <typename Haystack, typename Needle> template<typename Container> Container QStringTokenizer<Haystack, Needle>::toContainer(Container &&c) const &&
\overload
Converts the lazy sequence into a (typically) random-access container of
type \c Container.
In addition to the constraints on the lvalue-this overload, this
rvalue-this overload is only available when this QStringTokenizer
does not store the haystack internally, as this could create a
@ -341,17 +343,30 @@ QT_BEGIN_NAMESPACE
func(QStringTokenizer{QStringView{widget.text()}, u','}.toContainer());
// OK: compiler keeps widget.text() around until after func() has executed
\endcode
If you pass in a named container (an lvalue)for \a c, then that container
is filled, and a reference to it is returned. If you pass in a temporary
container (an rvalue, incl. the default argument), then that container is
filled, and returned by value.
*/
/*!
\fn qTokenize(Haystack &&haystack, Needle &&needle, Flags...flags)
\fn template <typename Haystack, typename Needle, typename...Flags> auto qTokenize(Haystack &&haystack, Needle &&needle, Flags...flags)
\relates QStringTokenizer
\since 6.0
Factory function for QStringTokenizer. You can use this function
if your compiler doesn't, yet, support C++17 Class Template
Argument Deduction (CTAD), but we recommend direct use of
QStringTokenizer with CTAD instead.
Factory function for a QStringTokenizer that splits the string \a haystack
into substrings wherever \a needle occurs, and allows iteration
over those strings as they are found. If \a needle does not match
anywhere in \a haystack, a single element containing \a haystack
is produced.
Pass values from Qt::CaseSensitivity and Qt::SplitBehavior enumerators
as \a flags to modify the behavior of the tokenizer.
You can use this function if your compiler doesn't, yet, support C++17 Class
Template Argument Deduction (CTAD). We recommend direct use of QStringTokenizer
with CTAD instead.
*/
QT_END_NAMESPACE

View File

@ -328,7 +328,11 @@ public:
this->needleView(needle), sb, cs}
{}
#ifdef Q_QDOC
template<typename Container>
#else
template<typename Container = QList<value_type>, if_compatible_container<Container> = true>
#endif
Container toContainer(Container &&c = {}) const &
{
for (auto e : *this)
@ -336,8 +340,12 @@ public:
return c;
}
#ifdef Q_QDOC
template<typename Container>
#else
template<typename Container = QList<value_type>, if_compatible_container<Container> = true,
if_haystack_not_pinned<Container> = true>
#endif
Container toContainer(Container &&c = {}) const &&
{
for (auto e : *this)

View File

@ -1227,11 +1227,11 @@ QT_BEGIN_NAMESPACE
/*!
\fn QStringView::tokenize(Needle &&sep, Flags...flags) const
\fn QLatin1String::tokenize(Needle &&sep, Flags...flags) const
\fn QString::tokenize(Needle &&sep, Flags...flags) const &
\fn QString::tokenize(Needle &&sep, Flags...flags) const &&
\fn QString::tokenize(Needle &&sep, Flags...flags) &&
\fn template <typename Needle, typename...Flags> auto QStringView::tokenize(Needle &&sep, Flags...flags) const
\fn template <typename Needle, typename...Flags> auto QLatin1String::tokenize(Needle &&sep, Flags...flags) const
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) const &
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) const &&
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) &&
Splits the string into substring views wherever \a sep occurs, and
returns a lazy sequence of those strings.