// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;

namespace Pkmnlib.Generated
{
    internal static class AngelScriptResolver
    {
        /// <returns>AngelScriptResolver *</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_Construct")]
        internal static extern IntPtr Construct();

        /// <param name="p">AngelScriptResolver *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_Destruct")]
        internal static extern byte Destruct(IntPtr p);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="lib">BattleLibrary *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_Initialize")]
        internal static extern byte Initialize(IntPtr p, IntPtr lib);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="name">const char *</param>
        /// <param name="script">const char *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_CreateScript")]
        internal static extern byte CreateScript(IntPtr p, IntPtr name, IntPtr script);

        /// <param name="p">AngelScriptResolver *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_FinalizeModule")]
        internal static extern byte FinalizeModule(IntPtr p);

        /// <param name="out">Script * &</param>
        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="category">ScriptCategory</param>
        /// <param name="scriptName">const char *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_LoadScript")]
        internal static extern byte LoadScript(ref IntPtr @out, IntPtr p, ScriptCategory category, IntPtr scriptName);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="file">const char *</param>
        /// <param name="stripDebugInfo">bool</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_WriteByteCodeToFile")]
        internal static extern byte WriteByteCodeToFile(IntPtr p, IntPtr file, byte stripDebugInfo);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="file">const char *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_LoadByteCodeFromFile")]
        internal static extern byte LoadByteCodeFromFile(IntPtr p, IntPtr file);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="stripDebugInfo">bool</param>
        /// <param name="size">long unsigned int &</param>
        /// <param name="out">unsigned char * &</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_WriteByteCodeToMemory")]
        internal static extern byte WriteByteCodeToMemory(IntPtr p, byte stripDebugInfo, ref ulong size, ref IntPtr @out);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="memory">unsigned char *</param>
        /// <param name="size">long unsigned int</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_LoadByteCodeFromMemory")]
        internal static extern byte LoadByteCodeFromMemory(IntPtr p, IntPtr memory, ulong size);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="typeName">const char *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_RegisterType")]
        internal static extern byte RegisterType(IntPtr p, IntPtr typeName);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="typeName">const char *</param>
        /// <param name="decl">const char *</param>
        /// <param name="func">Function *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_RegisterTypeMethod")]
        internal static extern byte RegisterTypeMethod(IntPtr p, IntPtr typeName, IntPtr decl, IntPtr func);

        /// <param name="p">AngelScriptResolver *</param>
        /// <param name="decl">const char *</param>
        /// <param name="func">Function *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_AngelScriptResolver_RegisterGlobalMethod")]
        internal static extern byte RegisterGlobalMethod(IntPtr p, IntPtr decl, IntPtr func);

    }
}
