source: icGREP/icgrep-devel/icgrep/kernels/charclasses.h @ 6119

Last change on this file since 6119 was 6119, checked in by xwa163, 10 months ago
  1. Add some BasisSetNumbering? option to fix bug of multiplexing
  2. Use BiigEndian? BitNumbering? for lz4 and lzparabix related pipeline
  3. Support multiplexing in LZ4BitStreamAio pipeline
File size: 1.2 KB
Line 
1/*
2 *  Copyright (c) 2017 International Characters.
3 *  This software is licensed to the public under the Open Software License 3.0.
4 */
5#ifndef CHARCLASSES_H
6#define CHARCLASSES_H
7
8#include <pablo/pablo_kernel.h>  // for PabloKernel
9#include <cc/alphabet.h>
10
11namespace kernel { class KernelBuilder; }
12namespace IDISA { class IDISA_Builder; }
13namespace re { class RE; class CC; }
14namespace kernel {
15
16struct CharClassesSignature {
17    CharClassesSignature(const std::vector<re::CC *> & ccs, bool useDirectCC);
18protected:
19    const bool mUseDirectCC;
20    const std::string mSignature;
21};
22
23class CharClassesKernel : public CharClassesSignature, public pablo::PabloKernel {
24public:
25    CharClassesKernel(const std::unique_ptr<kernel::KernelBuilder> & iBuilder, std::vector<re::CC *> && ccs, bool useDirectCC = false, cc::BitNumbering basisNumbering = cc::BitNumbering::LittleEndian);
26    bool hasSignature() const override { return true; }
27    std::string makeSignature(const std::unique_ptr<kernel::KernelBuilder> & iBuilder) override;
28    bool isCachable() const override { return true; }
29protected:
30    void generatePabloMethod() override;
31protected:
32    cc::BitNumbering mBasisSetNumbering;
33    std::vector<re::CC *> mCCs;
34   
35};
36
37}
38#endif
Note: See TracBrowser for help on using the repository browser.