using Kbg.NppPluginNET.PluginInfrastructure;
using SharedUtility;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;

// ReSharper disable UnusedMember.Global
// ReSharper disable InconsistentNaming

namespace NppMarkdownRenderer
{
    [SuppressMessage("ReSharper", "UnusedMember.Local")]
    internal class UnmanagedExportsStubs
    {
        static UnmanagedExportsStubs()
        {
            AssemblyResolveInMyAround.Register();
        }

        [DllExport(CallingConvention = CallingConvention.Cdecl)]
        private static bool isUnicode()
        {
            return ManagedExportsBridge.IsUnicode();
        }

        [DllExport(CallingConvention = CallingConvention.Cdecl)]
        private static IntPtr getName()
        {
            return ManagedExportsBridge.GetName();
        }

        [DllExport(CallingConvention = CallingConvention.Cdecl)]
        private static void setInfo(NppData notepadPlusData)
        {
            ManagedExportsBridge.SetInfo(notepadPlusData);
        }

        [DllExport(CallingConvention = CallingConvention.Cdecl)]
        private static IntPtr getFuncsArray(ref int nbF)
        {
            return ManagedExportsBridge.GetFuncsArray(ref nbF);
        }

        [DllExport(CallingConvention = CallingConvention.Cdecl)]
        private static uint messageProc(uint Message, IntPtr wParam, IntPtr lParam)
        {
            return ManagedExportsBridge.MessageProc(Message, wParam, lParam);
        }

        [DllExport(CallingConvention = CallingConvention.Cdecl)]
        private static void beNotified(IntPtr notifyCode)
        {
            ManagedExportsBridge.BeNotified(notifyCode);
        }
    }
}
