/
dev-npgsql
/
npgsql
Обзор
Документация
Войти
/
dev-npgsql
/
npgsql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
v8.0.3
src/Npgsql.GeoJSON/Internal/CrsMapBuilder.cs
54 строки
1 KB
Nino Floris
Handler rework (#5123)
26 сен 2023, 00:08
Не верифицирован
26 сен 2023, 00:08
0b7aecb
Код
Авторство
О чём код?
using System; namespace Npgsql.GeoJSON.Internal; struct CrsMapBuilder { CrsMapEntry[] _overrides; int _overridenIndex; int _wellKnownIndex; internal void Add(in CrsMapEntry entry) { var wellKnown = CrsMap.WellKnown[_wellKnownIndex]; if (wellKnown.MinSrid == entry.MinSrid && wellKnown.MaxSrid == entry.MaxSrid && string.Equals(wellKnown.Authority, entry.Authority, StringComparison.Ordinal)) { _wellKnownIndex++; return; } if (wellKnown.MinSrid < entry.MinSrid) { do _wellKnownIndex++; while (CrsMap.WellKnown.Length < _wellKnownIndex && CrsMap.WellKnown[_wellKnownIndex].MaxSrid < entry.MaxSrid); AddCore(new CrsMapEntry(wellKnown.MinSrid, Math.Min(wellKnown.MaxSrid, entry.MinSrid - 1), null)); } AddCore(entry); } void AddCore(in CrsMapEntry entry) { var index = _overridenIndex + 1; if (_overrides == null) _overrides = new CrsMapEntry[4]; else if (_overrides.Length == index) Array.Resize(ref _overrides, _overrides.Length << 1); _overrides[_overridenIndex] = entry; _overridenIndex = index; } internal CrsMap Build() { if (_overrides != null && _overrides.Length < _overridenIndex) Array.Resize(ref _overrides, _overridenIndex); return new CrsMap(_overrides); } }