using ProjectStormtrooper.Drawnings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectStormtrooper.CollectionGenericObjects;
///
/// Интерфейс описания действий для набора хранимых объектов
///
/// Параметр: ограничение - ссылочный тип
public interface ICollectionGenericObjects
where T : class
{
///
/// Количество объектов в коллекции
///
int Count { get; }
///
/// Установка максимального количества элементов
///
int MaxCount { get; set; }
///
/// Добавление объекта в коллекцию
///
/// Добавление объекта
/// Cравнение двух объектов
/// true - вставка прошла удачно, false - вставка не удалась
int Insert(T obj, IEqualityComparer? comparer = null);
///
/// Добавление объекта в коллекцию на конкретную позицию
///
/// Добавление объекта
/// Позиция
/// Cравнение двух объектов
/// true - вставка прошла удачно, false - вставка не удалась
int Insert(T obj, int position, IEqualityComparer? comparer = null);
///
/// Удаление объекта из коллекции с конкретной позиции
///
/// Позиция
/// true - удаление прошло удачно,false - удаление не удалось
T? Remove(int position);
///
/// Получение объекта по позиции
///
/// Позиция
/// Объект
T? Get(int position);
///
/// Получение типа коллекции
///
CollectionType GetCollectionType { get; }
///
/// Получение объектов коллекции по одному
///
/// Поэлементый вывод элементов коллекции
IEnumerable GetItems();
///
/// Сортировка коллекции
///
/// Сравнитель объектов
void CollectionSort(IComparer comparer);
}