NVIDIA Iray API Home  Up
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ideserializer.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_IDESERIALIZER_H
9 #define MI_NEURAYLIB_IDESERIALIZER_H
10 
13 #include <mi/neuraylib/version.h>
14 
15 namespace mi {
16 
17 namespace neuraylib {
18 
25 class IDeserializer :
34  public base::Interface_declare<0x7052258a,0x579b,0x4861,0x9c,0x12,0x5f,0x02,0x9c,0x86,0xfb,0xce>
35 {
36 public:
40  virtual ISerializable* deserialize() = 0;
41 
52  template <class T>
54  {
55  ISerializable* ptr_iserializable = deserialize();
56  if ( !ptr_iserializable)
57  return 0;
58  T* ptr_T = static_cast<T*>( ptr_iserializable->get_interface( typename T::IID()));
59  ptr_iserializable->release();
60  return ptr_T;
61  }
62 
68  virtual bool read( bool* value, Size count = 1) = 0;
69 
75  virtual bool read( Uint8* value, Size count = 1) = 0;
76 
82  virtual bool read( Uint16* value, Size count = 1) = 0;
83 
89  virtual bool read( Uint32* value, Size count = 1) = 0;
90 
96  virtual bool read( Uint64* value, Size count = 1) = 0;
97 
103  virtual bool read( Sint8* value, Size count = 1) = 0;
104 
110  virtual bool read( Sint16* value, Size count = 1) = 0;
111 
117  virtual bool read( Sint32* value, Size count = 1) = 0;
118 
124  virtual bool read( Sint64* value, Size count = 1) = 0;
125 
131  virtual bool read( Float32* value, Size count = 1) = 0;
132 
138  virtual bool read( Float64* value, Size count = 1) = 0;
139 
145  virtual bool read( Tag_struct* value, Size count = 1) = 0;
146 };
147  // end group mi_neuray_plugins / mi_neuray_dice
149 
150 } // namespace neuraylib
151 
152 #ifdef MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
153 using neuraylib::IDeserializer;
154 using neuraylib::ISerializable;
155 using neuraylib::Tag_struct;
156 #endif // MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
157 
158 } // namespace mi
159 
160 #endif // MI_NEURAYLIB_IDESERIALIZER_H