vrclient: Handle NULL parameters to wrapped structs

This commit is contained in:
Andrew Eikum
2019-09-24 08:00:08 -05:00
parent 13d37fd406
commit 8de08a1485
35 changed files with 228 additions and 155 deletions
+4 -3
View File
@@ -469,7 +469,7 @@ def handle_method(cfile, classname, winclassname, cppname, method, cpp, cpp_h, e
if do_lin_to_win and do_lin_to_win[1] == param.spelling or \ if do_lin_to_win and do_lin_to_win[1] == param.spelling or \
do_wrap and do_wrap[1] == param.spelling: do_wrap and do_wrap[1] == param.spelling:
cfile.write(", %s" % param.spelling) cfile.write(", %s" % param.spelling)
cpp.write("&lin") cpp.write("%s ? &lin : nullptr" % param.spelling)
if do_lin_to_win and \ if do_lin_to_win and \
(do_lin_to_win[0] == "VREvent_t" or \ (do_lin_to_win[0] == "VREvent_t" or \
do_lin_to_win[0] == "VRControllerState001_t"): do_lin_to_win[0] == "VRControllerState001_t"):
@@ -484,7 +484,7 @@ def handle_method(cfile, classname, winclassname, cppname, method, cpp, cpp_h, e
cfile.write(", %s" % param.spelling) cfile.write(", %s" % param.spelling)
next_is_size = False next_is_size = False
if param.type.spelling == "uint32_t": if param.type.spelling == "uint32_t":
cpp.write("sizeof(lin)") cpp.write("%s ? sizeof(lin) : 0" % param.spelling)
else: else:
cpp.write("(%s)%s" % (param.type.spelling, param.spelling)) cpp.write("(%s)%s" % (param.type.spelling, param.spelling))
elif "&" in param.type.spelling: elif "&" in param.type.spelling:
@@ -518,7 +518,8 @@ def handle_method(cfile, classname, winclassname, cppname, method, cpp, cpp_h, e
if path_conv["w2l_arrays"][i]: if path_conv["w2l_arrays"][i]:
cfile.write(" vrclient_free_stringlist(lin_%s);\n" % path_conv["w2l_names"][i]) cfile.write(" vrclient_free_stringlist(lin_%s);\n" % path_conv["w2l_names"][i])
if do_lin_to_win: if do_lin_to_win:
cpp.write(" struct_%s_%s_lin_to_win(&lin, %s);\n" % (strip_ns(do_lin_to_win[0]), display_sdkver(sdkver), do_lin_to_win[1])) cpp.write(" if(%s)\n" % do_lin_to_win[1])
cpp.write(" struct_%s_%s_lin_to_win(&lin, %s);\n" % (strip_ns(do_lin_to_win[0]), display_sdkver(sdkver), do_lin_to_win[1]))
cpp.write(" return _ret;\n") cpp.write(" return _ret;\n")
if do_wrap: if do_wrap:
cpp.write(" if(_ret == 0)\n") cpp.write(" if(_ret == 0)\n")
@@ -143,8 +143,9 @@ bool cppIVROverlay_IVROverlay_001_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr);
struct_VREvent_t_092_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_092_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -143,8 +143,9 @@ bool cppIVROverlay_IVROverlay_002_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr);
struct_VREvent_t_094_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_094_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -158,8 +158,9 @@ bool cppIVROverlay_IVROverlay_003_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr);
struct_VREvent_t_097_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_097_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -168,8 +168,9 @@ bool cppIVROverlay_IVROverlay_004_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr);
struct_VREvent_t_098_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_098_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -168,8 +168,9 @@ bool cppIVROverlay_IVROverlay_005_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr);
struct_VREvent_t_0910_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_0910_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -168,8 +168,9 @@ bool cppIVROverlay_IVROverlay_007_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr);
struct_VREvent_t_0912_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_0912_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -173,8 +173,9 @@ bool cppIVROverlay_IVROverlay_008_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr);
struct_VREvent_t_0914_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_0914_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -183,8 +183,9 @@ bool cppIVROverlay_IVROverlay_010_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_0918_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_0918_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -193,8 +193,9 @@ bool cppIVROverlay_IVROverlay_011_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_0920_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_0920_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -193,8 +193,9 @@ bool cppIVROverlay_IVROverlay_012_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_101_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_101_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -213,8 +213,9 @@ bool cppIVROverlay_IVROverlay_013_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_104_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_104_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -213,8 +213,9 @@ bool cppIVROverlay_IVROverlay_014_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_106_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_106_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -238,8 +238,9 @@ bool cppIVROverlay_IVROverlay_016_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_1010_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_1010_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -238,8 +238,9 @@ bool cppIVROverlay_IVROverlay_017_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_1011_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_1011_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -238,8 +238,9 @@ bool cppIVROverlay_IVROverlay_018_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_1017_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_1017_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -238,8 +238,9 @@ bool cppIVROverlay_IVROverlay_019_PollNextOverlayEvent(void *linux_side, VROverl
{ {
VREvent_t lin; VREvent_t lin;
bool _ret; bool _ret;
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin, sizeof(lin)); _ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, pEvent ? &lin : nullptr, uncbVREvent ? sizeof(lin) : 0);
struct_VREvent_t_1610_lin_to_win(&lin, pEvent); if(pEvent)
struct_VREvent_t_1610_lin_to_win(&lin, pEvent);
return _ret; return _ret;
} }
@@ -13,7 +13,7 @@ bool cppIVRRenderModels_IVRRenderModels_002_LoadRenderModel(void *linux_side, co
{ {
RenderModel_t *lin; RenderModel_t *lin;
bool _ret; bool _ret;
_ret = ((IVRRenderModels*)linux_side)->LoadRenderModel((const char *)pchRenderModelName, &lin); _ret = ((IVRRenderModels*)linux_side)->LoadRenderModel((const char *)pchRenderModelName, ppRenderModel ? &lin : nullptr);
if(_ret == 0) if(_ret == 0)
*ppRenderModel = struct_RenderModel_t_0915_wrap(lin); *ppRenderModel = struct_RenderModel_t_0915_wrap(lin);
return _ret; return _ret;
@@ -28,7 +28,7 @@ bool cppIVRRenderModels_IVRRenderModels_002_LoadTexture(void *linux_side, Textur
{ {
RenderModel_TextureMap_t *lin; RenderModel_TextureMap_t *lin;
bool _ret; bool _ret;
_ret = ((IVRRenderModels*)linux_side)->LoadTexture((vr::TextureID_t)textureId, &lin); _ret = ((IVRRenderModels*)linux_side)->LoadTexture((vr::TextureID_t)textureId, ppTexture ? &lin : nullptr);
if(_ret == 0) if(_ret == 0)
*ppTexture = struct_RenderModel_TextureMap_t_0915_wrap(lin); *ppTexture = struct_RenderModel_TextureMap_t_0915_wrap(lin);
return _ret; return _ret;
@@ -13,7 +13,7 @@ vr::EVRRenderModelError cppIVRRenderModels_IVRRenderModels_004_LoadRenderModel_A
{ {
RenderModel_t *lin; RenderModel_t *lin;
vr::EVRRenderModelError _ret; vr::EVRRenderModelError _ret;
_ret = ((IVRRenderModels*)linux_side)->LoadRenderModel_Async((const char *)pchRenderModelName, &lin); _ret = ((IVRRenderModels*)linux_side)->LoadRenderModel_Async((const char *)pchRenderModelName, ppRenderModel ? &lin : nullptr);
if(_ret == 0) if(_ret == 0)
*ppRenderModel = struct_RenderModel_t_0918_wrap(lin); *ppRenderModel = struct_RenderModel_t_0918_wrap(lin);
return _ret; return _ret;
@@ -28,7 +28,7 @@ vr::EVRRenderModelError cppIVRRenderModels_IVRRenderModels_004_LoadTexture_Async
{ {
RenderModel_TextureMap_t *lin; RenderModel_TextureMap_t *lin;
vr::EVRRenderModelError _ret; vr::EVRRenderModelError _ret;
_ret = ((IVRRenderModels*)linux_side)->LoadTexture_Async((vr::TextureID_t)textureId, &lin); _ret = ((IVRRenderModels*)linux_side)->LoadTexture_Async((vr::TextureID_t)textureId, ppTexture ? &lin : nullptr);
if(_ret == 0) if(_ret == 0)
*ppTexture = struct_RenderModel_TextureMap_t_0918_wrap(lin); *ppTexture = struct_RenderModel_TextureMap_t_0918_wrap(lin);
return _ret; return _ret;
@@ -13,7 +13,7 @@ vr::EVRRenderModelError cppIVRRenderModels_IVRRenderModels_005_LoadRenderModel_A
{ {
RenderModel_t *lin; RenderModel_t *lin;
vr::EVRRenderModelError _ret; vr::EVRRenderModelError _ret;
_ret = ((IVRRenderModels*)linux_side)->LoadRenderModel_Async((const char *)pchRenderModelName, &lin); _ret = ((IVRRenderModels*)linux_side)->LoadRenderModel_Async((const char *)pchRenderModelName, ppRenderModel ? &lin : nullptr);
if(_ret == 0) if(_ret == 0)
*ppRenderModel = struct_RenderModel_t_1015_wrap(lin); *ppRenderModel = struct_RenderModel_t_1015_wrap(lin);
return _ret; return _ret;
@@ -28,7 +28,7 @@ vr::EVRRenderModelError cppIVRRenderModels_IVRRenderModels_005_LoadTexture_Async
{ {
RenderModel_TextureMap_t *lin; RenderModel_TextureMap_t *lin;
vr::EVRRenderModelError _ret; vr::EVRRenderModelError _ret;
_ret = ((IVRRenderModels*)linux_side)->LoadTexture_Async((vr::TextureID_t)textureId, &lin); _ret = ((IVRRenderModels*)linux_side)->LoadTexture_Async((vr::TextureID_t)textureId, ppTexture ? &lin : nullptr);
if(_ret == 0) if(_ret == 0)
*ppTexture = struct_RenderModel_TextureMap_t_1015_wrap(lin); *ppTexture = struct_RenderModel_TextureMap_t_1015_wrap(lin);
return _ret; return _ret;

Some files were not shown because too many files have changed in this diff Show More