File: Implementation\AbstractCodePageEditorFactory.cs
Web Access
Project: src\src\VisualStudio\Core\Def\Microsoft.VisualStudio.LanguageServices_pxr0p0dn_wpftmp.csproj (Microsoft.VisualStudio.LanguageServices)
// 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.
 
#nullable disable
 
using System;
using Microsoft.VisualStudio.Shell.Interop;
using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
 
namespace Microsoft.VisualStudio.LanguageServices.Implementation;
 
internal abstract class AbstractCodePageEditorFactory : IVsEditorFactory
{
    private readonly AbstractEditorFactory _editorFactory;
 
    protected AbstractCodePageEditorFactory(AbstractEditorFactory editorFactory)
        => _editorFactory = editorFactory;
 
    int IVsEditorFactory.CreateEditorInstance(
        uint grfCreateDoc,
        string pszMkDocument,
        string pszPhysicalView,
        IVsHierarchy vsHierarchy,
        uint itemid,
        IntPtr punkDocDataExisting,
        out IntPtr ppunkDocView,
        out IntPtr ppunkDocData,
        out string pbstrEditorCaption,
        out Guid pguidCmdUI,
        out int pgrfCDW)
    {
        if (punkDocDataExisting != IntPtr.Zero)
        {
            ppunkDocView = IntPtr.Zero;
            ppunkDocData = IntPtr.Zero;
            pbstrEditorCaption = null;
            pguidCmdUI = Guid.Empty;
            pgrfCDW = 0;
 
            return VSConstants.VS_E_INCOMPATIBLEDOCDATA;
        }
 
        _editorFactory.SetEncoding(true);
        try
        {
            return _editorFactory.CreateEditorInstance(
                grfCreateDoc, pszMkDocument, pszPhysicalView, vsHierarchy, itemid,
                punkDocDataExisting, out ppunkDocView, out ppunkDocData,
                out pbstrEditorCaption, out pguidCmdUI, out pgrfCDW);
        }
        finally
        {
            _editorFactory.SetEncoding(false);
        }
    }
 
    int IVsEditorFactory.MapLogicalView(ref Guid rguidLogicalView, out string pbstrPhysicalView)
        => _editorFactory.MapLogicalView(ref rguidLogicalView, out pbstrPhysicalView);
 
    int IVsEditorFactory.SetSite(IOleServiceProvider psp)
        => VSConstants.S_OK;
 
    int IVsEditorFactory.Close()
        => VSConstants.S_OK;
}