2023-03-06 14:42:04 +01:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
// Copyright The Music Player Daemon Project
|
2013-11-24 12:19:51 +01:00
|
|
|
|
|
|
|
#ifndef MPD_UTIL_OPTIONDEF_HXX
|
|
|
|
#define MPD_UTIL_OPTIONDEF_HXX
|
|
|
|
|
2020-03-12 23:20:59 +01:00
|
|
|
#include <cassert>
|
2018-01-16 11:25:18 +01:00
|
|
|
|
2013-11-24 12:19:51 +01:00
|
|
|
/**
|
|
|
|
* Command line option definition.
|
|
|
|
*/
|
|
|
|
class OptionDef
|
|
|
|
{
|
|
|
|
const char *long_option;
|
|
|
|
char short_option;
|
2018-01-17 11:14:57 +01:00
|
|
|
bool has_value = false;
|
2013-11-24 12:19:51 +01:00
|
|
|
const char *desc;
|
|
|
|
public:
|
|
|
|
constexpr OptionDef(const char *_long_option, const char *_desc)
|
|
|
|
: long_option(_long_option),
|
|
|
|
short_option(0),
|
|
|
|
desc(_desc) { }
|
|
|
|
|
|
|
|
constexpr OptionDef(const char *_long_option,
|
|
|
|
char _short_option, const char *_desc)
|
|
|
|
: long_option(_long_option),
|
|
|
|
short_option(_short_option),
|
|
|
|
desc(_desc) { }
|
|
|
|
|
2018-01-17 11:14:57 +01:00
|
|
|
constexpr OptionDef(const char *_long_option,
|
|
|
|
char _short_option, bool _has_value,
|
|
|
|
const char *_desc) noexcept
|
|
|
|
:long_option(_long_option),
|
|
|
|
short_option(_short_option),
|
|
|
|
has_value(_has_value),
|
|
|
|
desc(_desc) {}
|
|
|
|
|
2018-01-16 10:11:35 +01:00
|
|
|
constexpr bool HasLongOption() const { return long_option != nullptr; }
|
|
|
|
constexpr bool HasShortOption() const { return short_option != 0; }
|
2018-01-17 11:14:57 +01:00
|
|
|
|
|
|
|
constexpr bool HasValue() const noexcept {
|
|
|
|
return has_value;
|
|
|
|
}
|
|
|
|
|
2018-01-16 10:11:35 +01:00
|
|
|
constexpr bool HasDescription() const { return desc != nullptr; }
|
2013-11-24 12:19:51 +01:00
|
|
|
|
|
|
|
const char *GetLongOption() const {
|
|
|
|
assert(HasLongOption());
|
|
|
|
return long_option;
|
|
|
|
}
|
|
|
|
|
|
|
|
char GetShortOption() const {
|
|
|
|
assert(HasShortOption());
|
|
|
|
return short_option;
|
|
|
|
}
|
|
|
|
|
|
|
|
const char *GetDescription() const {
|
|
|
|
assert(HasDescription());
|
|
|
|
return desc;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|