Exemplo n.º 1
0
    void intersect (basic_charset &rhs_, basic_charset &overlap_)
    {
        _token.intersect (rhs_._token, overlap_._token);

        if (!overlap_._token.empty ())
        {
            typename index_set::const_iterator iter_ = _index_set.begin ();
            typename index_set::const_iterator end_ = _index_set.end ();

            for (; iter_ != end_; ++iter_)
            {
                overlap_._index_set.insert (*iter_);
            }

            iter_ = rhs_._index_set.begin ();
            end_ = rhs_._index_set.end ();

            for (; iter_ != end_; ++iter_)
            {
                overlap_._index_set.insert (*iter_);
            }

            if (_token.empty ())
            {
                _index_set.clear ();
            }

            if (rhs_._token.empty ())
            {
                rhs_._index_set.clear ();
            }
        }
    }
Exemplo n.º 2
0
 basic_equivset(const index_set &index_set_, const id_type id_,
     const bool greedy_, const node_vector &followpos_) :
     _index_vector(index_set_.begin(), index_set_.end()),
     _id(id_),
     _greedy(greedy_),
     _followpos(followpos_)
 {
 }
Exemplo n.º 3
0
    equivset (const index_set &index_set_, const bool greedy_,
        const std::size_t id_, const node_vector &followpos_) :
        _greedy (greedy_),
        _id (id_),
        _followpos (followpos_)
    {
        index_set::const_iterator iter_ = index_set_.begin ();
        index_set::const_iterator end_ = index_set_.end ();

        for (; iter_ != end_; ++iter_)
        {
            _index_vector.push_back (*iter_);
        }
    }
Exemplo n.º 4
0
    void intersect (basic_charset &rhs_, basic_charset &overlap_)
    {
        _token.intersect (rhs_._token, overlap_._token);

        if (!overlap_._token.empty ())
        {
            std::merge (_index_set.begin (), _index_set.end (),
                rhs_._index_set.begin (), rhs_._index_set.end (),
                std::inserter (overlap_._index_set,
                overlap_._index_set.end ()));

            if (_token.empty ())
            {
                _index_set.clear ();
            }

            if (rhs_._token.empty ())
            {
                rhs_._index_set.clear ();
            }
        }
    }
Exemplo n.º 5
0
 bool empty () const
 {
     return _token.empty () && _index_set.empty ();
 }
Exemplo n.º 6
0
 basic_charset (const token &token_, const std::size_t index_) :
     _token (token_),
     _index_set ()
 {
     _index_set.insert (index_);
 }