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

namespace Creaturelib.Generated
{
    internal static class BattleSide
    {
        /// <param name="index">unsigned char</param>
        /// <param name="battle">Battle *</param>
        /// <param name="creaturesPerSide">unsigned char</param>
        /// <returns>BattleSide *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_Construct")]
        internal static extern IntPtr Construct(byte index, IntPtr battle, byte creaturesPerSide);

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

        /// <param name="p">BattleSide *</param>
        /// <returns>bool</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_AllChoicesSet")]
        internal static extern byte AllChoicesSet(IntPtr p);

        /// <param name="out">bool &</param>
        /// <param name="p">BattleSide *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_AllPossibleSlotsFilled")]
        internal static extern byte AllPossibleSlotsFilled(ref byte @out, IntPtr p);

        /// <param name="p">BattleSide *</param>
        /// <param name="choice">BaseTurnChoice *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_SetChoice")]
        internal static extern byte SetChoice(IntPtr p, IntPtr choice);

        /// <param name="p">BattleSide *</param>
        /// <returns>void</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_ResetChoices")]
        internal static extern void ResetChoices(IntPtr p);

        /// <param name="p">BattleSide *</param>
        /// <param name="creature">Creature *</param>
        /// <param name="index">unsigned char</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_SetCreature")]
        internal static extern byte SetCreature(IntPtr p, IntPtr creature, byte index);

        /// <param name="out">Creature * &</param>
        /// <param name="p">BattleSide *</param>
        /// <param name="index">unsigned char</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_GetCreature")]
        internal static extern byte GetCreature(ref IntPtr @out, IntPtr p, byte index);

        /// <param name="p">BattleSide *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_GetSideIndex")]
        internal static extern byte GetSideIndex(IntPtr p);

        /// <param name="out">unsigned char &</param>
        /// <param name="p">BattleSide *</param>
        /// <param name="c">Creature *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_GetCreatureIndex")]
        internal static extern byte GetCreatureIndex(ref byte @out, IntPtr p, IntPtr c);

        /// <param name="p">BattleSide *</param>
        /// <param name="c">Creature *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_MarkSlotAsUnfillable")]
        internal static extern byte MarkSlotAsUnfillable(IntPtr p, IntPtr c);

        /// <param name="p">BattleSide *</param>
        /// <returns>bool</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_IsDefeated")]
        internal static extern byte IsDefeated(IntPtr p);

        /// <param name="p">BattleSide *</param>
        /// <returns>bool</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_HasFled")]
        internal static extern byte HasFled(IntPtr p);

        /// <param name="p">BattleSide *</param>
        /// <returns>void</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_MarkAsFled")]
        internal static extern void MarkAsFled(IntPtr p);

    }
}
