Ignore:
Timestamp:
Nov 6, 2016, 8:37:11 PM (3 years ago)
Author:
nmedfort
Message:

Initial work on adding types to PabloAST and mutable Var objects.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/cc/cc_compiler.h

    r5140 r5202  
    1515namespace pablo {
    1616    class PabloFunction;
     17    class Var;
    1718}
    1819
     
    2223
    2324class CC_Compiler{
     25
     26    friend pablo::PabloFunction * ParabixCharacterClassFunction(const std::string &, const std::vector<re::CC *> &, const unsigned);
     27
    2428public:
    2529
     
    2832    CC_Compiler(pablo::PabloFunction & function, const unsigned encodingBits = 8, const std::string prefix = "basis");
    2933
    30     pablo::Assign * compileCC(const re::CC *cc);
     34    pablo::PabloAST * compileCC(const re::CC *cc);
    3135
    32     pablo::Assign * compileCC(const re::CC *cc, pablo::PabloBlock & block);
     36    pablo::PabloAST *compileCC(const re::CC *cc, pablo::PabloBlock & block);
    3337
    34     pablo::Assign * compileCC(const re::CC *cc, pablo::PabloBuilder & builder);
     38    pablo::PabloAST * compileCC(const re::CC *cc, pablo::PabloBuilder & builder);
    3539
    36     pablo::Assign * compileCC(const std::string && canonicalName, const re::CC *cc, pablo::PabloBlock & block);
     40    pablo::PabloAST * compileCC(const std::string & canonicalName, const re::CC *cc, pablo::PabloBlock & block);
    3741
    38     pablo::Assign * compileCC(const std::string && canonicalName, const re::CC *cc, pablo::PabloBuilder & builder);
     42    pablo::PabloAST * compileCC(const std::string & canonicalName, const re::CC *cc, pablo::PabloBuilder & builder);
    3943
    4044    pablo::PabloBuilder & getBuilder();
    4145
    42     const std::vector<pablo::Var *> & getBasisBits() {
     46    const std::vector<pablo::PabloAST *> & getBasisBits() {
    4347        return mBasisBit;
    4448    }
    4549
    46     bool isUTF_16() {
    47         return mEncodingBits == 16;
     50    bool isUTF_16() const {
     51        return mEncodingBits == 16;
    4852    }
    4953
    5054private:
    51     pablo::Var * getBasisVar(const unsigned n) const;
     55    pablo::PabloAST * getBasisVar(const unsigned n) const;
    5256    template<typename PabloBlockOrBuilder>
    5357    pablo::PabloAST * bit_pattern_expr(const unsigned pattern, unsigned selected_bits, PabloBlockOrBuilder & pb);
     
    6569    pablo::PabloAST * charset_expr(const re::CC *cc, PabloBlockOrBuilder & pb);
    6670private:   
    67     pablo::PabloBuilder         mBuilder;
    68     std::vector<pablo::Var *>   mBasisBit;
    69     const unsigned              mEncodingBits;
    70     unsigned                    mEncodingMask;
     71    pablo::PabloBuilder             mBuilder;
     72    std::vector<pablo::PabloAST *>  mBasisBit;
     73    const unsigned                  mEncodingBits;
     74    unsigned                        mEncodingMask;
    7175};
    7276
    73 inline pablo::Assign * CC_Compiler::compileCC(const re::CC *cc) {
     77inline pablo::PabloAST *CC_Compiler::compileCC(const re::CC *cc) {
    7478    return compileCC(cc, mBuilder);
    7579}
    7680
    77 inline pablo::Assign * CC_Compiler::compileCC(const re::CC *cc, pablo::PabloBlock & block) {
    78     return compileCC(std::move(cc->canonicalName(re::ByteClass)), cc, block);
     81inline pablo::PabloAST * CC_Compiler::compileCC(const re::CC *cc, pablo::PabloBlock & block) {
     82    return compileCC(cc->canonicalName(re::ByteClass), cc, block);
    7983}
    8084
    81 inline pablo::Assign * CC_Compiler::compileCC(const re::CC *cc, pablo::PabloBuilder & builder) {
    82     return compileCC(std::move(cc->canonicalName(re::ByteClass)), cc, builder);
     85inline pablo::PabloAST *CC_Compiler::compileCC(const re::CC *cc, pablo::PabloBuilder & builder) {
     86    return compileCC(cc->canonicalName(re::ByteClass), cc, builder);
    8387}
    8488
     
    8791}
    8892
    89 pablo::PabloFunction * ParabixCharacterClassFunction(std::string ccSetName, std::vector<re::CC *> charClasses, unsigned basisBitsCount);
    90 
     93pablo::PabloFunction * ParabixCharacterClassFunction(const std::string & name, const std::vector<re::CC *> & charClasses, const unsigned basisBitsCount);
    9194
    9295}
Note: See TracChangeset for help on using the changeset viewer.