void FilterWriterQueue<SourceType, DestinationQueueType>::Push( const Source& value) { if(!m_filter(value)) { return; } m_target->Push(value); }
bool Printer::SPrintF_Line(LogLine& out_line, PCTSTR szFmt, const int* pParams)// filter and format the line { out_line.linestr.FormatV(szFmt, (va_list) pParams); if( m_filter && !m_filter(out_line) ) return false; return true; }
void StackIterator::gotoNextFrameWithFilter() { ASSERT(m_frame.callFrame()); while (m_frame.callFrame()) { gotoNextFrame(); if (!m_frame.callFrame() || !m_filter || !m_filter(&m_frame)) break; } m_frame.m_index++; }
sample_t CallbackIIRFilterReader::filter() { return m_filter(this, m_data); }
void EventsModel::applyFilters(bool fromCache) { if (fromCache) { beginResetModel(); items.clear(); for (QHash<DVRServer*,QList<EventData*> >::Iterator it = cachedEvents.begin(); it != cachedEvents.end(); ++it) { if (!m_filter.sources.isEmpty() && !m_filter.sources.contains(it.key())) continue; for (QList<EventData*>::Iterator eit = it->begin(); eit != it->end(); ++eit) { if (m_filter(*eit)) items.append(*eit); } } bool block = blockSignals(true); resort(); blockSignals(block); endResetModel(); } else { /* Group contiguous removed rows together; provides a significant boost in performance */ int removeFirst = -1; for (int i = 0; ; ++i) { if (i < items.size() && !m_filter(items[i])) { if (removeFirst < 0) removeFirst = i; } else if (removeFirst >= 0) { beginRemoveRows(QModelIndex(), removeFirst, i-1); items.erase(items.begin()+removeFirst, items.begin()+i); i = removeFirst; removeFirst = -1; endRemoveRows(); } if (i == items.size()) break; } #if 0 /* Experimental concurrent implementation; would later be extended to be nonblocking */ QList<EventData*> newItems = QtConcurrent::blockingFiltered(items, m_filter); int oFirstRemove = -1; for (int oI = 0, nI = 0; oI < items.size(); ++oI) { if (nI >= newItems.size()) { if (oFirstRemove < 0) oFirstRemove = oI; beginRemoveRows(QModelIndex(), oFirstRemove, items.size()-1); items.erase(items.begin()+oFirstRemove, items.end()); endRemoveRows(); break; } if (oFirstRemove < 0 && items[oI] != newItems[nI]) oFirstRemove = oI; else if (oFirstRemove >= 0 && items[oI] == newItems[nI]) { beginRemoveRows(QModelIndex(), oFirstRemove, oI-1); items.erase(items.begin()+oFirstRemove, items.begin()+oI); oI = oFirstRemove; oFirstRemove = -1; endRemoveRows(); } if (oFirstRemove < 0) { ++nI; } } #endif } emit filtersChanged(); }