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

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class ISteamMusic001VTable
	{
		public IntPtr BIsEnabled0;
		public IntPtr BIsPlaying1;
		public IntPtr GetPlaybackStatus2;
		public IntPtr Play3;
		public IntPtr Pause4;
		public IntPtr PlayPrevious5;
		public IntPtr PlayNext6;
		public IntPtr SetVolume7;
		public IntPtr GetVolume8;
		private IntPtr DTorISteamMusic0019;
	};
	
	[InteropHelp.InterfaceVersion("STEAMMUSIC_INTERFACE_VERSION001")]
	public class ISteamMusic001 : InteropHelp.NativeWrapper<ISteamMusic001VTable>
	{
		[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 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBIsPlaying( IntPtr thisptr );
		public bool BIsPlaying(  ) 
		{
			return this.GetFunction<NativeBIsPlaying>( this.Functions.BIsPlaying1 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate AudioPlayback_Status NativeGetPlaybackStatus( IntPtr thisptr );
		public AudioPlayback_Status GetPlaybackStatus(  ) 
		{
			return this.GetFunction<NativeGetPlaybackStatus>( this.Functions.GetPlaybackStatus2 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePlay( IntPtr thisptr );
		public void Play(  ) 
		{
			this.GetFunction<NativePlay>( this.Functions.Play3 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePause( IntPtr thisptr );
		public void Pause(  ) 
		{
			this.GetFunction<NativePause>( this.Functions.Pause4 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePlayPrevious( IntPtr thisptr );
		public void PlayPrevious(  ) 
		{
			this.GetFunction<NativePlayPrevious>( this.Functions.PlayPrevious5 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativePlayNext( IntPtr thisptr );
		public void PlayNext(  ) 
		{
			this.GetFunction<NativePlayNext>( this.Functions.PlayNext6 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetVolumeF( IntPtr thisptr, float flVolume );
		public void SetVolume( float flVolume ) 
		{
			this.GetFunction<NativeSetVolumeF>( this.Functions.SetVolume7 )( this.ObjectAddress, flVolume ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate float NativeGetVolume( IntPtr thisptr );
		public float GetVolume(  ) 
		{
			return this.GetFunction<NativeGetVolume>( this.Functions.GetVolume8 )( this.ObjectAddress ); 
		}
		
	};
}
