From 37d52c95d94b8a586c5d59fb500a7b35f3e272dc Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Fri, 30 May 2025 14:21:14 -0600 Subject: Add UI action and API to flip conditions during HLIL restructuring --- ui/commands.h | 1 + ui/flowgraphwidget.h | 3 +++ ui/linearview.h | 3 +++ 3 files changed, 7 insertions(+) (limited to 'ui') diff --git a/ui/commands.h b/ui/commands.h index 7fb3f539..aed0fbf6 100644 --- a/ui/commands.h +++ b/ui/commands.h @@ -97,6 +97,7 @@ TypeRef GetFunctionType(BinaryViewRef data, TypeRef type); std::optional getFoldableExprAddress( BinaryNinja::HighLevelILFunction* hlil, const HighlightTokenState& highlight); +std::optional getInvertableConditionAddress(BinaryNinja::HighLevelILFunction* hlil, size_t instrIndex); /*! @} diff --git a/ui/flowgraphwidget.h b/ui/flowgraphwidget.h index c7af8aa9..b69ec38b 100644 --- a/ui/flowgraphwidget.h +++ b/ui/flowgraphwidget.h @@ -168,6 +168,8 @@ class BINARYNINJAUIAPI FlowGraphWidget : BNDeadStoreElimination getCurrentVariableDeadStoreElimination(); std::optional getCurrentFoldableExprAddress(); BNExprFolding getCurrentExprFolding(); + std::optional getCurrentInvertableConditionAddress(); + bool getCurrentConditionInverted(); std::optional> getMergeVariablesAtCurrentLocation(); protected: @@ -398,6 +400,7 @@ class BINARYNINJAUIAPI FlowGraphWidget : void setCurrentVariableDeadStoreElimination(BNDeadStoreElimination elimination); void setCurrentExprFolding(BNExprFolding folding); + void toggleConditionInverted(); void splitToNewTabAndNavigateFromCursorPosition(); void splitToNewWindowAndNavigateFromCursorPosition(); void splitToNewPaneAndNavigateFromCursorPosition(); diff --git a/ui/linearview.h b/ui/linearview.h index e5305aa8..2ea8e37f 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -318,6 +318,8 @@ class BINARYNINJAUIAPI LinearView : public QAbstractScrollArea, public View, pub BNDeadStoreElimination getCurrentVariableDeadStoreElimination(); std::optional getCurrentFoldableExprAddress(); BNExprFolding getCurrentExprFolding(); + std::optional getCurrentInvertableConditionAddress(); + bool getCurrentConditionInverted(); void setDataButtonVisible(bool visible); std::optional> getMergeVariablesAtCurrentLocation(); @@ -409,6 +411,7 @@ private Q_SLOTS: void setCurrentVariableDeadStoreElimination(BNDeadStoreElimination elimination); void setCurrentExprFolding(BNExprFolding folding); + void toggleConditionInverted(); Q_SIGNALS: void notifyResizeEvent(int width, int height); -- cgit v1.3.1