// This file is automatically generated.
using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Steam4NET
{

	public enum MediaController_Status : int
	{
	};
	
	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class IClientMusicVTable
	{
		public IntPtr BIsEnabled0;
		public IntPtr Enable1;
		public IntPtr EnableCrawlLogging2;
		public IntPtr BIsPlaying3;
		public IntPtr GetQueueCount4;
		public IntPtr GetCurrentQueueEntry5;
		public IntPtr GetQueueEntryURI6;
		public IntPtr GetQueueEntryData7;
		public IntPtr EmptyQueue8;
		public IntPtr RemoveQueueEntry9;
		public IntPtr AddAlbumToQueue10;
		public IntPtr AddTrackToQueue11;
		public IntPtr GetPlaybackStatus12;
		public IntPtr SetPlayingLooped13;
		public IntPtr IsPlayingLooped14;
		public IntPtr SetPlayingShuffled15;
		public IntPtr IsPlayingShuffled16;
		public IntPtr Play17;
		public IntPtr Pause18;
		public IntPtr Stop19;
		public IntPtr PlayPrevious20;
		public IntPtr PlayEntry21;
		public IntPtr SetVolume22;
		public IntPtr GetVolume23;
		public IntPtr ResetLocalLibrary24;
		public IntPtr GetStatusLocalLibrary25;
		public IntPtr SaveLocalLibraryDirectorySettings26;
		public IntPtr GetLocalLibraryDirectoryEntryCount27;
		public IntPtr GetLocalLibraryDirectoryEntry28;
		public IntPtr AddLocalLibraryDirectoryEntry29;
		public IntPtr ResetLocalLibraryDirectories30;
		public IntPtr GetDefaultLocalLibraryDirectory31;
		public IntPtr LocalLibraryStopCrawling32;
		public IntPtr UpdateLocalLibraryDirectoriesToCrawl33;
		public IntPtr BLocalLibraryIsCrawling34;
		public IntPtr CrawlAlbum35;
		public IntPtr CrawlTrack36;
		public IntPtr GetLocalLibraryAlbumCount37;
		public IntPtr GetLocalLibraryAlbumKey38;
		public IntPtr GetLocalLibraryAlbumEntry39;
		public IntPtr GetLocalLibraryAlbumTrackEntry40;
		public IntPtr GetLocalLibraryTrackCount41;
		public IntPtr GetLocalLibraryAlbumTrackKey42;
		public IntPtr GetLocalLibraryTrackCountForAlbum43;
		public IntPtr GetLocalLibraryArtistCount44;
		public IntPtr GetLocalLibraryArtistName45;
		public IntPtr GetLocalLibraryAlbumCountForArtistName46;
		public IntPtr GetLocalLibraryArtistAlbumKey47;
		public IntPtr StartUsingSpotify48;
		public IntPtr StopUsingSpotify49;
		public IntPtr GetStatusSpotify50;
		public IntPtr LoginSpotify51;
		public IntPtr ReloginSpotify52;
		public IntPtr GetCurrentUserSpotify53;
		public IntPtr ForgetCurrentUserSpotify54;
		public IntPtr LogoutSpotify55;
		public IntPtr DumpStatusToConsole56;
		private IntPtr DTorIClientMusic57;
	};
	
	[InteropHelp.InterfaceVersion("CLIENTMUSIC_INTERFACE_VERSION001")]
	public class IClientMusic : InteropHelp.NativeWrapper<IClientMusicVTable>
	{
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBIsEnabled( IntPtr thisptr );
		public bool BIsEnabled(  ) 
		{
			return this.GetFunction<NativeBIsEnabled>( this.Functions.BIsEnabled0 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeEnableB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bUnk );
		public void Enable( bool bUnk ) 
		{
			this.GetFunction<NativeEnableB>( this.Functions.Enable1 )( this.ObjectAddress, bUnk ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeEnableCrawlLoggingB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bUnk );
		public void EnableCrawlLogging( bool bUnk ) 
		{
			this.GetFunction<NativeEnableCrawlLoggingB>( this.Functions.EnableCrawlLogging2 )( this.ObjectAddress, bUnk ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBIsPlaying( IntPtr thisptr );
		public bool BIsPlaying(  ) 
		{
			return this.GetFunction<NativeBIsPlaying>( this.Functions.BIsPlaying3 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetQueueCount( IntPtr thisptr );
		public Int32 GetQueueCount(  ) 
		{
			return this.GetFunction<NativeGetQueueCount>( this.Functions.GetQueueCount4 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetCurrentQueueEntry( IntPtr thisptr );
		public Int32 GetCurrentQueueEntry(  ) 
		{
			return this.GetFunction<NativeGetCurrentQueueEntry>( this.Functions.GetCurrentQueueEntry5 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetQueueEntryURIISI( IntPtr thisptr, Int32 iIndex, StringBuilder arg1, Int32 arg2 );
		public bool GetQueueEntryURI( Int32 iIndex, StringBuilder arg1, Int32 arg2 ) 
		{
			return this.GetFunction<NativeGetQueueEntryURIISI>( this.Functions.GetQueueEntryURI6 )( this.ObjectAddress, iIndex, arg1, arg2 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetQueueEntryDataISISISI( IntPtr thisptr, Int32 iIndex, StringBuilder arg1, Int32 arg2, StringBuilder arg3, Int32 arg4, StringBuilder arg5, Int32 arg6 );
		public bool GetQueueEntryData( Int32 iIndex, StringBuilder arg1, Int32 arg2, StringBuilder arg3, Int32 arg4, StringBuilder arg5, Int32 arg6 ) 
		{
			return this.GetFunction<NativeGetQueueEntryDataISISISI>( this.Functions.GetQueueEntryData7 )( this.ObjectAddress, iIndex, arg1, arg2, arg3, arg4, arg5, arg6 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeEmptyQueue( IntPtr thisptr );
		public void EmptyQueue(  ) 
		{
			this.GetFunction<NativeEmptyQueue>( this.Functions.EmptyQueue8 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeRemoveQueueEntryIB( IntPtr thisptr, Int32 iIndex, [MarshalAs(UnmanagedType.I1)] bool bUnk );
		public void RemoveQueueEntry( Int32 iIndex, bool bUnk ) 
		{
			this.GetFunction<NativeRemoveQueueEntryIB>( this.Functions.RemoveQueueEntry9 )( this.ObjectAddress, iIndex, bUnk ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeAddAlbumToQueueSBB( IntPtr thisptr, string arg0, [MarshalAs(UnmanagedType.I1)] bool arg1, [MarshalAs(UnmanagedType.I1)] bool arg2 );
		public void AddAlbumToQueue( string arg0, bool arg1, bool arg2 ) 
		{
			this.GetFunction<NativeAddAlbumToQueueSBB>( this.Functions.AddAlbumToQueue10 )( this.ObjectAddress, arg0, arg1, arg2 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeAddTrackToQueueSBBB( IntPtr thisptr, string arg0, [MarshalAs(UnmanagedType.I1)] bool arg1, [MarshalAs(UnmanagedType.I1)] bool arg2, [MarshalAs(UnmanagedType.I1)] bool arg3 );
		public void AddTrackToQueue( string arg0, bool arg1, bool arg2, bool arg3 ) 
		{
			this.GetFunction<NativeAddTrackToQueueSBBB>( this.Functions.AddTrackToQueue11 )( this.ObjectAddress, arg0, arg1, arg2, arg3 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate AudioPlayback_Status NativeGetPlaybackStatus( IntPtr thisptr );
		public AudioPlayback_Status GetPlaybackStatus(  ) 
		{
			return this.GetFunction<NativeGetPlaybackStatus>( this.Functions.GetPlaybackStatus12 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetPlayingLoopedB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bPlayingLooped );
		public void SetPlayingLooped( bool bPlayingLooped ) 
		{
			this.GetFunction<NativeSetPlayingLoopedB>( this.Functions.SetPlayingLooped13 )( this.ObjectAddress, bPlayingLooped ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeIsPlayingLooped( IntPtr thisptr );
		public bool IsPlayingLooped(  ) 
		{
			return this.GetFunction<NativeIsPlayingLooped>( this.Functions.IsPlayingLooped14 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetPlayingShuffledB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bPlayingShuffled );
		public void SetPlayingShuffled( bool bPlayingShuffled ) 
		{
			this.GetFunction<NativeSetPlayingShuffledB>( this.Functions.SetPlayingShuffled15 )( this.ObjectAddress, bPlayingShuffled ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeIsPlayingShuffled( IntPtr thisptr );
		public bool IsPlayingShuffled(  ) 
		{
			return this.GetFunction<NativeIsPlayingShuffled>( this.Functions.IsPlayingShuffled16 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePlay( IntPtr thisptr );
		public void Play(  ) 
		{
			this.GetFunction<NativePlay>( this.Functions.Play17 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePause( IntPtr thisptr );
		public void Pause(  ) 
		{
			this.GetFunction<NativePause>( this.Functions.Pause18 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeStop( IntPtr thisptr );
		public void Stop(  ) 
		{
			this.GetFunction<NativeStop>( this.Functions.Stop19 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePlayPrevious( IntPtr thisptr );
		public void PlayPrevious(  ) 
		{
			this.GetFunction<NativePlayPrevious>( this.Functions.PlayPrevious20 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePlayEntryI( IntPtr thisptr, Int32 arg0 );
		public void PlayEntry( Int32 arg0 ) 
		{
			this.GetFunction<NativePlayEntryI>( this.Functions.PlayEntry21 )( this.ObjectAddress, arg0 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetVolumeF( IntPtr thisptr, float flVolume );
		public void SetVolume( float flVolume ) 
		{
			this.GetFunction<NativeSetVolumeF>( this.Functions.SetVolume22 )( this.ObjectAddress, flVolume ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate float NativeGetVolume( IntPtr thisptr );
		public float GetVolume(  ) 
		{
			return this.GetFunction<NativeGetVolume>( this.Functions.GetVolume23 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeResetLocalLibrary( IntPtr thisptr );
		public void ResetLocalLibrary(  ) 
		{
			this.GetFunction<NativeResetLocalLibrary>( this.Functions.ResetLocalLibrary24 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate MediaController_Status NativeGetStatusLocalLibrary( IntPtr thisptr );
		public MediaController_Status GetStatusLocalLibrary(  ) 
		{
			return this.GetFunction<NativeGetStatusLocalLibrary>( this.Functions.GetStatusLocalLibrary25 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSaveLocalLibraryDirectorySettings( IntPtr thisptr );
		public void SaveLocalLibraryDirectorySettings(  ) 
		{
			this.GetFunction<NativeSaveLocalLibraryDirectorySettings>( this.Functions.SaveLocalLibraryDirectorySettings26 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetLocalLibraryDirectoryEntryCount( IntPtr thisptr );
		public Int32 GetLocalLibraryDirectoryEntryCount(  ) 
		{
			return this.GetFunction<NativeGetLocalLibraryDirectoryEntryCount>( this.Functions.GetLocalLibraryDirectoryEntryCount27 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetLocalLibraryDirectoryEntryISI( IntPtr thisptr, Int32 arg0, StringBuilder arg1, Int32 arg2 );
		public bool GetLocalLibraryDirectoryEntry( Int32 arg0, StringBuilder arg1, Int32 arg2 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryDirectoryEntryISI>( this.Functions.GetLocalLibraryDirectoryEntry28 )( this.ObjectAddress, arg0, arg1, arg2 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeAddLocalLibraryDirectoryEntryS( IntPtr thisptr, string arg0 );
		public void AddLocalLibraryDirectoryEntry( string arg0 ) 
		{
			this.GetFunction<NativeAddLocalLibraryDirectoryEntryS>( this.Functions.AddLocalLibraryDirectoryEntry29 )( this.ObjectAddress, arg0 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeResetLocalLibraryDirectoriesB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool arg0 );
		public void ResetLocalLibraryDirectories( bool arg0 ) 
		{
			this.GetFunction<NativeResetLocalLibraryDirectoriesB>( this.Functions.ResetLocalLibraryDirectories30 )( this.ObjectAddress, arg0 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetDefaultLocalLibraryDirectorySI( IntPtr thisptr, StringBuilder arg0, Int32 arg1 );
		public bool GetDefaultLocalLibraryDirectory( StringBuilder arg0, Int32 arg1 ) 
		{
			return this.GetFunction<NativeGetDefaultLocalLibraryDirectorySI>( this.Functions.GetDefaultLocalLibraryDirectory31 )( this.ObjectAddress, arg0, arg1 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLocalLibraryStopCrawling( IntPtr thisptr );
		public void LocalLibraryStopCrawling(  ) 
		{
			this.GetFunction<NativeLocalLibraryStopCrawling>( this.Functions.LocalLibraryStopCrawling32 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeUpdateLocalLibraryDirectoriesToCrawl( IntPtr thisptr );
		public void UpdateLocalLibraryDirectoriesToCrawl(  ) 
		{
			this.GetFunction<NativeUpdateLocalLibraryDirectoriesToCrawl>( this.Functions.UpdateLocalLibraryDirectoriesToCrawl33 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBLocalLibraryIsCrawling( IntPtr thisptr );
		public bool BLocalLibraryIsCrawling(  ) 
		{
			return this.GetFunction<NativeBLocalLibraryIsCrawling>( this.Functions.BLocalLibraryIsCrawling34 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeCrawlAlbumS( IntPtr thisptr, string arg0 );
		public void CrawlAlbum( string arg0 ) 
		{
			this.GetFunction<NativeCrawlAlbumS>( this.Functions.CrawlAlbum35 )( this.ObjectAddress, arg0 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeCrawlTrackS( IntPtr thisptr, string arg0 );
		public void CrawlTrack( string arg0 ) 
		{
			this.GetFunction<NativeCrawlTrackS>( this.Functions.CrawlTrack36 )( this.ObjectAddress, arg0 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetLocalLibraryAlbumCount( IntPtr thisptr );
		public Int32 GetLocalLibraryAlbumCount(  ) 
		{
			return this.GetFunction<NativeGetLocalLibraryAlbumCount>( this.Functions.GetLocalLibraryAlbumCount37 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetLocalLibraryAlbumKeyISI( IntPtr thisptr, Int32 arg0, StringBuilder arg1, Int32 arg2 );
		public bool GetLocalLibraryAlbumKey( Int32 arg0, StringBuilder arg1, Int32 arg2 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryAlbumKeyISI>( this.Functions.GetLocalLibraryAlbumKey38 )( this.ObjectAddress, arg0, arg1, arg2 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetLocalLibraryAlbumEntrySSISIIB( IntPtr thisptr, string arg0, StringBuilder arg1, Int32 arg2, StringBuilder arg3, Int32 arg4, ref Int32 arg5, ref bool arg6 );
		public bool GetLocalLibraryAlbumEntry( string arg0, StringBuilder arg1, Int32 arg2, StringBuilder arg3, Int32 arg4, ref Int32 arg5, ref bool arg6 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryAlbumEntrySSISIIB>( this.Functions.GetLocalLibraryAlbumEntry39 )( this.ObjectAddress, arg0, arg1, arg2, arg3, arg4, ref arg5, ref arg6 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetLocalLibraryAlbumTrackEntrySISIISI( IntPtr thisptr, string arg0, Int32 arg1, StringBuilder arg2, Int32 arg3, ref Int32 arg4, StringBuilder arg5, Int32 arg6 );
		public bool GetLocalLibraryAlbumTrackEntry( string arg0, Int32 arg1, StringBuilder arg2, Int32 arg3, ref Int32 arg4, StringBuilder arg5, Int32 arg6 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryAlbumTrackEntrySISIISI>( this.Functions.GetLocalLibraryAlbumTrackEntry40 )( this.ObjectAddress, arg0, arg1, arg2, arg3, ref arg4, arg5, arg6 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetLocalLibraryTrackCount( IntPtr thisptr );
		public Int32 GetLocalLibraryTrackCount(  ) 
		{
			return this.GetFunction<NativeGetLocalLibraryTrackCount>( this.Functions.GetLocalLibraryTrackCount41 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetLocalLibraryAlbumTrackKeySISI( IntPtr thisptr, string arg0, Int32 arg1, StringBuilder arg2, Int32 arg3 );
		public bool GetLocalLibraryAlbumTrackKey( string arg0, Int32 arg1, StringBuilder arg2, Int32 arg3 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryAlbumTrackKeySISI>( this.Functions.GetLocalLibraryAlbumTrackKey42 )( this.ObjectAddress, arg0, arg1, arg2, arg3 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetLocalLibraryTrackCountForAlbumS( IntPtr thisptr, string arg0 );
		public Int32 GetLocalLibraryTrackCountForAlbum( string arg0 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryTrackCountForAlbumS>( this.Functions.GetLocalLibraryTrackCountForAlbum43 )( this.ObjectAddress, arg0 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetLocalLibraryArtistCount( IntPtr thisptr );
		public Int32 GetLocalLibraryArtistCount(  ) 
		{
			return this.GetFunction<NativeGetLocalLibraryArtistCount>( this.Functions.GetLocalLibraryArtistCount44 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetLocalLibraryArtistNameISI( IntPtr thisptr, Int32 arg0, StringBuilder arg1, Int32 arg2 );
		public bool GetLocalLibraryArtistName( Int32 arg0, StringBuilder arg1, Int32 arg2 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryArtistNameISI>( this.Functions.GetLocalLibraryArtistName45 )( this.ObjectAddress, arg0, arg1, arg2 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetLocalLibraryAlbumCountForArtistNameS( IntPtr thisptr, string arg0 );
		public Int32 GetLocalLibraryAlbumCountForArtistName( string arg0 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryAlbumCountForArtistNameS>( this.Functions.GetLocalLibraryAlbumCountForArtistName46 )( this.ObjectAddress, arg0 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetLocalLibraryArtistAlbumKeySISI( IntPtr thisptr, string arg0, Int32 arg1, StringBuilder arg2, Int32 arg3 );
		public bool GetLocalLibraryArtistAlbumKey( string arg0, Int32 arg1, StringBuilder arg2, Int32 arg3 ) 
		{
			return this.GetFunction<NativeGetLocalLibraryArtistAlbumKeySISI>( this.Functions.GetLocalLibraryArtistAlbumKey47 )( this.ObjectAddress, arg0, arg1, arg2, arg3 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeStartUsingSpotify( IntPtr thisptr );
		public void StartUsingSpotify(  ) 
		{
			this.GetFunction<NativeStartUsingSpotify>( this.Functions.StartUsingSpotify48 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeStopUsingSpotify( IntPtr thisptr );
		public void StopUsingSpotify(  ) 
		{
			this.GetFunction<NativeStopUsingSpotify>( this.Functions.StopUsingSpotify49 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate MediaController_Status NativeGetStatusSpotify( IntPtr thisptr );
		public MediaController_Status GetStatusSpotify(  ) 
		{
			return this.GetFunction<NativeGetStatusSpotify>( this.Functions.GetStatusSpotify50 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLoginSpotifySS( IntPtr thisptr, string arg0, string arg1 );
		public void LoginSpotify( string arg0, string arg1 ) 
		{
			this.GetFunction<NativeLoginSpotifySS>( this.Functions.LoginSpotify51 )( this.ObjectAddress, arg0, arg1 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeReloginSpotify( IntPtr thisptr );
		public void ReloginSpotify(  ) 
		{
			this.GetFunction<NativeReloginSpotify>( this.Functions.ReloginSpotify52 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate IntPtr NativeGetCurrentUserSpotify( IntPtr thisptr );
		public string GetCurrentUserSpotify(  ) 
		{
			return InteropHelp.DecodeANSIReturn( Marshal.PtrToStringAnsi( this.GetFunction<NativeGetCurrentUserSpotify>( this.Functions.GetCurrentUserSpotify53 )( this.ObjectAddress ) ) ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeForgetCurrentUserSpotify( IntPtr thisptr );
		public void ForgetCurrentUserSpotify(  ) 
		{
			this.GetFunction<NativeForgetCurrentUserSpotify>( this.Functions.ForgetCurrentUserSpotify54 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLogoutSpotify( IntPtr thisptr );
		public void LogoutSpotify(  ) 
		{
			this.GetFunction<NativeLogoutSpotify>( this.Functions.LogoutSpotify55 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeDumpStatusToConsole( IntPtr thisptr );
		public void DumpStatusToConsole(  ) 
		{
			this.GetFunction<NativeDumpStatusToConsole>( this.Functions.DumpStatusToConsole56 )( this.ObjectAddress ); 
		}
		
	};
}
