RubyCodeOperation::RubyCodeOperation ( RubyClassifierCodeDocument * doc, UMLOperation *parent, const QString & body, const QString & comment ) : CodeOperation (doc, parent, body, comment) { // lets not go with the default comment and instead use // full-blown ruby documentation object instead setComment(new RubyCodeDocumentation(doc)); // these things never change.. setOverallIndentationLevel(1); }
// we basically want to update the start text of this method void CPPSourceCodeAccessorMethod::updateMethodDeclaration() { CodeClassField * parentField = getParentClassField(); ClassifierCodeDocument * doc = parentField->getParentDocument(); CodeGenPolicyExt *pe = UMLApp::app()->policyExt(); CPPCodeGenerationPolicy * policy = dynamic_cast<CPPCodeGenerationPolicy*>(pe); // Check for dynamic casting failure! if (policy == NULL) { uError() << "policy: invalid dynamic cast"; return; } CPPCodeClassField * cppfield = dynamic_cast<CPPCodeClassField*>(parentField); // Check for dynamic casting failure! if (cppfield == NULL) { uError() << "cppfield: invalid dynamic cast"; return; } UMLClassifier * c = doc->getParentClassifier(); bool isInlineMethod = policy->getAccessorsAreInline(); QString tag = policy->getDocToolTag(); QString vectorClassName = policy->getVectorClassName(); QString fieldName = cppfield->getFieldName(); QString fieldType = cppfield->getTypeName(); QString objectType = cppfield->getListObjectType(); if(objectType.isEmpty()) objectType = fieldName; QString methodReturnType(QLatin1String("void")); QString methodName; // QLatin1String("get") + cppdoc->capitalizeFirstLetter(fieldName); QString methodParams = QChar(QLatin1Char(' ')); // QLatin1String("get") + cppdoc->capitalizeFirstLetter(fieldName); QString headerText; QString className = CodeGenerator::cleanName(c->name()); QString endLine = UMLApp::app()->commonPolicy()->getNewLineEndingChars(); switch(getType()) { case CodeAccessorMethod::ADD: methodName = QLatin1String("add_") + fieldType; methodReturnType = QLatin1String("void"); methodParams = objectType + QLatin1String(" value "); headerText = QLatin1String("Add a ") + fieldName + QLatin1String(" object to the ") + fieldName + QLatin1String("List") + endLine + getParentObject()->doc() + endLine + tag + QLatin1String("return void"); break; case CodeAccessorMethod::REMOVE: methodName = QLatin1String("remove_") + fieldType; methodParams = objectType + QLatin1String(" value "); methodReturnType = QLatin1String("void"); headerText = QLatin1String("Remove a ") + fieldName + QLatin1String(" object from the ") + fieldName + QLatin1String("List") + endLine + getParentObject()->doc() + endLine + tag + QLatin1String("return void"); break; case CodeAccessorMethod::LIST: methodName = QLatin1String("get_") + fieldType + QLatin1String("_list"); methodReturnType = vectorClassName; headerText = QLatin1String("Get the ") + fieldName + QLatin1String("List") + endLine + getParentObject()->doc() + endLine + tag + QLatin1String("return ") + vectorClassName + QLatin1String("with list of objects"); break; case CodeAccessorMethod::SET: methodName = QLatin1String("set_") + fieldName; methodParams = fieldType + QLatin1String(" value "); methodReturnType = QLatin1String("void"); headerText = QLatin1String("Set the value of ") + fieldName + endLine + getParentObject()->doc() + endLine + tag + QLatin1String("param value the value of ") + fieldName; break; case CodeAccessorMethod::GET: default: methodName = QLatin1String("get_") + fieldName; methodReturnType = fieldType; headerText = QLatin1String("Get the value of ") + fieldName + endLine + getParentObject()->doc() + endLine + tag + QLatin1String("return the value of ") + fieldName; break; } // set header CPPCodeDocumentation * header = new CPPCodeDocumentation(doc); if(!getParentObject()->doc().isEmpty()) header->setText(headerText); setComment(header); // set start method text (EndText never changes) setStartMethodText(methodReturnType + QLatin1Char(' ') + className + QLatin1String("::") + methodName + QLatin1String(" (") + methodParams + QLatin1Char(')') + QLatin1String(" {")); setOverallIndentationLevel(0); // these ONLY appear if they arent inline if(isInlineMethod) setWriteOutText(false); }
// we basically want to update the start text of this method void CPPSourceCodeAccessorMethod::updateMethodDeclaration() { CodeClassField * parentField = getParentClassField(); ClassifierCodeDocument * doc = parentField->getParentDocument(); CodeGenPolicyExt *pe = UMLApp::app()->getPolicyExt(); CPPCodeGenerationPolicy * policy = dynamic_cast<CPPCodeGenerationPolicy*>(pe); CPPCodeClassField * cppfield = dynamic_cast<CPPCodeClassField*>(parentField); UMLClassifier * c = doc->getParentClassifier(); bool isInlineMethod = policy->getAccessorsAreInline( ); QString vectorClassName = policy->getVectorClassName(); QString fieldName = cppfield->getFieldName(); QString fieldType = cppfield->getTypeName(); QString objectType = cppfield->getListObjectType(); if(objectType.isEmpty()) objectType = fieldName; QString methodReturnType = "void"; QString methodName; QString methodParams; QString headerText; QString className = CodeGenerator::cleanName(c->getName()); QString endLine = UMLApp::app()->getCommonPolicy()->getNewLineEndingChars(); switch(getType()) { case CodeAccessorMethod::ADD: methodName = "add_"+fieldType; methodReturnType = "void"; methodParams = objectType+" value "; headerText = "Add a "+fieldName+" object to the "+fieldName+"List"+endLine+getParentObject()->getDoc()+endLine+"@return void"; break; case CodeAccessorMethod::REMOVE: methodName = "remove_"+fieldType; methodParams = objectType+" value "; methodReturnType = "void"; headerText = "Remove a "+fieldName+" object from the "+fieldName+"List"+endLine+getParentObject()->getDoc()+endLine+"@return void"; break; case CodeAccessorMethod::LIST: methodName = "get_"+fieldType+"_list"; methodReturnType = vectorClassName; headerText = "Get the "+fieldName+"List"+endLine+getParentObject()->getDoc()+endLine+"@return "+vectorClassName+"with list of objects"; break; case CodeAccessorMethod::SET: methodName = "set_"+fieldName; methodParams = fieldType+" value "; methodReturnType = "void"; headerText = "Set the value of "+fieldName+endLine+getParentObject()->getDoc()+endLine+"@param value the value of "+fieldName; break; case CodeAccessorMethod::GET: default: methodName = "get_"+fieldName; methodReturnType = fieldType; headerText = "Get the value of "+fieldName+endLine+getParentObject()->getDoc()+endLine+"@return the value of "+fieldName; break; } // set header CPPCodeDocumentation * header = new CPPCodeDocumentation(doc); if(!getParentObject()->getDoc().isEmpty()) header->setText(headerText); setComment(header); // set start method text (EndText never changes) setStartMethodText(methodReturnType+' '+className+"::"+methodName+" ("+methodParams+')' + " {"); setOverallIndentationLevel(0); // these ONLY appear if they arent inline if(isInlineMethod) setWriteOutText(false); }
CPPHeaderCodeClassFieldDeclarationBlock::CPPHeaderCodeClassFieldDeclarationBlock (CodeClassField * parent) : CodeClassFieldDeclarationBlock (parent) { setOverallIndentationLevel(1); }
// we basically want to update the start text of this method void CPPHeaderCodeAccessorMethod::updateMethodDeclaration() { CodeClassField * parentField = getParentClassField(); ClassifierCodeDocument * doc = parentField->getParentDocument(); CodeGenPolicyExt *pe = UMLApp::app()->policyExt(); CPPCodeGenerationPolicy * policy = dynamic_cast<CPPCodeGenerationPolicy*>(pe); CPPCodeClassField * cppfield = dynamic_cast<CPPCodeClassField*>(parentField); bool isInlineMethod = policy->getAccessorsAreInline( ); QString tag = policy->getDocToolTag( ); QString vectorClassName = policy->getVectorClassName(); QString fieldName = cppfield->getFieldName(); QString fieldType = cppfield->getTypeName(); QString objectType = cppfield->getListObjectType(); if(objectType.isEmpty()) objectType = fieldName; QString methodReturnType = "void"; QString methodName; // "get"+cppdoc->capitalizeFirstLetter(fieldName); QString methodParams = QChar(' '); // "get"+cppdoc->capitalizeFirstLetter(fieldName); QString headerText; QString endLine = UMLApp::app()->commonPolicy()->getNewLineEndingChars(); switch(getType()) { case CodeAccessorMethod::ADD: methodName = "add_"+fieldType; methodReturnType = "void"; methodParams = objectType+" value "; headerText = "Add a "+fieldName+" object to the "+fieldName+"List"+endLine+getParentObject()->doc()+endLine+tag+"return void"; break; case CodeAccessorMethod::REMOVE: methodName = "remove_"+fieldType; methodParams = objectType+" value "; methodReturnType = "void"; headerText = "Remove a "+fieldName+" object from the "+fieldName+"List"+endLine+getParentObject()->doc()+endLine+tag+"return void"; break; case CodeAccessorMethod::LIST: methodName = "get_"+fieldType+"_list"; methodReturnType = vectorClassName; headerText = "Get the "+fieldName+"List"+endLine+getParentObject()->doc()+endLine+tag+"return "+vectorClassName+"with list of objects"; break; case CodeAccessorMethod::SET: methodName = "set_"+fieldName; methodParams = fieldType+" value "; methodReturnType = "void"; headerText = "Set the value of "+fieldName+endLine+getParentObject()->doc()+endLine+tag+"param value the value of "+fieldName; break; case CodeAccessorMethod::GET: default: methodName = "get_"+fieldName; methodReturnType = fieldType; headerText = "Get the value of "+fieldName+endLine+getParentObject()->doc()+endLine+tag+"return the value of "+fieldName; break; } // set header CPPCodeDocumentation * header = new CPPCodeDocumentation(doc); if(!getParentObject()->doc().isEmpty()) header->setText(headerText); setComment(header); // set start/end method text QString startText = methodReturnType + ' ' + methodName + " (" + methodParams +')'; if (isInlineMethod) startText += " {"; else startText += ';'; QString endText = (isInlineMethod ? "}" : ""); setStartMethodText(startText); setEndMethodText(endText); setOverallIndentationLevel(1); }
RubyCodeClassFieldDeclarationBlock::RubyCodeClassFieldDeclarationBlock ( CodeClassField * parent ) : CodeClassFieldDeclarationBlock ( parent ) { setOverallIndentationLevel(1); updateContent(); }