20#include <unordered_map>
23#include "post_processor_lib_export.h"
26#include "UtCalendar.hpp"
35class POST_PROCESSOR_LIB_EXPORT
Header
65 const std::vector<DataTag>& aDataTags)
67 mDataTags(aDataTags) {}
71 const std::string&
GetName()
const {
return mName; }
72 const std::vector<DataTag>&
GetDataTags()
const {
return mDataTags; }
76 std::vector<DataTag> mDataTags;
79class POST_PROCESSOR_LIB_EXPORT
Report
137 virtual bool ProcessInputConfiguration(UtInput& aInput);
139 virtual bool Filter(std::vector<std::string>& aLine) {
return false; }
141 std::string PrintDelimiter()
const;
142 void SetDelimiter(
const std::string& aTypeString);
143 void SetDateTime(
const std::vector<std::string>& aDataStrVec);
145 double FormatAngle(
double aAngle)
const;
146 UtTime FormatTime(
double aSimTime)
const;
148 static void FormatNumberColumn(std::ostream& aStream,
152 static void FormatStringColumn(std::ostream& aStream,
153 std::string& aString,
156 static std::string GetTypeStr(
Report::Type aReportType);
159 bool aExpectType =
false);
161 static void Tokenize(
const std::string& aStr,
162 std::vector<std::string>& aTokens,
163 const char aDelimiter =
',');
164 static std::vector<std::string> Tokenize(
const std::string& aStr,
169 void PrepareExtension(std::string& aOutputDir);
172 std::ostream& aOutStream) = 0;
179 static std::string SubstituteOutputFileVariables(
const std::string& aOutputFile,
181 UtCalendar& aCalendar);
183 static std::vector<std::string> ExtractHeaders(std::istream& aStream);
184 std::string FormatDateTime(
double aSimTime = 0);
185 std::string FormatDateTime(
int aYear,
206 double mEndTime = std::numeric_limits<double>::max();
220 int mTimeFormat = UtTime::FmtS + 5 + UtTime::FmtShowPoint + UtTime::FmtNoSuffix;
242template<
class T,
class U>
245 auto it = std::find(std::begin(aContainer), std::end(aContainer), aValue);
246 return it != std::end(aContainer);
TrackNumericalType mTrackNum
Definition Report.hpp:225
bool PrintReport()
Definition Report.cpp:267
LengthUnitType
Definition Report.hpp:90
@ cMETERS
Definition Report.hpp:92
std::iostream::pos_type mEndOfHeaders
Definition Report.hpp:217
AngleUnitType mAngleUnits
Definition Report.hpp:222
bool mUseMC
Definition Report.hpp:210
bool mWriteHeader
Definition Report.hpp:216
size_t mMaxPlatformNameSize
Definition Report.hpp:228
virtual ~Report()=default
virtual void PrintReportHeader(std::ostream &aStream)
Definition Report.hpp:138
void ProcessData(std::istream &aInStream)
Definition Report.cpp:349
size_t mCurrentMC
Definition Report.hpp:209
bool mSingleOutputFile
Definition Report.hpp:224
UtCalendar mSimDateTime
Definition Report.hpp:199
AngleUnitType
Definition Report.hpp:84
@ cDEGREES
Definition Report.hpp:85
virtual void ProcessHeaders(std::istream &aStream)
Definition Report.cpp:569
std::string mDataFile
Definition Report.hpp:195
int mTimeFormat
Definition Report.hpp:220
TrackNumericalType
Definition Report.hpp:96
@ cNUMERICAL
Definition Report.hpp:97
virtual bool Filter(std::vector< std::string > &aLine)
Definition Report.hpp:139
int mPrecision
Definition Report.hpp:227
void SetLatLonFormat(int &aFormat)
Definition Report.hpp:177
Type
Definition Report.hpp:112
int mInterval
Definition Report.hpp:223
size_t mEndMC
Definition Report.hpp:198
std::string mOutputDir
Definition Report.hpp:196
LengthUnitType mLengthUnits
Definition Report.hpp:226
std::string mReportName
Definition Report.hpp:194
std::vector< std::string > mRequiredData
Definition Report.hpp:232
double mStartTime
Definition Report.hpp:204
std::map< std::string, std::map< std::string, TagData > > mEventToTagData
Definition Report.hpp:212
size_t mStartMC
Definition Report.hpp:197
virtual bool CreateRequiredData(std::string &aOutputDir)
Definition Report.hpp:136
std::queue< std::iostream::pos_type > mFilteredDataLoc
Definition Report.hpp:233
Header ProcessHeaderLine(const std::string &aLine)
Definition Report.cpp:629
size_t mMaxTimeSize
Definition Report.hpp:229
std::string mEndTimeUnits
Definition Report.hpp:207
DelimiterType mDelimiterType
Definition Report.hpp:202
virtual void PrintReport(std::istream &aInStream, std::ostream &aOutStream)=0
int mLatLonFormat
Definition Report.hpp:221
std::vector< std::string > mHeader
Definition Report.hpp:215
std::string mStartTimeUnits
Definition Report.hpp:205
double mEndTime
Definition Report.hpp:206
std::vector< std::string > mEvents
Definition Report.hpp:213
DelimiterType
Definition Report.hpp:102
@ cCOMMA
Definition Report.hpp:104
Type mReportType
Definition Report.hpp:193
Definition Report.hpp:240
bool Contains(const T &aContainer, const U &aValue)
Definition Report.hpp:243
Definition Report.hpp:237
Definition Options.hpp:21
Definition Report.hpp:123
size_t mIndex
Definition Report.hpp:124
Header::DataType mType
Definition Report.hpp:125