-#include <map>
-
-/// separator between the filter name and the filter attribute ID
-static const std::string kFilterSeparator = "__";
-
-/**\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;
-
- /// Sets the attribute (not-persistent field) that contains this filters feature.
- /// The filter feature may make synchronization by this method call.
- virtual void setAttribute(const AttributePtr& theAttr) = 0;
-
- /// Returns the attribute (not-persistent field) that contains this filters feature.
- virtual const AttributePtr& baseAttribute() const = 0;
-};
-
-typedef std::shared_ptr<ModelAPI_FiltersFeature> FiltersFeaturePtr;
-
-
-/// definition of arguments of filters: id of the argument to attributes
-class ModelAPI_FiltersArgs {
- /// a map from the FilterID+AttributeID -> attribute
- std::map<std::string, AttributePtr> myMap;
- std::string myCurrentFilter; ///< ID of the filter that will take attributes now
- FiltersFeaturePtr myFeature; ///< the feature is stored to minimize initAttribute interface
-public:
- ModelAPI_FiltersArgs() {}