summaryrefslogtreecommitdiff
path: root/plugins/warp/ui/shared/misc.h
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-08-26 23:59:38 -0400
committerMason Reed <mason@vector35.com>2025-10-01 21:38:39 -0400
commitede39aee7e00c40a43b67ca18dd8ab80ee863d85 (patch)
tree67c5eda347ece2282e3c888f38066b496e06dec8 /plugins/warp/ui/shared/misc.h
parenta1c46813e7f279aa4cfdb9dbb91c45b559ebeacd (diff)
[WARP] Enhanced network support
Diffstat (limited to 'plugins/warp/ui/shared/misc.h')
-rw-r--r--plugins/warp/ui/shared/misc.h32
1 files changed, 31 insertions, 1 deletions
diff --git a/plugins/warp/ui/shared/misc.h b/plugins/warp/ui/shared/misc.h
index d2e6a1a8..35f640f5 100644
--- a/plugins/warp/ui/shared/misc.h
+++ b/plugins/warp/ui/shared/misc.h
@@ -5,9 +5,11 @@
#include <QStyledItemDelegate>
#include <QTableView>
#include <QVector>
+#include <utility>
#include "binaryninjaapi.h"
#include "filter.h"
+#include "warp.h"
// Used to serialize into the item data for rendering with TokenDataDelegate.
struct TokenData
@@ -16,6 +18,10 @@ struct TokenData
TokenData() = default;
+ TokenData(const std::string& name);
+
+ TokenData(const BinaryNinja::Type &type, const std::string& name);
+
TokenData(const std::vector<BinaryNinja::InstructionTextToken> &tokens)
{
for (const auto &token: tokens)
@@ -72,7 +78,7 @@ class GenericTextFilterModel : public QSortFilterProxyModel
Q_OBJECT
public:
- GenericTextFilterModel(QObject *parent): QSortFilterProxyModel(parent)
+ GenericTextFilterModel(QObject *parent) : QSortFilterProxyModel(parent)
{
}
@@ -82,3 +88,27 @@ public:
bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
};
+
+// Used to parse qualifiers out of a user-supplied string (or "query")
+struct ParsedQuery
+{
+ // The actual query, without the qualifiers like source:<uuid>
+ QString query;
+ // The qualifiers used to build other optional parts of the query.
+ QHash<QString, QString> qualifiers;
+
+ ParsedQuery(QString query, const QHash<QString, QString> &qualifiers)
+ : query(std::move(query)), qualifiers(qualifiers)
+ {
+ }
+
+ explicit ParsedQuery(const QString &rawQuery);
+
+ [[nodiscard]] std::optional<QString> GetValue(const QString &key) const
+ {
+ const auto it = qualifiers.constFind(key);
+ if (it == qualifiers.constEnd() || it->isEmpty())
+ return std::nullopt;
+ return it.value();
+ }
+};