neuray API Programmer's Manual

idata.h File Reference

Description

Types.

Code Example

idata.h

‎/***************************************************************************************************
 * Copyright 2024 NVIDIA Corporation. All rights reserved.
 **************************************************************************************************/

#ifndef MI_NEURAYLIB_IDATA_H
#define MI_NEURAYLIB_IDATA_H

#include <mi/base/interface_declare.h>

namespace mi {







class IData :
    public base::Interface_declare<0x2e5f84bc,0x783a,0x4551,0x9f,0xca,0x72,0x2f,0xb8,0x38,0xc4,0x7c>
{
public:
    virtual const char* get_type_name() const = 0;
};
 // end group mi_neuray_types










class IData_simple :
    public base::Interface_declare<0xc33c5a05,0xe7a5,0x4154,0xb8,0x87,0xee,0x1f,0x4d,0x5b,0x02,0x02,
                                   IData>
{
};
 // end group mi_neuray_simple_types


















class IData_collection :
    public base::Interface_declare<0x1bb2be0f,0x0dc6,0x44b2,0x93,0xb9,0xd1,0xba,0x6a,0x31,0x88,0x1c,
                                   IData>
{
public:
    virtual Size 
               get_length() const = 0;

    virtual const char* get_key( Size index) const = 0;

    virtual bool has_key( const char* key) const = 0;

    virtual const base::IInterface* get_value( const char* key) const = 0;

    template<class T>
    const T* get_value( const char* key) const
    {
        const base::IInterface* ptr_iinterface = get_value( key);
        if ( !ptr_iinterface)
            return 0;
        const T* ptr_T = static_cast<const T*>( ptr_iinterface->get_interface( typename T::IID()));
        ptr_iinterface->release();
        return ptr_T;
    }

    virtual base::IInterface* get_value( const char* key) = 0;

    template<class T>
    T* get_value( const char* key)
    {
        base::IInterface* ptr_iinterface = get_value( key);
        if ( !ptr_iinterface)
            return 0;
        T* ptr_T = static_cast<T*>( ptr_iinterface->get_interface( typename T::IID()));
        ptr_iinterface->release();
        return ptr_T;
    }

    virtual const base::IInterface* get_value( Size index) const = 0;

    template<class T>
    const T* get_value( Size index) const
    {
        const base::IInterface* ptr_iinterface = get_value( index);
        if ( !ptr_iinterface)
            return 0;
        const T* ptr_T = static_cast<const T*>( ptr_iinterface->get_interface( typename T::IID()));
        ptr_iinterface->release();
        return ptr_T;
    }

    virtual base::IInterface* get_value( Size index) = 0;

    template<class T>
    T* get_value( Size index)
    {
        base::IInterface* ptr_iinterface = get_value( index);
        if ( !ptr_iinterface)
            return 0;
        T* ptr_T = static_cast<T*>( ptr_iinterface->get_interface( typename T::IID()));
        ptr_iinterface->release();
        return ptr_T;
    }

    virtual Sint32 
               set_value( const char* key, base::IInterface* value) = 0;

    virtual Sint32 
               set_value( Size index, base::IInterface* value) = 0;
};
 // end group mi_neuray_collections







class IVoid :
    public base::Interface_declare<0x3142c0a4,0xa138,0x472f,0x85,0xe5,0xc0,0x13,0xfc,0xd1,0x04,0x6a,
                                   IData_simple>
{
};
 // end group mi_neuray_simple_types

} // namespace mi

#endif // MI_NEURAYLIB_IDATA_H

Namespaces

namespace 
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...

Classes

class 
This interface is the base interface of all types. More...
class 
This interface represents collections. More...
class 
This interface represents simple types. More...
class 
This interface represents the void type. More...