lsteamclient: Use a templated wrapper for ISteamUtils GetAPICallResult.

This commit is contained in:
Billy Laws 2025-01-10 20:39:20 +00:00 committed by Arkadiusz Hiler
parent 334cce3426
commit ac408239a9
2 changed files with 18 additions and 186 deletions

View File

@ -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 */

View File

@ -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 );