• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

umbrello/umbrello

  • sources
  • kde-4.12
  • kdesdk
  • umbrello
  • umbrello
  • codegenerators
  • cpp
cppheaderclassdeclarationblock.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * This program is free software; you can redistribute it and/or modify *
3  * it under the terms of the GNU General Public License as published by *
4  * the Free Software Foundation; either version 2 of the License, or *
5  * (at your option) any later version. *
6  * *
7  * copyright (C) 2003 Brian Thomas <thomas@mail630.gsfc.nasa.gov> *
8  * copyright (C) 2004-2013 *
9  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
10  ***************************************************************************/
11 
12 #include "cppheaderclassdeclarationblock.h"
13 #include "cppcodegenerator.h"
14 #include "cppcodegenerationpolicy.h"
15 #include "cppcodedocumentation.h"
16 #include "model_utils.h"
17 #include "uml.h"
18 
19 CPPHeaderClassDeclarationBlock::CPPHeaderClassDeclarationBlock
20  (CPPHeaderCodeDocument * parentDoc, const QString &startText, const QString &endText, const QString &comment)
21  : OwnedHierarchicalCodeBlock(parentDoc->getParentClassifier(), parentDoc, startText, endText, comment)
22 {
23  init(parentDoc, comment);
24 }
25 
26 CPPHeaderClassDeclarationBlock::~CPPHeaderClassDeclarationBlock ()
27 {
28 }
29 
33 void CPPHeaderClassDeclarationBlock::loadFromXMI (QDomElement & root)
34 {
35  setAttributesFromNode(root);
36 }
37 
40 void CPPHeaderClassDeclarationBlock::setAttributesFromObject (TextBlock * obj)
41 {
42  HierarchicalCodeBlock::setAttributesFromObject(obj);
43 }
44 
48 void CPPHeaderClassDeclarationBlock::saveToXMI (QDomDocument & doc, QDomElement & root)
49 {
50  QDomElement blockElement = doc.createElement("cppheaderclassdeclarationblock");
51 
52  setAttributesOnNode(doc, blockElement);
53 
54  root.appendChild(blockElement);
55 }
56 
60 void CPPHeaderClassDeclarationBlock::updateContent ()
61 {
62  CPPHeaderCodeDocument *parentDoc = dynamic_cast<CPPHeaderCodeDocument*>(getParentDocument());
63  UMLClassifier *c = parentDoc->getParentClassifier();
64  QString endLine = UMLApp::app()->commonPolicy()->getNewLineEndingChars();
65  bool isInterface = parentDoc->parentIsInterface(); // a little shortcut
66  QString CPPHeaderClassName = CodeGenerator::cleanName(c->name());
67  bool forceDoc = UMLApp::app()->commonPolicy()->getCodeVerboseDocumentComments();
68 
69  // COMMENT
70 
71  //check if class is abstract.. it should have abstract methods
72  if(!isInterface && c->isAbstract() && !c->hasAbstractOps())
73  {
74  getComment()->setText("******************************* Abstract Class ****************************"+endLine
75  +CPPHeaderClassName+" does not have any pure virtual methods, but its author"+endLine
76  +" defined it as an abstract class, so you should not use it directly."+endLine
77  +" Inherit from it instead and create only objects from the derived classes"+endLine
78  +"*****************************************************************************");
79  } else {
80  if(isInterface)
81  getComment()->setText("Interface "+CPPHeaderClassName+endLine+c->doc());
82  else
83  getComment()->setText("Class "+CPPHeaderClassName+endLine+c->doc());
84  }
85 
86  if(forceDoc || !c->doc().isEmpty())
87  getComment()->setWriteOutText(true);
88  else
89  getComment()->setWriteOutText(false);
90 
91 
92  // Now set START/ENDING Text
93  QString startText = "";
94 
95  /*
96  */
97 
98  /*
99  if(parentDoc->parentIsInterface())
100  startText.append("interface ");
101  else
102  */
103  startText.append("class ");
104 
105  startText.append(CPPHeaderClassName);
106 
107  // write inheritances out
108  UMLClassifierList superclasses = c->findSuperClassConcepts();
109  int nrof_superclasses = superclasses.count();
110 
111  // write out inheritance
112  int i = 0;
113  if(nrof_superclasses >0)
114  startText.append(" : ");
115  foreach (UMLClassifier* concept, superclasses) {
116  startText.append(Uml::Visibility::toString(concept->visibility()) + ' ' +
117  CodeGenerator::cleanName(concept->name()));
118  if(i != (nrof_superclasses-1))
119  startText.append(", ");
120  i++;
121  }
122 
123  // Set the header and end text for the hier.codeblock
124  setStartText(startText+" {");
125 
126  // setEndText("}"); // not needed
127 }
128 
129 void CPPHeaderClassDeclarationBlock::init (CPPHeaderCodeDocument *parentDoc, const QString &comment)
130 {
131  setComment(new CPPCodeDocumentation(parentDoc));
132  getComment()->setText(comment);
133 
134  setEndText("};");
135 }
136 
137 #include "cppheaderclassdeclarationblock.moc"
UniqueID::init
void init()
Reinitialize the unique ID counter.
Definition: uniqueid.cpp:37
UMLClassifier
This class defines the non-graphical information required for a UML Classifier (ie a class or interfa...
Definition: classifier.h:39
OwnedHierarchicalCodeBlock
class OwnedHierarchicalCodeBlock A "chunk" of code within the code document that is "owned" by some u...
Definition: ownedhierarchicalcodeblock.h:26
CodeBlockWithComments::getComment
CodeComment * getComment() const
Get the Comment object.
Definition: codeblockwithcomments.cpp:46
UMLObject::visibility
Uml::Visibility::Enum visibility() const
Returns the visibility of the object.
Definition: umlobject.cpp:435
CPPHeaderCodeDocument
class CPPHeaderCodeDocument A CPP UMLClassifier Header Code Document.
Definition: cppheadercodedocument.h:35
TextBlock::setText
void setText(const QString &text)
Set the value of m_text The actual text of this code block.
Definition: textblock.cpp:80
CodeGenerationPolicy::getNewLineEndingChars
QString getNewLineEndingChars() const
Utility function to get the actual characters.
Definition: codegenerationpolicy.cpp:248
CPPHeaderClassDeclarationBlock::saveToXMI
virtual void saveToXMI(QDomDocument &doc, QDomElement &root)
Save the XMI representation of this object.
Definition: cppheaderclassdeclarationblock.cpp:48
UMLApp::app
static UMLApp * app()
Get the last created instance of this class.
Definition: uml.cpp:206
CPPHeaderClassDeclarationBlock::~CPPHeaderClassDeclarationBlock
virtual ~CPPHeaderClassDeclarationBlock()
Empty Destructor.
Definition: cppheaderclassdeclarationblock.cpp:26
HierarchicalCodeBlock::setEndText
void setEndText(const QString &new_var)
Set the value of m_endText.
Definition: hierarchicalcodeblock.cpp:43
ClassifierCodeDocument::getParentClassifier
UMLClassifier * getParentClassifier()
Get the value of m_parentclassifier.
Definition: classifiercodedocument.cpp:271
model_utils.h
CodeGenerationPolicy::getCodeVerboseDocumentComments
bool getCodeVerboseDocumentComments() const
Get the value of m_codeVerboseDocumentComments Whether or not verbose code commenting for documentati...
Definition: codegenerationpolicy.cpp:147
HierarchicalCodeBlock::setAttributesFromObject
virtual void setAttributesFromObject(TextBlock *obj)
set the class attributes from a passed object
Definition: hierarchicalcodeblock.cpp:297
CPPHeaderClassDeclarationBlock::CPPHeaderClassDeclarationBlock
CPPHeaderClassDeclarationBlock(CPPHeaderCodeDocument *parentDoc, const QString &start="", const QString &endText="}", const QString &comment="")
Empty Constructor.
Definition: cppheaderclassdeclarationblock.cpp:20
OwnedHierarchicalCodeBlock::setAttributesFromNode
virtual void setAttributesFromNode(QDomElement &element)
set the class attributes of this object from the passed element node.
Definition: ownedhierarchicalcodeblock.cpp:83
ClassifierCodeDocument::parentIsInterface
bool parentIsInterface()
Return if the parent classifier is an interface.
Definition: classifiercodedocument.cpp:413
TextBlock::setWriteOutText
void setWriteOutText(bool write)
Set the value of m_writeOutText Whether or not to include the text of this TextBlock into a file...
Definition: textblock.cpp:131
cppcodegenerator.h
CPPHeaderClassDeclarationBlock::loadFromXMI
virtual void loadFromXMI(QDomElement &root)
load params from the appropriate XMI element node.
Definition: cppheaderclassdeclarationblock.cpp:33
UMLClassifierList
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:17
cppcodegenerationpolicy.h
Uml::Visibility::toString
QString toString(Enum item, bool mnemonic)
Convert Visibility item into QString representation.
Definition: basictypes.cpp:99
cppheaderclassdeclarationblock.h
HierarchicalCodeBlock::setStartText
void setStartText(const QString &text)
Definition: hierarchicalcodeblock.cpp:199
CPPCodeDocumentation
class CPPCodeDocumentation A CPP code comment.
Definition: cppcodedocumentation.h:27
UMLApp::commonPolicy
CodeGenerationPolicy * commonPolicy() const
Returns the default code generation policy.
Definition: uml.cpp:2132
CPPHeaderClassDeclarationBlock::updateContent
void updateContent()
Update the start/end text of this codeblock.
Definition: cppheaderclassdeclarationblock.cpp:60
UMLClassifier::findSuperClassConcepts
UMLClassifierList findSuperClassConcepts(ClassifierType type=ALL)
Returns a list of concepts which this concept inherits from.
Definition: classifier.cpp:616
cppcodedocumentation.h
TextBlock
The fundemental unit of text within an output file containing code.
Definition: textblock.h:24
CPPHeaderClassDeclarationBlock::setAttributesFromObject
virtual void setAttributesFromObject(TextBlock *obj)
Set the class attributes from a passed object.
Definition: cppheaderclassdeclarationblock.cpp:40
UMLClassifier::hasAbstractOps
bool hasAbstractOps()
Return true if this classifier has abstract operations.
Definition: classifier.cpp:930
UMLObject::name
QString name() const
Returns a copy of m_name.
Definition: umlobject.cpp:185
CodeGenerator::cleanName
static QString cleanName(const QString &name)
Replaces spaces with underscores and capitalises as defined in m_modname.
Definition: codegenerator.cpp:609
OwnedHierarchicalCodeBlock::setAttributesOnNode
virtual void setAttributesOnNode(QDomDocument &doc, QDomElement &blockElement)
set attributes of the node that represents this class in the XMI document.
Definition: ownedhierarchicalcodeblock.cpp:57
UMLObject::isAbstract
bool isAbstract() const
Returns the abstract state of the object.
Definition: umlobject.cpp:312
CodeBlockWithComments::setComment
void setComment(CodeComment *object)
Set the Comment object.
Definition: codeblockwithcomments.cpp:38
OwnedHierarchicalCodeBlock::getParentDocument
CodeDocument * getParentDocument()
Return the parent code document.
Definition: ownedhierarchicalcodeblock.cpp:93
uml.h
UMLObject::doc
QString doc() const
Returns the documentation for the object.
Definition: umlobject.cpp:404
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:05:59 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

umbrello/umbrello

Skip menu "umbrello/umbrello"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal