[Request for help] CompositeRange<T>
От: Sinix  
Дата: 30.09.16 20:29
Оценка:
Народ, ай нид хелп!
Наконец добил черновой вариант CompositeRange<T> — штуки для операций над составными диапазонами.

Для затравки:
            var range = Range.Create(1, 2, "Key1")
                .ToCompositeRange()
                .Union(Range.Create(5, 10, "Key2"))
                .Except(Range.Create(7, 8))
                .Intersect(2, 9);
            AreEqual(range.ToInvariantString(), "[2..9]: { 'Key1':[2..2]; 'Key2':[5..7); 'Key2':(8..9] }");


            range = range.Union(Range.Create(7, 8, "Key1"));
            AreEqual(range.ToInvariantString(), "[2..9]: { 'Key1':[2..2]; 'Key2':[5..7); 'Key1':[7..8]; 'Key2':(8..9] }");


            range = range
                .Except(7, 8)
                .Union(Range.Create(7, 8, "Key2"));
            AreEqual(range.ToInvariantString(), "[2..9]: { 'Key1':[2..2]; 'Key2':[5..9] }");


Код лежит в Experimental, тесты рядышком.

Сразу предупреждаю — код полный отстой в смысле производительности, по аллокациям — вообще адов ад.

Это всё будет потихоньку допиливаться, пока вопрос в другом: что нравится / не нравится, чего не хватает, какие предложения/пожелания — всё вэлкам!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.