ISerializer.h#

Fully qualified name: carb/dictionary/ISerializer.h

File members: carb/dictionary/ISerializer.h

// SPDX-FileCopyrightText: Copyright (c) 2019-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: LicenseRef-NvidiaProprietary
//
// NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
// property and proprietary rights in and to this material, related
// documentation and any modifications thereto. Any use, reproduction,
// disclosure or distribution of this material and related documentation
// without an express license agreement from NVIDIA CORPORATION or
// its affiliates is strictly prohibited.

#pragma once

#include "../Defines.h"
#include "../Interface.h"
#include "../dictionary/IDictionary.h"

#include <cstdint>

namespace carb
{
namespace dictionary
{

using SerializerOptions = uint32_t;

constexpr SerializerOptions fSerializerOptionIncludeDictionaryName = 1;

constexpr SerializerOptions fSerializerOptionMakePretty = (1 << 1);

constexpr SerializerOptions fSerializerOptionEmptyDictionaryIsArray = (1 << 2);

constexpr SerializerOptions fSerializerOptionSerializeInfinityAsNull = (1 << 3);

CARB_DEPRECATED("Use fSerializerOptionIncludeDictionaryName instead.")
constexpr SerializerOptions fSerializerOptionIncludeCollectionName = fSerializerOptionIncludeDictionaryName;
CARB_DEPRECATED("Use fSerializerOptionIncludeDictionaryName instead.")
constexpr SerializerOptions kSerializerOptionIncludeDictionaryName = fSerializerOptionIncludeDictionaryName;
CARB_DEPRECATED("Use fSerializerOptionMakePretty instead.")
constexpr SerializerOptions kSerializerOptionMakePretty = fSerializerOptionMakePretty;
CARB_DEPRECATED("Use fSerializerOptionEmptyDictionaryIsArray instead.")
constexpr SerializerOptions kSerializerOptionEmptyDictionaryIsArray = fSerializerOptionEmptyDictionaryIsArray;
CARB_DEPRECATED("Use fSerializerOptionSerializeInfinityAsNull instead.")
constexpr SerializerOptions kSerializerOptionSerializeInfinityAsNull = fSerializerOptionSerializeInfinityAsNull;
CARB_DEPRECATED("Use fSerializerOptionIncludeDictionaryName instead.")
constexpr SerializerOptions kSerializerOptionIncludeCollectionName = fSerializerOptionIncludeDictionaryName;
/* @} **/

using DeserializerOptions = uint32_t;

constexpr DeserializerOptions kDeserializerOptionNone = 0;

constexpr DeserializerOptions fDeserializerOptionInSitu = (1 << 0);

// 'deprecatedCreateDictionaryFromStringBuffer' is deprecated
CARB_IGNOREWARNING_CLANG_WITH_PUSH("-Wdeprecated-declarations")
struct ISerializer
{
    CARB_PLUGIN_INTERFACE("carb::dictionary::ISerializer", 1, 1)

    CARB_DEPRECATED("use the new createDictionaryFromStringBuffer")
    dictionary::Item*(CARB_ABI* deprecatedCreateDictionaryFromStringBuffer)(const char* serializedString);

    const char*(CARB_ABI* createStringBufferFromDictionary)(const dictionary::Item* dictionary,
                                                            SerializerOptions serializerOptions);

    void(CARB_ABI* destroyStringBuffer)(const char* serializedString);

    dictionary::Item*(CARB_ABI* internalCreateDictionaryFromStringBuffer)(const char* string,
                                                                          size_t len,
                                                                          DeserializerOptions options);

    dictionary::Item* createDictionaryFromStringBuffer(const char* string,
                                                       size_t len = size_t(-1),
                                                       DeserializerOptions options = kDeserializerOptionNone)
    {
        return internalCreateDictionaryFromStringBuffer(string, len, options);
    }
};
CARB_IGNOREWARNING_CLANG_POP

} // namespace dictionary
} // namespace carb