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

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class IClientGameStatsVTable
	{
		public IntPtr GetNewSession0;
		public IntPtr EndSession1;
		public IntPtr AddSessionAttributeInt2;
		public IntPtr AddSessionAttributeString3;
		public IntPtr AddSessionAttributeFloat4;
		public IntPtr AddNewRow5;
		public IntPtr CommitRow6;
		public IntPtr CommitOutstandingRows7;
		public IntPtr AddRowAttributeInt8;
		public IntPtr AddRowAtributeString9;
		public IntPtr AddRowAttributeFloat10;
		public IntPtr AddSessionAttributeInt6411;
		public IntPtr AddRowAttributeInt6412;
		public IntPtr ReportString13;
		public IntPtr _ReportString14;
		public IntPtr ReportStringAccumulated15;
		public IntPtr _ReportStringAccumulated16;
		public IntPtr ReportBugScreenshot17;
		private IntPtr DTorIClientGameStats18;
	};
	
	[InteropHelp.InterfaceVersion("CLIENTGAMESTATS_INTERFACE_VERSION001")]
	public class IClientGameStats : InteropHelp.NativeWrapper<IClientGameStatsVTable>
	{
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeGetNewSessionSUUU( IntPtr thisptr, SByte nAccountType, UInt64 ullAccountID, UInt32 nAppID, UInt32 rtTimeStarted );
		public UInt64 GetNewSession( SByte nAccountType, UInt64 ullAccountID, UInt32 nAppID, UInt32 rtTimeStarted ) 
		{
			return this.GetFunction<NativeGetNewSessionSUUU>( this.Functions.GetNewSession0 )( this.ObjectAddress, nAccountType, ullAccountID, nAppID, rtTimeStarted ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeEndSessionUUI( IntPtr thisptr, UInt64 ulSessionID, UInt32 rtTimeEnded, Int16 nReasonCode );
		public UInt64 EndSession( UInt64 ulSessionID, UInt32 rtTimeEnded, Int16 nReasonCode ) 
		{
			return this.GetFunction<NativeEndSessionUUI>( this.Functions.EndSession1 )( this.ObjectAddress, ulSessionID, rtTimeEnded, nReasonCode ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddSessionAttributeIntUSI( IntPtr thisptr, UInt64 ulSessionID, string pstrName, Int32 nData );
		public EResult AddSessionAttributeInt( UInt64 ulSessionID, string pstrName, Int32 nData ) 
		{
			return this.GetFunction<NativeAddSessionAttributeIntUSI>( this.Functions.AddSessionAttributeInt2 )( this.ObjectAddress, ulSessionID, pstrName, nData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddSessionAttributeStringUSS( IntPtr thisptr, UInt64 ulSessionID, string pstrName, string pstrData );
		public EResult AddSessionAttributeString( UInt64 ulSessionID, string pstrName, string pstrData ) 
		{
			return this.GetFunction<NativeAddSessionAttributeStringUSS>( this.Functions.AddSessionAttributeString3 )( this.ObjectAddress, ulSessionID, pstrName, pstrData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddSessionAttributeFloatUSF( IntPtr thisptr, UInt64 ulSessionID, string pstrName, float fData );
		public EResult AddSessionAttributeFloat( UInt64 ulSessionID, string pstrName, float fData ) 
		{
			return this.GetFunction<NativeAddSessionAttributeFloatUSF>( this.Functions.AddSessionAttributeFloat4 )( this.ObjectAddress, ulSessionID, pstrName, fData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddNewRowUUS( IntPtr thisptr, ref UInt64 pulRowID, UInt64 ulSessionID, string pstrTableName );
		public EResult AddNewRow( ref UInt64 pulRowID, UInt64 ulSessionID, string pstrTableName ) 
		{
			return this.GetFunction<NativeAddNewRowUUS>( this.Functions.AddNewRow5 )( this.ObjectAddress, ref pulRowID, ulSessionID, pstrTableName ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeCommitRowU( IntPtr thisptr, UInt64 ulRowID );
		public EResult CommitRow( UInt64 ulRowID ) 
		{
			return this.GetFunction<NativeCommitRowU>( this.Functions.CommitRow6 )( this.ObjectAddress, ulRowID ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeCommitOutstandingRowsU( IntPtr thisptr, UInt64 ulSessionID );
		public EResult CommitOutstandingRows( UInt64 ulSessionID ) 
		{
			return this.GetFunction<NativeCommitOutstandingRowsU>( this.Functions.CommitOutstandingRows7 )( this.ObjectAddress, ulSessionID ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddRowAttributeIntUSI( IntPtr thisptr, UInt64 ulRowID, string pstrName, Int32 iData );
		public EResult AddRowAttributeInt( UInt64 ulRowID, string pstrName, Int32 iData ) 
		{
			return this.GetFunction<NativeAddRowAttributeIntUSI>( this.Functions.AddRowAttributeInt8 )( this.ObjectAddress, ulRowID, pstrName, iData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddRowAtributeStringUSS( IntPtr thisptr, UInt64 ulRowID, string pstrName, string pstrData );
		public EResult AddRowAtributeString( UInt64 ulRowID, string pstrName, string pstrData ) 
		{
			return this.GetFunction<NativeAddRowAtributeStringUSS>( this.Functions.AddRowAtributeString9 )( this.ObjectAddress, ulRowID, pstrName, pstrData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddRowAttributeFloatUSF( IntPtr thisptr, UInt64 ulRowID, string pstrName, float fData );
		public EResult AddRowAttributeFloat( UInt64 ulRowID, string pstrName, float fData ) 
		{
			return this.GetFunction<NativeAddRowAttributeFloatUSF>( this.Functions.AddRowAttributeFloat10 )( this.ObjectAddress, ulRowID, pstrName, fData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddSessionAttributeInt64USI( IntPtr thisptr, UInt64 ulSessionID, string pstrName, Int64 llData );
		public EResult AddSessionAttributeInt64( UInt64 ulSessionID, string pstrName, Int64 llData ) 
		{
			return this.GetFunction<NativeAddSessionAttributeInt64USI>( this.Functions.AddSessionAttributeInt6411 )( this.ObjectAddress, ulSessionID, pstrName, llData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeAddRowAttributeInt64USI( IntPtr thisptr, UInt64 ulRowID, string pstrName, Int64 llData );
		public EResult AddRowAttributeInt64( UInt64 ulRowID, string pstrName, Int64 llData ) 
		{
			return this.GetFunction<NativeAddRowAttributeInt64USI>( this.Functions.AddRowAttributeInt6412 )( this.ObjectAddress, ulRowID, pstrName, llData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeReportStringUIS( IntPtr thisptr, UInt64 ulSessionID, Int32 iSeverity, string cszFormat );
		public EResult ReportString( UInt64 ulSessionID, Int32 iSeverity, string cszFormat ) 
		{
			return this.GetFunction<NativeReportStringUIS>( this.Functions.ReportString13 )( this.ObjectAddress, ulSessionID, iSeverity, cszFormat ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult Native_ReportStringUISIB( IntPtr thisptr, UInt64 ulSessionID, Int32 arg1, string arg2, Int32 arg3, Byte[] arg4 );
		public EResult _ReportString( UInt64 ulSessionID, Int32 arg1, string arg2, Int32 arg3, Byte[] arg4 ) 
		{
			return this.GetFunction<Native_ReportStringUISIB>( this.Functions._ReportString14 )( this.ObjectAddress, ulSessionID, arg1, arg2, arg3, arg4 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeReportStringAccumulatedUIS( IntPtr thisptr, UInt64 ulSessionID, Int32 iSeverity, string cszFormat );
		public EResult ReportStringAccumulated( UInt64 ulSessionID, Int32 iSeverity, string cszFormat ) 
		{
			return this.GetFunction<NativeReportStringAccumulatedUIS>( this.Functions.ReportStringAccumulated15 )( this.ObjectAddress, ulSessionID, iSeverity, cszFormat ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult Native_ReportStringAccumulatedUISIB( IntPtr thisptr, UInt64 ulSessionID, Int32 arg1, string arg2, Int32 arg3, Byte[] arg4 );
		public EResult _ReportStringAccumulated( UInt64 ulSessionID, Int32 arg1, string arg2, Int32 arg3, Byte[] arg4 ) 
		{
			return this.GetFunction<Native_ReportStringAccumulatedUISIB>( this.Functions._ReportStringAccumulated16 )( this.ObjectAddress, ulSessionID, arg1, arg2, arg3, arg4 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EResult NativeReportBugScreenshotUSIB( IntPtr thisptr, UInt64 ulSessionID, string szBugText, Int32 cubScreenshot, Byte[] pubScreenshot );
		public EResult ReportBugScreenshot( UInt64 ulSessionID, string szBugText, Int32 cubScreenshot, Byte[] pubScreenshot ) 
		{
			return this.GetFunction<NativeReportBugScreenshotUSIB>( this.Functions.ReportBugScreenshot17 )( this.ObjectAddress, ulSessionID, szBugText, cubScreenshot, pubScreenshot ); 
		}
		
	};
}
