MCPcopy Create free account
hub / github.com/ValveSoftware/openvr / GetPropertyVector

Method GetPropertyVector

headers/openvr_driver.h:3771–3809  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3769
3770template< typename T >
3771ETrackedPropertyError CVRPropertyHelpers::GetPropertyVector( PropertyContainerHandle_t ulContainer, ETrackedDeviceProperty prop, PropertyTypeTag_t unExpectedTag, std::vector<T> *pvecResults )
3772{
3773 ETrackedPropertyError err;
3774 PropertyTypeTag_t unTag;
3775 uint32_t unNeeded;
3776 if ( pvecResults->empty() )
3777 unNeeded = GetProperty( ulContainer, prop, nullptr, 0, &unTag, &err );
3778 else
3779 unNeeded = GetProperty( ulContainer, prop, &(*pvecResults)[0], (uint32_t)(pvecResults->size() * sizeof( T )), &unTag, &err );
3780 uint32_t unFound = unNeeded / sizeof( T );
3781 if ( err == TrackedProp_Success )
3782 {
3783 if ( unTag != unExpectedTag && unFound > 0 )
3784 {
3785 return TrackedProp_WrongDataType;
3786 }
3787
3788 pvecResults->resize( unFound );
3789 return TrackedProp_Success;
3790 }
3791 else if ( err == TrackedProp_BufferTooSmall )
3792 {
3793 pvecResults->resize( unFound );
3794 unNeeded = GetProperty( ulContainer, prop, &(*pvecResults)[0], (uint32_t)(pvecResults->size() * sizeof( T )), &unTag, &err );
3795 unFound = unNeeded / sizeof( T );
3796
3797 if ( err == TrackedProp_Success )
3798 {
3799 if ( unTag != unExpectedTag )
3800 {
3801 return TrackedProp_WrongDataType;
3802 }
3803
3804 pvecResults->resize( unFound );
3805 return TrackedProp_Success;
3806 }
3807 }
3808 return err;
3809}
3810
3811inline bool CVRPropertyHelpers::IsPropertySet( PropertyContainerHandle_t ulContainer, ETrackedDeviceProperty prop, ETrackedPropertyError *peError )
3812{

Callers

nothing calls this directly

Calls 3

emptyMethod · 0.80
sizeMethod · 0.80
resizeMethod · 0.80

Tested by

no test coverage detected