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

namespace Creaturelib.Generated
{
    internal static class BattleLibrary
    {
        /// <param name="out">const BattleLibrary * &</param>
        /// <param name="staticLib">const DataLibrary *</param>
        /// <param name="statCalculator">BattleStatCalculator *</param>
        /// <param name="damageLibrary">DamageLibrary *</param>
        /// <param name="experienceLibrary">ExperienceLibrary *</param>
        /// <param name="scriptResolver">ScriptResolver *</param>
        /// <param name="miscLibrary">MiscLibrary *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleLibrary_Construct")]
        internal static extern byte Construct(ref IntPtr @out, IntPtr staticLib, IntPtr statCalculator, IntPtr damageLibrary, IntPtr experienceLibrary, IntPtr scriptResolver, IntPtr miscLibrary);

        /// <param name="p">const BattleLibrary *</param>
        /// <returns>void</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleLibrary_Destruct")]
        internal static extern void Destruct(IntPtr p);

        /// <param name="p">const BattleLibrary *</param>
        /// <returns>const DataLibrary *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleLibrary_GetStaticLib")]
        internal static extern IntPtr GetStaticLib(IntPtr p);

        /// <param name="p">const BattleLibrary *</param>
        /// <returns>const BattleStatCalculator *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleLibrary_GetStatCalculator")]
        internal static extern IntPtr GetStatCalculator(IntPtr p);

        /// <param name="p">const BattleLibrary *</param>
        /// <returns>const DamageLibrary *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleLibrary_GetDamageLibrary")]
        internal static extern IntPtr GetDamageLibrary(IntPtr p);

        /// <param name="p">const BattleLibrary *</param>
        /// <returns>const MiscLibrary *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleLibrary_GetMiscLibrary")]
        internal static extern IntPtr GetMiscLibrary(IntPtr p);

        /// <param name="p">const BattleLibrary *</param>
        /// <returns>const ExperienceLibrary *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleLibrary_GetExperienceLibrary")]
        internal static extern IntPtr GetExperienceLibrary(IntPtr p);

    }
}
