diff options
Diffstat (limited to 'sdk/extensions/import/apexmodules/NvParameterized/include/AbstractSerializer.h')
| -rwxr-xr-x[-rw-r--r--] | sdk/extensions/import/apexmodules/NvParameterized/include/AbstractSerializer.h | 346 |
1 files changed, 173 insertions, 173 deletions
diff --git a/sdk/extensions/import/apexmodules/NvParameterized/include/AbstractSerializer.h b/sdk/extensions/import/apexmodules/NvParameterized/include/AbstractSerializer.h index 1b7b43b..2c01924 100644..100755 --- a/sdk/extensions/import/apexmodules/NvParameterized/include/AbstractSerializer.h +++ b/sdk/extensions/import/apexmodules/NvParameterized/include/AbstractSerializer.h @@ -1,173 +1,173 @@ -// 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. - -#ifndef PX_ABSTRACT_SERIALIZER_H -#define PX_ABSTRACT_SERIALIZER_H - -#include "nvparameterized/NvParameterized.h" -#include "nvparameterized/NvParameterizedTraits.h" -#include "nvparameterized/NvSerializer.h" - -#include "NvSerializerInternal.h" -#include "NvTraitsInternal.h" - -#include "SerializerCommon.h" - -namespace NvParameterized -{ - -// Base for other serializers which takes care of common stuff - -class AbstractSerializer : public Serializer -{ -public: - AbstractSerializer(Traits *traits): - mDoUpdate(true), - mPlatform(GetCurrentPlatform()), - mTraits(traits) {} - - virtual ~AbstractSerializer() {} - - Traits *getTraits() const { return mTraits; } - - //This is used in static Serializer::deserializer - void setTraits(Traits *traits) { mTraits = traits; } - - void setAutoUpdate(bool doUpdate) - { - mDoUpdate = doUpdate; - } - - Serializer::ErrorType peekInplaceAlignment(physx::PxFileBuf& /*stream*/, uint32_t& /*align*/) - { - return Serializer::ERROR_NOT_IMPLEMENTED; - } - - Serializer::ErrorType setTargetPlatform(const SerializePlatform &platform) - { - mPlatform = platform; - return Serializer::ERROR_NONE; //Only pdb cares about platforms - } - - Serializer::ErrorType serialize(physx::PxFileBuf &stream,const NvParameterized::Interface **objs, uint32_t nobjs, bool doMetadata) - { -#ifdef WITHOUT_APEX_SERIALIZATION - PX_UNUSED(stream); - PX_UNUSED(objs); - PX_UNUSED(nobjs); - PX_UNUSED(doMetadata); - - return Serializer::ERROR_NOT_IMPLEMENTED; -#else - - NV_BOOL_ERR_CHECK_WARN_RETURN( - stream.isOpen(), - Serializer::ERROR_STREAM_ERROR, - "Stream not opened" ); - - for(uint32_t i = 0; i < nobjs; ++i) - { - NV_BOOL_ERR_CHECK_WARN_RETURN( - objs[i]->callPreSerializeCallback() == 0, - Serializer::ERROR_PRESERIALIZE_FAILED, - "Preserialize callback failed" ); - } - - return internalSerialize(stream, objs, nobjs, doMetadata); -#endif - } - - using Serializer::deserialize; - virtual Serializer::ErrorType deserialize(physx::PxFileBuf &stream, Serializer::DeserializedData &res, bool &isUpdated) - { - NV_BOOL_ERR_CHECK_WARN_RETURN( - stream.isOpen(), - Serializer::ERROR_STREAM_ERROR, - "Stream not opened" ); - - isUpdated = false; - bool doesNeedUpdate = true; - NV_ERR_CHECK_RETURN( internalDeserialize(stream, res, doesNeedUpdate) ); - return doesNeedUpdate && mDoUpdate ? upgrade(res, isUpdated) : Serializer::ERROR_NONE; - } - - using Serializer::deserializeInplace; - Serializer::ErrorType deserializeInplace(void *data, uint32_t dataLen, Serializer::DeserializedData &res, bool &isUpdated) - { - isUpdated = false; - bool doesNeedUpdate = true; - NV_ERR_CHECK_RETURN( internalDeserializeInplace(data, dataLen, res, doesNeedUpdate) ); - return doesNeedUpdate && mDoUpdate ? upgrade(res, isUpdated) : Serializer::ERROR_NONE; - } - -protected: - - bool mDoUpdate; - SerializePlatform mPlatform; - Traits *mTraits; - -#ifndef WITHOUT_APEX_SERIALIZATION - virtual Serializer::ErrorType internalSerialize( - physx::PxFileBuf &stream, - const NvParameterized::Interface **objs, - uint32_t n, - bool doMetadata) = 0; -#endif - - // doesNeedUpdate allows serializer to avoid costly depth-first scanning of included refs - virtual Serializer::ErrorType internalDeserialize( - physx::PxFileBuf &stream, - Serializer::DeserializedData &res, - bool &doesNeedUpdate) = 0; - - // See note for internalDeserialize - virtual Serializer::ErrorType internalDeserializeInplace( - void * /*data*/, - uint32_t /*dataLen*/, - Serializer::DeserializedData & /*res*/, - bool & /*doesNeedUpdate*/) - { - DEBUG_ALWAYS_ASSERT(); - return Serializer::ERROR_NOT_IMPLEMENTED; - } - -private: - Serializer::ErrorType upgrade(Serializer::DeserializedData &res, bool &isUpdated) - { - //Upgrade legacy objects - NV_BOOL_ERR_CHECK_WARN_RETURN( - UpgradeLegacyObjects(res, isUpdated, mTraits), - Serializer::ERROR_CONVERSION_FAILED, - "Upgrading legacy objects failed" ); - - return Serializer::ERROR_NONE; - } -}; - -} // namespace NvParameterized - -#endif +// 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.
+
+#ifndef PX_ABSTRACT_SERIALIZER_H
+#define PX_ABSTRACT_SERIALIZER_H
+
+#include "nvparameterized/NvParameterized.h"
+#include "nvparameterized/NvParameterizedTraits.h"
+#include "nvparameterized/NvSerializer.h"
+
+#include "NvSerializerInternal.h"
+#include "NvTraitsInternal.h"
+
+#include "SerializerCommon.h"
+
+namespace NvParameterized
+{
+
+// Base for other serializers which takes care of common stuff
+
+class AbstractSerializer : public Serializer
+{
+public:
+ AbstractSerializer(Traits *traits):
+ mDoUpdate(true),
+ mPlatform(GetCurrentPlatform()),
+ mTraits(traits) {}
+
+ virtual ~AbstractSerializer() {}
+
+ Traits *getTraits() const { return mTraits; }
+
+ //This is used in static Serializer::deserializer
+ void setTraits(Traits *traits) { mTraits = traits; }
+
+ void setAutoUpdate(bool doUpdate)
+ {
+ mDoUpdate = doUpdate;
+ }
+
+ Serializer::ErrorType peekInplaceAlignment(physx::PxFileBuf& /*stream*/, uint32_t& /*align*/)
+ {
+ return Serializer::ERROR_NOT_IMPLEMENTED;
+ }
+
+ Serializer::ErrorType setTargetPlatform(const SerializePlatform &platform)
+ {
+ mPlatform = platform;
+ return Serializer::ERROR_NONE; //Only pdb cares about platforms
+ }
+
+ Serializer::ErrorType serialize(physx::PxFileBuf &stream,const NvParameterized::Interface **objs, uint32_t nobjs, bool doMetadata)
+ {
+#ifdef WITHOUT_APEX_SERIALIZATION
+ PX_UNUSED(stream);
+ PX_UNUSED(objs);
+ PX_UNUSED(nobjs);
+ PX_UNUSED(doMetadata);
+
+ return Serializer::ERROR_NOT_IMPLEMENTED;
+#else
+
+ NV_BOOL_ERR_CHECK_WARN_RETURN(
+ stream.isOpen(),
+ Serializer::ERROR_STREAM_ERROR,
+ "Stream not opened" );
+
+ for(uint32_t i = 0; i < nobjs; ++i)
+ {
+ NV_BOOL_ERR_CHECK_WARN_RETURN(
+ objs[i]->callPreSerializeCallback() == 0,
+ Serializer::ERROR_PRESERIALIZE_FAILED,
+ "Preserialize callback failed" );
+ }
+
+ return internalSerialize(stream, objs, nobjs, doMetadata);
+#endif
+ }
+
+ using Serializer::deserialize;
+ virtual Serializer::ErrorType deserialize(physx::PxFileBuf &stream, Serializer::DeserializedData &res, bool &isUpdated)
+ {
+ NV_BOOL_ERR_CHECK_WARN_RETURN(
+ stream.isOpen(),
+ Serializer::ERROR_STREAM_ERROR,
+ "Stream not opened" );
+
+ isUpdated = false;
+ bool doesNeedUpdate = true;
+ NV_ERR_CHECK_RETURN( internalDeserialize(stream, res, doesNeedUpdate) );
+ return doesNeedUpdate && mDoUpdate ? upgrade(res, isUpdated) : Serializer::ERROR_NONE;
+ }
+
+ using Serializer::deserializeInplace;
+ Serializer::ErrorType deserializeInplace(void *data, uint32_t dataLen, Serializer::DeserializedData &res, bool &isUpdated)
+ {
+ isUpdated = false;
+ bool doesNeedUpdate = true;
+ NV_ERR_CHECK_RETURN( internalDeserializeInplace(data, dataLen, res, doesNeedUpdate) );
+ return doesNeedUpdate && mDoUpdate ? upgrade(res, isUpdated) : Serializer::ERROR_NONE;
+ }
+
+protected:
+
+ bool mDoUpdate;
+ SerializePlatform mPlatform;
+ Traits *mTraits;
+
+#ifndef WITHOUT_APEX_SERIALIZATION
+ virtual Serializer::ErrorType internalSerialize(
+ physx::PxFileBuf &stream,
+ const NvParameterized::Interface **objs,
+ uint32_t n,
+ bool doMetadata) = 0;
+#endif
+
+ // doesNeedUpdate allows serializer to avoid costly depth-first scanning of included refs
+ virtual Serializer::ErrorType internalDeserialize(
+ physx::PxFileBuf &stream,
+ Serializer::DeserializedData &res,
+ bool &doesNeedUpdate) = 0;
+
+ // See note for internalDeserialize
+ virtual Serializer::ErrorType internalDeserializeInplace(
+ void * /*data*/,
+ uint32_t /*dataLen*/,
+ Serializer::DeserializedData & /*res*/,
+ bool & /*doesNeedUpdate*/)
+ {
+ DEBUG_ALWAYS_ASSERT();
+ return Serializer::ERROR_NOT_IMPLEMENTED;
+ }
+
+private:
+ Serializer::ErrorType upgrade(Serializer::DeserializedData &res, bool &isUpdated)
+ {
+ //Upgrade legacy objects
+ NV_BOOL_ERR_CHECK_WARN_RETURN(
+ UpgradeLegacyObjects(res, isUpdated, mTraits),
+ Serializer::ERROR_CONVERSION_FAILED,
+ "Upgrading legacy objects failed" );
+
+ return Serializer::ERROR_NONE;
+ }
+};
+
+} // namespace NvParameterized
+
+#endif
|