Giriş
Bu sınıf options_description.add_options() metodu tarafından yaratılır. Amacı operator () metodları sunmaktır.
value semantic okunan değerin ne tipte olması gerektiğini belirtir.
notifier okunan değer üzerinde doğrulama yapmak içindir.
Constructor
Şöyle yaparız.
Şöyle yaparız.
Bu sınıf options_description.add_options() metodu tarafından yaratılır. Amacı operator () metodları sunmaktır.
value semantic okunan değerin ne tipte olması gerektiğini belirtir.
notifier okunan değer üzerinde doğrulama yapmak içindir.
Constructor
Şöyle yaparız.
options_description desc ("Hello world!");
desc.add_options ()
("help", "Veni vidi vici")
;
operator () metodu - seçenek + açıklamaŞöyle yaparız.
desc.add_options()
("help,h", "Show help")
;
Şöyle yaparız.desc.add_options()("version,v", "print version string")
operator () metodu - seçenek + value semantic + açıklama
bool için şöyle yaparız.
default_value, seçenek komut satırında kullanılmazse bile elde edilir .
Örnek
default_value tanımlı bir width seçeneği olsun. Şöyledir.
string tipinden default value için şöyle yaparız.
float tipinden default value için şöyle yaparız.
int tipinden default value için şöyle yaparız
Kendi enum tipinde default value için şöyle yaparız.
notifier için imza şöyle
Şu şekildeki satırları parse etmek için kullanılır.
operator () metodu - seçenek + value semantic + implicit_value + açıklama
implicit_value, seçenek komut satırında kullanır ancak değer belirtilmezse elde edilir . implicit_value tanımlı bir width seçeneği olsun. Şöyledir.
Şöyle yaparız.
Elimizde şu komut olsun.
Şöyle yaparız.
options_description_easy_init Sınfı Bound Value yazısına taşıdım.
("checkQualitySystem,c", bool_switch(), "only check quality")
string için şöyle yaparız.("output,o", value<std::string>(), "Output file ");
operator () metodu - seçenek + value semantic + default_value + açıklamadefault_value, seçenek komut satırında kullanılmazse bile elde edilir .
Örnek
default_value tanımlı bir width seçeneği olsun. Şöyledir.
./a.out # implies width=75 if that's the default_value for width
./a.out --width=80 # default_value not used
Örnekstring tipinden default value için şöyle yaparız.
("input,i", value<std::string>()->default_value("."), "Input directory")
Örnekfloat tipinden default value için şöyle yaparız.
("baseNrate,N", value<float>() -> default_value(0.05), "maximum rate")
Örnekint tipinden default value için şöyle yaparız
("domainSize,d", value<int>()->default_value(64), "Domain size" )
ÖrnekKendi enum tipinde default value için şöyle yaparız.
enum class Ipc : int8_t
{
TCP = 0,
UDP,
};
po::options_description desc("Usage");
desc.add_options()
("ipc,i", po::value<Ipc>()->default_value(Ipc::TCP, "TCP"), "set the ipc");
operator () metodu - seçenek + value semantic + default_value + notifier + açıklamanotifier için imza şöyle
typed_value * notifier(function1< void, const T & > f);Kendi sınıfımızı çağırmak için şöyle yaparız.
notifier(boost::bind(&Foo::start_foo, boost::ref(foo), _1))
Lambda çağırmak için şöyle yaparız.notifier([&foo](const T& v) { return foo.start_foo(v); })
Seçeneğin değerini kontrol edebilmemizi sağlar. Hata varsa exception fırlatılır. Şöyle yaparız.char v;
("world", po::value<>(&v)->default_value('a')->notifier(
[](char x) {
if (x != 'a' && x != 'b')
throw po::validation_error(
po::validation_error::invalid_option_value,
"world", std::string(1, x));
}),
"An option must be set to either 'a' or 'b'");
operator () metodu - seçenek + value semantic + multitoken + notifier + açıklamaŞu şekildeki satırları parse etmek için kullanılır.
[instruments]
prop= 1 2.9
Şöyle yaparız.
// Setup options.
po::options_description desc("Options");
desc.add_options()
("instruments.prop", po::value<std::string>()->multitoken()->
notifier([&c](std::string const& v) {
auto it = boost::make_split_iterator(v,
boost::token_finder(boost::algorithm::is_any_of(" ,")));
std::transform(it, {}, back_inserter(c), [](auto& s) {
return boost::lexical_cast<double>(s);
});
}),
"plugin names" );
operator () metodu - seçenek + value semantic + implicit_value + açıklama
implicit_value, seçenek komut satırında kullanır ancak değer belirtilmezse elde edilir . implicit_value tanımlı bir width seçeneği olsun. Şöyledir.
./a.out --width # implies width=75 if that's the implicit_value for width
./a.out --width=80 # implicit value not used
İmzası şöyle
typed_value * implicit_value(const T & v);
Açıklaması şöyleImplicit seçenek bitişik kullanılır. Şöyle yaparız.Specifies an implicit value, which will be used if the option is given, but without an adjacent value. Using this implies that an explicit value is optional, but if given, must be strictly adjacent to the option, i.e.: '-ovalue' or '--option=value'. Giving '-o' or '--option' will cause the implicit value to be applied.
./a.out -w80
Ya da Implicit değer = ile kullanılır. Şöyle yaparız.$ ./opttest --writeMappings=stuff
Şu yanlıştır./a.out -w 80 # wrong: 80 parsed as extra arg if implicit_value is defined
Kodda şöyle yaparız.string fname;
("...", po::value<string>(&fname)->default_value("")->implicit_value("-"),"...");
operator () metodu - seçenek + value semantic + required + açıklamaŞöyle yaparız.
("var1", po::value<int>()->required(), "var1");
operator () metodu - seçenek + value semantic + multitoken + açıklamaElimizde şu komut olsun.
a.out -i file0 file1Aslında bu komut şu komut ile aynıdır.
a.out -i file0 -i file1Şöyle yaparız.
desc.add_options()
("input-file,i", po::value< vector<std::string> >()->multitoken(), "input file");
operator () metodu - seçenek + value semantic + required + multitoken + açıklamaŞöyle yaparız.
("rawFastq,f", value< vector<path> >() -> required() -> multitoken(), "raw")
operator () metodu - seçenek + bound valueoptions_description_easy_init Sınfı Bound Value yazısına taşıdım.
Hiç yorum yok:
Yorum Gönder