Material Definition Language API nvidia_logo_transpbg.gif Up
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
iscope.h
Go to the documentation of this file.
1 /***************************************************************************************************
2  * Copyright 2020 NVIDIA Corporation. All rights reserved.
3  **************************************************************************************************/
6 
7 #ifndef MI_NEURAYLIB_ISCOPE_H
8 #define MI_NEURAYLIB_ISCOPE_H
9 
11 
13 
14 namespace mi {
15 
16 namespace neuraylib {
17 
22 class IScope : public
48  mi::base::Interface_declare<0x578df0c5,0xab97,0x460a,0xb5,0x0a,0x2c,0xf8,0x54,0x22,0x31,0xb9>
49 {
50 public:
61  virtual ITransaction* create_transaction() = 0;
62 
75  template<class T>
77  {
78  ITransaction* ptr_itransaction = create_transaction();
79  if ( !ptr_itransaction)
80  return 0;
81  T* ptr_T = static_cast<T*>( ptr_itransaction->get_interface( typename T::IID()));
82  ptr_itransaction->release();
83  return ptr_T;
84  }
85 
91  virtual const char* get_id() const = 0;
92 
100  virtual Uint8 get_privacy_level() const = 0;
101 
105  virtual const char* get_name() const = 0;
106 
110  virtual IScope* get_parent() const = 0;
111 };
112  // end group mi_neuray_database_access
114 
115 } // namespace neuraylib
116 
117 } // namespace mi
118 
119 #endif // MI_NEURAYLIB_ISCOPE_H