umbrello  2.39.2
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
cpptree2uml.h
Go to the documentation of this file.
1 /*
2  SPDX-License-Identifier: GPL-2.0-or-later
3  SPDX-FileCopyrightText: 2005-2014 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4 */
5 
6 #ifndef CPPTREE2UML_H
7 #define CPPTREE2UML_H
8 
9 #include "tree_parser.h"
10 #include "model_utils.h"
11 
12 #include <QStringList>
13 
14 // fwd decls
15 class CodeImpThread;
16 class UMLClassifier;
17 class UMLFolder;
18 class UMLOperation;
19 class UMLPackage;
20 
21 class CppTree2Uml: public TreeParser
22 {
23 public:
24  explicit CppTree2Uml(const QString& fileName, CodeImpThread* thread = 0);
25  virtual ~CppTree2Uml();
26 
27  void clear();
28  void setRootPath(const QString &rootPath);
29  //FileDom file() { return m_file; }
30 
31  // translation-unit
32  virtual void parseTranslationUnit(const ParsedFile &file);
33 
34  // declarations
35  //virtual void parseDeclaration(DeclarationAST*); // use parent method
36  //virtual void parseLinkageSpecification(LinkageSpecificationAST*); // use parent method
37  virtual void parseNamespace(NamespaceAST*);
38  //virtual void parseNamespaceAlias(NamespaceAliasAST*); // use parent method
39  //virtual void parseUsing(UsingAST*); // use parent method
40  //virtual void parseUsingDirective(UsingDirectiveAST*); // use parent method
41  virtual void parseTypedef(TypedefAST*);
42  virtual void parseTemplateDeclaration(TemplateDeclarationAST*);
43  virtual void parseSimpleDeclaration(SimpleDeclarationAST*);
44  virtual void parseFunctionDefinition(FunctionDefinitionAST*);
45  //virtual void parseLinkageBody(LinkageBodyAST*); // use parent method
46  virtual void parseAccessDeclaration(AccessDeclarationAST*);
47 
48  // type-specifier
49  //virtual void parseTypeSpecifier(TypeSpecifierAST*); // use parent method
50  virtual void parseClassSpecifier(ClassSpecifierAST*);
51  virtual void parseEnumSpecifier(EnumSpecifierAST*);
52  virtual void parseElaboratedTypeSpecifier(ElaboratedTypeSpecifierAST*);
53 
54  // non-overriding (locally added) methods
55 
56  virtual void parseDeclaration2(GroupAST* funSpec, GroupAST* storageSpec, TypeSpecifierAST* typeSpec, InitDeclaratorAST* decl);
57  virtual void parseFunctionDeclaration(GroupAST* funSpec, GroupAST* storageSpec, TypeSpecifierAST* typeSpec, InitDeclaratorAST* decl);
58  void parseFunctionArguments(DeclaratorAST* declarator, UMLOperation* method);
59  virtual void parseBaseClause(BaseClauseAST* baseClause, UMLClassifier* klass);
60 
61 private:
62  //NamespaceDom findOrInsertNamespace(NamespaceAST* ast, const QString& name);
63 
64  QString typeOfDeclaration(TypeSpecifierAST* typeSpec, DeclaratorAST* declarator);
65  QStringList scopeOfName(NameAST* id, const QStringList& scope);
66  QStringList scopeOfDeclarator(DeclaratorAST* d, const QStringList& scope);
68 
69 private:
70  //FileDom m_file;
71  QString m_fileName;
72  QStringList m_currentScope;
74  bool m_inSlots;
76  int m_anon;
79  QString m_comment;
81 
82  DeclaratorAST* m_currentDeclarator;
83 # define STACKSIZE 30
86  int m_nsCnt;
87  int m_clsCnt;
89  QString m_rootPath;
92 
93 private:
94  CppTree2Uml(const CppTree2Uml& source);
95  void operator = (const CppTree2Uml& source);
96 };
97 
98 #endif // CPPTREE2UML
Definition: codeimpthread.h:22
Definition: cpptree2uml.h:22
QString m_comment
Definition: cpptree2uml.h:79
virtual void parseFunctionDefinition(FunctionDefinitionAST *)
Definition: cpptree2uml.cpp:289
QStringList scopeOfName(NameAST *id, const QStringList &scope)
Definition: cpptree2uml.cpp:776
QString m_rootPath
root path of project
Definition: cpptree2uml.h:89
QStringList m_currentScope
Definition: cpptree2uml.h:72
bool m_inSignals
Definition: cpptree2uml.h:75
UMLPackage * m_currentNamespace[STACKSIZE+1]
stack
Definition: cpptree2uml.h:84
QString m_fileName
Definition: cpptree2uml.h:71
int m_anon
Definition: cpptree2uml.h:76
bool m_inSlots
Definition: cpptree2uml.h:74
QString typeOfDeclaration(TypeSpecifierAST *typeSpec, DeclaratorAST *declarator)
Definition: cpptree2uml.cpp:726
DeclaratorAST * m_currentDeclarator
Definition: cpptree2uml.h:82
virtual void parseClassSpecifier(ClassSpecifierAST *)
Definition: cpptree2uml.cpp:398
int m_nsCnt
stack top for m_currentNamespace
Definition: cpptree2uml.h:86
virtual ~CppTree2Uml()
Definition: cpptree2uml.cpp:48
void flushTemplateParams(UMLClassifier *klass)
Definition: cpptree2uml.cpp:801
void operator=(const CppTree2Uml &source)
bool m_inTypedef
Definition: cpptree2uml.h:78
bool m_inStorageSpec
Definition: cpptree2uml.h:77
virtual void parseTranslationUnit(const ParsedFile &file)
Definition: cpptree2uml.cpp:85
virtual void parseTypedef(TypedefAST *)
Definition: cpptree2uml.cpp:152
virtual void parseSimpleDeclaration(SimpleDeclarationAST *)
Definition: cpptree2uml.cpp:267
void setRootPath(const QString &rootPath)
Definition: cpptree2uml.cpp:69
UMLDoc * m_doc
Definition: cpptree2uml.h:91
virtual void parseNamespace(NamespaceAST *)
Definition: cpptree2uml.cpp:106
virtual void parseAccessDeclaration(AccessDeclarationAST *)
Definition: cpptree2uml.cpp:599
UMLClassifier * m_currentClass[STACKSIZE+1]
stack
Definition: cpptree2uml.h:85
UMLFolder * m_rootFolder
Definition: cpptree2uml.h:90
CodeImpThread * m_thread
Definition: cpptree2uml.h:88
virtual void parseFunctionDeclaration(GroupAST *funSpec, GroupAST *storageSpec, TypeSpecifierAST *typeSpec, InitDeclaratorAST *decl)
Definition: cpptree2uml.cpp:611
void parseFunctionArguments(DeclaratorAST *declarator, UMLOperation *method)
Definition: cpptree2uml.cpp:701
QStringList scopeOfDeclarator(DeclaratorAST *d, const QStringList &scope)
Definition: cpptree2uml.cpp:793
CppTree2Uml(const QString &fileName, CodeImpThread *thread=0)
Definition: cpptree2uml.cpp:38
Uml::Visibility::Enum m_currentAccess
Definition: cpptree2uml.h:73
CppTree2Uml(const CppTree2Uml &source)
virtual void parseBaseClause(BaseClauseAST *baseClause, UMLClassifier *klass)
Definition: cpptree2uml.cpp:750
virtual void parseElaboratedTypeSpecifier(ElaboratedTypeSpecifierAST *)
Definition: cpptree2uml.cpp:526
Model_Utils::NameAndType_List m_templateParams
Definition: cpptree2uml.h:80
int m_clsCnt
stack top for m_currentClass
Definition: cpptree2uml.h:87
virtual void parseTemplateDeclaration(TemplateDeclarationAST *)
Definition: cpptree2uml.cpp:220
void clear()
Definition: cpptree2uml.cpp:52
virtual void parseDeclaration2(GroupAST *funSpec, GroupAST *storageSpec, TypeSpecifierAST *typeSpec, InitDeclaratorAST *decl)
Definition: cpptree2uml.cpp:542
virtual void parseEnumSpecifier(EnumSpecifierAST *)
Definition: cpptree2uml.cpp:503
Information for a non-graphical Concept/Class.
Definition: classifier.h:35
Definition: umldoc.h:63
Non-graphical management of objects and diagrams of a Folder.
Definition: folder.h:30
Definition: operation.h:20
Non-graphical information for a Package.
Definition: package.h:28
#define STACKSIZE
Definition: cpptree2uml.h:83
QLinkedList< NameAndType > NameAndType_List
Auxiliary type for OpDescriptor.
Definition: model_utils.h:124
Enum
Definition: basictypes.h:45