#ifndef __FILTEREDQUERY_H
#define __FILTEREDQUERY_H
#include <Query.h>
#include "ObjectList.h"
typedef bool (*filter_function)(const entry_ref *ref, void *arg);
struct filter_pair {
filter_function filter;
void *args;
filter_pair(filter_function function, void *arguments)
{
filter = function;
args = arguments;
}
};
class TFilteredQuery : public BQuery {
public:
TFilteredQuery();
TFilteredQuery(const BQuery &query);
TFilteredQuery(const TFilteredQuery &query);
virtual ~TFilteredQuery();
bool AddFilter(filter_function function, void *arg);
void RemoveFilter(filter_function function);
virtual status_t GetNextRef(entry_ref *ref);
virtual status_t GetNextEntry(BEntry *entry, bool traverse = false);
status_t Clear();
private:
BObjectList<filter_pair> fFilters;
};
#endif