Ignore:
Timestamp:
Dec 22, 2016, 2:35:46 PM (2 years ago)
Author:
nmedfort
Message:

Modified memory alignment mechanism for GetPropertyValueGrepString? + misc. changes.

File:
1 edited

Legend:

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

    r5233 r5234  
    2626namespace re {
    2727 
    28 static inline CC * getDefinition(RE * re) {
     28static inline CC * extractCC(RE * re) {
    2929    if (isa<CC>(re)) {
    3030        return cast<CC>(re);
    3131    } else if (isa<Name>(re)) {
    32         return getDefinition(cast<Name>(re)->getDefinition());
     32        return extractCC(cast<Name>(re)->getDefinition());
    3333    }
    3434    return nullptr;
     
    4848                            mZeroWidth = name;
    4949                        }
    50                         resolve(name->getDefinition());
     50                        name->setDefinition(resolve(name->getDefinition()));
    5151                    } else {
    52                         #ifndef DISABLE_PREGENERATED_UCD_FUNCTIONS
    53                         if (AlgorithmOptionIsSet(UsePregeneratedUnicode)) {
    54                             const std::string functionName = UCD::resolvePropertyFunction(name);
    55                             const UCD::ExternalProperty & ep = UCD::resolveExternalProperty(functionName);
    56                             Call * call = mPB.createCall(Prototype::Create(functionName, std::get<1>(ep), std::get<2>(ep), std::get<0>(ep)), mCCCompiler.getBasisBits());
    57                             name->setCompiled(call);
    58                         } else {
    59                         #endif
    60                             name->setDefinition(makeCC(UCD::resolveUnicodeSet(name)));
    61                         #ifndef DISABLE_PREGENERATED_UCD_FUNCTIONS
    62                         }
    63                         #endif
     52                        name->setDefinition(makeCC(UCD::resolveUnicodeSet(name)));
    6453                    }
    6554                } else {
    66                 throw std::runtime_error("All non-unicode-property Name objects should have been defined prior to Unicode property resolution.");
     55                    throw std::runtime_error("All non-unicode-property Name objects should have been defined prior to Unicode property resolution.");
    6756                }
    6857            } else {
     
    7867            for (auto ai = alt->begin(); ai != alt->end(); ) {
    7968                RE * re = resolve(*ai);
    80                 if (CC * cc = getDefinition(re)) {
     69                if (CC * cc = extractCC(re)) {
    8170                    if (unionCC == nullptr) {
    8271                        unionCC = cc;
     
    112101            diff->setLH(resolve(diff->getLH()));
    113102            diff->setRH(resolve(diff->getRH()));
    114             CC * lh = getDefinition(diff->getLH());
    115             CC * rh = getDefinition(diff->getRH());
     103            CC * lh = extractCC(diff->getLH());
     104            CC * rh = extractCC(diff->getRH());
    116105            if (lh && rh) {
    117106                return resolve(makeName("diff", subtractCC(lh, rh)));
     
    120109            ix->setLH(resolve(ix->getLH()));
    121110            ix->setRH(resolve(ix->getRH()));
    122             CC * lh = getDefinition(ix->getLH());
    123             CC * rh = getDefinition(ix->getRH());
     111            CC * lh = extractCC(ix->getLH());
     112            CC * rh = extractCC(ix->getRH());
    124113            if (lh && rh) {
    125114                return resolve(makeName("intersect", intersectCC(lh, rh)));
Note: See TracChangeset for help on using the changeset viewer.