31 template <
class T> T
parse(
const std::string& word,
const char* args)
34 auto number = strtoul( word.c_str(), &p, 10 );
35 if( *p == 0 )
return T(number);
39 auto compare = [](
const char* word,
const char* otherWord,
const unsigned& nChar)
41 if( strlen(word) != nChar )
return false;
42 for(
size_t x = 0; x != nChar ; ++x)
if( word[x] != otherWord[x] )
return false;
46 while( args[begin] !=
'\0' )
48 while( args[begin] ==
' ' ) begin++;
49 for( end=begin; args[end] !=
'\0'; end++ )
if( args[end] ==
',' )
break;
50 if( compare( word.c_str(), args + begin , end-begin ) ) { found =
true;
break; }
53 if( args[end] ==
'\0' )
break;
55 if(!found)
return T::Invalid;