diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/include/nvparameterized/NvParameterized.inl | |
| download | physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip | |
Initial commit:
PhysX 3.4.0 Update @ 21294896
APEX 1.4.0 Update @ 21275617
[CL 21300167]
Diffstat (limited to 'APEX_1.4/include/nvparameterized/NvParameterized.inl')
| -rw-r--r-- | APEX_1.4/include/nvparameterized/NvParameterized.inl | 1229 |
1 files changed, 1229 insertions, 0 deletions
diff --git a/APEX_1.4/include/nvparameterized/NvParameterized.inl b/APEX_1.4/include/nvparameterized/NvParameterized.inl new file mode 100644 index 00000000..b7c2d2ce --- /dev/null +++ b/APEX_1.4/include/nvparameterized/NvParameterized.inl @@ -0,0 +1,1229 @@ +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2008-2013 NVIDIA Corporation. All rights reserved. + + +/*! +\brief NvParameterized inline implementation +*/ + +namespace NvParameterized +{ + +#include "nvparameterized/NvParameterizedMacroses.h" + +#if PX_VC && !PX_PS4 + #pragma warning(push) + #pragma warning(disable: 4996) +#endif //!PX_PS4 + +#define IS_ALPHA(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z')) +#define IS_DIGIT(c) ((c) >= '0' && (c) <= '9') +#define IS_ALPHANUM(c) (IS_ALPHA(c) || IS_DIGIT(c)) +#define IS_IDENTCHAR(c) (IS_ALPHANUM(c) || (c) == ' ' || (c) == '_') + +/** +\brief Enum of tokenizer result types +*/ +enum TokenizerResultType +{ + TOKENIZER_RESULT_NONE, + TOKENIZER_RESULT_BUFFER_OVERFLOW, + TOKENIZER_RESULT_SYNTAX_ERROR, + TOKENIZER_RESULT_STRUCT_MEMBER, + TOKENIZER_RESULT_ARRAY_INDEX +}; + +/** +\brief Get struct member token +*/ +PX_INLINE TokenizerResultType getStructMemberToken(const char *long_name, + char *token, + uint32_t max_token_len, + uint32_t &offset) +{ + PX_ASSERT(long_name != NULL); + PX_ASSERT(token != NULL); + PX_ASSERT(max_token_len > 1); + PX_ASSERT(IS_IDENTCHAR(long_name[0]) || long_name[0] == '.'); + + offset = 0; + + if(long_name[0] == '.') + offset++; + + uint32_t tokenLen = 0; + while(IS_IDENTCHAR(long_name[offset])) + { + if(offset == max_token_len - 1) + return(TOKENIZER_RESULT_BUFFER_OVERFLOW); + + token[tokenLen++] = long_name[offset++]; + } + + token[tokenLen++] = 0; + + if(long_name[offset] != 0 && long_name[offset] != '.' && long_name[offset] != '[') + return(TOKENIZER_RESULT_SYNTAX_ERROR); + + return(TOKENIZER_RESULT_STRUCT_MEMBER); +} + +/** +\brief Get array member token +*/ +PX_INLINE TokenizerResultType getArrayMemberToken(const char *long_name, + char *token, + uint32_t max_token_len, + uint32_t &offset) +{ + PX_ASSERT(long_name != NULL); + PX_ASSERT(token != NULL); + PX_ASSERT(max_token_len > 1); + PX_ASSERT(long_name[0] == '['); + + offset = 1; + + uint32_t tokenLen = 0; + while(long_name[offset] && IS_DIGIT(long_name[offset])) + { + if(tokenLen == max_token_len - 1) + return(TOKENIZER_RESULT_BUFFER_OVERFLOW); + + token[tokenLen++] = long_name[offset++]; + } + + token[tokenLen++] = 0; + + if(long_name[offset] != ']') + return(TOKENIZER_RESULT_SYNTAX_ERROR); + + offset++; + + return(TOKENIZER_RESULT_ARRAY_INDEX); +} + +/** +\brief Get next token +*/ +PX_INLINE TokenizerResultType getNextToken(const char *long_name, + char *token, + uint32_t max_token_len, + uint32_t &offset) +{ + PX_ASSERT(long_name != NULL); + PX_ASSERT(token != NULL); + PX_ASSERT(max_token_len > 1); + + if(long_name[0] == 0) + return(TOKENIZER_RESULT_NONE); + + if(long_name[0] == '.' || IS_IDENTCHAR(long_name[0])) + return(getStructMemberToken(long_name, token, max_token_len, offset)); + + if(long_name[0] == '[') + return(getArrayMemberToken(long_name, token, max_token_len, offset)); + + return(TOKENIZER_RESULT_SYNTAX_ERROR); +} + +#undef IS_ALPHA +#undef IS_DIGIT +#undef IS_ALPHANUM +#undef IS_IDENTCHAR + +/* + The local_strcat_s function appends strSource to strDestination and terminates the resulting string with a null character. + The initial character of strSource overwrites the terminating null character of strDestination. The behavior of strcat_s is + undefined if the source and destination strings overlap. Note that the second parameter is the total size of the buffer, not + the remaining size +*/ + +/** +\brief The local_strcat_s function appends strSource to strDestination and terminates the resulting string with a null character. +*/ +PX_INLINE int local_strcat_s(char* dest, size_t size, const char* src) +{ + size_t d, destStringLen, srcStringLen; + + if ( dest == NULL || + src == NULL || + size == 0 ) + { + return -1; + } + + destStringLen = strlen(dest); + srcStringLen = strlen(src); + d = srcStringLen + destStringLen; + + if ( size <= d ) + { + return -1; + } + + ::memcpy( &dest[destStringLen], src, srcStringLen ); + dest[d] = '\0'; + + return 0; +} + +/** +\brief The local_sprintf_s function wraps the va_list functionality required for PxVxprintf +*/ +int32_t local_sprintf_s( char * _DstBuf, size_t _DstSize, const char * _Format, ...); + +PX_INLINE Handle::Handle(::NvParameterized::Interface *iface) +{ + reset(); + mInterface = iface; + mIsConst = false; + if (mInterface != NULL) + mParameterDefinition = mInterface->rootParameterDefinition(); +} + +PX_INLINE Handle::Handle(::NvParameterized::Interface &iface) +{ + reset(); + mInterface = &iface; + mIsConst = false; + mParameterDefinition = mInterface->rootParameterDefinition(); +} + +PX_INLINE Handle::Handle(const ::NvParameterized::Interface &iface) +{ + reset(); + mInterface = const_cast< ::NvParameterized::Interface * >(&iface); + mIsConst = true; + mParameterDefinition = mInterface->rootParameterDefinition(); +} + +PX_INLINE Handle::Handle(const Handle ¶m_handle) +{ + reset(); + + if(param_handle.isValid()) + { + mNumIndexes = param_handle.mNumIndexes; + memcpy(mIndexList, param_handle.mIndexList, sizeof(int32_t) * mNumIndexes); + mParameterDefinition = param_handle.mParameterDefinition; + mIsValid = param_handle.mIsValid; + mIsConst = param_handle.mIsConst; + mInterface = param_handle.mInterface; + } + else + mIsConst = mIsValid = false; +} + + +PX_INLINE Handle::Handle(::NvParameterized::Interface &instance,const char *longName) +{ + mInterface = &instance; + mIsConst = false; + mInterface->getParameterHandle(longName, *this); +} + +PX_INLINE Handle::Handle(const ::NvParameterized::Interface &instance,const char *longName) +{ + mInterface = const_cast< ::NvParameterized::Interface *>(&instance); + mIsConst = true; + mInterface->getParameterHandle(longName, *this); +} + +PX_INLINE ErrorType Handle::getChildHandle(const ::NvParameterized::Interface *instance,const char *child_long_name, Handle &handle) +{ + handle = *this; + handle.mUserData = NULL; + return(handle.set(instance,child_long_name)); +} + +PX_INLINE ErrorType Handle::getParameter(const char *longName) +{ + if( !mInterface ) + { + return ERROR_HANDLE_MISSING_INTERFACE_POINTER; + } + + return mInterface->getParameterHandle(longName, *this); +} + +PX_INLINE ErrorType Handle::set(const ::NvParameterized::Interface *instance,const Definition *root,const char *child_long_name) +{ + PX_ASSERT(root->parent() == NULL); + + reset(); + mParameterDefinition = root; + mIsValid = true; + + return(set(instance,child_long_name)); +} + +PX_INLINE ErrorType Handle::set(const ::NvParameterized::Interface *instance,const char *child_long_name) +{ + PX_ASSERT(mParameterDefinition != NULL); + PX_ASSERT(child_long_name != NULL); + + if(!isValid()) + return(ERROR_INVALID_PARAMETER_HANDLE); + + mUserData = NULL; + + if(child_long_name[0] == 0) + { + return(ERROR_NONE); + } + + int32_t indexLevel = 0; + + mIsValid = false; + // while(1) causes C4127 warning + for( ; ; ) + { + char token[1024]; + uint32_t offset; + + TokenizerResultType Result = getNextToken(child_long_name, token, sizeof(token), offset); + + switch(Result) + { + case TOKENIZER_RESULT_NONE: + if(indexLevel == 0) + return(ERROR_INVALID_PARAMETER_NAME); + else + goto no_error; + + case TOKENIZER_RESULT_BUFFER_OVERFLOW: + return(ERROR_RESULT_BUFFER_OVERFLOW); + + case TOKENIZER_RESULT_SYNTAX_ERROR: + return(ERROR_SYNTAX_ERROR_IN_NAME); + + case TOKENIZER_RESULT_STRUCT_MEMBER: + { + if(mParameterDefinition->type() != TYPE_STRUCT) + return(ERROR_NAME_DOES_NOT_MATCH_DEFINITION); + + int32_t index; + mParameterDefinition = mParameterDefinition->child(token, index); + if(mParameterDefinition == NULL) + return(ERROR_INVALID_PARAMETER_NAME); + + pushIndex(index); + } + break; + + case TOKENIZER_RESULT_ARRAY_INDEX: + { + if(mParameterDefinition->type() != TYPE_ARRAY) + return(ERROR_NAME_DOES_NOT_MATCH_DEFINITION); + + int32_t index = atoi(token); + PX_ASSERT(index >= 0); + + int32_t arraySize=0; + if ( instance ) + { + Handle handle(*instance); + ErrorType err = instance->getParameterHandle( mParameterDefinition->longName(), handle ); + if(err != ERROR_NONE) + return(err); + handle.getArraySize(arraySize); + } + else + { + arraySize = mParameterDefinition->arraySize(); + } + + if(index >= arraySize ) + return(ERROR_INDEX_OUT_OF_RANGE); + + PX_ASSERT(mParameterDefinition->numChildren() == 1); + mParameterDefinition = mParameterDefinition->child(0); + + pushIndex(index); + } + break; + } + + child_long_name += offset; + indexLevel++; + } + +no_error: + + mIsValid = true; + return(ERROR_NONE); +} + +PX_INLINE ErrorType Handle::set(int32_t child_index) +{ + PX_ASSERT(mParameterDefinition != NULL); + PX_ASSERT(child_index >= 0); + + switch(parameterDefinition()->type()) + { + case TYPE_STRUCT: + if(child_index < 0 || child_index >= parameterDefinition()->numChildren()) + return(ERROR_INDEX_OUT_OF_RANGE); + mParameterDefinition = mParameterDefinition->child(child_index); + pushIndex(child_index); + + break; + + + case TYPE_ARRAY: + if(child_index < 0) + return(ERROR_INDEX_OUT_OF_RANGE); + + // parameterDefinition()->arraySize() does not work on dynamic arrays... + if( parameterDefinition()->arraySizeIsFixed() && + child_index >= parameterDefinition()->arraySize()) + return(ERROR_INDEX_OUT_OF_RANGE); + + mParameterDefinition = mParameterDefinition->child(0); + pushIndex(child_index); + break; + + NV_PARAMETRIZED_NO_AGGREGATE_DATATYPE_LABELS + default: + { + return(ERROR_IS_LEAF_NODE); + } + } + + mIsValid = true; + return(ERROR_NONE); +} + +PX_INLINE ErrorType Handle::getChildHandle(int32_t index, Handle &handle) +{ + if(parameterDefinition()->type() != TYPE_ARRAY && parameterDefinition()->type() != TYPE_STRUCT) + return(ERROR_IS_LEAF_NODE); + + if(!isValid()) + return(ERROR_INVALID_PARAMETER_HANDLE); + + handle = *this; + handle.pushIndex(index); + if(parameterDefinition()->type() == TYPE_STRUCT) + { + PX_ASSERT(parameterDefinition()->child(index) != NULL); + handle.mParameterDefinition = parameterDefinition()->child(index); + } + else + { + PX_ASSERT(parameterDefinition()->child(0) != NULL); + handle.mParameterDefinition = parameterDefinition()->child(0); + } + + return(ERROR_NONE); +} + +PX_INLINE bool Handle::getLongName(char *str, uint32_t max_str_len) const +{ + PX_ASSERT(parameterDefinition() != NULL); + + if(!isValid()) + return(false); + + if(numIndexes() < 1) + return(false); + + const Definition *root = parameterDefinition()->root(); + + *str = 0; + const Definition *node = root->child(index(0)); + char tmpStr[32]; + for(int32_t i=1; i <= numIndexes(); ++i) + { + PX_ASSERT(node != NULL); + PX_ASSERT(node->parent() != NULL); + + switch(node->parent()->type()) + { + case TYPE_STRUCT: + { + if(node->parent()->parent() != NULL) + { + local_strcat_s(str, max_str_len, "."); + } + local_strcat_s(str, max_str_len, node->name()); + break; + } + + case TYPE_ARRAY: + { + local_strcat_s(str, max_str_len, "["); + + local_sprintf_s(tmpStr, sizeof(tmpStr), "%d", index(i-1)); + + local_strcat_s(str, max_str_len, tmpStr); + local_strcat_s(str, max_str_len, "]"); + break; + } + + NV_PARAMETRIZED_NO_AGGREGATE_DATATYPE_LABELS + default: + { + local_strcat_s(str, max_str_len, node->name()); + } + } + + switch(node->type()) + { + case TYPE_STRUCT: + node = node->child(index(i)); + break; + + case TYPE_ARRAY: + node = node->child(0); + break; + + NV_PARAMETRIZED_NO_AGGREGATE_DATATYPE_LABELS + default: + node = NULL; + } + } + + return(true); +} + +PX_INLINE void Handle::reset(void) +{ + mNumIndexes = 0; + mParameterDefinition = NULL; + mUserData = NULL; + mIsValid = false; +} + +PX_INLINE void Handle::pushIndex(int32_t index) +{ + PX_ASSERT(mNumIndexes < MAX_DEPTH); + PX_ASSERT(index >= 0); + + if(mNumIndexes < MAX_DEPTH) + mIndexList[mNumIndexes++] = index; +} + +PX_INLINE int32_t Handle::popIndex(int32_t levels) +{ + PX_ASSERT(levels > 0); + PX_ASSERT(mNumIndexes >= levels); + PX_ASSERT(mParameterDefinition != NULL); + + if(mNumIndexes >= levels ) + { + mNumIndexes -= levels; + + for(; levels > 0; --levels) + mParameterDefinition = mParameterDefinition->parent(); + + return(mIndexList[mNumIndexes]); + } + + return(-1); +} + +PX_INLINE ErrorType Handle::initParamRef(const char *chosenRefStr, bool doDestroyOld) +{ + PX_ASSERT(mInterface); + return mInterface->initParamRef(*this, chosenRefStr, doDestroyOld); +} + +// These functions wrap the raw(Get|Set)XXXXX() methods. They deal with +// error handling and casting. + +#define CHECK_CONST_HANDLE if( mIsConst ) return ERROR_MODIFY_CONST_HANDLE; + +PX_INLINE ErrorType Handle::getParamBool(bool &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamBool(*this,val); +} + +PX_INLINE ErrorType Handle::setParamBool(bool val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamBool(*this,val); +} + +PX_INLINE ErrorType Handle::getParamBoolArray(bool *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamBoolArray(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamBoolArray(const bool *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamBoolArray(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::getParamString(const char *&val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamString(*this,val); +} + +PX_INLINE ErrorType Handle::setParamString(const char *val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamString(*this,val); +} + +PX_INLINE ErrorType Handle::getParamStringArray(char **array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamStringArray(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamStringArray(const char **array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamStringArray(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamEnum(const char *&val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamEnum(*this,val); +} + +PX_INLINE ErrorType Handle::setParamEnum(const char *val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamEnum(*this,val); +} + +PX_INLINE ErrorType Handle::getParamEnumArray(char **array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamEnumArray(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamEnumArray(const char **array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamEnumArray(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamRef(::NvParameterized::Interface *&val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamRef(*this,val); +} + +PX_INLINE ErrorType Handle::setParamRef(::NvParameterized::Interface *val, bool doDestroyOld) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamRef(*this, val, doDestroyOld); +} + +PX_INLINE ErrorType Handle::getParamRefArray(::NvParameterized::Interface **array, int32_t n, int32_t offset) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamRefArray(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamRefArray(::NvParameterized::Interface **array, int32_t n, int32_t offset, bool doDestroyOld) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamRefArray(*this,array,n,offset,doDestroyOld); +} + +PX_INLINE ErrorType Handle::getParamI8(int8_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI8(*this,val); +} + +PX_INLINE ErrorType Handle::setParamI8(int8_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI8(*this,val); +} + +PX_INLINE ErrorType Handle::getParamI8Array(int8_t *_array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI8Array(*this,_array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamI8Array(const int8_t *val, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI8Array(*this,val,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamI16(int16_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI16(*this,val); +} + +PX_INLINE ErrorType Handle::setParamI16(int16_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI16(*this,val); +} + +PX_INLINE ErrorType Handle::getParamI16Array(int16_t *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI16Array(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamI16Array(const int16_t *val, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI16Array(*this,val,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamI32(int32_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI32(*this,val); +} + +PX_INLINE ErrorType Handle::setParamI32(int32_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI32(*this,val); +} + +PX_INLINE ErrorType Handle::getParamI32Array(int32_t *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI32Array(*this,array,n,offset ) ; +} + +PX_INLINE ErrorType Handle::setParamI32Array(const int32_t *val, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI32Array(*this,val,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamI64(int64_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI64(*this,val) ; +} + +PX_INLINE ErrorType Handle::setParamI64(int64_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI64(*this,val); +} + +PX_INLINE ErrorType Handle::getParamI64Array(int64_t *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamI64Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamI64Array(const int64_t *val, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamI64Array(*this,val,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamU8(uint8_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU8(*this,val); +} + +PX_INLINE ErrorType Handle::setParamU8(uint8_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU8(*this,val); +} + +PX_INLINE ErrorType Handle::getParamU8Array(uint8_t *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU8Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamU8Array(const uint8_t *val, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU8Array(*this,val,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamU16(uint16_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU16(*this,val); +} + +PX_INLINE ErrorType Handle::setParamU16(uint16_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU16(*this,val); +} + +PX_INLINE ErrorType Handle::getParamU16Array(uint16_t *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU16Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamU16Array(const uint16_t *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU16Array(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamU32(uint32_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU32(*this,val); +} + +PX_INLINE ErrorType Handle::setParamU32(uint32_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU32(*this,val); +} + +PX_INLINE ErrorType Handle::getParamU32Array(uint32_t *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU32Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamU32Array(const uint32_t *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU32Array(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamU64(uint64_t &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU64(*this,val); +} + +PX_INLINE ErrorType Handle::setParamU64(uint64_t val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU64(*this,val); +} + +PX_INLINE ErrorType Handle::getParamU64Array(uint64_t *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamU64Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamU64Array(const uint64_t *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamU64Array(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::getParamF32(float &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamF32(*this,val); +} + +PX_INLINE ErrorType Handle::setParamF32(float val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamF32(*this,val); +} + +PX_INLINE ErrorType Handle::getParamF32Array(float *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamF32Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamF32Array(const float *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamF32Array(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::getParamF64(double &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamF64(*this,val); +} + +PX_INLINE ErrorType Handle::setParamF64(double val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamF64(*this,val); +} + +PX_INLINE ErrorType Handle::getParamF64Array(double *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamF64Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamF64Array(const double *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamF64Array(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::setParamVec2(const physx::PxVec2 &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamVec2(*this,val); +} + +PX_INLINE ErrorType Handle::getParamVec2(physx::PxVec2 &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamVec2(*this,val); +} + +PX_INLINE ErrorType Handle::getParamVec2Array(physx::PxVec2 *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamVec2Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamVec2Array(const physx::PxVec2 *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamVec2Array(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::setParamVec3(const physx::PxVec3 &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamVec3(*this,val); +} + +PX_INLINE ErrorType Handle::getParamVec3(physx::PxVec3 &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamVec3(*this,val); +} + +PX_INLINE ErrorType Handle::getParamVec3Array(physx::PxVec3 *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamVec3Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamVec3Array(const physx::PxVec3 *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamVec3Array(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::setParamVec4(const physx::PxVec4 &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamVec4(*this,val); +} + +PX_INLINE ErrorType Handle::getParamVec4(physx::PxVec4 &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamVec4(*this,val); +} + +PX_INLINE ErrorType Handle::getParamVec4Array(physx::PxVec4 *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamVec4Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamVec4Array(const physx::PxVec4 *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamVec4Array(*this,array,n,offset); +} + + +PX_INLINE ErrorType Handle::setParamQuat(const physx::PxQuat &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamQuat(*this,val); +} + +PX_INLINE ErrorType Handle::getParamQuat(physx::PxQuat &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamQuat(*this,val); +} + +PX_INLINE ErrorType Handle::getParamQuatArray(physx::PxQuat *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamQuatArray(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamQuatArray(const physx::PxQuat *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamQuatArray(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamMat33(const physx::PxMat33 &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamMat33(*this,val); +} + +PX_INLINE ErrorType Handle::getParamMat33(physx::PxMat33 &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamMat33(*this,val); +} + +PX_INLINE ErrorType Handle::getParamMat33Array(physx::PxMat33 *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamMat33Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamMat33Array(const physx::PxMat33 *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamMat33Array(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamMat44(const physx::PxMat44 &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamMat44(*this,val); +} + +PX_INLINE ErrorType Handle::getParamMat44(physx::PxMat44 &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamMat44(*this,val); +} + +PX_INLINE ErrorType Handle::getParamMat44Array(physx::PxMat44 *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamMat44Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamMat44Array(const physx::PxMat44 *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamMat44Array(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamMat34Legacy(const float (&val)[12]) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamMat34Legacy(*this,val); +} + +PX_INLINE ErrorType Handle::getParamMat34Legacy(float (&val)[12]) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamMat34Legacy(*this,val); +} + +PX_INLINE ErrorType Handle::getParamMat34LegacyArray(float *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamMat34LegacyArray(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamMat34LegacyArray(const float *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamMat34LegacyArray(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamBounds3(const physx::PxBounds3 &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamBounds3(*this,val); +} + +PX_INLINE ErrorType Handle::getParamBounds3(physx::PxBounds3 &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamBounds3(*this,val); +} + +PX_INLINE ErrorType Handle::getParamBounds3Array(physx::PxBounds3 *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamBounds3Array(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamBounds3Array(const physx::PxBounds3 *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamBounds3Array(*this,array,n,offset); +} + +PX_INLINE ErrorType Handle::setParamTransform(const physx::PxTransform &val) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamTransform(*this,val); +} + +PX_INLINE ErrorType Handle::getParamTransform(physx::PxTransform &val) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamTransform(*this,val); +} + +PX_INLINE ErrorType Handle::getParamTransformArray(physx::PxTransform *array, int32_t n, int32_t offset ) const +{ + PX_ASSERT(mInterface); + return mInterface->getParamTransformArray(*this,array,n,offset ); +} + +PX_INLINE ErrorType Handle::setParamTransformArray(const physx::PxTransform *array, int32_t n, int32_t offset) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->setParamTransformArray(*this,array,n,offset); +} + + + +#define NV_PARAMETERIZED_TYPES_NO_LEGACY_TYPES +#define NV_PARAMETERIZED_TYPES_ONLY_SIMPLE_TYPES +#define NV_PARAMETERIZED_TYPES_NO_STRING_TYPES +#define NV_PARAMETERIZED_TYPE(type_name, enum_name, c_type) \ + template <> PX_INLINE ::NvParameterized::ErrorType Handle::setParam<c_type>(const c_type &val) { return setParam##type_name(val); } \ + template <> PX_INLINE ::NvParameterized::ErrorType Handle::getParam<c_type>(c_type &val) const {return getParam##type_name(val); } \ + template <> PX_INLINE ::NvParameterized::ErrorType Handle::getParamArray<c_type>(c_type *array, int32_t n, int32_t offset) const { return getParam##type_name##Array(array, n, offset); } \ + template <> PX_INLINE ::NvParameterized::ErrorType Handle::setParamArray<c_type>(const c_type *array, int32_t n, int32_t offset) { return setParam##type_name##Array(array, n, offset); } +#include "NvParameterized_types.h" + +PX_INLINE ErrorType Handle::valueToStr(char *buf, uint32_t bufSize, const char *&ret) +{ + PX_ASSERT(mInterface); + return mInterface->valueToStr(*this, buf, bufSize, ret); +} + +PX_INLINE ErrorType Handle::strToValue(const char *str, const char **endptr) // assigns this string to the valu +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->strToValue(*this,str, endptr); // assigns this string to the value +} + + +PX_INLINE ErrorType Handle::resizeArray(int32_t new_size) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->resizeArray(*this,new_size); +} + +PX_INLINE ErrorType Handle::getArraySize(int32_t &size, int32_t dimension ) const +{ + PX_ASSERT(mInterface); + return mInterface->getArraySize(*this,size,dimension ); +} + +PX_INLINE ErrorType Handle::swapArrayElements(uint32_t firstElement, uint32_t secondElement) +{ + PX_ASSERT(mInterface); + CHECK_CONST_HANDLE + return mInterface->swapArrayElements(*this, firstElement, secondElement); +} + +#undef IS_ALPHA +#undef IS_DIGIT +#undef IS_ALPHANUM +#undef IS_IDENTCHAR +#undef CHECK_CONST_HANDLE + +#if PX_VC && !PX_PS4 + #pragma warning(pop) +#endif //!PX_PS4 + +} // end of namespace |