Ignore:
Timestamp:
Feb 25, 2018, 12:38:51 PM (14 months ago)
Author:
cameron
Message:

Grapheme Cluster Break kernel

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/re/re_name_gather.cpp

    r5805 r5881  
    1616#include <UCD/resolve_properties.h>
    1717#include <boost/container/flat_set.hpp>
    18 #include <sstream>
     18#include <llvm/Support/Casting.h>
     19#include <llvm/Support/raw_ostream.h>
    1920
    20 using NameMap = UCD::UCDCompiler::NameMap;
    21 
    22 using namespace boost::container;
    2321using namespace llvm;
    24 
    2522namespace re {
    26 
    2723struct NameGather {
    2824
     
    3026        assert ("RE object cannot be null!" && re);
    3127        if (isa<Name>(re)) {
    32             if (mVisited.insert(cast<Name>(re)).second) {
    33                 RE * defn = cast<Name>(re)->getDefinition();
    34                 if (isa<CC>(defn)) {
    35                     if (cast<CC>(defn)->getAlphabet() == &cc::Unicode)
    36                         mNameMap.emplace(cast<Name>(re), nullptr);
    37                 } else {
    38                     gather(defn);
    39                 }
     28            RE * defn = cast<Name>(re)->getDefinition();
     29            if (defn == nullptr) {
     30                mNameSet.emplace(cast<Name>(re));
    4031            }
    4132        } else if (isa<Seq>(re)) {
     
    6455        }
    6556    }
    66     NameGather(NameMap & nameMap)
    67     : mNameMap(nameMap) {
     57    NameGather(std::set<Name *> & nameSet)
     58    : mNameSet(nameSet) {
    6859
    6960    }
     
    7162private:
    7263
    73     NameMap &               mNameMap;
    74     flat_set<Name *>        mVisited;
     64    std::set<Name *> &               mNameSet;
    7565
    7666};
    7767   
    78 NameMap gatherNames(RE *& re) {
    79     NameMap nameMap;
    80     NameGather nameGather(nameMap);
     68std::set<Name *> gatherExternalNames(RE * re) {
     69    std::set<Name *> nameSet;
     70   
     71    NameGather nameGather(nameSet);
    8172    nameGather.gather(re);
    82     return nameMap;
     73    return nameSet;
    8374   
    8475}
Note: See TracChangeset for help on using the changeset viewer.