27#ifndef PX_PVD_OBJECT_MODEL_BASE_TYPES_H
28#define PX_PVD_OBJECT_MODEL_BASE_TYPES_H
33#include "foundation/PxAssert.h"
44inline const char* nonNull(
const char* str)
46 return str ? str :
"";
51inline bool safeStrEq(
const char* lhs,
const char* rhs)
53 return ::strcmp(nonNull(lhs), nonNull(rhs)) == 0;
57inline bool isMeaningful(
const char* str)
59 return *(nonNull(str)) > 0;
62inline uint32_t safeStrLen(
const char* str)
65 return static_cast<uint32_t>(strlen(str));
72 ObjectRef(int32_t iid = -1) : mInstanceId(iid)
75 operator int32_t()
const
81 return mInstanceId > 0;
91 U32Array4(uint32_t d0, uint32_t d1, uint32_t d2, uint32_t d3) : mD0(d0), mD1(d1), mD2(d2), mD3(d3)
94 U32Array4() : mD0(0), mD1(0), mD2(0), mD3(0)
100typedef const char* String;
101typedef void* VoidPtr;
102typedef double PvdF64;
104typedef int64_t PvdI64;
105typedef uint64_t PvdU64;
106typedef int32_t PvdI32;
107typedef uint32_t PvdU32;
108typedef int16_t PvdI16;
109typedef uint16_t PvdU16;
111typedef uint8_t PvdU8;
119 PvdColor(uint8_t _r, uint8_t _g, uint8_t _b, uint8_t _a = 255) : r(_r), g(_g), b(_b), a(_a)
122 PvdColor() : r(0), g(0), b(0), a(255)
127 uint8_t* valPtr =
reinterpret_cast<uint8_t*
>(&abgr);
141 operator uint32_t()
const
147#define DECLARE_TYPES \
148DECLARE_BASE_PVD_TYPE(PvdI8) \
149DECLARE_BASE_PVD_TYPE(PvdU8) \
150DECLARE_BASE_PVD_TYPE(PvdI16) \
151DECLARE_BASE_PVD_TYPE(PvdU16) \
152DECLARE_BASE_PVD_TYPE(PvdI32) \
153DECLARE_BASE_PVD_TYPE(PvdU32) \
154DECLARE_BASE_PVD_TYPE(PvdI64) \
155DECLARE_BASE_PVD_TYPE(PvdU64) \
156DECLARE_BASE_PVD_TYPE(PvdF32) \
157DECLARE_BASE_PVD_TYPE(PvdF64) \
158DECLARE_BASE_PVD_TYPE(PvdBool) \
159DECLARE_BASE_PVD_TYPE(PvdColor) \
160DECLARE_BASE_PVD_TYPE(String) \
161DECLARE_BASE_PVD_TYPE(StringHandle) \
162DECLARE_BASE_PVD_TYPE(ObjectRef) \
163DECLARE_BASE_PVD_TYPE(VoidPtr) \
164DECLARE_BASE_PVD_TYPE(PxVec2) \
165DECLARE_BASE_PVD_TYPE(PxVec3) \
166DECLARE_BASE_PVD_TYPE(PxVec4) \
167DECLARE_BASE_PVD_TYPE(PxBounds3) \
168DECLARE_BASE_PVD_TYPE(PxQuat) \
169DECLARE_BASE_PVD_TYPE(PxTransform) \
170DECLARE_BASE_PVD_TYPE(PxMat33) \
171DECLARE_BASE_PVD_TYPE(PxMat44) \
172DECLARE_BASE_PVD_TYPE(U32Array4)
181#define DECLARE_BASE_PVD_TYPE(type) type,
184#undef DECLARE_BASE_PVD_TYPE
199 return safeStrEq(mNamespace, other.mNamespace) && safeStrEq(mName, other.mName);
207 NamedValue(String nm =
"", uint32_t val = 0) : mName(nm), mValue(val)
217template <PvdBaseType::Enum>
231#define DECLARE_BASE_PVD_TYPE(type) \
233 struct BaseDataTypeToTypeMap<type> \
237 BaseTypeEnum = PvdBaseType::type \
241 struct BaseDataTypeToTypeMap<const type&> \
245 BaseTypeEnum = PvdBaseType::type \
249 struct BaseTypeToDataTypeMap<PvdBaseType::type> \
251 typedef type TDataType; \
254 struct PvdDataTypeToNamespacedNameMap<type> \
256 NamespacedName Name; \
257 PvdDataTypeToNamespacedNameMap<type>() : Name("physx3", #type) \
262 struct PvdDataTypeToNamespacedNameMap<const type&> \
264 NamespacedName Name; \
265 PvdDataTypeToNamespacedNameMap<const type&>() : Name("physx3", #type) \
271#undef DECLARE_BASE_PVD_TYPE
273template <
typename TDataType>
274inline int32_t getPvdTypeForType()
278template <
typename TDataType>
279inline NamespacedName getPvdNamespacedNameForType()
281 return PvdDataTypeToNamespacedNameMap<TDataType>().Name;
284#define DEFINE_PVD_TYPE_NAME_MAP(type, ns, name) \
286 struct PvdDataTypeToNamespacedNameMap<type> \
288 NamespacedName Name; \
289 PvdDataTypeToNamespacedNameMap<type>() : Name(ns, name) \
294#define DEFINE_PVD_TYPE_ALIAS(newType, oldType) \
296 struct PvdDataTypeToNamespacedNameMap<newType> \
298 NamespacedName Name; \
299 PvdDataTypeToNamespacedNameMap<newType>() : Name(PvdDataTypeToNamespacedNameMap<oldType>().Name) \
304DEFINE_PVD_TYPE_ALIAS(
const void*,
void*)
311 ArrayData(uint8_t* beg = NULL, uint8_t* end = NULL, uint8_t* cap = NULL) : mBegin(beg), mEnd(end), mCapacity(cap)
322 uint32_t byteCapacity()
324 return static_cast<uint32_t
>(mCapacity - mBegin);
326 uint32_t byteSize()
const
328 return static_cast<uint32_t
>(mEnd - mBegin);
330 uint32_t numberOfItems(uint32_t objectByteSize)
333 return byteSize() / objectByteSize;
339 mBegin = mEnd = mCapacity = 0;
350 DataRef(
const T* b, uint32_t count) : mBegin(b), mEnd(b + count)
353 DataRef(
const T* b = NULL,
const T* e = NULL) : mBegin(b), mEnd(e)
365 uint32_t size()
const
367 return static_cast<uint32_t
>(mEnd - mBegin);
369 const T* begin()
const
377 const T& operator[](uint32_t idx)
const
379 PX_ASSERT(idx < size());
382 const T& back()
const
384 PX_ASSERT(mEnd > mBegin);
402 String mPropertyName;
405 uint32_t mMessageOffset;
410 : mPropertyName(propName), mDatatypeName(dtype), mMessageOffset(msgOffset), mByteSize(byteSize)
419DEFINE_PVD_TYPE_NAME_MAP(
PvdUserRenderer,
"_debugger_",
"PvdUserRenderer")
Definition PxPvdObjectModelBaseTypes.h:345
Definition PxPvdUserRenderer.h:56
uint32 uint32_t
Definition fwd.hpp:131
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Definition PxPvdObjectModelBaseTypes.h:307
Definition PxPvdObjectModelBaseTypes.h:214
Definition PxPvdObjectModelBaseTypes.h:219
Definition PxPvdObjectModelBaseTypes.h:204
Definition PxPvdObjectModelBaseTypes.h:188
Definition PxPvdObjectModelMetaData.h:308
Definition PxPvdObjectModelBaseTypes.h:69
Definition PxPvdObjectModelBaseTypes.h:401
Definition PxPvdObjectModelBaseTypes.h:390
Definition PxPvdObjectModelBaseTypes.h:175
Definition PxPvdObjectModelBaseTypes.h:114
Definition PxPvdObjectModelBaseTypes.h:226
Definition PxPvdObjectModelBaseTypes.h:136
Definition PxPvdObjectModelBaseTypes.h:86