// internal for testing purposes internal static NameLookup CreateInner(OrdererNames ordered, MemoryPool <char> memoryPool) { if (TryCreateAdaptiveRadixTrie(ordered, memoryPool, out var trieOwner, out var trieMem)) { return(new NameLookup(Algorithm.AdaptiveRadixTrie, trieOwner, trieMem)); } if (TryCreateBinarySearch(ordered, memoryPool, out var binaryTreeOwner, out var binaryTreeMem)) { return(new NameLookup(Algorithm.BinarySearch, binaryTreeOwner, binaryTreeMem)); } Throw.InvalidOperationException($"Could create a lookup for dynamic member names, names could not fit in memory acquired from MemoryPool: {memoryPool}"); return(default);
internal static NameLookup Create(string[] names, MemoryPool <char> memoryPool) { using var ordered = OrdererNames.Create(names, memoryPool); return(CreateInner(ordered, memoryPool)); }