80 PVecString templatedef;
82 ProjectParam projectParam;
83 projectParam.configFile = PPath(
"");
84 projectParam.outputTestDir = PPath(
"./");
85 projectParam.outputSourceDir = PPath(
"./");
86 classMode.getValue(className,
"name");
87 classMode.getValue(projectParam.configFile,
"config");
88 classMode.getValue(templatedef,
"template");
89 classMode.getValue(projectParam.outputTestDir,
"testdir");
90 classMode.getValue(projectParam.outputSourceDir,
"outputpath");
92 GeneratorMode & mode = projectParam.mode;
93 mode.enableSetter =
true;
94 mode.enableGetter =
true;
95 mode.enableCopy =
true;
96 mode.enableFromString =
true;
97 mode.enableDataStream = classMode.isOptionExist(
"datastream");
98 mode.enableTypeStream = classMode.isOptionExist(
"typestream");
99 mode.enableConfigStream = classMode.isOptionExist(
"configstream");
100 mode.enableCheckStream = classMode.isOptionExist(
"checkstream");
101 mode.enableUnitTest = classMode.isOptionExist(
"tests");
103 if(classMode.isOptionExist(
"testdir") && !mode.enableUnitTest){
104 std::cerr <<
"createClass : testdir option is only available if tests option is enabled" << std::endl;
108 PTraitBackendManager manager;
109 manager.addTraitBackend<CppTraitFromString>();
110 manager.addTraitBackend<CppTraitCopy>();
111 manager.addTraitBackend<CppTraitSetter>();
112 manager.addTraitBackend<CppTraitGetter>();
113 manager.addTraitBackend<CppTraitTypeStream>();
114 manager.addTraitBackend<CppTraitDataStream>();
115 manager.addTraitBackend<CppTraitConfigStream>();
116 manager.addTraitBackend<CppTraitCheckStream>();
117 if(projectParam.configFile !=
""){
119 className = projectParam.configFile.getFileName().eraseExtension();
121 classMode.getValue(projectParam.name,
"projectname");
123 PDataConfig dataConfig;
124 dataConfig.setFileName(projectParam.configFile);
125 if(!parserClassConfig(dataConfig.getVecClassConfig(), dataConfig.getVecInclude(), projectParam.configFile)){
126 std::cerr <<
"createClass : unexisting configuration file '"<<projectParam.configFile<<
"'" << std::endl;
129 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;
133 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;
146 std::cerr <<
"createClass : cannot create class with empty name" << std::endl;
149 PVecClassConfig vecClassConfig;
150 PClassConfig classConfig;
151 classConfig.setName(className);
153 classConfig.setListTemplate(templatedef);
155 vecClassConfig.push_back(classConfig);
156 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;
181 PPath descriptionFile;
182 PVecPath vecConfigFile;
184 projectMode.getValue(vecConfigFile,
"config");
185 projectMode.getValue(descriptionFile,
"description");
186 projectMode.getValue(projectType,
"type");
189 mode.enableDataStream = projectMode.isOptionExist(
"datastream");
190 mode.enableTypeStream = projectMode.isOptionExist(
"typestream");
191 mode.enableConfigStream = projectMode.isOptionExist(
"configstream");
192 mode.enableCheckStream = projectMode.isOptionExist(
"checkstream");
193 mode.enableUnitTest = projectMode.isOptionExist(
"tests");
195 return simple_project_generator(descriptionFile, vecConfigFile, projectType, mode);
int main(int argc, char **argv)
bool createProjectSource(const OptionMode &projectMode)
Create project.
bool createClass(const OptionMode &classMode)
Class creator.
OptionParser createOptionParser()
Create the OptionParser of this program.
bool createHeaderSource(const OptionMode &sourceMode)
Create header and source file name.