GCC Code Coverage Report


Directory: src/
File: main.cpp
Date: 2026-06-08 16:00:25
Exec Total Coverage
Lines: 131 140 93.6%
Functions: 5 5 100.0%
Branches: 251 288 87.2%

Line Branch Exec Source
1
2 /***************************************
3 Auteur : Pierre Aubert
4 Mail : pierre.aubert@lapp.in2p3.fr
5 Licence : CeCILL-C
6 ****************************************/
7
8 #include <iostream>
9
10 #include "OptionParser.h"
11 #include "header_generator.h"
12 #include "parserClassConfig.h"
13 #include "generator_class_cpp.h"
14 #include "simple_project_generator.h"
15
16 //C++ Trait Backend
17 #include "CppTraitFromString.h"
18 #include "CppTraitSetter.h"
19 #include "CppTraitGetter.h"
20 #include "CppTraitCopy.h"
21 #include "CppTraitTypeStream.h"
22 #include "CppTraitDataStream.h"
23 #include "CppTraitConfigStream.h"
24 #include "CppTraitCheckStream.h"
25
26 ///Create the OptionParser of this program
27 /** @return OptionParser of this program
28 */
29 13 OptionParser createOptionParser(){
30
2/2
✓ Branch 0 (2→3) taken 13 times.
✓ Branch 2 (3→4) taken 13 times.
13 OptionParser parser(true, __PROGRAM_VERSION__);
31
2/2
✓ Branch 0 (5→6) taken 13 times.
✓ Branch 2 (6→7) taken 13 times.
13 parser.setExampleLongOption("phoenix_filegenerator class --name=some_source");
32
2/2
✓ Branch 0 (8→9) taken 13 times.
✓ Branch 2 (9→10) taken 13 times.
13 parser.setExampleShortOption("phoenix_filegenerator class -n some_source");
33
34 //Class mode
35
2/2
✓ Branch 0 (11→12) taken 13 times.
✓ Branch 2 (12→13) taken 13 times.
13 parser.addMode("class");
36
1/1
✓ Branch 0 (14→15) taken 13 times.
13 PString defaultClassName("");
37
5/5
✓ Branch 0 (15→16) taken 13 times.
✓ Branch 2 (16→17) taken 13 times.
✓ Branch 4 (17→18) taken 13 times.
✓ Branch 6 (18→19) taken 13 times.
✓ Branch 8 (19→20) taken 13 times.
13 parser.addOption("name", "n", defaultClassName, "base name of the file to be created");
38 13 PVecString templateDef;
39
5/5
✓ Branch 0 (25→26) taken 13 times.
✓ Branch 2 (26→27) taken 13 times.
✓ Branch 4 (27→28) taken 13 times.
✓ Branch 6 (28→29) taken 13 times.
✓ Branch 8 (29→30) taken 13 times.
13 parser.addOption("template", "t", templateDef, "template definition of the class (ex: 'typename T' or 'typename T' 'typename U', etc)");
40
4/4
✓ Branch 0 (34→35) taken 13 times.
✓ Branch 2 (35→36) taken 13 times.
✓ Branch 4 (36→37) taken 13 times.
✓ Branch 6 (37→38) taken 13 times.
13 parser.addOption("config", "c", OptionType::FILENAME, false, "Configuration file to create a class (*.pdata)");
41
4/4
✓ Branch 0 (41→42) taken 13 times.
✓ Branch 2 (42→43) taken 13 times.
✓ Branch 4 (43→44) taken 13 times.
✓ Branch 6 (44→45) taken 13 times.
13 parser.addOption("datastream", "s", OptionType::NONE, false, "Enable PhoenixDataStream use to save/load generated class automatically");
42
4/4
✓ Branch 0 (48→49) taken 13 times.
✓ Branch 2 (49→50) taken 13 times.
✓ Branch 4 (50→51) taken 13 times.
✓ Branch 6 (51→52) taken 13 times.
13 parser.addOption("typestream", "y", OptionType::NONE, false, "Enable PhoenixTypeStream use to get the class name automatically");
43
4/4
✓ Branch 0 (55→56) taken 13 times.
✓ Branch 2 (56→57) taken 13 times.
✓ Branch 4 (57→58) taken 13 times.
✓ Branch 6 (58→59) taken 13 times.
13 parser.addOption("configstream", "f", OptionType::NONE, false, "Enable PhoenixConfigStream use to get the class name automatically");
44
4/4
✓ Branch 0 (62→63) taken 13 times.
✓ Branch 2 (63→64) taken 13 times.
✓ Branch 4 (64→65) taken 13 times.
✓ Branch 6 (65→66) taken 13 times.
13 parser.addOption("checkstream", "e", OptionType::NONE, false, "Enable PhoenixCheckStream use to get the class name automatically");
45
4/4
✓ Branch 0 (69→70) taken 13 times.
✓ Branch 2 (70→71) taken 13 times.
✓ Branch 4 (71→72) taken 13 times.
✓ Branch 6 (72→73) taken 13 times.
13 parser.addOption("tests", "u", OptionType::NONE, false, "Enable unit tests generation");
46
1/1
✓ Branch 0 (76→77) taken 13 times.
13 PString templateDir(".");
47
5/5
✓ Branch 0 (77→78) taken 13 times.
✓ Branch 2 (78→79) taken 13 times.
✓ Branch 4 (79→80) taken 13 times.
✓ Branch 6 (80→81) taken 13 times.
✓ Branch 8 (81→82) taken 13 times.
13 parser.addOption("testdir", "d", templateDir, "Directory for the unit tests");
48
5/5
✓ Branch 0 (86→87) taken 13 times.
✓ Branch 2 (87→88) taken 13 times.
✓ Branch 4 (88→89) taken 13 times.
✓ Branch 6 (89→90) taken 13 times.
✓ Branch 8 (90→91) taken 13 times.
13 parser.addOption("outputpath", "o", templateDir, "Path where the generated source files will be saved");
49
1/1
✓ Branch 0 (95→96) taken 13 times.
13 PString projectName("project_name");
50
5/5
✓ Branch 0 (96→97) taken 13 times.
✓ Branch 2 (97→98) taken 13 times.
✓ Branch 4 (98→99) taken 13 times.
✓ Branch 6 (99→100) taken 13 times.
✓ Branch 8 (100→101) taken 13 times.
13 parser.addOption("projectname", "r", projectName, "Name of the project to generate class in with unit test (will be used for unit test linking)");
51
1/1
✓ Branch 0 (105→106) taken 13 times.
13 parser.closeMode();
52
53 //Source mode
54
2/2
✓ Branch 0 (106→107) taken 13 times.
✓ Branch 2 (107→108) taken 13 times.
13 parser.addMode("source");
55
4/4
✓ Branch 0 (109→110) taken 13 times.
✓ Branch 2 (110→111) taken 13 times.
✓ Branch 4 (111→112) taken 13 times.
✓ Branch 6 (112→113) taken 13 times.
13 parser.addOption("name", "n", OptionType::STRING, true, "base name of the file to be created");
56
1/1
✓ Branch 0 (116→117) taken 13 times.
13 parser.closeMode();
57
58 //Project mode
59
2/2
✓ Branch 0 (117→118) taken 13 times.
✓ Branch 2 (118→119) taken 13 times.
13 parser.addMode("project");
60
4/4
✓ Branch 0 (120→121) taken 13 times.
✓ Branch 2 (121→122) taken 13 times.
✓ Branch 4 (122→123) taken 13 times.
✓ Branch 6 (123→124) taken 13 times.
13 parser.addOption("description", "d", OptionType::FILENAME, false, "description of the full project (*.toml)");
61
4/4
✓ Branch 0 (127→128) taken 13 times.
✓ Branch 2 (128→129) taken 13 times.
✓ Branch 4 (129→130) taken 13 times.
✓ Branch 6 (130→131) taken 13 times.
13 parser.addOption("config", "c", OptionType::FILENAME, false, "Configuration file to create a class (*.pdata)");
62
1/1
✓ Branch 0 (134→135) taken 13 times.
13 PString baseProjectType("SimpleCpp");
63
5/5
✓ Branch 0 (135→136) taken 13 times.
✓ Branch 2 (136→137) taken 13 times.
✓ Branch 4 (137→138) taken 13 times.
✓ Branch 6 (138→139) taken 13 times.
✓ Branch 8 (139→140) taken 13 times.
13 parser.addOption("type", "t", baseProjectType, "Type of the project to generate");
64
4/4
✓ Branch 0 (144→145) taken 13 times.
✓ Branch 2 (145→146) taken 13 times.
✓ Branch 4 (146→147) taken 13 times.
✓ Branch 6 (147→148) taken 13 times.
13 parser.addOption("pythonwrapper", "w", OptionType::NONE, false, "Enable python wrapper generation");
65
4/4
✓ Branch 0 (151→152) taken 13 times.
✓ Branch 2 (152→153) taken 13 times.
✓ Branch 4 (153→154) taken 13 times.
✓ Branch 6 (154→155) taken 13 times.
13 parser.addOption("datastream", "s", OptionType::NONE, false, "Enable PhoenixDataStream use to save/load generated class automatically");
66
4/4
✓ Branch 0 (158→159) taken 13 times.
✓ Branch 2 (159→160) taken 13 times.
✓ Branch 4 (160→161) taken 13 times.
✓ Branch 6 (161→162) taken 13 times.
13 parser.addOption("typestream", "y", OptionType::NONE, false, "Enable PhoenixTypeStream use to get the class name automatically");
67
4/4
✓ Branch 0 (165→166) taken 13 times.
✓ Branch 2 (166→167) taken 13 times.
✓ Branch 4 (167→168) taken 13 times.
✓ Branch 6 (168→169) taken 13 times.
13 parser.addOption("configstream", "f", OptionType::NONE, false, "Enable PhoenixConfigStream use to get the class name automatically");
68
4/4
✓ Branch 0 (172→173) taken 13 times.
✓ Branch 2 (173→174) taken 13 times.
✓ Branch 4 (174→175) taken 13 times.
✓ Branch 6 (175→176) taken 13 times.
13 parser.addOption("checkstream", "e", OptionType::NONE, false, "Enable PhoenixCheckStream use to get the class name automatically");
69
4/4
✓ Branch 0 (179→180) taken 13 times.
✓ Branch 2 (180→181) taken 13 times.
✓ Branch 4 (181→182) taken 13 times.
✓ Branch 6 (182→183) taken 13 times.
13 parser.addOption("tests", "u", OptionType::NONE, false, "Enable unit tests generation");
70
1/1
✓ Branch 0 (186→187) taken 13 times.
13 parser.closeMode();
71 13 return parser;
72 13 }
73
74 ///Class creator
75 /** @param classMode : set of argument passe in the class mode
76 * @return true on success, false otherwise
77 */
78 9 bool createClass(const OptionMode & classMode){
79
1/1
✓ Branch 0 (2→3) taken 9 times.
9 PString className;
80 9 PVecString templatedef;
81
82
1/1
✓ Branch 0 (4→5) taken 9 times.
9 ProjectParam projectParam;
83
3/3
✓ Branch 0 (5→6) taken 9 times.
✓ Branch 2 (6→7) taken 9 times.
✓ Branch 4 (7→8) taken 9 times.
9 projectParam.configFile = PPath("");
84
3/3
✓ Branch 0 (10→11) taken 9 times.
✓ Branch 2 (11→12) taken 9 times.
✓ Branch 4 (12→13) taken 9 times.
9 projectParam.outputTestDir = PPath("./");
85
3/3
✓ Branch 0 (15→16) taken 9 times.
✓ Branch 2 (16→17) taken 9 times.
✓ Branch 4 (17→18) taken 9 times.
9 projectParam.outputSourceDir = PPath("./");
86
2/2
✓ Branch 0 (20→21) taken 9 times.
✓ Branch 2 (21→22) taken 9 times.
9 classMode.getValue(className, "name");
87
2/2
✓ Branch 0 (23→24) taken 9 times.
✓ Branch 2 (24→25) taken 9 times.
9 classMode.getValue(projectParam.configFile, "config");
88
2/2
✓ Branch 0 (26→27) taken 9 times.
✓ Branch 2 (27→28) taken 9 times.
9 classMode.getValue(templatedef, "template");
89
2/2
✓ Branch 0 (29→30) taken 9 times.
✓ Branch 2 (30→31) taken 9 times.
9 classMode.getValue(projectParam.outputTestDir, "testdir");
90
2/2
✓ Branch 0 (32→33) taken 9 times.
✓ Branch 2 (33→34) taken 9 times.
9 classMode.getValue(projectParam.outputSourceDir, "outputpath");
91
92 9 GeneratorMode & mode = projectParam.mode;
93 9 mode.enableSetter = true;
94 9 mode.enableGetter = true;
95 9 mode.enableCopy = true;
96 9 mode.enableFromString = true;
97
2/2
✓ Branch 0 (35→36) taken 9 times.
✓ Branch 2 (36→37) taken 9 times.
9 mode.enableDataStream = classMode.isOptionExist("datastream");
98
2/2
✓ Branch 0 (38→39) taken 9 times.
✓ Branch 2 (39→40) taken 9 times.
9 mode.enableTypeStream = classMode.isOptionExist("typestream");
99
2/2
✓ Branch 0 (41→42) taken 9 times.
✓ Branch 2 (42→43) taken 9 times.
9 mode.enableConfigStream = classMode.isOptionExist("configstream");
100
2/2
✓ Branch 0 (44→45) taken 9 times.
✓ Branch 2 (45→46) taken 9 times.
9 mode.enableCheckStream = classMode.isOptionExist("checkstream");
101
2/2
✓ Branch 0 (47→48) taken 9 times.
✓ Branch 2 (48→49) taken 9 times.
9 mode.enableUnitTest = classMode.isOptionExist("tests");
102
103
5/12
✓ Branch 0 (50→51) taken 9 times.
✓ Branch 2 (51→52) taken 9 times.
✗ Branch 4 (52→53) not taken.
✓ Branch 5 (52→55) taken 9 times.
✗ Branch 6 (53→54) not taken.
✗ Branch 7 (53→55) not taken.
✓ Branch 8 (56→57) taken 9 times.
✗ Branch 9 (56→58) not taken.
✗ Branch 10 (58→59) not taken.
✓ Branch 11 (58→62) taken 9 times.
✗ Branch 12 (214→215) not taken.
✗ Branch 13 (214→216) not taken.
9 if(classMode.isOptionExist("testdir") && !mode.enableUnitTest){
104 std::cerr << "createClass : testdir option is only available if tests option is enabled" << std::endl;
105 return false;
106 }
107
108
1/1
✓ Branch 0 (62→63) taken 9 times.
9 PTraitBackendManager manager;
109
1/1
✓ Branch 0 (63→64) taken 9 times.
9 manager.addTraitBackend<CppTraitFromString>();
110
1/1
✓ Branch 0 (64→65) taken 9 times.
9 manager.addTraitBackend<CppTraitCopy>();
111
1/1
✓ Branch 0 (65→66) taken 9 times.
9 manager.addTraitBackend<CppTraitSetter>();
112
1/1
✓ Branch 0 (66→67) taken 9 times.
9 manager.addTraitBackend<CppTraitGetter>();
113
1/1
✓ Branch 0 (67→68) taken 9 times.
9 manager.addTraitBackend<CppTraitTypeStream>();
114
1/1
✓ Branch 0 (68→69) taken 9 times.
9 manager.addTraitBackend<CppTraitDataStream>();
115
1/1
✓ Branch 0 (69→70) taken 9 times.
9 manager.addTraitBackend<CppTraitConfigStream>();
116
1/1
✓ Branch 0 (70→71) taken 9 times.
9 manager.addTraitBackend<CppTraitCheckStream>();
117
3/3
✓ Branch 0 (71→72) taken 9 times.
✓ Branch 2 (72→73) taken 5 times.
✓ Branch 3 (72→128) taken 4 times.
9 if(projectParam.configFile != ""){
118
3/3
✓ Branch 0 (73→74) taken 5 times.
✓ Branch 2 (74→75) taken 3 times.
✓ Branch 3 (74→80) taken 2 times.
5 if(className == ""){
119
3/3
✓ Branch 0 (75→76) taken 3 times.
✓ Branch 2 (76→77) taken 3 times.
✓ Branch 4 (77→78) taken 3 times.
3 className = projectParam.configFile.getFileName().eraseExtension();
120 }
121
2/2
✓ Branch 0 (80→81) taken 5 times.
✓ Branch 2 (81→82) taken 5 times.
5 classMode.getValue(projectParam.name, "projectname");
122
123
1/1
✓ Branch 0 (83→84) taken 5 times.
5 PDataConfig dataConfig;
124
1/1
✓ Branch 0 (84→85) taken 5 times.
5 dataConfig.setFileName(projectParam.configFile);
125
5/5
✓ Branch 0 (85→86) taken 5 times.
✓ Branch 2 (86→87) taken 5 times.
✓ Branch 4 (87→88) taken 5 times.
✓ Branch 6 (88→89) taken 1 times.
✓ Branch 7 (88→94) taken 4 times.
5 if(!parserClassConfig(dataConfig.getVecClassConfig(), dataConfig.getVecInclude(), projectParam.configFile)){
126
4/4
✓ Branch 0 (89→90) taken 1 times.
✓ Branch 2 (90→91) taken 1 times.
✓ Branch 4 (91→92) taken 1 times.
✓ Branch 6 (92→93) taken 1 times.
1 std::cerr << "createClass : unexisting configuration file '"<<projectParam.configFile<<"'" << std::endl;
127 1 return false;
128 }
129
5/6
✓ Branch 0 (94→95) taken 4 times.
✓ Branch 2 (95→96) taken 4 times.
✓ Branch 4 (96→97) taken 4 times.
✓ Branch 6 (97→98) taken 4 times.
✗ Branch 8 (99→100) not taken.
✓ Branch 9 (99→107) taken 4 times.
4 if(!generator_class_cpp(manager, dataConfig.getVecClassConfig(), projectParam.outputSourceDir, className, projectParam.mode, dataConfig.getVecInclude())){
130 std::cerr << "createClass : can't save file '"<<className<<"'[.h or .cpp] with configuration file '"<<projectParam.configFile<<"'" << std::endl;
131 return false;
132 }
133
1/2
✗ Branch 0 (107→108) not taken.
✓ Branch 1 (107→122) taken 4 times.
4 if(projectParam.mode.enableUnitTest){
134 if(!generator_class_cpp_test(manager, projectParam.outputTestDir, dataConfig.getVecClassConfig(), projectParam.name, dataConfig.getFileName().getFileName().eraseExtension(), projectParam.mode)){
135 std::cerr << "createClass : can't save unit test file for '"<<className<<"' with configuration file '"<<projectParam.configFile<<"'" << std::endl;
136 return false;
137 }
138 }
139 // projectParam.vecDataConfig.push_back(dataConfig);
140 // if(!generator_class_full(manager, projectParam)){
141 // std::cerr << "createClass : can't save file '"<<className<<"'[.h or .cpp] with configuration file '"<<projectParam.configFile<<"'" << std::endl;
142 // return false;
143 // }
144
2/2
✓ Branch 0 (124→125) taken 4 times.
✓ Branch 1 (124→127) taken 1 times.
5 }else{
145
3/3
✓ Branch 0 (128→129) taken 4 times.
✓ Branch 2 (129→130) taken 1 times.
✓ Branch 3 (129→133) taken 3 times.
4 if(className == ""){
146
2/2
✓ Branch 0 (130→131) taken 1 times.
✓ Branch 2 (131→132) taken 1 times.
1 std::cerr << "createClass : cannot create class with empty name" << std::endl;
147 1 return false;
148 }
149 3 PVecClassConfig vecClassConfig;
150
1/1
✓ Branch 0 (134→135) taken 3 times.
3 PClassConfig classConfig;
151
1/1
✓ Branch 0 (135→136) taken 3 times.
3 classConfig.setName(className);
152
153
1/1
✓ Branch 0 (136→137) taken 3 times.
3 classConfig.setListTemplate(templatedef);
154
155
1/1
✓ Branch 0 (137→138) taken 3 times.
3 vecClassConfig.push_back(classConfig);
156
3/4
✓ Branch 0 (139→140) taken 3 times.
✓ Branch 2 (140→141) taken 3 times.
✗ Branch 4 (143→144) not taken.
✓ Branch 5 (143→149) taken 3 times.
3 if(!generator_class_cpp(manager, vecClassConfig, projectParam.outputSourceDir, className, projectParam.mode, PVecPath())){
157 std::cerr << "createClass : can't save file '"<<className<<"'[.h or .cpp]" << std::endl;
158 return false;
159 }
160
2/4
✓ Branch 0 (151→152) taken 3 times.
✗ Branch 1 (151→153) not taken.
✓ Branch 2 (155→156) taken 3 times.
✗ Branch 3 (155→158) not taken.
3 }
161 7 return true;
162 9 }
163
164 ///Create header and source file name
165 /** @param sourceMode : arguments passed in the source mode
166 * @return true on success, false otherwise
167 */
168 2 bool createHeaderSource(const OptionMode & sourceMode){
169
2/2
✓ Branch 0 (2→3) taken 2 times.
✓ Branch 2 (3→4) taken 2 times.
2 PPath headerName("header");
170
2/2
✓ Branch 0 (5→6) taken 2 times.
✓ Branch 2 (6→7) taken 2 times.
2 sourceMode.getValue(headerName, "name");
171
2/2
✓ Branch 0 (8→9) taken 2 times.
✓ Branch 2 (9→10) taken 2 times.
2 PPath baseHeaderName(headerName.eraseExtension());
172
7/7
✓ Branch 0 (10→11) taken 2 times.
✓ Branch 2 (11→12) taken 2 times.
✓ Branch 4 (12→13) taken 2 times.
✓ Branch 6 (13→14) taken 2 times.
✓ Branch 8 (14→15) taken 2 times.
✓ Branch 10 (15→16) taken 2 times.
✓ Branch 12 (16→17) taken 2 times.
2 saveHeaderSourceFile(PPath(baseHeaderName + ".h"), PPath(baseHeaderName + ".cpp"));
173 2 return true;
174 2 }
175
176 ///Create project
177 /** @param projectMode : arguments passed in the project mode
178 * @return true on success, false otherwise
179 */
180 2 bool createProjectSource(const OptionMode & projectMode){
181
1/1
✓ Branch 0 (2→3) taken 2 times.
2 PPath descriptionFile;
182 2 PVecPath vecConfigFile;
183
1/1
✓ Branch 0 (4→5) taken 2 times.
2 PString projectType;
184
2/2
✓ Branch 0 (5→6) taken 2 times.
✓ Branch 2 (6→7) taken 2 times.
2 projectMode.getValue(vecConfigFile, "config");
185
2/2
✓ Branch 0 (8→9) taken 2 times.
✓ Branch 2 (9→10) taken 2 times.
2 projectMode.getValue(descriptionFile, "description");
186
2/2
✓ Branch 0 (11→12) taken 2 times.
✓ Branch 2 (12→13) taken 2 times.
2 projectMode.getValue(projectType, "type");
187
188
1/1
✓ Branch 0 (14→15) taken 2 times.
2 GeneratorMode mode;
189
2/2
✓ Branch 0 (15→16) taken 2 times.
✓ Branch 2 (16→17) taken 2 times.
2 mode.enableDataStream = projectMode.isOptionExist("datastream");
190
2/2
✓ Branch 0 (18→19) taken 2 times.
✓ Branch 2 (19→20) taken 2 times.
2 mode.enableTypeStream = projectMode.isOptionExist("typestream");
191
2/2
✓ Branch 0 (21→22) taken 2 times.
✓ Branch 2 (22→23) taken 2 times.
2 mode.enableConfigStream = projectMode.isOptionExist("configstream");
192
2/2
✓ Branch 0 (24→25) taken 2 times.
✓ Branch 2 (25→26) taken 2 times.
2 mode.enableCheckStream = projectMode.isOptionExist("checkstream");
193
2/2
✓ Branch 0 (27→28) taken 2 times.
✓ Branch 2 (28→29) taken 2 times.
2 mode.enableUnitTest = projectMode.isOptionExist("tests");
194
195
1/1
✓ Branch 0 (30→31) taken 2 times.
4 return simple_project_generator(descriptionFile, vecConfigFile, projectType, mode);
196 2 }
197
198 13 int main(int argc, char** argv){
199
1/1
✓ Branch 0 (2→3) taken 13 times.
13 OptionParser parser = createOptionParser();
200
1/1
✓ Branch 0 (3→4) taken 13 times.
13 parser.parseArgument(argc, argv);
201
202
2/2
✓ Branch 0 (4→5) taken 13 times.
✓ Branch 2 (5→6) taken 13 times.
13 const OptionMode & classMode = parser.getMode("class");
203
2/2
✓ Branch 0 (7→8) taken 13 times.
✓ Branch 2 (8→9) taken 13 times.
13 const OptionMode & sourceMode = parser.getMode("source");
204
2/2
✓ Branch 0 (10→11) taken 13 times.
✓ Branch 2 (11→12) taken 13 times.
13 const OptionMode & projectMode = parser.getMode("project");
205 13 bool b(true);
206
3/3
✓ Branch 0 (13→14) taken 13 times.
✓ Branch 2 (14→15) taken 9 times.
✓ Branch 3 (14→17) taken 4 times.
13 if(classMode.isParsed()){ //We are using the class mode
207
1/1
✓ Branch 0 (15→16) taken 9 times.
9 b &= createClass(classMode);
208 }
209
3/3
✓ Branch 0 (17→18) taken 13 times.
✓ Branch 2 (18→19) taken 2 times.
✓ Branch 3 (18→21) taken 11 times.
13 if(sourceMode.isParsed()){ //We are using the source mode
210
1/1
✓ Branch 0 (19→20) taken 2 times.
2 b &= createHeaderSource(sourceMode);
211 }
212
3/3
✓ Branch 0 (21→22) taken 13 times.
✓ Branch 2 (22→23) taken 2 times.
✓ Branch 3 (22→25) taken 11 times.
13 if(projectMode.isParsed()){ //We are using the project mode
213
1/1
✓ Branch 0 (23→24) taken 2 times.
2 b &= createProjectSource(projectMode);
214 }
215 13 return b - 1;
216 13 }
217
218
219
220