1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 2.0.12
4  *
5  * Do not make changes to this file unless you know what you are doing--modify
6  * the SWIG interface file instead.
7  * ----------------------------------------------------------------------------- */
8 
9 module ovr;
10 
11 static import ovr_im;
12 static import core.stdc.config;
13 
14 static import std.conv;
15 static import std..string;
16 
17 
18 enum LogMaskConstants {
19   LogMask_Regular = 0x100,
20   LogMask_Debug = 0x200,
21   LogMask_None = 0,
22   LogMask_All = LogMask_Regular|LogMask_Debug
23 }
24 
25 enum LogMessageType {
26 	Log_Text = LogMaskConstants.LogMask_Regular|0,
27 	Log_Error = LogMaskConstants.LogMask_Regular|1,
28 	Log_DebugText = LogMaskConstants.LogMask_Debug|0,
29 	Log_Debug = LogMaskConstants.LogMask_Debug|1,
30 	Log_Assert = LogMaskConstants.LogMask_Debug|2
31 }
32 
33 class Log {
34   private void* swigCPtr;
35   protected bool swigCMemOwn;
36 
37   public this(void* cObject, bool ownCObject) {
38     swigCPtr = cObject;
39     swigCMemOwn = ownCObject;
40   }
41 
42   public static void* swigGetCPtr(Log obj) {
43     return (obj is null) ? null : obj.swigCPtr;
44   }
45 
46   mixin ovr_im.SwigOperatorDefinitions;
47 
48   ~this() {
49     dispose();
50   }
51 
52   public void dispose() {
53     synchronized(this) {
54       if (swigCPtr !is null) {
55         if (swigCMemOwn) {
56           swigCMemOwn = false;
57           ovr_im.delete_Log(cast(void*)swigCPtr);
58         }
59         swigCPtr = null;
60       }
61     }
62   }
63 
64   enum {
65     MaxLogBufferMessageSize = 2048
66   }
67 
68   public this(uint logMask) {
69     this(ovr_im.new_Log__SWIG_0(logMask), true);
70   }
71 
72   public this() {
73     this(ovr_im.new_Log__SWIG_1(), true);
74   }
75 
76   public uint GetLoggingMask() const {
77     auto ret = ovr_im.Log_GetLoggingMask(cast(void*)swigCPtr);
78     return ret;
79   }
80 
81   public void SetLoggingMask(uint logMask) {
82     ovr_im.Log_SetLoggingMask(cast(void*)swigCPtr, logMask);
83   }
84 
85   public void LogMessageVarg(LogMessageType messageType, string fmt, SWIGTYPE_p_va_list argList) {
86     ovr_im.Log_LogMessageVarg(cast(void*)swigCPtr, cast(int)messageType, (fmt ? std..string.toStringz(fmt) : null), SWIGTYPE_p_va_list.swigGetCPtr(argList));
87     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
88   }
89 
90   public void LogMessage(LogMessageType messageType, string fmt) {
91     ovr_im.Log_LogMessage(cast(void*)swigCPtr, cast(int)messageType, (fmt ? std..string.toStringz(fmt) : null));
92   }
93 
94   public static void FormatLog(string buffer, uint bufferSize, LogMessageType messageType, string fmt, SWIGTYPE_p_va_list argList) {
95     ovr_im.Log_FormatLog((buffer ? std..string.toStringz(buffer) : null), bufferSize, cast(int)messageType, (fmt ? std..string.toStringz(fmt) : null), SWIGTYPE_p_va_list.swigGetCPtr(argList));
96     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
97   }
98 
99   public static void DefaultLogOutput(string textBuffer, bool arg1) {
100     ovr_im.Log_DefaultLogOutput((textBuffer ? std..string.toStringz(textBuffer) : null), arg1);
101   }
102 
103   public static bool IsDebugMessage(LogMessageType messageType) {
104     bool ret = ovr_im.Log_IsDebugMessage(cast(int)messageType) ? true : false;
105     return ret;
106   }
107 
108   public static void SetGlobalLog(Log log) {
109     ovr_im.Log_SetGlobalLog(Log.swigGetCPtr(log));
110   }
111 
112   public static Log GetGlobalLog() {
113     void* cPtr = ovr_im.Log_GetGlobalLog();
114     Log ret = (cPtr is null) ? null : new Log(cPtr, false);
115     return ret;
116   }
117 
118   public static Log GetDefaultLog() {
119     void* cPtr = ovr_im.Log_GetDefaultLog();
120     Log ret = (cPtr is null) ? null : new Log(cPtr, false);
121     return ret;
122   }
123 
124   public static Log ConfigureDefaultLog(uint logMask) {
125     void* cPtr = ovr_im.Log_ConfigureDefaultLog__SWIG_0(logMask);
126     Log ret = (cPtr is null) ? null : new Log(cPtr, false);
127     return ret;
128   }
129 
130   public static Log ConfigureDefaultLog() {
131     void* cPtr = ovr_im.Log_ConfigureDefaultLog__SWIG_1();
132     Log ret = (cPtr is null) ? null : new Log(cPtr, false);
133     return ret;
134   }
135 }
136 
137 void LogText(string fmt) {
138   ovr_im.LogText((fmt ? std..string.toStringz(fmt) : null));
139 }
140 
141 void LogError(string fmt) {
142   ovr_im.LogError((fmt ? std..string.toStringz(fmt) : null));
143 }
144 
145 class Allocator {
146   private void* swigCPtr;
147   protected bool swigCMemOwn;
148 
149   public this(void* cObject, bool ownCObject) {
150     swigCPtr = cObject;
151     swigCMemOwn = ownCObject;
152   }
153 
154   public static void* swigGetCPtr(Allocator obj) {
155     return (obj is null) ? null : obj.swigCPtr;
156   }
157 
158   mixin ovr_im.SwigOperatorDefinitions;
159 
160   ~this() {
161     dispose();
162   }
163 
164   public void dispose() {
165     synchronized(this) {
166       if (swigCPtr !is null) {
167         if (swigCMemOwn) {
168           swigCMemOwn = false;
169           ovr_im.delete_Allocator(cast(void*)swigCPtr);
170         }
171         swigCPtr = null;
172       }
173     }
174   }
175 
176   public void* Alloc(size_t size) {
177     auto ret = cast(void*)ovr_im.Allocator_Alloc(cast(void*)swigCPtr, size);
178     return ret;
179   }
180 
181   public void* AllocDebug(size_t size, string file, uint line) {
182     auto ret = cast(void*)ovr_im.Allocator_AllocDebug(cast(void*)swigCPtr, size, (file ? std..string.toStringz(file) : null), line);
183     return ret;
184   }
185 
186   public void* Realloc(void* p, size_t newSize) {
187     auto ret = cast(void*)ovr_im.Allocator_Realloc(cast(void*)swigCPtr, cast(void*)p, newSize);
188     return ret;
189   }
190 
191   public void Free(void* p) {
192     ovr_im.Allocator_Free(cast(void*)swigCPtr, cast(void*)p);
193   }
194 
195   public void* AllocAligned(size_t size, size_t arg1) {
196     auto ret = cast(void*)ovr_im.Allocator_AllocAligned(cast(void*)swigCPtr, size, arg1);
197     return ret;
198   }
199 
200   public void FreeAligned(void* p) {
201     ovr_im.Allocator_FreeAligned(cast(void*)swigCPtr, cast(void*)p);
202   }
203 
204   public static Allocator GetInstance() {
205     void* cPtr = ovr_im.Allocator_GetInstance();
206     Allocator ret = (cPtr is null) ? null : new Allocator(cPtr, false);
207     return ret;
208   }
209 
210   public static void setInstance(Allocator palloc) {
211     ovr_im.Allocator_setInstance(Allocator.swigGetCPtr(palloc));
212   }
213 }
214 
215 class DefaultAllocator {
216   private void* swigCPtr;
217   protected bool swigCMemOwn;
218 
219   public this(void* cObject, bool ownCObject) {
220     swigCPtr = cObject;
221     swigCMemOwn = ownCObject;
222   }
223 
224   public static void* swigGetCPtr(DefaultAllocator obj) {
225     return (obj is null) ? null : obj.swigCPtr;
226   }
227 
228   mixin ovr_im.SwigOperatorDefinitions;
229 
230   ~this() {
231     dispose();
232   }
233 
234   public void dispose() {
235     synchronized(this) {
236       if (swigCPtr !is null) {
237         if (swigCMemOwn) {
238           swigCMemOwn = false;
239           ovr_im.delete_DefaultAllocator(cast(void*)swigCPtr);
240         }
241         swigCPtr = null;
242       }
243     }
244   }
245 
246   public void* Alloc(size_t size) {
247     auto ret = cast(void*)ovr_im.DefaultAllocator_Alloc(cast(void*)swigCPtr, size);
248     return ret;
249   }
250 
251   public void* AllocDebug(size_t size, string file, uint line) {
252     auto ret = cast(void*)ovr_im.DefaultAllocator_AllocDebug(cast(void*)swigCPtr, size, (file ? std..string.toStringz(file) : null), line);
253     return ret;
254   }
255 
256   public void* Realloc(void* p, size_t newSize) {
257     auto ret = cast(void*)ovr_im.DefaultAllocator_Realloc(cast(void*)swigCPtr, cast(void*)p, newSize);
258     return ret;
259   }
260 
261   public void Free(void* p) {
262     ovr_im.DefaultAllocator_Free(cast(void*)swigCPtr, cast(void*)p);
263   }
264 
265   public this() {
266     this(ovr_im.new_DefaultAllocator(), true);
267   }
268 }
269 
270 class NewOverrideBase {
271   private void* swigCPtr;
272   protected bool swigCMemOwn;
273 
274   public this(void* cObject, bool ownCObject) {
275     swigCPtr = cObject;
276     swigCMemOwn = ownCObject;
277   }
278 
279   public static void* swigGetCPtr(NewOverrideBase obj) {
280     return (obj is null) ? null : obj.swigCPtr;
281   }
282 
283   mixin ovr_im.SwigOperatorDefinitions;
284 
285   ~this() {
286     dispose();
287   }
288 
289   public void dispose() {
290     synchronized(this) {
291       if (swigCPtr !is null) {
292         if (swigCMemOwn) {
293           swigCMemOwn = false;
294           ovr_im.delete_NewOverrideBase(cast(void*)swigCPtr);
295         }
296         swigCPtr = null;
297       }
298     }
299   }
300 
301   public this() {
302     this(ovr_im.new_NewOverrideBase(), true);
303   }
304 }
305 
306 class System {
307   private void* swigCPtr;
308   protected bool swigCMemOwn;
309 
310   public this(void* cObject, bool ownCObject) {
311     swigCPtr = cObject;
312     swigCMemOwn = ownCObject;
313   }
314 
315   public static void* swigGetCPtr(System obj) {
316     return (obj is null) ? null : obj.swigCPtr;
317   }
318 
319   mixin ovr_im.SwigOperatorDefinitions;
320 
321   ~this() {
322     dispose();
323   }
324 
325   public void dispose() {
326     synchronized(this) {
327       if (swigCPtr !is null) {
328         if (swigCMemOwn) {
329           swigCMemOwn = false;
330           ovr_im.delete_System(cast(void*)swigCPtr);
331         }
332         swigCPtr = null;
333       }
334     }
335   }
336 
337   public this(Log log, Allocator palloc) {
338     this(ovr_im.new_System__SWIG_0(Log.swigGetCPtr(log), Allocator.swigGetCPtr(palloc)), true);
339   }
340 
341   public this(Log log) {
342     this(ovr_im.new_System__SWIG_1(Log.swigGetCPtr(log)), true);
343   }
344 
345   public this() {
346     this(ovr_im.new_System__SWIG_2(), true);
347   }
348 
349   public static bool IsInitialized() {
350     bool ret = ovr_im.System_IsInitialized() ? true : false;
351     return ret;
352   }
353 
354   public static void Init(Log log, Allocator palloc) {
355     ovr_im.System_Init__SWIG_0(Log.swigGetCPtr(log), Allocator.swigGetCPtr(palloc));
356   }
357 
358   public static void Init(Log log) {
359     ovr_im.System_Init__SWIG_1(Log.swigGetCPtr(log));
360   }
361 
362   public static void Init() {
363     ovr_im.System_Init__SWIG_2();
364   }
365 
366   public static void Destroy() {
367     ovr_im.System_Destroy();
368   }
369 }
370 
371 enum Axis {
372   Axis_X = 0,
373   Axis_Y = 1,
374   Axis_Z = 2
375 }
376 
377 enum RotateDirection {
378   Rotate_CCW = 1,
379   Rotate_CW = -1
380 }
381 
382 enum HandedSystem {
383   Handed_R = 1,
384   Handed_L = -1
385 }
386 
387 enum AxisDirection {
388   Axis_Up = 2,
389   Axis_Down = -2,
390   Axis_Right = 1,
391   Axis_Left = -1,
392   Axis_In = 3,
393   Axis_Out = -3
394 }
395 
396 class WorldAxes {
397   private void* swigCPtr;
398   protected bool swigCMemOwn;
399 
400   public this(void* cObject, bool ownCObject) {
401     swigCPtr = cObject;
402     swigCMemOwn = ownCObject;
403   }
404 
405   public static void* swigGetCPtr(WorldAxes obj) {
406     return (obj is null) ? null : obj.swigCPtr;
407   }
408 
409   mixin ovr_im.SwigOperatorDefinitions;
410 
411   ~this() {
412     dispose();
413   }
414 
415   public void dispose() {
416     synchronized(this) {
417       if (swigCPtr !is null) {
418         if (swigCMemOwn) {
419           swigCMemOwn = false;
420           ovr_im.delete_WorldAxes(cast(void*)swigCPtr);
421         }
422         swigCPtr = null;
423       }
424     }
425   }
426 
427   public void XAxis(AxisDirection value) @property {
428     ovr_im.WorldAxes_XAxis_set(cast(void*)swigCPtr, cast(int)value);
429   }
430 
431   public AxisDirection XAxis() @property const {
432     AxisDirection ret = cast(AxisDirection)ovr_im.WorldAxes_XAxis_get(cast(void*)swigCPtr);
433     return ret;
434   }
435 
436   public void YAxis(AxisDirection value) @property {
437     ovr_im.WorldAxes_YAxis_set(cast(void*)swigCPtr, cast(int)value);
438   }
439 
440   public AxisDirection YAxis() @property const {
441     AxisDirection ret = cast(AxisDirection)ovr_im.WorldAxes_YAxis_get(cast(void*)swigCPtr);
442     return ret;
443   }
444 
445   public void ZAxis(AxisDirection value) @property {
446     ovr_im.WorldAxes_ZAxis_set(cast(void*)swigCPtr, cast(int)value);
447   }
448 
449   public AxisDirection ZAxis() @property const {
450     AxisDirection ret = cast(AxisDirection)ovr_im.WorldAxes_ZAxis_get(cast(void*)swigCPtr);
451     return ret;
452   }
453 
454   public this(AxisDirection x, AxisDirection y, AxisDirection z) {
455     this(ovr_im.new_WorldAxes(cast(int)x, cast(int)y, cast(int)z), true);
456   }
457 }
458 
459 class Matrix4f {
460   private void* swigCPtr;
461   protected bool swigCMemOwn;
462 
463   public this(void* cObject, bool ownCObject) {
464     swigCPtr = cObject;
465     swigCMemOwn = ownCObject;
466   }
467 
468   public static void* swigGetCPtr(Matrix4f obj) {
469     return (obj is null) ? null : obj.swigCPtr;
470   }
471 
472   mixin ovr_im.SwigOperatorDefinitions;
473 
474   ~this() {
475     dispose();
476   }
477 
478   public void dispose() {
479     synchronized(this) {
480       if (swigCPtr !is null) {
481         if (swigCMemOwn) {
482           swigCMemOwn = false;
483           ovr_im.delete_Matrix4f(cast(void*)swigCPtr);
484         }
485         swigCPtr = null;
486       }
487     }
488   }
489 
490   enum NoInitType {
491     NoInit
492   }
493 
494   public void M(SWIGTYPE_p_a_4__float value) @property {
495     ovr_im.Matrix4f_M_set(cast(void*)swigCPtr, SWIGTYPE_p_a_4__float.swigGetCPtr(value));
496   }
497 
498   public SWIGTYPE_p_a_4__float M() @property const {
499     void* cPtr = ovr_im.Matrix4f_M_get(cast(void*)swigCPtr);
500     SWIGTYPE_p_a_4__float ret = (cPtr is null) ? null : new SWIGTYPE_p_a_4__float(cPtr, false);
501     return ret;
502   }
503 
504   public this(Matrix4f.NoInitType arg0) {
505     this(ovr_im.new_Matrix4f__SWIG_0(cast(int)arg0), true);
506   }
507 
508   public this() {
509     this(ovr_im.new_Matrix4f__SWIG_1(), true);
510   }
511 
512   public this(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44) {
513     this(ovr_im.new_Matrix4f__SWIG_2(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44), true);
514   }
515 
516   public this(float m11, float m12, float m13, float m21, float m22, float m23, float m31, float m32, float m33) {
517     this(ovr_im.new_Matrix4f__SWIG_3(m11, m12, m13, m21, m22, m23, m31, m32, m33), true);
518   }
519 
520   public void ToString(string dest, size_t destsize) {
521     ovr_im.Matrix4f_ToString(cast(void*)swigCPtr, (dest ? std..string.toStringz(dest) : null), destsize);
522   }
523 
524   public static Matrix4f FromString(string src) {
525     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_FromString((src ? std..string.toStringz(src) : null)), true);
526     return ret;
527   }
528 
529   public static Matrix4f Identity() {
530     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Identity(), false);
531     return ret;
532   }
533 
534   public void SetIdentity() {
535     ovr_im.Matrix4f_SetIdentity(cast(void*)swigCPtr);
536   }
537 
538   public Matrix4f swigOpAdd(Matrix4f b) const {
539     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpAdd(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(b)), true);
540     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
541     return ret;
542   }
543 
544   public Matrix4f swigOpAddAssign(Matrix4f b) {
545     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpAddAssign(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(b)), false);
546     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
547     return ret;
548   }
549 
550   public Matrix4f swigOpSub(Matrix4f b) const {
551     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpSub(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(b)), true);
552     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
553     return ret;
554   }
555 
556   public Matrix4f swigOpSubAssign(Matrix4f b) {
557     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpSubAssign(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(b)), false);
558     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
559     return ret;
560   }
561 
562   public static Matrix4f Multiply(Matrix4f d, Matrix4f a, Matrix4f b) {
563     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Multiply(Matrix4f.swigGetCPtr(d), Matrix4f.swigGetCPtr(a), Matrix4f.swigGetCPtr(b)), false);
564     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
565     return ret;
566   }
567 
568   public Matrix4f swigOpMul(Matrix4f b) const {
569     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpMul__SWIG_0(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(b)), true);
570     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
571     return ret;
572   }
573 
574   public Matrix4f swigOpMulAssign(Matrix4f b) {
575     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpMulAssign__SWIG_0(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(b)), false);
576     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
577     return ret;
578   }
579 
580   public Matrix4f swigOpMul(float s) const {
581     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpMul__SWIG_1(cast(void*)swigCPtr, s), true);
582     return ret;
583   }
584 
585   public Matrix4f swigOpMulAssign(float s) {
586     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpMulAssign__SWIG_1(cast(void*)swigCPtr, s), false);
587     return ret;
588   }
589 
590   public Matrix4f swigOpDiv(float s) const {
591     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpDiv(cast(void*)swigCPtr, s), true);
592     return ret;
593   }
594 
595   public Matrix4f swigOpDivAssign(float s) {
596     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_swigOpDivAssign(cast(void*)swigCPtr, s), false);
597     return ret;
598   }
599 
600   public SWIGTYPE_p_OVR__Vector3T_float_t Transform(SWIGTYPE_p_OVR__Vector3T_float_t v) const {
601     SWIGTYPE_p_OVR__Vector3T_float_t ret = new SWIGTYPE_p_OVR__Vector3T_float_t(ovr_im.Matrix4f_Transform(cast(void*)swigCPtr, SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(v)), true);
602     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
603     return ret;
604   }
605 
606   public Matrix4f Transposed() const {
607     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Transposed(cast(void*)swigCPtr), true);
608     return ret;
609   }
610 
611   public void Transpose() {
612     ovr_im.Matrix4f_Transpose(cast(void*)swigCPtr);
613   }
614 
615   public float SubDet(size_t* rows, size_t* cols) const {
616     auto ret = ovr_im.Matrix4f_SubDet(cast(void*)swigCPtr, cast(void*)rows, cast(void*)cols);
617     return ret;
618   }
619 
620   public float Cofactor(size_t I, size_t J) const {
621     auto ret = ovr_im.Matrix4f_Cofactor(cast(void*)swigCPtr, I, J);
622     return ret;
623   }
624 
625   public float Determinant() const {
626     auto ret = ovr_im.Matrix4f_Determinant(cast(void*)swigCPtr);
627     return ret;
628   }
629 
630   public Matrix4f Adjugated() const {
631     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Adjugated(cast(void*)swigCPtr), true);
632     return ret;
633   }
634 
635   public Matrix4f Inverted() const {
636     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Inverted(cast(void*)swigCPtr), true);
637     return ret;
638   }
639 
640   public void Invert() {
641     ovr_im.Matrix4f_Invert(cast(void*)swigCPtr);
642   }
643 
644   public Matrix4f InvertedHomogeneousTransform() const {
645     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_InvertedHomogeneousTransform(cast(void*)swigCPtr), true);
646     return ret;
647   }
648 
649   public void InvertHomogeneousTransform() {
650     ovr_im.Matrix4f_InvertHomogeneousTransform(cast(void*)swigCPtr);
651   }
652 
653   public static Matrix4f AxisConversion(WorldAxes to, WorldAxes from) {
654     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_AxisConversion(WorldAxes.swigGetCPtr(to), WorldAxes.swigGetCPtr(from)), true);
655     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
656     return ret;
657   }
658 
659   public static Matrix4f Translation(SWIGTYPE_p_OVR__Vector3T_float_t v) {
660     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Translation__SWIG_0(SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(v)), true);
661     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
662     return ret;
663   }
664 
665   public static Matrix4f Translation(float x, float y, float z) {
666     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Translation__SWIG_1(x, y, z), true);
667     return ret;
668   }
669 
670   public static Matrix4f Translation(float x, float y) {
671     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Translation__SWIG_2(x, y), true);
672     return ret;
673   }
674 
675   public static Matrix4f Scaling(SWIGTYPE_p_OVR__Vector3T_float_t v) {
676     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Scaling__SWIG_0(SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(v)), true);
677     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
678     return ret;
679   }
680 
681   public static Matrix4f Scaling(float x, float y, float z) {
682     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Scaling__SWIG_1(x, y, z), true);
683     return ret;
684   }
685 
686   public static Matrix4f Scaling(float s) {
687     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Scaling__SWIG_2(s), true);
688     return ret;
689   }
690 
691   public static Matrix4f RotationAxis(Axis A, float angle, RotateDirection d, HandedSystem s) {
692     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_RotationAxis(cast(int)A, angle, cast(int)d, cast(int)s), true);
693     return ret;
694   }
695 
696   public static Matrix4f RotationX(float angle) {
697     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_RotationX(angle), true);
698     return ret;
699   }
700 
701   public static Matrix4f RotationY(float angle) {
702     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_RotationY(angle), true);
703     return ret;
704   }
705 
706   public static Matrix4f RotationZ(float angle) {
707     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_RotationZ(angle), true);
708     return ret;
709   }
710 
711   public static Matrix4f LookAtRH(SWIGTYPE_p_OVR__Vector3T_float_t eye, SWIGTYPE_p_OVR__Vector3T_float_t at, SWIGTYPE_p_OVR__Vector3T_float_t up) {
712     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_LookAtRH(SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(eye), SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(at), SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(up)), true);
713     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
714     return ret;
715   }
716 
717   public static Matrix4f LookAtLH(SWIGTYPE_p_OVR__Vector3T_float_t eye, SWIGTYPE_p_OVR__Vector3T_float_t at, SWIGTYPE_p_OVR__Vector3T_float_t up) {
718     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_LookAtLH(SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(eye), SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(at), SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(up)), true);
719     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
720     return ret;
721   }
722 
723   public static Matrix4f PerspectiveRH(float yfov, float aspect, float znear, float zfar) {
724     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_PerspectiveRH(yfov, aspect, znear, zfar), true);
725     return ret;
726   }
727 
728   public static Matrix4f PerspectiveLH(float yfov, float aspect, float znear, float zfar) {
729     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_PerspectiveLH(yfov, aspect, znear, zfar), true);
730     return ret;
731   }
732 
733   public static Matrix4f Ortho2D(float w, float h) {
734     Matrix4f ret = new Matrix4f(ovr_im.Matrix4f_Ortho2D(w, h), true);
735     return ret;
736   }
737 }
738 
739 class AtomicOpsRawBase {
740   private void* swigCPtr;
741   protected bool swigCMemOwn;
742 
743   public this(void* cObject, bool ownCObject) {
744     swigCPtr = cObject;
745     swigCMemOwn = ownCObject;
746   }
747 
748   public static void* swigGetCPtr(AtomicOpsRawBase obj) {
749     return (obj is null) ? null : obj.swigCPtr;
750   }
751 
752   mixin ovr_im.SwigOperatorDefinitions;
753 
754   ~this() {
755     dispose();
756   }
757 
758   public void dispose() {
759     synchronized(this) {
760       if (swigCPtr !is null) {
761         if (swigCMemOwn) {
762           swigCMemOwn = false;
763           ovr_im.delete_AtomicOpsRawBase(cast(void*)swigCPtr);
764         }
765         swigCPtr = null;
766       }
767     }
768   }
769 
770   public this() {
771     this(ovr_im.new_AtomicOpsRawBase(), true);
772   }
773 }
774 
775 class AtomicOpsRaw_4ByteImpl : AtomicOpsRawBase {
776   private void* swigCPtr;
777 
778   public this(void* cObject, bool ownCObject) {
779     super(ovr_im.AtomicOpsRaw_4ByteImpl_Upcast(cObject), ownCObject);
780     swigCPtr = cObject;
781   }
782 
783   public static void* swigGetCPtr(AtomicOpsRaw_4ByteImpl obj) {
784     return (obj is null) ? null : obj.swigCPtr;
785   }
786 
787   mixin ovr_im.SwigOperatorDefinitions;
788 
789   ~this() {
790     dispose();
791   }
792 
793   public override void dispose() {
794     synchronized(this) {
795       if (swigCPtr !is null) {
796         if (swigCMemOwn) {
797           swigCMemOwn = false;
798           ovr_im.delete_AtomicOpsRaw_4ByteImpl(cast(void*)swigCPtr);
799         }
800         swigCPtr = null;
801         super.dispose();
802       }
803     }
804   }
805 
806   public this() {
807     this(ovr_im.new_AtomicOpsRaw_4ByteImpl(), true);
808   }
809 }
810 
811 class AtomicOpsRaw_8ByteImpl : AtomicOpsRawBase {
812   private void* swigCPtr;
813 
814   public this(void* cObject, bool ownCObject) {
815     super(ovr_im.AtomicOpsRaw_8ByteImpl_Upcast(cObject), ownCObject);
816     swigCPtr = cObject;
817   }
818 
819   public static void* swigGetCPtr(AtomicOpsRaw_8ByteImpl obj) {
820     return (obj is null) ? null : obj.swigCPtr;
821   }
822 
823   mixin ovr_im.SwigOperatorDefinitions;
824 
825   ~this() {
826     dispose();
827   }
828 
829   public override void dispose() {
830     synchronized(this) {
831       if (swigCPtr !is null) {
832         if (swigCMemOwn) {
833           swigCMemOwn = false;
834           ovr_im.delete_AtomicOpsRaw_8ByteImpl(cast(void*)swigCPtr);
835         }
836         swigCPtr = null;
837         super.dispose();
838       }
839     }
840   }
841 
842   public this() {
843     this(ovr_im.new_AtomicOpsRaw_8ByteImpl(), true);
844   }
845 }
846 
847 class Lock {
848   private void* swigCPtr;
849   protected bool swigCMemOwn;
850 
851   public this(void* cObject, bool ownCObject) {
852     swigCPtr = cObject;
853     swigCMemOwn = ownCObject;
854   }
855 
856   public static void* swigGetCPtr(Lock obj) {
857     return (obj is null) ? null : obj.swigCPtr;
858   }
859 
860   mixin ovr_im.SwigOperatorDefinitions;
861 
862   ~this() {
863     dispose();
864   }
865 
866   public void dispose() {
867     synchronized(this) {
868       if (swigCPtr !is null) {
869         if (swigCMemOwn) {
870           swigCMemOwn = false;
871           ovr_im.delete_Lock(cast(void*)swigCPtr);
872         }
873         swigCPtr = null;
874       }
875     }
876   }
877 
878   public static void RecursiveAttr(SWIGTYPE_p_pthread_mutexattr_t value) @property {
879     ovr_im.Lock_RecursiveAttr_set(SWIGTYPE_p_pthread_mutexattr_t.swigGetCPtr(value));
880     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
881   }
882 
883   public static SWIGTYPE_p_pthread_mutexattr_t RecursiveAttr() @property {
884     SWIGTYPE_p_pthread_mutexattr_t ret = new SWIGTYPE_p_pthread_mutexattr_t(ovr_im.Lock_RecursiveAttr_get(), true);
885     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
886     return ret;
887   }
888 
889   public static void RecursiveAttrInit(bool value) @property {
890     ovr_im.Lock_RecursiveAttrInit_set(value);
891   }
892 
893   public static bool RecursiveAttrInit() @property {
894     bool ret = ovr_im.Lock_RecursiveAttrInit_get() ? true : false;
895     return ret;
896   }
897 
898   public this(uint dummy) {
899     this(ovr_im.new_Lock__SWIG_0(dummy), true);
900   }
901 
902   public this() {
903     this(ovr_im.new_Lock__SWIG_1(), true);
904   }
905 
906   public void DoLock() {
907     ovr_im.Lock_DoLock(cast(void*)swigCPtr);
908   }
909 
910   public void Unlock() {
911     ovr_im.Lock_Unlock(cast(void*)swigCPtr);
912   }
913 }
914 
915 class String {
916   private void* swigCPtr;
917   protected bool swigCMemOwn;
918 
919   public this(void* cObject, bool ownCObject) {
920     swigCPtr = cObject;
921     swigCMemOwn = ownCObject;
922   }
923 
924   public static void* swigGetCPtr(String obj) {
925     return (obj is null) ? null : obj.swigCPtr;
926   }
927 
928   mixin ovr_im.SwigOperatorDefinitions;
929 
930   ~this() {
931     dispose();
932   }
933 
934   public void dispose() {
935     synchronized(this) {
936       if (swigCPtr !is null) {
937         if (swigCMemOwn) {
938           swigCMemOwn = false;
939           ovr_im.delete_String(cast(void*)swigCPtr);
940         }
941         swigCPtr = null;
942       }
943     }
944   }
945 
946   public this() {
947     this(ovr_im.new_String__SWIG_1(), true);
948   }
949 
950   public this(string data) {
951     this(ovr_im.new_String__SWIG_2((data ? std..string.toStringz(data) : null)), true);
952   }
953 
954   public this(string data1, string pdata2, string pdata3) {
955     this(ovr_im.new_String__SWIG_3((data1 ? std..string.toStringz(data1) : null), (pdata2 ? std..string.toStringz(pdata2) : null), (pdata3 ? std..string.toStringz(pdata3) : null)), true);
956   }
957 
958   public this(string data1, string pdata2) {
959     this(ovr_im.new_String__SWIG_4((data1 ? std..string.toStringz(data1) : null), (pdata2 ? std..string.toStringz(pdata2) : null)), true);
960   }
961 
962   public this(string data, size_t buflen) {
963     this(ovr_im.new_String__SWIG_5((data ? std..string.toStringz(data) : null), buflen), true);
964   }
965 
966   public this(String src) {
967     this(ovr_im.new_String__SWIG_6(String.swigGetCPtr(src)), true);
968     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
969   }
970 
971   public this(StringBuffer src) {
972     this(ovr_im.new_String__SWIG_7(StringBuffer.swigGetCPtr(src)), true);
973     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
974   }
975 
976   public this(SWIGTYPE_p_OVR__String__InitStruct src, size_t size) {
977     this(ovr_im.new_String__SWIG_8(SWIGTYPE_p_OVR__String__InitStruct.swigGetCPtr(src), size), true);
978     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
979   }
980 
981   public this(SWIGTYPE_p_wchar_t data) {
982     this(ovr_im.new_String__SWIG_9(SWIGTYPE_p_wchar_t.swigGetCPtr(data)), true);
983   }
984 
985   public static void NullData(SWIGTYPE_p_DataDesc value) @property {
986     ovr_im.String_NullData_set(SWIGTYPE_p_DataDesc.swigGetCPtr(value));
987     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
988   }
989 
990   public static SWIGTYPE_p_DataDesc NullData() @property {
991     SWIGTYPE_p_DataDesc ret = new SWIGTYPE_p_DataDesc(ovr_im.String_NullData_get(), true);
992     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
993     return ret;
994   }
995 
996   public void Clear() {
997     ovr_im.String_Clear(cast(void*)swigCPtr);
998   }
999 
1000   public string ToCStr() const {
1001     string ret = std.conv.to!string(ovr_im.String_ToCStr(cast(void*)swigCPtr));
1002     return ret;
1003   }
1004 
1005   public size_t GetSize() const {
1006     auto ret = ovr_im.String_GetSize(cast(void*)swigCPtr);
1007     return ret;
1008   }
1009 
1010   public bool IsEmpty() const {
1011     bool ret = ovr_im.String_IsEmpty(cast(void*)swigCPtr) ? true : false;
1012     return ret;
1013   }
1014 
1015   public size_t GetLength() const {
1016     auto ret = ovr_im.String_GetLength(cast(void*)swigCPtr);
1017     return ret;
1018   }
1019 
1020   public SWIGTYPE_p_uint32_t GetCharAt(size_t index) const {
1021     SWIGTYPE_p_uint32_t ret = new SWIGTYPE_p_uint32_t(ovr_im.String_GetCharAt(cast(void*)swigCPtr, index), true);
1022     return ret;
1023   }
1024 
1025   public SWIGTYPE_p_uint32_t GetFirstCharAt(size_t index, char** offset) const {
1026     SWIGTYPE_p_uint32_t ret = new SWIGTYPE_p_uint32_t(ovr_im.String_GetFirstCharAt(cast(void*)swigCPtr, index, cast(void*)offset), true);
1027     return ret;
1028   }
1029 
1030   public SWIGTYPE_p_uint32_t GetNextChar(char** offset) const {
1031     SWIGTYPE_p_uint32_t ret = new SWIGTYPE_p_uint32_t(ovr_im.String_GetNextChar(cast(void*)swigCPtr, cast(void*)offset), true);
1032     return ret;
1033   }
1034 
1035   public void AppendChar(SWIGTYPE_p_uint32_t ch) {
1036     ovr_im.String_AppendChar(cast(void*)swigCPtr, SWIGTYPE_p_uint32_t.swigGetCPtr(ch));
1037     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1038   }
1039 
1040   public void AppendString(SWIGTYPE_p_wchar_t pstr, SWIGTYPE_p_ptrdiff_t len) {
1041     ovr_im.String_AppendString__SWIG_0(cast(void*)swigCPtr, SWIGTYPE_p_wchar_t.swigGetCPtr(pstr), SWIGTYPE_p_ptrdiff_t.swigGetCPtr(len));
1042     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1043   }
1044 
1045   public void AppendString(SWIGTYPE_p_wchar_t pstr) {
1046     ovr_im.String_AppendString__SWIG_1(cast(void*)swigCPtr, SWIGTYPE_p_wchar_t.swigGetCPtr(pstr));
1047   }
1048 
1049   public void AppendString(string putf8str, SWIGTYPE_p_ptrdiff_t utf8StrSz) {
1050     ovr_im.String_AppendString__SWIG_2(cast(void*)swigCPtr, (putf8str ? std..string.toStringz(putf8str) : null), SWIGTYPE_p_ptrdiff_t.swigGetCPtr(utf8StrSz));
1051     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1052   }
1053 
1054   public void AppendString(string putf8str) {
1055     ovr_im.String_AppendString__SWIG_3(cast(void*)swigCPtr, (putf8str ? std..string.toStringz(putf8str) : null));
1056   }
1057 
1058   public void AssignString(SWIGTYPE_p_OVR__String__InitStruct src, size_t size) {
1059     ovr_im.String_AssignString__SWIG_0(cast(void*)swigCPtr, SWIGTYPE_p_OVR__String__InitStruct.swigGetCPtr(src), size);
1060     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1061   }
1062 
1063   public void AssignString(string putf8str, size_t size) {
1064     ovr_im.String_AssignString__SWIG_1(cast(void*)swigCPtr, (putf8str ? std..string.toStringz(putf8str) : null), size);
1065   }
1066 
1067   public void Remove(size_t posAt, SWIGTYPE_p_ptrdiff_t len) {
1068     ovr_im.String_Remove__SWIG_0(cast(void*)swigCPtr, posAt, SWIGTYPE_p_ptrdiff_t.swigGetCPtr(len));
1069     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1070   }
1071 
1072   public void Remove(size_t posAt) {
1073     ovr_im.String_Remove__SWIG_1(cast(void*)swigCPtr, posAt);
1074   }
1075 
1076   public String Substring(size_t start, size_t end) const {
1077     String ret = new String(ovr_im.String_Substring(cast(void*)swigCPtr, start, end), true);
1078     return ret;
1079   }
1080 
1081   public String ToUpper() const {
1082     String ret = new String(ovr_im.String_ToUpper(cast(void*)swigCPtr), true);
1083     return ret;
1084   }
1085 
1086   public String ToLower() const {
1087     String ret = new String(ovr_im.String_ToLower(cast(void*)swigCPtr), true);
1088     return ret;
1089   }
1090 
1091   public String Insert(string substr, size_t posAt, SWIGTYPE_p_ptrdiff_t len) {
1092     String ret = new String(ovr_im.String_Insert__SWIG_0(cast(void*)swigCPtr, (substr ? std..string.toStringz(substr) : null), posAt, SWIGTYPE_p_ptrdiff_t.swigGetCPtr(len)), false);
1093     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1094     return ret;
1095   }
1096 
1097   public String Insert(string substr, size_t posAt) {
1098     String ret = new String(ovr_im.String_Insert__SWIG_1(cast(void*)swigCPtr, (substr ? std..string.toStringz(substr) : null), posAt), false);
1099     return ret;
1100   }
1101 
1102   public size_t InsertCharAt(SWIGTYPE_p_uint32_t c, size_t posAt) {
1103     auto ret = ovr_im.String_InsertCharAt(cast(void*)swigCPtr, SWIGTYPE_p_uint32_t.swigGetCPtr(c), posAt);
1104     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1105     return ret;
1106   }
1107 
1108   public size_t GetByteIndex(size_t index) const {
1109     auto ret = ovr_im.String_GetByteIndex(cast(void*)swigCPtr, index);
1110     return ret;
1111   }
1112 
1113   public static int CompareNoCase(string a, string b) {
1114     auto ret = ovr_im.String_CompareNoCase__SWIG_0((a ? std..string.toStringz(a) : null), (b ? std..string.toStringz(b) : null));
1115     return ret;
1116   }
1117 
1118   public static int CompareNoCase(string a, string b, SWIGTYPE_p_ptrdiff_t len) {
1119     auto ret = ovr_im.String_CompareNoCase__SWIG_1((a ? std..string.toStringz(a) : null), (b ? std..string.toStringz(b) : null), SWIGTYPE_p_ptrdiff_t.swigGetCPtr(len));
1120     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1121     return ret;
1122   }
1123 
1124   public static size_t BernsteinHashFunctionCIS(void* pdataIn, size_t size, size_t seed) {
1125     auto ret = ovr_im.String_BernsteinHashFunctionCIS__SWIG_0(cast(void*)pdataIn, size, seed);
1126     return ret;
1127   }
1128 
1129   public static size_t BernsteinHashFunctionCIS(void* pdataIn, size_t size) {
1130     auto ret = ovr_im.String_BernsteinHashFunctionCIS__SWIG_1(cast(void*)pdataIn, size);
1131     return ret;
1132   }
1133 
1134   public static size_t BernsteinHashFunction(void* pdataIn, size_t size, size_t seed) {
1135     auto ret = ovr_im.String_BernsteinHashFunction__SWIG_0(cast(void*)pdataIn, size, seed);
1136     return ret;
1137   }
1138 
1139   public static size_t BernsteinHashFunction(void* pdataIn, size_t size) {
1140     auto ret = ovr_im.String_BernsteinHashFunction__SWIG_1(cast(void*)pdataIn, size);
1141     return ret;
1142   }
1143 
1144   public static bool HasAbsolutePath(string path) {
1145     bool ret = ovr_im.String_HasAbsolutePath__SWIG_0((path ? std..string.toStringz(path) : null)) ? true : false;
1146     return ret;
1147   }
1148 
1149   public static bool HasExtension(string path) {
1150     bool ret = ovr_im.String_HasExtension__SWIG_0((path ? std..string.toStringz(path) : null)) ? true : false;
1151     return ret;
1152   }
1153 
1154   public static bool HasProtocol(string path) {
1155     bool ret = ovr_im.String_HasProtocol__SWIG_0((path ? std..string.toStringz(path) : null)) ? true : false;
1156     return ret;
1157   }
1158 
1159   public bool HasAbsolutePath() const {
1160     bool ret = ovr_im.String_HasAbsolutePath__SWIG_1(cast(void*)swigCPtr) ? true : false;
1161     return ret;
1162   }
1163 
1164   public bool HasExtension() const {
1165     bool ret = ovr_im.String_HasExtension__SWIG_1(cast(void*)swigCPtr) ? true : false;
1166     return ret;
1167   }
1168 
1169   public bool HasProtocol() const {
1170     bool ret = ovr_im.String_HasProtocol__SWIG_1(cast(void*)swigCPtr) ? true : false;
1171     return ret;
1172   }
1173 
1174   public String GetProtocol() const {
1175     String ret = new String(ovr_im.String_GetProtocol(cast(void*)swigCPtr), true);
1176     return ret;
1177   }
1178 
1179   public String GetPath() const {
1180     String ret = new String(ovr_im.String_GetPath(cast(void*)swigCPtr), true);
1181     return ret;
1182   }
1183 
1184   public String GetFilename() const {
1185     String ret = new String(ovr_im.String_GetFilename(cast(void*)swigCPtr), true);
1186     return ret;
1187   }
1188 
1189   public String GetExtension() const {
1190     String ret = new String(ovr_im.String_GetExtension(cast(void*)swigCPtr), true);
1191     return ret;
1192   }
1193 
1194   public void StripProtocol() {
1195     ovr_im.String_StripProtocol(cast(void*)swigCPtr);
1196   }
1197 
1198   public void StripExtension() {
1199     ovr_im.String_StripExtension(cast(void*)swigCPtr);
1200   }
1201 
1202   public void swigOpAddAssign(String src) {
1203     ovr_im.String_swigOpAddAssign__SWIG_0(cast(void*)swigCPtr, String.swigGetCPtr(src));
1204     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1205   }
1206 
1207   public void swigOpAddAssign(string psrc) {
1208     ovr_im.String_swigOpAddAssign__SWIG_1(cast(void*)swigCPtr, (psrc ? std..string.toStringz(psrc) : null));
1209   }
1210 
1211   public void swigOpAddAssign(SWIGTYPE_p_wchar_t psrc) {
1212     ovr_im.String_swigOpAddAssign__SWIG_2(cast(void*)swigCPtr, SWIGTYPE_p_wchar_t.swigGetCPtr(psrc));
1213   }
1214 
1215   public void swigOpAddAssign(char ch) {
1216     ovr_im.String_swigOpAddAssign__SWIG_3(cast(void*)swigCPtr, ch);
1217   }
1218 
1219   public String swigOpAdd(string str) const {
1220     String ret = new String(ovr_im.String_swigOpAdd__SWIG_0(cast(void*)swigCPtr, (str ? std..string.toStringz(str) : null)), true);
1221     return ret;
1222   }
1223 
1224   public String swigOpAdd(String src) const {
1225     String ret = new String(ovr_im.String_swigOpAdd__SWIG_1(cast(void*)swigCPtr, String.swigGetCPtr(src)), true);
1226     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1227     return ret;
1228   }
1229 
1230   public bool swigOpEquals(String str) const {
1231     bool ret = ovr_im.String_swigOpEquals__SWIG_0(cast(void*)swigCPtr, String.swigGetCPtr(str)) ? true : false;
1232     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1233     return ret;
1234   }
1235 
1236   public bool swigOpEquals(string str) const {
1237     bool ret = ovr_im.String_swigOpEquals__SWIG_1(cast(void*)swigCPtr, (str ? std..string.toStringz(str) : null)) ? true : false;
1238     return ret;
1239   }
1240 
1241   public bool swigOpLt(string pstr) const {
1242     bool ret = ovr_im.String_swigOpLt__SWIG_0(cast(void*)swigCPtr, (pstr ? std..string.toStringz(pstr) : null)) ? true : false;
1243     return ret;
1244   }
1245 
1246   public bool swigOpLt(String str) const {
1247     bool ret = ovr_im.String_swigOpLt__SWIG_1(cast(void*)swigCPtr, String.swigGetCPtr(str)) ? true : false;
1248     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1249     return ret;
1250   }
1251 
1252   public bool swigOpGt(string pstr) const {
1253     bool ret = ovr_im.String_swigOpGt__SWIG_0(cast(void*)swigCPtr, (pstr ? std..string.toStringz(pstr) : null)) ? true : false;
1254     return ret;
1255   }
1256 
1257   public bool swigOpGt(String str) const {
1258     bool ret = ovr_im.String_swigOpGt__SWIG_1(cast(void*)swigCPtr, String.swigGetCPtr(str)) ? true : false;
1259     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1260     return ret;
1261   }
1262 
1263   public int CompareNoCase(string pstr) const {
1264     auto ret = ovr_im.String_CompareNoCase__SWIG_2(cast(void*)swigCPtr, (pstr ? std..string.toStringz(pstr) : null));
1265     return ret;
1266   }
1267 
1268   public int CompareNoCase(String str) const {
1269     auto ret = ovr_im.String_CompareNoCase__SWIG_3(cast(void*)swigCPtr, String.swigGetCPtr(str));
1270     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1271     return ret;
1272   }
1273 
1274   public char opIndex(int index) const {
1275     auto ret = ovr_im.String_opIndex__SWIG_0(cast(void*)swigCPtr, index);
1276     return ret;
1277   }
1278 
1279   public char opIndex(size_t index) const {
1280     auto ret = ovr_im.String_opIndex__SWIG_1(cast(void*)swigCPtr, index);
1281     return ret;
1282   }
1283 
1284   public bool swigOpEquals(SWIGTYPE_p_OVR__String__NoCaseKey strKey) const {
1285     bool ret = ovr_im.String_swigOpEquals__SWIG_2(cast(void*)swigCPtr, SWIGTYPE_p_OVR__String__NoCaseKey.swigGetCPtr(strKey)) ? true : false;
1286     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1287     return ret;
1288   }
1289 }
1290 
1291 class StringBuffer {
1292   private void* swigCPtr;
1293   protected bool swigCMemOwn;
1294 
1295   public this(void* cObject, bool ownCObject) {
1296     swigCPtr = cObject;
1297     swigCMemOwn = ownCObject;
1298   }
1299 
1300   public static void* swigGetCPtr(StringBuffer obj) {
1301     return (obj is null) ? null : obj.swigCPtr;
1302   }
1303 
1304   mixin ovr_im.SwigOperatorDefinitions;
1305 
1306   ~this() {
1307     dispose();
1308   }
1309 
1310   public void dispose() {
1311     synchronized(this) {
1312       if (swigCPtr !is null) {
1313         if (swigCMemOwn) {
1314           swigCMemOwn = false;
1315           ovr_im.delete_StringBuffer(cast(void*)swigCPtr);
1316         }
1317         swigCPtr = null;
1318       }
1319     }
1320   }
1321 
1322   public this() {
1323     this(ovr_im.new_StringBuffer__SWIG_0(), true);
1324   }
1325 
1326   public this(size_t growSize) {
1327     this(ovr_im.new_StringBuffer__SWIG_1(growSize), true);
1328   }
1329 
1330   public this(string data) {
1331     this(ovr_im.new_StringBuffer__SWIG_2((data ? std..string.toStringz(data) : null)), true);
1332   }
1333 
1334   public this(string data, size_t buflen) {
1335     this(ovr_im.new_StringBuffer__SWIG_3((data ? std..string.toStringz(data) : null), buflen), true);
1336   }
1337 
1338   public this(String src) {
1339     this(ovr_im.new_StringBuffer__SWIG_4(String.swigGetCPtr(src)), true);
1340     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1341   }
1342 
1343   public this(StringBuffer src) {
1344     this(ovr_im.new_StringBuffer__SWIG_5(StringBuffer.swigGetCPtr(src)), true);
1345     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1346   }
1347 
1348   public this(SWIGTYPE_p_wchar_t data) {
1349     this(ovr_im.new_StringBuffer__SWIG_6(SWIGTYPE_p_wchar_t.swigGetCPtr(data)), true);
1350   }
1351 
1352   public size_t GetGrowSize() const {
1353     auto ret = ovr_im.StringBuffer_GetGrowSize(cast(void*)swigCPtr);
1354     return ret;
1355   }
1356 
1357   public void SetGrowSize(size_t growSize) {
1358     ovr_im.StringBuffer_SetGrowSize(cast(void*)swigCPtr, growSize);
1359   }
1360 
1361   public void Clear() {
1362     ovr_im.StringBuffer_Clear(cast(void*)swigCPtr);
1363   }
1364 
1365   public string ToCStr() const {
1366     string ret = std.conv.to!string(ovr_im.StringBuffer_ToCStr(cast(void*)swigCPtr));
1367     return ret;
1368   }
1369 
1370   public size_t GetSize() const {
1371     auto ret = ovr_im.StringBuffer_GetSize(cast(void*)swigCPtr);
1372     return ret;
1373   }
1374 
1375   public bool IsEmpty() const {
1376     bool ret = ovr_im.StringBuffer_IsEmpty(cast(void*)swigCPtr) ? true : false;
1377     return ret;
1378   }
1379 
1380   public size_t GetLength() const {
1381     auto ret = ovr_im.StringBuffer_GetLength(cast(void*)swigCPtr);
1382     return ret;
1383   }
1384 
1385   public SWIGTYPE_p_uint32_t GetCharAt(size_t index) const {
1386     SWIGTYPE_p_uint32_t ret = new SWIGTYPE_p_uint32_t(ovr_im.StringBuffer_GetCharAt(cast(void*)swigCPtr, index), true);
1387     return ret;
1388   }
1389 
1390   public SWIGTYPE_p_uint32_t GetFirstCharAt(size_t index, char** offset) const {
1391     SWIGTYPE_p_uint32_t ret = new SWIGTYPE_p_uint32_t(ovr_im.StringBuffer_GetFirstCharAt(cast(void*)swigCPtr, index, cast(void*)offset), true);
1392     return ret;
1393   }
1394 
1395   public SWIGTYPE_p_uint32_t GetNextChar(char** offset) const {
1396     SWIGTYPE_p_uint32_t ret = new SWIGTYPE_p_uint32_t(ovr_im.StringBuffer_GetNextChar(cast(void*)swigCPtr, cast(void*)offset), true);
1397     return ret;
1398   }
1399 
1400   public void Resize(size_t _size) {
1401     ovr_im.StringBuffer_Resize(cast(void*)swigCPtr, _size);
1402   }
1403 
1404   public void Reserve(size_t _size) {
1405     ovr_im.StringBuffer_Reserve(cast(void*)swigCPtr, _size);
1406   }
1407 
1408   public void AppendChar(SWIGTYPE_p_uint32_t ch) {
1409     ovr_im.StringBuffer_AppendChar(cast(void*)swigCPtr, SWIGTYPE_p_uint32_t.swigGetCPtr(ch));
1410     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1411   }
1412 
1413   public void AppendString(SWIGTYPE_p_wchar_t pstr, SWIGTYPE_p_ptrdiff_t len) {
1414     ovr_im.StringBuffer_AppendString__SWIG_0(cast(void*)swigCPtr, SWIGTYPE_p_wchar_t.swigGetCPtr(pstr), SWIGTYPE_p_ptrdiff_t.swigGetCPtr(len));
1415     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1416   }
1417 
1418   public void AppendString(SWIGTYPE_p_wchar_t pstr) {
1419     ovr_im.StringBuffer_AppendString__SWIG_1(cast(void*)swigCPtr, SWIGTYPE_p_wchar_t.swigGetCPtr(pstr));
1420   }
1421 
1422   public void AppendString(string putf8str, SWIGTYPE_p_ptrdiff_t utf8StrSz) {
1423     ovr_im.StringBuffer_AppendString__SWIG_2(cast(void*)swigCPtr, (putf8str ? std..string.toStringz(putf8str) : null), SWIGTYPE_p_ptrdiff_t.swigGetCPtr(utf8StrSz));
1424     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1425   }
1426 
1427   public void AppendString(string putf8str) {
1428     ovr_im.StringBuffer_AppendString__SWIG_3(cast(void*)swigCPtr, (putf8str ? std..string.toStringz(putf8str) : null));
1429   }
1430 
1431   public void AppendFormat(string format) {
1432     ovr_im.StringBuffer_AppendFormat(cast(void*)swigCPtr, (format ? std..string.toStringz(format) : null));
1433   }
1434 
1435   public void Insert(string substr, size_t posAt, SWIGTYPE_p_ptrdiff_t len) {
1436     ovr_im.StringBuffer_Insert__SWIG_0(cast(void*)swigCPtr, (substr ? std..string.toStringz(substr) : null), posAt, SWIGTYPE_p_ptrdiff_t.swigGetCPtr(len));
1437     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1438   }
1439 
1440   public void Insert(string substr, size_t posAt) {
1441     ovr_im.StringBuffer_Insert__SWIG_1(cast(void*)swigCPtr, (substr ? std..string.toStringz(substr) : null), posAt);
1442   }
1443 
1444   public size_t InsertCharAt(SWIGTYPE_p_uint32_t c, size_t posAt) {
1445     auto ret = ovr_im.StringBuffer_InsertCharAt(cast(void*)swigCPtr, SWIGTYPE_p_uint32_t.swigGetCPtr(c), posAt);
1446     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1447     return ret;
1448   }
1449 
1450   public void swigOpAddAssign(String src) {
1451     ovr_im.StringBuffer_swigOpAddAssign__SWIG_0(cast(void*)swigCPtr, String.swigGetCPtr(src));
1452     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1453   }
1454 
1455   public void swigOpAddAssign(string psrc) {
1456     ovr_im.StringBuffer_swigOpAddAssign__SWIG_1(cast(void*)swigCPtr, (psrc ? std..string.toStringz(psrc) : null));
1457   }
1458 
1459   public void swigOpAddAssign(SWIGTYPE_p_wchar_t psrc) {
1460     ovr_im.StringBuffer_swigOpAddAssign__SWIG_2(cast(void*)swigCPtr, SWIGTYPE_p_wchar_t.swigGetCPtr(psrc));
1461   }
1462 
1463   public void swigOpAddAssign(char ch) {
1464     ovr_im.StringBuffer_swigOpAddAssign__SWIG_3(cast(void*)swigCPtr, ch);
1465   }
1466 
1467   public char* opIndex(int index) {
1468     auto ret = cast(char*)ovr_im.StringBuffer_opIndex__SWIG_0(cast(void*)swigCPtr, index);
1469     return ret;
1470   }
1471 
1472   public char* opIndex(size_t index) {
1473     auto ret = cast(char*)ovr_im.StringBuffer_opIndex__SWIG_1(cast(void*)swigCPtr, index);
1474     return ret;
1475   }
1476 }
1477 
1478 class StringDataPtr {
1479   private void* swigCPtr;
1480   protected bool swigCMemOwn;
1481 
1482   public this(void* cObject, bool ownCObject) {
1483     swigCPtr = cObject;
1484     swigCMemOwn = ownCObject;
1485   }
1486 
1487   public static void* swigGetCPtr(StringDataPtr obj) {
1488     return (obj is null) ? null : obj.swigCPtr;
1489   }
1490 
1491   mixin ovr_im.SwigOperatorDefinitions;
1492 
1493   ~this() {
1494     dispose();
1495   }
1496 
1497   public void dispose() {
1498     synchronized(this) {
1499       if (swigCPtr !is null) {
1500         if (swigCMemOwn) {
1501           swigCMemOwn = false;
1502           ovr_im.delete_StringDataPtr(cast(void*)swigCPtr);
1503         }
1504         swigCPtr = null;
1505       }
1506     }
1507   }
1508 
1509   public this() {
1510     this(ovr_im.new_StringDataPtr__SWIG_0(), true);
1511   }
1512 
1513   public this(StringDataPtr p) {
1514     this(ovr_im.new_StringDataPtr__SWIG_1(StringDataPtr.swigGetCPtr(p)), true);
1515     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1516   }
1517 
1518   public this(string pstr, size_t sz) {
1519     this(ovr_im.new_StringDataPtr__SWIG_2((pstr ? std..string.toStringz(pstr) : null), sz), true);
1520   }
1521 
1522   public this(string pstr) {
1523     this(ovr_im.new_StringDataPtr__SWIG_3((pstr ? std..string.toStringz(pstr) : null)), true);
1524   }
1525 
1526   public this(String str) {
1527     this(ovr_im.new_StringDataPtr__SWIG_4(String.swigGetCPtr(str)), true);
1528     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1529   }
1530 
1531   public string ToCStr() const {
1532     string ret = std.conv.to!string(ovr_im.StringDataPtr_ToCStr(cast(void*)swigCPtr));
1533     return ret;
1534   }
1535 
1536   public size_t GetSize() const {
1537     auto ret = ovr_im.StringDataPtr_GetSize(cast(void*)swigCPtr);
1538     return ret;
1539   }
1540 
1541   public bool IsEmpty() const {
1542     bool ret = ovr_im.StringDataPtr_IsEmpty(cast(void*)swigCPtr) ? true : false;
1543     return ret;
1544   }
1545 
1546   public bool IsPrefix(StringDataPtr value) const {
1547     bool ret = ovr_im.StringDataPtr_IsPrefix(cast(void*)swigCPtr, StringDataPtr.swigGetCPtr(value)) ? true : false;
1548     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1549     return ret;
1550   }
1551 
1552   public bool IsSuffix(StringDataPtr value) const {
1553     bool ret = ovr_im.StringDataPtr_IsSuffix(cast(void*)swigCPtr, StringDataPtr.swigGetCPtr(value)) ? true : false;
1554     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1555     return ret;
1556   }
1557 
1558   public SWIGTYPE_p_ptrdiff_t FindChar(char c, size_t init_ind) const {
1559     SWIGTYPE_p_ptrdiff_t ret = new SWIGTYPE_p_ptrdiff_t(ovr_im.StringDataPtr_FindChar__SWIG_0(cast(void*)swigCPtr, c, init_ind), true);
1560     return ret;
1561   }
1562 
1563   public SWIGTYPE_p_ptrdiff_t FindChar(char c) const {
1564     SWIGTYPE_p_ptrdiff_t ret = new SWIGTYPE_p_ptrdiff_t(ovr_im.StringDataPtr_FindChar__SWIG_1(cast(void*)swigCPtr, c), true);
1565     return ret;
1566   }
1567 
1568   public SWIGTYPE_p_ptrdiff_t FindLastChar(char c, size_t init_ind) const {
1569     SWIGTYPE_p_ptrdiff_t ret = new SWIGTYPE_p_ptrdiff_t(ovr_im.StringDataPtr_FindLastChar__SWIG_0(cast(void*)swigCPtr, c, init_ind), true);
1570     return ret;
1571   }
1572 
1573   public SWIGTYPE_p_ptrdiff_t FindLastChar(char c) const {
1574     SWIGTYPE_p_ptrdiff_t ret = new SWIGTYPE_p_ptrdiff_t(ovr_im.StringDataPtr_FindLastChar__SWIG_1(cast(void*)swigCPtr, c), true);
1575     return ret;
1576   }
1577 
1578   public StringDataPtr GetTrimLeft(size_t size) const {
1579     StringDataPtr ret = new StringDataPtr(ovr_im.StringDataPtr_GetTrimLeft(cast(void*)swigCPtr, size), true);
1580     return ret;
1581   }
1582 
1583   public StringDataPtr GetTrimRight(size_t size) const {
1584     StringDataPtr ret = new StringDataPtr(ovr_im.StringDataPtr_GetTrimRight(cast(void*)swigCPtr, size), true);
1585     return ret;
1586   }
1587 
1588   public StringDataPtr GetNextToken(char separator) const {
1589     StringDataPtr ret = new StringDataPtr(ovr_im.StringDataPtr_GetNextToken__SWIG_0(cast(void*)swigCPtr, separator), true);
1590     return ret;
1591   }
1592 
1593   public StringDataPtr GetNextToken() const {
1594     StringDataPtr ret = new StringDataPtr(ovr_im.StringDataPtr_GetNextToken__SWIG_1(cast(void*)swigCPtr), true);
1595     return ret;
1596   }
1597 
1598   public StringDataPtr TrimLeft(size_t size) {
1599     StringDataPtr ret = new StringDataPtr(ovr_im.StringDataPtr_TrimLeft(cast(void*)swigCPtr, size), false);
1600     return ret;
1601   }
1602 
1603   public StringDataPtr TrimRight(size_t size) {
1604     StringDataPtr ret = new StringDataPtr(ovr_im.StringDataPtr_TrimRight(cast(void*)swigCPtr, size), false);
1605     return ret;
1606   }
1607 
1608   public string Begin() const {
1609     string ret = std.conv.to!string(ovr_im.StringDataPtr_Begin(cast(void*)swigCPtr));
1610     return ret;
1611   }
1612 
1613   public string End() const {
1614     string ret = std.conv.to!string(ovr_im.StringDataPtr_End(cast(void*)swigCPtr));
1615     return ret;
1616   }
1617 
1618   public bool swigOpEquals(StringDataPtr data) const {
1619     bool ret = ovr_im.StringDataPtr_swigOpEquals(cast(void*)swigCPtr, StringDataPtr.swigGetCPtr(data)) ? true : false;
1620     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1621     return ret;
1622   }
1623 }
1624 
1625 enum DeviceType {
1626   Device_None = 0,
1627   Device_Manager = 1,
1628   Device_HMD = 2,
1629   Device_Sensor = 3,
1630   Device_LatencyTester = 4,
1631   Device_BootLoader = 5,
1632   Device_All = 0xFF
1633 }
1634 
1635 class DeviceHandle {
1636   private void* swigCPtr;
1637   protected bool swigCMemOwn;
1638 
1639   public this(void* cObject, bool ownCObject) {
1640     swigCPtr = cObject;
1641     swigCMemOwn = ownCObject;
1642   }
1643 
1644   public static void* swigGetCPtr(DeviceHandle obj) {
1645     return (obj is null) ? null : obj.swigCPtr;
1646   }
1647 
1648   mixin ovr_im.SwigOperatorDefinitions;
1649 
1650   ~this() {
1651     dispose();
1652   }
1653 
1654   public void dispose() {
1655     synchronized(this) {
1656       if (swigCPtr !is null) {
1657         if (swigCMemOwn) {
1658           swigCMemOwn = false;
1659           ovr_im.delete_DeviceHandle(cast(void*)swigCPtr);
1660         }
1661         swigCPtr = null;
1662       }
1663     }
1664   }
1665 
1666   public this() {
1667     this(ovr_im.new_DeviceHandle__SWIG_0(), true);
1668   }
1669 
1670   public this(DeviceHandle src) {
1671     this(ovr_im.new_DeviceHandle__SWIG_1(DeviceHandle.swigGetCPtr(src)), true);
1672     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1673   }
1674 
1675   public bool swigOpEquals(DeviceHandle other) const {
1676     bool ret = ovr_im.DeviceHandle_swigOpEquals(cast(void*)swigCPtr, DeviceHandle.swigGetCPtr(other)) ? true : false;
1677     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1678     return ret;
1679   }
1680 
1681   public DeviceBase GetDevice_AddRef() const {
1682     void* cPtr = ovr_im.DeviceHandle_GetDevice_AddRef(cast(void*)swigCPtr);
1683     DeviceBase ret = (cPtr is null) ? null : new DeviceBase(cPtr, false);
1684     return ret;
1685   }
1686 
1687   public DeviceType GetType() const {
1688     DeviceType ret = cast(DeviceType)ovr_im.DeviceHandle_GetType(cast(void*)swigCPtr);
1689     return ret;
1690   }
1691 
1692   public bool GetDeviceInfo(DeviceInfo info) const {
1693     bool ret = ovr_im.DeviceHandle_GetDeviceInfo(cast(void*)swigCPtr, DeviceInfo.swigGetCPtr(info)) ? true : false;
1694     return ret;
1695   }
1696 
1697   public bool IsAvailable() const {
1698     bool ret = ovr_im.DeviceHandle_IsAvailable(cast(void*)swigCPtr) ? true : false;
1699     return ret;
1700   }
1701 
1702   public bool IsCreated() const {
1703     bool ret = ovr_im.DeviceHandle_IsCreated(cast(void*)swigCPtr) ? true : false;
1704     return ret;
1705   }
1706 
1707   public bool IsDevice(DeviceBase arg0) const {
1708     bool ret = ovr_im.DeviceHandle_IsDevice(cast(void*)swigCPtr, DeviceBase.swigGetCPtr(arg0)) ? true : false;
1709     return ret;
1710   }
1711 
1712   public DeviceBase CreateDevice() {
1713     void* cPtr = ovr_im.DeviceHandle_CreateDevice(cast(void*)swigCPtr);
1714     DeviceBase ret = (cPtr is null) ? null : new DeviceBase(cPtr, false);
1715     return ret;
1716   }
1717 
1718   public void Clear() {
1719     ovr_im.DeviceHandle_Clear(cast(void*)swigCPtr);
1720   }
1721 }
1722 
1723 enum MessageType {
1724   Message_None = 0,
1725   Message_DeviceAdded = ((DeviceType.Device_Manager << 8)|0),
1726   Message_DeviceRemoved = ((DeviceType.Device_Manager << 8)|1),
1727   Message_BodyFrame = ((DeviceType.Device_Sensor << 8)|0),
1728   Message_LatencyTestSamples = ((DeviceType.Device_LatencyTester << 8)|0),
1729   Message_LatencyTestColorDetected = ((DeviceType.Device_LatencyTester << 8)|1),
1730   Message_LatencyTestStarted = ((DeviceType.Device_LatencyTester << 8)|2),
1731   Message_LatencyTestButton = ((DeviceType.Device_LatencyTester << 8)|3)
1732 }
1733 
1734 class Message {
1735   private void* swigCPtr;
1736   protected bool swigCMemOwn;
1737 
1738   public this(void* cObject, bool ownCObject) {
1739     swigCPtr = cObject;
1740     swigCMemOwn = ownCObject;
1741   }
1742 
1743   public static void* swigGetCPtr(Message obj) {
1744     return (obj is null) ? null : obj.swigCPtr;
1745   }
1746 
1747   mixin ovr_im.SwigOperatorDefinitions;
1748 
1749   ~this() {
1750     dispose();
1751   }
1752 
1753   public void dispose() {
1754     synchronized(this) {
1755       if (swigCPtr !is null) {
1756         if (swigCMemOwn) {
1757           swigCMemOwn = false;
1758           ovr_im.delete_Message(cast(void*)swigCPtr);
1759         }
1760         swigCPtr = null;
1761       }
1762     }
1763   }
1764 
1765   public this(MessageType type, DeviceBase pdev) {
1766     this(ovr_im.new_Message__SWIG_0(cast(int)type, DeviceBase.swigGetCPtr(pdev)), true);
1767   }
1768 
1769   public this(MessageType type) {
1770     this(ovr_im.new_Message__SWIG_1(cast(int)type), true);
1771   }
1772 
1773   public this() {
1774     this(ovr_im.new_Message__SWIG_2(), true);
1775   }
1776 
1777   public void Type(MessageType value) @property {
1778     ovr_im.Message_Type_set(cast(void*)swigCPtr, cast(int)value);
1779   }
1780 
1781   public MessageType Type() @property const {
1782     MessageType ret = cast(MessageType)ovr_im.Message_Type_get(cast(void*)swigCPtr);
1783     return ret;
1784   }
1785 
1786   public void pDevice(DeviceBase value) @property {
1787     ovr_im.Message_pDevice_set(cast(void*)swigCPtr, DeviceBase.swigGetCPtr(value));
1788   }
1789 
1790   public DeviceBase pDevice() @property const {
1791     void* cPtr = ovr_im.Message_pDevice_get(cast(void*)swigCPtr);
1792     DeviceBase ret = (cPtr is null) ? null : new DeviceBase(cPtr, false);
1793     return ret;
1794   }
1795 }
1796 
1797 class MessageBodyFrame : Message {
1798   private void* swigCPtr;
1799 
1800   public this(void* cObject, bool ownCObject) {
1801     super(ovr_im.MessageBodyFrame_Upcast(cObject), ownCObject);
1802     swigCPtr = cObject;
1803   }
1804 
1805   public static void* swigGetCPtr(MessageBodyFrame obj) {
1806     return (obj is null) ? null : obj.swigCPtr;
1807   }
1808 
1809   mixin ovr_im.SwigOperatorDefinitions;
1810 
1811   ~this() {
1812     dispose();
1813   }
1814 
1815   public override void dispose() {
1816     synchronized(this) {
1817       if (swigCPtr !is null) {
1818         if (swigCMemOwn) {
1819           swigCMemOwn = false;
1820           ovr_im.delete_MessageBodyFrame(cast(void*)swigCPtr);
1821         }
1822         swigCPtr = null;
1823         super.dispose();
1824       }
1825     }
1826   }
1827 
1828   public this(DeviceBase dev) {
1829     this(ovr_im.new_MessageBodyFrame(DeviceBase.swigGetCPtr(dev)), true);
1830   }
1831 
1832   public void Acceleration(SWIGTYPE_p_OVR__Vector3T_float_t value) @property {
1833     ovr_im.MessageBodyFrame_Acceleration_set(cast(void*)swigCPtr, SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(value));
1834   }
1835 
1836   public SWIGTYPE_p_OVR__Vector3T_float_t Acceleration() @property const {
1837     void* cPtr = ovr_im.MessageBodyFrame_Acceleration_get(cast(void*)swigCPtr);
1838     SWIGTYPE_p_OVR__Vector3T_float_t ret = (cPtr is null) ? null : new SWIGTYPE_p_OVR__Vector3T_float_t(cPtr, false);
1839     return ret;
1840   }
1841 
1842   public void RotationRate(SWIGTYPE_p_OVR__Vector3T_float_t value) @property {
1843     ovr_im.MessageBodyFrame_RotationRate_set(cast(void*)swigCPtr, SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(value));
1844   }
1845 
1846   public SWIGTYPE_p_OVR__Vector3T_float_t RotationRate() @property const {
1847     void* cPtr = ovr_im.MessageBodyFrame_RotationRate_get(cast(void*)swigCPtr);
1848     SWIGTYPE_p_OVR__Vector3T_float_t ret = (cPtr is null) ? null : new SWIGTYPE_p_OVR__Vector3T_float_t(cPtr, false);
1849     return ret;
1850   }
1851 
1852   public void MagneticField(SWIGTYPE_p_OVR__Vector3T_float_t value) @property {
1853     ovr_im.MessageBodyFrame_MagneticField_set(cast(void*)swigCPtr, SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(value));
1854   }
1855 
1856   public SWIGTYPE_p_OVR__Vector3T_float_t MagneticField() @property const {
1857     void* cPtr = ovr_im.MessageBodyFrame_MagneticField_get(cast(void*)swigCPtr);
1858     SWIGTYPE_p_OVR__Vector3T_float_t ret = (cPtr is null) ? null : new SWIGTYPE_p_OVR__Vector3T_float_t(cPtr, false);
1859     return ret;
1860   }
1861 
1862   public void Temperature(float value) @property {
1863     ovr_im.MessageBodyFrame_Temperature_set(cast(void*)swigCPtr, value);
1864   }
1865 
1866   public float Temperature() @property const {
1867     auto ret = ovr_im.MessageBodyFrame_Temperature_get(cast(void*)swigCPtr);
1868     return ret;
1869   }
1870 
1871   public void TimeDelta(float value) @property {
1872     ovr_im.MessageBodyFrame_TimeDelta_set(cast(void*)swigCPtr, value);
1873   }
1874 
1875   public float TimeDelta() @property const {
1876     auto ret = ovr_im.MessageBodyFrame_TimeDelta_get(cast(void*)swigCPtr);
1877     return ret;
1878   }
1879 }
1880 
1881 class MessageDeviceStatus : Message {
1882   private void* swigCPtr;
1883 
1884   public this(void* cObject, bool ownCObject) {
1885     super(ovr_im.MessageDeviceStatus_Upcast(cObject), ownCObject);
1886     swigCPtr = cObject;
1887   }
1888 
1889   public static void* swigGetCPtr(MessageDeviceStatus obj) {
1890     return (obj is null) ? null : obj.swigCPtr;
1891   }
1892 
1893   mixin ovr_im.SwigOperatorDefinitions;
1894 
1895   ~this() {
1896     dispose();
1897   }
1898 
1899   public override void dispose() {
1900     synchronized(this) {
1901       if (swigCPtr !is null) {
1902         if (swigCMemOwn) {
1903           swigCMemOwn = false;
1904           ovr_im.delete_MessageDeviceStatus(cast(void*)swigCPtr);
1905         }
1906         swigCPtr = null;
1907         super.dispose();
1908       }
1909     }
1910   }
1911 
1912   public this(MessageType type, DeviceBase dev, DeviceHandle hdev) {
1913     this(ovr_im.new_MessageDeviceStatus(cast(int)type, DeviceBase.swigGetCPtr(dev), DeviceHandle.swigGetCPtr(hdev)), true);
1914     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1915   }
1916 
1917   public void Handle(DeviceHandle value) @property {
1918     ovr_im.MessageDeviceStatus_Handle_set(cast(void*)swigCPtr, DeviceHandle.swigGetCPtr(value));
1919   }
1920 
1921   public DeviceHandle Handle() @property const {
1922     void* cPtr = ovr_im.MessageDeviceStatus_Handle_get(cast(void*)swigCPtr);
1923     DeviceHandle ret = (cPtr is null) ? null : new DeviceHandle(cPtr, false);
1924     return ret;
1925   }
1926 }
1927 
1928 class MessageLatencyTestSamples : Message {
1929   private void* swigCPtr;
1930 
1931   public this(void* cObject, bool ownCObject) {
1932     super(ovr_im.MessageLatencyTestSamples_Upcast(cObject), ownCObject);
1933     swigCPtr = cObject;
1934   }
1935 
1936   public static void* swigGetCPtr(MessageLatencyTestSamples obj) {
1937     return (obj is null) ? null : obj.swigCPtr;
1938   }
1939 
1940   mixin ovr_im.SwigOperatorDefinitions;
1941 
1942   ~this() {
1943     dispose();
1944   }
1945 
1946   public override void dispose() {
1947     synchronized(this) {
1948       if (swigCPtr !is null) {
1949         if (swigCMemOwn) {
1950           swigCMemOwn = false;
1951           ovr_im.delete_MessageLatencyTestSamples(cast(void*)swigCPtr);
1952         }
1953         swigCPtr = null;
1954         super.dispose();
1955       }
1956     }
1957   }
1958 
1959   public this(DeviceBase dev) {
1960     this(ovr_im.new_MessageLatencyTestSamples(DeviceBase.swigGetCPtr(dev)), true);
1961   }
1962 
1963   public void Samples(SWIGTYPE_p_ArrayT_Color_t value) @property {
1964     ovr_im.MessageLatencyTestSamples_Samples_set(cast(void*)swigCPtr, SWIGTYPE_p_ArrayT_Color_t.swigGetCPtr(value));
1965     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1966   }
1967 
1968   public SWIGTYPE_p_ArrayT_Color_t Samples() @property const {
1969     SWIGTYPE_p_ArrayT_Color_t ret = new SWIGTYPE_p_ArrayT_Color_t(ovr_im.MessageLatencyTestSamples_Samples_get(cast(void*)swigCPtr), true);
1970     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
1971     return ret;
1972   }
1973 }
1974 
1975 class MessageLatencyTestColorDetected : Message {
1976   private void* swigCPtr;
1977 
1978   public this(void* cObject, bool ownCObject) {
1979     super(ovr_im.MessageLatencyTestColorDetected_Upcast(cObject), ownCObject);
1980     swigCPtr = cObject;
1981   }
1982 
1983   public static void* swigGetCPtr(MessageLatencyTestColorDetected obj) {
1984     return (obj is null) ? null : obj.swigCPtr;
1985   }
1986 
1987   mixin ovr_im.SwigOperatorDefinitions;
1988 
1989   ~this() {
1990     dispose();
1991   }
1992 
1993   public override void dispose() {
1994     synchronized(this) {
1995       if (swigCPtr !is null) {
1996         if (swigCMemOwn) {
1997           swigCMemOwn = false;
1998           ovr_im.delete_MessageLatencyTestColorDetected(cast(void*)swigCPtr);
1999         }
2000         swigCPtr = null;
2001         super.dispose();
2002       }
2003     }
2004   }
2005 
2006   public this(DeviceBase dev) {
2007     this(ovr_im.new_MessageLatencyTestColorDetected(DeviceBase.swigGetCPtr(dev)), true);
2008   }
2009 
2010   public void Elapsed(SWIGTYPE_p_uint16_t value) @property {
2011     ovr_im.MessageLatencyTestColorDetected_Elapsed_set(cast(void*)swigCPtr, SWIGTYPE_p_uint16_t.swigGetCPtr(value));
2012     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2013   }
2014 
2015   public SWIGTYPE_p_uint16_t Elapsed() @property const {
2016     SWIGTYPE_p_uint16_t ret = new SWIGTYPE_p_uint16_t(ovr_im.MessageLatencyTestColorDetected_Elapsed_get(cast(void*)swigCPtr), true);
2017     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2018     return ret;
2019   }
2020 
2021   public void DetectedValue(SWIGTYPE_p_Color value) @property {
2022     ovr_im.MessageLatencyTestColorDetected_DetectedValue_set(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(value));
2023     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2024   }
2025 
2026   public SWIGTYPE_p_Color DetectedValue() @property const {
2027     SWIGTYPE_p_Color ret = new SWIGTYPE_p_Color(ovr_im.MessageLatencyTestColorDetected_DetectedValue_get(cast(void*)swigCPtr), true);
2028     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2029     return ret;
2030   }
2031 
2032   public void TargetValue(SWIGTYPE_p_Color value) @property {
2033     ovr_im.MessageLatencyTestColorDetected_TargetValue_set(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(value));
2034     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2035   }
2036 
2037   public SWIGTYPE_p_Color TargetValue() @property const {
2038     SWIGTYPE_p_Color ret = new SWIGTYPE_p_Color(ovr_im.MessageLatencyTestColorDetected_TargetValue_get(cast(void*)swigCPtr), true);
2039     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2040     return ret;
2041   }
2042 }
2043 
2044 class MessageLatencyTestStarted : Message {
2045   private void* swigCPtr;
2046 
2047   public this(void* cObject, bool ownCObject) {
2048     super(ovr_im.MessageLatencyTestStarted_Upcast(cObject), ownCObject);
2049     swigCPtr = cObject;
2050   }
2051 
2052   public static void* swigGetCPtr(MessageLatencyTestStarted obj) {
2053     return (obj is null) ? null : obj.swigCPtr;
2054   }
2055 
2056   mixin ovr_im.SwigOperatorDefinitions;
2057 
2058   ~this() {
2059     dispose();
2060   }
2061 
2062   public override void dispose() {
2063     synchronized(this) {
2064       if (swigCPtr !is null) {
2065         if (swigCMemOwn) {
2066           swigCMemOwn = false;
2067           ovr_im.delete_MessageLatencyTestStarted(cast(void*)swigCPtr);
2068         }
2069         swigCPtr = null;
2070         super.dispose();
2071       }
2072     }
2073   }
2074 
2075   public this(DeviceBase dev) {
2076     this(ovr_im.new_MessageLatencyTestStarted(DeviceBase.swigGetCPtr(dev)), true);
2077   }
2078 
2079   public void TargetValue(SWIGTYPE_p_Color value) @property {
2080     ovr_im.MessageLatencyTestStarted_TargetValue_set(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(value));
2081     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2082   }
2083 
2084   public SWIGTYPE_p_Color TargetValue() @property const {
2085     SWIGTYPE_p_Color ret = new SWIGTYPE_p_Color(ovr_im.MessageLatencyTestStarted_TargetValue_get(cast(void*)swigCPtr), true);
2086     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2087     return ret;
2088   }
2089 }
2090 
2091 class MessageLatencyTestButton : Message {
2092   private void* swigCPtr;
2093 
2094   public this(void* cObject, bool ownCObject) {
2095     super(ovr_im.MessageLatencyTestButton_Upcast(cObject), ownCObject);
2096     swigCPtr = cObject;
2097   }
2098 
2099   public static void* swigGetCPtr(MessageLatencyTestButton obj) {
2100     return (obj is null) ? null : obj.swigCPtr;
2101   }
2102 
2103   mixin ovr_im.SwigOperatorDefinitions;
2104 
2105   ~this() {
2106     dispose();
2107   }
2108 
2109   public override void dispose() {
2110     synchronized(this) {
2111       if (swigCPtr !is null) {
2112         if (swigCMemOwn) {
2113           swigCMemOwn = false;
2114           ovr_im.delete_MessageLatencyTestButton(cast(void*)swigCPtr);
2115         }
2116         swigCPtr = null;
2117         super.dispose();
2118       }
2119     }
2120   }
2121 
2122   public this(DeviceBase dev) {
2123     this(ovr_im.new_MessageLatencyTestButton(DeviceBase.swigGetCPtr(dev)), true);
2124   }
2125 }
2126 
2127 class SensorFusion : NewOverrideBase {
2128   private void* swigCPtr;
2129 
2130   public this(void* cObject, bool ownCObject) {
2131     super(ovr_im.SensorFusion_Upcast(cObject), ownCObject);
2132     swigCPtr = cObject;
2133   }
2134 
2135   public static void* swigGetCPtr(SensorFusion obj) {
2136     return (obj is null) ? null : obj.swigCPtr;
2137   }
2138 
2139   mixin ovr_im.SwigOperatorDefinitions;
2140 
2141   ~this() {
2142     dispose();
2143   }
2144 
2145   public override void dispose() {
2146     synchronized(this) {
2147       if (swigCPtr !is null) {
2148         if (swigCMemOwn) {
2149           swigCMemOwn = false;
2150           ovr_im.delete_SensorFusion(cast(void*)swigCPtr);
2151         }
2152         swigCPtr = null;
2153         super.dispose();
2154       }
2155     }
2156   }
2157 
2158   public this(SensorDevice sensor) {
2159     this(ovr_im.new_SensorFusion__SWIG_0(SensorDevice.swigGetCPtr(sensor)), true);
2160   }
2161 
2162   public this() {
2163     this(ovr_im.new_SensorFusion__SWIG_1(), true);
2164   }
2165 
2166   public bool AttachToSensor(SensorDevice sensor) {
2167     bool ret = ovr_im.SensorFusion_AttachToSensor(cast(void*)swigCPtr, SensorDevice.swigGetCPtr(sensor)) ? true : false;
2168     return ret;
2169   }
2170 
2171   public bool IsAttachedToSensor() const {
2172     bool ret = ovr_im.SensorFusion_IsAttachedToSensor(cast(void*)swigCPtr) ? true : false;
2173     return ret;
2174   }
2175 
2176   public SWIGTYPE_p_OVR__QuatT_float_t GetOrientation() const {
2177     SWIGTYPE_p_OVR__QuatT_float_t ret = new SWIGTYPE_p_OVR__QuatT_float_t(ovr_im.SensorFusion_GetOrientation(cast(void*)swigCPtr), true);
2178     return ret;
2179   }
2180 
2181   public SWIGTYPE_p_OVR__QuatT_float_t GetPredictedOrientation(float predictDt) {
2182     SWIGTYPE_p_OVR__QuatT_float_t ret = new SWIGTYPE_p_OVR__QuatT_float_t(ovr_im.SensorFusion_GetPredictedOrientation__SWIG_0(cast(void*)swigCPtr, predictDt), true);
2183     return ret;
2184   }
2185 
2186   public SWIGTYPE_p_OVR__QuatT_float_t GetPredictedOrientation() {
2187     SWIGTYPE_p_OVR__QuatT_float_t ret = new SWIGTYPE_p_OVR__QuatT_float_t(ovr_im.SensorFusion_GetPredictedOrientation__SWIG_1(cast(void*)swigCPtr), true);
2188     return ret;
2189   }
2190 
2191   public SWIGTYPE_p_OVR__Vector3T_float_t GetAcceleration() const {
2192     SWIGTYPE_p_OVR__Vector3T_float_t ret = new SWIGTYPE_p_OVR__Vector3T_float_t(ovr_im.SensorFusion_GetAcceleration(cast(void*)swigCPtr), true);
2193     return ret;
2194   }
2195 
2196   public SWIGTYPE_p_OVR__Vector3T_float_t GetAngularVelocity() const {
2197     SWIGTYPE_p_OVR__Vector3T_float_t ret = new SWIGTYPE_p_OVR__Vector3T_float_t(ovr_im.SensorFusion_GetAngularVelocity(cast(void*)swigCPtr), true);
2198     return ret;
2199   }
2200 
2201   public SWIGTYPE_p_OVR__Vector3T_float_t GetMagnetometer() const {
2202     SWIGTYPE_p_OVR__Vector3T_float_t ret = new SWIGTYPE_p_OVR__Vector3T_float_t(ovr_im.SensorFusion_GetMagnetometer(cast(void*)swigCPtr), true);
2203     return ret;
2204   }
2205 
2206   public SWIGTYPE_p_OVR__Vector3T_float_t GetCalibratedMagnetometer() const {
2207     SWIGTYPE_p_OVR__Vector3T_float_t ret = new SWIGTYPE_p_OVR__Vector3T_float_t(ovr_im.SensorFusion_GetCalibratedMagnetometer(cast(void*)swigCPtr), true);
2208     return ret;
2209   }
2210 
2211   public void Reset() {
2212     ovr_im.SensorFusion_Reset(cast(void*)swigCPtr);
2213   }
2214 
2215   public void EnableMotionTracking(bool enable) {
2216     ovr_im.SensorFusion_EnableMotionTracking__SWIG_0(cast(void*)swigCPtr, enable);
2217   }
2218 
2219   public void EnableMotionTracking() {
2220     ovr_im.SensorFusion_EnableMotionTracking__SWIG_1(cast(void*)swigCPtr);
2221   }
2222 
2223   public bool IsMotionTrackingEnabled() const {
2224     bool ret = ovr_im.SensorFusion_IsMotionTrackingEnabled(cast(void*)swigCPtr) ? true : false;
2225     return ret;
2226   }
2227 
2228   public float GetPredictionDelta() const {
2229     auto ret = ovr_im.SensorFusion_GetPredictionDelta(cast(void*)swigCPtr);
2230     return ret;
2231   }
2232 
2233   public void SetPrediction(float dt, bool enable) {
2234     ovr_im.SensorFusion_SetPrediction__SWIG_0(cast(void*)swigCPtr, dt, enable);
2235   }
2236 
2237   public void SetPrediction(float dt) {
2238     ovr_im.SensorFusion_SetPrediction__SWIG_1(cast(void*)swigCPtr, dt);
2239   }
2240 
2241   public void SetPredictionEnabled(bool enable) {
2242     ovr_im.SensorFusion_SetPredictionEnabled__SWIG_0(cast(void*)swigCPtr, enable);
2243   }
2244 
2245   public void SetPredictionEnabled() {
2246     ovr_im.SensorFusion_SetPredictionEnabled__SWIG_1(cast(void*)swigCPtr);
2247   }
2248 
2249   public bool IsPredictionEnabled() {
2250     bool ret = ovr_im.SensorFusion_IsPredictionEnabled(cast(void*)swigCPtr) ? true : false;
2251     return ret;
2252   }
2253 
2254   public void SetGravityEnabled(bool enableGravity) {
2255     ovr_im.SensorFusion_SetGravityEnabled(cast(void*)swigCPtr, enableGravity);
2256   }
2257 
2258   public bool IsGravityEnabled() const {
2259     bool ret = ovr_im.SensorFusion_IsGravityEnabled(cast(void*)swigCPtr) ? true : false;
2260     return ret;
2261   }
2262 
2263   public float GetAccelGain() const {
2264     auto ret = ovr_im.SensorFusion_GetAccelGain(cast(void*)swigCPtr);
2265     return ret;
2266   }
2267 
2268   public void SetAccelGain(float ag) {
2269     ovr_im.SensorFusion_SetAccelGain(cast(void*)swigCPtr, ag);
2270   }
2271 
2272   public bool SaveMagCalibration(string calibrationName) const {
2273     bool ret = ovr_im.SensorFusion_SaveMagCalibration__SWIG_0(cast(void*)swigCPtr, (calibrationName ? std..string.toStringz(calibrationName) : null)) ? true : false;
2274     return ret;
2275   }
2276 
2277   public bool SaveMagCalibration() const {
2278     bool ret = ovr_im.SensorFusion_SaveMagCalibration__SWIG_1(cast(void*)swigCPtr) ? true : false;
2279     return ret;
2280   }
2281 
2282   public bool LoadMagCalibration(string calibrationName) {
2283     bool ret = ovr_im.SensorFusion_LoadMagCalibration__SWIG_0(cast(void*)swigCPtr, (calibrationName ? std..string.toStringz(calibrationName) : null)) ? true : false;
2284     return ret;
2285   }
2286 
2287   public bool LoadMagCalibration() {
2288     bool ret = ovr_im.SensorFusion_LoadMagCalibration__SWIG_1(cast(void*)swigCPtr) ? true : false;
2289     return ret;
2290   }
2291 
2292   public void SetYawCorrectionEnabled(bool enable) {
2293     ovr_im.SensorFusion_SetYawCorrectionEnabled(cast(void*)swigCPtr, enable);
2294   }
2295 
2296   public bool IsYawCorrectionEnabled() const {
2297     bool ret = ovr_im.SensorFusion_IsYawCorrectionEnabled(cast(void*)swigCPtr) ? true : false;
2298     return ret;
2299   }
2300 
2301   public void SetMagCalibration(Matrix4f m) {
2302     ovr_im.SensorFusion_SetMagCalibration(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(m));
2303     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2304   }
2305 
2306   public Matrix4f GetMagCalibration() const {
2307     Matrix4f ret = new Matrix4f(ovr_im.SensorFusion_GetMagCalibration(cast(void*)swigCPtr), true);
2308     return ret;
2309   }
2310 
2311   public SWIGTYPE_p_time_t GetMagCalibrationTime() const {
2312     SWIGTYPE_p_time_t ret = new SWIGTYPE_p_time_t(ovr_im.SensorFusion_GetMagCalibrationTime(cast(void*)swigCPtr), true);
2313     return ret;
2314   }
2315 
2316   public bool HasMagCalibration() const {
2317     bool ret = ovr_im.SensorFusion_HasMagCalibration(cast(void*)swigCPtr) ? true : false;
2318     return ret;
2319   }
2320 
2321   public void ClearMagCalibration() {
2322     ovr_im.SensorFusion_ClearMagCalibration(cast(void*)swigCPtr);
2323   }
2324 
2325   public void ClearMagReferences() {
2326     ovr_im.SensorFusion_ClearMagReferences(cast(void*)swigCPtr);
2327   }
2328 
2329   public SWIGTYPE_p_OVR__Vector3T_float_t GetCalibratedMagValue(SWIGTYPE_p_OVR__Vector3T_float_t rawMag) const {
2330     SWIGTYPE_p_OVR__Vector3T_float_t ret = new SWIGTYPE_p_OVR__Vector3T_float_t(ovr_im.SensorFusion_GetCalibratedMagValue(cast(void*)swigCPtr, SWIGTYPE_p_OVR__Vector3T_float_t.swigGetCPtr(rawMag)), true);
2331     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2332     return ret;
2333   }
2334 
2335   public void OnMessage(MessageBodyFrame msg) {
2336     ovr_im.SensorFusion_OnMessage(cast(void*)swigCPtr, MessageBodyFrame.swigGetCPtr(msg));
2337     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2338   }
2339 
2340   public void SetDelegateMessageHandler(SWIGTYPE_p_MessageHandler handler) {
2341     ovr_im.SensorFusion_SetDelegateMessageHandler(cast(void*)swigCPtr, SWIGTYPE_p_MessageHandler.swigGetCPtr(handler));
2342   }
2343 }
2344 
2345 enum ProfileType {
2346   Profile_Unknown = 0,
2347   Profile_GenericHMD = 10,
2348   Profile_RiftDK1 = 11,
2349   Profile_RiftDKHD = 12
2350 }
2351 
2352 class ProfileManager {
2353   private void* swigCPtr;
2354   protected bool swigCMemOwn;
2355 
2356   public this(void* cObject, bool ownCObject) {
2357     swigCPtr = cObject;
2358     swigCMemOwn = ownCObject;
2359   }
2360 
2361   public static void* swigGetCPtr(ProfileManager obj) {
2362     return (obj is null) ? null : obj.swigCPtr;
2363   }
2364 
2365   mixin ovr_im.SwigOperatorDefinitions;
2366 
2367   public void dispose() {
2368     synchronized(this) {
2369       if (swigCPtr !is null) {
2370         if (swigCMemOwn) {
2371           swigCMemOwn = false;
2372           throw new object.Exception("C++ destructor does not have public access");
2373         }
2374         swigCPtr = null;
2375       }
2376     }
2377   }
2378 
2379   public static ProfileManager Create() {
2380     void* cPtr = ovr_im.ProfileManager_Create();
2381     ProfileManager ret = (cPtr is null) ? null : new ProfileManager(cPtr, false);
2382     return ret;
2383   }
2384 
2385   public int GetProfileCount(ProfileType device) {
2386     auto ret = ovr_im.ProfileManager_GetProfileCount(cast(void*)swigCPtr, cast(int)device);
2387     return ret;
2388   }
2389 
2390   public string GetProfileName(ProfileType device, uint index) {
2391     string ret = std.conv.to!string(ovr_im.ProfileManager_GetProfileName(cast(void*)swigCPtr, cast(int)device, index));
2392     return ret;
2393   }
2394 
2395   public bool HasProfile(ProfileType device, string name) {
2396     bool ret = ovr_im.ProfileManager_HasProfile(cast(void*)swigCPtr, cast(int)device, (name ? std..string.toStringz(name) : null)) ? true : false;
2397     return ret;
2398   }
2399 
2400   public Profile LoadProfile(ProfileType device, uint index) {
2401     void* cPtr = ovr_im.ProfileManager_LoadProfile__SWIG_0(cast(void*)swigCPtr, cast(int)device, index);
2402     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
2403     return ret;
2404   }
2405 
2406   public Profile LoadProfile(ProfileType device, string name) {
2407     void* cPtr = ovr_im.ProfileManager_LoadProfile__SWIG_1(cast(void*)swigCPtr, cast(int)device, (name ? std..string.toStringz(name) : null));
2408     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
2409     return ret;
2410   }
2411 
2412   public Profile GetDeviceDefaultProfile(ProfileType device) {
2413     void* cPtr = ovr_im.ProfileManager_GetDeviceDefaultProfile(cast(void*)swigCPtr, cast(int)device);
2414     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
2415     return ret;
2416   }
2417 
2418   public string GetDefaultProfileName(ProfileType device) {
2419     string ret = std.conv.to!string(ovr_im.ProfileManager_GetDefaultProfileName(cast(void*)swigCPtr, cast(int)device));
2420     return ret;
2421   }
2422 
2423   public bool SetDefaultProfileName(ProfileType device, string name) {
2424     bool ret = ovr_im.ProfileManager_SetDefaultProfileName(cast(void*)swigCPtr, cast(int)device, (name ? std..string.toStringz(name) : null)) ? true : false;
2425     return ret;
2426   }
2427 
2428   public bool Save(Profile profile) {
2429     bool ret = ovr_im.ProfileManager_Save(cast(void*)swigCPtr, Profile.swigGetCPtr(profile)) ? true : false;
2430     return ret;
2431   }
2432 
2433   public bool Delete(Profile profile) {
2434     bool ret = ovr_im.ProfileManager_Delete(cast(void*)swigCPtr, Profile.swigGetCPtr(profile)) ? true : false;
2435     return ret;
2436   }
2437 }
2438 
2439 class Profile {
2440   private void* swigCPtr;
2441   protected bool swigCMemOwn;
2442 
2443   public this(void* cObject, bool ownCObject) {
2444     swigCPtr = cObject;
2445     swigCMemOwn = ownCObject;
2446   }
2447 
2448   public static void* swigGetCPtr(Profile obj) {
2449     return (obj is null) ? null : obj.swigCPtr;
2450   }
2451 
2452   mixin ovr_im.SwigOperatorDefinitions;
2453 
2454   ~this() {
2455     dispose();
2456   }
2457 
2458   public void dispose() {
2459     synchronized(this) {
2460       if (swigCPtr !is null) {
2461         if (swigCMemOwn) {
2462           swigCMemOwn = false;
2463           ovr_im.delete_Profile(cast(void*)swigCPtr);
2464         }
2465         swigCPtr = null;
2466       }
2467     }
2468   }
2469 
2470   enum {
2471     MaxNameLen = 32
2472   }
2473 
2474   enum GenderType {
2475     Gender_Unspecified = 0,
2476     Gender_Male = 1,
2477     Gender_Female = 2
2478   }
2479 
2480   public void Type(ProfileType value) @property {
2481     ovr_im.Profile_Type_set(cast(void*)swigCPtr, cast(int)value);
2482   }
2483 
2484   public ProfileType Type() @property const {
2485     ProfileType ret = cast(ProfileType)ovr_im.Profile_Type_get(cast(void*)swigCPtr);
2486     return ret;
2487   }
2488 
2489   public void Name(string value) @property {
2490     ovr_im.Profile_Name_set(cast(void*)swigCPtr, (value ? std..string.toStringz(value) : null));
2491   }
2492 
2493   public string Name() @property const {
2494     string ret = std.conv.to!string(ovr_im.Profile_Name_get(cast(void*)swigCPtr));
2495     return ret;
2496   }
2497 
2498   public Profile Clone() const {
2499     void* cPtr = ovr_im.Profile_Clone(cast(void*)swigCPtr);
2500     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
2501     return ret;
2502   }
2503 
2504   public Profile.GenderType GetGender() {
2505     Profile.GenderType ret = cast(Profile.GenderType)ovr_im.Profile_GetGender(cast(void*)swigCPtr);
2506     return ret;
2507   }
2508 
2509   public float GetPlayerHeight() {
2510     auto ret = ovr_im.Profile_GetPlayerHeight(cast(void*)swigCPtr);
2511     return ret;
2512   }
2513 
2514   public float GetIPD() {
2515     auto ret = ovr_im.Profile_GetIPD(cast(void*)swigCPtr);
2516     return ret;
2517   }
2518 
2519   public float GetEyeHeight() {
2520     auto ret = ovr_im.Profile_GetEyeHeight(cast(void*)swigCPtr);
2521     return ret;
2522   }
2523 
2524   public void SetGender(Profile.GenderType gender) {
2525     ovr_im.Profile_SetGender(cast(void*)swigCPtr, cast(int)gender);
2526   }
2527 
2528   public void SetPlayerHeight(float height) {
2529     ovr_im.Profile_SetPlayerHeight(cast(void*)swigCPtr, height);
2530   }
2531 
2532   public void SetIPD(float ipd) {
2533     ovr_im.Profile_SetIPD(cast(void*)swigCPtr, ipd);
2534   }
2535 }
2536 
2537 class HMDProfile : Profile {
2538   private void* swigCPtr;
2539 
2540   public this(void* cObject, bool ownCObject) {
2541     super(ovr_im.HMDProfile_Upcast(cObject), ownCObject);
2542     swigCPtr = cObject;
2543   }
2544 
2545   public static void* swigGetCPtr(HMDProfile obj) {
2546     return (obj is null) ? null : obj.swigCPtr;
2547   }
2548 
2549   mixin ovr_im.SwigOperatorDefinitions;
2550 
2551   ~this() {
2552     dispose();
2553   }
2554 
2555   public override void dispose() {
2556     synchronized(this) {
2557       if (swigCPtr !is null) {
2558         if (swigCMemOwn) {
2559           swigCMemOwn = false;
2560           ovr_im.delete_HMDProfile(cast(void*)swigCPtr);
2561         }
2562         swigCPtr = null;
2563         super.dispose();
2564       }
2565     }
2566   }
2567 
2568   public override Profile Clone() const {
2569     void* cPtr = ovr_im.HMDProfile_Clone(cast(void*)swigCPtr);
2570     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
2571     return ret;
2572   }
2573 
2574   public void SetLL(int val) {
2575     ovr_im.HMDProfile_SetLL(cast(void*)swigCPtr, val);
2576   }
2577 
2578   public void SetLR(int val) {
2579     ovr_im.HMDProfile_SetLR(cast(void*)swigCPtr, val);
2580   }
2581 
2582   public void SetRL(int val) {
2583     ovr_im.HMDProfile_SetRL(cast(void*)swigCPtr, val);
2584   }
2585 
2586   public void SetRR(int val) {
2587     ovr_im.HMDProfile_SetRR(cast(void*)swigCPtr, val);
2588   }
2589 
2590   public int GetLL() {
2591     auto ret = ovr_im.HMDProfile_GetLL(cast(void*)swigCPtr);
2592     return ret;
2593   }
2594 
2595   public int GetLR() {
2596     auto ret = ovr_im.HMDProfile_GetLR(cast(void*)swigCPtr);
2597     return ret;
2598   }
2599 
2600   public int GetRL() {
2601     auto ret = ovr_im.HMDProfile_GetRL(cast(void*)swigCPtr);
2602     return ret;
2603   }
2604 
2605   public int GetRR() {
2606     auto ret = ovr_im.HMDProfile_GetRR(cast(void*)swigCPtr);
2607     return ret;
2608   }
2609 }
2610 
2611 enum EyeCupType {
2612   EyeCup_A = 0,
2613   EyeCup_B = 1,
2614   EyeCup_C = 2
2615 }
2616 
2617 class RiftDK1Profile : HMDProfile {
2618   private void* swigCPtr;
2619 
2620   public this(void* cObject, bool ownCObject) {
2621     super(ovr_im.RiftDK1Profile_Upcast(cObject), ownCObject);
2622     swigCPtr = cObject;
2623   }
2624 
2625   public static void* swigGetCPtr(RiftDK1Profile obj) {
2626     return (obj is null) ? null : obj.swigCPtr;
2627   }
2628 
2629   mixin ovr_im.SwigOperatorDefinitions;
2630 
2631   ~this() {
2632     dispose();
2633   }
2634 
2635   public override void dispose() {
2636     synchronized(this) {
2637       if (swigCPtr !is null) {
2638         if (swigCMemOwn) {
2639           swigCMemOwn = false;
2640           ovr_im.delete_RiftDK1Profile(cast(void*)swigCPtr);
2641         }
2642         swigCPtr = null;
2643         super.dispose();
2644       }
2645     }
2646   }
2647 
2648   public override Profile Clone() const {
2649     void* cPtr = ovr_im.RiftDK1Profile_Clone(cast(void*)swigCPtr);
2650     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
2651     return ret;
2652   }
2653 
2654   public EyeCupType GetEyeCup() {
2655     EyeCupType ret = cast(EyeCupType)ovr_im.RiftDK1Profile_GetEyeCup(cast(void*)swigCPtr);
2656     return ret;
2657   }
2658 
2659   public void SetEyeCup(EyeCupType cup) {
2660     ovr_im.RiftDK1Profile_SetEyeCup(cast(void*)swigCPtr, cast(int)cup);
2661   }
2662 }
2663 
2664 class RiftDKHDProfile : HMDProfile {
2665   private void* swigCPtr;
2666 
2667   public this(void* cObject, bool ownCObject) {
2668     super(ovr_im.RiftDKHDProfile_Upcast(cObject), ownCObject);
2669     swigCPtr = cObject;
2670   }
2671 
2672   public static void* swigGetCPtr(RiftDKHDProfile obj) {
2673     return (obj is null) ? null : obj.swigCPtr;
2674   }
2675 
2676   mixin ovr_im.SwigOperatorDefinitions;
2677 
2678   ~this() {
2679     dispose();
2680   }
2681 
2682   public override void dispose() {
2683     synchronized(this) {
2684       if (swigCPtr !is null) {
2685         if (swigCMemOwn) {
2686           swigCMemOwn = false;
2687           ovr_im.delete_RiftDKHDProfile(cast(void*)swigCPtr);
2688         }
2689         swigCPtr = null;
2690         super.dispose();
2691       }
2692     }
2693   }
2694 
2695   public override Profile Clone() const {
2696     void* cPtr = ovr_im.RiftDKHDProfile_Clone(cast(void*)swigCPtr);
2697     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
2698     return ret;
2699   }
2700 
2701   public EyeCupType GetEyeCup() {
2702     EyeCupType ret = cast(EyeCupType)ovr_im.RiftDKHDProfile_GetEyeCup(cast(void*)swigCPtr);
2703     return ret;
2704   }
2705 
2706   public void SetEyeCup(EyeCupType cup) {
2707     ovr_im.RiftDKHDProfile_SetEyeCup(cast(void*)swigCPtr, cast(int)cup);
2708   }
2709 }
2710 
2711 String GetBaseOVRPath(bool create_dir) {
2712   String ret = new String(ovr_im.GetBaseOVRPath(create_dir), true);
2713   return ret;
2714 }
2715 
2716 class HIDDeviceBase {
2717   private void* swigCPtr;
2718   protected bool swigCMemOwn;
2719 
2720   public this(void* cObject, bool ownCObject) {
2721     swigCPtr = cObject;
2722     swigCMemOwn = ownCObject;
2723   }
2724 
2725   public static void* swigGetCPtr(HIDDeviceBase obj) {
2726     return (obj is null) ? null : obj.swigCPtr;
2727   }
2728 
2729   mixin ovr_im.SwigOperatorDefinitions;
2730 
2731   ~this() {
2732     dispose();
2733   }
2734 
2735   public void dispose() {
2736     synchronized(this) {
2737       if (swigCPtr !is null) {
2738         if (swigCMemOwn) {
2739           swigCMemOwn = false;
2740           ovr_im.delete_HIDDeviceBase(cast(void*)swigCPtr);
2741         }
2742         swigCPtr = null;
2743       }
2744     }
2745   }
2746 
2747   public bool SetFeatureReport(SWIGTYPE_p_uint8_t data, SWIGTYPE_p_uint32_t length) {
2748     bool ret = ovr_im.HIDDeviceBase_SetFeatureReport(cast(void*)swigCPtr, SWIGTYPE_p_uint8_t.swigGetCPtr(data), SWIGTYPE_p_uint32_t.swigGetCPtr(length)) ? true : false;
2749     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2750     return ret;
2751   }
2752 
2753   public bool GetFeatureReport(SWIGTYPE_p_uint8_t data, SWIGTYPE_p_uint32_t length) {
2754     bool ret = ovr_im.HIDDeviceBase_GetFeatureReport(cast(void*)swigCPtr, SWIGTYPE_p_uint8_t.swigGetCPtr(data), SWIGTYPE_p_uint32_t.swigGetCPtr(length)) ? true : false;
2755     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2756     return ret;
2757   }
2758 }
2759 
2760 class MessageHandler {
2761   private void* swigCPtr;
2762   protected bool swigCMemOwn;
2763 
2764   public this(void* cObject, bool ownCObject) {
2765     swigCPtr = cObject;
2766     swigCMemOwn = ownCObject;
2767   }
2768 
2769   public static void* swigGetCPtr(MessageHandler obj) {
2770     return (obj is null) ? null : obj.swigCPtr;
2771   }
2772 
2773   mixin ovr_im.SwigOperatorDefinitions;
2774 
2775   ~this() {
2776     dispose();
2777   }
2778 
2779   public void dispose() {
2780     synchronized(this) {
2781       if (swigCPtr !is null) {
2782         if (swigCMemOwn) {
2783           swigCMemOwn = false;
2784           ovr_im.delete_MessageHandler(cast(void*)swigCPtr);
2785         }
2786         swigCPtr = null;
2787       }
2788     }
2789   }
2790 
2791   public this() {
2792     this(ovr_im.new_MessageHandler(), true);
2793   }
2794 
2795   public bool IsHandlerInstalled() const {
2796     bool ret = ovr_im.MessageHandler_IsHandlerInstalled(cast(void*)swigCPtr) ? true : false;
2797     return ret;
2798   }
2799 
2800   public void RemoveHandlerFromDevices() {
2801     ovr_im.MessageHandler_RemoveHandlerFromDevices(cast(void*)swigCPtr);
2802   }
2803 
2804   public Lock GetHandlerLock() const {
2805     void* cPtr = ovr_im.MessageHandler_GetHandlerLock(cast(void*)swigCPtr);
2806     Lock ret = (cPtr is null) ? null : new Lock(cPtr, false);
2807     return ret;
2808   }
2809 
2810   public void OnMessage(Message arg0) {
2811     ovr_im.MessageHandler_OnMessage(cast(void*)swigCPtr, Message.swigGetCPtr(arg0));
2812     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
2813   }
2814 
2815   public bool SupportsMessageType(MessageType arg0) const {
2816     bool ret = ovr_im.MessageHandler_SupportsMessageType(cast(void*)swigCPtr, cast(int)arg0) ? true : false;
2817     return ret;
2818   }
2819 }
2820 
2821 class DeviceBase : NewOverrideBase {
2822   private void* swigCPtr;
2823 
2824   public this(void* cObject, bool ownCObject) {
2825     super(ovr_im.DeviceBase_Upcast(cObject), ownCObject);
2826     swigCPtr = cObject;
2827   }
2828 
2829   public static void* swigGetCPtr(DeviceBase obj) {
2830     return (obj is null) ? null : obj.swigCPtr;
2831   }
2832 
2833   mixin ovr_im.SwigOperatorDefinitions;
2834 
2835   ~this() {
2836     dispose();
2837   }
2838 
2839   public override void dispose() {
2840     synchronized(this) {
2841       if (swigCPtr !is null) {
2842         if (swigCMemOwn) {
2843           swigCMemOwn = false;
2844           ovr_im.delete_DeviceBase(cast(void*)swigCPtr);
2845         }
2846         swigCPtr = null;
2847         super.dispose();
2848       }
2849     }
2850   }
2851 
2852   enum {
2853     EnumDeviceType = DeviceType.Device_All
2854   }
2855 
2856   public void AddRef() {
2857     ovr_im.DeviceBase_AddRef(cast(void*)swigCPtr);
2858   }
2859 
2860   public void Release() {
2861     ovr_im.DeviceBase_Release(cast(void*)swigCPtr);
2862   }
2863 
2864   public DeviceBase GetParent() const {
2865     void* cPtr = ovr_im.DeviceBase_GetParent(cast(void*)swigCPtr);
2866     DeviceBase ret = (cPtr is null) ? null : new DeviceBase(cPtr, false);
2867     return ret;
2868   }
2869 
2870   public DeviceManager GetManager() const {
2871     void* cPtr = ovr_im.DeviceBase_GetManager(cast(void*)swigCPtr);
2872     DeviceManager ret = (cPtr is null) ? null : new DeviceManager(cPtr, false);
2873     return ret;
2874   }
2875 
2876   public void SetMessageHandler(MessageHandler handler) {
2877     ovr_im.DeviceBase_SetMessageHandler(cast(void*)swigCPtr, MessageHandler.swigGetCPtr(handler));
2878   }
2879 
2880   public MessageHandler GetMessageHandler() const {
2881     void* cPtr = ovr_im.DeviceBase_GetMessageHandler(cast(void*)swigCPtr);
2882     MessageHandler ret = (cPtr is null) ? null : new MessageHandler(cPtr, false);
2883     return ret;
2884   }
2885 
2886   public DeviceType GetType() const {
2887     DeviceType ret = cast(DeviceType)ovr_im.DeviceBase_GetType(cast(void*)swigCPtr);
2888     return ret;
2889   }
2890 
2891   public bool GetDeviceInfo(DeviceInfo info) const {
2892     bool ret = ovr_im.DeviceBase_GetDeviceInfo(cast(void*)swigCPtr, DeviceInfo.swigGetCPtr(info)) ? true : false;
2893     return ret;
2894   }
2895 
2896   public Lock GetHandlerLock() const {
2897     void* cPtr = ovr_im.DeviceBase_GetHandlerLock(cast(void*)swigCPtr);
2898     Lock ret = (cPtr is null) ? null : new Lock(cPtr, false);
2899     return ret;
2900   }
2901 
2902 	public DeviceEnumerator!T EnumerateDevices( T )() if( is( T : DeviceBase ) || is( T : HIDDeviceBase ) )
2903 	{
2904 		void* cPtr;
2905 		static if( is( T == HMDDevice ) )
2906 		{
2907 			cPtr = ovr_im.DeviceManager_EnumerateDevices_HMDDevice( cast(void*)swigCPtr );
2908 		}
2909 		else static if( is( T == SensorDevice ) )
2910 		{
2911 			cPtr = ovr_im.DeviceManager_EnumerateDevices_SensorDevice( cast(void*)swigCPtr );
2912 		}
2913 
2914 		DeviceEnumerator!T result = new DeviceEnumerator!T( cPtr, false );
2915 
2916 		return result;
2917 	}
2918 }
2919 
2920 class DeviceEnumerator( T ) if( is( T : DeviceBase ) || is( T : HIDDeviceBase ) )
2921 {
2922 	private void* swigCPtr;
2923 	protected bool swigCMemOwn;
2924 	
2925 	public this(void* cObject, bool ownCObject) {
2926 		swigCPtr = cObject;
2927 		swigCMemOwn = ownCObject;
2928 	}
2929 
2930 	public static void* swigGetCPtr(DeviceEnumerator!T obj) {
2931 		return (obj is null) ? null : obj.swigCPtr;
2932 	}
2933 	
2934 	mixin ovr_im.SwigOperatorDefinitions;
2935 
2936 	T CreateDevice()
2937 	{
2938 		void* cPtr;
2939 
2940 		static if( is( T == HMDDevice ) )
2941 		{
2942 			cPtr = ovr_im.DeviceEnumerator_CreateDevice_HMDDevice( cast(void*)swigCPtr );
2943 		}
2944 		else static if( is( T == SensorDevice ) )
2945 		{
2946 			cPtr = ovr_im.DeviceEnumerator_CreateDevice_SensorDevice( cast(void*)swigCPtr );
2947 		}
2948 
2949 		T ret = new T( cPtr, false );
2950 
2951 		return ret;
2952 	}
2953 }
2954 
2955 class DeviceInfo {
2956   private void* swigCPtr;
2957   protected bool swigCMemOwn;
2958 
2959   public this(void* cObject, bool ownCObject) {
2960     swigCPtr = cObject;
2961     swigCMemOwn = ownCObject;
2962   }
2963 
2964   public static void* swigGetCPtr(DeviceInfo obj) {
2965     return (obj is null) ? null : obj.swigCPtr;
2966   }
2967 
2968   mixin ovr_im.SwigOperatorDefinitions;
2969 
2970   ~this() {
2971     dispose();
2972   }
2973 
2974   public void dispose() {
2975     synchronized(this) {
2976       if (swigCPtr !is null) {
2977         if (swigCMemOwn) {
2978           swigCMemOwn = false;
2979           ovr_im.delete_DeviceInfo(cast(void*)swigCPtr);
2980         }
2981         swigCPtr = null;
2982       }
2983     }
2984   }
2985 
2986   enum {
2987     MaxNameLength = 32
2988   }
2989 
2990   public this() {
2991     this(ovr_im.new_DeviceInfo(), true);
2992   }
2993 
2994   public DeviceType InfoClassType() @property const {
2995     DeviceType ret = cast(DeviceType)ovr_im.DeviceInfo_InfoClassType_get(cast(void*)swigCPtr);
2996     return ret;
2997   }
2998 
2999   public void Type(DeviceType value) @property {
3000     ovr_im.DeviceInfo_Type_set(cast(void*)swigCPtr, cast(int)value);
3001   }
3002 
3003   public DeviceType Type() @property const {
3004     DeviceType ret = cast(DeviceType)ovr_im.DeviceInfo_Type_get(cast(void*)swigCPtr);
3005     return ret;
3006   }
3007 
3008   public void ProductName(string value) @property {
3009     ovr_im.DeviceInfo_ProductName_set(cast(void*)swigCPtr, (value ? std..string.toStringz(value) : null));
3010   }
3011 
3012   public string ProductName() @property const {
3013     string ret = std.conv.to!string(ovr_im.DeviceInfo_ProductName_get(cast(void*)swigCPtr));
3014     return ret;
3015   }
3016 
3017   public void Manufacturer(string value) @property {
3018     ovr_im.DeviceInfo_Manufacturer_set(cast(void*)swigCPtr, (value ? std..string.toStringz(value) : null));
3019   }
3020 
3021   public string Manufacturer() @property const {
3022     string ret = std.conv.to!string(ovr_im.DeviceInfo_Manufacturer_get(cast(void*)swigCPtr));
3023     return ret;
3024   }
3025 
3026   public void Version(uint value) @property {
3027     ovr_im.DeviceInfo_Version_set(cast(void*)swigCPtr, value);
3028   }
3029 
3030   public uint Version() @property const {
3031     auto ret = ovr_im.DeviceInfo_Version_get(cast(void*)swigCPtr);
3032     return ret;
3033   }
3034 }
3035 
3036 class DeviceEnumerationArgs {
3037   private void* swigCPtr;
3038   protected bool swigCMemOwn;
3039 
3040   public this(void* cObject, bool ownCObject) {
3041     swigCPtr = cObject;
3042     swigCMemOwn = ownCObject;
3043   }
3044 
3045   public static void* swigGetCPtr(DeviceEnumerationArgs obj) {
3046     return (obj is null) ? null : obj.swigCPtr;
3047   }
3048 
3049   mixin ovr_im.SwigOperatorDefinitions;
3050 
3051   ~this() {
3052     dispose();
3053   }
3054 
3055   public void dispose() {
3056     synchronized(this) {
3057       if (swigCPtr !is null) {
3058         if (swigCMemOwn) {
3059           swigCMemOwn = false;
3060           ovr_im.delete_DeviceEnumerationArgs(cast(void*)swigCPtr);
3061         }
3062         swigCPtr = null;
3063       }
3064     }
3065   }
3066 
3067   public this(DeviceType enumType, bool availableOnly) {
3068     this(ovr_im.new_DeviceEnumerationArgs(cast(int)enumType, availableOnly), true);
3069   }
3070 
3071   public bool MatchRule(DeviceType type, bool available) const {
3072     bool ret = ovr_im.DeviceEnumerationArgs_MatchRule(cast(void*)swigCPtr, cast(int)type, available) ? true : false;
3073     return ret;
3074   }
3075 }
3076 
3077 class DeviceManager : DeviceBase {
3078   private void* swigCPtr;
3079 
3080   public this(void* cObject, bool ownCObject) {
3081     super(ovr_im.DeviceManager_Upcast(cObject), ownCObject);
3082     swigCPtr = cObject;
3083   }
3084 
3085   public static void* swigGetCPtr(DeviceManager obj) {
3086     return (obj is null) ? null : obj.swigCPtr;
3087   }
3088 
3089   mixin ovr_im.SwigOperatorDefinitions;
3090 
3091   ~this() {
3092     dispose();
3093   }
3094 
3095   public override void dispose() {
3096     synchronized(this) {
3097       if (swigCPtr !is null) {
3098         if (swigCMemOwn) {
3099           swigCMemOwn = false;
3100           ovr_im.delete_DeviceManager(cast(void*)swigCPtr);
3101         }
3102         swigCPtr = null;
3103         super.dispose();
3104       }
3105     }
3106   }
3107 
3108   enum {
3109     EnumDeviceType = DeviceType.Device_Manager
3110   }
3111 
3112   public override DeviceType GetType() const {
3113     DeviceType ret = cast(DeviceType)ovr_im.DeviceManager_GetType(cast(void*)swigCPtr);
3114     return ret;
3115   }
3116 
3117   public override DeviceManager GetManager() const {
3118     void* cPtr = ovr_im.DeviceManager_GetManager(cast(void*)swigCPtr);
3119     DeviceManager ret = (cPtr is null) ? null : new DeviceManager(cPtr, false);
3120     return ret;
3121   }
3122 
3123   public ProfileManager GetProfileManager() const {
3124     void* cPtr = ovr_im.DeviceManager_GetProfileManager(cast(void*)swigCPtr);
3125     ProfileManager ret = (cPtr is null) ? null : new ProfileManager(cPtr, false);
3126     return ret;
3127   }
3128 
3129   public SWIGTYPE_p_OVR__DeviceEnumeratorT_OVR__DeviceBase_t EnumerateDevicesEx(DeviceEnumerationArgs args) {
3130     SWIGTYPE_p_OVR__DeviceEnumeratorT_OVR__DeviceBase_t ret = new SWIGTYPE_p_OVR__DeviceEnumeratorT_OVR__DeviceBase_t(ovr_im.DeviceManager_EnumerateDevicesEx(cast(void*)swigCPtr, DeviceEnumerationArgs.swigGetCPtr(args)), true);
3131     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3132     return ret;
3133   }
3134 
3135   public static DeviceManager Create() {
3136     void* cPtr = ovr_im.DeviceManager_Create();
3137     DeviceManager ret = (cPtr is null) ? null : new DeviceManager(cPtr, false);
3138     return ret;
3139   }
3140 
3141   public SWIGTYPE_p_OVR__PtrT_OVR__DeviceCreateDesc_t AddDevice_NeedsLock(SWIGTYPE_p_OVR__DeviceCreateDesc createDesc) {
3142     SWIGTYPE_p_OVR__PtrT_OVR__DeviceCreateDesc_t ret = new SWIGTYPE_p_OVR__PtrT_OVR__DeviceCreateDesc_t(ovr_im.DeviceManager_AddDevice_NeedsLock(cast(void*)swigCPtr, SWIGTYPE_p_OVR__DeviceCreateDesc.swigGetCPtr(createDesc)), true);
3143     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3144     return ret;
3145   }
3146 }
3147 
3148 class HMDInfo : DeviceInfo {
3149   private void* swigCPtr;
3150 
3151   public this(void* cObject, bool ownCObject) {
3152     super(ovr_im.HMDInfo_Upcast(cObject), ownCObject);
3153     swigCPtr = cObject;
3154   }
3155 
3156   public static void* swigGetCPtr(HMDInfo obj) {
3157     return (obj is null) ? null : obj.swigCPtr;
3158   }
3159 
3160   mixin ovr_im.SwigOperatorDefinitions;
3161 
3162   ~this() {
3163     dispose();
3164   }
3165 
3166   public override void dispose() {
3167     synchronized(this) {
3168       if (swigCPtr !is null) {
3169         if (swigCMemOwn) {
3170           swigCMemOwn = false;
3171           ovr_im.delete_HMDInfo(cast(void*)swigCPtr);
3172         }
3173         swigCPtr = null;
3174         super.dispose();
3175       }
3176     }
3177   }
3178 
3179   public void HResolution(uint value) @property {
3180     ovr_im.HMDInfo_HResolution_set(cast(void*)swigCPtr, value);
3181   }
3182 
3183   public uint HResolution() @property const {
3184     auto ret = ovr_im.HMDInfo_HResolution_get(cast(void*)swigCPtr);
3185     return ret;
3186   }
3187 
3188   public void VResolution(uint value) @property {
3189     ovr_im.HMDInfo_VResolution_set(cast(void*)swigCPtr, value);
3190   }
3191 
3192   public uint VResolution() @property const {
3193     auto ret = ovr_im.HMDInfo_VResolution_get(cast(void*)swigCPtr);
3194     return ret;
3195   }
3196 
3197   public void HScreenSize(float value) @property {
3198     ovr_im.HMDInfo_HScreenSize_set(cast(void*)swigCPtr, value);
3199   }
3200 
3201   public float HScreenSize() @property const {
3202     auto ret = ovr_im.HMDInfo_HScreenSize_get(cast(void*)swigCPtr);
3203     return ret;
3204   }
3205 
3206   public void VScreenSize(float value) @property {
3207     ovr_im.HMDInfo_VScreenSize_set(cast(void*)swigCPtr, value);
3208   }
3209 
3210   public float VScreenSize() @property const {
3211     auto ret = ovr_im.HMDInfo_VScreenSize_get(cast(void*)swigCPtr);
3212     return ret;
3213   }
3214 
3215   public void VScreenCenter(float value) @property {
3216     ovr_im.HMDInfo_VScreenCenter_set(cast(void*)swigCPtr, value);
3217   }
3218 
3219   public float VScreenCenter() @property const {
3220     auto ret = ovr_im.HMDInfo_VScreenCenter_get(cast(void*)swigCPtr);
3221     return ret;
3222   }
3223 
3224   public void EyeToScreenDistance(float value) @property {
3225     ovr_im.HMDInfo_EyeToScreenDistance_set(cast(void*)swigCPtr, value);
3226   }
3227 
3228   public float EyeToScreenDistance() @property const {
3229     auto ret = ovr_im.HMDInfo_EyeToScreenDistance_get(cast(void*)swigCPtr);
3230     return ret;
3231   }
3232 
3233   public void LensSeparationDistance(float value) @property {
3234     ovr_im.HMDInfo_LensSeparationDistance_set(cast(void*)swigCPtr, value);
3235   }
3236 
3237   public float LensSeparationDistance() @property const {
3238     auto ret = ovr_im.HMDInfo_LensSeparationDistance_get(cast(void*)swigCPtr);
3239     return ret;
3240   }
3241 
3242   public void InterpupillaryDistance(float value) @property {
3243     ovr_im.HMDInfo_InterpupillaryDistance_set(cast(void*)swigCPtr, value);
3244   }
3245 
3246   public float InterpupillaryDistance() @property const {
3247     auto ret = ovr_im.HMDInfo_InterpupillaryDistance_get(cast(void*)swigCPtr);
3248     return ret;
3249   }
3250 
3251   public void DistortionK(SWIGTYPE_p_float value) @property {
3252     ovr_im.HMDInfo_DistortionK_set(cast(void*)swigCPtr, SWIGTYPE_p_float.swigGetCPtr(value));
3253   }
3254 
3255   public SWIGTYPE_p_float DistortionK() @property const {
3256     void* cPtr = ovr_im.HMDInfo_DistortionK_get(cast(void*)swigCPtr);
3257     SWIGTYPE_p_float ret = (cPtr is null) ? null : new SWIGTYPE_p_float(cPtr, false);
3258     return ret;
3259   }
3260 
3261   public void ChromaAbCorrection(SWIGTYPE_p_float value) @property {
3262     ovr_im.HMDInfo_ChromaAbCorrection_set(cast(void*)swigCPtr, SWIGTYPE_p_float.swigGetCPtr(value));
3263   }
3264 
3265   public SWIGTYPE_p_float ChromaAbCorrection() @property const {
3266     void* cPtr = ovr_im.HMDInfo_ChromaAbCorrection_get(cast(void*)swigCPtr);
3267     SWIGTYPE_p_float ret = (cPtr is null) ? null : new SWIGTYPE_p_float(cPtr, false);
3268     return ret;
3269   }
3270 
3271   public void DesktopX(int value) @property {
3272     ovr_im.HMDInfo_DesktopX_set(cast(void*)swigCPtr, value);
3273   }
3274 
3275   public int DesktopX() @property const {
3276     auto ret = ovr_im.HMDInfo_DesktopX_get(cast(void*)swigCPtr);
3277     return ret;
3278   }
3279 
3280   public void DesktopY(int value) @property {
3281     ovr_im.HMDInfo_DesktopY_set(cast(void*)swigCPtr, value);
3282   }
3283 
3284   public int DesktopY() @property const {
3285     auto ret = ovr_im.HMDInfo_DesktopY_get(cast(void*)swigCPtr);
3286     return ret;
3287   }
3288 
3289   public void DisplayDeviceName(string value) @property {
3290     ovr_im.HMDInfo_DisplayDeviceName_set(cast(void*)swigCPtr, (value ? std..string.toStringz(value) : null));
3291   }
3292 
3293   public string DisplayDeviceName() @property const {
3294     string ret = std.conv.to!string(ovr_im.HMDInfo_DisplayDeviceName_get(cast(void*)swigCPtr));
3295     return ret;
3296   }
3297 
3298   public void DisplayId(core.stdc.config.c_long value) @property {
3299     ovr_im.HMDInfo_DisplayId_set(cast(void*)swigCPtr, value);
3300   }
3301 
3302   public core.stdc.config.c_long DisplayId() @property const {
3303     auto ret = ovr_im.HMDInfo_DisplayId_get(cast(void*)swigCPtr);
3304     return ret;
3305   }
3306 
3307   public this() {
3308     this(ovr_im.new_HMDInfo(), true);
3309   }
3310 
3311   public bool IsSameDisplay(HMDInfo o) const {
3312     bool ret = ovr_im.HMDInfo_IsSameDisplay(cast(void*)swigCPtr, HMDInfo.swigGetCPtr(o)) ? true : false;
3313     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3314     return ret;
3315   }
3316 }
3317 
3318 class HMDDevice : DeviceBase {
3319   private void* swigCPtr;
3320 
3321   public this(void* cObject, bool ownCObject) {
3322     super(ovr_im.HMDDevice_Upcast(cObject), ownCObject);
3323     swigCPtr = cObject;
3324   }
3325 
3326   public static void* swigGetCPtr(HMDDevice obj) {
3327     return (obj is null) ? null : obj.swigCPtr;
3328   }
3329 
3330   mixin ovr_im.SwigOperatorDefinitions;
3331 
3332   ~this() {
3333     dispose();
3334   }
3335 
3336   public override void dispose() {
3337     synchronized(this) {
3338       if (swigCPtr !is null) {
3339         if (swigCMemOwn) {
3340           swigCMemOwn = false;
3341           ovr_im.delete_HMDDevice(cast(void*)swigCPtr);
3342         }
3343         swigCPtr = null;
3344         super.dispose();
3345       }
3346     }
3347   }
3348 
3349   enum {
3350     EnumDeviceType = DeviceType.Device_HMD
3351   }
3352 
3353   public override DeviceType GetType() const {
3354     DeviceType ret = cast(DeviceType)ovr_im.HMDDevice_GetType(cast(void*)swigCPtr);
3355     return ret;
3356   }
3357 
3358   public SensorDevice GetSensor() {
3359     void* cPtr = ovr_im.HMDDevice_GetSensor(cast(void*)swigCPtr);
3360     SensorDevice ret = (cPtr is null) ? null : new SensorDevice(cPtr, false);
3361     return ret;
3362   }
3363 
3364   public Profile GetProfile() const {
3365     void* cPtr = ovr_im.HMDDevice_GetProfile(cast(void*)swigCPtr);
3366     Profile ret = (cPtr is null) ? null : new Profile(cPtr, false);
3367     return ret;
3368   }
3369 
3370   public string GetProfileName() const {
3371     string ret = std.conv.to!string(ovr_im.HMDDevice_GetProfileName(cast(void*)swigCPtr));
3372     return ret;
3373   }
3374 
3375   public bool SetProfileName(string name) {
3376     bool ret = ovr_im.HMDDevice_SetProfileName(cast(void*)swigCPtr, (name ? std..string.toStringz(name) : null)) ? true : false;
3377     return ret;
3378   }
3379 
3380   public HMDDevice Disconnect(SensorDevice arg0) {
3381     void* cPtr = ovr_im.HMDDevice_Disconnect(cast(void*)swigCPtr, SensorDevice.swigGetCPtr(arg0));
3382     HMDDevice ret = (cPtr is null) ? null : new HMDDevice(cPtr, false);
3383     return ret;
3384   }
3385 
3386   public bool IsDisconnected() const {
3387     bool ret = ovr_im.HMDDevice_IsDisconnected(cast(void*)swigCPtr) ? true : false;
3388     return ret;
3389   }
3390 }
3391 
3392 class SensorRange {
3393   private void* swigCPtr;
3394   protected bool swigCMemOwn;
3395 
3396   public this(void* cObject, bool ownCObject) {
3397     swigCPtr = cObject;
3398     swigCMemOwn = ownCObject;
3399   }
3400 
3401   public static void* swigGetCPtr(SensorRange obj) {
3402     return (obj is null) ? null : obj.swigCPtr;
3403   }
3404 
3405   mixin ovr_im.SwigOperatorDefinitions;
3406 
3407   ~this() {
3408     dispose();
3409   }
3410 
3411   public void dispose() {
3412     synchronized(this) {
3413       if (swigCPtr !is null) {
3414         if (swigCMemOwn) {
3415           swigCMemOwn = false;
3416           ovr_im.delete_SensorRange(cast(void*)swigCPtr);
3417         }
3418         swigCPtr = null;
3419       }
3420     }
3421   }
3422 
3423   public this(float maxAcceleration, float maxRotationRate, float maxMagneticField) {
3424     this(ovr_im.new_SensorRange__SWIG_0(maxAcceleration, maxRotationRate, maxMagneticField), true);
3425   }
3426 
3427   public this(float maxAcceleration, float maxRotationRate) {
3428     this(ovr_im.new_SensorRange__SWIG_1(maxAcceleration, maxRotationRate), true);
3429   }
3430 
3431   public this(float maxAcceleration) {
3432     this(ovr_im.new_SensorRange__SWIG_2(maxAcceleration), true);
3433   }
3434 
3435   public this() {
3436     this(ovr_im.new_SensorRange__SWIG_3(), true);
3437   }
3438 
3439   public void MaxAcceleration(float value) @property {
3440     ovr_im.SensorRange_MaxAcceleration_set(cast(void*)swigCPtr, value);
3441   }
3442 
3443   public float MaxAcceleration() @property const {
3444     auto ret = ovr_im.SensorRange_MaxAcceleration_get(cast(void*)swigCPtr);
3445     return ret;
3446   }
3447 
3448   public void MaxRotationRate(float value) @property {
3449     ovr_im.SensorRange_MaxRotationRate_set(cast(void*)swigCPtr, value);
3450   }
3451 
3452   public float MaxRotationRate() @property const {
3453     auto ret = ovr_im.SensorRange_MaxRotationRate_get(cast(void*)swigCPtr);
3454     return ret;
3455   }
3456 
3457   public void MaxMagneticField(float value) @property {
3458     ovr_im.SensorRange_MaxMagneticField_set(cast(void*)swigCPtr, value);
3459   }
3460 
3461   public float MaxMagneticField() @property const {
3462     auto ret = ovr_im.SensorRange_MaxMagneticField_get(cast(void*)swigCPtr);
3463     return ret;
3464   }
3465 }
3466 
3467 class SensorInfo : DeviceInfo {
3468   private void* swigCPtr;
3469 
3470   public this(void* cObject, bool ownCObject) {
3471     super(ovr_im.SensorInfo_Upcast(cObject), ownCObject);
3472     swigCPtr = cObject;
3473   }
3474 
3475   public static void* swigGetCPtr(SensorInfo obj) {
3476     return (obj is null) ? null : obj.swigCPtr;
3477   }
3478 
3479   mixin ovr_im.SwigOperatorDefinitions;
3480 
3481   ~this() {
3482     dispose();
3483   }
3484 
3485   public override void dispose() {
3486     synchronized(this) {
3487       if (swigCPtr !is null) {
3488         if (swigCMemOwn) {
3489           swigCMemOwn = false;
3490           ovr_im.delete_SensorInfo(cast(void*)swigCPtr);
3491         }
3492         swigCPtr = null;
3493         super.dispose();
3494       }
3495     }
3496   }
3497 
3498   public this() {
3499     this(ovr_im.new_SensorInfo(), true);
3500   }
3501 
3502   public void VendorId(SWIGTYPE_p_uint16_t value) @property {
3503     ovr_im.SensorInfo_VendorId_set(cast(void*)swigCPtr, SWIGTYPE_p_uint16_t.swigGetCPtr(value));
3504     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3505   }
3506 
3507   public SWIGTYPE_p_uint16_t VendorId() @property const {
3508     SWIGTYPE_p_uint16_t ret = new SWIGTYPE_p_uint16_t(ovr_im.SensorInfo_VendorId_get(cast(void*)swigCPtr), true);
3509     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3510     return ret;
3511   }
3512 
3513   public void ProductId(SWIGTYPE_p_uint16_t value) @property {
3514     ovr_im.SensorInfo_ProductId_set(cast(void*)swigCPtr, SWIGTYPE_p_uint16_t.swigGetCPtr(value));
3515     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3516   }
3517 
3518   public SWIGTYPE_p_uint16_t ProductId() @property const {
3519     SWIGTYPE_p_uint16_t ret = new SWIGTYPE_p_uint16_t(ovr_im.SensorInfo_ProductId_get(cast(void*)swigCPtr), true);
3520     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3521     return ret;
3522   }
3523 
3524   public void MaxRanges(SensorRange value) @property {
3525     ovr_im.SensorInfo_MaxRanges_set(cast(void*)swigCPtr, SensorRange.swigGetCPtr(value));
3526   }
3527 
3528   public SensorRange MaxRanges() @property const {
3529     void* cPtr = ovr_im.SensorInfo_MaxRanges_get(cast(void*)swigCPtr);
3530     SensorRange ret = (cPtr is null) ? null : new SensorRange(cPtr, false);
3531     return ret;
3532   }
3533 
3534   public void SerialNumber(string value) @property {
3535     ovr_im.SensorInfo_SerialNumber_set(cast(void*)swigCPtr, (value ? std..string.toStringz(value) : null));
3536   }
3537 
3538   public string SerialNumber() @property const {
3539     string ret = std.conv.to!string(ovr_im.SensorInfo_SerialNumber_get(cast(void*)swigCPtr));
3540     return ret;
3541   }
3542 }
3543 
3544 class SensorDevice : HIDDeviceBase {
3545   private void* swigCPtr;
3546 
3547   public this(void* cObject, bool ownCObject) {
3548     super(ovr_im.SensorDevice_Upcast(cObject), ownCObject);
3549     swigCPtr = cObject;
3550   }
3551 
3552   public static void* swigGetCPtr(SensorDevice obj) {
3553     return (obj is null) ? null : obj.swigCPtr;
3554   }
3555 
3556   mixin ovr_im.SwigOperatorDefinitions;
3557 
3558   ~this() {
3559     dispose();
3560   }
3561 
3562   public override void dispose() {
3563     synchronized(this) {
3564       if (swigCPtr !is null) {
3565         if (swigCMemOwn) {
3566           swigCMemOwn = false;
3567           ovr_im.delete_SensorDevice(cast(void*)swigCPtr);
3568         }
3569         swigCPtr = null;
3570         super.dispose();
3571       }
3572     }
3573   }
3574 
3575   enum {
3576     EnumDeviceType = DeviceType.Device_Sensor
3577   }
3578 
3579   enum CoordinateFrame {
3580     Coord_Sensor = 0,
3581     Coord_HMD = 1
3582   }
3583 
3584   public DeviceType GetType() const {
3585     DeviceType ret = cast(DeviceType)ovr_im.SensorDevice_GetType(cast(void*)swigCPtr);
3586     return ret;
3587   }
3588 
3589   public void SetCoordinateFrame(SensorDevice.CoordinateFrame coordframe) {
3590     ovr_im.SensorDevice_SetCoordinateFrame(cast(void*)swigCPtr, cast(int)coordframe);
3591   }
3592 
3593   public SensorDevice.CoordinateFrame GetCoordinateFrame() const {
3594     SensorDevice.CoordinateFrame ret = cast(SensorDevice.CoordinateFrame)ovr_im.SensorDevice_GetCoordinateFrame(cast(void*)swigCPtr);
3595     return ret;
3596   }
3597 
3598   public void SetReportRate(uint rateHz) {
3599     ovr_im.SensorDevice_SetReportRate(cast(void*)swigCPtr, rateHz);
3600   }
3601 
3602   public uint GetReportRate() const {
3603     auto ret = ovr_im.SensorDevice_GetReportRate(cast(void*)swigCPtr);
3604     return ret;
3605   }
3606 
3607   public bool SetRange(SensorRange range, bool waitFlag) {
3608     bool ret = ovr_im.SensorDevice_SetRange__SWIG_0(cast(void*)swigCPtr, SensorRange.swigGetCPtr(range), waitFlag) ? true : false;
3609     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3610     return ret;
3611   }
3612 
3613   public bool SetRange(SensorRange range) {
3614     bool ret = ovr_im.SensorDevice_SetRange__SWIG_1(cast(void*)swigCPtr, SensorRange.swigGetCPtr(range)) ? true : false;
3615     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3616     return ret;
3617   }
3618 
3619   public void GetRange(SensorRange range) const {
3620     ovr_im.SensorDevice_GetRange(cast(void*)swigCPtr, SensorRange.swigGetCPtr(range));
3621   }
3622 }
3623 
3624 class LatencyTestConfiguration {
3625   private void* swigCPtr;
3626   protected bool swigCMemOwn;
3627 
3628   public this(void* cObject, bool ownCObject) {
3629     swigCPtr = cObject;
3630     swigCMemOwn = ownCObject;
3631   }
3632 
3633   public static void* swigGetCPtr(LatencyTestConfiguration obj) {
3634     return (obj is null) ? null : obj.swigCPtr;
3635   }
3636 
3637   mixin ovr_im.SwigOperatorDefinitions;
3638 
3639   ~this() {
3640     dispose();
3641   }
3642 
3643   public void dispose() {
3644     synchronized(this) {
3645       if (swigCPtr !is null) {
3646         if (swigCMemOwn) {
3647           swigCMemOwn = false;
3648           ovr_im.delete_LatencyTestConfiguration(cast(void*)swigCPtr);
3649         }
3650         swigCPtr = null;
3651       }
3652     }
3653   }
3654 
3655   public this(SWIGTYPE_p_Color threshold, bool sendSamples) {
3656     this(ovr_im.new_LatencyTestConfiguration__SWIG_0(SWIGTYPE_p_Color.swigGetCPtr(threshold), sendSamples), true);
3657     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3658   }
3659 
3660   public this(SWIGTYPE_p_Color threshold) {
3661     this(ovr_im.new_LatencyTestConfiguration__SWIG_1(SWIGTYPE_p_Color.swigGetCPtr(threshold)), true);
3662     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3663   }
3664 
3665   public void Threshold(SWIGTYPE_p_Color value) @property {
3666     ovr_im.LatencyTestConfiguration_Threshold_set(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(value));
3667     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3668   }
3669 
3670   public SWIGTYPE_p_Color Threshold() @property const {
3671     SWIGTYPE_p_Color ret = new SWIGTYPE_p_Color(ovr_im.LatencyTestConfiguration_Threshold_get(cast(void*)swigCPtr), true);
3672     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3673     return ret;
3674   }
3675 
3676   public void SendSamples(bool value) @property {
3677     ovr_im.LatencyTestConfiguration_SendSamples_set(cast(void*)swigCPtr, value);
3678   }
3679 
3680   public bool SendSamples() @property const {
3681     bool ret = ovr_im.LatencyTestConfiguration_SendSamples_get(cast(void*)swigCPtr) ? true : false;
3682     return ret;
3683   }
3684 }
3685 
3686 class LatencyTestDisplay {
3687   private void* swigCPtr;
3688   protected bool swigCMemOwn;
3689 
3690   public this(void* cObject, bool ownCObject) {
3691     swigCPtr = cObject;
3692     swigCMemOwn = ownCObject;
3693   }
3694 
3695   public static void* swigGetCPtr(LatencyTestDisplay obj) {
3696     return (obj is null) ? null : obj.swigCPtr;
3697   }
3698 
3699   mixin ovr_im.SwigOperatorDefinitions;
3700 
3701   ~this() {
3702     dispose();
3703   }
3704 
3705   public void dispose() {
3706     synchronized(this) {
3707       if (swigCPtr !is null) {
3708         if (swigCMemOwn) {
3709           swigCMemOwn = false;
3710           ovr_im.delete_LatencyTestDisplay(cast(void*)swigCPtr);
3711         }
3712         swigCPtr = null;
3713       }
3714     }
3715   }
3716 
3717   public this(SWIGTYPE_p_uint8_t mode, SWIGTYPE_p_uint32_t value) {
3718     this(ovr_im.new_LatencyTestDisplay(SWIGTYPE_p_uint8_t.swigGetCPtr(mode), SWIGTYPE_p_uint32_t.swigGetCPtr(value)), true);
3719     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3720   }
3721 
3722   public void Mode(SWIGTYPE_p_uint8_t value) @property {
3723     ovr_im.LatencyTestDisplay_Mode_set(cast(void*)swigCPtr, SWIGTYPE_p_uint8_t.swigGetCPtr(value));
3724     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3725   }
3726 
3727   public SWIGTYPE_p_uint8_t Mode() @property const {
3728     SWIGTYPE_p_uint8_t ret = new SWIGTYPE_p_uint8_t(ovr_im.LatencyTestDisplay_Mode_get(cast(void*)swigCPtr), true);
3729     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3730     return ret;
3731   }
3732 
3733   public void Value(SWIGTYPE_p_uint32_t value) @property {
3734     ovr_im.LatencyTestDisplay_Value_set(cast(void*)swigCPtr, SWIGTYPE_p_uint32_t.swigGetCPtr(value));
3735     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3736   }
3737 
3738   public SWIGTYPE_p_uint32_t Value() @property const {
3739     SWIGTYPE_p_uint32_t ret = new SWIGTYPE_p_uint32_t(ovr_im.LatencyTestDisplay_Value_get(cast(void*)swigCPtr), true);
3740     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3741     return ret;
3742   }
3743 }
3744 
3745 class LatencyTestDevice : HIDDeviceBase {
3746   private void* swigCPtr;
3747 
3748   public this(void* cObject, bool ownCObject) {
3749     super(ovr_im.LatencyTestDevice_Upcast(cObject), ownCObject);
3750     swigCPtr = cObject;
3751   }
3752 
3753   public static void* swigGetCPtr(LatencyTestDevice obj) {
3754     return (obj is null) ? null : obj.swigCPtr;
3755   }
3756 
3757   mixin ovr_im.SwigOperatorDefinitions;
3758 
3759   ~this() {
3760     dispose();
3761   }
3762 
3763   public override void dispose() {
3764     synchronized(this) {
3765       if (swigCPtr !is null) {
3766         if (swigCMemOwn) {
3767           swigCMemOwn = false;
3768           ovr_im.delete_LatencyTestDevice(cast(void*)swigCPtr);
3769         }
3770         swigCPtr = null;
3771         super.dispose();
3772       }
3773     }
3774   }
3775 
3776   enum {
3777     EnumDeviceType = DeviceType.Device_LatencyTester
3778   }
3779 
3780   public DeviceType GetType() const {
3781     DeviceType ret = cast(DeviceType)ovr_im.LatencyTestDevice_GetType(cast(void*)swigCPtr);
3782     return ret;
3783   }
3784 
3785   public bool SetConfiguration(LatencyTestConfiguration configuration, bool waitFlag) {
3786     bool ret = ovr_im.LatencyTestDevice_SetConfiguration__SWIG_0(cast(void*)swigCPtr, LatencyTestConfiguration.swigGetCPtr(configuration), waitFlag) ? true : false;
3787     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3788     return ret;
3789   }
3790 
3791   public bool SetConfiguration(LatencyTestConfiguration configuration) {
3792     bool ret = ovr_im.LatencyTestDevice_SetConfiguration__SWIG_1(cast(void*)swigCPtr, LatencyTestConfiguration.swigGetCPtr(configuration)) ? true : false;
3793     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3794     return ret;
3795   }
3796 
3797   public bool GetConfiguration(LatencyTestConfiguration configuration) {
3798     bool ret = ovr_im.LatencyTestDevice_GetConfiguration(cast(void*)swigCPtr, LatencyTestConfiguration.swigGetCPtr(configuration)) ? true : false;
3799     return ret;
3800   }
3801 
3802   public bool SetCalibrate(SWIGTYPE_p_Color calibrationColor, bool waitFlag) {
3803     bool ret = ovr_im.LatencyTestDevice_SetCalibrate__SWIG_0(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(calibrationColor), waitFlag) ? true : false;
3804     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3805     return ret;
3806   }
3807 
3808   public bool SetCalibrate(SWIGTYPE_p_Color calibrationColor) {
3809     bool ret = ovr_im.LatencyTestDevice_SetCalibrate__SWIG_1(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(calibrationColor)) ? true : false;
3810     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3811     return ret;
3812   }
3813 
3814   public bool SetStartTest(SWIGTYPE_p_Color targetColor, bool waitFlag) {
3815     bool ret = ovr_im.LatencyTestDevice_SetStartTest__SWIG_0(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(targetColor), waitFlag) ? true : false;
3816     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3817     return ret;
3818   }
3819 
3820   public bool SetStartTest(SWIGTYPE_p_Color targetColor) {
3821     bool ret = ovr_im.LatencyTestDevice_SetStartTest__SWIG_1(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(targetColor)) ? true : false;
3822     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3823     return ret;
3824   }
3825 
3826   public bool SetDisplay(LatencyTestDisplay display, bool waitFlag) {
3827     bool ret = ovr_im.LatencyTestDevice_SetDisplay__SWIG_0(cast(void*)swigCPtr, LatencyTestDisplay.swigGetCPtr(display), waitFlag) ? true : false;
3828     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3829     return ret;
3830   }
3831 
3832   public bool SetDisplay(LatencyTestDisplay display) {
3833     bool ret = ovr_im.LatencyTestDevice_SetDisplay__SWIG_1(cast(void*)swigCPtr, LatencyTestDisplay.swigGetCPtr(display)) ? true : false;
3834     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3835     return ret;
3836   }
3837 
3838   public DeviceBase GetDevice() {
3839     void* cPtr = ovr_im.LatencyTestDevice_GetDevice(cast(void*)swigCPtr);
3840     DeviceBase ret = (cPtr is null) ? null : new DeviceBase(cPtr, false);
3841     return ret;
3842   }
3843 }
3844 
3845 class LatencyTest : NewOverrideBase {
3846   private void* swigCPtr;
3847 
3848   public this(void* cObject, bool ownCObject) {
3849     super(ovr_im.LatencyTest_Upcast(cObject), ownCObject);
3850     swigCPtr = cObject;
3851   }
3852 
3853   public static void* swigGetCPtr(LatencyTest obj) {
3854     return (obj is null) ? null : obj.swigCPtr;
3855   }
3856 
3857   mixin ovr_im.SwigOperatorDefinitions;
3858 
3859   ~this() {
3860     dispose();
3861   }
3862 
3863   public override void dispose() {
3864     synchronized(this) {
3865       if (swigCPtr !is null) {
3866         if (swigCMemOwn) {
3867           swigCMemOwn = false;
3868           ovr_im.delete_LatencyTest(cast(void*)swigCPtr);
3869         }
3870         swigCPtr = null;
3871         super.dispose();
3872       }
3873     }
3874   }
3875 
3876   public this(LatencyTestDevice device) {
3877     this(ovr_im.new_LatencyTest__SWIG_0(LatencyTestDevice.swigGetCPtr(device)), true);
3878   }
3879 
3880   public this() {
3881     this(ovr_im.new_LatencyTest__SWIG_1(), true);
3882   }
3883 
3884   public bool SetDevice(LatencyTestDevice device) {
3885     bool ret = ovr_im.LatencyTest_SetDevice(cast(void*)swigCPtr, LatencyTestDevice.swigGetCPtr(device)) ? true : false;
3886     return ret;
3887   }
3888 
3889   public bool HasDevice() const {
3890     bool ret = ovr_im.LatencyTest_HasDevice(cast(void*)swigCPtr) ? true : false;
3891     return ret;
3892   }
3893 
3894   public void ProcessInputs() {
3895     ovr_im.LatencyTest_ProcessInputs(cast(void*)swigCPtr);
3896   }
3897 
3898   public bool DisplayScreenColor(SWIGTYPE_p_Color colorToDisplay) {
3899     bool ret = ovr_im.LatencyTest_DisplayScreenColor(cast(void*)swigCPtr, SWIGTYPE_p_Color.swigGetCPtr(colorToDisplay)) ? true : false;
3900     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
3901     return ret;
3902   }
3903 
3904   public string GetResultsString() {
3905     string ret = std.conv.to!string(ovr_im.LatencyTest_GetResultsString(cast(void*)swigCPtr));
3906     return ret;
3907   }
3908 
3909   public void BeginTest() {
3910     ovr_im.LatencyTest_BeginTest(cast(void*)swigCPtr);
3911   }
3912 }
3913 
3914 enum StereoMode {
3915   Stereo_None = 0,
3916   Stereo_LeftRight_Multipass = 1
3917 }
3918 
3919 enum StereoEye {
3920   StereoEye_Center,
3921   StereoEye_Left,
3922   StereoEye_Right
3923 }
3924 
3925 class Viewport {
3926   private void* swigCPtr;
3927   protected bool swigCMemOwn;
3928 
3929   public this(void* cObject, bool ownCObject) {
3930     swigCPtr = cObject;
3931     swigCMemOwn = ownCObject;
3932   }
3933 
3934   public static void* swigGetCPtr(Viewport obj) {
3935     return (obj is null) ? null : obj.swigCPtr;
3936   }
3937 
3938   mixin ovr_im.SwigOperatorDefinitions;
3939 
3940   ~this() {
3941     dispose();
3942   }
3943 
3944   public void dispose() {
3945     synchronized(this) {
3946       if (swigCPtr !is null) {
3947         if (swigCMemOwn) {
3948           swigCMemOwn = false;
3949           ovr_im.delete_Viewport(cast(void*)swigCPtr);
3950         }
3951         swigCPtr = null;
3952       }
3953     }
3954   }
3955 
3956   public void x(int value) @property {
3957     ovr_im.Viewport_x_set(cast(void*)swigCPtr, value);
3958   }
3959 
3960   public int x() @property const {
3961     auto ret = ovr_im.Viewport_x_get(cast(void*)swigCPtr);
3962     return ret;
3963   }
3964 
3965   public void y(int value) @property {
3966     ovr_im.Viewport_y_set(cast(void*)swigCPtr, value);
3967   }
3968 
3969   public int y() @property const {
3970     auto ret = ovr_im.Viewport_y_get(cast(void*)swigCPtr);
3971     return ret;
3972   }
3973 
3974   public void w(int value) @property {
3975     ovr_im.Viewport_w_set(cast(void*)swigCPtr, value);
3976   }
3977 
3978   public int w() @property const {
3979     auto ret = ovr_im.Viewport_w_get(cast(void*)swigCPtr);
3980     return ret;
3981   }
3982 
3983   public void h(int value) @property {
3984     ovr_im.Viewport_h_set(cast(void*)swigCPtr, value);
3985   }
3986 
3987   public int h() @property const {
3988     auto ret = ovr_im.Viewport_h_get(cast(void*)swigCPtr);
3989     return ret;
3990   }
3991 
3992   public this() {
3993     this(ovr_im.new_Viewport__SWIG_0(), true);
3994   }
3995 
3996   public this(int x1, int y1, int w1, int h1) {
3997     this(ovr_im.new_Viewport__SWIG_1(x1, y1, w1, h1), true);
3998   }
3999 
4000   public bool swigOpEquals(Viewport vp) const {
4001     bool ret = ovr_im.Viewport_swigOpEquals(cast(void*)swigCPtr, Viewport.swigGetCPtr(vp)) ? true : false;
4002     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
4003     return ret;
4004   }
4005 }
4006 
4007 class DistortionConfig {
4008   private void* swigCPtr;
4009   protected bool swigCMemOwn;
4010 
4011   public this(void* cObject, bool ownCObject) {
4012     swigCPtr = cObject;
4013     swigCMemOwn = ownCObject;
4014   }
4015 
4016   public static void* swigGetCPtr(DistortionConfig obj) {
4017     return (obj is null) ? null : obj.swigCPtr;
4018   }
4019 
4020   mixin ovr_im.SwigOperatorDefinitions;
4021 
4022   ~this() {
4023     dispose();
4024   }
4025 
4026   public void dispose() {
4027     synchronized(this) {
4028       if (swigCPtr !is null) {
4029         if (swigCMemOwn) {
4030           swigCMemOwn = false;
4031           ovr_im.delete_DistortionConfig(cast(void*)swigCPtr);
4032         }
4033         swigCPtr = null;
4034       }
4035     }
4036   }
4037 
4038   public this(float k0, float k1, float k2, float k3) {
4039     this(ovr_im.new_DistortionConfig__SWIG_0(k0, k1, k2, k3), true);
4040   }
4041 
4042   public this(float k0, float k1, float k2) {
4043     this(ovr_im.new_DistortionConfig__SWIG_1(k0, k1, k2), true);
4044   }
4045 
4046   public this(float k0, float k1) {
4047     this(ovr_im.new_DistortionConfig__SWIG_2(k0, k1), true);
4048   }
4049 
4050   public this(float k0) {
4051     this(ovr_im.new_DistortionConfig__SWIG_3(k0), true);
4052   }
4053 
4054   public this() {
4055     this(ovr_im.new_DistortionConfig__SWIG_4(), true);
4056   }
4057 
4058   public void SetCoefficients(float k0, float k1, float k2, float k3) {
4059     ovr_im.DistortionConfig_SetCoefficients__SWIG_0(cast(void*)swigCPtr, k0, k1, k2, k3);
4060   }
4061 
4062   public void SetCoefficients(float k0, float k1, float k2) {
4063     ovr_im.DistortionConfig_SetCoefficients__SWIG_1(cast(void*)swigCPtr, k0, k1, k2);
4064   }
4065 
4066   public void SetCoefficients(float k0, float k1) {
4067     ovr_im.DistortionConfig_SetCoefficients__SWIG_2(cast(void*)swigCPtr, k0, k1);
4068   }
4069 
4070   public void SetCoefficients(float k0) {
4071     ovr_im.DistortionConfig_SetCoefficients__SWIG_3(cast(void*)swigCPtr, k0);
4072   }
4073 
4074   public void SetChromaticAberration(float red1, float red2, float blue1, float blue2) {
4075     ovr_im.DistortionConfig_SetChromaticAberration__SWIG_0(cast(void*)swigCPtr, red1, red2, blue1, blue2);
4076   }
4077 
4078   public void SetChromaticAberration(float red1, float red2, float blue1) {
4079     ovr_im.DistortionConfig_SetChromaticAberration__SWIG_1(cast(void*)swigCPtr, red1, red2, blue1);
4080   }
4081 
4082   public void SetChromaticAberration(float red1, float red2) {
4083     ovr_im.DistortionConfig_SetChromaticAberration__SWIG_2(cast(void*)swigCPtr, red1, red2);
4084   }
4085 
4086   public void SetChromaticAberration(float red1) {
4087     ovr_im.DistortionConfig_SetChromaticAberration__SWIG_3(cast(void*)swigCPtr, red1);
4088   }
4089 
4090   public void SetChromaticAberration() {
4091     ovr_im.DistortionConfig_SetChromaticAberration__SWIG_4(cast(void*)swigCPtr);
4092   }
4093 
4094   public float DistortionFn(float r) const {
4095     auto ret = ovr_im.DistortionConfig_DistortionFn(cast(void*)swigCPtr, r);
4096     return ret;
4097   }
4098 
4099   public float DistortionFnInverse(float r) {
4100     auto ret = ovr_im.DistortionConfig_DistortionFnInverse(cast(void*)swigCPtr, r);
4101     return ret;
4102   }
4103 
4104   public void K(SWIGTYPE_p_float value) @property {
4105     ovr_im.DistortionConfig_K_set(cast(void*)swigCPtr, SWIGTYPE_p_float.swigGetCPtr(value));
4106   }
4107 
4108   public SWIGTYPE_p_float K() @property const {
4109     void* cPtr = ovr_im.DistortionConfig_K_get(cast(void*)swigCPtr);
4110     SWIGTYPE_p_float ret = (cPtr is null) ? null : new SWIGTYPE_p_float(cPtr, false);
4111     return ret;
4112   }
4113 
4114   public void XCenterOffset(float value) @property {
4115     ovr_im.DistortionConfig_XCenterOffset_set(cast(void*)swigCPtr, value);
4116   }
4117 
4118   public float XCenterOffset() @property const {
4119     auto ret = ovr_im.DistortionConfig_XCenterOffset_get(cast(void*)swigCPtr);
4120     return ret;
4121   }
4122 
4123   public void YCenterOffset(float value) @property {
4124     ovr_im.DistortionConfig_YCenterOffset_set(cast(void*)swigCPtr, value);
4125   }
4126 
4127   public float YCenterOffset() @property const {
4128     auto ret = ovr_im.DistortionConfig_YCenterOffset_get(cast(void*)swigCPtr);
4129     return ret;
4130   }
4131 
4132   public void Scale(float value) @property {
4133     ovr_im.DistortionConfig_Scale_set(cast(void*)swigCPtr, value);
4134   }
4135 
4136   public float Scale() @property const {
4137     auto ret = ovr_im.DistortionConfig_Scale_get(cast(void*)swigCPtr);
4138     return ret;
4139   }
4140 
4141   public void ChromaticAberration(SWIGTYPE_p_float value) @property {
4142     ovr_im.DistortionConfig_ChromaticAberration_set(cast(void*)swigCPtr, SWIGTYPE_p_float.swigGetCPtr(value));
4143   }
4144 
4145   public SWIGTYPE_p_float ChromaticAberration() @property const {
4146     void* cPtr = ovr_im.DistortionConfig_ChromaticAberration_get(cast(void*)swigCPtr);
4147     SWIGTYPE_p_float ret = (cPtr is null) ? null : new SWIGTYPE_p_float(cPtr, false);
4148     return ret;
4149   }
4150 }
4151 
4152 class StereoEyeParams {
4153   private void* swigCPtr;
4154   protected bool swigCMemOwn;
4155 
4156   public this(void* cObject, bool ownCObject) {
4157     swigCPtr = cObject;
4158     swigCMemOwn = ownCObject;
4159   }
4160 
4161   public static void* swigGetCPtr(StereoEyeParams obj) {
4162     return (obj is null) ? null : obj.swigCPtr;
4163   }
4164 
4165   mixin ovr_im.SwigOperatorDefinitions;
4166 
4167   ~this() {
4168     dispose();
4169   }
4170 
4171   public void dispose() {
4172     synchronized(this) {
4173       if (swigCPtr !is null) {
4174         if (swigCMemOwn) {
4175           swigCMemOwn = false;
4176           ovr_im.delete_StereoEyeParams(cast(void*)swigCPtr);
4177         }
4178         swigCPtr = null;
4179       }
4180     }
4181   }
4182 
4183   public void Eye(StereoEye value) @property {
4184     ovr_im.StereoEyeParams_Eye_set(cast(void*)swigCPtr, cast(int)value);
4185   }
4186 
4187   public StereoEye Eye() @property const {
4188     StereoEye ret = cast(StereoEye)ovr_im.StereoEyeParams_Eye_get(cast(void*)swigCPtr);
4189     return ret;
4190   }
4191 
4192   public void VP(Viewport value) @property {
4193     ovr_im.StereoEyeParams_VP_set(cast(void*)swigCPtr, Viewport.swigGetCPtr(value));
4194   }
4195 
4196   public Viewport VP() @property const {
4197     void* cPtr = ovr_im.StereoEyeParams_VP_get(cast(void*)swigCPtr);
4198     Viewport ret = (cPtr is null) ? null : new Viewport(cPtr, false);
4199     return ret;
4200   }
4201 
4202   public void pDistortion(DistortionConfig value) @property {
4203     ovr_im.StereoEyeParams_pDistortion_set(cast(void*)swigCPtr, DistortionConfig.swigGetCPtr(value));
4204   }
4205 
4206   public DistortionConfig pDistortion() @property const {
4207     void* cPtr = ovr_im.StereoEyeParams_pDistortion_get(cast(void*)swigCPtr);
4208     DistortionConfig ret = (cPtr is null) ? null : new DistortionConfig(cPtr, false);
4209     return ret;
4210   }
4211 
4212   public void ViewAdjust(Matrix4f value) @property {
4213     ovr_im.StereoEyeParams_ViewAdjust_set(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(value));
4214   }
4215 
4216   public Matrix4f ViewAdjust() @property const {
4217     void* cPtr = ovr_im.StereoEyeParams_ViewAdjust_get(cast(void*)swigCPtr);
4218     Matrix4f ret = (cPtr is null) ? null : new Matrix4f(cPtr, false);
4219     return ret;
4220   }
4221 
4222   public void Projection(Matrix4f value) @property {
4223     ovr_im.StereoEyeParams_Projection_set(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(value));
4224   }
4225 
4226   public Matrix4f Projection() @property const {
4227     void* cPtr = ovr_im.StereoEyeParams_Projection_get(cast(void*)swigCPtr);
4228     Matrix4f ret = (cPtr is null) ? null : new Matrix4f(cPtr, false);
4229     return ret;
4230   }
4231 
4232   public void OrthoProjection(Matrix4f value) @property {
4233     ovr_im.StereoEyeParams_OrthoProjection_set(cast(void*)swigCPtr, Matrix4f.swigGetCPtr(value));
4234   }
4235 
4236   public Matrix4f OrthoProjection() @property const {
4237     void* cPtr = ovr_im.StereoEyeParams_OrthoProjection_get(cast(void*)swigCPtr);
4238     Matrix4f ret = (cPtr is null) ? null : new Matrix4f(cPtr, false);
4239     return ret;
4240   }
4241 
4242   public void Init(StereoEye eye, Viewport vp, float vofs, Matrix4f proj, Matrix4f orthoProj, DistortionConfig distortion) {
4243     ovr_im.StereoEyeParams_Init__SWIG_0(cast(void*)swigCPtr, cast(int)eye, Viewport.swigGetCPtr(vp), vofs, Matrix4f.swigGetCPtr(proj), Matrix4f.swigGetCPtr(orthoProj), DistortionConfig.swigGetCPtr(distortion));
4244     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
4245   }
4246 
4247   public void Init(StereoEye eye, Viewport vp, float vofs, Matrix4f proj, Matrix4f orthoProj) {
4248     ovr_im.StereoEyeParams_Init__SWIG_1(cast(void*)swigCPtr, cast(int)eye, Viewport.swigGetCPtr(vp), vofs, Matrix4f.swigGetCPtr(proj), Matrix4f.swigGetCPtr(orthoProj));
4249     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
4250   }
4251 
4252   public this() {
4253     this(ovr_im.new_StereoEyeParams(), true);
4254   }
4255 }
4256 
4257 class StereoConfig {
4258   private void* swigCPtr;
4259   protected bool swigCMemOwn;
4260 
4261   public this(void* cObject, bool ownCObject) {
4262     swigCPtr = cObject;
4263     swigCMemOwn = ownCObject;
4264   }
4265 
4266   public static void* swigGetCPtr(StereoConfig obj) {
4267     return (obj is null) ? null : obj.swigCPtr;
4268   }
4269 
4270   mixin ovr_im.SwigOperatorDefinitions;
4271 
4272   ~this() {
4273     dispose();
4274   }
4275 
4276   public void dispose() {
4277     synchronized(this) {
4278       if (swigCPtr !is null) {
4279         if (swigCMemOwn) {
4280           swigCMemOwn = false;
4281           ovr_im.delete_StereoConfig(cast(void*)swigCPtr);
4282         }
4283         swigCPtr = null;
4284       }
4285     }
4286   }
4287 
4288   public this(StereoMode mode, Viewport fullViewport) {
4289     this(ovr_im.new_StereoConfig__SWIG_0(cast(int)mode, Viewport.swigGetCPtr(fullViewport)), true);
4290     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
4291   }
4292 
4293   public this(StereoMode mode) {
4294     this(ovr_im.new_StereoConfig__SWIG_1(cast(int)mode), true);
4295   }
4296 
4297   public this() {
4298     this(ovr_im.new_StereoConfig__SWIG_2(), true);
4299   }
4300 
4301   public void SetStereoMode(StereoMode mode) {
4302     ovr_im.StereoConfig_SetStereoMode(cast(void*)swigCPtr, cast(int)mode);
4303   }
4304 
4305   public StereoMode GetStereoMode() const {
4306     StereoMode ret = cast(StereoMode)ovr_im.StereoConfig_GetStereoMode(cast(void*)swigCPtr);
4307     return ret;
4308   }
4309 
4310   public void SetHMDInfo(HMDInfo hmd) {
4311     ovr_im.StereoConfig_SetHMDInfo(cast(void*)swigCPtr, HMDInfo.swigGetCPtr(hmd));
4312     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
4313   }
4314 
4315   public HMDInfo GetHMDInfo() const {
4316     HMDInfo ret = new HMDInfo(ovr_im.StereoConfig_GetHMDInfo(cast(void*)swigCPtr), false);
4317     return ret;
4318   }
4319 
4320   public float GetEyeToScreenDistance() const {
4321     auto ret = ovr_im.StereoConfig_GetEyeToScreenDistance(cast(void*)swigCPtr);
4322     return ret;
4323   }
4324 
4325   public void SetEyeToScreenDistance(float esd) {
4326     ovr_im.StereoConfig_SetEyeToScreenDistance(cast(void*)swigCPtr, esd);
4327   }
4328 
4329   public void SetIPD(float ipd) {
4330     ovr_im.StereoConfig_SetIPD(cast(void*)swigCPtr, ipd);
4331   }
4332 
4333   public float GetIPD() const {
4334     auto ret = ovr_im.StereoConfig_GetIPD(cast(void*)swigCPtr);
4335     return ret;
4336   }
4337 
4338   public void SetFullViewport(Viewport vp) {
4339     ovr_im.StereoConfig_SetFullViewport(cast(void*)swigCPtr, Viewport.swigGetCPtr(vp));
4340     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
4341   }
4342 
4343   public Viewport GetFullViewport() const {
4344     Viewport ret = new Viewport(ovr_im.StereoConfig_GetFullViewport(cast(void*)swigCPtr), false);
4345     return ret;
4346   }
4347 
4348   public void SetAspectMultiplier(float m) {
4349     ovr_im.StereoConfig_SetAspectMultiplier(cast(void*)swigCPtr, m);
4350   }
4351 
4352   public float GetAspectMultiplier() const {
4353     auto ret = ovr_im.StereoConfig_GetAspectMultiplier(cast(void*)swigCPtr);
4354     return ret;
4355   }
4356 
4357   public void SetDistortionFitPointVP(float x, float y) {
4358     ovr_im.StereoConfig_SetDistortionFitPointVP(cast(void*)swigCPtr, x, y);
4359   }
4360 
4361   public void SetDistortionFitPointPixels(float x, float y) {
4362     ovr_im.StereoConfig_SetDistortionFitPointPixels(cast(void*)swigCPtr, x, y);
4363   }
4364 
4365   public void SetDistortionConfig(DistortionConfig d) {
4366     ovr_im.StereoConfig_SetDistortionConfig(cast(void*)swigCPtr, DistortionConfig.swigGetCPtr(d));
4367     if (ovr_im.SwigPendingException.isPending) throw ovr_im.SwigPendingException.retrieve();
4368   }
4369 
4370   public void SetDistortionK(int i, float k) {
4371     ovr_im.StereoConfig_SetDistortionK(cast(void*)swigCPtr, i, k);
4372   }
4373 
4374   public float GetDistortionK(int i) const {
4375     auto ret = ovr_im.StereoConfig_GetDistortionK(cast(void*)swigCPtr, i);
4376     return ret;
4377   }
4378 
4379   public void Set2DAreaFov(float fovRadians) {
4380     ovr_im.StereoConfig_Set2DAreaFov(cast(void*)swigCPtr, fovRadians);
4381   }
4382 
4383   public float GetAspect() {
4384     auto ret = ovr_im.StereoConfig_GetAspect(cast(void*)swigCPtr);
4385     return ret;
4386   }
4387 
4388   public float GetYFOVRadians() {
4389     auto ret = ovr_im.StereoConfig_GetYFOVRadians(cast(void*)swigCPtr);
4390     return ret;
4391   }
4392 
4393   public float GetYFOVDegrees() {
4394     auto ret = ovr_im.StereoConfig_GetYFOVDegrees(cast(void*)swigCPtr);
4395     return ret;
4396   }
4397 
4398   public float GetProjectionCenterOffset() {
4399     auto ret = ovr_im.StereoConfig_GetProjectionCenterOffset(cast(void*)swigCPtr);
4400     return ret;
4401   }
4402 
4403   public DistortionConfig GetDistortionConfig() {
4404     DistortionConfig ret = new DistortionConfig(ovr_im.StereoConfig_GetDistortionConfig(cast(void*)swigCPtr), false);
4405     return ret;
4406   }
4407 
4408   public float GetDistortionScale() {
4409     auto ret = ovr_im.StereoConfig_GetDistortionScale(cast(void*)swigCPtr);
4410     return ret;
4411   }
4412 
4413   public float Get2DUnitPixel() {
4414     auto ret = ovr_im.StereoConfig_Get2DUnitPixel(cast(void*)swigCPtr);
4415     return ret;
4416   }
4417 
4418   public StereoEyeParams GetEyeRenderParams(StereoEye eye) {
4419     StereoEyeParams ret = new StereoEyeParams(ovr_im.StereoConfig_GetEyeRenderParams(cast(void*)swigCPtr, cast(int)eye), false);
4420     return ret;
4421   }
4422 }
4423 
4424 enum JSONItemType {
4425   JSON_None = 0,
4426   JSON_Null = 1,
4427   JSON_Bool = 2,
4428   JSON_Number = 3,
4429   JSON_String = 4,
4430   JSON_Array = 5,
4431   JSON_Object = 6
4432 }
4433 
4434 class JSON {
4435   private void* swigCPtr;
4436   protected bool swigCMemOwn;
4437 
4438   public this(void* cObject, bool ownCObject) {
4439     swigCPtr = cObject;
4440     swigCMemOwn = ownCObject;
4441   }
4442 
4443   public static void* swigGetCPtr(JSON obj) {
4444     return (obj is null) ? null : obj.swigCPtr;
4445   }
4446 
4447   mixin ovr_im.SwigOperatorDefinitions;
4448 
4449   ~this() {
4450     dispose();
4451   }
4452 
4453   public void dispose() {
4454     synchronized(this) {
4455       if (swigCPtr !is null) {
4456         if (swigCMemOwn) {
4457           swigCMemOwn = false;
4458           ovr_im.delete_JSON(cast(void*)swigCPtr);
4459         }
4460         swigCPtr = null;
4461       }
4462     }
4463   }
4464 
4465   public void Type(JSONItemType value) @property {
4466     ovr_im.JSON_Type_set(cast(void*)swigCPtr, cast(int)value);
4467   }
4468 
4469   public JSONItemType Type() @property const {
4470     JSONItemType ret = cast(JSONItemType)ovr_im.JSON_Type_get(cast(void*)swigCPtr);
4471     return ret;
4472   }
4473 
4474   public void Name(String value) @property {
4475     ovr_im.JSON_Name_set(cast(void*)swigCPtr, String.swigGetCPtr(value));
4476   }
4477 
4478   public String Name() @property const {
4479     void* cPtr = ovr_im.JSON_Name_get(cast(void*)swigCPtr);
4480     String ret = (cPtr is null) ? null : new String(cPtr, false);
4481     return ret;
4482   }
4483 
4484   public void Value(String value) @property {
4485     ovr_im.JSON_Value_set(cast(void*)swigCPtr, String.swigGetCPtr(value));
4486   }
4487 
4488   public String Value() @property const {
4489     void* cPtr = ovr_im.JSON_Value_get(cast(void*)swigCPtr);
4490     String ret = (cPtr is null) ? null : new String(cPtr, false);
4491     return ret;
4492   }
4493 
4494   public void dValue(double value) @property {
4495     ovr_im.JSON_dValue_set(cast(void*)swigCPtr, value);
4496   }
4497 
4498   public double dValue() @property const {
4499     auto ret = ovr_im.JSON_dValue_get(cast(void*)swigCPtr);
4500     return ret;
4501   }
4502 
4503   public static JSON CreateObject() {
4504     void* cPtr = ovr_im.JSON_CreateObject();
4505     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4506     return ret;
4507   }
4508 
4509   public static JSON CreateNull() {
4510     void* cPtr = ovr_im.JSON_CreateNull();
4511     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4512     return ret;
4513   }
4514 
4515   public static JSON CreateArray() {
4516     void* cPtr = ovr_im.JSON_CreateArray();
4517     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4518     return ret;
4519   }
4520 
4521   public static JSON CreateBool(bool b) {
4522     void* cPtr = ovr_im.JSON_CreateBool(b);
4523     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4524     return ret;
4525   }
4526 
4527   public static JSON CreateNumber(double num) {
4528     void* cPtr = ovr_im.JSON_CreateNumber(num);
4529     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4530     return ret;
4531   }
4532 
4533   public static JSON CreateString(string s) {
4534     void* cPtr = ovr_im.JSON_CreateString((s ? std..string.toStringz(s) : null));
4535     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4536     return ret;
4537   }
4538 
4539   public static JSON Parse(string buff, char** perror) {
4540     void* cPtr = ovr_im.JSON_Parse__SWIG_0((buff ? std..string.toStringz(buff) : null), cast(void*)perror);
4541     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4542     return ret;
4543   }
4544 
4545   public static JSON Parse(string buff) {
4546     void* cPtr = ovr_im.JSON_Parse__SWIG_1((buff ? std..string.toStringz(buff) : null));
4547     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4548     return ret;
4549   }
4550 
4551   public static JSON Load(string path, char** perror) {
4552     void* cPtr = ovr_im.JSON_Load__SWIG_0((path ? std..string.toStringz(path) : null), cast(void*)perror);
4553     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4554     return ret;
4555   }
4556 
4557   public static JSON Load(string path) {
4558     void* cPtr = ovr_im.JSON_Load__SWIG_1((path ? std..string.toStringz(path) : null));
4559     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4560     return ret;
4561   }
4562 
4563   public bool Save(string path) {
4564     bool ret = ovr_im.JSON_Save(cast(void*)swigCPtr, (path ? std..string.toStringz(path) : null)) ? true : false;
4565     return ret;
4566   }
4567 
4568   public bool HasItems() const {
4569     bool ret = ovr_im.JSON_HasItems(cast(void*)swigCPtr) ? true : false;
4570     return ret;
4571   }
4572 
4573   public JSON GetFirstItem() {
4574     void* cPtr = ovr_im.JSON_GetFirstItem(cast(void*)swigCPtr);
4575     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4576     return ret;
4577   }
4578 
4579   public JSON GetLastItem() {
4580     void* cPtr = ovr_im.JSON_GetLastItem(cast(void*)swigCPtr);
4581     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4582     return ret;
4583   }
4584 
4585   public uint GetItemCount() const {
4586     auto ret = ovr_im.JSON_GetItemCount(cast(void*)swigCPtr);
4587     return ret;
4588   }
4589 
4590   public JSON GetItemByIndex(uint i) {
4591     void* cPtr = ovr_im.JSON_GetItemByIndex(cast(void*)swigCPtr, i);
4592     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4593     return ret;
4594   }
4595 
4596   public JSON GetItemByName(string name) {
4597     void* cPtr = ovr_im.JSON_GetItemByName(cast(void*)swigCPtr, (name ? std..string.toStringz(name) : null));
4598     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4599     return ret;
4600   }
4601 
4602   public JSON GetNextItem(JSON item) {
4603     void* cPtr = ovr_im.JSON_GetNextItem(cast(void*)swigCPtr, JSON.swigGetCPtr(item));
4604     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4605     return ret;
4606   }
4607 
4608   public JSON GetPrevItem(JSON item) {
4609     void* cPtr = ovr_im.JSON_GetPrevItem(cast(void*)swigCPtr, JSON.swigGetCPtr(item));
4610     JSON ret = (cPtr is null) ? null : new JSON(cPtr, false);
4611     return ret;
4612   }
4613 
4614   public void AddItem(string arg0, JSON item) {
4615     ovr_im.JSON_AddItem(cast(void*)swigCPtr, (arg0 ? std..string.toStringz(arg0) : null), JSON.swigGetCPtr(item));
4616   }
4617 
4618   public void AddNullItem(string name) {
4619     ovr_im.JSON_AddNullItem(cast(void*)swigCPtr, (name ? std..string.toStringz(name) : null));
4620   }
4621 
4622   public void AddBoolItem(string name, bool b) {
4623     ovr_im.JSON_AddBoolItem(cast(void*)swigCPtr, (name ? std..string.toStringz(name) : null), b);
4624   }
4625 
4626   public void AddNumberItem(string name, double n) {
4627     ovr_im.JSON_AddNumberItem(cast(void*)swigCPtr, (name ? std..string.toStringz(name) : null), n);
4628   }
4629 
4630   public void AddStringItem(string name, string s) {
4631     ovr_im.JSON_AddStringItem(cast(void*)swigCPtr, (name ? std..string.toStringz(name) : null), (s ? std..string.toStringz(s) : null));
4632   }
4633 
4634   public void AddArrayElement(JSON item) {
4635     ovr_im.JSON_AddArrayElement(cast(void*)swigCPtr, JSON.swigGetCPtr(item));
4636   }
4637 
4638   public void AddArrayNumber(double n) {
4639     ovr_im.JSON_AddArrayNumber(cast(void*)swigCPtr, n);
4640   }
4641 
4642   public void AddArrayString(string s) {
4643     ovr_im.JSON_AddArrayString(cast(void*)swigCPtr, (s ? std..string.toStringz(s) : null));
4644   }
4645 
4646   public int GetArraySize() {
4647     auto ret = ovr_im.JSON_GetArraySize(cast(void*)swigCPtr);
4648     return ret;
4649   }
4650 
4651   public double GetArrayNumber(int index) {
4652     auto ret = ovr_im.JSON_GetArrayNumber(cast(void*)swigCPtr, index);
4653     return ret;
4654   }
4655 
4656   public string GetArrayString(int index) {
4657     string ret = std.conv.to!string(ovr_im.JSON_GetArrayString(cast(void*)swigCPtr, index));
4658     return ret;
4659   }
4660 }
4661 
4662 class SWIGTYPE_p_wchar_t {
4663   private void* swigCPtr;
4664 
4665   public this(void* cObject, bool futureUse) {
4666     swigCPtr = cObject;
4667   }
4668 
4669   protected this() {
4670     swigCPtr = null;
4671   }
4672 
4673   public static void* swigGetCPtr(SWIGTYPE_p_wchar_t obj) {
4674     return (obj is null) ? null : obj.swigCPtr;
4675   }
4676 
4677   mixin ovr_im.SwigOperatorDefinitions;
4678 }
4679 
4680 class SWIGTYPE_p_uint16_t {
4681   private void* swigCPtr;
4682 
4683   public this(void* cObject, bool futureUse) {
4684     swigCPtr = cObject;
4685   }
4686 
4687   protected this() {
4688     swigCPtr = null;
4689   }
4690 
4691   public static void* swigGetCPtr(SWIGTYPE_p_uint16_t obj) {
4692     return (obj is null) ? null : obj.swigCPtr;
4693   }
4694 
4695   mixin ovr_im.SwigOperatorDefinitions;
4696 }
4697 
4698 class SWIGTYPE_p_OVR__PtrT_OVR__DeviceCreateDesc_t {
4699   private void* swigCPtr;
4700 
4701   public this(void* cObject, bool futureUse) {
4702     swigCPtr = cObject;
4703   }
4704 
4705   protected this() {
4706     swigCPtr = null;
4707   }
4708 
4709   public static void* swigGetCPtr(SWIGTYPE_p_OVR__PtrT_OVR__DeviceCreateDesc_t obj) {
4710     return (obj is null) ? null : obj.swigCPtr;
4711   }
4712 
4713   mixin ovr_im.SwigOperatorDefinitions;
4714 }
4715 
4716 class SWIGTYPE_p_uint32_t {
4717   private void* swigCPtr;
4718 
4719   public this(void* cObject, bool futureUse) {
4720     swigCPtr = cObject;
4721   }
4722 
4723   protected this() {
4724     swigCPtr = null;
4725   }
4726 
4727   public static void* swigGetCPtr(SWIGTYPE_p_uint32_t obj) {
4728     return (obj is null) ? null : obj.swigCPtr;
4729   }
4730 
4731   mixin ovr_im.SwigOperatorDefinitions;
4732 }
4733 
4734 class SWIGTYPE_p_time_t {
4735   private void* swigCPtr;
4736 
4737   public this(void* cObject, bool futureUse) {
4738     swigCPtr = cObject;
4739   }
4740 
4741   protected this() {
4742     swigCPtr = null;
4743   }
4744 
4745   public static void* swigGetCPtr(SWIGTYPE_p_time_t obj) {
4746     return (obj is null) ? null : obj.swigCPtr;
4747   }
4748 
4749   mixin ovr_im.SwigOperatorDefinitions;
4750 }
4751 
4752 class SWIGTYPE_p_float {
4753   private void* swigCPtr;
4754 
4755   public this(void* cObject, bool futureUse) {
4756     swigCPtr = cObject;
4757   }
4758 
4759   protected this() {
4760     swigCPtr = null;
4761   }
4762 
4763   public static void* swigGetCPtr(SWIGTYPE_p_float obj) {
4764     return (obj is null) ? null : obj.swigCPtr;
4765   }
4766 
4767   mixin ovr_im.SwigOperatorDefinitions;
4768 }
4769 
4770 class SWIGTYPE_p_OVR__String__InitStruct {
4771   private void* swigCPtr;
4772 
4773   public this(void* cObject, bool futureUse) {
4774     swigCPtr = cObject;
4775   }
4776 
4777   protected this() {
4778     swigCPtr = null;
4779   }
4780 
4781   public static void* swigGetCPtr(SWIGTYPE_p_OVR__String__InitStruct obj) {
4782     return (obj is null) ? null : obj.swigCPtr;
4783   }
4784 
4785   mixin ovr_im.SwigOperatorDefinitions;
4786 }
4787 
4788 class SWIGTYPE_p_va_list {
4789   private void* swigCPtr;
4790 
4791   public this(void* cObject, bool futureUse) {
4792     swigCPtr = cObject;
4793   }
4794 
4795   protected this() {
4796     swigCPtr = null;
4797   }
4798 
4799   public static void* swigGetCPtr(SWIGTYPE_p_va_list obj) {
4800     return (obj is null) ? null : obj.swigCPtr;
4801   }
4802 
4803   mixin ovr_im.SwigOperatorDefinitions;
4804 }
4805 
4806 class SWIGTYPE_p_OVR__DeviceCreateDesc {
4807   private void* swigCPtr;
4808 
4809   public this(void* cObject, bool futureUse) {
4810     swigCPtr = cObject;
4811   }
4812 
4813   protected this() {
4814     swigCPtr = null;
4815   }
4816 
4817   public static void* swigGetCPtr(SWIGTYPE_p_OVR__DeviceCreateDesc obj) {
4818     return (obj is null) ? null : obj.swigCPtr;
4819   }
4820 
4821   mixin ovr_im.SwigOperatorDefinitions;
4822 }
4823 
4824 class SWIGTYPE_p_Color {
4825   private void* swigCPtr;
4826 
4827   public this(void* cObject, bool futureUse) {
4828     swigCPtr = cObject;
4829   }
4830 
4831   protected this() {
4832     swigCPtr = null;
4833   }
4834 
4835   public static void* swigGetCPtr(SWIGTYPE_p_Color obj) {
4836     return (obj is null) ? null : obj.swigCPtr;
4837   }
4838 
4839   mixin ovr_im.SwigOperatorDefinitions;
4840 }
4841 
4842 class SWIGTYPE_p_a_4__float {
4843   private void* swigCPtr;
4844 
4845   public this(void* cObject, bool futureUse) {
4846     swigCPtr = cObject;
4847   }
4848 
4849   protected this() {
4850     swigCPtr = null;
4851   }
4852 
4853   public static void* swigGetCPtr(SWIGTYPE_p_a_4__float obj) {
4854     return (obj is null) ? null : obj.swigCPtr;
4855   }
4856 
4857   mixin ovr_im.SwigOperatorDefinitions;
4858 }
4859 
4860 class SWIGTYPE_p_MessageHandler {
4861   private void* swigCPtr;
4862 
4863   public this(void* cObject, bool futureUse) {
4864     swigCPtr = cObject;
4865   }
4866 
4867   protected this() {
4868     swigCPtr = null;
4869   }
4870 
4871   public static void* swigGetCPtr(SWIGTYPE_p_MessageHandler obj) {
4872     return (obj is null) ? null : obj.swigCPtr;
4873   }
4874 
4875   mixin ovr_im.SwigOperatorDefinitions;
4876 }
4877 
4878 class SWIGTYPE_p_ArrayT_Color_t {
4879   private void* swigCPtr;
4880 
4881   public this(void* cObject, bool futureUse) {
4882     swigCPtr = cObject;
4883   }
4884 
4885   protected this() {
4886     swigCPtr = null;
4887   }
4888 
4889   public static void* swigGetCPtr(SWIGTYPE_p_ArrayT_Color_t obj) {
4890     return (obj is null) ? null : obj.swigCPtr;
4891   }
4892 
4893   mixin ovr_im.SwigOperatorDefinitions;
4894 }
4895 
4896 class SWIGTYPE_p_OVR__String__NoCaseKey {
4897   private void* swigCPtr;
4898 
4899   public this(void* cObject, bool futureUse) {
4900     swigCPtr = cObject;
4901   }
4902 
4903   protected this() {
4904     swigCPtr = null;
4905   }
4906 
4907   public static void* swigGetCPtr(SWIGTYPE_p_OVR__String__NoCaseKey obj) {
4908     return (obj is null) ? null : obj.swigCPtr;
4909   }
4910 
4911   mixin ovr_im.SwigOperatorDefinitions;
4912 }
4913 
4914 class SWIGTYPE_p_ptrdiff_t {
4915   private void* swigCPtr;
4916 
4917   public this(void* cObject, bool futureUse) {
4918     swigCPtr = cObject;
4919   }
4920 
4921   protected this() {
4922     swigCPtr = null;
4923   }
4924 
4925   public static void* swigGetCPtr(SWIGTYPE_p_ptrdiff_t obj) {
4926     return (obj is null) ? null : obj.swigCPtr;
4927   }
4928 
4929   mixin ovr_im.SwigOperatorDefinitions;
4930 }
4931 
4932 class SWIGTYPE_p_DataDesc {
4933   private void* swigCPtr;
4934 
4935   public this(void* cObject, bool futureUse) {
4936     swigCPtr = cObject;
4937   }
4938 
4939   protected this() {
4940     swigCPtr = null;
4941   }
4942 
4943   public static void* swigGetCPtr(SWIGTYPE_p_DataDesc obj) {
4944     return (obj is null) ? null : obj.swigCPtr;
4945   }
4946 
4947   mixin ovr_im.SwigOperatorDefinitions;
4948 }
4949 
4950 class SWIGTYPE_p_uint8_t {
4951   private void* swigCPtr;
4952 
4953   public this(void* cObject, bool futureUse) {
4954     swigCPtr = cObject;
4955   }
4956 
4957   protected this() {
4958     swigCPtr = null;
4959   }
4960 
4961   public static void* swigGetCPtr(SWIGTYPE_p_uint8_t obj) {
4962     return (obj is null) ? null : obj.swigCPtr;
4963   }
4964 
4965   mixin ovr_im.SwigOperatorDefinitions;
4966 }
4967 
4968 class SWIGTYPE_p_OVR__DeviceEnumeratorT_OVR__DeviceBase_t {
4969   private void* swigCPtr;
4970 
4971   public this(void* cObject, bool futureUse) {
4972     swigCPtr = cObject;
4973   }
4974 
4975   protected this() {
4976     swigCPtr = null;
4977   }
4978 
4979   public static void* swigGetCPtr(SWIGTYPE_p_OVR__DeviceEnumeratorT_OVR__DeviceBase_t obj) {
4980     return (obj is null) ? null : obj.swigCPtr;
4981   }
4982 
4983   mixin ovr_im.SwigOperatorDefinitions;
4984 }
4985 
4986 class SWIGTYPE_p_OVR__Vector3T_float_t {
4987   private void* swigCPtr;
4988 
4989   public this(void* cObject, bool futureUse) {
4990     swigCPtr = cObject;
4991   }
4992 
4993   protected this() {
4994     swigCPtr = null;
4995   }
4996 
4997   public static void* swigGetCPtr(SWIGTYPE_p_OVR__Vector3T_float_t obj) {
4998     return (obj is null) ? null : obj.swigCPtr;
4999   }
5000 
5001   mixin ovr_im.SwigOperatorDefinitions;
5002 }
5003 
5004 class SWIGTYPE_p_pthread_mutexattr_t {
5005   private void* swigCPtr;
5006 
5007   public this(void* cObject, bool futureUse) {
5008     swigCPtr = cObject;
5009   }
5010 
5011   protected this() {
5012     swigCPtr = null;
5013   }
5014 
5015   public static void* swigGetCPtr(SWIGTYPE_p_pthread_mutexattr_t obj) {
5016     return (obj is null) ? null : obj.swigCPtr;
5017   }
5018 
5019   mixin ovr_im.SwigOperatorDefinitions;
5020 }
5021 
5022 alias SWIGTYPE_p_OVR__QuatT_float_t Quatf;
5023 
5024 class SWIGTYPE_p_OVR__QuatT_float_t {
5025   private void* swigCPtr;
5026 
5027   public this(void* cObject, bool futureUse) {
5028     swigCPtr = cObject;
5029   }
5030 
5031   protected this() {
5032     swigCPtr = null;
5033   }
5034 
5035   public static void* swigGetCPtr(SWIGTYPE_p_OVR__QuatT_float_t obj) {
5036     return (obj is null) ? null : obj.swigCPtr;
5037   }
5038 
5039   mixin ovr_im.SwigOperatorDefinitions;
5040 
5041 	void GetEulerAngles( float* y, float* x, float* z )
5042 	{
5043 		ovr_im.Quatf_GetEulerAngles( swigCPtr, y, x, z );
5044 	}
5045 }