File: src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\BKTree.Serialization.cs
Web Access
Project: src\src\Workspaces\Core\Portable\Microsoft.CodeAnalysis.Workspaces.csproj (Microsoft.CodeAnalysis.Workspaces)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using Microsoft.CodeAnalysis.Internal.Log;
using Microsoft.CodeAnalysis.Shared.Extensions;
 
namespace Roslyn.Utilities;
 
internal readonly partial struct BKTree
{
    internal void WriteTo(ObjectWriter writer)
    {
        writer.WriteCharArray(_concatenatedLowerCaseWords, 0, _concatenatedLowerCaseWords.Length);
        writer.WriteArray(_nodes, static (w, n) => n.WriteTo(w));
        writer.WriteArray(_edges, static (w, n) => n.WriteTo(w));
    }
 
    internal static BKTree? ReadFrom(ObjectReader reader)
    {
        try
        {
            return new BKTree(
                reader.ReadCharArray(),
                reader.ReadArray(Node.ReadFrom),
                reader.ReadArray(Edge.ReadFrom));
        }
        catch
        {
            Logger.Log(FunctionId.BKTree_ExceptionInCacheRead);
            return null;
        }
    }
}