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

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class ISteamGameServer011VTable
	{
		public IntPtr InitGameServer0;
		public IntPtr SetProduct1;
		public IntPtr SetGameDescription2;
		public IntPtr SetModDir3;
		public IntPtr SetDedicatedServer4;
		public IntPtr LogOn5;
		public IntPtr LogOnAnonymous6;
		public IntPtr LogOff7;
		public IntPtr BLoggedOn8;
		public IntPtr BSecure9;
		public IntPtr GetSteamID10;
		public IntPtr WasRestartRequested11;
		public IntPtr SetMaxPlayerCount12;
		public IntPtr SetBotPlayerCount13;
		public IntPtr SetServerName14;
		public IntPtr SetMapName15;
		public IntPtr SetPasswordProtected16;
		public IntPtr SetSpectatorPort17;
		public IntPtr SetSpectatorServerName18;
		public IntPtr ClearAllKeyValues19;
		public IntPtr SetKeyValue20;
		public IntPtr SetGameTags21;
		public IntPtr SetGameData22;
		public IntPtr SetRegion23;
		public IntPtr SendUserConnectAndAuthenticate24;
		public IntPtr CreateUnauthenticatedUserConnection25;
		public IntPtr SendUserDisconnect26;
		public IntPtr BUpdateUserData27;
		public IntPtr GetAuthSessionTicket28;
		public IntPtr BeginAuthSession29;
		public IntPtr EndAuthSession30;
		public IntPtr CancelAuthTicket31;
		public IntPtr UserHasLicenseForApp32;
		public IntPtr RequestUserGroupStatus33;
		public IntPtr GetGameplayStats34;
		public IntPtr GetServerReputation35;
		public IntPtr GetPublicIP36;
		public IntPtr HandleIncomingPacket37;
		public IntPtr GetNextOutgoingPacket38;
		public IntPtr EnableHeartbeats39;
		public IntPtr SetHeartbeatInterval40;
		public IntPtr ForceHeartbeat41;
		public IntPtr AssociateWithClan42;
		public IntPtr ComputeNewPlayerCompatibility43;
		private IntPtr DTorISteamGameServer01144;
	};
	
	[InteropHelp.InterfaceVersion("SteamGameServer011")]
	public class ISteamGameServer011 : InteropHelp.NativeWrapper<ISteamGameServer011VTable>
	{
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeInitGameServerUUUUUS( IntPtr thisptr, UInt32 unGameIP, UInt16 unGamePort, UInt16 usQueryPort, UInt32 unServerFlags, UInt32 nAppID, string pchVersion );
		public bool InitGameServer( UInt32 unGameIP, UInt16 unGamePort, UInt16 usQueryPort, UInt32 unServerFlags, UInt32 nAppID, string pchVersion ) 
		{
			return this.GetFunction<NativeInitGameServerUUUUUS>( this.Functions.InitGameServer0 )( this.ObjectAddress, unGameIP, unGamePort, usQueryPort, unServerFlags, nAppID, pchVersion ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetProductS( IntPtr thisptr, string pchProductName );
		public void SetProduct( string pchProductName ) 
		{
			this.GetFunction<NativeSetProductS>( this.Functions.SetProduct1 )( this.ObjectAddress, pchProductName ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetGameDescriptionS( IntPtr thisptr, string pchGameDescription );
		public void SetGameDescription( string pchGameDescription ) 
		{
			this.GetFunction<NativeSetGameDescriptionS>( this.Functions.SetGameDescription2 )( this.ObjectAddress, pchGameDescription ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetModDirS( IntPtr thisptr, string pchModDir );
		public void SetModDir( string pchModDir ) 
		{
			this.GetFunction<NativeSetModDirS>( this.Functions.SetModDir3 )( this.ObjectAddress, pchModDir ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetDedicatedServerB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bDedicatedServer );
		public void SetDedicatedServer( bool bDedicatedServer ) 
		{
			this.GetFunction<NativeSetDedicatedServerB>( this.Functions.SetDedicatedServer4 )( this.ObjectAddress, bDedicatedServer ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLogOnSS( IntPtr thisptr, string pszAccountName, string pszPassword );
		public void LogOn( string pszAccountName, string pszPassword ) 
		{
			this.GetFunction<NativeLogOnSS>( this.Functions.LogOn5 )( this.ObjectAddress, pszAccountName, pszPassword ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLogOnAnonymous( IntPtr thisptr );
		public void LogOnAnonymous(  ) 
		{
			this.GetFunction<NativeLogOnAnonymous>( this.Functions.LogOnAnonymous6 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLogOff( IntPtr thisptr );
		public void LogOff(  ) 
		{
			this.GetFunction<NativeLogOff>( this.Functions.LogOff7 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBLoggedOn( IntPtr thisptr );
		public bool BLoggedOn(  ) 
		{
			return this.GetFunction<NativeBLoggedOn>( this.Functions.BLoggedOn8 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBSecure( IntPtr thisptr );
		public bool BSecure(  ) 
		{
			return this.GetFunction<NativeBSecure>( this.Functions.BSecure9 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeGetSteamID( IntPtr thisptr, ref UInt64 retarg );
		public CSteamID GetSteamID(  ) 
		{
			UInt64 ret = 0; this.GetFunction<NativeGetSteamID>( this.Functions.GetSteamID10 )( this.ObjectAddress, ref ret ); return new CSteamID(ret);
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeWasRestartRequested( IntPtr thisptr );
		public bool WasRestartRequested(  ) 
		{
			return this.GetFunction<NativeWasRestartRequested>( this.Functions.WasRestartRequested11 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetMaxPlayerCountI( IntPtr thisptr, Int32 cPlayersMax );
		public void SetMaxPlayerCount( Int32 cPlayersMax ) 
		{
			this.GetFunction<NativeSetMaxPlayerCountI>( this.Functions.SetMaxPlayerCount12 )( this.ObjectAddress, cPlayersMax ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetBotPlayerCountI( IntPtr thisptr, Int32 cBotPlayers );
		public void SetBotPlayerCount( Int32 cBotPlayers ) 
		{
			this.GetFunction<NativeSetBotPlayerCountI>( this.Functions.SetBotPlayerCount13 )( this.ObjectAddress, cBotPlayers ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetServerNameS( IntPtr thisptr, string pszServerName );
		public void SetServerName( string pszServerName ) 
		{
			this.GetFunction<NativeSetServerNameS>( this.Functions.SetServerName14 )( this.ObjectAddress, pszServerName ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetMapNameS( IntPtr thisptr, string pszMapName );
		public void SetMapName( string pszMapName ) 
		{
			this.GetFunction<NativeSetMapNameS>( this.Functions.SetMapName15 )( this.ObjectAddress, pszMapName ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetPasswordProtectedB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bPasswordProtected );
		public void SetPasswordProtected( bool bPasswordProtected ) 
		{
			this.GetFunction<NativeSetPasswordProtectedB>( this.Functions.SetPasswordProtected16 )( this.ObjectAddress, bPasswordProtected ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetSpectatorPortU( IntPtr thisptr, UInt16 unSpectatorPort );
		public void SetSpectatorPort( UInt16 unSpectatorPort ) 
		{
			this.GetFunction<NativeSetSpectatorPortU>( this.Functions.SetSpectatorPort17 )( this.ObjectAddress, unSpectatorPort ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetSpectatorServerNameS( IntPtr thisptr, string pszSpectatorServerName );
		public void SetSpectatorServerName( string pszSpectatorServerName ) 
		{
			this.GetFunction<NativeSetSpectatorServerNameS>( this.Functions.SetSpectatorServerName18 )( this.ObjectAddress, pszSpectatorServerName ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeClearAllKeyValues( IntPtr thisptr );
		public void ClearAllKeyValues(  ) 
		{
			this.GetFunction<NativeClearAllKeyValues>( this.Functions.ClearAllKeyValues19 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetKeyValueSS( IntPtr thisptr, string pKey, string pValue );
		public void SetKeyValue( string pKey, string pValue ) 
		{
			this.GetFunction<NativeSetKeyValueSS>( this.Functions.SetKeyValue20 )( this.ObjectAddress, pKey, pValue ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetGameTagsS( IntPtr thisptr, string pchGameTags );
		public void SetGameTags( string pchGameTags ) 
		{
			this.GetFunction<NativeSetGameTagsS>( this.Functions.SetGameTags21 )( this.ObjectAddress, pchGameTags ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetGameDataS( IntPtr thisptr, string pchGameData );
		public void SetGameData( string pchGameData ) 
		{
			this.GetFunction<NativeSetGameDataS>( this.Functions.SetGameData22 )( this.ObjectAddress, pchGameData ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetRegionS( IntPtr thisptr, string pchRegionName );
		public void SetRegion( string pchRegionName ) 
		{
			this.GetFunction<NativeSetRegionS>( this.Functions.SetRegion23 )( this.ObjectAddress, pchRegionName ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeSendUserConnectAndAuthenticateUBUC( IntPtr thisptr, UInt32 unIPClient, Byte[] pvAuthBlob, UInt32 cubAuthBlobSize, ref UInt64 pSteamIDUser );
		public Int32 SendUserConnectAndAuthenticate( UInt32 unIPClient, Byte[] pvAuthBlob, ref CSteamID pSteamIDUser ) 
		{
			UInt64 s0 = 0; var result = this.GetFunction<NativeSendUserConnectAndAuthenticateUBUC>( this.Functions.SendUserConnectAndAuthenticate24 )( this.ObjectAddress, unIPClient, pvAuthBlob, (UInt32) pvAuthBlob.Length, ref s0 ); pSteamIDUser = new CSteamID(s0); return result;
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeCreateUnauthenticatedUserConnection( IntPtr thisptr, ref UInt64 retarg );
		public CSteamID CreateUnauthenticatedUserConnection(  ) 
		{
			UInt64 ret = 0; this.GetFunction<NativeCreateUnauthenticatedUserConnection>( this.Functions.CreateUnauthenticatedUserConnection25 )( this.ObjectAddress, ref ret ); return new CSteamID(ret);
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSendUserDisconnectC( IntPtr thisptr, UInt64 steamIDUser );
		public void SendUserDisconnect( CSteamID steamIDUser ) 
		{
			this.GetFunction<NativeSendUserDisconnectC>( this.Functions.SendUserDisconnect26 )( this.ObjectAddress, steamIDUser.ConvertToUint64() ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBUpdateUserDataCSU( IntPtr thisptr, UInt64 steamIDUser, string pchPlayerName, UInt32 uScore );
		public bool BUpdateUserData( CSteamID steamIDUser, string pchPlayerName, UInt32 uScore ) 
		{
			return this.GetFunction<NativeBUpdateUserDataCSU>( this.Functions.BUpdateUserData27 )( this.ObjectAddress, steamIDUser.ConvertToUint64(), pchPlayerName, uScore ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetAuthSessionTicketBIU( IntPtr thisptr, Byte[] pTicket, Int32 cbMaxTicket, ref UInt32 pcbTicket );
		public UInt32 GetAuthSessionTicket( Byte[] pTicket, ref UInt32 pcbTicket ) 
		{
			return this.GetFunction<NativeGetAuthSessionTicketBIU>( this.Functions.GetAuthSessionTicket28 )( this.ObjectAddress, pTicket, (Int32) pTicket.Length, ref pcbTicket ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EBeginAuthSessionResult NativeBeginAuthSessionBIC( IntPtr thisptr, Byte[] pAuthTicket, Int32 cbAuthTicket, UInt64 steamID );
		public EBeginAuthSessionResult BeginAuthSession( Byte[] pAuthTicket, CSteamID steamID ) 
		{
			return this.GetFunction<NativeBeginAuthSessionBIC>( this.Functions.BeginAuthSession29 )( this.ObjectAddress, pAuthTicket, (Int32) pAuthTicket.Length, steamID.ConvertToUint64() ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeEndAuthSessionC( IntPtr thisptr, UInt64 steamID );
		public void EndAuthSession( CSteamID steamID ) 
		{
			this.GetFunction<NativeEndAuthSessionC>( this.Functions.EndAuthSession30 )( this.ObjectAddress, steamID.ConvertToUint64() ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeCancelAuthTicketU( IntPtr thisptr, UInt32 hAuthTicket );
		public void CancelAuthTicket( UInt32 hAuthTicket ) 
		{
			this.GetFunction<NativeCancelAuthTicketU>( this.Functions.CancelAuthTicket31 )( this.ObjectAddress, hAuthTicket ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EUserHasLicenseForAppResult NativeUserHasLicenseForAppCU( IntPtr thisptr, UInt64 steamID, UInt32 appID );
		public EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, UInt32 appID ) 
		{
			return this.GetFunction<NativeUserHasLicenseForAppCU>( this.Functions.UserHasLicenseForApp32 )( this.ObjectAddress, steamID.ConvertToUint64(), appID ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeRequestUserGroupStatusCC( IntPtr thisptr, UInt64 steamIDUser, UInt64 steamIDGroup );
		public bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup ) 
		{
			return this.GetFunction<NativeRequestUserGroupStatusCC>( this.Functions.RequestUserGroupStatus33 )( this.ObjectAddress, steamIDUser.ConvertToUint64(), steamIDGroup.ConvertToUint64() ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeGetGameplayStats( IntPtr thisptr );
		public void GetGameplayStats(  ) 
		{
			this.GetFunction<NativeGetGameplayStats>( this.Functions.GetGameplayStats34 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeGetServerReputation( IntPtr thisptr );
		public UInt64 GetServerReputation(  ) 
		{
			return this.GetFunction<NativeGetServerReputation>( this.Functions.GetServerReputation35 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetPublicIP( IntPtr thisptr );
		public UInt32 GetPublicIP(  ) 
		{
			return this.GetFunction<NativeGetPublicIP>( this.Functions.GetPublicIP36 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeHandleIncomingPacketBIUU( IntPtr thisptr, Byte[] pData, Int32 cbData, UInt32 srcIP, UInt16 srcPort );
		public bool HandleIncomingPacket( Byte[] pData, UInt32 srcIP, UInt16 srcPort ) 
		{
			return this.GetFunction<NativeHandleIncomingPacketBIUU>( this.Functions.HandleIncomingPacket37 )( this.ObjectAddress, pData, (Int32) pData.Length, srcIP, srcPort ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetNextOutgoingPacketBIUU( IntPtr thisptr, Byte[] pOut, Int32 cbMaxOut, ref UInt32 pNetAdr, ref UInt16 pPort );
		public Int32 GetNextOutgoingPacket( Byte[] pOut, ref UInt32 pNetAdr, ref UInt16 pPort ) 
		{
			return this.GetFunction<NativeGetNextOutgoingPacketBIUU>( this.Functions.GetNextOutgoingPacket38 )( this.ObjectAddress, pOut, (Int32) pOut.Length, ref pNetAdr, ref pPort ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeEnableHeartbeatsB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bActive );
		public void EnableHeartbeats( bool bActive ) 
		{
			this.GetFunction<NativeEnableHeartbeatsB>( this.Functions.EnableHeartbeats39 )( this.ObjectAddress, bActive ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetHeartbeatIntervalI( IntPtr thisptr, Int32 iHeartbeatInterval );
		public void SetHeartbeatInterval( Int32 iHeartbeatInterval ) 
		{
			this.GetFunction<NativeSetHeartbeatIntervalI>( this.Functions.SetHeartbeatInterval40 )( this.ObjectAddress, iHeartbeatInterval ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeForceHeartbeat( IntPtr thisptr );
		public void ForceHeartbeat(  ) 
		{
			this.GetFunction<NativeForceHeartbeat>( this.Functions.ForceHeartbeat41 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeAssociateWithClanC( IntPtr thisptr, UInt64 clanID );
		public UInt64 AssociateWithClan( CSteamID clanID ) 
		{
			return this.GetFunction<NativeAssociateWithClanC>( this.Functions.AssociateWithClan42 )( this.ObjectAddress, clanID.ConvertToUint64() ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeComputeNewPlayerCompatibilityC( IntPtr thisptr, UInt64 steamID );
		public UInt64 ComputeNewPlayerCompatibility( CSteamID steamID ) 
		{
			return this.GetFunction<NativeComputeNewPlayerCompatibilityC>( this.Functions.ComputeNewPlayerCompatibility43 )( this.ObjectAddress, steamID.ConvertToUint64() ); 
		}
		
	};
}
