summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/lzma/CPP/7zip/UI/Console/HashCon.h
blob: ebccb6ff35331882f51e67cfb4ba5c6ccbcbad86 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// HashCon.h

#ifndef ZIP7_INC_HASH_CON_H
#define ZIP7_INC_HASH_CON_H

#include "../Common/HashCalc.h"

#include "UpdateCallbackConsole.h"

class CHashCallbackConsole Z7_final:
    public IHashCallbackUI,
    public CCallbackConsoleBase
{
  Z7_IFACE_IMP(IDirItemsCallback)
  Z7_IFACE_IMP(IHashCallbackUI)

  UString _fileName;
  AString _s;

  void AddSpace()
  {
    _s.Add_Space_if_NotEmpty();
  }

  void AddSpacesBeforeName()
  {
    if (!_s.IsEmpty())
    {
      _s.Add_Space();
      _s.Add_Space();
    }
  }

  void PrintSeparatorLine(const CObjectVector<CHasherState> &hashers);
  void PrintResultLine(UInt64 fileSize,
      const CObjectVector<CHasherState> &hashers, unsigned digestIndex, bool showHash, const AString &path);
  void PrintProperty(const char *name, UInt64 value);

public:
  bool PrintNameInPercents;
  bool PrintHeaders;
  // bool PrintSize;
  // bool PrintNewLine; // set it too (false), if you need only hash for single file without LF char.
  AString PrintFields;

  AString GetFields() const;

  CHashCallbackConsole():
      PrintNameInPercents(true),
      PrintHeaders(false)
      // , PrintSize(true),
      // , PrintNewLine(true)
    {}
};

void PrintHashStat(CStdOutStream &so, const CHashBundle &hb);

#endif