本文整理汇总了C++中Arg::callback方法的典型用法代码示例。如果您正苦于以下问题:C++ Arg::callback方法的具体用法?C++ Arg::callback怎么用?C++ Arg::callback使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Arg
的用法示例。
在下文中一共展示了Arg::callback方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parse
bool Args::parse(int argc, char **argv){
/* Simple class to parse some commandline arguments */
QTextStream qerr(stderr, QIODevice::WriteOnly);
QHash<QString, QString> args;
/* to accept parameters like -f=spam-eggs */
QRegExp short_key_value_re("-([^=-])=(.+)");
/* to accept parameters like -f */
QRegExp short_key_re("-([^=-]+)");
/* to accept parameters like --foo-bar=spam-eggs */
QRegExp key_value_re("--([^=]+)=(.+)");
/* to accept parameters like --foo-bar */
QRegExp key_re("--([^=]+)");
/* to accept values for space separated parameters */
QRegExp value_re("([^-]+.*|.)");
/* Using argc/argv so all parameters work, not just the ones not filtered
out by Qt */
program = QString(argv[0]);
for(int i=1; i<argc; i++){
int j;
QString key;
QString value;
QString tmp = QString(argv[i]);
if(short_key_value_re.exactMatch(tmp)){
key = short_key_value_re.cap(1);
value = short_key_value_re.cap(2);
if(key.length() > 1){
qerr << "Can't have multiple short arguments with values." \
<< endl;
qerr << "Did you forget a '-'? Try --" << key << "=" \
<< value << " instead" << endl;
return false;
}
}else if(short_key_re.exactMatch(tmp)){
key = short_key_re.cap(1);
if(short_key_re.cap(1).length() != 1){
j = short_key_re.cap(1).length();
while(j--){
args.insert(QString(key[j]), value);
}
continue;
}
}else if(key_value_re.exactMatch(tmp)){
key = key_value_re.cap(1);
value = key_value_re.cap(2);
}else if(key_re.exactMatch(tmp)){
key = key_re.cap(1);
}
if(i+1 < argc){
tmp = QString(argv[i+1]);
if(value == NULL && value_re.exactMatch(tmp)){
i++;
value = value_re.cap(1);
}
}
args.insert(key, value);
}
QHashIterator<QString, Arg*> j(this->args);
while(j.hasNext()){
j.next();
Arg arg = *j.value();
if(args.contains(arg.getName())){
/* Called help, exiting to display help */
if(arg.getName() == "help"){
return false;
}
insert(arg.getName(), arg.callback(args.take(arg.getName())));
}else if(args.contains(arg.getShortname())){
/* Called help, exiting to display help */
if(arg.getName() == "help"){
return false;
}
insert(arg.getName(),
arg.callback(args.take(arg.getShortname())));
}else if(arg.getRequired()){
qerr << "Argument '" << j.key() \
<< "' is required and not given." << endl;
return false;
}else{
insert(arg.getName(), arg.getDefault());
}
}
if(!args.empty()){
qerr << "The following unsupported arguments were found:" << endl;
QHashIterator<QString, QString> j(args);
while(j.hasNext()){
j.next();
if(j.key().length() == 1){
qerr << "\t-";
}else{
qerr << "\t--";
//.........这里部分代码省略.........