/
dev-npgsql
/
npgsql
Обзор
Документация
Войти
/
dev-npgsql
/
npgsql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
v8.0.9
src/Npgsql.GeoJSON/CrsMap.cs
58 строк
1 KB
Nino Floris
Handler rework (#5123)
26 сен 2023, 00:08
Не верифицирован
26 сен 2023, 00:08
0b7aecb
Код
Авторство
О чём код?
namespace Npgsql.GeoJSON; /// <summary> /// A map of entries that map the authority to the inclusive range of SRID. /// </summary> public partial class CrsMap { readonly CrsMapEntry[]? _overriden; internal CrsMap(CrsMapEntry[]? overriden) => _overriden = overriden; internal string? GetAuthority(int srid) => GetAuthority(_overriden, srid) ?? GetAuthority(WellKnown, srid); static string? GetAuthority(CrsMapEntry[]? entries, int srid) { if (entries == null) return null; var left = 0; var right = entries.Length; while (left <= right) { var middle = left + (right - left) / 2; var entry = entries[middle]; if (srid < entry.MinSrid) right = middle - 1; else if (srid > entry.MaxSrid) left = middle + 1; else return entry.Authority; } return null; } } /// <summary> /// An entry which maps the authority to the inclusive range of SRID. /// </summary> readonly struct CrsMapEntry { internal readonly int MinSrid; internal readonly int MaxSrid; internal readonly string? Authority; internal CrsMapEntry(int minSrid, int maxSrid, string? authority) { MinSrid = minSrid; MaxSrid = maxSrid; Authority = authority != null ? string.IsInterned(authority) ?? authority : null; } }