1// Copyright (C) 2020 The Qt Company Ltd.
2// Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QCOMMANDLINEOPTION_H
6#define QCOMMANDLINEOPTION_H
7
8#include <QtCore/qstringlist.h>
9#include <QtCore/qshareddata.h>
10
11QT_REQUIRE_CONFIG(commandlineparser);
12
13QT_BEGIN_NAMESPACE
14
15class QCommandLineOptionPrivate;
16
17class Q_CORE_EXPORT QCommandLineOption
18{
19public:
20 enum Flag {
21 HiddenFromHelp = 0x1,
22 ShortOptionStyle = 0x2,
23 IgnoreOptionsAfter = 0x4,
24 };
25 Q_DECLARE_FLAGS(Flags, Flag)
26
27 explicit QCommandLineOption(const QString &name);
28 explicit QCommandLineOption(const QStringList &names);
29 /*implicit*/ QCommandLineOption(const QString &name, const QString &description,
30 const QString &valueName = QString(),
31 const QString &defaultValue = QString());
32 /*implicit*/ QCommandLineOption(const QStringList &names, const QString &description,
33 const QString &valueName = QString(),
34 const QString &defaultValue = QString());
35 QCommandLineOption(const QCommandLineOption &other);
36
37 ~QCommandLineOption();
38
39 QCommandLineOption &operator=(const QCommandLineOption &other);
40 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCommandLineOption)
41
42 void swap(QCommandLineOption &other) noexcept
43 { d.swap(other&: other.d); }
44
45 QStringList names() const;
46
47 void setValueName(const QString &name);
48 QString valueName() const;
49
50 void setDescription(const QString &description);
51 QString description() const;
52
53 void setDefaultValue(const QString &defaultValue);
54 void setDefaultValues(const QStringList &defaultValues);
55 QStringList defaultValues() const;
56
57 Flags flags() const;
58 void setFlags(Flags aflags);
59
60private:
61 QSharedDataPointer<QCommandLineOptionPrivate> d;
62};
63
64Q_DECLARE_SHARED(QCommandLineOption)
65Q_DECLARE_OPERATORS_FOR_FLAGS(QCommandLineOption::Flags)
66
67
68QT_END_NAMESPACE
69
70#endif // QCOMMANDLINEOPTION_H
71

source code of qtbase/src/corelib/tools/qcommandlineoption.h