lshal: Allow selecting columns and sorting by column.
Examples: see tests below.
Test: lshal
Test: lshal -intpac
Test: lshal --sort=i
Test: lshal --sort=p
Bug: 34984175
Change-Id: Ia09823776a206868a5d58a2ede153a4538147756
diff --git a/cmds/lshal/TableEntry.h b/cmds/lshal/TableEntry.h
index 484df3f..864b41b 100644
--- a/cmds/lshal/TableEntry.h
+++ b/cmds/lshal/TableEntry.h
@@ -21,6 +21,7 @@
#include <string>
#include <vector>
+#include <iostream>
namespace android {
namespace lshal {
@@ -33,9 +34,27 @@
int32_t serverPid;
uint64_t serverObjectAddress;
Pids clientPids;
+
+ static bool sortByInterfaceName(const TableEntry &a, const TableEntry &b) {
+ return a.interfaceName < b.interfaceName;
+ };
+ static bool sortByServerPid(const TableEntry &a, const TableEntry &b) {
+ return a.serverPid < b.serverPid;
+ };
};
using Table = std::vector<TableEntry>;
+using TableEntryCompare = std::function<bool(const TableEntry &, const TableEntry &)>;
+
+enum : unsigned int {
+ ENABLE_INTERFACE_NAME = 1 << 0,
+ ENABLE_TRANSPORT = 1 << 1,
+ ENABLE_SERVER_PID = 1 << 2,
+ ENABLE_SERVER_ADDR = 1 << 3,
+ ENABLE_CLIENT_PIDS = 1 << 4
+};
+
+using TableEntrySelect = unsigned int;
enum {
NO_PID = -1,