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

namespace Creaturelib.Generated
{
    internal static class ExecutingAttack
    {
        /// <param name="out">ExecutingAttack * &</param>
        /// <param name="targets">const Creature * *</param>
        /// <param name="targetCount">long unsigned int</param>
        /// <param name="numberHits">unsigned char</param>
        /// <param name="user">Creature *</param>
        /// <param name="attack">LearnedAttack *</param>
        /// <param name="script">Script *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ExecutingAttack_Construct")]
        internal static extern byte Construct(ref IntPtr @out, IntPtr targets, ulong targetCount, byte numberHits, IntPtr user, IntPtr attack, IntPtr script);

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

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

        /// <param name="out">HitData * &</param>
        /// <param name="p">ExecutingAttack *</param>
        /// <param name="target">Creature *</param>
        /// <param name="hit">unsigned char</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ExecutingAttack_GetHitData")]
        internal static extern byte GetHitData(ref IntPtr @out, IntPtr p, IntPtr target, byte hit);

        /// <param name="p">ExecutingAttack *</param>
        /// <param name="target">Creature *</param>
        /// <returns>bool</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ExecutingAttack_IsCreatureTarget")]
        internal static extern byte IsCreatureTarget(IntPtr p, IntPtr target);

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

        /// <param name="p">ExecutingAttack *</param>
        /// <returns>const const Creature * *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ExecutingAttack_GetTargets")]
        internal static extern IntPtr GetTargets(IntPtr p);

        /// <param name="p">ExecutingAttack *</param>
        /// <returns>Creature *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ExecutingAttack_GetUser")]
        internal static extern IntPtr GetUser(IntPtr p);

        /// <param name="p">ExecutingAttack *</param>
        /// <returns>LearnedAttack *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ExecutingAttack_GetAttack")]
        internal static extern IntPtr GetAttack(IntPtr p);

    }
}
