Defined in omni/core/ITypeFactory.h

struct InterfaceImplementation

Describes a mapping from a chunk of code (i.e. implementation) to one or more interfaces.

Implementation are concrete classes that implement one or more interfaces.

This data structure is essential to the Omniverse type system, as it maps type names (i.e. strings) to chunks of code that can instantiate those types. With this, the Omniverse type system is able to map interface type names to implementations and implementation type names to specific implementations.

Public Members

const char *name

Name of the implementation. This must not be the name of an interface.

InterfaceImplementationCreateFn *createFn

Function that instantiates the implementation.

This function can be called concurrently on multiple threads

uint32_t version

Implementations have versions. By default, ITypeFactory will pick the implementation with the highest version number. This behavior can be overridden (see ITypeFactory).

This version number is not an “interface” version number. Interfaces are not versioned. Implementations, however, can be versioned. An implementation’s version number is used by ITypeFactory to pick the best implementation when instantiating an interface.

const char **interfacesImplemented

List of interfaces, that when requested to be instantiated by ITypeFactory (e.g. omni::core::createType()), should instantiate this implementation. Not all implemented interfaces should be listed here, only those interfaces you wish to instantiate via omni::core::createType().

Said differently, this is a list of interfaces, that when invoked with omni::core::createType(), should instantiate this implementation.

Which interfaces should be listed here is subtle topic. See Omniverse Native Interfaces for more details.

uint32_t interfacesImplementedCount

Number of interfaces implemented (size of interfacesImplemented). Pro-tip: Use CARB_COUNTOF32(interfacesImplemented).