DiCE API nvidia_logo_transpbg.gif Up
mi::neuraylib::IExtension_api Class Referenceabstract

This interface is used to extent the DiCE API. More...

#include <iextension_api.h>

Inheritance diagram for mi::neuraylib::IExtension_api:

Public Member Functions

User classes
virtual Sint32 register_class (const char *class_name, base::Uuid uuid, IUser_class_factory *factory)=0
 Registers a class with the DiCE API. More...
 
template<class T>
Sint32 register_class (const char *class_name)
 Registers a class with the DiCE API. More...
 
virtual Sint32 unregister_class (const char *class_name, base::Uuid uuid)=0
 Unregisters a class with the DiCE API. More...
 
template<class T>
Sint32 unregister_class (const char *class_name)
 Unregisters a class with the DiCE API. More...
 
Importers and exporters
virtual Sint32 register_importer (IImporter *importer)=0
 Registers a new importer with the DiCE API. More...
 
virtual Sint32 register_exporter (IExporter *exporter)=0
 Registers a new exporter with the DiCE API. More...
 
virtual Sint32 unregister_importer (IImporter *importer)=0
 Unregisters an importer registered with the DiCE API. More...
 
virtual Sint32 unregister_exporter (IExporter *exporter)=0
 Unregisters an exporter registered with the DiCE API. More...
 
Structure declarations
virtual Sint32 register_structure_decl (const char *structure_name, const IStructure_decl *decl)=0
 Registers a structure declaration with the DiCE API. More...
 
virtual Sint32 unregister_structure_decl (const char *structure_name)=0
 Unregisters a structure declaration with the DiCE API. More...
 
Enum declarations
virtual Sint32 register_enum_decl (const char *enum_name, const IEnum_decl *decl)=0
 Registers an enum declaration with the DiCE API. More...
 
virtual Sint32 unregister_enum_decl (const char *enum_name)=0
 Unregisters an enum declaration with the DiCE API. More...
 
- Public Member Functions inherited from mi::base::IInterface
virtual Uint32 retain () const =0
 Increments the reference count. More...
 
virtual Uint32 release () const =0
 Decrements the reference count. More...
 
virtual const IInterfaceget_interface (const Uuid &interface_id) const =0
 Acquires a const interface from another. More...
 
template<class T>
const T * get_interface () const
 Acquires a const interface from another. More...
 
virtual IInterfaceget_interface (const Uuid &interface_id)=0
 Acquires a mutable interface from another. More...
 
template<class T>
T * get_interface ()
 Acquires a mutable interface from another. More...
 
virtual Uuid get_iid () const =0
 Returns the interface ID of the most derived interface. More...
 

Additional Inherited Members

- Public Types inherited from mi::base::Interface_declare< 0xdf2dd31e, ... >
typedef Interface_declare< id1, ... > Self
 Own type. More...
 
typedef Uuid_t< id1, ... > IID
 Declares the interface ID (IID) of this interface. More...
 
- Public Types inherited from mi::base::IInterface
typedef Uuid_t<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> IID
 Declares the interface ID (IID) of this interface. More...
 
- Static Public Member Functions inherited from mi::base::Interface_declare< 0xdf2dd31e, ... >
static bool compare_iid (const Uuid &iid)
 Compares the interface ID iid against the interface ID of this interface and of its ancestors. More...
 
- Static Public Member Functions inherited from mi::base::IInterface
static bool compare_iid (const Uuid &iid)
 Compares the interface ID iid against the interface ID of this interface. More...
 

Detailed Description

This interface is used to extent the DiCE API.

For example it offers methods to load and to set up plugins.

Member Function Documentation

 register_class() [1/2]

template<class T>
Sint32 mi::neuraylib::IExtension_api::register_class ( const char *  class_name)
inline

Registers a class with the DiCE API.

All user-defined classes to be used with the DiCE API must be registered. The only exception are classes that never cross the API boundary, for example, classes only used locally within a plugin. Class registration must be done in mi::neuraylib::IPlugin::init() or before DiCE has been started.

This templated member function is a wrapper of the non-template variant for the user's convenience. It uses the default class factory mi::neuraylib::User_class_factory specialized for T.

Parameters
class_nameThe class name under which the class is to be registered. The class name must consist only of alphanumeric characters or underscores, must not start with an underscore, and must not be the empty string.
Returns
  • 0: Success.
  • -1: There is already a class or structure declaration registered under the name class_name or UUID T::IID().
  • -2: Invalid parameters (NULL pointer).
  • -3: The method may not be called at that point of time.
  • -4: Invalid class name.

 register_class() [2/2]

virtual Sint32 mi::neuraylib::IExtension_api::register_class ( const char *  class_name,
base::Uuid  uuid,
IUser_class_factory factory 
)
pure virtual

Registers a class with the DiCE API.

All user-defined classes to be used with the DiCE API must be registered. The only exception are classes that never cross the API boundary, for example, classes only used locally within a plugin. Class registration must be done in mi::neuraylib::IPlugin::init() or before DiCE has been started.

Parameters
class_nameThe class name under which the class is to be registered. The class name must consist only of alphanumeric characters or underscores, must not start with an underscore, and must not be the empty string.
uuidThe class ID of the class. You can simply pass IID() of your class derived from mi::neuraylib::User_class.
factoryThe factory method of the class.
Returns
  • 0: Success.
  • -1: There is already a class or structure declaration registered under the name class_name or UUID uuid.
  • -2: Invalid parameters (NULL pointer).
  • -3: The method may not be called at that point of time.
  • -4: Invalid class name.

 register_enum_decl()

virtual Sint32 mi::neuraylib::IExtension_api::register_enum_decl ( const char *  enum_name,
const IEnum_decl decl 
)
pure virtual

Registers an enum declaration with the DiCE API.

Parameters
enum_nameThe name to be used to refer to this enum declaration. The name must consist only of alphanumeric characters or underscores, must not start with an underscore, and must not be the empty string.
declThe enum declaration. The declaration is internally cloned such that subsequent changes have no effect on the registered declaration.
Returns
  • 0: Success.
  • -1: There is already a class, structure, or enum declaration registered under the name enum_name.
  • -2: Invalid parameters (NULL pointer).
  • -4: Invalid name for an enum declaration.
  • -6: The enum declaration is empty and therefore invalid.

 register_exporter()

virtual Sint32 mi::neuraylib::IExtension_api::register_exporter ( IExporter *  exporter)
pure virtual

Registers a new exporter with the DiCE API.

Importer registration must be done in mi::neuraylib::IPlugin::exit() or before DiCE has been started.

Parameters
exporterThe new exporter to register.
Returns
  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: The method may not be called at that point of time.

 register_importer()

virtual Sint32 mi::neuraylib::IExtension_api::register_importer ( IImporter *  importer)
pure virtual

Registers a new importer with the DiCE API.

Importer registration must be done in mi::neuraylib::IPlugin::exit() or before DiCE has been started.

Parameters
importerThe new importer to register.
Returns
  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: The method may not be called at that point of time.

 register_structure_decl()

virtual Sint32 mi::neuraylib::IExtension_api::register_structure_decl ( const char *  structure_name,
const IStructure_decl decl 
)
pure virtual

Registers a structure declaration with the DiCE API.

Note that the type names of the structure members are not checked for validity here (except for cycles). Thus, it is possible that this methods succeeds, but creating an instance of the type structure_name will fail.

Parameters
structure_nameThe name to be used to refer to this structure declaration. The name must consist only of alphanumeric characters or underscores, must not start with an underscore, and must not be the empty string.
declThe structure declaration. The declaration is internally cloned such that subsequent changes have no effect on the registered declaration.
Returns
  • 0: Success.
  • -1: There is already a class, structure, enum declaration registered under the name structure_name.
  • -2: Invalid parameters (NULL pointer).
  • -4: Invalid name for a structure declaration.
  • -5: A registration under the name structure_name would cause an infinite cycle of nested structure types.

 unregister_class() [1/2]

template<class T>
Sint32 mi::neuraylib::IExtension_api::unregister_class ( const char *  class_name)
inline

Unregisters a class with the DiCE API.

Class unregistration must be done in mi::neuraylib::IPlugin::exit() or after DiCE has been shut down.

This templated member function is a wrapper of the non-template variant for the user's convenience. It uses the default class factory mi::neuraylib::User_class_factory specialized for T.

Parameters
class_nameThe class name under which the class was registered.
Returns
  • 0: Success.
  • -1: There is no class declaration registered under the name class_name and/or UUID uuid.
  • -2: Invalid parameters (NULL pointer).
  • -3: The method may not be called at that point of time.
  • -4: Invalid class name.

 unregister_class() [2/2]

virtual Sint32 mi::neuraylib::IExtension_api::unregister_class ( const char *  class_name,
base::Uuid  uuid 
)
pure virtual

Unregisters a class with the DiCE API.

Class unregistration must be done in mi::neuraylib::IPlugin::exit() or after DiCE has been shut down.

Parameters
class_nameThe class name under which the class was registered.
uuidThe class ID of the class. You can simply pass IID() of your class derived from mi::neuraylib::User_class.
Returns
  • 0: Success.
  • -1: There is no class declaration registered under the name class_name and/or UUID uuid.
  • -2: Invalid parameters (NULL pointer).
  • -3: The method may not be called at that point of time.
  • -4: Invalid class name.

 unregister_enum_decl()

virtual Sint32 mi::neuraylib::IExtension_api::unregister_enum_decl ( const char *  enum_name)
pure virtual

Unregisters an enum declaration with the DiCE API.

Parameters
enum_nameThe name of the enum declaration to be unregistered.
Returns
  • 0: Success.
  • -1: There is no enum declaration registered under the name enum_name.
  • -2: Invalid parameters (NULL pointer).
  • -4: Invalid name for an enum declaration.

 unregister_exporter()

virtual Sint32 mi::neuraylib::IExtension_api::unregister_exporter ( IExporter *  exporter)
pure virtual

Unregisters an exporter registered with the DiCE API.

Unregistration must be done in mi::neuraylib::IPlugin::exit() or after DiCE has been shut down.

Parameters
exporterThe exporter to unregister.
Returns
  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: The method may not be called at that point of time.
  • -3: This exporter is not registered.

 unregister_importer()

virtual Sint32 mi::neuraylib::IExtension_api::unregister_importer ( IImporter *  importer)
pure virtual

Unregisters an importer registered with the DiCE API.

Unregistration must be done in mi::neuraylib::IPlugin::exit() or after DiCE has been shut down.

Parameters
importerThe importer to unregister.
Returns
  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: The method may not be called at that point of time.
  • -3: This importer is not registered.

 unregister_structure_decl()

virtual Sint32 mi::neuraylib::IExtension_api::unregister_structure_decl ( const char *  structure_name)
pure virtual

Unregisters a structure declaration with the DiCE API.

Parameters
structure_nameThe name of the structure declaration to be unregistered.
Returns
  • 0: Success.
  • -1: There is no structure declaration registered under the name structure_name.
  • -2: Invalid parameters (NULL pointer).
  • -4: Invalid name for a structure declaration.
  • -6: The structure declaration is predefined and cannot be unregistered.