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

namespace Creaturelib.Generated
{
    internal static class DataLibrary
    {
        /// <param name="out">const DataLibrary * &</param>
        /// <param name="settings">LibrarySettings *</param>
        /// <param name="species">SpeciesLibrary *</param>
        /// <param name="attacks">AttackLibrary *</param>
        /// <param name="items">ItemLibrary *</param>
        /// <param name="growthRates">GrowthRateLibrary *</param>
        /// <param name="typeLibrary">TypeLibrary *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_DataLibrary_Construct")]
        internal static extern byte Construct(ref IntPtr @out, IntPtr settings, IntPtr species, IntPtr attacks, IntPtr items, IntPtr growthRates, IntPtr typeLibrary);

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

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

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

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

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

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

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

    }
}
