source: icGREP/icgrep-devel/icgrep/cc/multiplex_CCs.h @ 5816

Last change on this file since 5816 was 5816, checked in by cameron, 14 months ago

Supporting multiple alphabets in RE compilation - initial check-in

File size: 1.2 KB
RevLine 
[5369]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 MULTIPLEX_CCS_H
6#define MULTIPLEX_CCS_H
7
8#include <vector>
[5795]9#include <cc/alphabet.h>
[5369]10
[5748]11namespace re { class CC; }
[5369]12
[5795]13namespace cc {
[5748]14
[5795]15class MultiplexedAlphabet : public Alphabet {
16public:
17    MultiplexedAlphabet(std::string alphabetName, const std::vector<const re::CC *> CCs);
[5800]18    static inline bool classof(const Alphabet * a) {
19        return a->getClassTypeId() == ClassTypeId::MultiplexedAlphabet;
20    }
21    static inline bool classof(const void *) {return false;}
[5816]22   
23    const unsigned getSize() const override {return mUnicodeSets.size() + 1;}
[5800]24
25    const Alphabet * getSourceAlphabet() const;
[5795]26   
27    std::vector<std::vector<unsigned>> getExclusiveSetIDs();
28   
29    std::vector<re::CC *> getMultiplexedCCs();
[5799]30   
[5801]31    re::CC * transformCC(const re::CC * sourceCC) const;
32   
33    re::CC * invertCC(const re::CC * transformedCC) const;
[5795]34private:
[5799]35    const Alphabet * mSourceAlphabet;
36    const std::vector<const re::CC *> mUnicodeSets;
[5795]37    std::vector<std::vector<unsigned>> mExclusiveSetIDs;
38    std::vector<re::CC *> mMultiplexedCCs;
39};
40}
[5369]41
[5795]42
[5369]43#endif
Note: See TracBrowser for help on using the repository browser.