Пример #1
0
        // 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);
Пример #2
0
        internal static NameLookup Create(string[] names, MemoryPool <char> memoryPool)
        {
            using var ordered = OrdererNames.Create(names, memoryPool);

            return(CreateInner(ordered, memoryPool));
        }