NVIDIA Iray API Home  Up
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
iextension_api.h
Go to the documentation of this file.
1 //*****************************************************************************
2 // Copyright 1986, 2016 NVIDIA Corporation. All rights reserved.
3 //*****************************************************************************
6 //*****************************************************************************
7 
8 #ifndef MI_NEURAYLIB_IEXTENSION_API_H
9 #define MI_NEURAYLIB_IEXTENSION_API_H
10 
11 #include <mi/base/handle.h>
14 #include <mi/neuraylib/version.h>
15 
16 namespace mi {
17 
18 class ICall_decl;
19 class IEnum_decl;
20 class IStructure_decl;
21 
22 namespace neuraylib {
23 
28 class IExporter;
29 class IImporter;
30 
33 class IExtension_api : public
34  mi::base::Interface_declare<0xdf2dd31e,0xeeaf,0x40b2,0x8c,0x5f,0x0a,0xb2,0xad,0x44,0x61,0x91>
35 {
36 public:
38 
39 
60  virtual Sint32 register_class(
61  const char* class_name, base::Uuid uuid, IUser_class_factory* factory) = 0;
62 
84  template <class T>
85  Sint32 register_class( const char* class_name)
86  {
88  return register_class( class_name, typename T::IID(), factory.get());
89  }
90 
92 
94 
105  virtual Sint32 register_importer( IImporter* importer) = 0;
106 
117  virtual Sint32 register_exporter( IExporter* exporter) = 0;
118 
130  virtual Sint32 unregister_importer( IImporter* importer) = 0;
131 
143  virtual Sint32 unregister_exporter( IExporter* exporter) = 0;
144 
146 
148 
171  const char* structure_name, const IStructure_decl* decl) = 0;
172 
184  virtual Sint32 unregister_structure_decl( const char* structure_name) = 0;
185 
187 
189 
211  virtual Sint32 register_call_decl(
212  const char* call_name, const ICall_decl* decl) = 0;
213 
223  virtual Sint32 unregister_call_decl( const char* call_name) = 0;
224 
226 
228 
245  virtual Sint32 register_enum_decl(
246  const char* enum_name, const IEnum_decl* decl) = 0;
247 
257  virtual Sint32 unregister_enum_decl( const char* enum_name) = 0;
258 
260 };
261  // end group mi_neuray_configuration
263 
264 } // namespace neuraylib
265 
266 } // namespace mi
267 
268 #endif // MI_NEURAYLIB_IEXTENSION_API_H