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/Lshal.h b/cmds/lshal/Lshal.h
index c87ebc3..d7bcab2 100644
--- a/cmds/lshal/Lshal.h
+++ b/cmds/lshal/Lshal.h
@@ -48,6 +48,7 @@
 private:
     Status parseArgs(int argc, char **argv);
     Status fetch();
+    void postprocess();
     void dump() const;
     void usage() const;
     void putEntry(TableEntry &&entry);
@@ -56,11 +57,16 @@
     Status fetchAllLibraries(const sp<::android::hidl::manager::V1_0::IServiceManager> &manager);
     bool getReferencedPids(
         pid_t serverPid, std::map<uint64_t, Pids> *objects) const;
+    void printLine(
+            const std::string &interfaceName,
+            const std::string &transport, const std::string &server,
+            const std::string &address, const std::string &clients) const;
 
-
-    Table mTable;
+    Table mTable{};
     std::ostream &mErr = std::cerr;
     std::ostream &mOut = std::cout;
+    TableEntryCompare mSortColumn = nullptr;
+    TableEntrySelect mSelectedColumns = 0;
 };