source: icGREP/icgrep-devel/icgrep/lzparabix/LZParabixGrepGenerator.h @ 6137

Last change on this file since 6137 was 6137, checked in by xwa163, 11 months ago
  1. LZ4 ScanMatch? pipeline
  2. Refactor LZ4 Generator
  3. Adjust some naming
File size: 1.7 KB
Line 
1//
2// Created by wxy325 on 2018/6/19.
3//
4
5#ifndef ICGREP_LZPARABIXGREPGENERATOR_H
6#define ICGREP_LZPARABIXGREPGENERATOR_H
7
8#include "LZParabixGenerator.h"
9#include <grep_interface.h>
10#include <kernels/streamset.h>
11#include <cc/multiplex_CCs.h>
12#include <string>
13#include <vector>
14#include <sstream>
15#include <atomic>
16#include <grep/grep_engine.h>
17
18typedef void (*ScanMatchGrepMainFunctionType)(char * byte_data, size_t headerSize, size_t filesize, bool hasBlockChecksum, intptr_t match_accumulator);
19typedef uint64_t (*CountOnlyGrepMainFunctionType)(char * byte_data, size_t headerSize, size_t filesize, bool hasBlockChecksum);
20
21class LZParabixGrepGenerator: public LZParabixGenerator {
22
23public:
24    LZParabixGrepGenerator(bool enableMultiplexing = false);
25    void generateCountOnlyAioPipeline(re::RE* regex, bool swizzledDecompression = false);
26    CountOnlyGrepMainFunctionType getCountOnlyGrepMainFunction();
27protected:
28    bool mEnableMultiplexing;
29    grep::GrepRecordBreakKind mGrepRecordBreak;
30    re::CC * mBreakCC;
31    std::vector<re:: RE *> mREs;
32    std::set<re::Name *> mUnicodeProperties;
33    bool mMoveMatchesToEOL;
34    std::unique_ptr<cc::MultiplexedAlphabet> mpx;
35
36    void initREs(std::vector<re::RE *> & REs);
37
38    std::pair<parabix::StreamSetBuffer *, parabix::StreamSetBuffer *> grepPipeline(std::vector<re::RE *> &REs, bool swizzledDecompression);
39    std::pair<parabix::StreamSetBuffer *, parabix::StreamSetBuffer *> multiplexingGrepPipeline(std::vector<re::RE *> &REs);
40
41    parabix::StreamSetBuffer * linefeedStreamFromUncompressedBits(parabix::StreamSetBuffer *uncompressedBasisBits);
42
43    void generateCountOnlyMainFunc(const std::unique_ptr<kernel::KernelBuilder> & iBuilder);
44};
45
46
47#endif //ICGREP_LZPARABIXGREPGENERATOR_H
Note: See TracBrowser for help on using the repository browser.