dissect: use Unicode characters to draw the TLV tree on the terminal

Change-Id: If92176528361cb57f5e5a0a31a9c501d7fff54e7
diff --git a/tools/dissect/ndn-dissect.hpp b/tools/dissect/ndn-dissect.hpp
index 062d3f0..29c5e6a 100644
--- a/tools/dissect/ndn-dissect.hpp
+++ b/tools/dissect/ndn-dissect.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California.
+/*
+ * Copyright (c) 2014-2021,  Regents of the University of California.
  *
  * This file is part of ndn-tools (Named Data Networking Essential Tools).
  * See AUTHORS.md for complete list of ndn-tools authors and contributors.
@@ -30,15 +30,27 @@
 class NdnDissect : noncopyable
 {
 public:
+  NdnDissect(std::istream& input, std::ostream& output);
+
   void
-  dissect(std::ostream& os, std::istream& is);
+  dissect();
 
 private:
   void
-  printType(std::ostream& os, uint32_t type);
+  printBranches();
 
   void
-  printBlock(std::ostream& os, const Block& block);
+  printType(uint32_t type);
+
+  void
+  printBlock(const Block& block);
+
+private:
+  std::istream& m_in;
+  std::ostream& m_out;
+
+  // m_branches[i] is true iff the i-th level of the tree has more branches after the current one
+  std::vector<bool> m_branches;
 };
 
 } // namespace dissect