Ignore:
Timestamp:
Oct 4, 2015, 1:16:06 PM (4 years ago)
Author:
nmedfort
Message:

GCC fix + misc. changes

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

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/UCD/PropertyObjects.cpp

    r4812 r4818  
    118118        return mY;
    119119    }
    120     if (noUninitialized) {
    121         mN = uset_complement(mY);
     120    if (mNoUninitialized) {
     121        mN = ~mY;
     122        mNoUninitialized = false;
    122123    }
    123124    return mN;
  • icGREP/icgrep-devel/icgrep/UCD/PropertyObjects.h

    r4737 r4818  
    150150    BinaryPropertyObject(UCD::property_t p, UnicodeSet s)
    151151    : PropertyObject(p, ClassTypeId::BinaryProperty)
    152     , noUninitialized(true)
     152    , mNoUninitialized(true)
    153153    , mY(s) {
    154154
     
    157157    const UnicodeSet & GetCodepointSet(const int property_enum_val);
    158158private:
    159     bool noUninitialized;
     159    bool mNoUninitialized;
    160160    UnicodeSet mY;
    161161    UnicodeSet mN;
  • icGREP/icgrep-devel/icgrep/UCD/unicode_set.cpp

    r4812 r4818  
    339339 * @brief equality
    340340 ** ------------------------------------------------------------------------------------------------------------- */
    341 UnicodeSet UnicodeSet::operator==(const UnicodeSet & other) const {
     341bool UnicodeSet::operator==(const UnicodeSet & other) const {
    342342    if (mRuns.size() != other.mRuns.size() || mQuads.size() != other.mQuads.size()) {
    343343        return false;
     
    350350    }
    351351    return true;
     352}
     353
     354/** ------------------------------------------------------------------------------------------------------------- *
     355 * @brief less operator
     356 ** ------------------------------------------------------------------------------------------------------------- */
     357bool UnicodeSet::operator<(const UnicodeSet & other) const {
     358    if (LLVM_LIKELY(mRuns.size() != other.mRuns.size())) {
     359        return mRuns.size() < other.mRuns.size();
     360    } else if (LLVM_LIKELY(mQuads.size() != other.mQuads.size())) {
     361        return (mQuads.size() < other.mQuads.size());
     362    } else { // equal run and quad lengths; test their individual values
     363        for (auto ri = mRuns.cbegin(), end = mRuns.cend(), rj = other.mRuns.cbegin(); ri != end; ++ri, ++rj) {
     364            if (*ri < *rj) {
     365                return true;
     366            } else if (*ri > *rj) {
     367                return false;
     368            }
     369        }
     370        for (auto qi = mQuads.cbegin(), end = mQuads.cend(), qj = other.mQuads.cbegin(); qi != end; ++qi, ++qj) {
     371            if (*qi < *qj) {
     372                return true;
     373            } else if (*qi > *qj) {
     374                return false;
     375            }
     376        }
     377        return false;
     378    }
    352379}
    353380
  • icGREP/icgrep-devel/icgrep/UCD/unicode_set.h

    r4812 r4818  
    173173    inline UnicodeSet & operator=(const UnicodeSet & other) = default;
    174174    inline UnicodeSet & operator=(UnicodeSet && other) = default;
    175     UnicodeSet operator==(const UnicodeSet & other) const;
     175    bool operator==(const UnicodeSet & other) const;
     176    bool operator<(const UnicodeSet & other) const;
    176177
    177178    UnicodeSet();
     
    201202}
    202203
    203 inline UnicodeSet uset_complement(const UnicodeSet & s) {
    204     return ~s;
    205 }
    206 
    207 inline UnicodeSet uset_intersection(const UnicodeSet & s1, const UnicodeSet & s2) {
    208     return s1 & s2;
    209 }
    210 
    211 inline UnicodeSet uset_union(const UnicodeSet & s1, const UnicodeSet & s2) {
    212     return s1 + s2;
    213 }
    214 
    215 inline UnicodeSet uset_difference(const UnicodeSet & s1, const UnicodeSet & s2) {
    216     return s1 - s2;
    217 }
    218 
    219 inline UnicodeSet uset_symmetric_difference(const UnicodeSet & s1, const UnicodeSet & s2) {
    220     return s1 ^ s2;
    221 }
    222 
    223204}
    224205
Note: See TracChangeset for help on using the changeset viewer.