cppsourcecodedocument.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00028
00029 #include "cppsourcecodedocument.h"
00030
00031 #include <kdebug.h>
00032 #include <qregexp.h>
00033
00034 #include "cppcodegenerator.h"
00035 #include "cppcodegenerationpolicy.h"
00036 #include "cppcodedocumentation.h"
00037 #include "cppcodeclassfield.h"
00038 #include "cppsourcecodeclassfielddeclarationblock.h"
00039 #include "../uml.h"
00040
00041
00042
00043
00044 CPPSourceCodeDocument::CPPSourceCodeDocument ( UMLClassifier * concept )
00045 : ClassifierCodeDocument (concept) {
00046 init ( );
00047 }
00048
00049 CPPSourceCodeDocument::~CPPSourceCodeDocument ( ) { }
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 QString CPPSourceCodeDocument::getCPPClassName (const QString &name) {
00062 return CodeGenerator::cleanName(name);
00063 }
00064
00065
00066 void CPPSourceCodeDocument::init ( ) {
00067
00068 setFileExtension(".cpp");
00069
00070 methodsBlock = 0;
00071 constructorBlock = 0;
00072
00073
00074
00075
00076
00077
00078
00079 }
00080
00084
00085
00086 bool CPPSourceCodeDocument::addCodeOperation (CodeOperation * op ) {
00087
00088 if(!op->getParentOperation()->isLifeOperation())
00089 {
00090 return methodsBlock->addTextBlock(op);
00091 } else
00092 return constructorBlock->addTextBlock(op);
00093 }
00094
00095
00096 void CPPSourceCodeDocument::resetTextBlocks()
00097 {
00098
00099
00100 methodsBlock = 0;
00101 constructorBlock = 0;
00102
00103
00104 ClassifierCodeDocument::resetTextBlocks();
00105
00106 }
00107
00108
00109
00110
00111
00112
00113
00114
00115 void CPPSourceCodeDocument::updateContent( )
00116 {
00117
00118
00119
00120 CodeGenPolicyExt *pe = UMLApp::app()->getPolicyExt();
00121 CPPCodeGenerationPolicy * policy = dynamic_cast<CPPCodeGenerationPolicy*>(pe);
00122 QString endLine = UMLApp::app()->getCommonPolicy()->getNewLineEndingChars();
00123
00124
00125 CodeClassFieldList * cfList = getCodeClassFieldList();
00126 for(CodeClassField * field = cfList->first(); field; field = cfList->next())
00127 field->setWriteOutMethods(policy->getAutoGenerateAccessors());
00128
00129
00130
00131 CodeClassFieldList staticAttribClassFields = getSpecificClassFields (CodeClassField::Attribute, true);
00132 CodeClassFieldList attribClassFields = getSpecificClassFields (CodeClassField::Attribute, false);
00133
00134
00135 CodeClassFieldList plainAssocClassFields = getSpecificClassFields ( CodeClassField::PlainAssociation );
00136 CodeClassFieldList aggregationClassFields = getSpecificClassFields ( CodeClassField::Aggregation );
00137 CodeClassFieldList compositionClassFields = getSpecificClassFields ( CodeClassField::Composition );
00138
00139
00140
00141
00142
00143 QString includeStatement = "";
00144
00145 QString myOwnName( getParentClassifier()->getName() );
00146 includeStatement.append("#include \""+CodeGenerator::cleanName(myOwnName.lower())+".h\""+endLine);
00147 CodeBlockWithComments * iblock = addOrUpdateTaggedCodeBlockWithComments("includes", includeStatement, QString::null, 0, false);
00148 iblock->setWriteOutText(true);
00149
00150
00151
00152
00153 constructorBlock = getHierarchicalCodeBlock("constructionMethodsBlock", "Constructors/Destructors", 0);
00154 methodsBlock = getHierarchicalCodeBlock("otherMethodsBlock", "Methods", 0);
00155
00156
00157 methodsBlock->addCodeClassFieldMethods(staticAttribClassFields);
00158 methodsBlock->addCodeClassFieldMethods(attribClassFields);
00159 methodsBlock->addCodeClassFieldMethods(plainAssocClassFields);
00160 methodsBlock->addCodeClassFieldMethods(aggregationClassFields);
00161 methodsBlock->addCodeClassFieldMethods(compositionClassFields);
00162
00163
00164
00165 }
00166
00167
00168 #include "cppsourcecodedocument.moc"
This file is part of the documentation for umbrello Version 3.1.0.