mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-05-11 14:19:35 +03:00
lsteamclient: Use a templated wrapper for ISteamUtils GetAPICallResult.
This commit is contained in:
parent
334cce3426
commit
ac408239a9
@ -96,6 +96,14 @@ extern void steamclient_free_path_array( const char **path_array );
|
||||
extern unsigned int steamclient_unix_path_to_dos_path( bool api_result, const char *src, char *dst,
|
||||
uint32_t dst_bytes, int is_url );
|
||||
|
||||
#define LSTEAMCLIENT_UNIX_IMPL( iface, version, method, ... ) \
|
||||
NTSTATUS iface ## _ ## version ## _ ## method( void *args ) \
|
||||
{ \
|
||||
auto params = (struct iface ## _ ## version ## _ ## method ## _params *)args; \
|
||||
auto u_iface = (struct u_ ## iface ## _ ## version *)params->linux_side; \
|
||||
return iface ## _ ## method( u_iface, params, ## __VA_ARGS__ ); \
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif /* __cplusplus */
|
||||
|
@ -6,12 +6,9 @@
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(steamclient);
|
||||
|
||||
/* ISteamUtils_SteamUtils002 */
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils002_GetAPICallResult( void *args )
|
||||
template< typename Iface, typename Params >
|
||||
static NTSTATUS ISteamUtils_GetAPICallResult( Iface *iface, Params *params )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils002_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils002_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils002 *iface = (struct u_ISteamUtils_SteamUtils002 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
|
||||
@ -33,191 +30,18 @@ NTSTATUS ISteamUtils_SteamUtils002_GetAPICallResult( void *args )
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ISteamUtils_SteamUtils004 */
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils002, GetAPICallResult );
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils004_GetAPICallResult( void *args )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils004_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils004_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils004 *iface = (struct u_ISteamUtils_SteamUtils004 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils004, GetAPICallResult );
|
||||
|
||||
if (!(u_callback = alloc_callback_wtou( params->iCallbackExpected, params->pCallback, &u_callback_len )))
|
||||
{
|
||||
params->_ret = FALSE;
|
||||
return 0;
|
||||
}
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils005, GetAPICallResult );
|
||||
|
||||
params->_ret = iface->GetAPICallResult( params->hSteamAPICall, u_callback, u_callback_len,
|
||||
params->iCallbackExpected, params->pbFailed );
|
||||
if (params->_ret && u_callback != params->pCallback)
|
||||
{
|
||||
convert_callback_utow( params->iCallbackExpected, u_callback, u_callback_len,
|
||||
params->pCallback, params->cubCallback );
|
||||
free( u_callback );
|
||||
}
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils006, GetAPICallResult );
|
||||
|
||||
return 0;
|
||||
}
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils007, GetAPICallResult );
|
||||
|
||||
/* ISteamUtils_SteamUtils005 */
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils008, GetAPICallResult );
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils005_GetAPICallResult( void *args )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils005_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils005_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils005 *iface = (struct u_ISteamUtils_SteamUtils005 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils009, GetAPICallResult );
|
||||
|
||||
if (!(u_callback = alloc_callback_wtou( params->iCallbackExpected, params->pCallback, &u_callback_len )))
|
||||
{
|
||||
params->_ret = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
params->_ret = iface->GetAPICallResult( params->hSteamAPICall, u_callback, u_callback_len,
|
||||
params->iCallbackExpected, params->pbFailed );
|
||||
if (params->_ret && u_callback != params->pCallback)
|
||||
{
|
||||
convert_callback_utow( params->iCallbackExpected, u_callback, u_callback_len,
|
||||
params->pCallback, params->cubCallback );
|
||||
free( u_callback );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ISteamUtils_SteamUtils006 */
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils006_GetAPICallResult( void *args )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils006_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils006_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils005 *iface = (struct u_ISteamUtils_SteamUtils005 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
|
||||
if (!(u_callback = alloc_callback_wtou( params->iCallbackExpected, params->pCallback, &u_callback_len )))
|
||||
{
|
||||
params->_ret = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
params->_ret = iface->GetAPICallResult( params->hSteamAPICall, u_callback, u_callback_len,
|
||||
params->iCallbackExpected, params->pbFailed );
|
||||
if (params->_ret && u_callback != params->pCallback)
|
||||
{
|
||||
convert_callback_utow( params->iCallbackExpected, u_callback, u_callback_len,
|
||||
params->pCallback, params->cubCallback );
|
||||
free( u_callback );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ISteamUtils_SteamUtils007 */
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils007_GetAPICallResult( void *args )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils007_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils007_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils007 *iface = (struct u_ISteamUtils_SteamUtils007 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
|
||||
if (!(u_callback = alloc_callback_wtou( params->iCallbackExpected, params->pCallback, &u_callback_len )))
|
||||
{
|
||||
params->_ret = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
params->_ret = iface->GetAPICallResult( params->hSteamAPICall, u_callback, u_callback_len,
|
||||
params->iCallbackExpected, params->pbFailed );
|
||||
if (params->_ret && u_callback != params->pCallback)
|
||||
{
|
||||
convert_callback_utow( params->iCallbackExpected, u_callback, u_callback_len,
|
||||
params->pCallback, params->cubCallback );
|
||||
free( u_callback );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ISteamUtils_SteamUtils008 */
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils008_GetAPICallResult( void *args )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils008_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils008_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils008 *iface = (struct u_ISteamUtils_SteamUtils008 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
|
||||
if (!(u_callback = alloc_callback_wtou( params->iCallbackExpected, params->pCallback, &u_callback_len )))
|
||||
{
|
||||
params->_ret = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
params->_ret = iface->GetAPICallResult( params->hSteamAPICall, u_callback, u_callback_len,
|
||||
params->iCallbackExpected, params->pbFailed );
|
||||
if (params->_ret && u_callback != params->pCallback)
|
||||
{
|
||||
convert_callback_utow( params->iCallbackExpected, u_callback, u_callback_len,
|
||||
params->pCallback, params->cubCallback );
|
||||
free( u_callback );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ISteamUtils_SteamUtils009 */
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils009_GetAPICallResult( void *args )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils009_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils009_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils009 *iface = (struct u_ISteamUtils_SteamUtils009 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
|
||||
if (!(u_callback = alloc_callback_wtou( params->iCallbackExpected, params->pCallback, &u_callback_len )))
|
||||
{
|
||||
params->_ret = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
params->_ret = iface->GetAPICallResult( params->hSteamAPICall, u_callback, u_callback_len,
|
||||
params->iCallbackExpected, params->pbFailed );
|
||||
if (params->_ret && u_callback != params->pCallback)
|
||||
{
|
||||
convert_callback_utow( params->iCallbackExpected, u_callback, u_callback_len,
|
||||
params->pCallback, params->cubCallback );
|
||||
free( u_callback );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ISteamUtils_SteamUtils010 */
|
||||
|
||||
NTSTATUS ISteamUtils_SteamUtils010_GetAPICallResult( void *args )
|
||||
{
|
||||
struct ISteamUtils_SteamUtils010_GetAPICallResult_params *params = (struct ISteamUtils_SteamUtils010_GetAPICallResult_params *)args;
|
||||
struct u_ISteamUtils_SteamUtils010 *iface = (struct u_ISteamUtils_SteamUtils010 *)params->linux_side;
|
||||
int u_callback_len = params->cubCallback;
|
||||
void *u_callback;
|
||||
|
||||
if (!(u_callback = alloc_callback_wtou( params->iCallbackExpected, params->pCallback, &u_callback_len )))
|
||||
{
|
||||
params->_ret = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
params->_ret = iface->GetAPICallResult( params->hSteamAPICall, u_callback, u_callback_len,
|
||||
params->iCallbackExpected, params->pbFailed );
|
||||
if (params->_ret && u_callback != params->pCallback)
|
||||
{
|
||||
convert_callback_utow( params->iCallbackExpected, u_callback, u_callback_len,
|
||||
params->pCallback, params->cubCallback );
|
||||
free( u_callback );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
LSTEAMCLIENT_UNIX_IMPL( ISteamUtils, SteamUtils010, GetAPICallResult );
|
||||
|
Loading…
x
Reference in New Issue
Block a user