Doxygen
Loading...
Searching...
No Matches
DiagramRow Class Reference

Class representing a row in the built-in class diagram. More...

Collaboration diagram for DiagramRow:

Public Types

using Ptr = std::unique_ptr<DiagramItem>
using Vec = std::vector<Ptr>
using iterator = typename Vec::iterator
using reverse_iterator = typename Vec::reverse_iterator

Public Member Functions

 DiagramRow (TreeDiagram *d, uint32_t l)
void insertClass (DiagramItem *parent, const ClassDef *cd, bool doBases, Protection prot, Specifier virt, const QCString &ts)
DiagramItemitem (int index)
uint32_t numItems () const
iterator begin ()
iterator end ()
reverse_iterator rbegin ()
reverse_iterator rend ()

Private Attributes

TreeDiagramm_diagram
uint32_t m_level
Vec m_items

Detailed Description

Class representing a row in the built-in class diagram.

Definition at line 76 of file diagram.cpp.

Member Typedef Documentation

◆ iterator

using DiagramRow::iterator = typename Vec::iterator

Definition at line 81 of file diagram.cpp.

◆ Ptr

using DiagramRow::Ptr = std::unique_ptr<DiagramItem>

Definition at line 79 of file diagram.cpp.

◆ reverse_iterator

using DiagramRow::reverse_iterator = typename Vec::reverse_iterator

Definition at line 82 of file diagram.cpp.

◆ Vec

using DiagramRow::Vec = std::vector<Ptr>

Definition at line 80 of file diagram.cpp.

Constructor & Destructor Documentation

◆ DiagramRow()

DiagramRow::DiagramRow ( TreeDiagram * d,
uint32_t l )
inline

Definition at line 83 of file diagram.cpp.

83: m_diagram(d), m_level(l) {}
TreeDiagram * m_diagram
Definition diagram.cpp:94
uint32_t m_level
Definition diagram.cpp:95

References m_diagram, and m_level.

Referenced by insertClass().

Member Function Documentation

◆ begin()

iterator DiagramRow::begin ( )
inline

Definition at line 89 of file diagram.cpp.

89{ return m_items.begin(); }
Vec m_items
Definition diagram.cpp:96

References m_items.

◆ end()

iterator DiagramRow::end ( )
inline

Definition at line 90 of file diagram.cpp.

90{ return m_items.end(); }

References m_items.

◆ insertClass()

void DiagramRow::insertClass ( DiagramItem * parent,
const ClassDef * cd,
bool doBases,
Protection prot,
Specifier virt,
const QCString & ts )

Definition at line 348 of file diagram.cpp.

350{
351 auto di = std::make_unique<DiagramItem>(parent, m_diagram->row(m_level)->numItems(),
352 cd,prot,virt,ts);
353 DiagramItem *di_ptr = di.get();
354 if (parent) parent->addChild(di_ptr);
355 di->move(static_cast<int>(m_items.size()*gridWidth),static_cast<int>(m_level*gridHeight));
356 m_items.push_back(std::move(di));
357 int count=0;
358 for (const auto &bcd : doBases ? cd->baseClasses() : cd->subClasses())
359 {
360 /* there are base/sub classes */
361 ClassDef *ccd=bcd.classDef;
362 if (ccd && ccd->isVisibleInHierarchy()) count++;
363 }
364 if (count>0 && (prot!=Protection::Private || !doBases))
365 {
366 DiagramRow *row=nullptr;
367 if (m_diagram->numRows()<=m_level+1) /* add new row */
368 {
369 row=m_diagram->addRow(m_level+1);
370 }
371 else /* get next row */
372 {
373 row=m_diagram->row(m_level+1);
374 }
375 for (const auto &bcd : doBases ? cd->baseClasses() : cd->subClasses())
376 {
377 ClassDef *ccd=bcd.classDef;
378 if (ccd && ccd->isVisibleInHierarchy())
379 {
380 row->insertClass(di_ptr,ccd,doBases,bcd.prot,
381 doBases ? bcd.virt : Specifier::Normal,
382 doBases ? bcd.templSpecifiers : QCString());
383 }
384 }
385 }
386}
virtual bool isVisibleInHierarchy() const =0
the class is visible in a class diagram, or class hierarchy
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class.
DiagramRow(TreeDiagram *d, uint32_t l)
Definition diagram.cpp:83
void insertClass(DiagramItem *parent, const ClassDef *cd, bool doBases, Protection prot, Specifier virt, const QCString &ts)
Definition diagram.cpp:348
const uint32_t gridWidth
Definition diagram.cpp:137
const uint32_t gridHeight
Definition diagram.cpp:138
constexpr DocNodeVariant * parent(DocNodeVariant *n)
returns the parent node of a given node n or nullptr if the node has no parent.
Definition docnode.h:1330

References ClassDef::baseClasses(), DiagramRow(), gridHeight, gridWidth, insertClass(), ClassDef::isVisibleInHierarchy(), m_diagram, m_items, m_level, parent(), and ClassDef::subClasses().

Referenced by insertClass(), and TreeDiagram::TreeDiagram().

◆ item()

DiagramItem * DiagramRow::item ( int index)
inline

Definition at line 87 of file diagram.cpp.

87{ return m_items.at(index).get(); }

References m_items.

◆ numItems()

uint32_t DiagramRow::numItems ( ) const
inline

Definition at line 88 of file diagram.cpp.

88{ return static_cast<uint32_t>(m_items.size()); }

References m_items.

◆ rbegin()

reverse_iterator DiagramRow::rbegin ( )
inline

Definition at line 91 of file diagram.cpp.

91{ return m_items.rbegin(); }

References m_items.

◆ rend()

reverse_iterator DiagramRow::rend ( )
inline

Definition at line 92 of file diagram.cpp.

92{ return m_items.rend(); }

References m_items.

Member Data Documentation

◆ m_diagram

TreeDiagram* DiagramRow::m_diagram
private

Definition at line 94 of file diagram.cpp.

Referenced by DiagramRow(), and insertClass().

◆ m_items

Vec DiagramRow::m_items
private

Definition at line 96 of file diagram.cpp.

Referenced by begin(), end(), insertClass(), item(), numItems(), rbegin(), and rend().

◆ m_level

uint32_t DiagramRow::m_level
private

Definition at line 95 of file diagram.cpp.

Referenced by DiagramRow(), and insertClass().


The documentation for this class was generated from the following file: