bool Matches::addMatches( char *s, int32_t slen, mf_t flags ) { // . do not breach // . happens a lot with a lot of link info text if ( m_numMatchGroups >= MAX_MATCHGROUPS ) { return true; } // get some new ptrs for this match group Words *wp = &m_wordsArray [ m_numMatchGroups ]; Bits *bp = &m_bitsArray [ m_numMatchGroups ]; Pos *pb = &m_posArray [ m_numMatchGroups ]; // set the words class for this match group if ( !wp->set( s, slen, true ) ) { return false; } // bits vector if ( ! bp->setForSummary ( wp ) ) { return false; } // position vector if ( ! pb->set ( wp ) ) { return false; } // record the start int32_t startNumMatches = m_numMatches; // sometimes it returns true w/o incrementing this int32_t n = m_numMatchGroups; // . add all the Match classes from this match group // . this increments m_numMatchGroups on success bool status = addMatches( wp, NULL, NULL, bp, pb, flags ); // if this matchgroup had some, matches, then keep it if ( m_numMatches > startNumMatches ) { return status; } // otherwise, reset it, useless wp->reset(); bp->reset(); pb->reset(); // do not decrement the counter if we never incremented it if ( n == m_numMatchGroups ) { return status; } // ok, remove it m_numMatchGroups--; return status; }
void Ticket_ATTLC::Invalidate(Bits& b) { b.reset(num); }