github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/pkg/utils/old_code.go (about)

     1  package utils
     2  
     3  /*
     4  #pragma once
     5  #include "acctlib.h"
     6  
     7  namespace qblocks {
     8  
     9  class CTraverser;
    10  //-----------------------------------------------------------------------
    11  typedef bool (*TRAVERSERFUNC)(CTraverser* trav, void* data);
    12  typedef size_t (*COUNTERFUNC)(CTraverser* trav, void* data);
    13  
    14  //-----------------------------------------------------------------------
    15  inline bool noopFunc(CTraverser* trav, void* data) {
    16      return true;
    17  }
    18  
    19  //-----------------------------------------------------------------------
    20  extern bool filterByRange(CTraverser* trav, void* data);
    21  
    22  typedef map<address_t, CMonitor> monitor_map_t;
    23  //-----------------------------------------------------------------------
    24  class CTraverser {
    25    public:
    26      bool logging;
    27      size_t index;
    28      size_t n Processed;
    29      string_q searchType;
    30      CMonitor* curMonitor;
    31      monitor_map_t monitorMap;
    32      CTraverser(const string_q& o) : index(0), n Processed(0), searchType(o) {
    33          logging = !isTestMode();
    34          curMonitor = nullptr;
    35          filterFunc = filterByRange;
    36      }
    37      virtual ~CTraverser(void) {
    38      }
    39      friend ostream& operator<<(ostream& os, const CTraverser& it);
    40  
    41    public:
    42      TRAVERSERFUNC filterFunc = nullptr;
    43      COUNTERFUNC counterFunc = nullptr;
    44      TRAVERSERFUNC preFunc = nullptr;
    45      TRAVERSERFUNC postFunc = nullptr;
    46      TRAVERSERFUNC displayFunc = nullptr;
    47      TRAVERSERFUNC dataFunc = nullptr;
    48      const CAppearance_mon* app = nullptr;
    49      CBlock block;
    50      CTransaction trans;
    51  
    52      bool traverse(const CAppearanceArray_mon& apps, void* data);
    53  
    54    private:
    55      CTraverser(void) = delete;
    56  };
    57  
    58  }  // namespace qblocks
    59  
    60  #include "traverser.h"
    61  
    62  namespace qblocks {
    63  
    64  //-----------------------------------------------------------------------
    65  bool CTraverser::traverse(const CAppearanceArray_mon& apps, void* data) {
    66      // Prepare the export...
    67      if (preFunc && !(*preFunc)(this, data))
    68          return false;
    69  
    70      for (index = 0; index < apps.size() && !shouldQuit(); index++) {
    71          app = &apps[index];
    72          trans = CTransaction();  // reset
    73          bool passedFilter = !filterFunc || (*filterFunc)(this, data);
    74          if (passedFilter) {
    75              if (dataFunc && !(*dataFunc)(this, data))
    76                  return (!postFunc || (*postFunc)(this, data)) && false;
    77              if (displayFunc && !(*displayFunc)(this, data))
    78                  return (!postFunc || (*postFunc)(this, data)) && false;
    79              n Processed += (counterFunc ? (*counterFunc)(this, data) : 1);
    80          }
    81      }
    82  
    83      // Cleanup the export...
    84      if (postFunc && !(*postFunc)(this, data))
    85          return false;
    86  
    87      return true;
    88  }
    89  
    90  //-----------------------------------------------------------------------
    91  bool filterByRange(CTraverser* trav, void* data) {
    92      return bn_2_Timestamp(trav->app->blk) || shouldQuit();
    93  }
    94  
    95  //-------------------------------------------------------------------------
    96  ostream& operator<<(ostream& os, const CTraverser& it) {
    97      os << "logging: " << it.logging << endl;
    98      os << "index: " << it.index << endl;
    99      os << "n Processed: " << it.n Processed << endl;
   100      os << "searchType: " << it.searchType << endl;
   101      os << "curMonitor: " << it.curMonitor << endl;
   102      // os << "monitorMap: " << it.monitorMap << endl;
   103      return os;
   104  }
   105  
   106  }  // namespace qblocks
   107  */