Iray SDK API nvidia_logo_transpbg.gif Up
ineuray.h
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright 2025 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_INEURAY_H
8#define MI_NEURAYLIB_INEURAY_H
9
11#include <mi/neuraylib/version.h> // for MI_NEURAYLIB_DEPRECATED_ENUM_VALUE
12
13// X11/Xlib.h defines Status to int
14#if defined(_XLIB_H_) || defined(_X11_XLIB_H_)
15#undef Status
16#endif // _XLIB_H_ || _X11_XLIB_H_
17
18namespace mi {
19
20namespace neuraylib {
21
43class INeuray : public
44 mi::base::Interface_declare<0xc31b49fc,0xc499,0x4d70,0x93,0x01,0x67,0xbb,0x72,0x62,0xe7,0xef>
45{
46public:
50 virtual Uint32 get_interface_version() const = 0;
51
56 virtual const char* get_version() const = 0;
57
58 // Startup and shutdown
59
87 virtual Sint32 start( bool blocking = true) = 0;
88
93 {
105 FAILURE = 5
106 MI_NEURAYLIB_DEPRECATED_ENUM_VALUE(FORCE_32_BIT, 0xffffffffU)
107 };
108
131 virtual Sint32 shutdown( bool blocking = true) = 0;
132
136 virtual Status get_status() const = 0;
137
148 virtual base::IInterface* get_api_component( const base::Uuid& uuid) const = 0;
149
162 template<class T>
164 {
165 base::IInterface* ptr_iinterface = get_api_component( typename T::IID());
166 if ( !ptr_iinterface)
167 return nullptr;
168 T* ptr_T = static_cast<T*>( ptr_iinterface->get_interface( typename T::IID()));
169 ptr_iinterface->release();
170 return ptr_T;
171 }
172
187 const base::Uuid& uuid, base::IInterface* api_component) = 0;
188
203 template<class T>
205 {
206 return register_api_component( typename T::IID(), api_component);
207 }
208
217 virtual Sint32 unregister_api_component( const base::Uuid& uuid) = 0;
218
230 template<class T>
232 {
233 return unregister_api_component( typename T::IID());
234 }
235};
236 // end group mi_neuray_ineuray
238
239} // namespace neuraylib
240
241} // namespace mi
242
243// X11/Xlib.h defines Status to int
244#if defined(_XLIB_H_) || defined(_X11_XLIB_H_)
245#define Status int
246#endif // _XLIB_H_ || _X11_XLIB_H_
247
248#endif // MI_NEURAYLIB_INEURAY_H
The basic extensible interface.
Definition: iinterface.h:103
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
This is an object representing the Iray library.
Definition: ineuray.h:45
virtual Sint32 shutdown(bool blocking=true)=0
Shuts down the library.
Sint32 unregister_api_component()
Unregisters an API component with the Iray SDK API.
Definition: ineuray.h:231
T * get_api_component() const
Returns an API component from the Iray SDK API.
Definition: ineuray.h:163
virtual Uint32 get_interface_version() const =0
Returns the interface version of the Iray library.
virtual base::IInterface * get_api_component(const base::Uuid &uuid) const =0
Returns an API component from the Iray SDK API.
virtual Sint32 unregister_api_component(const base::Uuid &uuid)=0
Unregisters an API component with the Iray SDK API.
Sint32 register_api_component(T *api_component)
Registers an API component with the Iray SDK API.
Definition: ineuray.h:204
virtual Sint32 register_api_component(const base::Uuid &uuid, base::IInterface *api_component)=0
Registers an API component with the Iray SDK API.
Status
The operational status of the library.
Definition: ineuray.h:93
@ SHUTTINGDOWN
The library or the cluster is shutting down.
Definition: ineuray.h:101
@ STARTING
The library or the cluster is starting.
Definition: ineuray.h:97
@ STARTED
The library or the cluster is ready for operation.
Definition: ineuray.h:99
@ SHUTDOWN
The library or the cluster has been shut down.
Definition: ineuray.h:103
@ PRE_STARTING
The library or the cluster has not yet been started.
Definition: ineuray.h:95
@ FAILURE
There was a failure during operation.
Definition: ineuray.h:105
virtual Status get_status() const =0
Returns the status of the library.
virtual const char * get_version() const =0
Returns the version of the Iray library.
virtual Sint32 start(bool blocking=true)=0
Starts the operation of the Iray library.
virtual const IInterface * get_interface(const Uuid &interface_id) const =0
Acquires a const interface from another.
virtual Uint32 release() const =0
Decrements the reference count.
int Sint32
32-bit signed integer.
Definition: types.h:46
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
Mixin class template for deriving new interface declarations.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: neuraylib.h:179
Major and minor version number and an optional qualifier.
A 128 bit representation of a universally unique identifier (UUID or GUID).
Definition: uuid.h:26