mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-05-23 20:08:06 +03:00
vrclient: Use templates for IVRRenderModels unix side thunks.
This commit is contained in:
parent
b38b8e062f
commit
ad86a3029e
@ -4,159 +4,77 @@
|
||||
#pragma makedep unix
|
||||
#endif
|
||||
|
||||
/* LoadRenderModel(_Async) / FreeRenderModel */
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_002_LoadRenderModel( void *args )
|
||||
template< typename Iface, typename Params >
|
||||
static NTSTATUS IVRRenderModels_LoadRenderModel( Iface *iface, Params *params, bool wow64 )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_002_LoadRenderModel_params *params = (struct IVRRenderModels_IVRRenderModels_002_LoadRenderModel_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_002 *iface = (struct u_IVRRenderModels_IVRRenderModels_002 *)params->u_iface;
|
||||
struct render_model *model = params->ppRenderModel ? CONTAINING_RECORD( *params->ppRenderModel, struct render_model, w_0912 ) : NULL;
|
||||
params->_ret = iface->LoadRenderModel( params->pchRenderModelName, params->ppRenderModel ? &model->u_0912 : nullptr );
|
||||
if (params->_ret == 0 && model) model->w_0912 = *model->u_0912;
|
||||
static std::remove_reference_t< decltype(**params->ppRenderModel) > tag;
|
||||
struct render_model *model = params->ppRenderModel ? render_model::from_w( *params->ppRenderModel ) : NULL;
|
||||
params->_ret = iface->LoadRenderModel( params->pchRenderModelName, params->ppRenderModel ? &model->u_model( tag ) : nullptr );
|
||||
if (params->_ret == 0 && model) model->w_model( tag ) = *model->u_model( tag );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_002_FreeRenderModel( void *args )
|
||||
template< typename Iface, typename Params >
|
||||
static NTSTATUS IVRRenderModels_FreeRenderModel( Iface *iface, Params *params, bool wow64 )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_002_FreeRenderModel_params *params = (struct IVRRenderModels_IVRRenderModels_002_FreeRenderModel_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_002 *iface = (struct u_IVRRenderModels_IVRRenderModels_002 *)params->u_iface;
|
||||
struct render_model *model = CONTAINING_RECORD( params->pRenderModel, struct render_model, w_0912 );
|
||||
iface->FreeRenderModel( model->u_0912 );
|
||||
static std::remove_reference_t< decltype(*params->pRenderModel) > tag;
|
||||
struct render_model *model = params->pRenderModel ? render_model::from_w( params->pRenderModel ) : NULL;
|
||||
iface->FreeRenderModel( model->u_model( tag ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_004_LoadRenderModel_Async( void *args )
|
||||
template< typename Iface, typename Params >
|
||||
static NTSTATUS IVRRenderModels_LoadRenderModel_Async( Iface *iface, Params *params, bool wow64 )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_004_LoadRenderModel_Async_params *params = (struct IVRRenderModels_IVRRenderModels_004_LoadRenderModel_Async_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_004 *iface = (struct u_IVRRenderModels_IVRRenderModels_004 *)params->u_iface;
|
||||
struct render_model *model = params->ppRenderModel ? CONTAINING_RECORD( *params->ppRenderModel, struct render_model, w_0912 ) : NULL;
|
||||
params->_ret = iface->LoadRenderModel_Async( params->pchRenderModelName, params->ppRenderModel ? &model->u_0912 : nullptr );
|
||||
if (params->_ret == 0 && model) model->w_0912 = *model->u_0912;
|
||||
static std::remove_reference_t< decltype(**params->ppRenderModel) > tag;
|
||||
struct render_model *model = params->ppRenderModel ? render_model::from_w( *params->ppRenderModel ) : NULL;
|
||||
params->_ret = iface->LoadRenderModel_Async( params->pchRenderModelName, params->ppRenderModel ? &model->u_model( tag ) : nullptr );
|
||||
if (params->_ret == 0 && model) model->w_model( tag ) = *model->u_model( tag );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_004_FreeRenderModel( void *args )
|
||||
template< typename Iface, typename Params >
|
||||
static NTSTATUS IVRRenderModels_LoadTexture( Iface *iface, Params *params, bool wow64 )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_004_FreeRenderModel_params *params = (struct IVRRenderModels_IVRRenderModels_004_FreeRenderModel_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_004 *iface = (struct u_IVRRenderModels_IVRRenderModels_004 *)params->u_iface;
|
||||
struct render_model *model = CONTAINING_RECORD( params->pRenderModel, struct render_model, w_0912 );
|
||||
iface->FreeRenderModel( model->u_0912 );
|
||||
static std::remove_reference_t< decltype(**params->ppTexture) > tag;
|
||||
struct render_model_texture_map *map = params->ppTexture ? render_model_texture_map::from_w( *params->ppTexture ) : NULL;
|
||||
params->_ret = iface->LoadTexture( params->textureId, params->ppTexture ? &map->u_map( tag ) : nullptr );
|
||||
if (params->_ret == 0 && map) map->w_map( tag ) = *map->u_map( tag );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_005_LoadRenderModel_Async( void *args )
|
||||
template< typename Iface, typename Params >
|
||||
static NTSTATUS IVRRenderModels_FreeTexture( Iface *iface, Params *params, bool wow64 )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_005_LoadRenderModel_Async_params *params = (struct IVRRenderModels_IVRRenderModels_005_LoadRenderModel_Async_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_005 *iface = (struct u_IVRRenderModels_IVRRenderModels_005 *)params->u_iface;
|
||||
struct render_model *model = params->ppRenderModel ? CONTAINING_RECORD( *params->ppRenderModel, struct render_model, w_0912 ) : NULL;
|
||||
params->_ret = iface->LoadRenderModel_Async( params->pchRenderModelName, params->ppRenderModel ? &model->u_0912 : nullptr );
|
||||
if (params->_ret == 0 && model) model->w_0912 = *model->u_0912;
|
||||
static std::remove_reference_t< decltype(*params->pTexture) > tag;
|
||||
struct render_model_texture_map *map = params->pTexture ? render_model_texture_map::from_w( params->pTexture ) : NULL;
|
||||
iface->FreeTexture( map->u_map( tag ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_005_FreeRenderModel( void *args )
|
||||
template< typename Iface, typename Params >
|
||||
static NTSTATUS IVRRenderModels_LoadTexture_Async( Iface *iface, Params *params, bool wow64 )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_005_FreeRenderModel_params *params = (struct IVRRenderModels_IVRRenderModels_005_FreeRenderModel_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_005 *iface = (struct u_IVRRenderModels_IVRRenderModels_005 *)params->u_iface;
|
||||
struct render_model *model = CONTAINING_RECORD( params->pRenderModel, struct render_model, w_0912 );
|
||||
iface->FreeRenderModel( model->u_0912 );
|
||||
static std::remove_reference_t< decltype(**params->ppTexture) > tag;
|
||||
struct render_model_texture_map *map = params->ppTexture ? render_model_texture_map::from_w( *params->ppTexture ) : NULL;
|
||||
params->_ret = iface->LoadTexture_Async( params->textureId, params->ppTexture ? &map->u_map( tag ) : nullptr );
|
||||
if (params->_ret == 0 && map) map->w_map( tag ) = *map->u_map( tag );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_006_LoadRenderModel_Async( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_006_LoadRenderModel_Async_params *params = (struct IVRRenderModels_IVRRenderModels_006_LoadRenderModel_Async_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_006 *iface = (struct u_IVRRenderModels_IVRRenderModels_006 *)params->u_iface;
|
||||
struct render_model *model = params->ppRenderModel ? CONTAINING_RECORD( *params->ppRenderModel, struct render_model, w_0912 ) : NULL;
|
||||
params->_ret = iface->LoadRenderModel_Async( params->pchRenderModelName, params->ppRenderModel ? &model->u_0912 : nullptr );
|
||||
if (params->_ret == 0 && model) model->w_0912 = *model->u_0912;
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_006_FreeRenderModel( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_006_FreeRenderModel_params *params = (struct IVRRenderModels_IVRRenderModels_006_FreeRenderModel_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_006 *iface = (struct u_IVRRenderModels_IVRRenderModels_006 *)params->u_iface;
|
||||
struct render_model *model = CONTAINING_RECORD( params->pRenderModel, struct render_model, w_0912 );
|
||||
iface->FreeRenderModel( model->u_0912 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* LoadTexture(_Async) / FreeTexture */
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_002_LoadTexture( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_002_LoadTexture_params *params = (struct IVRRenderModels_IVRRenderModels_002_LoadTexture_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_002 *iface = (struct u_IVRRenderModels_IVRRenderModels_002 *)params->u_iface;
|
||||
struct render_model_texture_map *map = params->ppTexture ? CONTAINING_RECORD( *params->ppTexture, struct render_model_texture_map, w_090 ) : NULL;
|
||||
params->_ret = iface->LoadTexture( params->textureId, params->ppTexture ? &map->u_090 : nullptr );
|
||||
if (params->_ret == 0 && map) map->w_090 = *map->u_090;
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_002_FreeTexture( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_002_FreeTexture_params *params = (struct IVRRenderModels_IVRRenderModels_002_FreeTexture_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_002 *iface = (struct u_IVRRenderModels_IVRRenderModels_002 *)params->u_iface;
|
||||
struct render_model_texture_map *map = CONTAINING_RECORD( params->pTexture, struct render_model_texture_map, w_090 );
|
||||
iface->FreeTexture( map->u_090 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_004_LoadTexture_Async( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_004_LoadTexture_Async_params *params = (struct IVRRenderModels_IVRRenderModels_004_LoadTexture_Async_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_004 *iface = (struct u_IVRRenderModels_IVRRenderModels_004 *)params->u_iface;
|
||||
struct render_model_texture_map *map = params->ppTexture ? CONTAINING_RECORD( *params->ppTexture, struct render_model_texture_map, w_090 ) : NULL;
|
||||
params->_ret = iface->LoadTexture_Async( params->textureId, params->ppTexture ? &map->u_090 : nullptr );
|
||||
if (params->_ret == 0 && map) map->w_090 = *map->u_090;
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_004_FreeTexture( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_004_FreeTexture_params *params = (struct IVRRenderModels_IVRRenderModels_004_FreeTexture_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_004 *iface = (struct u_IVRRenderModels_IVRRenderModels_004 *)params->u_iface;
|
||||
struct render_model_texture_map *map = CONTAINING_RECORD( params->pTexture, struct render_model_texture_map, w_090 );
|
||||
iface->FreeTexture( map->u_090 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_005_LoadTexture_Async( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_005_LoadTexture_Async_params *params = (struct IVRRenderModels_IVRRenderModels_005_LoadTexture_Async_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_005 *iface = (struct u_IVRRenderModels_IVRRenderModels_005 *)params->u_iface;
|
||||
struct render_model_texture_map *map = params->ppTexture ? CONTAINING_RECORD( *params->ppTexture, struct render_model_texture_map, w_090 ) : NULL;
|
||||
params->_ret = iface->LoadTexture_Async( params->textureId, params->ppTexture ? &map->u_090 : nullptr );
|
||||
if (params->_ret == 0 && map) map->w_090 = *map->u_090;
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_005_FreeTexture( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_005_FreeTexture_params *params = (struct IVRRenderModels_IVRRenderModels_005_FreeTexture_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_005 *iface = (struct u_IVRRenderModels_IVRRenderModels_005 *)params->u_iface;
|
||||
struct render_model_texture_map *map = CONTAINING_RECORD( params->pTexture, struct render_model_texture_map, w_090 );
|
||||
iface->FreeTexture( map->u_090 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_006_LoadTexture_Async( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_006_LoadTexture_Async_params *params = (struct IVRRenderModels_IVRRenderModels_006_LoadTexture_Async_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_006 *iface = (struct u_IVRRenderModels_IVRRenderModels_006 *)params->u_iface;
|
||||
struct render_model_texture_map *map = params->ppTexture ? CONTAINING_RECORD( *params->ppTexture, struct render_model_texture_map, w_1237 ) : NULL;
|
||||
params->_ret = iface->LoadTexture_Async( params->textureId, params->ppTexture ? &map->u_1237 : nullptr );
|
||||
if (params->_ret == 0 && map) map->w_1237 = *map->u_1237;
|
||||
return 0;
|
||||
}
|
||||
|
||||
NTSTATUS IVRRenderModels_IVRRenderModels_006_FreeTexture( void *args )
|
||||
{
|
||||
struct IVRRenderModels_IVRRenderModels_006_FreeTexture_params *params = (struct IVRRenderModels_IVRRenderModels_006_FreeTexture_params *)args;
|
||||
struct u_IVRRenderModels_IVRRenderModels_006 *iface = (struct u_IVRRenderModels_IVRRenderModels_006 *)params->u_iface;
|
||||
struct render_model_texture_map *map = CONTAINING_RECORD( params->pTexture, struct render_model_texture_map, w_1237 );
|
||||
iface->FreeTexture( map->u_1237 );
|
||||
return 0;
|
||||
}
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 002, FreeRenderModel );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 002, FreeTexture );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 002, LoadRenderModel );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 002, LoadTexture );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 004, FreeRenderModel );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 004, FreeTexture );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 004, LoadRenderModel_Async );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 004, LoadTexture_Async );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 005, FreeRenderModel );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 005, FreeTexture );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 005, LoadRenderModel_Async );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 005, LoadTexture_Async );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 006, FreeRenderModel );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 006, FreeTexture );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 006, LoadRenderModel_Async );
|
||||
VRCLIENT_UNIX_IMPL( IVRRenderModels, 006, LoadTexture_Async );
|
||||
|
@ -30,6 +30,12 @@ struct render_model
|
||||
{
|
||||
u_RenderModel_t_0912 *u_0912;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
static struct render_model *from_w( w_RenderModel_t_0912 const* w_map ) { return CONTAINING_RECORD( w_map, struct render_model, w_0912 ); }
|
||||
u_RenderModel_t_0912*& u_model( w_RenderModel_t_0912 const& ) { return this->u_0912; }
|
||||
w_RenderModel_t_0912& w_model( w_RenderModel_t_0912 const& ) { return this->w_0912; }
|
||||
#endif /* __cplusplus */
|
||||
};
|
||||
|
||||
struct render_model_texture_map
|
||||
@ -44,6 +50,15 @@ struct render_model_texture_map
|
||||
u_RenderModel_TextureMap_t_090 *u_090;
|
||||
u_RenderModel_TextureMap_t_1237 *u_1237;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
static struct render_model_texture_map *from_w( const w_RenderModel_TextureMap_t_090* w_map ) { return CONTAINING_RECORD( w_map, struct render_model_texture_map, w_090 ); }
|
||||
static struct render_model_texture_map *from_w( const w_RenderModel_TextureMap_t_1237* w_map ) { return CONTAINING_RECORD( w_map, struct render_model_texture_map, w_1237 ); }
|
||||
u_RenderModel_TextureMap_t_090*& u_map( w_RenderModel_TextureMap_t_090 const& ) { return this->u_090; }
|
||||
u_RenderModel_TextureMap_t_1237*& u_map( w_RenderModel_TextureMap_t_1237 const& ) { return this->u_1237; }
|
||||
w_RenderModel_TextureMap_t_090& w_map( w_RenderModel_TextureMap_t_090 const& ) { return this->w_090; }
|
||||
w_RenderModel_TextureMap_t_1237& w_map( w_RenderModel_TextureMap_t_1237 const& ) { return this->w_1237; }
|
||||
#endif /* __cplusplus */
|
||||
};
|
||||
|
||||
struct vrclient_init_params
|
||||
|
Loading…
x
Reference in New Issue
Block a user