#pragma once #include #include class Item; class ItemType; class ItemFilter : public virtual Framework::ReferenceCounter { public: ItemFilter(); virtual bool matchItem( const Item *zItem ) const = 0; }; class CombinedItemFilter : public ItemFilter { private: ItemFilter *filterA; ItemFilter *filterB; std::function op; public: CombinedItemFilter( ItemFilter *filterA, ItemFilter *filterB, std::function op ); bool matchItem( const Item *zItem ) const override; }; class AnyItemFilter : public ItemFilter { public: AnyItemFilter(); bool matchItem( const Item *zItem ) const override; }; class TypeItemFilter : public ItemFilter { private: const ItemType *zType; public: TypeItemFilter( const ItemType *zType ); bool matchItem( const Item *zItem ) const override; };