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

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class IClientAppsVTable
	{
		public IntPtr GetAppData0;
		public IntPtr SetLocalAppConfig1;
		public IntPtr GetInternalAppIDFromGameID2;
		public IntPtr GetAllOwnedMultiplayerApps3;
		public IntPtr GetAppDataSection4;
		public IntPtr RequestAppInfoUpdate5;
		public IntPtr NotifyAppEventTriggered6;
		public IntPtr GetDLCCount7;
		public IntPtr BGetDLCDataByIndex8;
		private IntPtr DTorIClientApps9;
	};
	
	[InteropHelp.InterfaceVersion("CLIENTAPPS_INTERFACE_VERSION001")]
	public class IClientApps : InteropHelp.NativeWrapper<IClientAppsVTable>
	{
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetAppDataUSSI( IntPtr thisptr, UInt32 unAppID, string pchKey, StringBuilder pchValue, Int32 cchValueMax );
		public Int32 GetAppData( UInt32 unAppID, string pchKey, StringBuilder pchValue ) 
		{
			return this.GetFunction<NativeGetAppDataUSSI>( this.Functions.GetAppData0 )( this.ObjectAddress, unAppID, pchKey, pchValue, (Int32) pchValue.Capacity ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeSetLocalAppConfigUBI( IntPtr thisptr, UInt32 unAppID, Byte[] pchBuffer, Int32 cbBuffer );
		public bool SetLocalAppConfig( UInt32 unAppID, Byte[] pchBuffer ) 
		{
			return this.GetFunction<NativeSetLocalAppConfigUBI>( this.Functions.SetLocalAppConfig1 )( this.ObjectAddress, unAppID, pchBuffer, (Int32) pchBuffer.Length ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetInternalAppIDFromGameIDC( IntPtr thisptr, UInt64 nGameID );
		public UInt32 GetInternalAppIDFromGameID( CGameID nGameID ) 
		{
			return this.GetFunction<NativeGetInternalAppIDFromGameIDC>( this.Functions.GetInternalAppIDFromGameID2 )( this.ObjectAddress, nGameID.ConvertToUint64() ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetAllOwnedMultiplayerAppsUI( IntPtr thisptr, ref UInt32 punAppIDs, Int32 cAppIDsMax );
		public Int32 GetAllOwnedMultiplayerApps( ref UInt32 punAppIDs, Int32 cAppIDsMax ) 
		{
			return this.GetFunction<NativeGetAllOwnedMultiplayerAppsUI>( this.Functions.GetAllOwnedMultiplayerApps3 )( this.ObjectAddress, ref punAppIDs, cAppIDsMax ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetAppDataSectionUEBIB( IntPtr thisptr, UInt32 unAppID, EAppInfoSection eSection, Byte[] pchBuffer, Int32 cbBufferMax, [MarshalAs(UnmanagedType.I1)] bool bSharedKVSymbols );
		public Int32 GetAppDataSection( UInt32 unAppID, EAppInfoSection eSection, Byte[] pchBuffer, bool bSharedKVSymbols ) 
		{
			return this.GetFunction<NativeGetAppDataSectionUEBIB>( this.Functions.GetAppDataSection4 )( this.ObjectAddress, unAppID, eSection, pchBuffer, (Int32) pchBuffer.Length, bSharedKVSymbols ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeRequestAppInfoUpdateUI( IntPtr thisptr, ref UInt32 pAppIDs, Int32 nNumAppIDs );
		public bool RequestAppInfoUpdate( ref UInt32 pAppIDs, Int32 nNumAppIDs ) 
		{
			return this.GetFunction<NativeRequestAppInfoUpdateUI>( this.Functions.RequestAppInfoUpdate5 )( this.ObjectAddress, ref pAppIDs, nNumAppIDs ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeNotifyAppEventTriggeredUE( IntPtr thisptr, UInt32 unAppID, EAppEvent eAppEvent );
		public void NotifyAppEventTriggered( UInt32 unAppID, EAppEvent eAppEvent ) 
		{
			this.GetFunction<NativeNotifyAppEventTriggeredUE>( this.Functions.NotifyAppEventTriggered6 )( this.ObjectAddress, unAppID, eAppEvent ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetDLCCountU( IntPtr thisptr, UInt32 unAppID );
		public Int32 GetDLCCount( UInt32 unAppID ) 
		{
			return this.GetFunction<NativeGetDLCCountU>( this.Functions.GetDLCCount7 )( this.ObjectAddress, unAppID ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBGetDLCDataByIndexUIUBSI( IntPtr thisptr, UInt32 unAppID, Int32 iDLC, ref UInt32 pDlcAppID, ref bool pbAvailable, StringBuilder pchName, Int32 cchNameBufferSize );
		public bool BGetDLCDataByIndex( UInt32 unAppID, Int32 iDLC, ref UInt32 pDlcAppID, ref bool pbAvailable, StringBuilder pchName ) 
		{
			return this.GetFunction<NativeBGetDLCDataByIndexUIUBSI>( this.Functions.BGetDLCDataByIndex8 )( this.ObjectAddress, unAppID, iDLC, ref pDlcAppID, ref pbAvailable, pchName, (Int32) pchName.Capacity ); 
		}
		
	};
}
