[program-options] Ticket #1132, multitoken() and zero_token()

Hello, I would like to have an option which allows multi token but not multiple occurrences of the option or at least a way to distinguish the occurrences: E.g. something like: program.exe --option value1 value2 I tried the following: 1) desc.add_options()("option", value<string>()->multitoken(), "help"); With the above command line I get exception: multiple values not allowed 2) desc.add_options()("option", value<vector<string> >(), "help"); Command line is parsed without error but only value1 is stored in the vector -> ERROR, should report 3) desc.add_options()("option", value<vector<string> >()->multitoken(), "help"); Command line is parsed without error both values are stored in the vector, but program.exe --option value1 --option value2 and program.exe --option value1 value2 leads to the same vector contents. With the current version it isn't possible to distinguish to occurrences of a certain option and it is not possible to implement an option which has the multitoken attribute but isn't allowed to occur several times. I'm willing to work on a patch for this issue, but first I want to discuss how to solve this, i.e. how the library should behave. The problem is possibly that specifying a list or vector implies that an option can occur multiple times. I think maybe following solution could work: 1) desc.add_options()("option", value<vector<string> >(), "help"); multiple occurrences of the option are allowed and pushed to the vector but only one value per option occurrence (like it is implemented now) 2) desc.add_options()("option", value<vector<string> >()->multitoken(), "help"); multiple occurrences of the option are NOT allowed, the multiple tokens/values are pushed to the vector 3) desc.add_options()("option", value<vector<vector<string> >
()->multitoken(), "help"); multiple occurrences of the option are allowed, the multiple tokens/values are pushed to the inner vector
E.g. program.exe --option value1 value2 --option value3 --option value4 value5 This would result in the following storage sheme: { { value1, value2 } { value3 } { value4 value5 } } I'm not sure if a could become a friend of this implementation ... but it would work at least. Another way would be to join the multitokens into a single string: { "value1 value2" "value3" "value4 value5" } .. but this I don't like :-(. What do you think? Thanks & regards, Sascha PS: Is somebody working on ticket #1132 ??
participants (1)
-
Sascha Ochsenknecht