+/**\class ModelAPI_FiltersFeature
+* \ingroup DataModel
+* \brief An interface for working with filters in the feature. A filters feature must inherit it
+* in order to allow management of filters in the feature data structure.
+*/
+class ModelAPI_FiltersFeature: public ModelAPI_Feature
+{
+public:
+ /// Adds a filter to the feature. Also initializes arguments of this filter.
+ virtual void addFilter(const std::string theFilterID) = 0;
+
+ /// Removes an existing filter from the feature.
+ virtual void removeFilter(const std::string theFilterID) = 0;
+
+ /// Returns the list of existing filters in the feature.
+ virtual std::list<std::string> filters() const = 0;
+
+ /// Stores the reversed flag for the filter.
+ virtual void setReversed(const std::string theFilterID, const bool theReversed) = 0;
+
+ /// Returns the reversed flag value for the filter.
+ virtual bool isReversed(const std::string theFilterID) = 0;
+
+ /// Returns the ordered list of attributes related to the filter.
+ virtual std::list<AttributePtr> filterArgs(const std::string theFilterID) const = 0;
+};
+
+typedef std::shared_ptr<ModelAPI_FiltersFeature> FiltersFeaturePtr;
+
+