diff options
| author | KyleMiles <krm504@nyu.edu> | 2022-01-27 22:43:28 -0500 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2022-01-28 00:24:06 -0500 |
| commit | 6812c973c9fa9b4ad642ab81856c05f87bd6fcc4 (patch) | |
| tree | dace4156d03148bcaf02df138ab4e0d93e61bc6f /ui/xreflist.h | |
| parent | 519c9db22367f2659d1a54599fab47e6313be06e (diff) | |
Format All Files
Diffstat (limited to 'ui/xreflist.h')
| -rw-r--r-- | ui/xreflist.h | 135 |
1 files changed, 79 insertions, 56 deletions
diff --git a/ui/xreflist.h b/ui/xreflist.h index 76942954..f1426ee9 100644 --- a/ui/xreflist.h +++ b/ui/xreflist.h @@ -28,11 +28,11 @@ class XrefHeader; class XrefItem { -public: + public: enum XrefDirection { - Forward, // current address is addressing another address - Backward // current address is being referenced by another address + Forward, // current address is addressing another address + Backward // current address is being referenced by another address }; enum XrefType @@ -43,7 +43,7 @@ public: TypeXrefType }; -protected: + protected: FunctionRef m_func; ArchitectureRef m_arch; uint64_t m_addr; @@ -58,14 +58,15 @@ protected: mutable int m_size; -public: + public: explicit XrefItem(); explicit XrefItem(XrefHeader* parent, XrefType type, FunctionRef func); // The four constructors are used for code/data/type/variable referecens, respectively explicit XrefItem(BinaryNinja::ReferenceSource ref, XrefType type, XrefDirection direction); explicit XrefItem(uint64_t addr, XrefType type, XrefDirection direction); explicit XrefItem(BinaryNinja::TypeReferenceSource ref, XrefType type, XrefDirection direction); - explicit XrefItem(BinaryNinja::Variable var, BinaryNinja::ILReferenceSource ref, XrefType type, XrefDirection direction); + explicit XrefItem( + BinaryNinja::Variable var, BinaryNinja::ILReferenceSource ref, XrefType type, XrefDirection direction); XrefItem(const XrefItem& ref); virtual ~XrefItem(); @@ -92,11 +93,12 @@ public: }; -class XrefHeader: public XrefItem +class XrefHeader : public XrefItem { -protected: + protected: QString m_name; -public: + + public: XrefHeader(); XrefHeader(const QString& name, XrefItem::XrefType type, XrefHeader* parent, FunctionRef func); virtual ~XrefHeader() {} @@ -114,7 +116,8 @@ public: class XrefFunctionHeader : public XrefHeader { std::deque<XrefItem*> m_refs; -public: + + public: XrefFunctionHeader(); XrefFunctionHeader(FunctionRef func, XrefHeader* parent, XrefItem* child); XrefFunctionHeader(const XrefFunctionHeader& header); @@ -129,7 +132,8 @@ public: class XrefTypeHeader : public XrefHeader { std::deque<XrefItem*> m_refs; -public: + + public: XrefTypeHeader(); XrefTypeHeader(BinaryNinja::QualifiedName name, XrefHeader* parent, XrefItem* child); XrefTypeHeader(const XrefTypeHeader& header); @@ -143,7 +147,8 @@ public: class XrefVariableHeader : public XrefHeader { std::deque<XrefItem*> m_refs; -public: + + public: XrefVariableHeader(); XrefVariableHeader(XrefHeader* parent, XrefItem* child); XrefVariableHeader(const XrefVariableHeader& header); @@ -154,11 +159,12 @@ public: }; -class XrefCodeReferences: public XrefHeader +class XrefCodeReferences : public XrefHeader { std::map<FunctionRef, XrefFunctionHeader*> m_refs; std::deque<XrefFunctionHeader*> m_refList; -public: + + public: XrefCodeReferences(XrefHeader* parent); virtual ~XrefCodeReferences(); virtual int childCount() const override { return (int)m_refs.size(); } @@ -169,10 +175,11 @@ public: }; -class XrefDataReferences: public XrefHeader +class XrefDataReferences : public XrefHeader { std::deque<XrefItem*> m_refs; -public: + + public: XrefDataReferences(XrefHeader* parent); virtual ~XrefDataReferences(); virtual int childCount() const override { return (int)m_refs.size(); }; @@ -182,11 +189,12 @@ public: }; -class XrefTypeReferences: public XrefHeader +class XrefTypeReferences : public XrefHeader { std::map<BinaryNinja::QualifiedName, XrefTypeHeader*> m_refs; std::deque<XrefTypeHeader*> m_refList; -public: + + public: XrefTypeReferences(XrefHeader* parent); virtual ~XrefTypeReferences(); virtual int childCount() const override { return (int)m_refs.size(); }; @@ -197,11 +205,12 @@ public: }; -class XrefVariableReferences: public XrefHeader +class XrefVariableReferences : public XrefHeader { std::map<BinaryNinja::Variable, XrefVariableHeader*> m_refs; std::deque<XrefVariableHeader*> m_refList; -public: + + public: XrefVariableReferences(XrefHeader* parent); virtual ~XrefVariableReferences(); virtual int childCount() const override { return (int)m_refs.size(); }; @@ -212,10 +221,11 @@ public: }; -class XrefRoot: public XrefHeader +class XrefRoot : public XrefHeader { std::map<XrefItem::XrefType, XrefHeader*> m_refs; -public: + + public: XrefRoot(); XrefRoot(XrefRoot&& root); ~XrefRoot(); @@ -238,7 +248,7 @@ class BINARYNINJAUIAPI CrossReferenceTreeModel : public QAbstractItemModel size_t m_maxUIItems; std::optional<BNFunctionGraphType> m_graphType; -public: + public: CrossReferenceTreeModel(QWidget* parent, BinaryViewRef data, ViewFrame* view); virtual ~CrossReferenceTreeModel(); @@ -273,7 +283,7 @@ class BINARYNINJAUIAPI CrossReferenceTableModel : public QAbstractTableModel size_t m_maxUIItems; std::optional<BNFunctionGraphType> m_graphType; -public: + public: enum ColumnHeaders { Direction = 0, @@ -288,9 +298,21 @@ public: virtual QModelIndex index(int row, int col, const QModelIndex& parent = QModelIndex()) const override; virtual QVariant data(const QModelIndex& i, int role) const override; Qt::ItemFlags flags(const QModelIndex& index) const override; - virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override { (void)parent; return (int)m_refs.size(); }; - virtual QModelIndex parent(const QModelIndex& i) const override { (void)i; return QModelIndex(); } - virtual int columnCount(const QModelIndex& parent = QModelIndex()) const override { (void) parent; return 4;}; + virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override + { + (void)parent; + return (int)m_refs.size(); + }; + virtual QModelIndex parent(const QModelIndex& i) const override + { + (void)i; + return QModelIndex(); + } + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const override + { + (void)parent; + return 4; + }; virtual QVariant headerData(int column, Qt::Orientation orientation, int role) const override; virtual bool hasChildren(const QModelIndex&) const override { return false; } bool setModelData(std::vector<XrefItem>& refs, QItemSelectionModel* selectionModel, bool& selectionUpdated); @@ -302,7 +324,7 @@ public: }; -class BINARYNINJAUIAPI CrossReferenceItemDelegate: public QStyledItemDelegate +class BINARYNINJAUIAPI CrossReferenceItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -312,7 +334,7 @@ class BINARYNINJAUIAPI CrossReferenceItemDelegate: public QStyledItemDelegate bool m_table; size_t m_maxUIItems; -public: + public: CrossReferenceItemDelegate(QWidget* parent, bool table); void updateFonts(); @@ -338,20 +360,20 @@ class BINARYNINJAUIAPI CrossReferenceFilterProxyModel : public QSortFilterProxyM bool m_showOutgoing = true; bool m_table; -public: + public: CrossReferenceFilterProxyModel(QObject* parent, bool table); QModelIndex nextValidIndex(const QModelIndex& current) const; QModelIndex getFirstLeaf(const QModelIndex& index) const; QModelIndex prevValidIndex(const QModelIndex& current) const; QModelIndex getLastLeaf(const QModelIndex& index) const; -protected: + protected: virtual bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override; virtual bool lessThan(const QModelIndex& left, const QModelIndex& right) const override; virtual QVariant data(const QModelIndex& index, int role) const override; virtual bool hasChildren(const QModelIndex& parent) const override; -public Q_SLOTS: + public Q_SLOTS: void directionChanged(int index, bool checked); void typeChanged(int index, bool checked); void resetFilter(); @@ -360,12 +382,13 @@ public Q_SLOTS: class CrossReferenceWidget; class BINARYNINJAUIAPI CrossReferenceContainer { -protected: + protected: ViewFrame* m_view; CrossReferenceWidget* m_parent; BinaryViewRef m_data; UIActionHandler m_actionHandler; -public: + + public: CrossReferenceContainer(CrossReferenceWidget* parent, ViewFrame* view, BinaryViewRef data); virtual ~CrossReferenceContainer() {} virtual QModelIndex translateIndex(const QModelIndex& idx) const = 0; @@ -382,7 +405,7 @@ public: }; -class BINARYNINJAUIAPI CrossReferenceTree: public QTreeView, public CrossReferenceContainer +class BINARYNINJAUIAPI CrossReferenceTree : public QTreeView, public CrossReferenceContainer { Q_OBJECT @@ -390,11 +413,11 @@ class BINARYNINJAUIAPI CrossReferenceTree: public QTreeView, public CrossReferen CrossReferenceFilterProxyModel* m_model; CrossReferenceItemDelegate* m_itemDelegate; -protected: - void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const override; + protected: + void drawBranches(QPainter* painter, const QRect& rect, const QModelIndex& index) const override; virtual bool getReference(const QModelIndex& idx, XrefItem** refPtr) const override; -public: + public: CrossReferenceTree(CrossReferenceWidget* parent, ViewFrame* view, BinaryViewRef data); virtual ~CrossReferenceTree(); @@ -415,12 +438,12 @@ public: virtual void updateMaxUIItems(size_t count) override; void setGraphType(BNFunctionGraphType type) { m_tree->setGraphType(type); } -Q_SIGNALS: + Q_SIGNALS: void newSelection(); }; -class BINARYNINJAUIAPI CrossReferenceTable: public QTableView, public CrossReferenceContainer +class BINARYNINJAUIAPI CrossReferenceTable : public QTableView, public CrossReferenceContainer { Q_OBJECT @@ -428,7 +451,7 @@ class BINARYNINJAUIAPI CrossReferenceTable: public QTableView, public CrossRefer CrossReferenceItemDelegate* m_itemDelegate; CrossReferenceFilterProxyModel* m_model; -public: + public: CrossReferenceTable(CrossReferenceWidget* parent, ViewFrame* view, BinaryViewRef data); virtual ~CrossReferenceTable(); @@ -450,15 +473,15 @@ public: virtual void updateMaxUIItems(size_t count) override; void setGraphType(BNFunctionGraphType type) { m_table->setGraphType(type); } -public Q_SLOTS: + public Q_SLOTS: void updateTextFilter(const QString& filterText); -Q_SIGNALS: + Q_SIGNALS: void newSelection(); }; class ExpandableGroup; class QCheckboxCombo; -class BINARYNINJAUIAPI CrossReferenceWidget: public SidebarWidget, public UIContextNotification +class BINARYNINJAUIAPI CrossReferenceWidget : public SidebarWidget, public UIContextNotification { Q_OBJECT @@ -494,7 +517,7 @@ class BINARYNINJAUIAPI CrossReferenceWidget: public SidebarWidget, public UICont virtual void contextMenuEvent(QContextMenuEvent* event) override; virtual void wheelEvent(QWheelEvent* e) override; -public: + public: CrossReferenceWidget(ViewFrame* view, BinaryViewRef data, bool pinned); virtual ~CrossReferenceWidget(); virtual void notifyFontChanged() override; @@ -522,16 +545,16 @@ public: virtual void focus() override; - virtual void OnNewSelectionForXref(UIContext* context, ViewFrame* frame, View* view, - const SelectionInfoForXref& selection) override; + virtual void OnNewSelectionForXref( + UIContext* context, ViewFrame* frame, View* view, const SelectionInfoForXref& selection) override; virtual QWidget* headerWidget() override { return m_header; } -private Q_SLOTS: + private Q_SLOTS: void hoverTimerEvent(); void newPinnedPane(); -public Q_SLOTS: + public Q_SLOTS: void referenceActivated(const QModelIndex& idx); void pinnedStateChanged(bool state); void selectionChanged(); @@ -540,9 +563,9 @@ public Q_SLOTS: }; -class BINARYNINJAUIAPI CrossReferenceSidebarWidgetType: public SidebarWidgetType +class BINARYNINJAUIAPI CrossReferenceSidebarWidgetType : public SidebarWidgetType { -public: + public: CrossReferenceSidebarWidgetType(); virtual bool isInReferenceArea() const override { return true; } virtual SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override; @@ -559,18 +582,18 @@ class BINARYNINJAUIAPI QCheckboxCombo : public QComboBox { Q_OBJECT -public: - explicit QCheckboxCombo(QWidget *parent = nullptr); + public: + explicit QCheckboxCombo(QWidget* parent = nullptr); bool eventFilter(QObject* watched, QEvent* event); void hidePopup(); void showPopup(); - void addItem(const QString &text, bool checked = true); + void addItem(const QString& text, bool checked = true); -Q_SIGNALS: + Q_SIGNALS: void selectionChanged(const QString& text); void itemToggled(int index, bool checked); -private: + private: bool m_popupVisible = false; bool m_editable = false; QString m_selectionString; |
