MDL SDK API nvidia_logo_transpbg.gif Up
mi::neuraylib::IMdl_discovery_api Class Referenceabstract

Interface for the discovery API. More...

#include <imdl_discovery_api.h>

Inheritance diagram for mi::neuraylib::IMdl_discovery_api:

Public Member Functions

virtual const IMdl_discovery_resultdiscover (Uint32 filter=static_cast< Uint32 >(IMdl_info::DK_ALL)) const =0
 Returns the file system and archive discovery result. 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< 0x208aa1f2, ... >
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< 0x208aa1f2, ... >
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

Interface for the discovery API.

The discovery API offers functionality to find MDL content in the registered MDL search paths. These search paths have to be declared with the function call mi::neuraylib::IMdl_configuration::add_mdl_path() in advance. The ordering of the search paths results from the ordering of the registration and is taken into account during the discovery process.

The MDL modules and packages found inside a search path are assembled into a graph structure consisting of package and module nodes. The discovery results of multiple search paths are merged to one result graph. If a module is found, but there exists already a module with the same qualified name in a previously discovered graph, the additional module will be handled as a shadow of the existing module. Multiple packages with the same qualified name will be merged into one package.

The discovery API works for both MDL files (.mdl) and MDL archive files (.mdr). Archives have to be installed in the top level of the search paths, but material files can be placed anywhere across the sub-folders of a search path.

The result of a discovery process is provided as an mi::neuraylib::IMdl_discovery_result. This data structure provides information about the discovered search paths as well as access to the result graph structure.

Member Function Documentation

 discover()

virtual const IMdl_discovery_result * mi::neuraylib::IMdl_discovery_api::discover ( Uint32  filter = static_cast< Uint32 >(IMdl_info::DK_ALL)) const
pure virtual

Returns the file system and archive discovery result.

Parameters
filterBitmask, that can be used to specify which discovery kinds to include in the result (see mi::neuraylib::IMdl_info::Kind). By default, all kinds are included.