NvParameterized.h
Go to the documentation of this file.
00001 //
00002 // Redistribution and use in source and binary forms, with or without
00003 // modification, are permitted provided that the following conditions
00004 // are met:
00005 //  * Redistributions of source code must retain the above copyright
00006 //    notice, this list of conditions and the following disclaimer.
00007 //  * Redistributions in binary form must reproduce the above copyright
00008 //    notice, this list of conditions and the following disclaimer in the
00009 //    documentation and/or other materials provided with the distribution.
00010 //  * Neither the name of NVIDIA CORPORATION nor the names of its
00011 //    contributors may be used to endorse or promote products derived
00012 //    from this software without specific prior written permission.
00013 //
00014 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
00015 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00016 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00017 // PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
00018 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00019 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00020 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00021 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
00022 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00023 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00024 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00025 //
00026 // Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved.
00027  
00028 #ifndef NV_PARAMETERIZED_H
00029 #define NV_PARAMETERIZED_H
00030 
00048 #include "foundation/PxVec2.h"
00049 #include "foundation/PxVec3.h"
00050 #include "foundation/PxVec4.h"
00051 #include "foundation/PxQuat.h"
00052 #include "foundation/PxBounds3.h"
00053 #include "foundation/PxMat44.h"
00054 #include <stdio.h>
00055 #include <stdarg.h>
00056 #include <new> // for placement new
00057 
00058 PX_PUSH_PACK_DEFAULT
00059 
00061 namespace NvParameterized
00062 {
00063 
00064 class Interface;
00065 class Traits;
00066 
00070 enum ErrorType
00071 {
00072    ERROR_NONE = 0,
00073    ERROR_TYPE_NOT_SUPPORTED,
00074    ERROR_INDEX_OUT_OF_RANGE,
00075    ERROR_INVALID_PARAMETER_NAME,
00076    ERROR_INVALID_PARAMETER_HANDLE,
00077    ERROR_CAST_FAILED,
00078    ERROR_INVALID_ENUM_VAL,
00079    ERROR_SYNTAX_ERROR_IN_NAME,
00080    ERROR_IS_LEAF_NODE,
00081    ERROR_RESULT_BUFFER_OVERFLOW,
00082    ERROR_NAME_DOES_NOT_MATCH_DEFINITION,
00083    ERROR_NOT_AN_ARRAY,
00084    ERROR_ARRAY_SIZE_IS_FIXED,
00085    ERROR_ARRAY_RESIZING_IS_NOT_SUPPORTED,
00086    ERROR_ARRAY_IS_TOO_SMALL,
00087    ERROR_INVALID_ARRAY_DIMENSION,
00088    ERROR_INVALID_ARRAY_SIZE,
00089    ERROR_PARAMETER_HANDLE_DOES_NOT_MATCH_CLASS,
00090    ERROR_MEMORY_ALLOCATION_FAILURE,
00091    ERROR_INVALID_REFERENCE_INCLUDE_HINT,
00092    ERROR_INVALID_REFERENCE_VALUE,
00093    ERROR_PARAMETER_HANDLE_NOT_INITIALIZED,
00094    ERROR_PARAMETER_DEFINITIONS_DO_NOT_MATCH,
00095    ERROR_HANDLE_MISSING_INTERFACE_POINTER,
00096    ERROR_HANDLE_INVALID_INTERFACE_POINTER,
00097    ERROR_INVALID_CALL_ON_NAMED_REFERENCE,
00098    ERROR_NOT_IMPLEMENTED,
00099    ERROR_OBJECT_CONSTRUCTION_FAILED,
00100    ERROR_MODIFY_CONST_HANDLE
00101 };
00102 
00107 enum DataType
00108 {
00109     TYPE_UNDEFINED = 0,
00110 
00115     TYPE_ARRAY = 1,
00116 
00117     TYPE_STRUCT = 2,
00118 
00119     TYPE_BOOL = 3,
00124     TYPE_STRING = 4,
00125 
00130     TYPE_ENUM = 5,
00131 
00143     TYPE_REF = 6,
00144 
00145     TYPE_I8 = 7,
00146     TYPE_I16 = 8,
00147     TYPE_I32 = 9,
00148     TYPE_I64 = 10,
00149 
00150     TYPE_U8 = 11,
00151     TYPE_U16 = 12,
00152     TYPE_U32 = 13,
00153     TYPE_U64 = 14,
00154 
00155     TYPE_F32 = 15,
00156     TYPE_F64 = 16,
00157 
00158     TYPE_VEC2 = 17,
00159     TYPE_VEC3 = 18,
00160     TYPE_VEC4 = 19,
00161     TYPE_QUAT = 20,
00162     TYPE_MAT33 = 21,
00163     TYPE_BOUNDS3 = 23,
00164     TYPE_MAT44 = 24,
00165 
00166     TYPE_POINTER = 25,
00167 
00168     TYPE_TRANSFORM = 26,
00169 
00170     TYPE_MAT34 = 27,
00171 
00172     TYPE_LAST
00173 };
00174 
00180 class Hint
00181 {
00182     public:
00183 
00187     virtual ~Hint() {}
00191     virtual const char *    name(void) const = 0;
00192 
00196     virtual DataType         type(void) const = 0;
00197 
00202     virtual    uint64_t             asUInt(void) const = 0;
00203     
00208     virtual double             asFloat(void) const = 0;
00209 
00214     virtual const char *    asString(void) const = 0;
00215 
00219     virtual bool setAsUInt(uint64_t v) = 0;
00220 
00221     private:
00222 };
00223 
00227 class Definition
00228 {
00229 public:
00230 
00234     virtual ~Definition() {}
00235 
00239     virtual void destroy() = 0;
00240 
00244     virtual int32_t                             numHints(void) const = 0;
00245 
00250     virtual const Hint *                    hint(int32_t index) const = 0;
00251 
00256     virtual const Hint *                    hint(const char *name) const = 0;
00257 
00262     virtual void                            setHints(const Hint **hints, int32_t n) = 0;
00263 
00268     virtual void                            addHint(Hint *hint) = 0;
00269     
00274     virtual const Definition *    parent(void) const = 0;
00275 
00279     virtual const Definition *    root(void) const = 0;
00280 
00284     virtual const char *                    name(void) const = 0;
00285 
00291     virtual const char *                    longName(void) const = 0;
00292 
00297     virtual const char *                    structName(void) const = 0;
00298 
00302     virtual DataType                        type(void) const = 0;
00303 
00307     virtual const char*                     typeString() const = 0;
00308 
00314     virtual    int32_t                             numRefVariants(void) const = 0;
00315 
00320     virtual    int32_t                             refVariantValIndex( const char * ref_val ) const = 0;
00321 
00325     virtual    const char *                     refVariantVal(int32_t index) const = 0;
00326 
00330     virtual int32_t                             numEnumVals(void) const = 0;
00331 
00336     virtual    int32_t                             enumValIndex( const char * enum_val ) const = 0;
00337 
00342     virtual const char *                    enumVal(int32_t index) const = 0;
00343 
00348     virtual void                             setEnumVals(const char **enum_vals, int32_t n) = 0;
00349 
00354     virtual void                             addEnumVal(const char *enum_val) = 0;
00355 
00359     virtual uint32_t alignment(void) const = 0;
00360 
00364     virtual uint32_t padding(void) const = 0;
00365 
00369     virtual int32_t arrayDimension(void) const = 0;
00370 
00375     virtual int32_t arraySize(int32_t dimension = 0) const = 0;
00376 
00380     virtual bool arraySizeIsFixed(void) const = 0;
00381 
00386     virtual bool setArraySize(int32_t size) = 0; // -1 if the size is not fixed
00387 
00391     virtual bool isLeaf(void) const = 0;
00392     
00396     virtual bool isIncludedRef(void) const = 0;
00397 
00401     virtual int32_t numChildren(void) const = 0;
00402 
00406     virtual const Definition *child(int32_t index) const = 0;
00407 
00412     virtual const Definition *child(const char *name, int32_t &index) const = 0;
00413 
00418     virtual void setChildren(Definition **children, int32_t n) = 0;
00419 
00424     virtual void addChild(Definition *child) = 0;
00425 
00429     virtual void setDynamicHandleIndicesMap(const uint8_t *indices, uint32_t numIndices) = 0;
00430 
00434     virtual const uint8_t * getDynamicHandleIndicesMap(uint32_t &outNumIndices) const = 0;
00435 
00441     virtual bool isSimpleType(bool simpleStructs = true, bool simpleStrings = true) const = 0;
00442 };
00443 
00447 class Handle
00448 {
00449 public:
00450 
00451     enum { MAX_DEPTH = 16 };
00452 
00456     PX_INLINE Handle(::NvParameterized::Interface *iface);
00457 
00461     PX_INLINE Handle(::NvParameterized::Interface &iface);
00462 
00467     PX_INLINE Handle(const ::NvParameterized::Interface &iface);
00468 
00472     PX_INLINE Handle(const Handle &param_handle);
00473 
00477     PX_INLINE Handle(::NvParameterized::Interface &instance, const char *longName);
00478 
00483     PX_INLINE Handle(const ::NvParameterized::Interface &instance, const char *longName);
00484 
00488     PX_INLINE const Definition *parameterDefinition(void) const { return(mParameterDefinition); }
00489     
00493     PX_INLINE int32_t numIndexes(void) const { return(mNumIndexes); }
00494 
00498     PX_INLINE int32_t index(int32_t i) const { return(mIndexList[i]); }
00499 
00503     PX_INLINE int32_t popIndex(int32_t levels = 1);
00504 
00508     PX_INLINE ErrorType set(const ::NvParameterized::Interface *instance, const Definition *root, const char *child_long_name);
00509 
00513     PX_INLINE ErrorType set(const ::NvParameterized::Interface *instance, const char *child_long_name);
00514     
00522     PX_INLINE ErrorType getParameter(const char *longName);
00523 
00530     PX_INLINE ErrorType set(int32_t child_index);
00531 
00537     PX_INLINE ErrorType getChildHandle(const ::NvParameterized::Interface *instance, const char *child_long_name, Handle &outHandle);
00538 
00543     PX_INLINE ErrorType getChildHandle(int32_t index, Handle &outHandle);
00544 
00549     PX_INLINE bool getLongName(char *str, uint32_t max_str_len) const;
00550 
00554     PX_INLINE void reset();
00555 
00559     PX_INLINE bool isConst(void) const { return(mIsConst); }
00560 
00564     PX_INLINE bool isValid(void) const { return(mIsValid); }
00565 
00569     PX_INLINE operator bool() const { return(isValid()); }
00570 
00574     PX_INLINE const void *userData(void) const { return(mUserData); }
00575 
00579     PX_INLINE void *userData(void) { return(mUserData); }
00580 
00584     PX_INLINE void setUserData(void *user_data) { mUserData = user_data; }
00585 
00590     PX_INLINE ::NvParameterized::Interface * getInterface(void) const { return mIsConst ? 0 : mInterface; }
00591 
00595     PX_INLINE const ::NvParameterized::Interface * getConstInterface(void) const { return mInterface; }
00596 
00600     PX_INLINE void setInterface(::NvParameterized::Interface *iface) { mIsConst = false; mInterface = iface; }
00601 
00605     PX_INLINE void setInterface(const ::NvParameterized::Interface *iface) { mIsConst = true; mInterface = (::NvParameterized::Interface *)iface; }
00606 
00617     PX_INLINE ErrorType initParamRef(const char *chosenRefStr = 0, bool doDestroyOld = false);
00618 
00626     PX_INLINE ErrorType valueToStr(char *buf, uint32_t bufSize, const char *&ret);
00627     
00633     PX_INLINE ErrorType strToValue(const char *str, const char **endptr);
00634 
00638     ErrorType resizeArray(int32_t new_size);
00639 
00643     PX_INLINE ErrorType getArraySize(int32_t &size, int32_t dimension = 0) const;
00644 
00648     PX_INLINE ErrorType swapArrayElements(uint32_t firstElement, uint32_t secondElement);
00649 
00650     // These functions wrap the raw(Get|Set)XXXXX() methods.  They deal with
00651     // error handling and casting.
00652     
00656     PX_INLINE ErrorType getParamBool(bool &val) const ;
00657 
00661     PX_INLINE ErrorType setParamBool(bool val) ;
00662 
00666     PX_INLINE ErrorType getParamBoolArray(bool *array, int32_t n, int32_t offset = 0) const ;
00667 
00671     PX_INLINE ErrorType setParamBoolArray(const bool *array, int32_t n, int32_t offset = 0) ;
00672 
00676     PX_INLINE ErrorType getParamString(const char *&val) const ;
00677 
00681     PX_INLINE ErrorType setParamString(const char *val) ;
00682 
00686     PX_INLINE ErrorType getParamStringArray(char **array, int32_t n, int32_t offset = 0) const ;
00687 
00691     PX_INLINE ErrorType setParamStringArray(const char **array, int32_t n, int32_t offset = 0) ;
00692 
00696     PX_INLINE ErrorType getParamEnum(const char *&val) const ;
00697 
00701     PX_INLINE ErrorType setParamEnum(const char *val) ;
00702 
00706     PX_INLINE ErrorType getParamEnumArray(char **array, int32_t n, int32_t offset = 0) const ;
00707 
00711     PX_INLINE ErrorType setParamEnumArray(const char **array, int32_t n, int32_t offset = 0) ;
00712 
00716     PX_INLINE ErrorType getParamRef(::NvParameterized::Interface *&val) const ;
00717 
00721     PX_INLINE ErrorType getParamRefArray(::NvParameterized::Interface **array, int32_t n, int32_t offset = 0) const ;
00722 
00726     PX_INLINE ErrorType setParamRef(::NvParameterized::Interface * val, bool doDestroyOld = false) ;
00727 
00731     PX_INLINE ErrorType setParamRefArray(::NvParameterized::Interface **array, int32_t n, int32_t offset = 0, bool doDestroyOld = false) ;
00732 
00736     PX_INLINE ErrorType getParamI8(int8_t &val) const ;
00737 
00741     PX_INLINE ErrorType setParamI8(int8_t val) ;
00742 
00746     PX_INLINE ErrorType getParamI8Array(int8_t *array, int32_t n, int32_t offset = 0) const ;
00747 
00751     PX_INLINE ErrorType setParamI8Array(const int8_t *val, int32_t n, int32_t offset = 0) ;
00752 
00756     PX_INLINE ErrorType getParamI16(int16_t &val) const ;
00757 
00761     PX_INLINE ErrorType setParamI16(int16_t val) ;
00762 
00766     PX_INLINE ErrorType getParamI16Array(int16_t *array, int32_t n, int32_t offset = 0) const ;
00767 
00771     PX_INLINE ErrorType setParamI16Array(const int16_t *val, int32_t n, int32_t offset = 0) ;
00772 
00776     PX_INLINE ErrorType getParamI32(int32_t &val) const ;
00777 
00781     PX_INLINE ErrorType setParamI32(int32_t val) ;
00782 
00786     PX_INLINE ErrorType getParamI32Array(int32_t *array, int32_t n, int32_t offset = 0) const ;
00787 
00791     PX_INLINE ErrorType setParamI32Array(const int32_t *val, int32_t n, int32_t offset = 0) ;
00792 
00796     PX_INLINE ErrorType getParamI64(int64_t &val) const ;
00797 
00801     PX_INLINE ErrorType setParamI64(int64_t val) ;
00802 
00806     PX_INLINE ErrorType getParamI64Array(int64_t *array, int32_t n, int32_t offset = 0) const ;
00807 
00811     PX_INLINE ErrorType setParamI64Array(const int64_t *val, int32_t n, int32_t offset = 0) ;
00812 
00816     PX_INLINE ErrorType getParamU8(uint8_t &val) const ;
00817 
00821     PX_INLINE ErrorType setParamU8(uint8_t val) ;
00822     
00826     PX_INLINE ErrorType getParamU8Array(uint8_t *array, int32_t n, int32_t offset = 0) const ;
00827 
00831     PX_INLINE ErrorType setParamU8Array(const uint8_t *val, int32_t n, int32_t offset = 0) ;
00832 
00836     PX_INLINE ErrorType getParamU16(uint16_t &val) const ;
00837 
00841     PX_INLINE ErrorType setParamU16(uint16_t val) ;
00842 
00846     PX_INLINE ErrorType getParamU16Array(uint16_t *array, int32_t n, int32_t offset = 0) const ;
00847 
00851     PX_INLINE ErrorType setParamU16Array(const uint16_t *array, int32_t n, int32_t offset = 0) ;
00852 
00856     PX_INLINE ErrorType getParamU32(uint32_t &val) const ;
00857 
00861     PX_INLINE ErrorType setParamU32(uint32_t val) ;
00862 
00866     PX_INLINE ErrorType getParamU32Array(uint32_t *array, int32_t n, int32_t offset = 0) const ;
00867 
00871     PX_INLINE ErrorType setParamU32Array(const uint32_t *array, int32_t n, int32_t offset = 0) ;
00872 
00876     PX_INLINE ErrorType getParamU64(uint64_t &val) const ;
00877 
00881     PX_INLINE ErrorType setParamU64(uint64_t val) ;
00882 
00886     PX_INLINE ErrorType getParamU64Array(uint64_t *array, int32_t n, int32_t offset = 0) const ;
00887 
00891     PX_INLINE ErrorType setParamU64Array(const uint64_t *array, int32_t n, int32_t offset = 0) ;
00892 
00896     PX_INLINE ErrorType getParamF32(float &val) const ;
00897 
00901     PX_INLINE ErrorType setParamF32(float val) ;
00902 
00906     PX_INLINE ErrorType getParamF32Array(float *array, int32_t n, int32_t offset = 0) const ;
00907 
00911     PX_INLINE ErrorType setParamF32Array(const float *array, int32_t n, int32_t offset = 0) ;
00912 
00916     PX_INLINE ErrorType getParamF64(double &val) const ;
00917 
00921     PX_INLINE ErrorType setParamF64(double val) ;
00922 
00926     PX_INLINE ErrorType getParamF64Array(double *array, int32_t n, int32_t offset = 0) const ;
00927 
00931     PX_INLINE ErrorType setParamF64Array(const double *array, int32_t n, int32_t offset = 0) ;
00932 
00936     PX_INLINE ErrorType setParamVec2(const physx::PxVec2 &val) ;
00937 
00941     PX_INLINE ErrorType getParamVec2(physx::PxVec2 &val) const ;
00942 
00946     PX_INLINE ErrorType getParamVec2Array(physx::PxVec2 *array, int32_t n, int32_t offset = 0) const ;
00947 
00951     PX_INLINE ErrorType setParamVec2Array(const physx::PxVec2 *array, int32_t n, int32_t offset = 0) ;
00952 
00956     PX_INLINE ErrorType setParamVec3(const physx::PxVec3 &val) ;
00957 
00961     PX_INLINE ErrorType getParamVec3(physx::PxVec3 &val) const ;
00962 
00966     PX_INLINE ErrorType getParamVec3Array(physx::PxVec3 *array, int32_t n, int32_t offset = 0) const ;
00967 
00971     PX_INLINE ErrorType setParamVec3Array(const physx::PxVec3 *array, int32_t n, int32_t offset = 0) ;
00972 
00976     PX_INLINE ErrorType setParamVec4(const physx::PxVec4 &val) ;
00977 
00981     PX_INLINE ErrorType getParamVec4(physx::PxVec4 &val) const ;
00982 
00986     PX_INLINE ErrorType getParamVec4Array(physx::PxVec4 *array, int32_t n, int32_t offset = 0) const ;
00987 
00991     PX_INLINE ErrorType setParamVec4Array(const physx::PxVec4 *array, int32_t n, int32_t offset = 0) ;
00992 
00996     PX_INLINE ErrorType setParamQuat(const physx::PxQuat &val) ;
00997 
01001     PX_INLINE ErrorType getParamQuat(physx::PxQuat &val) const ;
01002 
01006     PX_INLINE ErrorType getParamQuatArray(physx::PxQuat *array, int32_t n, int32_t offset = 0) const ;
01007 
01011     PX_INLINE ErrorType setParamQuatArray(const physx::PxQuat *array, int32_t n, int32_t offset = 0) ;
01012 
01016     PX_INLINE ErrorType setParamMat33(const physx::PxMat33 &val) ;
01017 
01021     PX_INLINE ErrorType getParamMat33(physx::PxMat33 &val) const ;
01022 
01026     PX_INLINE ErrorType getParamMat33Array(physx::PxMat33 *array, int32_t n, int32_t offset = 0) const ;
01027 
01031     PX_INLINE ErrorType setParamMat33Array(const physx::PxMat33 *array, int32_t n, int32_t offset = 0) ;
01032 
01036     PX_INLINE ErrorType setParamMat44(const physx::PxMat44 &val) ;
01037 
01041     PX_INLINE ErrorType getParamMat44(physx::PxMat44 &val) const ;
01042     
01046     PX_INLINE ErrorType getParamMat44Array(physx::PxMat44 *array, int32_t n, int32_t offset = 0) const ;
01047 
01051     PX_INLINE ErrorType setParamMat44Array(const physx::PxMat44 *array, int32_t n, int32_t offset = 0) ;
01052 
01056     PX_INLINE ErrorType setParamMat34Legacy(const float (&val)[12]) ;
01057 
01061     PX_INLINE ErrorType getParamMat34Legacy(float (&val)[12]) const ;
01062     
01066     PX_INLINE ErrorType getParamMat34LegacyArray(float* array, int32_t n, int32_t offset = 0) const ;
01067 
01071     PX_INLINE ErrorType setParamMat34LegacyArray(const float *array, int32_t n, int32_t offset = 0) ;
01072 
01076     PX_INLINE ErrorType setParamBounds3(const physx::PxBounds3 &val) ;
01077 
01081     PX_INLINE ErrorType getParamBounds3(physx::PxBounds3 &val) const ;
01082 
01086     PX_INLINE ErrorType getParamBounds3Array(physx::PxBounds3 *array, int32_t n, int32_t offset = 0) const ;
01087 
01091     PX_INLINE ErrorType setParamBounds3Array(const physx::PxBounds3 *array, int32_t n, int32_t offset = 0) ;
01092 
01096     PX_INLINE ErrorType setParamTransform(const physx::PxTransform &val) ;
01097 
01101     PX_INLINE ErrorType getParamTransform(physx::PxTransform &val) const ;
01102     
01106     PX_INLINE ErrorType getParamTransformArray(physx::PxTransform *array, int32_t n, int32_t offset = 0) const ;
01107 
01111     PX_INLINE ErrorType setParamTransformArray(const physx::PxTransform *array, int32_t n, int32_t offset = 0) ;
01112 
01113 
01115     template <typename T> PX_INLINE ErrorType setParam(const T &val);
01116 
01118     template <typename T> PX_INLINE ErrorType getParam(T &val) const;
01119 
01121     template <typename T> PX_INLINE ErrorType getParamArray(T *array, int32_t n, int32_t offset = 0) const;
01122 
01124     template <typename T> PX_INLINE ErrorType setParamArray(const T *array, int32_t n, int32_t offset = 0);
01125 
01126 private:
01127 
01128     PX_INLINE void pushIndex(int32_t index);
01129 
01130     bool mIsValid, mIsConst;
01131     int32_t mNumIndexes;
01132     int32_t mIndexList[MAX_DEPTH];
01133     const Definition *mParameterDefinition;
01134     void *mUserData;
01135     ::NvParameterized::Interface    *mInterface;
01136 };
01137 
01139 class SerializationCallback
01140 {
01141 public:
01142     virtual ~SerializationCallback() {}
01144     virtual void preSerialize(void* userData = NULL) = 0;
01145 };
01146 
01147 
01151 class Interface
01152 {
01153     friend class Handle;
01154 public:
01155 
01159     virtual ~Interface() {}
01160 
01164     virtual void destroy() = 0;
01165 
01169     virtual void initDefaults(void) = 0;
01170 
01174     virtual void initRandom(void) = 0;
01175 
01179     virtual const char * className(void) const = 0;
01180     
01187     virtual void setClassName(const char *name) = 0;
01188 
01193     virtual const char * name(void) const = 0;
01194     
01199     virtual void setName(const char *name) = 0;
01200 
01204     virtual uint32_t version(void) const = 0;
01205 
01209     virtual uint16_t getMajorVersion(void) const = 0;
01210 
01214     virtual uint16_t getMinorVersion(void) const = 0;
01215 
01221     virtual const uint32_t * checksum(uint32_t &bits) const = 0;
01222 
01226     virtual int32_t numParameters(void) = 0;
01227 
01231     virtual const Definition *parameterDefinition(int32_t index) = 0;
01232 
01236     virtual const Definition *rootParameterDefinition(void) = 0;
01237 
01241     virtual const Definition *rootParameterDefinition(void) const = 0;
01242 
01250     virtual ErrorType getParameterHandle(const char *longName, Handle  &handle) const = 0;
01251 
01259     virtual ErrorType getParameterHandle(const char *longName, Handle  &handle) = 0;
01260 
01262     virtual void setSerializationCallback(SerializationCallback *cb, void *userData = NULL) = 0;
01263 
01265     virtual ErrorType callPreSerializeCallback() const = 0;
01266 
01267 
01276     virtual bool equals(const ::NvParameterized::Interface &obj, Handle* handlesOfInequality = NULL, uint32_t numHandlesOfInequality = 0, bool doCompareNotSerialized = true) const = 0;
01277 
01284     virtual bool areParamsOK(Handle *invalidHandles = NULL, uint32_t numInvalidHandles = 0) = 0;
01285 
01290     virtual ErrorType copy(const ::NvParameterized::Interface &src) = 0;
01291 
01296     virtual ErrorType clone(Interface *&nullDestObject) const = 0;
01297 
01302     virtual bool checkAlignments() const = 0;
01303 
01304 protected:
01310     virtual ErrorType initParamRef(const Handle &handle, const char *chosenRefStr = 0, bool doDestroyOld = false) = 0;
01311 
01312     // These functions wrap the raw(Get|Set)XXXXX() methods.  They deal with
01313     // error handling and casting.
01314 
01318     virtual ErrorType getParamBool(const Handle &handle, bool &val) const = 0;
01319 
01323     virtual ErrorType setParamBool(const Handle &handle, bool val) = 0;
01324 
01328     virtual ErrorType getParamBoolArray(const Handle &handle, bool *array, int32_t n, int32_t offset = 0) const = 0;
01329 
01333     virtual ErrorType setParamBoolArray(const Handle &handle, const bool *array, int32_t n, int32_t offset = 0) = 0;
01334 
01338     virtual ErrorType getParamString(const Handle &handle, const char *&val) const = 0;
01339 
01343     virtual ErrorType setParamString(const Handle &handle, const char *val) = 0;
01344 
01348     virtual ErrorType getParamStringArray(const Handle &handle, char **array, int32_t n, int32_t offset = 0) const = 0;
01349 
01353     virtual ErrorType setParamStringArray(const Handle &handle, const char **array, int32_t n, int32_t offset = 0) = 0;
01354 
01358     virtual ErrorType getParamEnum(const Handle &handle, const char *&val) const = 0;
01359 
01363     virtual ErrorType setParamEnum(const Handle &handle, const char *val) = 0;
01364 
01368     virtual ErrorType getParamEnumArray(const Handle &handle, char **array, int32_t n, int32_t offset = 0) const = 0;
01369 
01373     virtual ErrorType setParamEnumArray(const Handle &handle, const char **array, int32_t n, int32_t offset = 0) = 0;
01374 
01378     virtual ErrorType getParamRef(const Handle &handle, ::NvParameterized::Interface *&val) const = 0;
01379 
01383     virtual ErrorType getParamRefArray(const Handle &handle, ::NvParameterized::Interface **array, int32_t n, int32_t offset = 0) const = 0;
01384 
01388     virtual ErrorType setParamRef(const Handle &handle, ::NvParameterized::Interface * val, bool doDestroyOld = false) = 0;
01389 
01393     virtual ErrorType setParamRefArray(const Handle &handle, /*const*/ ::NvParameterized::Interface **array, int32_t n, int32_t offset = 0, bool doDestroyOld = false) = 0;
01394 
01398     virtual ErrorType getParamI8(const Handle &handle, int8_t &val) const = 0;
01399 
01403     virtual ErrorType setParamI8(const Handle &handle, int8_t val) = 0;
01404 
01408     virtual ErrorType getParamI8Array(const Handle &handle, int8_t *array, int32_t n, int32_t offset = 0) const = 0;
01409 
01413     virtual ErrorType setParamI8Array(const Handle &handle, const int8_t *val, int32_t n, int32_t offset = 0) = 0;
01414 
01418     virtual ErrorType getParamI16(const Handle &handle, int16_t &val) const = 0;
01419 
01423     virtual ErrorType setParamI16(const Handle &handle, int16_t val) = 0;
01424 
01428     virtual ErrorType getParamI16Array(const Handle &handle, int16_t *array, int32_t n, int32_t offset = 0) const = 0;
01429 
01433     virtual ErrorType setParamI16Array(const Handle &handle, const int16_t *val, int32_t n, int32_t offset = 0) = 0;
01434 
01438     virtual ErrorType getParamI32(const Handle &handle, int32_t &val) const = 0;
01439 
01443     virtual ErrorType setParamI32(const Handle &handle, int32_t val) = 0;
01444 
01448     virtual ErrorType getParamI32Array(const Handle &handle, int32_t *array, int32_t n, int32_t offset = 0) const = 0;
01449 
01453     virtual ErrorType setParamI32Array(const Handle &handle, const int32_t *val, int32_t n, int32_t offset = 0) = 0;
01454 
01458     virtual ErrorType getParamI64(const Handle &handle, int64_t &val) const = 0;
01459 
01463     virtual ErrorType setParamI64(const Handle &handle, int64_t val) = 0;
01464 
01468     virtual ErrorType getParamI64Array(const Handle &handle, int64_t *array, int32_t n, int32_t offset = 0) const = 0;
01469 
01473     virtual ErrorType setParamI64Array(const Handle &handle, const int64_t *val, int32_t n, int32_t offset = 0) = 0;
01474 
01478     virtual ErrorType getParamU8(const Handle &handle, uint8_t &val) const = 0;
01479 
01483     virtual ErrorType setParamU8(const Handle &handle, uint8_t val) = 0;
01484 
01488     virtual ErrorType getParamU8Array(const Handle &handle, uint8_t *array, int32_t n, int32_t offset = 0) const = 0;
01489 
01493     virtual ErrorType setParamU8Array(const Handle &handle, const uint8_t *val, int32_t n, int32_t offset = 0) = 0;
01494 
01498     virtual ErrorType getParamU16(const Handle &handle, uint16_t &val) const = 0;
01499 
01503     virtual ErrorType setParamU16(const Handle &handle, uint16_t val) = 0;
01504 
01508     virtual ErrorType getParamU16Array(const Handle &handle, uint16_t *array, int32_t n, int32_t offset = 0) const = 0;
01509 
01513     virtual ErrorType setParamU16Array(const Handle &handle, const uint16_t *array, int32_t n, int32_t offset = 0) = 0;
01514 
01518     virtual ErrorType getParamU32(const Handle &handle, uint32_t &val) const = 0;
01519 
01523     virtual ErrorType setParamU32(const Handle &handle, uint32_t val) = 0;
01524 
01528     virtual ErrorType getParamU32Array(const Handle &handle, uint32_t *array, int32_t n, int32_t offset = 0) const = 0;
01529 
01533     virtual ErrorType setParamU32Array(const Handle &handle, const uint32_t *array, int32_t n, int32_t offset = 0) = 0;
01534 
01538     virtual ErrorType getParamU64(const Handle &handle, uint64_t &val) const = 0;
01539 
01543     virtual ErrorType setParamU64(const Handle &handle, uint64_t val) = 0;
01544 
01548     virtual ErrorType getParamU64Array(const Handle &handle, uint64_t *array, int32_t n, int32_t offset = 0) const = 0;
01549 
01553     virtual ErrorType setParamU64Array(const Handle &handle, const uint64_t *array, int32_t n, int32_t offset = 0) = 0;
01554 
01558     virtual ErrorType getParamF32(const Handle &handle, float &val) const = 0;
01559 
01563     virtual ErrorType setParamF32(const Handle &handle, float val) = 0;
01564 
01568     virtual ErrorType getParamF32Array(const Handle &handle, float *array, int32_t n, int32_t offset = 0) const = 0;
01569 
01573     virtual ErrorType setParamF32Array(const Handle &handle, const float *array, int32_t n, int32_t offset = 0) = 0;
01574 
01578     virtual ErrorType getParamF64(const Handle &handle, double &val) const = 0;
01579 
01583     virtual ErrorType setParamF64(const Handle &handle, double val) = 0;
01584 
01588     virtual ErrorType getParamF64Array(const Handle &handle, double *array, int32_t n, int32_t offset = 0) const = 0;
01589 
01593     virtual ErrorType setParamF64Array(const Handle &handle, const double *array, int32_t n, int32_t offset = 0) = 0;
01594 
01598     virtual ErrorType setParamVec2(const Handle &handle, const physx::PxVec2 &val) = 0;
01599 
01603     virtual ErrorType getParamVec2(const Handle &handle, physx::PxVec2 &val) const = 0;
01604 
01608     virtual ErrorType getParamVec2Array(const Handle &handle, physx::PxVec2 *array, int32_t n, int32_t offset = 0) const = 0;
01609 
01613     virtual ErrorType setParamVec2Array(const Handle &handle, const physx::PxVec2 *array, int32_t n, int32_t offset = 0) = 0;
01614 
01618     virtual ErrorType setParamVec3(const Handle &handle, const physx::PxVec3 &val) = 0;
01619 
01623     virtual ErrorType getParamVec3(const Handle &handle, physx::PxVec3 &val) const = 0;
01624 
01628     virtual ErrorType getParamVec3Array(const Handle &handle, physx::PxVec3 *array, int32_t n, int32_t offset = 0) const = 0;
01629 
01633     virtual ErrorType setParamVec3Array(const Handle &handle, const physx::PxVec3 *array, int32_t n, int32_t offset = 0) = 0;
01634 
01638     virtual ErrorType setParamVec4(const Handle &handle, const physx::PxVec4 &val) = 0;
01639 
01643     virtual ErrorType getParamVec4(const Handle &handle, physx::PxVec4 &val) const = 0;
01644 
01648     virtual ErrorType getParamVec4Array(const Handle &handle, physx::PxVec4 *array, int32_t n, int32_t offset = 0) const = 0;
01649 
01653     virtual ErrorType setParamVec4Array(const Handle &handle, const physx::PxVec4 *array, int32_t n, int32_t offset = 0) = 0;
01654 
01658     virtual ErrorType setParamQuat(const Handle &handle, const physx::PxQuat &val) = 0;
01659 
01663     virtual ErrorType getParamQuat(const Handle &handle, physx::PxQuat &val) const = 0;
01664 
01668     virtual ErrorType getParamQuatArray(const Handle &handle, physx::PxQuat *array, int32_t n, int32_t offset = 0) const = 0;
01669 
01673     virtual ErrorType setParamQuatArray(const Handle &handle, const physx::PxQuat *array, int32_t n, int32_t offset = 0) = 0;
01674 
01678     virtual ErrorType setParamMat33(const Handle &handle, const physx::PxMat33 &val) = 0;
01679 
01683     virtual ErrorType getParamMat33(const Handle &handle, physx::PxMat33 &val) const = 0;
01684 
01688     virtual ErrorType getParamMat33Array(const Handle &handle, physx::PxMat33 *array, int32_t n, int32_t offset = 0) const = 0;
01689 
01693     virtual ErrorType setParamMat33Array(const Handle &handle, const physx::PxMat33 *array, int32_t n, int32_t offset = 0) = 0;
01694 
01698     virtual ErrorType setParamMat44(const Handle &handle, const physx::PxMat44 &val) = 0;
01699     
01703     virtual ErrorType getParamMat44(const Handle &handle, physx::PxMat44 &val) const = 0;
01704 
01708     virtual ErrorType getParamMat44Array(const Handle &handle, physx::PxMat44 *array, int32_t n, int32_t offset = 0) const = 0;
01709 
01713     virtual ErrorType setParamMat44Array(const Handle &handle, const physx::PxMat44 *array, int32_t n, int32_t offset = 0) = 0;
01714 
01718     virtual ErrorType setParamMat34Legacy(const Handle &handle, const float (&val)[12]) = 0;
01719     
01723     virtual ErrorType getParamMat34Legacy(const Handle &handle, float (&val)[12]) const = 0;
01724 
01728     virtual ErrorType getParamMat34LegacyArray(const Handle &handle, float *array, int32_t n, int32_t offset = 0) const = 0;
01729 
01733     virtual ErrorType setParamMat34LegacyArray(const Handle &handle, const float *array, int32_t n, int32_t offset = 0) = 0;
01734 
01738     virtual ErrorType setParamBounds3(const Handle &handle, const physx::PxBounds3 &val) = 0;
01739 
01743     virtual ErrorType getParamBounds3(const Handle &handle, physx::PxBounds3 &val) const = 0;
01744 
01748     virtual ErrorType getParamBounds3Array(const Handle &handle, physx::PxBounds3 *array, int32_t n, int32_t offset = 0) const = 0;
01749 
01753     virtual ErrorType setParamTransform(const Handle &handle, const physx::PxTransform &val) = 0;
01754     
01758     virtual ErrorType getParamTransform(const Handle &handle, physx::PxTransform &val) const = 0;
01759 
01763     virtual ErrorType getParamTransformArray(const Handle &handle, physx::PxTransform *array, int32_t n, int32_t offset = 0) const = 0;
01764 
01768     virtual ErrorType setParamTransformArray(const Handle &handle, const physx::PxTransform *array, int32_t n, int32_t offset = 0) = 0;
01769 
01773     virtual ErrorType setParamBounds3Array(const Handle &handle, const physx::PxBounds3 *array, int32_t n, int32_t offset = 0) = 0;
01774 
01779     virtual ErrorType valueToStr(const Handle &handle, char *buf, uint32_t bufSize, const char *&ret) = 0;
01780 
01785     virtual ErrorType strToValue(Handle &handle,const char *str, const char **endptr) = 0; // assigns this string to the value
01786 
01791     virtual ErrorType resizeArray(const Handle &array_handle, int32_t new_size) = 0;
01792 
01797     virtual ErrorType getArraySize(const Handle &array_handle, int32_t &size, int32_t dimension = 0) const = 0;
01798 
01803     virtual ErrorType swapArrayElements(const Handle &array_handle, uint32_t firstElement, uint32_t secondElement) = 0;
01804 };
01805 
01806 } // end of namespace
01807 
01808 #include "NvParameterized.inl" // inline the NvParamterHandle methods.
01809 
01810 PX_POP_PACK
01811 
01812 #endif // NV_PARAMETERIZED_H

Generated on Sat Dec 1 2018 15:52:05

Copyright © 2012-2018 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved.