23 #ifndef TCLAP_MULTIPLE_ARGUMENT_H
24 #define TCLAP_MULTIPLE_ARGUMENT_H
38 #if defined(HAVE_SSTREAM)
40 #elif defined(HAVE_STRSTREAM)
43 #error "Need a stringstream (sstream or strstream) to compile!"
50 namespace MULTI_ARG_HELPER {
91 #if defined(HAVE_SSTREAM)
92 std::istringstream is(val);
93 #elif defined(HAVE_STRSTREAM)
94 std::istrstream is(val.c_str());
96 #error "Need a stringstream (sstream or strstream) to compile!"
103 if ( is.peek() != EOF )
114 if ( valuesRead > 1 )
216 const std::string& name,
217 const std::string& desc,
219 const std::string& typeDesc,
241 const std::string& name,
242 const std::string& desc,
244 const std::string& typeDesc,
264 const std::string& name,
265 const std::string& desc,
287 const std::string& name,
288 const std::string& desc,
302 virtual bool processArg(
int* i, std::vector<std::string>& args);
314 virtual std::string
shortID(
const std::string& val=
"val")
const;
320 virtual std::string
longID(
const std::string& val=
"val")
const;
334 const std::string& name,
335 const std::string& desc,
337 const std::string& typeDesc,
339 :
Arg( flag, name, desc, req, true, v ),
340 _typeDesc( typeDesc ),
349 const std::string& name,
350 const std::string& desc,
352 const std::string& typeDesc,
355 :
Arg( flag, name, desc, req, true, v ),
356 _typeDesc( typeDesc ),
369 const std::string& name,
370 const std::string& desc,
374 :
Arg( flag, name, desc, req, true, v ),
375 _typeDesc( constraint->shortID() ),
376 _constraint( constraint ),
384 const std::string& name,
385 const std::string& desc,
390 :
Arg( flag, name, desc, req, true, v ),
391 _typeDesc( constraint->shortID() ),
392 _constraint( constraint ),
408 if ( _hasBlanks( args[*i] ) )
411 std::string flag = args[*i];
412 std::string value =
"";
414 trimFlag( flag, value );
416 if ( argMatches( flag ) )
420 "Couldn't find delimiter for this argument!",
427 if ( static_cast<unsigned int>(*i) < args.size() )
428 _extractValue( args[*i] );
434 _extractValue( value );
470 std::string
id =
Arg::longID(_typeDesc) +
" (accepted multiple times)";
484 if ( _values.size() > 1 )
503 "from string '" + val +
"'", toString() ) );
507 "parsed from string '" + val +
"'",
509 if ( _constraint != NULL )
510 if ( ! _constraint->check( _values.back() ) )
512 "' does not meet constraint: " +
513 _constraint->description(),
520 bool am = _allowMore;