| 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 |