Kactus2
Kactus2 reference guide
Loading...
Searching...
No Matches
hierarchyitem.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// File: hierarchyitem.h
3//-----------------------------------------------------------------------------
4// Project: Kactus 2
5// Author: Antti Kamppi
6// Date: 01.07.2011
7//
8// Description:
9// Represents a single component in the library in hierarchy view.
10//-----------------------------------------------------------------------------
11
12#ifndef HIERARCHYITEM_H
13#define HIERARCHYITEM_H
14
15#include <IPXACTmodels/Catalog/Catalog.h>
16#include <IPXACTmodels/Component/Component.h>
17
18#include <IPXACTmodels/BusDefinition/BusDefinition.h>
19#include <IPXACTmodels/AbstractionDefinition/AbstractionDefinition.h>
20#include <IPXACTmodels/kactusExtensions/ApiDefinition.h>
21#include <IPXACTmodels/kactusExtensions/ComDefinition.h>
22#include <IPXACTmodels/Design/Design.h>
23
24#include <IPXACTmodels/kactusExtensions/KactusAttribute.h>
25
26#include <KactusAPI/KactusAPIGlobal.h>
27
28#include <QObject>
29#include <QSharedPointer>
30#include <QList>
31#include <QMap>
32
34
35//-----------------------------------------------------------------------------
37//-----------------------------------------------------------------------------
38class KACTUS2_API HierarchyItem : public QObject
39{
40 Q_OBJECT
41
42public:
43
58
67 HierarchyItem(LibraryInterface* handler, HierarchyItem* parent, VLNV const& vlnv,
68 KactusAttribute::Implementation implementation = KactusAttribute::KTS_IMPLEMENTATION_COUNT,
69 QString const& viewName = QString());
70
79
81 virtual ~HierarchyItem() = default;
82
89 void createChild(const VLNV& vlnv);
90
91
97
102 VLNV const& getVLNV() const;
103
112 HierarchyItem* child(int index) const;
113
118 int row();
119
125
133
138 bool hasChildren() const;
139
144 bool isValid() const;
145
151 void setValidity(bool valid);
152
159 bool contains(const VLNV& vlnv) const;
160
167 void cleanUp();
168
173 QSharedPointer<Component const> component() const;
174
185 int referenceCount(const VLNV& vlnv) const;
186
196 int getOwners(QList<VLNV>& list, const VLNV& vlnvToSearch) const;
197
204 int removeItems(const VLNV& vlnv);
205
212 QVector<HierarchyItem*> findItems(const VLNV& vlnv);
213
219 void updateItems(const VLNV& vlnv);
220
230 bool hasParent(const VLNV& vlnv);
231
237 bool parentIsRoot() const;
238
243 bool isRoot() const;
244
249 bool isDuplicate() const;
250
257
262 QVector<VLNV> getVLNVs() const;
263
267 void clear();
268
273 bool isHierarchical() const;
274
281 KactusAttribute::Implementation getImplementation() const;
282
288
297 void getChildren(QList<VLNV>& childList, const VLNV& owner) const;
298
304 void getChildItems(QList<VLNV>& itemList) const;
305
312 int instanceCount() const;
313
320 QString getViewName() const;
321
322signals:
323
325 void noticeMessage(QString const& msg);
326
328 void errorMessage(QString const& msg);
329
330protected:
331
338 int countInstances(const VLNV& componentVLNV);
339
340private:
342 HierarchyItem(const HierarchyItem& other);
343
345 HierarchyItem& operator=(const HierarchyItem& other);
346
353 bool hasChild(const VLNV& vlnv);
354
360 void parseComponent(const VLNV& vlnv);
361
362 void parseCatalog(VLNV const& vlnv);
363
371 VLNV findDesignReference(QSharedPointer<View> view);
372
380 void createChildItemForDesign(VLNV const& designVLNV,
381 QString const& viewName);
382
388 void parseBusDefinition(const VLNV& vlnv);
389
395 void parseAbsDefinition(const VLNV& vlnv);
396
402 void parseComDefinition(const VLNV& vlnv);
403
409 void parseApiDefinition(const VLNV& vlnv);
410
415 void parseDesign(const VLNV& vlnv, KactusAttribute::Implementation implementation, QString const& viewName);
416
422 QVector<VLNV> getValidComponentsInDesign(QSharedPointer<Design const> design);
423
431 bool isValidComponentInstanceVLNV(VLNV const& componentVLNV);
432
433 //-----------------------------------------------------------------------------
434 // Data.
435 //-----------------------------------------------------------------------------
436
438 VLNV vlnv_;
439
441 QSharedPointer<Component const> component_;
442
444 LibraryInterface* library_;
445
447 QVector<HierarchyItem*> childItems_;
448
450 HierarchyItem* parentItem_;
451
453 bool isValid_;
454
456 bool isDuplicate_;
457
459 ObjectType type_;
460
462 QMap<VLNV, int> instanceCount_;
463
465 QString viewName_;
466};
467
468#endif // HIERARCHYITEM_H
ObjectType
Defines the type of the hierarchy item.
void setDuplicate(bool isDuplicate)
bool parentIsRoot() const
void updateItems(const VLNV &vlnv)
void getChildren(QList< VLNV > &childList, const VLNV &owner) const
bool isValid() const
int getOwners(QList< VLNV > &list, const VLNV &vlnvToSearch) const
bool hasChildren() const
HierarchyItem * child(int index) const
QVector< VLNV > getVLNVs() const
void setValidity(bool valid)
bool hasParent(const VLNV &vlnv)
QVector< HierarchyItem * > findItems(const VLNV &vlnv)
bool contains(const VLNV &vlnv) const
KactusAttribute::Implementation getImplementation() const
void errorMessage(QString const &msg)
Send an error message to be printed to user.
int getNumberOfChildren() const
void createChild(const VLNV &vlnv)
HierarchyItem(LibraryInterface *handler, HierarchyItem *parent, VLNV const &vlnv, KactusAttribute::Implementation implementation=KactusAttribute::KTS_IMPLEMENTATION_COUNT, QString const &viewName=QString())
void getChildItems(QList< VLNV > &itemList) const
bool isRoot() const
int countInstances(const VLNV &componentVLNV)
VLNV const & getVLNV() const
int getIndexOf(HierarchyItem *item)
bool isHierarchical() const
int removeItems(const VLNV &vlnv)
HierarchyItem(LibraryInterface *handler, QObject *parent)
HierarchyItem * parent() const
int instanceCount() const
int referenceCount(const VLNV &vlnv) const
bool isDuplicate() const
QString getViewName() const
QSharedPointer< Component const > component() const
void noticeMessage(QString const &msg)
Send a notification to be printed to user.
ObjectType type() const
virtual ~HierarchyItem()=default
The destructor.
LibraryInterface defines an interface to operate the IP-XACT-library.