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

namespace Creaturelib.Generated
{
    internal static class EffectParameter
    {
        /// <param name="b">bool</param>
        /// <returns>EffectParameter *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_EffectParameter_FromBool")]
        internal static extern IntPtr FromBool(byte b);

        /// <param name="i">long int</param>
        /// <returns>EffectParameter *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_EffectParameter_FromInt")]
        internal static extern IntPtr FromInt(long i);

        /// <param name="f">float</param>
        /// <returns>EffectParameter *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_EffectParameter_FromFloat")]
        internal static extern IntPtr FromFloat(float f);

        /// <param name="c">const char *</param>
        /// <returns>EffectParameter *</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_EffectParameter_FromString")]
        internal static extern IntPtr FromString(IntPtr c);

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

        /// <param name="p">const EffectParameter *</param>
        /// <returns>EffectParameterType</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_EffectParameter_GetType")]
        internal static extern EffectParameterType GetType(IntPtr p);

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

        /// <param name="p">const EffectParameter *</param>
        /// <param name="out">long int &</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_EffectParameter_AsInt")]
        internal static extern byte AsInt(IntPtr p, ref long @out);

        /// <param name="p">const EffectParameter *</param>
        /// <param name="out">float &</param>
        /// <returns>unsigned char</returns>
        [DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_EffectParameter_AsFloat")]
        internal static extern byte AsFloat(IntPtr p, ref float @out);

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

    }
}
