omni/core/ITypeFactory.gen.h

File members: omni/core/ITypeFactory.gen.h

// Copyright (c) 2020-2023, 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.
//
// --------- Warning: This is a build system generated file. ----------
//

#include <omni/core/OmniAttr.h>
#include <omni/core/Interface.h>
#include <omni/core/ResultError.h>

#include <functional>
#include <utility>
#include <type_traits>

#ifndef OMNI_BIND_INCLUDE_INTERFACE_IMPL

template <>
class omni::core::Generated<omni::core::ITypeFactory_abi> : public omni::core::ITypeFactory_abi
{
public:
    OMNI_PLUGIN_INTERFACE("omni::core::ITypeFactory")

    omni::core::ObjectPtr<omni::core::IObject> createType(omni::core::TypeId id,
                                                          const char* moduleName,
                                                          uint32_t implVersion) noexcept;

    omni::core::Result registerInterfaceImplementationsFromModule(const char* moduleName,
                                                                  omni::core::TypeFactoryLoadFlags flags) noexcept;

    omni::core::Result unregisterInterfaceImplementationsFromModule(const char* moduleName) noexcept;

    void registerInterfaceImplementations(const omni::core::InterfaceImplementation* implementations,
                                          uint32_t implementationsCount,
                                          omni::core::TypeFactoryLoadFlags flags) noexcept;

    const char* getTypeIdName(omni::core::TypeId id) noexcept;

    void setInterfaceDefaults(omni::core::TypeId interfaceId,
                              omni::core::TypeId implId,
                              const char* moduleName,
                              uint32_t implVersion) noexcept;

    omni::core::Result getInterfaceDefaults(omni::core::TypeId interfaceId,
                                            omni::core::TypeId* outImplId,
                                            char* outModuleName,
                                            uint32_t* inOutModuleNameCount,
                                            uint32_t* outImplVersion) noexcept;
};

#endif

#ifndef OMNI_BIND_INCLUDE_INTERFACE_DECL

inline omni::core::ObjectPtr<omni::core::IObject> omni::core::Generated<omni::core::ITypeFactory_abi>::createType(
    omni::core::TypeId id, const char* moduleName, uint32_t implVersion) noexcept
{
    return omni::core::steal(createType_abi(id, moduleName, implVersion));
}

inline omni::core::Result omni::core::Generated<omni::core::ITypeFactory_abi>::registerInterfaceImplementationsFromModule(
    const char* moduleName, omni::core::TypeFactoryLoadFlags flags) noexcept
{
    return registerInterfaceImplementationsFromModule_abi(moduleName, flags);
}

inline omni::core::Result omni::core::Generated<omni::core::ITypeFactory_abi>::unregisterInterfaceImplementationsFromModule(
    const char* moduleName) noexcept
{
    return unregisterInterfaceImplementationsFromModule_abi(moduleName);
}

inline void omni::core::Generated<omni::core::ITypeFactory_abi>::registerInterfaceImplementations(
    const omni::core::InterfaceImplementation* implementations,
    uint32_t implementationsCount,
    omni::core::TypeFactoryLoadFlags flags) noexcept
{
    registerInterfaceImplementations_abi(implementations, implementationsCount, flags);
}

inline const char* omni::core::Generated<omni::core::ITypeFactory_abi>::getTypeIdName(omni::core::TypeId id) noexcept
{
    return getTypeIdName_abi(id);
}

inline void omni::core::Generated<omni::core::ITypeFactory_abi>::setInterfaceDefaults(omni::core::TypeId interfaceId,
                                                                                      omni::core::TypeId implId,
                                                                                      const char* moduleName,
                                                                                      uint32_t implVersion) noexcept
{
    setInterfaceDefaults_abi(interfaceId, implId, moduleName, implVersion);
}

inline omni::core::Result omni::core::Generated<omni::core::ITypeFactory_abi>::getInterfaceDefaults(
    omni::core::TypeId interfaceId,
    omni::core::TypeId* outImplId,
    char* outModuleName,
    uint32_t* inOutModuleNameCount,
    uint32_t* outImplVersion) noexcept
{
    return getInterfaceDefaults_abi(interfaceId, outImplId, outModuleName, inOutModuleNameCount, outImplVersion);
}

#endif

#undef OMNI_BIND_INCLUDE_INTERFACE_DECL
#undef OMNI_BIND_INCLUDE_INTERFACE_IMPL
static_assert(std::is_standard_layout<omni::core::InterfaceImplementation>::value,
              "omni::core::InterfaceImplementation must be standard layout to be used in ONI ABI");