// Copyright (c) 2020-2021, NVIDIA CORPORATION. All rights reserved.
//
// NVIDIA CORPORATION and its licensors retain all intellectual property
// and proprietary rights in and to this software, 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.
//
#pragma once

#include <cstdint>
#include <stddef.h>


namespace carb
{ 
namespace flatcache
{

struct StageInProgressId
{
    uint64_t id;
};

struct StageAtTimeIntervalId
{
    uint64_t id;
};

struct StageWithHistoryId
{
    uint64_t id;
};

struct PrimBucketListId
{
    uint64_t id;
};

struct ListenerId
{
    size_t id;

    bool operator==(ListenerId other) const
    {
        return id == other.id;
    }
};

struct ListenerIdHasher
{
    size_t operator()(const ListenerId& key) const
    {
        return key.id;
    }
};

enum class PlatformId : uint8_t
{
    Global = 0,
    // add additional platforms here
    Count,
};

}
}
