umbrello  2.39.2
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
codedocument.h
Go to the documentation of this file.
1 /*
2  SPDX-License-Identifier: GPL-2.0-or-later
3 
4  SPDX-FileCopyrightText: 2003 Brian Thomas <thomas@mail630.gsfc.nasa.gov>
5  SPDX-FileCopyrightText: 2004-2021 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
6 */
7 
8 #ifndef CODEDOCUMENT_H
9 #define CODEDOCUMENT_H
10 
12 #include "hierarchicalcodeblock.h"
13 
14 #include <QMap>
15 #include <QObject>
16 #include <QString>
17 
19 class CodeComment;
20 class QXmlStreamWriter;
21 class TextBlock;
22 class UMLPackage;
23 
29 class CodeDocument : public QObject, public CodeGenObjectWithTextBlocks
30 {
31  friend class HierarchicalCodeBlock;
32  Q_OBJECT
33 public:
34 
35  CodeDocument ();
36  virtual ~CodeDocument ();
37 
38  void setFileExtension (const QString &new_var);
39  QString getFileExtension () const;
40 
41  void setFileName (const QString &new_var);
42  QString getFileName () const;
43 
44  void setPackage (UMLPackage *new_var);
45  QString getPackage () const;
46 
47  virtual QString getPath () const;
48 
49  void setID (const QString &new_id);
50  QString ID () const;
51 
52  void setWriteOutCode (bool new_var);
53  bool getWriteOutCode () const;
54 
55  void setHeader (CodeComment * comment);
56  CodeComment * getHeader () const;
57 
58  bool insertTextBlock (TextBlock * newBlock, TextBlock * existingBlock, bool after = true);
59 
60  TextBlock * findTextBlockByTag(const QString &tag, bool descendIntoChildren = false) const;
61 
62  virtual QString toString () const;
63 
64  virtual void saveToXMI(QXmlStreamWriter& writer);
65  virtual void loadFromXMI (QDomElement & root);
66 
67  virtual CodeBlock * newCodeBlock ();
70 
71  virtual QString getUniqueTag(const QString& prefix = QString());
72 
73  QString cleanName (const QString &name);
74 
75  virtual void synchronize();
76 
77  virtual void updateContent();
78 
79  friend QDebug operator<<(QDebug os, const CodeDocument& obj);
80 
81 protected:
82 
83  virtual void setAttributesOnNode (QXmlStreamWriter& writer);
84 
85  virtual void setAttributesFromNode (QDomElement & element);
86 
87  // these next 2 are needed by child hierarchical code blocks so
88  // that when they call getUniqueTag, we really get a unique tag
89  // Also, it allows 'findTextBlockByTag' To find any tagged text block
90  // anywhere in the document, whether directly owned by the document OR
91  // by some child hierarchical textblock
92  void addChildTagToMap (const QString &tag, TextBlock * tb);
93  void removeChildTagFromMap (const QString &tag);
94 
95  void updateHeader ();
96 
97  void resetTextBlocks();
98 
99  virtual TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag);
100 
101 private:
102 
104  QString m_filename;
106  QString m_ID;
107  QString m_pathName;
109 
110  bool m_writeOutCode; // Whether or not to write out this code document
111  // and any codeblocks, etc that it owns.
112 
114 
115  // for recording all of the textblocks held by child hierarchical codeblocks
116  QMap<QString, TextBlock *> m_childTextBlockTagMap;
117 
118 };
119 
120 #endif // CODEDOCUMENT_H
Definition: codeblockwithcomments.h:20
Definition: codeblock.h:17
Definition: codecomment.h:20
Definition: codedocument.h:30
void updateHeader()
Definition: codedocument.cpp:276
virtual void setAttributesOnNode(QXmlStreamWriter &writer)
Definition: codedocument.cpp:354
void setPackage(UMLPackage *new_var)
Definition: codedocument.cpp:88
QString getFileExtension() const
Definition: codedocument.cpp:79
void setWriteOutCode(bool new_var)
Definition: codedocument.cpp:151
void setFileExtension(const QString &new_var)
Definition: codedocument.cpp:69
QString m_filename
Definition: codedocument.h:104
friend QDebug operator<<(QDebug os, const CodeDocument &obj)
Definition: codedocument.cpp:522
void removeChildTagFromMap(const QString &tag)
Definition: codedocument.cpp:481
QString m_ID
Definition: codedocument.h:106
CodeComment * getHeader() const
Definition: codedocument.cpp:180
TextBlock * findTextBlockByTag(const QString &tag, bool descendIntoChildren=false) const
Definition: codedocument.cpp:499
QString getPackage() const
Definition: codedocument.cpp:120
bool insertTextBlock(TextBlock *newBlock, TextBlock *existingBlock, bool after=true)
Definition: codedocument.cpp:213
QString m_fileExtension
Definition: codedocument.h:105
virtual HierarchicalCodeBlock * newHierarchicalCodeBlock()
Definition: codedocument.cpp:474
virtual QString getUniqueTag(const QString &prefix=QString())
Definition: codedocument.cpp:190
QString getFileName() const
Definition: codedocument.cpp:60
virtual void synchronize()
Definition: codedocument.cpp:326
virtual TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: codedocument.cpp:516
void setHeader(CodeComment *comment)
Definition: codedocument.cpp:171
virtual void loadFromXMI(QDomElement &root)
Definition: codedocument.cpp:345
virtual CodeBlockWithComments * newCodeBlockWithComments()
Definition: codedocument.cpp:465
UMLPackage * m_package
Definition: codedocument.h:108
void setFileName(const QString &new_var)
Definition: codedocument.cpp:50
virtual QString toString() const
Definition: codedocument.cpp:299
bool m_writeOutCode
Definition: codedocument.h:110
QMap< QString, TextBlock * > m_childTextBlockTagMap
Definition: codedocument.h:116
CodeDocument()
Definition: codedocument.cpp:26
virtual ~CodeDocument()
Definition: codedocument.cpp:37
void addChildTagToMap(const QString &tag, TextBlock *tb)
Definition: codedocument.cpp:486
virtual void saveToXMI(QXmlStreamWriter &writer)
Definition: codedocument.cpp:433
void setID(const QString &new_id)
Definition: codedocument.cpp:131
void resetTextBlocks()
Definition: codedocument.cpp:335
QString m_pathName
Definition: codedocument.h:107
QString ID() const
Definition: codedocument.cpp:140
int m_lastTagIndex
Definition: codedocument.h:103
virtual void setAttributesFromNode(QDomElement &element)
Definition: codedocument.cpp:385
virtual QString getPath() const
Definition: codedocument.cpp:97
virtual CodeBlock * newCodeBlock()
Definition: codedocument.cpp:456
virtual void updateContent()
Definition: codedocument.cpp:447
CodeComment * m_header
Definition: codedocument.h:113
bool getWriteOutCode() const
Definition: codedocument.cpp:162
QString cleanName(const QString &name)
Definition: codedocument.cpp:267
Definition: codegenobjectwithtextblocks.h:29
Definition: hierarchicalcodeblock.h:21
Definition: textblock.h:23
Non-graphical information for a Package.
Definition: package.h:28