MDL SDK API nvidia_logo_transpbg.gif Up
ineuray.h
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright 2024 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_INEURAY_H
8#define MI_NEURAYLIB_INEURAY_H
9
11
12// X11/Xlib.h defines Status to int
13#if defined(_XLIB_H_) || defined(_X11_XLIB_H_)
14#undef Status
15#endif // _XLIB_H_ || _X11_XLIB_H_
16
17namespace mi {
18
19namespace neuraylib {
20
42class INeuray : public
43 mi::base::Interface_declare<0x46699619,0x23ce,0x4a44,0x8f,0xae,0x3e,0x69,0x8c,0xc7,0xe3,0x91>
44{
45public:
49 virtual Uint32 get_interface_version() const = 0;
50
55 virtual const char* get_version() const = 0;
56
57 // Startup and shutdown
58
86 virtual Sint32 start( bool blocking = true) = 0;
87
91 enum Status
92 {
105 // Undocumented, for alignment only.
106 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 0;
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
237mi_static_assert( sizeof( INeuray::Status) == sizeof( Uint32));
238 // end group mi_neuray_ineuray
240
241} // namespace neuraylib
242
243} // namespace mi
244
245// X11/Xlib.h defines Status to int
246#if defined(_XLIB_H_) || defined(_X11_XLIB_H_)
247#define Status int
248#endif // _XLIB_H_ || _X11_XLIB_H_
249
250#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 MDL SDK library.
Definition: ineuray.h:44
virtual Sint32 shutdown(bool blocking=true)=0
Shuts down the library.
Sint32 unregister_api_component()
Unregisters an API component with the MDL SDK API.
Definition: ineuray.h:231
T * get_api_component() const
Returns an API component from the MDL SDK API.
Definition: ineuray.h:163
virtual Uint32 get_interface_version() const =0
Returns the interface version of the MDL SDK library.
virtual base::IInterface * get_api_component(const base::Uuid &uuid) const =0
Returns an API component from the MDL SDK API.
virtual Sint32 unregister_api_component(const base::Uuid &uuid)=0
Unregisters an API component with the MDL SDK API.
Sint32 register_api_component(T *api_component)
Registers an API component with the MDL 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 MDL SDK API.
virtual Status get_status() const =0
Returns the status of the library.
Status
The operational status of the library.
Definition: ineuray.h:92
@ SHUTTINGDOWN
The library or the cluster is shutting down.
Definition: ineuray.h:100
@ STARTING
The library or the cluster is starting.
Definition: ineuray.h:96
@ STARTED
The library or the cluster is ready for operation.
Definition: ineuray.h:98
@ SHUTDOWN
The library or the cluster has been shut down.
Definition: ineuray.h:102
@ PRE_STARTING
The library or the cluster has not yet been started.
Definition: ineuray.h:94
@ FAILURE
There was a failure during operation.
Definition: ineuray.h:104
virtual const char * get_version() const =0
Returns the version of the MDL SDK library.
virtual Sint32 start(bool blocking=true)=0
Starts the operation of the MDL SDK library.
#define mi_static_assert(expr)
Compile time assertion that raises a compilation error if the constant expression expr evaluates to f...
Definition: assert.h:58
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.
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
signed int Sint32
32-bit signed integer.
Definition: types.h:46
Mixin class template for deriving new interface declarations.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: example_derivatives.dox:5
A 128 bit representation of a universally unique identifier (UUID or GUID).
Definition: uuid.h:26