CodeGenerator* createObject(Uml::ProgrammingLanguage::Enum pl) { CodeGenerator* obj = 0; Settings::OptionState optionState = Settings::optionState(); switch (pl) { case Uml::ProgrammingLanguage::Ada: obj = new AdaWriter(); break; case Uml::ProgrammingLanguage::ActionScript: obj = new ASWriter(); break; case Uml::ProgrammingLanguage::Cpp: if (optionState.generalState.newcodegen) { obj = new CPPCodeGenerator(); obj->connect_newcodegen_slots(); } else { obj = new CppWriter(); } break; case Uml::ProgrammingLanguage::CSharp: obj = new CSharpWriter(); break; case Uml::ProgrammingLanguage::D: if (optionState.generalState.newcodegen) { obj = new DCodeGenerator(); obj->connect_newcodegen_slots(); } else { obj = new DWriter(); } break; case Uml::ProgrammingLanguage::IDL: obj = new IDLWriter(); break; case Uml::ProgrammingLanguage::Java: if (optionState.generalState.newcodegen) { obj = new JavaCodeGenerator(); obj->connect_newcodegen_slots(); } else { obj = new JavaWriter(); } break; case Uml::ProgrammingLanguage::JavaScript: obj = new JSWriter(); break; case Uml::ProgrammingLanguage::MySQL: obj = new MySQLWriter(); break; case Uml::ProgrammingLanguage::PHP: obj = new PhpWriter(); break; case Uml::ProgrammingLanguage::PHP5: obj = new Php5Writer(); break; case Uml::ProgrammingLanguage::Pascal: obj = new PascalWriter(); break; case Uml::ProgrammingLanguage::Perl: obj = new PerlWriter(); break; case Uml::ProgrammingLanguage::PostgreSQL: obj = new PostgreSQLWriter(); break; case Uml::ProgrammingLanguage::Python: obj = new PythonWriter(); break; case Uml::ProgrammingLanguage::Ruby: if (optionState.generalState.newcodegen) { obj = new RubyCodeGenerator(); obj->connect_newcodegen_slots(); } else { obj = new RubyWriter(); } break; case Uml::ProgrammingLanguage::SQL: obj = new SQLWriter(); break; case Uml::ProgrammingLanguage::Tcl: obj = new TclWriter(); break; case Uml::ProgrammingLanguage::Vala: obj = new ValaWriter(); break; case Uml::ProgrammingLanguage::XMLSchema: obj = new XMLSchemaWriter(); break; default: uWarning() << "cannot create object of type " << Uml::ProgrammingLanguage::toString(pl) << ". Type unknown"; break; } UMLApp::app()->setPolicyExt(CodeGenFactory::newCodeGenPolicyExt(pl)); if (obj) { obj->initFromParentDocument(); } return obj; }