Changeset 5631


Ignore:
Timestamp:
Sep 8, 2017, 8:09:27 AM (12 days ago)
Author:
cameron
Message:

Small fixes

Location:
icGREP/icgrep-devel/icgrep
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/grep_engine.cpp

    r5620 r5631  
    329329
    330330    for (unsigned i = 0; i < n; i++) {
    331         std::vector<UCD::UnicodeSet> UnicodeSets;
    332331        REs[i] = resolveNames(REs[i]);
    333         re::collect_UnicodeSets(REs[i], UnicodeSets);
     332        std::vector<UCD::UnicodeSet> UnicodeSets = re::collect_UnicodeSets(REs[i]);
    334333        std::vector<std::vector<unsigned>> exclusiveSetIDs;
    335334        std::vector<UCD::UnicodeSet> multiplexedCCs;
  • icGREP/icgrep-devel/icgrep/re/re_collect_unicodesets.cpp

    r5565 r5631  
    11#include "re_collect_unicodesets.h"
    22#include <re/re_name.h>
     3#include <re/re_any.h>
     4#include <re/re_start.h>
     5#include <re/re_end.h>
    36#include <re/re_alt.h>
    47#include <re/re_cc.h>
     
    2124
    2225namespace re {
     26   
     27class SetCollector {
     28public:
     29    void collect_UnicodeSets(RE * re, std::vector<UCD::UnicodeSet> & UnicodeSets);
     30private:
     31    flat_set<Name *>        mVisited;
     32};
    2333
    24 flat_set<Name *>        mVisited;
    25 
    26 void collect_UnicodeSets(RE * re, std::vector<UCD::UnicodeSet> & UnicodeSets) {
     34void SetCollector::collect_UnicodeSets(RE * re, std::vector<UCD::UnicodeSet> & UnicodeSets) {
    2735    assert ("RE object cannot be null!" && re);
    28     if (isa<Name>(re)) {
     36    if (CC * cc = dyn_cast<CC>(re)) {
     37        UnicodeSets.push_back(* cast<UCD::UnicodeSet>(cc));
     38    } else if (isa<Name>(re)) {
    2939        if (mVisited.insert(cast<Name>(re)).second) {
    30             if (CC * cc = dyn_cast<CC>(cast<Name>(re)->getDefinition())) {
    31                 UnicodeSets.push_back(* cast<UCD::UnicodeSet>(cc));
    32             } else {
    33                 collect_UnicodeSets(cast<Name>(re)->getDefinition(), UnicodeSets);
    34             }
     40            collect_UnicodeSets(cast<Name>(re)->getDefinition(), UnicodeSets);
    3541        }
    3642    } else if (isa<Seq>(re)) {
     
    5258        collect_UnicodeSets(cast<Intersect>(re)->getLH(), UnicodeSets);
    5359        collect_UnicodeSets(cast<Intersect>(re)->getRH(), UnicodeSets);
     60    } else if (isa<Any>(re)) {
     61        UnicodeSets.push_back(UCD::UnicodeSet(0x00, 0x10FFFF));
     62    } else if (isa<Start>(re)) {
     63        // LineBreak set handled globally
     64    } else if (isa<End>(re)) {
     65        // LineBreak set handled globally
    5466    }
     67}
     68   
     69std::vector<UCD::UnicodeSet> collect_UnicodeSets(RE * re) {
     70    SetCollector collector;
     71    std::vector<UCD::UnicodeSet> UnicodeSets;
     72    collector.collect_UnicodeSets(re, UnicodeSets);
     73    return UnicodeSets;
    5574}
    5675
  • icGREP/icgrep-devel/icgrep/re/re_collect_unicodesets.h

    r5565 r5631  
    99    class Name;
    1010
    11     void collect_UnicodeSets(RE * re, std::vector<UCD::UnicodeSet> &UnicodeSets);
     11    std::vector<UCD::UnicodeSet> collect_UnicodeSets(RE * re);
    1212
    1313}
  • icGREP/icgrep-devel/icgrep/re/re_name_resolve.cpp

    r5565 r5631  
    4040                        name->setDefinition(resolve(name->getDefinition()));
    4141                    } else {
    42                         name->setDefinition(makeCC(std::move(UCD::resolveUnicodeSet(name))));
     42                        name->setDefinition(makeCC(UCD::resolveUnicodeSet(name)));
    4343                    }
    4444                } else {
Note: See TracChangeset for help on using the changeset viewer.