Exemplo n.º 1
0
void FilterWriterQueue<SourceType, DestinationQueueType>::Push(
    const Source& value) {
    if(!m_filter(value)) {
        return;
    }
    m_target->Push(value);
}
Exemplo n.º 2
0
	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;
	}
Exemplo n.º 3
0
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);
}
Exemplo n.º 5
0
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();
}