27 "--show-symbol-table",
28 "--show-function-table",
33 "--string-abstraction",
52 for(std::size_t i=0; i<
options.size(); i++)
55 if(std::string(
options[i], 0, 2)==
"--")
73 std::string(
options[i], 1, std::string::npos));
86 std::string tmp=
"/D"+
options[i+1];
104 const wchar_t *CL_env=_wgetenv(L
"CL");
111 const char *CL_env=getenv(
"CL");
126 std::vector<std::string>
options;
129 for(
int i=1; i<argc; i++)
135 static std::istream &
my_wgetline(std::istream &in, std::wstring &dest)
164 dest+=wchar_t(ch1+(ch2<<8));
173 std::ifstream infile(
file);
177 std::cerr <<
"failed to open response file `" 184 getline(infile, line);
186 line[0]==
static_cast<char>(0xff) &&
187 line[1]==static_cast<char>(0xfe))
194 std::ifstream infile2(
file, std::ios::binary);
203 std::wifstream infile2(
file, std::ios::binary);
206 while(std::getline(infile2, wline))
211 else if(line.size()>=3 &&
212 line[0]==
static_cast<char>(0xef) &&
213 line[1]==static_cast<char>(0xbb) &&
214 line[2]==
static_cast<char>(0xbf))
220 while(getline(infile, line))
227 while(getline(infile, line))
245 std::vector<std::string>
options;
247 bool in_quotes=
false;
248 for(std::size_t i=0; i<line.size(); i++)
252 if(ch==
' ' && !in_quotes)
260 in_quotes=!in_quotes;
274 const std::string &s)
283 std::cout <<
"Warning: uninterpreted non-CL option `" 418 if(s[0]!=
'/' && s[0]!=
'-')
426 if(std::string(s, 1, std::string::npos)==
ms_cl_flags[j])
441 option.
optstring=std::string(s, 1, std::string::npos);
446 if(!optnr.has_value())
461 if(std::string(s, 1, ms_cl_prefix.size())==ms_cl_prefix)
467 if(ms_cl_prefix.size()==1)
471 option.
optchar=ms_cl_prefix[0];
482 if(!optnr.has_value())
489 options[*optnr].values.push_back(
490 std::string(s, ms_cl_prefix.size()+1, std::string::npos));
497 std::cout <<
"Warning: uninterpreted CL option `" std::string narrow(const wchar_t *s)
void process_response_file_line(const std::string &line)
const char * ms_cl_prefixes[]
static std::istream & my_wgetline(std::istream &in, std::wstring &dest)
nonstd::optional< T > optionalt
void process_non_cl_option(const std::string &s)
virtual bool parse(int, const char **)
parses the command line options into a cmdlinet
void process_response_file(const std::string &file)
const char * non_ms_cl_options[]
parses the command line options into a cmdlinet
A special command line object for the gcc-like options.
const char * ms_cl_flags[]
optionalt< std::size_t > getoptnr(char option) const
std::vector< optiont > options
void process_cl_option(const std::string &s)