#pragma once
#include "cmConfigure.h"
#include <set>
#include <string>
#include <vector>
#include "cmUVProcessChain.h"
namespace cmsys {
class RegularExpression;
}
class cmXMLElement;
class cmCTestLaunchReporter
{
public:
cmCTestLaunchReporter();
~cmCTestLaunchReporter();
cmCTestLaunchReporter(cmCTestLaunchReporter const&) = delete;
cmCTestLaunchReporter& operator=(cmCTestLaunchReporter const&) = delete;
bool IsError() const;
std::string OptionOutput;
std::string OptionSource;
std::string OptionLanguage;
std::string OptionTargetLabels;
std::string OptionTargetName;
std::string OptionTargetType;
std::string OptionCurrentBuildDir;
std::string OptionBuildDir;
std::string OptionFilterPrefix;
std::string OptionCommandType;
std::string OptionRole;
std::string OptionConfig;
std::string OptionObjectDir;
std::string CWD;
std::vector<std::string> RealArgs;
std::string LogHash;
void ComputeFileNames();
bool Passthru;
cmUVProcessChain::Status Status;
int ExitCode;
std::string LogDir;
std::string LogOut;
std::string LogErr;
std::set<std::string> Labels;
void LoadLabels();
bool SourceMatches(std::string const& lhs, std::string const& rhs);
std::vector<cmsys::RegularExpression> RegexWarning;
std::vector<cmsys::RegularExpression> RegexWarningSuppress;
bool Match(std::string const& line,
std::vector<cmsys::RegularExpression>& regexps);
bool MatchesFilterPrefix(std::string const& line) const;
void WriteXML();
void WriteXMLAction(cmXMLElement&) const;
void WriteXMLCommand(cmXMLElement&);
void WriteXMLResult(cmXMLElement&);
void WriteXMLLabels(cmXMLElement&);
void DumpFileToXML(cmXMLElement&, char const* tag, std::string const& fname);
std::string SourceDir;
};