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

namespace Creaturelib.Generated
{
    internal static class Item
    {
        /// <param name="name">const char *</param>
        /// <param name="category">ItemCategory</param>
        /// <param name="battleCategory">BattleItemCategory</param>
        /// <param name="price">int</param>
        /// <param name="flags">const char * *</param>
        /// <param name="flagsCount">long unsigned int</param>
        /// <returns>Item *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Item_Construct")]
        internal static extern IntPtr Construct(IntPtr name, ItemCategory category, BattleItemCategory battleCategory, int price, IntPtr flags, ulong flagsCount);

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

        /// <param name="p">const Item *</param>
        /// <returns>const char *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Item_GetName")]
        internal static extern IntPtr GetName(IntPtr p);

        /// <param name="p">const Item *</param>
        /// <returns>ItemCategory</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Item_GetCategory")]
        internal static extern ItemCategory GetCategory(IntPtr p);

        /// <param name="p">const Item *</param>
        /// <returns>BattleItemCategory</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Item_GetBattleCategory")]
        internal static extern BattleItemCategory GetBattleCategory(IntPtr p);

        /// <param name="p">const Item *</param>
        /// <returns>int</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Item_GetPrice")]
        internal static extern int GetPrice(IntPtr p);

        /// <param name="p">const Item *</param>
        /// <param name="key">const char *</param>
        /// <returns>bool</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Item_HasFlag")]
        internal static extern byte HasFlag(IntPtr p, IntPtr key);

    }
}
