File: Options.h

package info (click to toggle)
tarantool 1.7.2.385.g952d79e-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 21,556 kB
  • ctags: 28,405
  • sloc: ansic: 180,313; cpp: 26,044; sh: 15,513; python: 4,893; makefile: 1,412
file content (60 lines) | stat: -rw-r--r-- 1,578 bytes parent folder | download
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
59
60
/**
 * Copyright (c) 2016-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */
#pragma once

#define ZSTD_STATIC_LINKING_ONLY
#include "zstd.h"
#undef ZSTD_STATIC_LINKING_ONLY

#include <cstdint>
#include <string>

namespace pzstd {

struct Options {
  unsigned numThreads;
  unsigned maxWindowLog;
  unsigned compressionLevel;
  bool decompress;
  std::string inputFile;
  std::string outputFile;
  bool overwrite;
  bool pzstdHeaders;

  Options();
  Options(
      unsigned numThreads,
      unsigned maxWindowLog,
      unsigned compressionLevel,
      bool decompress,
      const std::string& inputFile,
      const std::string& outputFile,
      bool overwrite,
      bool pzstdHeaders)
      : numThreads(numThreads),
        maxWindowLog(maxWindowLog),
        compressionLevel(compressionLevel),
        decompress(decompress),
        inputFile(inputFile),
        outputFile(outputFile),
        overwrite(overwrite),
        pzstdHeaders(pzstdHeaders) {}

  bool parse(int argc, const char** argv);

  ZSTD_parameters determineParameters() const {
    ZSTD_parameters params = ZSTD_getParams(compressionLevel, 0, 0);
    if (maxWindowLog != 0 && params.cParams.windowLog > maxWindowLog) {
      params.cParams.windowLog = maxWindowLog;
      params.cParams = ZSTD_adjustCParams(params.cParams, 0, 0);
    }
    return params;
  }
};
}