PhoenixClockMock  2.0.0
Tool to manipulate mock of clock (split, merge and get info)
main_merge.cpp
Go to the documentation of this file.
1 /***************************************
2  Auteur : Pierre Aubert
3  Mail : pierre.aubert@lapp.in2p3.fr
4  Licence : CeCILL-C
5 ****************************************/
6 
7 #include "OptionParser.h"
8 
9 #include "phoenix_clock_mock.h"
10 
12 
15  OptionParser parser(true, __PROGRAM_VERSION__);
16  parser.setExampleLongOption("phoenix_clock_mock_merge --input=file.clockmock --output=merged.clockmock");
17  parser.setExampleShortOption("phoenix_clock_mock_merge -i file2.clockmock file2.clockmock -o merged.clockmock");
18 
19  parser.addOption("input", "i", OptionType::FILENAME, true, "List of input mock to be merged");
20 
21  PString defaultOutputFile("./merged.clockmock");
22  parser.addOption("output", "o", defaultOutputFile, "Name of the output merged mock file");
23  return parser;
24 }
25 
27 
31 bool mergeMock(const std::vector<PString> & vecInputFile, const PString & outputFile){
32  VecTime vecMessage;
33  bool b(true);
34  for(std::vector<PString>::const_iterator itFile(vecInputFile.begin()); itFile != vecInputFile.end() && b; ++itFile){
35  VecTime vecTmpFile;
36  if(data_load(*itFile, vecTmpFile)){
37  concatenateVecTime(vecMessage, vecTmpFile);
38  }else{
39  b = false;
40  }
41  }
42  if(b){
43  b &= data_save(outputFile, vecMessage);
44  }
45  return b;
46 }
47 
48 int main(int argc, char** argv){
50  parser.parseArgument(argc, argv);
51 
52  const OptionMode & defaultMode = parser.getDefaultMode();
53  std::vector<PString> vecInputFile;
54  PString outputFile("");
55  defaultMode.getValue(vecInputFile, "input");
56  defaultMode.getValue(outputFile, "output");
57  return mergeMock(vecInputFile, outputFile) - 1;
58 }
59 
60 
std::vector< time_t > VecTime
Definition: PClockMock.h:12
Describe a mode in the program arguments.
Definition: OptionMode.h:13
bool getValue(T &value, const PString &optionName) const
Get the value of the option.
Parse the options passed to a program.
Definition: OptionParser.h:15
void parseArgument(int argc, char **argv)
Parse the arguments passed to the program.
void addOption(const PString &longOption, const PString &shortOption, OptionType::OptionType optionType, bool isRequired, const PString &docString)
Add an option in the OptionParser.
void setExampleShortOption(const PString &example)
Set the example usage of the program.
void setExampleLongOption(const PString &example)
Set the example usage of the program.
const OptionMode & getDefaultMode() const
Get default mode.
Extends the std::string.
Definition: PString.h:16
bool data_load(FILE *iter, T &data)
Load data from a message.
Definition: data_file.h:39
bool data_save(FILE *iter, const T &data)
Save data in a message.
Definition: data_file.h:18
int main(int argc, char **argv)
Definition: main_merge.cpp:48
bool mergeMock(const std::vector< PString > &vecInputFile, const PString &outputFile)
Merge mock files.
Definition: main_merge.cpp:31
OptionParser createOptionParser()
Create the OptionParser of this program.
Definition: main_merge.cpp:14
void concatenateVecTime(VecTime &vecOutput, const VecTime vecInput)
Concatenate vector of message into an other one.