1//
2// Redistribution and use in source and binary forms, with or without
3// modification, are permitted provided that the following conditions
4// are met:
5// * Redistributions of source code must retain the above copyright
6// notice, this list of conditions and the following disclaimer.
7// * Redistributions in binary form must reproduce the above copyright
8// notice, this list of conditions and the following disclaimer in the
9// documentation and/or other materials provided with the distribution.
10// * Neither the name of NVIDIA CORPORATION nor the names of its
11// contributors may be used to endorse or promote products derived
12// from this software without specific prior written permission.
13//
14// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
15// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25//
26// Copyright (c) 2008-2021 NVIDIA Corporation. All rights reserved.
27// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
28// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
29
30
31#ifndef PX_BINARY_CONVERTER_H
32#define PX_BINARY_CONVERTER_H
33/** \addtogroup extensions
34@{
35*/
36
37#include "common/PxPhysXCommonConfig.h"
38
39#if !PX_DOXYGEN
40namespace physx
41{
42#endif
43
44struct PxConverterReportMode
45{
46 enum Enum
47 {
48 eNONE, //!< Silent mode. If enabled, no information is sent to the error stream.
49 eNORMAL, //!< Normal mode. If enabled, only important information is sent to the error stream.
50 eVERBOSE //!< Verbose mode. If enabled, detailed information is sent to the error stream.
51 };
52};
53
54
55/**
56\brief Binary converter for serialized streams.
57
58The binary converter class is targeted at converting binary streams from authoring platforms,
59such as windows, osx or linux to any game runtime platform supported by PhysX. Particularly
60it is currently not supported to run the converter on a platforms that has an endian mismatch
61with the platform corresponding to the source binary file and source meta data.
62
63If you want to use multiple threads for batch conversions, please create one instance
64of this class for each thread.
65
66@see PxSerialization.createBinaryConverter
67*/
68class PxBinaryConverter
69{
70public:
71
72 /**
73 \brief Releases binary converter
74 */
75 virtual void release() = 0;
76
77 /**
78 \brief Sets desired report mode.
79
80 \param[in] mode Report mode
81 */
82 virtual void setReportMode(PxConverterReportMode::Enum mode) = 0;
83
84 /**
85 \brief Setups source and target meta-data streams
86
87 The source meta data provided needs to have the same endianness as the platform the converter is run on.
88 The meta data needs to be set before calling the conversion method.
89
90 \param[in] srcMetaData Source platform's meta-data stream
91 \param[in] dstMetaData Target platform's meta-data stream
92
93 \return True if success
94
95 @see PxSerialization::dumpBinaryMetaData
96 */
97 virtual bool setMetaData(PxInputStream& srcMetaData, PxInputStream& dstMetaData) = 0;
98
99 /**
100 \brief Test utility function to compare two sets of meta data.
101
102 The meta data needs to be set before calling the compareMetaData method.
103 This method will issue PxErrorCode::eDEBUG_INFO messages if mismatches are encountered.
104
105 \return True if meta data is equivalend
106 */
107 virtual bool compareMetaData() const = 0;
108
109 /**
110 \brief Converts binary stream from source platform to target platform
111
112 The converter needs to be configured with source and destination meta data before calling the conversion method.
113 The source meta data needs to correspond to the same platform as the source binary data.
114
115 \param[in] srcStream Source stream
116 \param[in] srcSize Number of bytes to convert
117 \param[in] targetStream Target stream
118
119 \return True if success
120 */
121 virtual bool convert(PxInputStream& srcStream, PxU32 srcSize, PxOutputStream& targetStream) = 0;
122
123
124protected:
125 PxBinaryConverter() {}
126 virtual ~PxBinaryConverter() {}
127};
128
129#if !PX_DOXYGEN
130} // namespace physx
131#endif
132
133/** @} */
134#endif
135

source code of qtquick3dphysics/src/3rdparty/PhysX/include/extensions/PxBinaryConverter.h