Interface.h#
Fully qualified name: carb/Interface.h
File members: carb/Interface.h
// SPDX-FileCopyrightText: Copyright (c) 2018-2026 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 "Version.h"
namespace carb
{
struct InterfaceDesc
{
const char* name = nullptr;
Version version = { 0, 0 };
};
CARB_ASSERT_INTEROP_SAFE(InterfaceDesc);
} // namespace carb
#define CARB_PLUGIN_INTERFACE(name, major, minor) \
\
static constexpr carb::InterfaceDesc getInterfaceDesc() noexcept \
{ \
return carb::InterfaceDesc{ name, { major, minor } }; \
} \
\
static constexpr carb::InterfaceDesc getLatestInterfaceDesc() noexcept \
{ \
return carb::InterfaceDesc{ name, { major, minor } }; \
}
#define CARB_HEXVERSION(major, minor) (((major) << 16) | (minor))
#if defined DOXYGEN_BUILD
# define CARB_VERSION_ATLEAST(ver, major, minor) (1)
# define CARB_MAJOR_VERSION(ver, major) (1)
#else
# define CARB_VERSION_ATLEAST(ver, major, minor) ((ver) >= CARB_HEXVERSION(major, minor))
# define CARB_MAJOR_VERSION(ver, major) (((ver) >> 16) == (major))
#endif
#define CARB_PLUGIN_INTERFACE_EX(name, latestVersion, currentVersion) \
static_assert((latestVersion) >= (currentVersion), "CARB_PLUGIN_INTERFACE_EX has mismatched versions"); \
\
static constexpr carb::InterfaceDesc getInterfaceDesc() noexcept \
{ \
return carb::InterfaceDesc{ name, carb::fromHexVersion(currentVersion) }; \
} \
\
static constexpr carb::InterfaceDesc getLatestInterfaceDesc() noexcept \
{ \
return carb::InterfaceDesc{ name, carb::fromHexVersion(latestVersion) }; \
}