neuray API Programmer's Manual

iextension_api.h File Reference

Description

API component that allows extensions of the neuray API.

Code Example

iextension_api.h

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

#ifndef MI_NEURAYLIB_IEXTENSION_API_H
#define MI_NEURAYLIB_IEXTENSION_API_H

#include <mi/base/handle.h>
#include <mi/base/interface_declare.h>
#include <mi/neuraylib/iuser_class_factory.h>

namespace mi {

class IEnum_decl;
class IStructure_decl;

namespace neuraylib {

class IExporter;
class IImporter;

class IExtension_api : public
    mi::base::Interface_declare<0xdf2dd31e,0xeeaf,0x40b2,0x8c,0x5f,0x0a,0xb2,0xad,0x44,0x61,0x91>
{
public:


    virtual Sint32 
               register_class(
        const char* class_name, base::Uuid uuid, IUser_class_factory* factory) = 0;

    template <class T>
    Sint32 
               register_class( const char* class_name)
    {
        mi::base::Handle< IUser_class_factory> factory( new User_class_factory< T>());
        return register_class( class_name, typename T::IID(), factory.get());
    }

    virtual Sint32 
               unregister_class( const char* class_name, base::Uuid uuid) = 0;

    template <class T>
    Sint32 
               unregister_class( const char* class_name)
    {
        return unregister_class( class_name, typename T::IID());
    }




    virtual Sint32 
               register_importer( IImporter* importer) = 0;

    virtual Sint32 
               register_exporter( IExporter* exporter) = 0;

    virtual Sint32 
               unregister_importer( IImporter* importer) = 0;

    virtual Sint32 
               unregister_exporter( IExporter* exporter) = 0;




    virtual Sint32 
               register_structure_decl(
        const char* structure_name, const IStructure_decl* decl) = 0;

    virtual Sint32 
               unregister_structure_decl( const char* structure_name) = 0;




    virtual Sint32 
               register_enum_decl(
        const char* enum_name, const IEnum_decl* decl) = 0;

    virtual Sint32 
               unregister_enum_decl( const char* enum_name) = 0;


};
 // end group mi_neuray_configuration

} // namespace neuraylib

} // namespace mi

#endif // MI_NEURAYLIB_IEXTENSION_API_H

Namespaces

namespace 
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
namespace 
Namespace for the neuray API. More...

Classes

class 
This interface is used to extent the neuray API. More...