//+------------------------------------------------------------------+ //| ISet.mqh | //| Copyright 2000-2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #include "ICollection.mqh" //+------------------------------------------------------------------+ //| Interface ISet. | //| Usage: Provides the base interface for the abstraction of sets. | //+------------------------------------------------------------------+ template interface ISet: public ICollection { //--- methods of changing sets void ExceptWith(ICollection*collection); void ExceptWith(T &array[]); void IntersectWith(ICollection*collection); void IntersectWith(T &array[]); void SymmetricExceptWith(ICollection*collection); void SymmetricExceptWith(T &array[]); void UnionWith(ICollection*collection); void UnionWith(T &array[]); //--- methods for determining the relationship between sets bool IsProperSubsetOf(ICollection*collection); bool IsProperSubsetOf(T &array[]); bool IsProperSupersetOf(ICollection*collection); bool IsProperSupersetOf(T &array[]); bool IsSubsetOf(ICollection*collection); bool IsSubsetOf(T &array[]); bool IsSupersetOf(ICollection*collection); bool IsSupersetOf(T &array[]); bool Overlaps(ICollection*collection); bool Overlaps(T &array[]); bool SetEquals(ICollection*collection); bool SetEquals(T &array[]); }; //+------------------------------------------------------------------+