NVIDIA NvNeural SDK  2022.2
GPU inference framework for NVIDIA Nsight Deep Learning Designer
nvneural::refobj::RefObjectBase< ParameterList > Struct Template Reference

Parameterized base class implementing common IRefObject operations. More...

#include <nvneural/RefObject.h>

Inheritance diagram for nvneural::refobj::RefObjectBase< ParameterList >:

Public Member Functions

IRefObject::RefCount addRef () const noexcept
 Increment the object's reference count. More...
 
const void * queryInterface (IRefObject::TypeId interfaceId) const noexcept
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
void * queryInterface (IRefObject::TypeId interfaceId) noexcept
 Retrieves a new object interface pointer. More...
 
 RefObjectBase ()
 Default constructor. Logs object creation.
 
IRefObject::RefCount release () const noexcept
 Decrements the object's reference count and destroys the object if the reference count reaches zero. More...
 

Detailed Description

template<typename... ParameterList>
struct nvneural::refobj::RefObjectBase< ParameterList >

Parameterized base class implementing common IRefObject operations.

Deriving from this base class is not required for ABI compatibility with IRefObject, but it is highly encouraged. Feel free to diverge if you need custom behavior (e.g., private inheritance) or other traits not provided in this version of the framework.

This class inherits publicly from all types referenced in Implements<>.

This class is thread-safe. Operations affecting the reference count are implemented using atomics.

Example 1: Simple object implementing ILibraryContext

class MyContext : public RefObjectBase<Implements<ILibraryContext>>
{
public:
explicit MyContext(void* someParameter);
~MyContext() = default;
ILibraryContext::LibraryId libraryId() const noexcept override;
NeuralResult synchronize(INetworkBackend*) noexcept override;
NeuralResult bindCurrentThread(INetworkBackend*) noexcept override;
};
std::uint64_t LibraryId
Library IDs should be generated randomly similar to interface IDs.
Definition: CoreTypes.h:577
RefObjectBase()
Default constructor. Logs object creation.
Definition: RefObject.h:338

Example 2: Simple object implementing ILibraryContext and IApiVersionQuery

class MyContext2 : public RefObjectBase<
Implements<ILibraryContext>,
Implements<IApiVersionQuery>>
{
public:
MyContext2() = default;
~MyContext2() = default;
// ILibraryContext
ILibraryContext::LibraryId libraryId() const noexcept override;
NeuralResult synchronize(INetworkBackend*) noexcept override;
NeuralResult bindCurrentThread(INetworkBackend*) noexcept override;
// IApiVersionQuery
uint32_t apiVersion() const noexcept override;
};

Example 3: Linear blend layer indirectly implementing ILayer by using the BaseLayer helper class

class MyBlendLayer : public RefObjectBase<
Implements<BaseLayer>,
IndirectlyImplements<ILayer, BaseLayer>,
Implements<ILinearBlendLayer>>
{
public:
MyBlendLayer();
~MyBlendLayer() = default;
// ILayer virtuals not provided by BaseLayer
const char* serializedType() const noexcept override;
TensorDimension dimensions() const noexcept override;
NeuralResult reshape() noexcept override;
NeuralResult evaluateForward() noexcept override;
NeuralResult loadFromParameters(const IParameterNode* pParameters) noexcept override;
// ILinearBlendLayer virtuals
NeuralResult setAlpha(float alpha) noexcept override;
NeuralResult setInvertAlpha(bool invert) noexcept override;
};
Template Parameters
ParameterListList of Implements<T> and IndirectlyImplements<T,U> helper classes.

Member Function Documentation

◆ addRef()

template<typename... ParameterList>
IRefObject::RefCount nvneural::refobj::RefObjectBase< ParameterList >::addRef ( ) const
inlinenoexcept

Increment the object's reference count.

Returns
The new reference count. Should be used only for debugging.

◆ queryInterface()

template<typename... ParameterList>
void* nvneural::refobj::RefObjectBase< ParameterList >::queryInterface ( IRefObject::TypeId  interfaceId)
inlinenoexcept

Retrieves a new object interface pointer.

Parameters
interfaceIdTypeId of the interface to convert to.
Returns
A new interface pointer suitable for static_cast<> from void, or nullptr on failure or if the interface is unsupported.
Note
Calls addRef on the resulting pointer.
See also
RefPtr::as, IRefObject::queryInterface

◆ release()

template<typename... ParameterList>
IRefObject::RefCount nvneural::refobj::RefObjectBase< ParameterList >::release ( ) const
inlinenoexcept

Decrements the object's reference count and destroys the object if the reference count reaches zero.

Returns
The new reference count. Should be used only for debugging.

The documentation for this struct was generated from the following file: