vmbc_sys/
lib.rs

1/* automatically generated by rust-bindgen 0.69.4 */
2
3#![allow(dead_code,non_upper_case_globals,non_camel_case_types,non_snake_case)]
4
5pub const _STDINT_H: u32 = 1;
6pub const _FEATURES_H: u32 = 1;
7pub const _DEFAULT_SOURCE: u32 = 1;
8pub const __GLIBC_USE_ISOC2X: u32 = 0;
9pub const __USE_ISOC11: u32 = 1;
10pub const __USE_ISOC99: u32 = 1;
11pub const __USE_ISOC95: u32 = 1;
12pub const __USE_POSIX_IMPLICITLY: u32 = 1;
13pub const _POSIX_SOURCE: u32 = 1;
14pub const _POSIX_C_SOURCE: u32 = 200809;
15pub const __USE_POSIX: u32 = 1;
16pub const __USE_POSIX2: u32 = 1;
17pub const __USE_POSIX199309: u32 = 1;
18pub const __USE_POSIX199506: u32 = 1;
19pub const __USE_XOPEN2K: u32 = 1;
20pub const __USE_XOPEN2K8: u32 = 1;
21pub const _ATFILE_SOURCE: u32 = 1;
22pub const __USE_MISC: u32 = 1;
23pub const __USE_ATFILE: u32 = 1;
24pub const __USE_FORTIFY_LEVEL: u32 = 0;
25pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
26pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
27pub const _STDC_PREDEF_H: u32 = 1;
28pub const __STDC_IEC_559__: u32 = 1;
29pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
30pub const __STDC_ISO_10646__: u32 = 201706;
31pub const __GNU_LIBRARY__: u32 = 6;
32pub const __GLIBC__: u32 = 2;
33pub const __GLIBC_MINOR__: u32 = 31;
34pub const _SYS_CDEFS_H: u32 = 1;
35pub const __glibc_c99_flexarr_available: u32 = 1;
36pub const __WORDSIZE: u32 = 64;
37pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
38pub const __SYSCALL_WORDSIZE: u32 = 64;
39pub const __LONG_DOUBLE_USES_FLOAT128: u32 = 0;
40pub const __HAVE_GENERIC_SELECTION: u32 = 1;
41pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
42pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
43pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0;
44pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
45pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0;
46pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
47pub const _BITS_TYPES_H: u32 = 1;
48pub const __TIMESIZE: u32 = 64;
49pub const _BITS_TYPESIZES_H: u32 = 1;
50pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
51pub const __INO_T_MATCHES_INO64_T: u32 = 1;
52pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
53pub const __STATFS_MATCHES_STATFS64: u32 = 1;
54pub const __FD_SETSIZE: u32 = 1024;
55pub const _BITS_TIME64_H: u32 = 1;
56pub const _BITS_WCHAR_H: u32 = 1;
57pub const _BITS_STDINT_INTN_H: u32 = 1;
58pub const _BITS_STDINT_UINTN_H: u32 = 1;
59pub const INT8_MIN: i32 = -128;
60pub const INT16_MIN: i32 = -32768;
61pub const INT32_MIN: i32 = -2147483648;
62pub const INT8_MAX: u32 = 127;
63pub const INT16_MAX: u32 = 32767;
64pub const INT32_MAX: u32 = 2147483647;
65pub const UINT8_MAX: u32 = 255;
66pub const UINT16_MAX: u32 = 65535;
67pub const UINT32_MAX: u32 = 4294967295;
68pub const INT_LEAST8_MIN: i32 = -128;
69pub const INT_LEAST16_MIN: i32 = -32768;
70pub const INT_LEAST32_MIN: i32 = -2147483648;
71pub const INT_LEAST8_MAX: u32 = 127;
72pub const INT_LEAST16_MAX: u32 = 32767;
73pub const INT_LEAST32_MAX: u32 = 2147483647;
74pub const UINT_LEAST8_MAX: u32 = 255;
75pub const UINT_LEAST16_MAX: u32 = 65535;
76pub const UINT_LEAST32_MAX: u32 = 4294967295;
77pub const INT_FAST8_MIN: i32 = -128;
78pub const INT_FAST16_MIN: i64 = -9223372036854775808;
79pub const INT_FAST32_MIN: i64 = -9223372036854775808;
80pub const INT_FAST8_MAX: u32 = 127;
81pub const INT_FAST16_MAX: u64 = 9223372036854775807;
82pub const INT_FAST32_MAX: u64 = 9223372036854775807;
83pub const UINT_FAST8_MAX: u32 = 255;
84pub const UINT_FAST16_MAX: i32 = -1;
85pub const UINT_FAST32_MAX: i32 = -1;
86pub const INTPTR_MIN: i64 = -9223372036854775808;
87pub const INTPTR_MAX: u64 = 9223372036854775807;
88pub const UINTPTR_MAX: i32 = -1;
89pub const PTRDIFF_MIN: i64 = -9223372036854775808;
90pub const PTRDIFF_MAX: u64 = 9223372036854775807;
91pub const SIG_ATOMIC_MIN: i32 = -2147483648;
92pub const SIG_ATOMIC_MAX: u32 = 2147483647;
93pub const SIZE_MAX: i32 = -1;
94pub const WINT_MIN: u32 = 0;
95pub const WINT_MAX: u32 = 4294967295;
96pub const VMBINFINITE: u32 = 4294967295;
97pub type wchar_t = ::std::os::raw::c_int;
98#[repr(C)]
99#[repr(align(16))]
100#[derive(Debug, Copy, Clone, PartialEq)]
101pub struct max_align_t {
102    pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
103    pub __bindgen_padding_0: u64,
104    pub __clang_max_align_nonce2: u128,
105}
106#[test]
107fn bindgen_test_layout_max_align_t() {
108    const UNINIT: ::std::mem::MaybeUninit<max_align_t> = ::std::mem::MaybeUninit::uninit();
109    let ptr = UNINIT.as_ptr();
110    assert_eq!(
111        ::std::mem::size_of::<max_align_t>(),
112        32usize,
113        concat!("Size of: ", stringify!(max_align_t))
114    );
115    assert_eq!(
116        ::std::mem::align_of::<max_align_t>(),
117        16usize,
118        concat!("Alignment of ", stringify!(max_align_t))
119    );
120    assert_eq!(
121        unsafe { ::std::ptr::addr_of!((*ptr).__clang_max_align_nonce1) as usize - ptr as usize },
122        0usize,
123        concat!(
124            "Offset of field: ",
125            stringify!(max_align_t),
126            "::",
127            stringify!(__clang_max_align_nonce1)
128        )
129    );
130    assert_eq!(
131        unsafe { ::std::ptr::addr_of!((*ptr).__clang_max_align_nonce2) as usize - ptr as usize },
132        16usize,
133        concat!(
134            "Offset of field: ",
135            stringify!(max_align_t),
136            "::",
137            stringify!(__clang_max_align_nonce2)
138        )
139    );
140}
141pub type __u_char = ::std::os::raw::c_uchar;
142pub type __u_short = ::std::os::raw::c_ushort;
143pub type __u_int = ::std::os::raw::c_uint;
144pub type __u_long = ::std::os::raw::c_ulong;
145pub type __int8_t = ::std::os::raw::c_schar;
146pub type __uint8_t = ::std::os::raw::c_uchar;
147pub type __int16_t = ::std::os::raw::c_short;
148pub type __uint16_t = ::std::os::raw::c_ushort;
149pub type __int32_t = ::std::os::raw::c_int;
150pub type __uint32_t = ::std::os::raw::c_uint;
151pub type __int64_t = ::std::os::raw::c_long;
152pub type __uint64_t = ::std::os::raw::c_ulong;
153pub type __int_least8_t = __int8_t;
154pub type __uint_least8_t = __uint8_t;
155pub type __int_least16_t = __int16_t;
156pub type __uint_least16_t = __uint16_t;
157pub type __int_least32_t = __int32_t;
158pub type __uint_least32_t = __uint32_t;
159pub type __int_least64_t = __int64_t;
160pub type __uint_least64_t = __uint64_t;
161pub type __quad_t = ::std::os::raw::c_long;
162pub type __u_quad_t = ::std::os::raw::c_ulong;
163pub type __intmax_t = ::std::os::raw::c_long;
164pub type __uintmax_t = ::std::os::raw::c_ulong;
165pub type __dev_t = ::std::os::raw::c_ulong;
166pub type __uid_t = ::std::os::raw::c_uint;
167pub type __gid_t = ::std::os::raw::c_uint;
168pub type __ino_t = ::std::os::raw::c_ulong;
169pub type __ino64_t = ::std::os::raw::c_ulong;
170pub type __mode_t = ::std::os::raw::c_uint;
171pub type __nlink_t = ::std::os::raw::c_ulong;
172pub type __off_t = ::std::os::raw::c_long;
173pub type __off64_t = ::std::os::raw::c_long;
174pub type __pid_t = ::std::os::raw::c_int;
175#[repr(C)]
176#[derive(Debug, Copy, Clone, PartialEq)]
177pub struct __fsid_t {
178    pub __val: [::std::os::raw::c_int; 2usize],
179}
180#[test]
181fn bindgen_test_layout___fsid_t() {
182    const UNINIT: ::std::mem::MaybeUninit<__fsid_t> = ::std::mem::MaybeUninit::uninit();
183    let ptr = UNINIT.as_ptr();
184    assert_eq!(
185        ::std::mem::size_of::<__fsid_t>(),
186        8usize,
187        concat!("Size of: ", stringify!(__fsid_t))
188    );
189    assert_eq!(
190        ::std::mem::align_of::<__fsid_t>(),
191        4usize,
192        concat!("Alignment of ", stringify!(__fsid_t))
193    );
194    assert_eq!(
195        unsafe { ::std::ptr::addr_of!((*ptr).__val) as usize - ptr as usize },
196        0usize,
197        concat!(
198            "Offset of field: ",
199            stringify!(__fsid_t),
200            "::",
201            stringify!(__val)
202        )
203    );
204}
205pub type __clock_t = ::std::os::raw::c_long;
206pub type __rlim_t = ::std::os::raw::c_ulong;
207pub type __rlim64_t = ::std::os::raw::c_ulong;
208pub type __id_t = ::std::os::raw::c_uint;
209pub type __time_t = ::std::os::raw::c_long;
210pub type __useconds_t = ::std::os::raw::c_uint;
211pub type __suseconds_t = ::std::os::raw::c_long;
212pub type __daddr_t = ::std::os::raw::c_int;
213pub type __key_t = ::std::os::raw::c_int;
214pub type __clockid_t = ::std::os::raw::c_int;
215pub type __timer_t = *mut ::std::os::raw::c_void;
216pub type __blksize_t = ::std::os::raw::c_long;
217pub type __blkcnt_t = ::std::os::raw::c_long;
218pub type __blkcnt64_t = ::std::os::raw::c_long;
219pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
220pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
221pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
222pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
223pub type __fsword_t = ::std::os::raw::c_long;
224pub type __ssize_t = ::std::os::raw::c_long;
225pub type __syscall_slong_t = ::std::os::raw::c_long;
226pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
227pub type __loff_t = __off64_t;
228pub type __caddr_t = *mut ::std::os::raw::c_char;
229pub type __intptr_t = ::std::os::raw::c_long;
230pub type __socklen_t = ::std::os::raw::c_uint;
231pub type __sig_atomic_t = ::std::os::raw::c_int;
232pub type int_least8_t = __int_least8_t;
233pub type int_least16_t = __int_least16_t;
234pub type int_least32_t = __int_least32_t;
235pub type int_least64_t = __int_least64_t;
236pub type uint_least8_t = __uint_least8_t;
237pub type uint_least16_t = __uint_least16_t;
238pub type uint_least32_t = __uint_least32_t;
239pub type uint_least64_t = __uint_least64_t;
240pub type int_fast8_t = ::std::os::raw::c_schar;
241pub type int_fast16_t = ::std::os::raw::c_long;
242pub type int_fast32_t = ::std::os::raw::c_long;
243pub type int_fast64_t = ::std::os::raw::c_long;
244pub type uint_fast8_t = ::std::os::raw::c_uchar;
245pub type uint_fast16_t = ::std::os::raw::c_ulong;
246pub type uint_fast32_t = ::std::os::raw::c_ulong;
247pub type uint_fast64_t = ::std::os::raw::c_ulong;
248pub type intmax_t = __intmax_t;
249pub type uintmax_t = __uintmax_t;
250#[doc = " \\brief 8-bit signed integer."]
251pub type VmbInt8_t = ::std::os::raw::c_schar;
252#[doc = " \\brief 8-bit unsigned integer."]
253pub type VmbUint8_t = ::std::os::raw::c_uchar;
254#[doc = " \\brief 16-bit signed integer."]
255pub type VmbInt16_t = ::std::os::raw::c_short;
256#[doc = " \\brief 16-bit unsigned integer."]
257pub type VmbUint16_t = ::std::os::raw::c_ushort;
258#[doc = " \\brief 32-bit signed integer."]
259pub type VmbInt32_t = ::std::os::raw::c_int;
260#[doc = " \\brief 32-bit unsigned integer."]
261pub type VmbUint32_t = ::std::os::raw::c_uint;
262#[doc = " \\brief 64-bit signed integer."]
263pub type VmbInt64_t = ::std::os::raw::c_longlong;
264#[doc = " \\brief 64-bit unsigned integer."]
265pub type VmbUint64_t = ::std::os::raw::c_ulonglong;
266#[doc = " \\brief Handle, e.g. for a camera."]
267pub type VmbHandle_t = *mut ::std::os::raw::c_void;
268#[doc = " \\brief Boolean type (equivalent to char).\n\n For values see ::VmbBoolVal"]
269pub type VmbBool_t = ::std::os::raw::c_char;
270pub mod VmbBoolVal {
271    #[doc = " \\brief enum for bool values."]
272    pub type Type = ::std::os::raw::c_uint;
273    pub const VmbBoolTrue: Type = 1;
274    pub const VmbBoolFalse: Type = 0;
275}
276#[doc = " \\brief char type."]
277pub type VmbUchar_t = ::std::os::raw::c_uchar;
278#[doc = " Character type used for file paths"]
279pub type VmbFilePathChar_t = ::std::os::raw::c_char;
280pub mod VmbErrorType {
281    #[doc = " \\brief Error codes, returned by most functions."]
282    pub type Type = ::std::os::raw::c_int;
283    #[doc = "!< No error"]
284    pub const VmbErrorSuccess: Type = 0;
285    #[doc = "!< Unexpected fault in VmbC or driver"]
286    pub const VmbErrorInternalFault: Type = -1;
287    #[doc = "!< ::VmbStartup() was not called before the current command"]
288    pub const VmbErrorApiNotStarted: Type = -2;
289    #[doc = "!< The designated instance (camera, feature etc.) cannot be found"]
290    pub const VmbErrorNotFound: Type = -3;
291    #[doc = "!< The given handle is not valid"]
292    pub const VmbErrorBadHandle: Type = -4;
293    #[doc = "!< Device was not opened for usage"]
294    pub const VmbErrorDeviceNotOpen: Type = -5;
295    #[doc = "!< Operation is invalid with the current access mode"]
296    pub const VmbErrorInvalidAccess: Type = -6;
297    #[doc = "!< One of the parameters is invalid (usually an illegal pointer)"]
298    pub const VmbErrorBadParameter: Type = -7;
299    #[doc = "!< The given struct size is not valid for this version of the API"]
300    pub const VmbErrorStructSize: Type = -8;
301    #[doc = "!< More data available in a string/list than space is provided"]
302    pub const VmbErrorMoreData: Type = -9;
303    #[doc = "!< Wrong feature type for this access function"]
304    pub const VmbErrorWrongType: Type = -10;
305    #[doc = "!< The value is not valid; either out of bounds or not an increment of the minimum"]
306    pub const VmbErrorInvalidValue: Type = -11;
307    #[doc = "!< Timeout during wait"]
308    pub const VmbErrorTimeout: Type = -12;
309    #[doc = "!< Other error"]
310    pub const VmbErrorOther: Type = -13;
311    #[doc = "!< Resources not available (e.g. memory)"]
312    pub const VmbErrorResources: Type = -14;
313    #[doc = "!< Call is invalid in the current context (e.g. callback)"]
314    pub const VmbErrorInvalidCall: Type = -15;
315    #[doc = "!< No transport layers are found"]
316    pub const VmbErrorNoTL: Type = -16;
317    #[doc = "!< API feature is not implemented"]
318    pub const VmbErrorNotImplemented: Type = -17;
319    #[doc = "!< API feature is not supported"]
320    pub const VmbErrorNotSupported: Type = -18;
321    #[doc = "!< The current operation was not completed (e.g. a multiple registers read or write)"]
322    pub const VmbErrorIncomplete: Type = -19;
323    #[doc = "!< Low level IO error in transport layer"]
324    pub const VmbErrorIO: Type = -20;
325    #[doc = "!< The valid value set could not be retrieved, since the feature does not provide this property"]
326    pub const VmbErrorValidValueSetNotPresent: Type = -21;
327    #[doc = "!< Unspecified GenTL runtime error"]
328    pub const VmbErrorGenTLUnspecified: Type = -22;
329    #[doc = "!< Unspecified runtime error"]
330    pub const VmbErrorUnspecified: Type = -23;
331    #[doc = "!< The responsible module/entity is busy executing actions"]
332    pub const VmbErrorBusy: Type = -24;
333    #[doc = "!< The function has no data to work on"]
334    pub const VmbErrorNoData: Type = -25;
335    #[doc = "!< An error occurred parsing a buffer containing chunk data"]
336    pub const VmbErrorParsingChunkData: Type = -26;
337    #[doc = "!< Something is already in use"]
338    pub const VmbErrorInUse: Type = -27;
339    #[doc = "!< Error condition unknown"]
340    pub const VmbErrorUnknown: Type = -28;
341    #[doc = "!< Error parsing XML"]
342    pub const VmbErrorXml: Type = -29;
343    #[doc = "!< Something is not available"]
344    pub const VmbErrorNotAvailable: Type = -30;
345    #[doc = "!< Something is not initialized"]
346    pub const VmbErrorNotInitialized: Type = -31;
347    #[doc = "!< The given address is out of range or invalid for internal reasons"]
348    pub const VmbErrorInvalidAddress: Type = -32;
349    #[doc = "!< Something has already been done"]
350    pub const VmbErrorAlready: Type = -33;
351    #[doc = "!< A frame expected to contain chunk data does not contain chunk data"]
352    pub const VmbErrorNoChunkData: Type = -34;
353    #[doc = "!< A callback provided by the user threw an exception"]
354    pub const VmbErrorUserCallbackException: Type = -35;
355    #[doc = "!< The XML for the module is currently not loaded; the module could be in the wrong state or the XML could not be retrieved or could not be parsed properly"]
356    pub const VmbErrorFeaturesUnavailable: Type = -36;
357    #[doc = "!< A required transport layer could not be found or loaded"]
358    pub const VmbErrorTLNotFound: Type = -37;
359    #[doc = "!< An entity cannot be uniquely identified based on the information provided"]
360    pub const VmbErrorAmbiguous: Type = -39;
361    #[doc = "!< Something could not be accomplished with a given number of retries"]
362    pub const VmbErrorRetriesExceeded: Type = -40;
363    #[doc = "!< The operation requires more buffers"]
364    pub const VmbErrorInsufficientBufferCount: Type = -41;
365    #[doc = "!< The minimum error code to use for user defined error codes to avoid conflict with existing error codes"]
366    pub const VmbErrorCustom: Type = 1;
367}
368#[doc = " \\brief Type for an error returned by API methods; for values see ::VmbErrorType."]
369pub type VmbError_t = VmbInt32_t;
370#[doc = " \\brief Version information."]
371#[repr(C)]
372#[derive(Debug, Copy, Clone, PartialEq)]
373pub struct VmbVersionInfo {
374    #[doc = "!< Major version number"]
375    pub major: VmbUint32_t,
376    #[doc = "!< Minor version number"]
377    pub minor: VmbUint32_t,
378    #[doc = "!< Patch version number"]
379    pub patch: VmbUint32_t,
380}
381#[test]
382fn bindgen_test_layout_VmbVersionInfo() {
383    const UNINIT: ::std::mem::MaybeUninit<VmbVersionInfo> = ::std::mem::MaybeUninit::uninit();
384    let ptr = UNINIT.as_ptr();
385    assert_eq!(
386        ::std::mem::size_of::<VmbVersionInfo>(),
387        12usize,
388        concat!("Size of: ", stringify!(VmbVersionInfo))
389    );
390    assert_eq!(
391        ::std::mem::align_of::<VmbVersionInfo>(),
392        4usize,
393        concat!("Alignment of ", stringify!(VmbVersionInfo))
394    );
395    assert_eq!(
396        unsafe { ::std::ptr::addr_of!((*ptr).major) as usize - ptr as usize },
397        0usize,
398        concat!(
399            "Offset of field: ",
400            stringify!(VmbVersionInfo),
401            "::",
402            stringify!(major)
403        )
404    );
405    assert_eq!(
406        unsafe { ::std::ptr::addr_of!((*ptr).minor) as usize - ptr as usize },
407        4usize,
408        concat!(
409            "Offset of field: ",
410            stringify!(VmbVersionInfo),
411            "::",
412            stringify!(minor)
413        )
414    );
415    assert_eq!(
416        unsafe { ::std::ptr::addr_of!((*ptr).patch) as usize - ptr as usize },
417        8usize,
418        concat!(
419            "Offset of field: ",
420            stringify!(VmbVersionInfo),
421            "::",
422            stringify!(patch)
423        )
424    );
425}
426#[doc = " \\brief Version information."]
427pub type VmbVersionInfo_t = VmbVersionInfo;
428pub mod VmbPixelType {
429    #[doc = " \\brief Indicates if pixel is monochrome or RGB."]
430    pub type Type = ::std::os::raw::c_uint;
431    #[doc = "!< Monochrome pixel"]
432    pub const VmbPixelMono: Type = 16777216;
433    #[doc = "!< Pixel bearing color information"]
434    pub const VmbPixelColor: Type = 33554432;
435}
436pub mod VmbPixelOccupyType {
437    #[doc = " \\brief Indicates number of bits for a pixel. Needed for building values of ::VmbPixelFormatType."]
438    pub type Type = ::std::os::raw::c_uint;
439    #[doc = "!< Pixel effectively occupies 8 bits"]
440    pub const VmbPixelOccupy8Bit: Type = 524288;
441    #[doc = "!< Pixel effectively occupies 10 bits"]
442    pub const VmbPixelOccupy10Bit: Type = 655360;
443    #[doc = "!< Pixel effectively occupies 12 bits"]
444    pub const VmbPixelOccupy12Bit: Type = 786432;
445    #[doc = "!< Pixel effectively occupies 14 bits"]
446    pub const VmbPixelOccupy14Bit: Type = 917504;
447    #[doc = "!< Pixel effectively occupies 16 bits"]
448    pub const VmbPixelOccupy16Bit: Type = 1048576;
449    #[doc = "!< Pixel effectively occupies 24 bits"]
450    pub const VmbPixelOccupy24Bit: Type = 1572864;
451    #[doc = "!< Pixel effectively occupies 32 bits"]
452    pub const VmbPixelOccupy32Bit: Type = 2097152;
453    #[doc = "!< Pixel effectively occupies 48 bits"]
454    pub const VmbPixelOccupy48Bit: Type = 3145728;
455    #[doc = "!< Pixel effectively occupies 64 bits"]
456    pub const VmbPixelOccupy64Bit: Type = 4194304;
457}
458pub mod VmbPixelFormatType {
459    #[doc = " \\brief Pixel format types.\n As far as possible, the Pixel Format Naming Convention (PFNC) has been followed, allowing a few deviations.\n If data spans more than one byte, it is always LSB aligned, except if stated differently."]
460    pub type Type = ::std::os::raw::c_uint;
461    #[doc = "!< Monochrome, 8 bits (PFNC:  Mono8)"]
462    pub const VmbPixelFormatMono8: Type = 17301505;
463    #[doc = "!< Monochrome, 10 bits in 16 bits (PFNC:  Mono10)"]
464    pub const VmbPixelFormatMono10: Type = 17825795;
465    #[doc = "!< Monochrome, 10 bits in 16 bits (PFNC:  Mono10p)"]
466    pub const VmbPixelFormatMono10p: Type = 17432646;
467    #[doc = "!< Monochrome, 12 bits in 16 bits (PFNC:  Mono12)"]
468    pub const VmbPixelFormatMono12: Type = 17825797;
469    #[doc = "!< Monochrome, 2x12 bits in 24 bits (GEV:Mono12Packed)"]
470    pub const VmbPixelFormatMono12Packed: Type = 17563654;
471    #[doc = "!< Monochrome, 2x12 bits in 24 bits (PFNC:  MonoPacked)"]
472    pub const VmbPixelFormatMono12p: Type = 17563719;
473    #[doc = "!< Monochrome, 14 bits in 16 bits (PFNC:  Mono14)"]
474    pub const VmbPixelFormatMono14: Type = 17825829;
475    #[doc = "!< Monochrome, 16 bits (PFNC:  Mono16)"]
476    pub const VmbPixelFormatMono16: Type = 17825799;
477    #[doc = "!< Bayer-color, 8 bits, starting with GR line (PFNC:  BayerGR8)"]
478    pub const VmbPixelFormatBayerGR8: Type = 17301512;
479    #[doc = "!< Bayer-color, 8 bits, starting with RG line (PFNC:  BayerRG8)"]
480    pub const VmbPixelFormatBayerRG8: Type = 17301513;
481    #[doc = "!< Bayer-color, 8 bits, starting with GB line (PFNC:  BayerGB8)"]
482    pub const VmbPixelFormatBayerGB8: Type = 17301514;
483    #[doc = "!< Bayer-color, 8 bits, starting with BG line (PFNC:  BayerBG8)"]
484    pub const VmbPixelFormatBayerBG8: Type = 17301515;
485    #[doc = "!< Bayer-color, 10 bits in 16 bits, starting with GR line (PFNC:  BayerGR10)"]
486    pub const VmbPixelFormatBayerGR10: Type = 17825804;
487    #[doc = "!< Bayer-color, 10 bits in 16 bits, starting with RG line (PFNC:  BayerRG10)"]
488    pub const VmbPixelFormatBayerRG10: Type = 17825805;
489    #[doc = "!< Bayer-color, 10 bits in 16 bits, starting with GB line (PFNC:  BayerGB10)"]
490    pub const VmbPixelFormatBayerGB10: Type = 17825806;
491    #[doc = "!< Bayer-color, 10 bits in 16 bits, starting with BG line (PFNC:  BayerBG10)"]
492    pub const VmbPixelFormatBayerBG10: Type = 17825807;
493    #[doc = "!< Bayer-color, 12 bits in 16 bits, starting with GR line (PFNC:  BayerGR12)"]
494    pub const VmbPixelFormatBayerGR12: Type = 17825808;
495    #[doc = "!< Bayer-color, 12 bits in 16 bits, starting with RG line (PFNC:  BayerRG12)"]
496    pub const VmbPixelFormatBayerRG12: Type = 17825809;
497    #[doc = "!< Bayer-color, 12 bits in 16 bits, starting with GB line (PFNC:  BayerGB12)"]
498    pub const VmbPixelFormatBayerGB12: Type = 17825810;
499    #[doc = "!< Bayer-color, 12 bits in 16 bits, starting with BG line (PFNC:  BayerBG12)"]
500    pub const VmbPixelFormatBayerBG12: Type = 17825811;
501    #[doc = "!< Bayer-color, 2x12 bits in 24 bits, starting with GR line (GEV:BayerGR12Packed)"]
502    pub const VmbPixelFormatBayerGR12Packed: Type = 17563690;
503    #[doc = "!< Bayer-color, 2x12 bits in 24 bits, starting with RG line (GEV:BayerRG12Packed)"]
504    pub const VmbPixelFormatBayerRG12Packed: Type = 17563691;
505    #[doc = "!< Bayer-color, 2x12 bits in 24 bits, starting with GB line (GEV:BayerGB12Packed)"]
506    pub const VmbPixelFormatBayerGB12Packed: Type = 17563692;
507    #[doc = "!< Bayer-color, 2x12 bits in 24 bits, starting with BG line (GEV:BayerBG12Packed)"]
508    pub const VmbPixelFormatBayerBG12Packed: Type = 17563693;
509    #[doc = "!< Bayer-color, 10 bits continuous packed, starting with GR line (PFNC:  BayerGR10p)"]
510    pub const VmbPixelFormatBayerGR10p: Type = 17432662;
511    #[doc = "!< Bayer-color, 10 bits continuous packed, starting with RG line (PFNC:  BayerRG10p)"]
512    pub const VmbPixelFormatBayerRG10p: Type = 17432664;
513    #[doc = "!< Bayer-color, 10 bits continuous packed, starting with GB line (PFNC:  BayerGB10p)"]
514    pub const VmbPixelFormatBayerGB10p: Type = 17432660;
515    #[doc = "!< Bayer-color, 10 bits continuous packed, starting with BG line (PFNC:  BayerBG10p)"]
516    pub const VmbPixelFormatBayerBG10p: Type = 17432658;
517    #[doc = "!< Bayer-color, 12 bits continuous packed, starting with GR line (PFNC:  BayerGR12p)"]
518    pub const VmbPixelFormatBayerGR12p: Type = 17563735;
519    #[doc = "!< Bayer-color, 12 bits continuous packed, starting with RG line (PFNC:  BayerRG12p)"]
520    pub const VmbPixelFormatBayerRG12p: Type = 17563737;
521    #[doc = "!< Bayer-color, 12 bits continuous packed, starting with GB line (PFNC:  BayerGB12p)"]
522    pub const VmbPixelFormatBayerGB12p: Type = 17563733;
523    #[doc = "!< Bayer-color, 12 bits continuous packed, starting with BG line (PFNC: BayerBG12p)"]
524    pub const VmbPixelFormatBayerBG12p: Type = 17563731;
525    #[doc = "!< Bayer-color, 16 bits, starting with GR line (PFNC: BayerGR16)"]
526    pub const VmbPixelFormatBayerGR16: Type = 17825838;
527    #[doc = "!< Bayer-color, 16 bits, starting with RG line (PFNC: BayerRG16)"]
528    pub const VmbPixelFormatBayerRG16: Type = 17825839;
529    #[doc = "!< Bayer-color, 16 bits, starting with GB line (PFNC: BayerGB16)"]
530    pub const VmbPixelFormatBayerGB16: Type = 17825840;
531    #[doc = "!< Bayer-color, 16 bits, starting with BG line (PFNC: BayerBG16)"]
532    pub const VmbPixelFormatBayerBG16: Type = 17825841;
533    #[doc = "!< RGB, 8 bits x 3 (PFNC: RGB8)"]
534    pub const VmbPixelFormatRgb8: Type = 35127316;
535    #[doc = "!< BGR, 8 bits x 3 (PFNC: BGR8)"]
536    pub const VmbPixelFormatBgr8: Type = 35127317;
537    #[doc = "!< RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)"]
538    pub const VmbPixelFormatRgb10: Type = 36700184;
539    #[doc = "!< RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)"]
540    pub const VmbPixelFormatBgr10: Type = 36700185;
541    #[doc = "!< RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)"]
542    pub const VmbPixelFormatRgb12: Type = 36700186;
543    #[doc = "!< RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)"]
544    pub const VmbPixelFormatBgr12: Type = 36700187;
545    #[doc = "!< RGB, 14 bits in 16 bits x 3 (PFNC: RGB12)"]
546    pub const VmbPixelFormatRgb14: Type = 36700254;
547    #[doc = "!< RGB, 14 bits in 16 bits x 3 (PFNC: RGB12)"]
548    pub const VmbPixelFormatBgr14: Type = 36700234;
549    #[doc = "!< RGB, 16 bits x 3 (PFNC: RGB16)"]
550    pub const VmbPixelFormatRgb16: Type = 36700211;
551    #[doc = "!< RGB, 16 bits x 3 (PFNC: RGB16)"]
552    pub const VmbPixelFormatBgr16: Type = 36700235;
553    #[doc = "!< ARGB, 8 bits x 4 (PFNC: RGBa8)"]
554    pub const VmbPixelFormatArgb8: Type = 35651606;
555    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
556    pub const VmbPixelFormatRgba8: Type = 35651606;
557    #[doc = "!< BGRA, 8 bits x 4 (PFNC: BGRa8)"]
558    pub const VmbPixelFormatBgra8: Type = 35651607;
559    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
560    pub const VmbPixelFormatRgba10: Type = 37748831;
561    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
562    pub const VmbPixelFormatBgra10: Type = 37748812;
563    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
564    pub const VmbPixelFormatRgba12: Type = 37748833;
565    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
566    pub const VmbPixelFormatBgra12: Type = 37748814;
567    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
568    pub const VmbPixelFormatRgba14: Type = 37748835;
569    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
570    pub const VmbPixelFormatBgra14: Type = 37748816;
571    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
572    pub const VmbPixelFormatRgba16: Type = 37748836;
573    #[doc = "!< RGBA, 8 bits x 4, legacy name"]
574    pub const VmbPixelFormatBgra16: Type = 37748817;
575    #[doc = "!< YUV 4:1:1 with 8 bits (PFNC: YUV411_8_UYYVYY, GEV:YUV411Packed)"]
576    pub const VmbPixelFormatYuv411: Type = 34340894;
577    #[doc = "!< YUV 4:2:2 with 8 bits (PFNC: YUV422_8_UYVY, GEV:YUV422Packed)"]
578    pub const VmbPixelFormatYuv422: Type = 34603039;
579    #[doc = "!< YUV 4:4:4 with 8 bits (PFNC: YUV8_UYV, GEV:YUV444Packed)"]
580    pub const VmbPixelFormatYuv444: Type = 35127328;
581    #[doc = "!< YUV 4:2:2 with 8 bits Channel order YUYV (PFNC: YUV422_8)"]
582    pub const VmbPixelFormatYuv422_8: Type = 34603058;
583    #[doc = "!< YCbCr 4:4:4 with 8 bits (PFNC: YCbCr8_CbYCr) - identical to VmbPixelFormatYuv444"]
584    pub const VmbPixelFormatYCbCr8_CbYCr: Type = 35127354;
585    #[doc = "!< YCbCr 4:2:2 8-bit YCbYCr (PFNC: YCbCr422_8)"]
586    pub const VmbPixelFormatYCbCr422_8: Type = 34603067;
587    #[doc = "!< YCbCr 4:1:1 with 8 bits (PFNC: YCbCr411_8_CbYYCrYY) - identical to VmbPixelFormatYuv411"]
588    pub const VmbPixelFormatYCbCr411_8_CbYYCrYY: Type = 34340924;
589    #[doc = "!< YCbCr601 4:4:4 8-bit CbYCrt (PFNC: YCbCr601_8_CbYCr)"]
590    pub const VmbPixelFormatYCbCr601_8_CbYCr: Type = 35127357;
591    #[doc = "!< YCbCr601 4:2:2 8-bit YCbYCr (PFNC: YCbCr601_422_8)"]
592    pub const VmbPixelFormatYCbCr601_422_8: Type = 34603070;
593    #[doc = "!< YCbCr601 4:1:1 8-bit CbYYCrYY (PFNC: YCbCr601_411_8_CbYYCrYY)"]
594    pub const VmbPixelFormatYCbCr601_411_8_CbYYCrYY: Type = 34340927;
595    #[doc = "!< YCbCr709 4:4:4 8-bit CbYCr (PFNC: YCbCr709_8_CbYCr)"]
596    pub const VmbPixelFormatYCbCr709_8_CbYCr: Type = 35127360;
597    #[doc = "!< YCbCr709 4:2:2 8-bit YCbYCr (PFNC: YCbCr709_422_8)"]
598    pub const VmbPixelFormatYCbCr709_422_8: Type = 34603073;
599    #[doc = "!< YCbCr709 4:1:1 8-bit CbYYCrYY (PFNC: YCbCr709_411_8_CbYYCrYY)"]
600    pub const VmbPixelFormatYCbCr709_411_8_CbYYCrYY: Type = 34340930;
601    #[doc = "!< YCbCr 4:2:2 with 8 bits (PFNC: YCbCr422_8_CbYCrY) - identical to VmbPixelFormatYuv422"]
602    pub const VmbPixelFormatYCbCr422_8_CbYCrY: Type = 34603075;
603    #[doc = "!< YCbCr601 4:2:2 8-bit CbYCrY (PFNC: YCbCr601_422_8_CbYCrY)"]
604    pub const VmbPixelFormatYCbCr601_422_8_CbYCrY: Type = 34603076;
605    #[doc = "!< YCbCr709 4:2:2 8-bit CbYCrY (PFNC: YCbCr709_422_8_CbYCrY)"]
606    pub const VmbPixelFormatYCbCr709_422_8_CbYCrY: Type = 34603077;
607    #[doc = "!< YCbCr 4:1:1 8-bit YYCbYYCr (PFNC: YCbCr411_8)"]
608    pub const VmbPixelFormatYCbCr411_8: Type = 34340954;
609    #[doc = "!< YCbCr 4:4:4 8-bit YCbCr (PFNC: YCbCr8)"]
610    pub const VmbPixelFormatYCbCr8: Type = 35127387;
611    pub const VmbPixelFormatLast: Type = 35127388;
612}
613#[doc = " \\brief Type for the pixel format; for values see ::VmbPixelFormatType."]
614pub type VmbPixelFormat_t = VmbUint32_t;
615pub mod VmbTransportLayerType {
616    #[doc = " \\brief Camera or transport layer type (for instance U3V or GEV)."]
617    pub type Type = ::std::os::raw::c_uint;
618    #[doc = "!< Interface is not known to this version of the API"]
619    pub const VmbTransportLayerTypeUnknown: Type = 0;
620    #[doc = "!< GigE Vision"]
621    pub const VmbTransportLayerTypeGEV: Type = 1;
622    #[doc = "!< Camera Link"]
623    pub const VmbTransportLayerTypeCL: Type = 2;
624    #[doc = "!< IIDC 1394"]
625    pub const VmbTransportLayerTypeIIDC: Type = 3;
626    #[doc = "!< USB video class"]
627    pub const VmbTransportLayerTypeUVC: Type = 4;
628    #[doc = "!< CoaXPress"]
629    pub const VmbTransportLayerTypeCXP: Type = 5;
630    #[doc = "!< Camera Link HS"]
631    pub const VmbTransportLayerTypeCLHS: Type = 6;
632    #[doc = "!< USB3 Vision Standard"]
633    pub const VmbTransportLayerTypeU3V: Type = 7;
634    #[doc = "!< Generic Ethernet"]
635    pub const VmbTransportLayerTypeEthernet: Type = 8;
636    #[doc = "!< PCI / PCIe"]
637    pub const VmbTransportLayerTypePCI: Type = 9;
638    #[doc = "!< Non standard"]
639    pub const VmbTransportLayerTypeCustom: Type = 10;
640    #[doc = "!< Mixed (transport layer only)"]
641    pub const VmbTransportLayerTypeMixed: Type = 11;
642}
643#[doc = " \\brief Type for an Interface; for values see ::VmbTransportLayerType."]
644pub type VmbTransportLayerType_t = VmbUint32_t;
645#[doc = " \\brief Transport layer information.\n\n Holds read-only information about a transport layer."]
646#[repr(C)]
647#[derive(Debug, Copy, Clone, PartialEq)]
648pub struct VmbTransportLayerInfo {
649    #[doc = "!< Unique id of the transport layer"]
650    pub transportLayerIdString: *const ::std::os::raw::c_char,
651    #[doc = "!< Name of the transport layer"]
652    pub transportLayerName: *const ::std::os::raw::c_char,
653    #[doc = "!< Model name of the transport layer"]
654    pub transportLayerModelName: *const ::std::os::raw::c_char,
655    #[doc = "!< Vendor of the transport layer"]
656    pub transportLayerVendor: *const ::std::os::raw::c_char,
657    #[doc = "!< Version of the transport layer"]
658    pub transportLayerVersion: *const ::std::os::raw::c_char,
659    #[doc = "!< Full path of the transport layer"]
660    pub transportLayerPath: *const ::std::os::raw::c_char,
661    #[doc = "!< Handle of the transport layer for feature access"]
662    pub transportLayerHandle: VmbHandle_t,
663    #[doc = "!< The type of the transport layer"]
664    pub transportLayerType: VmbTransportLayerType_t,
665}
666#[test]
667fn bindgen_test_layout_VmbTransportLayerInfo() {
668    const UNINIT: ::std::mem::MaybeUninit<VmbTransportLayerInfo> =
669        ::std::mem::MaybeUninit::uninit();
670    let ptr = UNINIT.as_ptr();
671    assert_eq!(
672        ::std::mem::size_of::<VmbTransportLayerInfo>(),
673        64usize,
674        concat!("Size of: ", stringify!(VmbTransportLayerInfo))
675    );
676    assert_eq!(
677        ::std::mem::align_of::<VmbTransportLayerInfo>(),
678        8usize,
679        concat!("Alignment of ", stringify!(VmbTransportLayerInfo))
680    );
681    assert_eq!(
682        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerIdString) as usize - ptr as usize },
683        0usize,
684        concat!(
685            "Offset of field: ",
686            stringify!(VmbTransportLayerInfo),
687            "::",
688            stringify!(transportLayerIdString)
689        )
690    );
691    assert_eq!(
692        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerName) as usize - ptr as usize },
693        8usize,
694        concat!(
695            "Offset of field: ",
696            stringify!(VmbTransportLayerInfo),
697            "::",
698            stringify!(transportLayerName)
699        )
700    );
701    assert_eq!(
702        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerModelName) as usize - ptr as usize },
703        16usize,
704        concat!(
705            "Offset of field: ",
706            stringify!(VmbTransportLayerInfo),
707            "::",
708            stringify!(transportLayerModelName)
709        )
710    );
711    assert_eq!(
712        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerVendor) as usize - ptr as usize },
713        24usize,
714        concat!(
715            "Offset of field: ",
716            stringify!(VmbTransportLayerInfo),
717            "::",
718            stringify!(transportLayerVendor)
719        )
720    );
721    assert_eq!(
722        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerVersion) as usize - ptr as usize },
723        32usize,
724        concat!(
725            "Offset of field: ",
726            stringify!(VmbTransportLayerInfo),
727            "::",
728            stringify!(transportLayerVersion)
729        )
730    );
731    assert_eq!(
732        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerPath) as usize - ptr as usize },
733        40usize,
734        concat!(
735            "Offset of field: ",
736            stringify!(VmbTransportLayerInfo),
737            "::",
738            stringify!(transportLayerPath)
739        )
740    );
741    assert_eq!(
742        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerHandle) as usize - ptr as usize },
743        48usize,
744        concat!(
745            "Offset of field: ",
746            stringify!(VmbTransportLayerInfo),
747            "::",
748            stringify!(transportLayerHandle)
749        )
750    );
751    assert_eq!(
752        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerType) as usize - ptr as usize },
753        56usize,
754        concat!(
755            "Offset of field: ",
756            stringify!(VmbTransportLayerInfo),
757            "::",
758            stringify!(transportLayerType)
759        )
760    );
761}
762#[doc = " \\brief Transport layer information.\n\n Holds read-only information about a transport layer."]
763pub type VmbTransportLayerInfo_t = VmbTransportLayerInfo;
764#[doc = " \\brief Interface information.\n\n Holds read-only information about an interface."]
765#[repr(C)]
766#[derive(Debug, Copy, Clone, PartialEq)]
767pub struct VmbInterfaceInfo {
768    #[doc = "!< Identifier of the interface"]
769    pub interfaceIdString: *const ::std::os::raw::c_char,
770    #[doc = "!< Interface name, given by the transport layer"]
771    pub interfaceName: *const ::std::os::raw::c_char,
772    #[doc = "!< Handle of the interface for feature access"]
773    pub interfaceHandle: VmbHandle_t,
774    #[doc = "!< Handle of the related transport layer for feature access"]
775    pub transportLayerHandle: VmbHandle_t,
776    #[doc = "!< The technology of the interface"]
777    pub interfaceType: VmbTransportLayerType_t,
778}
779#[test]
780fn bindgen_test_layout_VmbInterfaceInfo() {
781    const UNINIT: ::std::mem::MaybeUninit<VmbInterfaceInfo> = ::std::mem::MaybeUninit::uninit();
782    let ptr = UNINIT.as_ptr();
783    assert_eq!(
784        ::std::mem::size_of::<VmbInterfaceInfo>(),
785        40usize,
786        concat!("Size of: ", stringify!(VmbInterfaceInfo))
787    );
788    assert_eq!(
789        ::std::mem::align_of::<VmbInterfaceInfo>(),
790        8usize,
791        concat!("Alignment of ", stringify!(VmbInterfaceInfo))
792    );
793    assert_eq!(
794        unsafe { ::std::ptr::addr_of!((*ptr).interfaceIdString) as usize - ptr as usize },
795        0usize,
796        concat!(
797            "Offset of field: ",
798            stringify!(VmbInterfaceInfo),
799            "::",
800            stringify!(interfaceIdString)
801        )
802    );
803    assert_eq!(
804        unsafe { ::std::ptr::addr_of!((*ptr).interfaceName) as usize - ptr as usize },
805        8usize,
806        concat!(
807            "Offset of field: ",
808            stringify!(VmbInterfaceInfo),
809            "::",
810            stringify!(interfaceName)
811        )
812    );
813    assert_eq!(
814        unsafe { ::std::ptr::addr_of!((*ptr).interfaceHandle) as usize - ptr as usize },
815        16usize,
816        concat!(
817            "Offset of field: ",
818            stringify!(VmbInterfaceInfo),
819            "::",
820            stringify!(interfaceHandle)
821        )
822    );
823    assert_eq!(
824        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerHandle) as usize - ptr as usize },
825        24usize,
826        concat!(
827            "Offset of field: ",
828            stringify!(VmbInterfaceInfo),
829            "::",
830            stringify!(transportLayerHandle)
831        )
832    );
833    assert_eq!(
834        unsafe { ::std::ptr::addr_of!((*ptr).interfaceType) as usize - ptr as usize },
835        32usize,
836        concat!(
837            "Offset of field: ",
838            stringify!(VmbInterfaceInfo),
839            "::",
840            stringify!(interfaceType)
841        )
842    );
843}
844#[doc = " \\brief Interface information.\n\n Holds read-only information about an interface."]
845pub type VmbInterfaceInfo_t = VmbInterfaceInfo;
846pub mod VmbAccessModeType {
847    #[doc = " \\brief Access mode for cameras.\n\n Used in ::VmbCameraInfo_t as flags, so multiple modes can be\n announced, while in ::VmbCameraOpen(), no combination must be used."]
848    pub type Type = ::std::os::raw::c_uint;
849    #[doc = "!< No access"]
850    pub const VmbAccessModeNone: Type = 0;
851    #[doc = "!< Read and write access"]
852    pub const VmbAccessModeFull: Type = 1;
853    #[doc = "!< Read-only access"]
854    pub const VmbAccessModeRead: Type = 2;
855    #[doc = "!< Access type unknown"]
856    pub const VmbAccessModeUnknown: Type = 4;
857    #[doc = "!< Read and write access without permitting access for other consumers"]
858    pub const VmbAccessModeExclusive: Type = 8;
859}
860#[doc = " \\brief Type for an AccessMode; for values see ::VmbAccessModeType."]
861pub type VmbAccessMode_t = VmbUint32_t;
862#[doc = " \\brief Camera information.\n\n Holds read-only information about a camera."]
863#[repr(C)]
864#[derive(Debug, Copy, Clone, PartialEq)]
865pub struct VmbCameraInfo {
866    #[doc = "!< Identifier of the camera"]
867    pub cameraIdString: *const ::std::os::raw::c_char,
868    #[doc = "!< globally unique identifier for the camera"]
869    pub cameraIdExtended: *const ::std::os::raw::c_char,
870    #[doc = "!< The display name of the camera"]
871    pub cameraName: *const ::std::os::raw::c_char,
872    #[doc = "!< Model name"]
873    pub modelName: *const ::std::os::raw::c_char,
874    #[doc = "!< Serial number"]
875    pub serialString: *const ::std::os::raw::c_char,
876    #[doc = "!< Handle of the related transport layer for feature access"]
877    pub transportLayerHandle: VmbHandle_t,
878    #[doc = "!< Handle of the related interface for feature access"]
879    pub interfaceHandle: VmbHandle_t,
880    #[doc = "!< Handle of the related GenTL local device. NULL if the camera is not opened"]
881    pub localDeviceHandle: VmbHandle_t,
882    #[doc = "!< Handles of the streams provided by the camera.  NULL if the camera is not opened"]
883    pub streamHandles: *const VmbHandle_t,
884    #[doc = "!< Number of stream handles in the streamHandles array"]
885    pub streamCount: VmbUint32_t,
886    #[doc = "!< Permitted access modes, see ::VmbAccessModeType"]
887    pub permittedAccess: VmbAccessMode_t,
888}
889#[test]
890fn bindgen_test_layout_VmbCameraInfo() {
891    const UNINIT: ::std::mem::MaybeUninit<VmbCameraInfo> = ::std::mem::MaybeUninit::uninit();
892    let ptr = UNINIT.as_ptr();
893    assert_eq!(
894        ::std::mem::size_of::<VmbCameraInfo>(),
895        80usize,
896        concat!("Size of: ", stringify!(VmbCameraInfo))
897    );
898    assert_eq!(
899        ::std::mem::align_of::<VmbCameraInfo>(),
900        8usize,
901        concat!("Alignment of ", stringify!(VmbCameraInfo))
902    );
903    assert_eq!(
904        unsafe { ::std::ptr::addr_of!((*ptr).cameraIdString) as usize - ptr as usize },
905        0usize,
906        concat!(
907            "Offset of field: ",
908            stringify!(VmbCameraInfo),
909            "::",
910            stringify!(cameraIdString)
911        )
912    );
913    assert_eq!(
914        unsafe { ::std::ptr::addr_of!((*ptr).cameraIdExtended) as usize - ptr as usize },
915        8usize,
916        concat!(
917            "Offset of field: ",
918            stringify!(VmbCameraInfo),
919            "::",
920            stringify!(cameraIdExtended)
921        )
922    );
923    assert_eq!(
924        unsafe { ::std::ptr::addr_of!((*ptr).cameraName) as usize - ptr as usize },
925        16usize,
926        concat!(
927            "Offset of field: ",
928            stringify!(VmbCameraInfo),
929            "::",
930            stringify!(cameraName)
931        )
932    );
933    assert_eq!(
934        unsafe { ::std::ptr::addr_of!((*ptr).modelName) as usize - ptr as usize },
935        24usize,
936        concat!(
937            "Offset of field: ",
938            stringify!(VmbCameraInfo),
939            "::",
940            stringify!(modelName)
941        )
942    );
943    assert_eq!(
944        unsafe { ::std::ptr::addr_of!((*ptr).serialString) as usize - ptr as usize },
945        32usize,
946        concat!(
947            "Offset of field: ",
948            stringify!(VmbCameraInfo),
949            "::",
950            stringify!(serialString)
951        )
952    );
953    assert_eq!(
954        unsafe { ::std::ptr::addr_of!((*ptr).transportLayerHandle) as usize - ptr as usize },
955        40usize,
956        concat!(
957            "Offset of field: ",
958            stringify!(VmbCameraInfo),
959            "::",
960            stringify!(transportLayerHandle)
961        )
962    );
963    assert_eq!(
964        unsafe { ::std::ptr::addr_of!((*ptr).interfaceHandle) as usize - ptr as usize },
965        48usize,
966        concat!(
967            "Offset of field: ",
968            stringify!(VmbCameraInfo),
969            "::",
970            stringify!(interfaceHandle)
971        )
972    );
973    assert_eq!(
974        unsafe { ::std::ptr::addr_of!((*ptr).localDeviceHandle) as usize - ptr as usize },
975        56usize,
976        concat!(
977            "Offset of field: ",
978            stringify!(VmbCameraInfo),
979            "::",
980            stringify!(localDeviceHandle)
981        )
982    );
983    assert_eq!(
984        unsafe { ::std::ptr::addr_of!((*ptr).streamHandles) as usize - ptr as usize },
985        64usize,
986        concat!(
987            "Offset of field: ",
988            stringify!(VmbCameraInfo),
989            "::",
990            stringify!(streamHandles)
991        )
992    );
993    assert_eq!(
994        unsafe { ::std::ptr::addr_of!((*ptr).streamCount) as usize - ptr as usize },
995        72usize,
996        concat!(
997            "Offset of field: ",
998            stringify!(VmbCameraInfo),
999            "::",
1000            stringify!(streamCount)
1001        )
1002    );
1003    assert_eq!(
1004        unsafe { ::std::ptr::addr_of!((*ptr).permittedAccess) as usize - ptr as usize },
1005        76usize,
1006        concat!(
1007            "Offset of field: ",
1008            stringify!(VmbCameraInfo),
1009            "::",
1010            stringify!(permittedAccess)
1011        )
1012    );
1013}
1014#[doc = " \\brief Camera information.\n\n Holds read-only information about a camera."]
1015pub type VmbCameraInfo_t = VmbCameraInfo;
1016pub mod VmbFeatureDataType {
1017    #[doc = " \\brief Supported feature data types."]
1018    pub type Type = ::std::os::raw::c_uint;
1019    #[doc = "!< Unknown feature type"]
1020    pub const VmbFeatureDataUnknown: Type = 0;
1021    #[doc = "!< 64-bit integer feature"]
1022    pub const VmbFeatureDataInt: Type = 1;
1023    #[doc = "!< 64-bit floating point feature"]
1024    pub const VmbFeatureDataFloat: Type = 2;
1025    #[doc = "!< Enumeration feature"]
1026    pub const VmbFeatureDataEnum: Type = 3;
1027    #[doc = "!< String feature"]
1028    pub const VmbFeatureDataString: Type = 4;
1029    #[doc = "!< Boolean feature"]
1030    pub const VmbFeatureDataBool: Type = 5;
1031    #[doc = "!< Command feature"]
1032    pub const VmbFeatureDataCommand: Type = 6;
1033    #[doc = "!< Raw (direct register access) feature"]
1034    pub const VmbFeatureDataRaw: Type = 7;
1035    #[doc = "!< Feature with no data"]
1036    pub const VmbFeatureDataNone: Type = 8;
1037}
1038#[doc = " \\brief Data type for a Feature; for values see ::VmbFeatureDataType."]
1039pub type VmbFeatureData_t = VmbUint32_t;
1040pub mod VmbFeatureVisibilityType {
1041    #[doc = " \\brief Feature visibility."]
1042    pub type Type = ::std::os::raw::c_uint;
1043    #[doc = "!< Feature visibility is not known"]
1044    pub const VmbFeatureVisibilityUnknown: Type = 0;
1045    #[doc = "!< Feature is visible in feature list (beginner level)"]
1046    pub const VmbFeatureVisibilityBeginner: Type = 1;
1047    #[doc = "!< Feature is visible in feature list (expert level)"]
1048    pub const VmbFeatureVisibilityExpert: Type = 2;
1049    #[doc = "!< Feature is visible in feature list (guru level)"]
1050    pub const VmbFeatureVisibilityGuru: Type = 3;
1051    #[doc = "!< Feature is visible in the feature list, but should be hidden in GUI applications"]
1052    pub const VmbFeatureVisibilityInvisible: Type = 4;
1053}
1054#[doc = " \\brief Type for Feature visibility; for values see ::VmbFeatureVisibilityType."]
1055pub type VmbFeatureVisibility_t = VmbUint32_t;
1056impl VmbFeatureFlagsType {
1057    #[doc = "!< No additional information is provided"]
1058    pub const VmbFeatureFlagsNone: VmbFeatureFlagsType = VmbFeatureFlagsType(0);
1059}
1060impl VmbFeatureFlagsType {
1061    #[doc = "!< Static info about read access. Current status depends on access mode, check with ::VmbFeatureAccessQuery()"]
1062    pub const VmbFeatureFlagsRead: VmbFeatureFlagsType = VmbFeatureFlagsType(1);
1063}
1064impl VmbFeatureFlagsType {
1065    #[doc = "!< Static info about write access. Current status depends on access mode, check with ::VmbFeatureAccessQuery()"]
1066    pub const VmbFeatureFlagsWrite: VmbFeatureFlagsType = VmbFeatureFlagsType(2);
1067}
1068impl VmbFeatureFlagsType {
1069    #[doc = "!< Value may change at any time"]
1070    pub const VmbFeatureFlagsVolatile: VmbFeatureFlagsType = VmbFeatureFlagsType(8);
1071}
1072impl VmbFeatureFlagsType {
1073    #[doc = "!< Value may change after a write"]
1074    pub const VmbFeatureFlagsModifyWrite: VmbFeatureFlagsType = VmbFeatureFlagsType(16);
1075}
1076impl ::std::ops::BitOr<VmbFeatureFlagsType> for VmbFeatureFlagsType {
1077    type Output = Self;
1078    #[inline]
1079    fn bitor(self, other: Self) -> Self {
1080        VmbFeatureFlagsType(self.0 | other.0)
1081    }
1082}
1083impl ::std::ops::BitOrAssign for VmbFeatureFlagsType {
1084    #[inline]
1085    fn bitor_assign(&mut self, rhs: VmbFeatureFlagsType) {
1086        self.0 |= rhs.0;
1087    }
1088}
1089impl ::std::ops::BitAnd<VmbFeatureFlagsType> for VmbFeatureFlagsType {
1090    type Output = Self;
1091    #[inline]
1092    fn bitand(self, other: Self) -> Self {
1093        VmbFeatureFlagsType(self.0 & other.0)
1094    }
1095}
1096impl ::std::ops::BitAndAssign for VmbFeatureFlagsType {
1097    #[inline]
1098    fn bitand_assign(&mut self, rhs: VmbFeatureFlagsType) {
1099        self.0 &= rhs.0;
1100    }
1101}
1102#[repr(transparent)]
1103#[doc = " \\brief Feature flags."]
1104#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1105pub struct VmbFeatureFlagsType(pub ::std::os::raw::c_uint);
1106#[doc = " \\brief Type for Feature flags; for values see ::VmbFeatureFlagsType."]
1107pub type VmbFeatureFlags_t = VmbUint32_t;
1108#[doc = " \\brief Feature information.\n\n Holds read-only information about a feature."]
1109#[repr(C)]
1110#[derive(Debug, Copy, Clone, PartialEq)]
1111pub struct VmbFeatureInfo {
1112    #[doc = "!< Name used in the API"]
1113    pub name: *const ::std::os::raw::c_char,
1114    #[doc = "!< Category this feature can be found in"]
1115    pub category: *const ::std::os::raw::c_char,
1116    #[doc = "!< Feature name to be used in GUIs"]
1117    pub displayName: *const ::std::os::raw::c_char,
1118    #[doc = "!< Short description, e.g. for a tooltip"]
1119    pub tooltip: *const ::std::os::raw::c_char,
1120    #[doc = "!< Longer description"]
1121    pub description: *const ::std::os::raw::c_char,
1122    #[doc = "!< Namespace this feature resides in"]
1123    pub sfncNamespace: *const ::std::os::raw::c_char,
1124    #[doc = "!< Measuring unit as given in the XML file"]
1125    pub unit: *const ::std::os::raw::c_char,
1126    #[doc = "!< Representation of a numeric feature"]
1127    pub representation: *const ::std::os::raw::c_char,
1128    #[doc = "!< Data type of this feature"]
1129    pub featureDataType: VmbFeatureData_t,
1130    #[doc = "!< Access flags for this feature"]
1131    pub featureFlags: VmbFeatureFlags_t,
1132    #[doc = "!< Predefined polling time for volatile features"]
1133    pub pollingTime: VmbUint32_t,
1134    #[doc = "!< GUI visibility"]
1135    pub visibility: VmbFeatureVisibility_t,
1136    #[doc = "!< Indicates if a feature can be stored to / loaded from a file"]
1137    pub isStreamable: VmbBool_t,
1138    #[doc = "!< Indicates if the feature selects other features"]
1139    pub hasSelectedFeatures: VmbBool_t,
1140}
1141#[test]
1142fn bindgen_test_layout_VmbFeatureInfo() {
1143    const UNINIT: ::std::mem::MaybeUninit<VmbFeatureInfo> = ::std::mem::MaybeUninit::uninit();
1144    let ptr = UNINIT.as_ptr();
1145    assert_eq!(
1146        ::std::mem::size_of::<VmbFeatureInfo>(),
1147        88usize,
1148        concat!("Size of: ", stringify!(VmbFeatureInfo))
1149    );
1150    assert_eq!(
1151        ::std::mem::align_of::<VmbFeatureInfo>(),
1152        8usize,
1153        concat!("Alignment of ", stringify!(VmbFeatureInfo))
1154    );
1155    assert_eq!(
1156        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
1157        0usize,
1158        concat!(
1159            "Offset of field: ",
1160            stringify!(VmbFeatureInfo),
1161            "::",
1162            stringify!(name)
1163        )
1164    );
1165    assert_eq!(
1166        unsafe { ::std::ptr::addr_of!((*ptr).category) as usize - ptr as usize },
1167        8usize,
1168        concat!(
1169            "Offset of field: ",
1170            stringify!(VmbFeatureInfo),
1171            "::",
1172            stringify!(category)
1173        )
1174    );
1175    assert_eq!(
1176        unsafe { ::std::ptr::addr_of!((*ptr).displayName) as usize - ptr as usize },
1177        16usize,
1178        concat!(
1179            "Offset of field: ",
1180            stringify!(VmbFeatureInfo),
1181            "::",
1182            stringify!(displayName)
1183        )
1184    );
1185    assert_eq!(
1186        unsafe { ::std::ptr::addr_of!((*ptr).tooltip) as usize - ptr as usize },
1187        24usize,
1188        concat!(
1189            "Offset of field: ",
1190            stringify!(VmbFeatureInfo),
1191            "::",
1192            stringify!(tooltip)
1193        )
1194    );
1195    assert_eq!(
1196        unsafe { ::std::ptr::addr_of!((*ptr).description) as usize - ptr as usize },
1197        32usize,
1198        concat!(
1199            "Offset of field: ",
1200            stringify!(VmbFeatureInfo),
1201            "::",
1202            stringify!(description)
1203        )
1204    );
1205    assert_eq!(
1206        unsafe { ::std::ptr::addr_of!((*ptr).sfncNamespace) as usize - ptr as usize },
1207        40usize,
1208        concat!(
1209            "Offset of field: ",
1210            stringify!(VmbFeatureInfo),
1211            "::",
1212            stringify!(sfncNamespace)
1213        )
1214    );
1215    assert_eq!(
1216        unsafe { ::std::ptr::addr_of!((*ptr).unit) as usize - ptr as usize },
1217        48usize,
1218        concat!(
1219            "Offset of field: ",
1220            stringify!(VmbFeatureInfo),
1221            "::",
1222            stringify!(unit)
1223        )
1224    );
1225    assert_eq!(
1226        unsafe { ::std::ptr::addr_of!((*ptr).representation) as usize - ptr as usize },
1227        56usize,
1228        concat!(
1229            "Offset of field: ",
1230            stringify!(VmbFeatureInfo),
1231            "::",
1232            stringify!(representation)
1233        )
1234    );
1235    assert_eq!(
1236        unsafe { ::std::ptr::addr_of!((*ptr).featureDataType) as usize - ptr as usize },
1237        64usize,
1238        concat!(
1239            "Offset of field: ",
1240            stringify!(VmbFeatureInfo),
1241            "::",
1242            stringify!(featureDataType)
1243        )
1244    );
1245    assert_eq!(
1246        unsafe { ::std::ptr::addr_of!((*ptr).featureFlags) as usize - ptr as usize },
1247        68usize,
1248        concat!(
1249            "Offset of field: ",
1250            stringify!(VmbFeatureInfo),
1251            "::",
1252            stringify!(featureFlags)
1253        )
1254    );
1255    assert_eq!(
1256        unsafe { ::std::ptr::addr_of!((*ptr).pollingTime) as usize - ptr as usize },
1257        72usize,
1258        concat!(
1259            "Offset of field: ",
1260            stringify!(VmbFeatureInfo),
1261            "::",
1262            stringify!(pollingTime)
1263        )
1264    );
1265    assert_eq!(
1266        unsafe { ::std::ptr::addr_of!((*ptr).visibility) as usize - ptr as usize },
1267        76usize,
1268        concat!(
1269            "Offset of field: ",
1270            stringify!(VmbFeatureInfo),
1271            "::",
1272            stringify!(visibility)
1273        )
1274    );
1275    assert_eq!(
1276        unsafe { ::std::ptr::addr_of!((*ptr).isStreamable) as usize - ptr as usize },
1277        80usize,
1278        concat!(
1279            "Offset of field: ",
1280            stringify!(VmbFeatureInfo),
1281            "::",
1282            stringify!(isStreamable)
1283        )
1284    );
1285    assert_eq!(
1286        unsafe { ::std::ptr::addr_of!((*ptr).hasSelectedFeatures) as usize - ptr as usize },
1287        81usize,
1288        concat!(
1289            "Offset of field: ",
1290            stringify!(VmbFeatureInfo),
1291            "::",
1292            stringify!(hasSelectedFeatures)
1293        )
1294    );
1295}
1296#[doc = " \\brief Feature information.\n\n Holds read-only information about a feature."]
1297pub type VmbFeatureInfo_t = VmbFeatureInfo;
1298#[doc = " \\brief Info about possible entries of an enumeration feature."]
1299#[repr(C)]
1300#[derive(Debug, Copy, Clone, PartialEq)]
1301pub struct VmbFeatureEnumEntry {
1302    #[doc = "!< Name used in the API"]
1303    pub name: *const ::std::os::raw::c_char,
1304    #[doc = "!< Enumeration entry name to be used in GUIs"]
1305    pub displayName: *const ::std::os::raw::c_char,
1306    #[doc = "!< Short description, e.g. for a tooltip"]
1307    pub tooltip: *const ::std::os::raw::c_char,
1308    #[doc = "!< Longer description"]
1309    pub description: *const ::std::os::raw::c_char,
1310    #[doc = "!< Integer value of this enumeration entry"]
1311    pub intValue: VmbInt64_t,
1312    #[doc = "!< Namespace this feature resides in"]
1313    pub sfncNamespace: *const ::std::os::raw::c_char,
1314    #[doc = "!< GUI visibility"]
1315    pub visibility: VmbFeatureVisibility_t,
1316}
1317#[test]
1318fn bindgen_test_layout_VmbFeatureEnumEntry() {
1319    const UNINIT: ::std::mem::MaybeUninit<VmbFeatureEnumEntry> = ::std::mem::MaybeUninit::uninit();
1320    let ptr = UNINIT.as_ptr();
1321    assert_eq!(
1322        ::std::mem::size_of::<VmbFeatureEnumEntry>(),
1323        56usize,
1324        concat!("Size of: ", stringify!(VmbFeatureEnumEntry))
1325    );
1326    assert_eq!(
1327        ::std::mem::align_of::<VmbFeatureEnumEntry>(),
1328        8usize,
1329        concat!("Alignment of ", stringify!(VmbFeatureEnumEntry))
1330    );
1331    assert_eq!(
1332        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
1333        0usize,
1334        concat!(
1335            "Offset of field: ",
1336            stringify!(VmbFeatureEnumEntry),
1337            "::",
1338            stringify!(name)
1339        )
1340    );
1341    assert_eq!(
1342        unsafe { ::std::ptr::addr_of!((*ptr).displayName) as usize - ptr as usize },
1343        8usize,
1344        concat!(
1345            "Offset of field: ",
1346            stringify!(VmbFeatureEnumEntry),
1347            "::",
1348            stringify!(displayName)
1349        )
1350    );
1351    assert_eq!(
1352        unsafe { ::std::ptr::addr_of!((*ptr).tooltip) as usize - ptr as usize },
1353        16usize,
1354        concat!(
1355            "Offset of field: ",
1356            stringify!(VmbFeatureEnumEntry),
1357            "::",
1358            stringify!(tooltip)
1359        )
1360    );
1361    assert_eq!(
1362        unsafe { ::std::ptr::addr_of!((*ptr).description) as usize - ptr as usize },
1363        24usize,
1364        concat!(
1365            "Offset of field: ",
1366            stringify!(VmbFeatureEnumEntry),
1367            "::",
1368            stringify!(description)
1369        )
1370    );
1371    assert_eq!(
1372        unsafe { ::std::ptr::addr_of!((*ptr).intValue) as usize - ptr as usize },
1373        32usize,
1374        concat!(
1375            "Offset of field: ",
1376            stringify!(VmbFeatureEnumEntry),
1377            "::",
1378            stringify!(intValue)
1379        )
1380    );
1381    assert_eq!(
1382        unsafe { ::std::ptr::addr_of!((*ptr).sfncNamespace) as usize - ptr as usize },
1383        40usize,
1384        concat!(
1385            "Offset of field: ",
1386            stringify!(VmbFeatureEnumEntry),
1387            "::",
1388            stringify!(sfncNamespace)
1389        )
1390    );
1391    assert_eq!(
1392        unsafe { ::std::ptr::addr_of!((*ptr).visibility) as usize - ptr as usize },
1393        48usize,
1394        concat!(
1395            "Offset of field: ",
1396            stringify!(VmbFeatureEnumEntry),
1397            "::",
1398            stringify!(visibility)
1399        )
1400    );
1401}
1402#[doc = " \\brief Info about possible entries of an enumeration feature."]
1403pub type VmbFeatureEnumEntry_t = VmbFeatureEnumEntry;
1404pub mod VmbFrameStatusType {
1405    #[doc = " \\brief Status of a frame transfer."]
1406    pub type Type = ::std::os::raw::c_int;
1407    #[doc = "!< Frame has been completed without errors"]
1408    pub const VmbFrameStatusComplete: Type = 0;
1409    #[doc = "!< Frame could not be filled to the end"]
1410    pub const VmbFrameStatusIncomplete: Type = -1;
1411    #[doc = "!< Frame buffer was too small"]
1412    pub const VmbFrameStatusTooSmall: Type = -2;
1413    #[doc = "!< Frame buffer was invalid"]
1414    pub const VmbFrameStatusInvalid: Type = -3;
1415}
1416#[doc = " \\brief Type for the frame status; for values see ::VmbFrameStatusType."]
1417pub type VmbFrameStatus_t = VmbInt32_t;
1418impl VmbFrameFlagsType {
1419    #[doc = "!< No additional information is provided"]
1420    pub const VmbFrameFlagsNone: VmbFrameFlagsType = VmbFrameFlagsType(0);
1421}
1422impl VmbFrameFlagsType {
1423    #[doc = "!< VmbFrame_t::width and VmbFrame_t::height are provided"]
1424    pub const VmbFrameFlagsDimension: VmbFrameFlagsType = VmbFrameFlagsType(1);
1425}
1426impl VmbFrameFlagsType {
1427    #[doc = "!< VmbFrame_t::offsetX and VmbFrame_t::offsetY are provided (ROI)"]
1428    pub const VmbFrameFlagsOffset: VmbFrameFlagsType = VmbFrameFlagsType(2);
1429}
1430impl VmbFrameFlagsType {
1431    #[doc = "!< VmbFrame_t::frameID is provided"]
1432    pub const VmbFrameFlagsFrameID: VmbFrameFlagsType = VmbFrameFlagsType(4);
1433}
1434impl VmbFrameFlagsType {
1435    #[doc = "!< VmbFrame_t::timestamp is provided"]
1436    pub const VmbFrameFlagsTimestamp: VmbFrameFlagsType = VmbFrameFlagsType(8);
1437}
1438impl VmbFrameFlagsType {
1439    #[doc = "!< VmbFrame_t::imageData is provided"]
1440    pub const VmbFrameFlagsImageData: VmbFrameFlagsType = VmbFrameFlagsType(16);
1441}
1442impl VmbFrameFlagsType {
1443    #[doc = "!< VmbFrame_t::payloadType is provided"]
1444    pub const VmbFrameFlagsPayloadType: VmbFrameFlagsType = VmbFrameFlagsType(32);
1445}
1446impl VmbFrameFlagsType {
1447    #[doc = "!< VmbFrame_t::chunkDataPresent is set based on info provided by the transport layer"]
1448    pub const VmbFrameFlagsChunkDataPresent: VmbFrameFlagsType = VmbFrameFlagsType(64);
1449}
1450impl ::std::ops::BitOr<VmbFrameFlagsType> for VmbFrameFlagsType {
1451    type Output = Self;
1452    #[inline]
1453    fn bitor(self, other: Self) -> Self {
1454        VmbFrameFlagsType(self.0 | other.0)
1455    }
1456}
1457impl ::std::ops::BitOrAssign for VmbFrameFlagsType {
1458    #[inline]
1459    fn bitor_assign(&mut self, rhs: VmbFrameFlagsType) {
1460        self.0 |= rhs.0;
1461    }
1462}
1463impl ::std::ops::BitAnd<VmbFrameFlagsType> for VmbFrameFlagsType {
1464    type Output = Self;
1465    #[inline]
1466    fn bitand(self, other: Self) -> Self {
1467        VmbFrameFlagsType(self.0 & other.0)
1468    }
1469}
1470impl ::std::ops::BitAndAssign for VmbFrameFlagsType {
1471    #[inline]
1472    fn bitand_assign(&mut self, rhs: VmbFrameFlagsType) {
1473        self.0 &= rhs.0;
1474    }
1475}
1476#[repr(transparent)]
1477#[doc = " \\brief Frame flags."]
1478#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1479pub struct VmbFrameFlagsType(pub ::std::os::raw::c_uint);
1480#[doc = " \\brief Type for Frame flags; for values see ::VmbFrameFlagsType."]
1481pub type VmbFrameFlags_t = VmbUint32_t;
1482pub mod VmbPayloadType {
1483    #[doc = " \\brief Frame payload type."]
1484    pub type Type = ::std::os::raw::c_uint;
1485    #[doc = "!< Unknown payload type"]
1486    pub const VmbPayloadTypeUnknown: Type = 0;
1487    #[doc = "!< image data"]
1488    pub const VmbPayloadTypeImage: Type = 1;
1489    #[doc = "!< raw data"]
1490    pub const VmbPayloadTypeRaw: Type = 2;
1491    #[doc = "!< file data"]
1492    pub const VmbPayloadTypeFile: Type = 3;
1493    #[doc = "!< JPEG data as described in the GigEVision 2.0 specification"]
1494    pub const VmbPayloadTypeJPEG: Type = 5;
1495    #[doc = "!< JPEG 2000 data as described in the GigEVision 2.0 specification"]
1496    pub const VmbPayloadTypJPEG2000: Type = 6;
1497    #[doc = "!< H.264 data as described in the GigEVision 2.0 specification"]
1498    pub const VmbPayloadTypeH264: Type = 7;
1499    #[doc = "!< Chunk data exclusively"]
1500    pub const VmbPayloadTypeChunkOnly: Type = 8;
1501    #[doc = "!< Device specific data format"]
1502    pub const VmbPayloadTypeDeviceSpecific: Type = 9;
1503    #[doc = "!< GenDC data"]
1504    pub const VmbPayloadTypeGenDC: Type = 11;
1505}
1506#[doc = " \\brief Type representing the payload type of a frame. For values see ::VmbPayloadType."]
1507pub type VmbPayloadType_t = VmbUint32_t;
1508#[doc = " \\brief Type used to represent a dimension value, e.g. the image height."]
1509pub type VmbImageDimension_t = VmbUint32_t;
1510#[doc = " \\brief Frame delivered by the camera."]
1511#[repr(C)]
1512#[derive(Debug, Copy, Clone, PartialEq)]
1513pub struct VmbFrame {
1514    #[doc = "!< Comprises image and potentially chunk data"]
1515    pub buffer: *mut ::std::os::raw::c_void,
1516    #[doc = "!< The size of the data buffer"]
1517    pub bufferSize: VmbUint32_t,
1518    #[doc = "!< 4 void pointers that can be employed by the user (e.g. for storing handles)"]
1519    pub context: [*mut ::std::os::raw::c_void; 4usize],
1520    #[doc = "!< The resulting status of the receive operation"]
1521    pub receiveStatus: VmbFrameStatus_t,
1522    #[doc = "!< Unique ID of this frame in this stream"]
1523    pub frameID: VmbUint64_t,
1524    #[doc = "!< The timestamp set by the camera"]
1525    pub timestamp: VmbUint64_t,
1526    #[doc = "!< The start of the image data, if present, or null"]
1527    pub imageData: *mut VmbUint8_t,
1528    #[doc = "!< Flags indicating which additional frame information is available"]
1529    pub receiveFlags: VmbFrameFlags_t,
1530    #[doc = "!< Pixel format of the image"]
1531    pub pixelFormat: VmbPixelFormat_t,
1532    #[doc = "!< Width of an image"]
1533    pub width: VmbImageDimension_t,
1534    #[doc = "!< Height of an image"]
1535    pub height: VmbImageDimension_t,
1536    #[doc = "!< Horizontal offset of an image"]
1537    pub offsetX: VmbImageDimension_t,
1538    #[doc = "!< Vertical offset of an image"]
1539    pub offsetY: VmbImageDimension_t,
1540    #[doc = "!< The type of payload"]
1541    pub payloadType: VmbPayloadType_t,
1542    #[doc = "!< True if the transport layer reported chunk data to be present in the buffer"]
1543    pub chunkDataPresent: VmbBool_t,
1544}
1545#[test]
1546fn bindgen_test_layout_VmbFrame() {
1547    const UNINIT: ::std::mem::MaybeUninit<VmbFrame> = ::std::mem::MaybeUninit::uninit();
1548    let ptr = UNINIT.as_ptr();
1549    assert_eq!(
1550        ::std::mem::size_of::<VmbFrame>(),
1551        112usize,
1552        concat!("Size of: ", stringify!(VmbFrame))
1553    );
1554    assert_eq!(
1555        ::std::mem::align_of::<VmbFrame>(),
1556        8usize,
1557        concat!("Alignment of ", stringify!(VmbFrame))
1558    );
1559    assert_eq!(
1560        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1561        0usize,
1562        concat!(
1563            "Offset of field: ",
1564            stringify!(VmbFrame),
1565            "::",
1566            stringify!(buffer)
1567        )
1568    );
1569    assert_eq!(
1570        unsafe { ::std::ptr::addr_of!((*ptr).bufferSize) as usize - ptr as usize },
1571        8usize,
1572        concat!(
1573            "Offset of field: ",
1574            stringify!(VmbFrame),
1575            "::",
1576            stringify!(bufferSize)
1577        )
1578    );
1579    assert_eq!(
1580        unsafe { ::std::ptr::addr_of!((*ptr).context) as usize - ptr as usize },
1581        16usize,
1582        concat!(
1583            "Offset of field: ",
1584            stringify!(VmbFrame),
1585            "::",
1586            stringify!(context)
1587        )
1588    );
1589    assert_eq!(
1590        unsafe { ::std::ptr::addr_of!((*ptr).receiveStatus) as usize - ptr as usize },
1591        48usize,
1592        concat!(
1593            "Offset of field: ",
1594            stringify!(VmbFrame),
1595            "::",
1596            stringify!(receiveStatus)
1597        )
1598    );
1599    assert_eq!(
1600        unsafe { ::std::ptr::addr_of!((*ptr).frameID) as usize - ptr as usize },
1601        56usize,
1602        concat!(
1603            "Offset of field: ",
1604            stringify!(VmbFrame),
1605            "::",
1606            stringify!(frameID)
1607        )
1608    );
1609    assert_eq!(
1610        unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize },
1611        64usize,
1612        concat!(
1613            "Offset of field: ",
1614            stringify!(VmbFrame),
1615            "::",
1616            stringify!(timestamp)
1617        )
1618    );
1619    assert_eq!(
1620        unsafe { ::std::ptr::addr_of!((*ptr).imageData) as usize - ptr as usize },
1621        72usize,
1622        concat!(
1623            "Offset of field: ",
1624            stringify!(VmbFrame),
1625            "::",
1626            stringify!(imageData)
1627        )
1628    );
1629    assert_eq!(
1630        unsafe { ::std::ptr::addr_of!((*ptr).receiveFlags) as usize - ptr as usize },
1631        80usize,
1632        concat!(
1633            "Offset of field: ",
1634            stringify!(VmbFrame),
1635            "::",
1636            stringify!(receiveFlags)
1637        )
1638    );
1639    assert_eq!(
1640        unsafe { ::std::ptr::addr_of!((*ptr).pixelFormat) as usize - ptr as usize },
1641        84usize,
1642        concat!(
1643            "Offset of field: ",
1644            stringify!(VmbFrame),
1645            "::",
1646            stringify!(pixelFormat)
1647        )
1648    );
1649    assert_eq!(
1650        unsafe { ::std::ptr::addr_of!((*ptr).width) as usize - ptr as usize },
1651        88usize,
1652        concat!(
1653            "Offset of field: ",
1654            stringify!(VmbFrame),
1655            "::",
1656            stringify!(width)
1657        )
1658    );
1659    assert_eq!(
1660        unsafe { ::std::ptr::addr_of!((*ptr).height) as usize - ptr as usize },
1661        92usize,
1662        concat!(
1663            "Offset of field: ",
1664            stringify!(VmbFrame),
1665            "::",
1666            stringify!(height)
1667        )
1668    );
1669    assert_eq!(
1670        unsafe { ::std::ptr::addr_of!((*ptr).offsetX) as usize - ptr as usize },
1671        96usize,
1672        concat!(
1673            "Offset of field: ",
1674            stringify!(VmbFrame),
1675            "::",
1676            stringify!(offsetX)
1677        )
1678    );
1679    assert_eq!(
1680        unsafe { ::std::ptr::addr_of!((*ptr).offsetY) as usize - ptr as usize },
1681        100usize,
1682        concat!(
1683            "Offset of field: ",
1684            stringify!(VmbFrame),
1685            "::",
1686            stringify!(offsetY)
1687        )
1688    );
1689    assert_eq!(
1690        unsafe { ::std::ptr::addr_of!((*ptr).payloadType) as usize - ptr as usize },
1691        104usize,
1692        concat!(
1693            "Offset of field: ",
1694            stringify!(VmbFrame),
1695            "::",
1696            stringify!(payloadType)
1697        )
1698    );
1699    assert_eq!(
1700        unsafe { ::std::ptr::addr_of!((*ptr).chunkDataPresent) as usize - ptr as usize },
1701        108usize,
1702        concat!(
1703            "Offset of field: ",
1704            stringify!(VmbFrame),
1705            "::",
1706            stringify!(chunkDataPresent)
1707        )
1708    );
1709}
1710#[doc = " \\brief Frame delivered by the camera."]
1711pub type VmbFrame_t = VmbFrame;
1712pub mod VmbFeaturePersistType {
1713    #[doc = " \\brief Type of features that are to be saved (persisted) to the XML file when using ::VmbSettingsSave"]
1714    pub type Type = ::std::os::raw::c_uint;
1715    #[doc = "!< Save all features to XML, including look-up tables (if possible)"]
1716    pub const VmbFeaturePersistAll: Type = 0;
1717    #[doc = "!< Save only features marked as streamable, excluding look-up tables"]
1718    pub const VmbFeaturePersistStreamable: Type = 1;
1719    #[doc = "!< Save all features except look-up tables (default)"]
1720    pub const VmbFeaturePersistNoLUT: Type = 2;
1721}
1722#[doc = " \\brief Type for feature persistence; for values see ::VmbFeaturePersistType."]
1723pub type VmbFeaturePersist_t = VmbUint32_t;
1724pub mod VmbModulePersistFlagsType {
1725    #[doc = " \\brief Parameters determining the operation mode of ::VmbSettingsSave and ::VmbSettingsLoad."]
1726    pub type Type = ::std::os::raw::c_uint;
1727    #[doc = "!< Persist/Load features for no module."]
1728    pub const VmbModulePersistFlagsNone: Type = 0;
1729    #[doc = "!< Persist/Load the transport layer features."]
1730    pub const VmbModulePersistFlagsTransportLayer: Type = 1;
1731    #[doc = "!< Persist/Load the interface features."]
1732    pub const VmbModulePersistFlagsInterface: Type = 2;
1733    #[doc = "!< Persist/Load the remote device features."]
1734    pub const VmbModulePersistFlagsRemoteDevice: Type = 4;
1735    #[doc = "!< Persist/Load the local device features."]
1736    pub const VmbModulePersistFlagsLocalDevice: Type = 8;
1737    #[doc = "!< Persist/Load the features of stream modules."]
1738    pub const VmbModulePersistFlagsStreams: Type = 16;
1739    #[doc = "!< Persist/Load features for all modules."]
1740    pub const VmbModulePersistFlagsAll: Type = 255;
1741}
1742#[doc = " \\brief Type for module persist flags; for values see VmbModulePersistFlagsType\n\n Use a combination of ::VmbModulePersistFlagsType constants"]
1743pub type VmbModulePersistFlags_t = VmbUint32_t;
1744pub mod VmbLogLevel {
1745    #[doc = " \\brief A level to use for logging"]
1746    pub type Type = ::std::os::raw::c_uint;
1747    #[doc = "!< Nothing is logged regardless of the severity of the issue"]
1748    pub const VmbLogLevelNone: Type = 0;
1749    #[doc = "!< Only errors are logged"]
1750    pub const VmbLogLevelError: Type = 1;
1751    #[doc = "!< Only error and debug messages are logged"]
1752    pub const VmbLogLevelDebug: Type = 2;
1753    #[doc = "!< Only error, debug and warn messages are logged"]
1754    pub const VmbLogLevelWarn: Type = 3;
1755    #[doc = "!< all messages are logged"]
1756    pub const VmbLogLevelTrace: Type = 4;
1757    #[doc = "!< all messages are logged"]
1758    pub const VmbLogLevelAll: Type = 4;
1759}
1760#[doc = " \\brief The type used for storing the log level\n\n Use a constant from ::VmbLogLevel"]
1761pub type VmbLogLevel_t = VmbUint32_t;
1762#[doc = " \\brief Parameters determining the operation mode of ::VmbSettingsSave and ::VmbSettingsLoad"]
1763#[repr(C)]
1764#[derive(Debug, Copy, Clone, PartialEq)]
1765pub struct VmbFeaturePersistSettings {
1766    #[doc = "!< Type of features that are to be saved"]
1767    pub persistType: VmbFeaturePersist_t,
1768    #[doc = "!< Flags specifying the modules to persist/load"]
1769    pub modulePersistFlags: VmbModulePersistFlags_t,
1770    #[doc = "!< Number of iterations when loading settings"]
1771    pub maxIterations: VmbUint32_t,
1772    #[doc = "!< Determines level of detail for load/save settings logging"]
1773    pub loggingLevel: VmbLogLevel_t,
1774}
1775#[test]
1776fn bindgen_test_layout_VmbFeaturePersistSettings() {
1777    const UNINIT: ::std::mem::MaybeUninit<VmbFeaturePersistSettings> =
1778        ::std::mem::MaybeUninit::uninit();
1779    let ptr = UNINIT.as_ptr();
1780    assert_eq!(
1781        ::std::mem::size_of::<VmbFeaturePersistSettings>(),
1782        16usize,
1783        concat!("Size of: ", stringify!(VmbFeaturePersistSettings))
1784    );
1785    assert_eq!(
1786        ::std::mem::align_of::<VmbFeaturePersistSettings>(),
1787        4usize,
1788        concat!("Alignment of ", stringify!(VmbFeaturePersistSettings))
1789    );
1790    assert_eq!(
1791        unsafe { ::std::ptr::addr_of!((*ptr).persistType) as usize - ptr as usize },
1792        0usize,
1793        concat!(
1794            "Offset of field: ",
1795            stringify!(VmbFeaturePersistSettings),
1796            "::",
1797            stringify!(persistType)
1798        )
1799    );
1800    assert_eq!(
1801        unsafe { ::std::ptr::addr_of!((*ptr).modulePersistFlags) as usize - ptr as usize },
1802        4usize,
1803        concat!(
1804            "Offset of field: ",
1805            stringify!(VmbFeaturePersistSettings),
1806            "::",
1807            stringify!(modulePersistFlags)
1808        )
1809    );
1810    assert_eq!(
1811        unsafe { ::std::ptr::addr_of!((*ptr).maxIterations) as usize - ptr as usize },
1812        8usize,
1813        concat!(
1814            "Offset of field: ",
1815            stringify!(VmbFeaturePersistSettings),
1816            "::",
1817            stringify!(maxIterations)
1818        )
1819    );
1820    assert_eq!(
1821        unsafe { ::std::ptr::addr_of!((*ptr).loggingLevel) as usize - ptr as usize },
1822        12usize,
1823        concat!(
1824            "Offset of field: ",
1825            stringify!(VmbFeaturePersistSettings),
1826            "::",
1827            stringify!(loggingLevel)
1828        )
1829    );
1830}
1831#[doc = " \\brief Parameters determining the operation mode of ::VmbSettingsSave and ::VmbSettingsLoad"]
1832pub type VmbFeaturePersistSettings_t = VmbFeaturePersistSettings;
1833#[doc = " \\brief Invalidation callback type for a function that gets called in a separate thread\n        and has been registered with ::VmbFeatureInvalidationRegister().\n\n While the callback is run, all feature data is atomic. After the callback finishes,\n the feature data may be updated with new values.\n\n Do not spend too much time in this thread; it prevents the feature values\n from being updated from any other thread or the lower-level drivers.\n\n \\param[in]   handle              Handle for an entity that exposes features\n \\param[in]   name                Name of the feature\n \\param[in]   userContext         Pointer to the user context, see ::VmbFeatureInvalidationRegister"]
1834pub type VmbInvalidationCallback = ::std::option::Option<
1835    unsafe extern "C" fn(
1836        handle: VmbHandle_t,
1837        name: *const ::std::os::raw::c_char,
1838        userContext: *mut ::std::os::raw::c_void,
1839    ),
1840>;
1841#[doc = " \\brief Frame Callback type for a function that gets called in a separate thread\n        if a frame has been queued with ::VmbCaptureFrameQueue.\n\n \\warning Any operations closing the stream including ::VmbShutdown and ::VmbCameraClose in addition to\n          ::VmbCaptureEnd block until any currently active callbacks return. If the callback does not\n          return in finite time, the program may not return.\n\n \\param[in]   cameraHandle      Handle of the camera the frame belongs to\n \\param[in]   streamHandle      Handle of the stream the frame belongs to\n \\param[in]   frame             The received frame"]
1842pub type VmbFrameCallback = ::std::option::Option<
1843    unsafe extern "C" fn(
1844        cameraHandle: VmbHandle_t,
1845        streamHandle: VmbHandle_t,
1846        frame: *mut VmbFrame_t,
1847    ),
1848>;
1849#[doc = " \\brief Function pointer type to access chunk data\n\n This function should complete as quickly as possible, since it blocks other updates on the\n remote device.\n\n This function should not throw exceptions, even if VmbC is used from C++. Any exception\n thrown will only result in an error code indicating that an exception was thrown.\n\n \\param[in] featureAccessHandle A special handle that can be used for accessing features;\n                                the handle is only valid during the call of the function.\n \\param[in] userContext         The value the user passed to ::VmbChunkDataAccess.\n\n \\return An error to be returned from ::VmbChunkDataAccess in the absence of other errors;\n         A custom exit code >= ::VmbErrorCustom can be returned to indicate a failure via\n         ::VmbChunkDataAccess return code"]
1850pub type VmbChunkAccessCallback = ::std::option::Option<
1851    unsafe extern "C" fn(
1852        featureAccessHandle: VmbHandle_t,
1853        userContext: *mut ::std::os::raw::c_void,
1854    ) -> VmbError_t,
1855>;
1856extern "C" {
1857    #[doc = " \\brief Constant for the Vmb handle to be able to access Vmb system features."]
1858    pub static gVmbHandle: VmbHandle_t;
1859}
1860extern crate libloading;
1861pub struct VimbaC {
1862    __library: ::libloading::Library,
1863    pub VmbVersionQuery: Result<
1864        unsafe extern "C" fn(
1865            versionInfo: *mut VmbVersionInfo_t,
1866            sizeofVersionInfo: VmbUint32_t,
1867        ) -> VmbError_t,
1868        ::libloading::Error,
1869    >,
1870    pub VmbStartup: Result<
1871        unsafe extern "C" fn(pathConfiguration: *const VmbFilePathChar_t) -> VmbError_t,
1872        ::libloading::Error,
1873    >,
1874    pub VmbShutdown: Result<unsafe extern "C" fn(), ::libloading::Error>,
1875    pub VmbCamerasList: Result<
1876        unsafe extern "C" fn(
1877            cameraInfo: *mut VmbCameraInfo_t,
1878            listLength: VmbUint32_t,
1879            numFound: *mut VmbUint32_t,
1880            sizeofCameraInfo: VmbUint32_t,
1881        ) -> VmbError_t,
1882        ::libloading::Error,
1883    >,
1884    pub VmbCameraInfoQueryByHandle: Result<
1885        unsafe extern "C" fn(
1886            cameraHandle: VmbHandle_t,
1887            info: *mut VmbCameraInfo_t,
1888            sizeofCameraInfo: VmbUint32_t,
1889        ) -> VmbError_t,
1890        ::libloading::Error,
1891    >,
1892    pub VmbCameraInfoQuery: Result<
1893        unsafe extern "C" fn(
1894            idString: *const ::std::os::raw::c_char,
1895            info: *mut VmbCameraInfo_t,
1896            sizeofCameraInfo: VmbUint32_t,
1897        ) -> VmbError_t,
1898        ::libloading::Error,
1899    >,
1900    pub VmbCameraOpen: Result<
1901        unsafe extern "C" fn(
1902            idString: *const ::std::os::raw::c_char,
1903            accessMode: VmbAccessMode_t,
1904            cameraHandle: *mut VmbHandle_t,
1905        ) -> VmbError_t,
1906        ::libloading::Error,
1907    >,
1908    pub VmbCameraClose:
1909        Result<unsafe extern "C" fn(cameraHandle: VmbHandle_t) -> VmbError_t, ::libloading::Error>,
1910    pub VmbFeaturesList: Result<
1911        unsafe extern "C" fn(
1912            handle: VmbHandle_t,
1913            featureInfoList: *mut VmbFeatureInfo_t,
1914            listLength: VmbUint32_t,
1915            numFound: *mut VmbUint32_t,
1916            sizeofFeatureInfo: VmbUint32_t,
1917        ) -> VmbError_t,
1918        ::libloading::Error,
1919    >,
1920    pub VmbFeatureInfoQuery: Result<
1921        unsafe extern "C" fn(
1922            handle: VmbHandle_t,
1923            name: *const ::std::os::raw::c_char,
1924            featureInfo: *mut VmbFeatureInfo_t,
1925            sizeofFeatureInfo: VmbUint32_t,
1926        ) -> VmbError_t,
1927        ::libloading::Error,
1928    >,
1929    pub VmbFeatureListSelected: Result<
1930        unsafe extern "C" fn(
1931            handle: VmbHandle_t,
1932            name: *const ::std::os::raw::c_char,
1933            featureInfoList: *mut VmbFeatureInfo_t,
1934            listLength: VmbUint32_t,
1935            numFound: *mut VmbUint32_t,
1936            sizeofFeatureInfo: VmbUint32_t,
1937        ) -> VmbError_t,
1938        ::libloading::Error,
1939    >,
1940    pub VmbFeatureAccessQuery: Result<
1941        unsafe extern "C" fn(
1942            handle: VmbHandle_t,
1943            name: *const ::std::os::raw::c_char,
1944            isReadable: *mut VmbBool_t,
1945            isWriteable: *mut VmbBool_t,
1946        ) -> VmbError_t,
1947        ::libloading::Error,
1948    >,
1949    pub VmbFeatureIntGet: Result<
1950        unsafe extern "C" fn(
1951            handle: VmbHandle_t,
1952            name: *const ::std::os::raw::c_char,
1953            value: *mut VmbInt64_t,
1954        ) -> VmbError_t,
1955        ::libloading::Error,
1956    >,
1957    pub VmbFeatureIntSet: Result<
1958        unsafe extern "C" fn(
1959            handle: VmbHandle_t,
1960            name: *const ::std::os::raw::c_char,
1961            value: VmbInt64_t,
1962        ) -> VmbError_t,
1963        ::libloading::Error,
1964    >,
1965    pub VmbFeatureIntRangeQuery: Result<
1966        unsafe extern "C" fn(
1967            handle: VmbHandle_t,
1968            name: *const ::std::os::raw::c_char,
1969            min: *mut VmbInt64_t,
1970            max: *mut VmbInt64_t,
1971        ) -> VmbError_t,
1972        ::libloading::Error,
1973    >,
1974    pub VmbFeatureIntIncrementQuery: Result<
1975        unsafe extern "C" fn(
1976            handle: VmbHandle_t,
1977            name: *const ::std::os::raw::c_char,
1978            value: *mut VmbInt64_t,
1979        ) -> VmbError_t,
1980        ::libloading::Error,
1981    >,
1982    pub VmbFeatureIntValidValueSetQuery: Result<
1983        unsafe extern "C" fn(
1984            handle: VmbHandle_t,
1985            name: *const ::std::os::raw::c_char,
1986            buffer: *mut VmbInt64_t,
1987            bufferSize: VmbUint32_t,
1988            setSize: *mut VmbUint32_t,
1989        ) -> VmbError_t,
1990        ::libloading::Error,
1991    >,
1992    pub VmbFeatureFloatGet: Result<
1993        unsafe extern "C" fn(
1994            handle: VmbHandle_t,
1995            name: *const ::std::os::raw::c_char,
1996            value: *mut f64,
1997        ) -> VmbError_t,
1998        ::libloading::Error,
1999    >,
2000    pub VmbFeatureFloatSet: Result<
2001        unsafe extern "C" fn(
2002            handle: VmbHandle_t,
2003            name: *const ::std::os::raw::c_char,
2004            value: f64,
2005        ) -> VmbError_t,
2006        ::libloading::Error,
2007    >,
2008    pub VmbFeatureFloatRangeQuery: Result<
2009        unsafe extern "C" fn(
2010            handle: VmbHandle_t,
2011            name: *const ::std::os::raw::c_char,
2012            min: *mut f64,
2013            max: *mut f64,
2014        ) -> VmbError_t,
2015        ::libloading::Error,
2016    >,
2017    pub VmbFeatureFloatIncrementQuery: Result<
2018        unsafe extern "C" fn(
2019            handle: VmbHandle_t,
2020            name: *const ::std::os::raw::c_char,
2021            hasIncrement: *mut VmbBool_t,
2022            value: *mut f64,
2023        ) -> VmbError_t,
2024        ::libloading::Error,
2025    >,
2026    pub VmbFeatureEnumGet: Result<
2027        unsafe extern "C" fn(
2028            handle: VmbHandle_t,
2029            name: *const ::std::os::raw::c_char,
2030            value: *mut *const ::std::os::raw::c_char,
2031        ) -> VmbError_t,
2032        ::libloading::Error,
2033    >,
2034    pub VmbFeatureEnumSet: Result<
2035        unsafe extern "C" fn(
2036            handle: VmbHandle_t,
2037            name: *const ::std::os::raw::c_char,
2038            value: *const ::std::os::raw::c_char,
2039        ) -> VmbError_t,
2040        ::libloading::Error,
2041    >,
2042    pub VmbFeatureEnumRangeQuery: Result<
2043        unsafe extern "C" fn(
2044            handle: VmbHandle_t,
2045            name: *const ::std::os::raw::c_char,
2046            nameArray: *mut *const ::std::os::raw::c_char,
2047            arrayLength: VmbUint32_t,
2048            numFound: *mut VmbUint32_t,
2049        ) -> VmbError_t,
2050        ::libloading::Error,
2051    >,
2052    pub VmbFeatureEnumIsAvailable: Result<
2053        unsafe extern "C" fn(
2054            handle: VmbHandle_t,
2055            name: *const ::std::os::raw::c_char,
2056            value: *const ::std::os::raw::c_char,
2057            isAvailable: *mut VmbBool_t,
2058        ) -> VmbError_t,
2059        ::libloading::Error,
2060    >,
2061    pub VmbFeatureEnumAsInt: Result<
2062        unsafe extern "C" fn(
2063            handle: VmbHandle_t,
2064            name: *const ::std::os::raw::c_char,
2065            value: *const ::std::os::raw::c_char,
2066            intVal: *mut VmbInt64_t,
2067        ) -> VmbError_t,
2068        ::libloading::Error,
2069    >,
2070    pub VmbFeatureEnumAsString: Result<
2071        unsafe extern "C" fn(
2072            handle: VmbHandle_t,
2073            name: *const ::std::os::raw::c_char,
2074            intValue: VmbInt64_t,
2075            stringValue: *mut *const ::std::os::raw::c_char,
2076        ) -> VmbError_t,
2077        ::libloading::Error,
2078    >,
2079    pub VmbFeatureEnumEntryGet: Result<
2080        unsafe extern "C" fn(
2081            handle: VmbHandle_t,
2082            featureName: *const ::std::os::raw::c_char,
2083            entryName: *const ::std::os::raw::c_char,
2084            featureEnumEntry: *mut VmbFeatureEnumEntry_t,
2085            sizeofFeatureEnumEntry: VmbUint32_t,
2086        ) -> VmbError_t,
2087        ::libloading::Error,
2088    >,
2089    pub VmbFeatureStringGet: Result<
2090        unsafe extern "C" fn(
2091            handle: VmbHandle_t,
2092            name: *const ::std::os::raw::c_char,
2093            buffer: *mut ::std::os::raw::c_char,
2094            bufferSize: VmbUint32_t,
2095            sizeFilled: *mut VmbUint32_t,
2096        ) -> VmbError_t,
2097        ::libloading::Error,
2098    >,
2099    pub VmbFeatureStringSet: Result<
2100        unsafe extern "C" fn(
2101            handle: VmbHandle_t,
2102            name: *const ::std::os::raw::c_char,
2103            value: *const ::std::os::raw::c_char,
2104        ) -> VmbError_t,
2105        ::libloading::Error,
2106    >,
2107    pub VmbFeatureStringMaxlengthQuery: Result<
2108        unsafe extern "C" fn(
2109            handle: VmbHandle_t,
2110            name: *const ::std::os::raw::c_char,
2111            maxLength: *mut VmbUint32_t,
2112        ) -> VmbError_t,
2113        ::libloading::Error,
2114    >,
2115    pub VmbFeatureBoolGet: Result<
2116        unsafe extern "C" fn(
2117            handle: VmbHandle_t,
2118            name: *const ::std::os::raw::c_char,
2119            value: *mut VmbBool_t,
2120        ) -> VmbError_t,
2121        ::libloading::Error,
2122    >,
2123    pub VmbFeatureBoolSet: Result<
2124        unsafe extern "C" fn(
2125            handle: VmbHandle_t,
2126            name: *const ::std::os::raw::c_char,
2127            value: VmbBool_t,
2128        ) -> VmbError_t,
2129        ::libloading::Error,
2130    >,
2131    pub VmbFeatureCommandRun: Result<
2132        unsafe extern "C" fn(
2133            handle: VmbHandle_t,
2134            name: *const ::std::os::raw::c_char,
2135        ) -> VmbError_t,
2136        ::libloading::Error,
2137    >,
2138    pub VmbFeatureCommandIsDone: Result<
2139        unsafe extern "C" fn(
2140            handle: VmbHandle_t,
2141            name: *const ::std::os::raw::c_char,
2142            isDone: *mut VmbBool_t,
2143        ) -> VmbError_t,
2144        ::libloading::Error,
2145    >,
2146    pub VmbFeatureRawGet: Result<
2147        unsafe extern "C" fn(
2148            handle: VmbHandle_t,
2149            name: *const ::std::os::raw::c_char,
2150            buffer: *mut ::std::os::raw::c_char,
2151            bufferSize: VmbUint32_t,
2152            sizeFilled: *mut VmbUint32_t,
2153        ) -> VmbError_t,
2154        ::libloading::Error,
2155    >,
2156    pub VmbFeatureRawSet: Result<
2157        unsafe extern "C" fn(
2158            handle: VmbHandle_t,
2159            name: *const ::std::os::raw::c_char,
2160            buffer: *const ::std::os::raw::c_char,
2161            bufferSize: VmbUint32_t,
2162        ) -> VmbError_t,
2163        ::libloading::Error,
2164    >,
2165    pub VmbFeatureRawLengthQuery: Result<
2166        unsafe extern "C" fn(
2167            handle: VmbHandle_t,
2168            name: *const ::std::os::raw::c_char,
2169            length: *mut VmbUint32_t,
2170        ) -> VmbError_t,
2171        ::libloading::Error,
2172    >,
2173    pub VmbFeatureInvalidationRegister: Result<
2174        unsafe extern "C" fn(
2175            handle: VmbHandle_t,
2176            name: *const ::std::os::raw::c_char,
2177            callback: VmbInvalidationCallback,
2178            userContext: *mut ::std::os::raw::c_void,
2179        ) -> VmbError_t,
2180        ::libloading::Error,
2181    >,
2182    pub VmbFeatureInvalidationUnregister: Result<
2183        unsafe extern "C" fn(
2184            handle: VmbHandle_t,
2185            name: *const ::std::os::raw::c_char,
2186            callback: VmbInvalidationCallback,
2187        ) -> VmbError_t,
2188        ::libloading::Error,
2189    >,
2190    pub VmbPayloadSizeGet: Result<
2191        unsafe extern "C" fn(handle: VmbHandle_t, payloadSize: *mut VmbUint32_t) -> VmbError_t,
2192        ::libloading::Error,
2193    >,
2194    pub VmbFrameAnnounce: Result<
2195        unsafe extern "C" fn(
2196            handle: VmbHandle_t,
2197            frame: *const VmbFrame_t,
2198            sizeofFrame: VmbUint32_t,
2199        ) -> VmbError_t,
2200        ::libloading::Error,
2201    >,
2202    pub VmbFrameRevoke: Result<
2203        unsafe extern "C" fn(handle: VmbHandle_t, frame: *const VmbFrame_t) -> VmbError_t,
2204        ::libloading::Error,
2205    >,
2206    pub VmbFrameRevokeAll:
2207        Result<unsafe extern "C" fn(handle: VmbHandle_t) -> VmbError_t, ::libloading::Error>,
2208    pub VmbCaptureStart:
2209        Result<unsafe extern "C" fn(handle: VmbHandle_t) -> VmbError_t, ::libloading::Error>,
2210    pub VmbCaptureEnd:
2211        Result<unsafe extern "C" fn(handle: VmbHandle_t) -> VmbError_t, ::libloading::Error>,
2212    pub VmbCaptureFrameQueue: Result<
2213        unsafe extern "C" fn(
2214            handle: VmbHandle_t,
2215            frame: *const VmbFrame_t,
2216            callback: VmbFrameCallback,
2217        ) -> VmbError_t,
2218        ::libloading::Error,
2219    >,
2220    pub VmbCaptureFrameWait: Result<
2221        unsafe extern "C" fn(
2222            handle: VmbHandle_t,
2223            frame: *const VmbFrame_t,
2224            timeout: VmbUint32_t,
2225        ) -> VmbError_t,
2226        ::libloading::Error,
2227    >,
2228    pub VmbCaptureQueueFlush:
2229        Result<unsafe extern "C" fn(handle: VmbHandle_t) -> VmbError_t, ::libloading::Error>,
2230    pub VmbTransportLayersList: Result<
2231        unsafe extern "C" fn(
2232            transportLayerInfo: *mut VmbTransportLayerInfo_t,
2233            listLength: VmbUint32_t,
2234            numFound: *mut VmbUint32_t,
2235            sizeofTransportLayerInfo: VmbUint32_t,
2236        ) -> VmbError_t,
2237        ::libloading::Error,
2238    >,
2239    pub VmbInterfacesList: Result<
2240        unsafe extern "C" fn(
2241            interfaceInfo: *mut VmbInterfaceInfo_t,
2242            listLength: VmbUint32_t,
2243            numFound: *mut VmbUint32_t,
2244            sizeofInterfaceInfo: VmbUint32_t,
2245        ) -> VmbError_t,
2246        ::libloading::Error,
2247    >,
2248    pub VmbMemoryRead: Result<
2249        unsafe extern "C" fn(
2250            handle: VmbHandle_t,
2251            address: VmbUint64_t,
2252            bufferSize: VmbUint32_t,
2253            dataBuffer: *mut ::std::os::raw::c_char,
2254            sizeComplete: *mut VmbUint32_t,
2255        ) -> VmbError_t,
2256        ::libloading::Error,
2257    >,
2258    pub VmbMemoryWrite: Result<
2259        unsafe extern "C" fn(
2260            handle: VmbHandle_t,
2261            address: VmbUint64_t,
2262            bufferSize: VmbUint32_t,
2263            dataBuffer: *const ::std::os::raw::c_char,
2264            sizeComplete: *mut VmbUint32_t,
2265        ) -> VmbError_t,
2266        ::libloading::Error,
2267    >,
2268    pub VmbSettingsSave: Result<
2269        unsafe extern "C" fn(
2270            handle: VmbHandle_t,
2271            filePath: *const VmbFilePathChar_t,
2272            settings: *const VmbFeaturePersistSettings_t,
2273            sizeofSettings: VmbUint32_t,
2274        ) -> VmbError_t,
2275        ::libloading::Error,
2276    >,
2277    pub VmbSettingsLoad: Result<
2278        unsafe extern "C" fn(
2279            handle: VmbHandle_t,
2280            filePath: *const VmbFilePathChar_t,
2281            settings: *const VmbFeaturePersistSettings_t,
2282            sizeofSettings: VmbUint32_t,
2283        ) -> VmbError_t,
2284        ::libloading::Error,
2285    >,
2286    pub VmbChunkDataAccess: Result<
2287        unsafe extern "C" fn(
2288            frame: *const VmbFrame_t,
2289            chunkAccessCallback: VmbChunkAccessCallback,
2290            userContext: *mut ::std::os::raw::c_void,
2291        ) -> VmbError_t,
2292        ::libloading::Error,
2293    >,
2294}
2295impl VimbaC {
2296    pub unsafe fn new<P>(path: P) -> Result<Self, ::libloading::Error>
2297    where
2298        P: AsRef<::std::ffi::OsStr>,
2299    {
2300        let library = ::libloading::Library::new(path)?;
2301        Self::from_library(library)
2302    }
2303    pub unsafe fn from_library<L>(library: L) -> Result<Self, ::libloading::Error>
2304    where
2305        L: Into<::libloading::Library>,
2306    {
2307        let __library = library.into();
2308        let VmbVersionQuery = __library.get(b"VmbVersionQuery\0").map(|sym| *sym);
2309        let VmbStartup = __library.get(b"VmbStartup\0").map(|sym| *sym);
2310        let VmbShutdown = __library.get(b"VmbShutdown\0").map(|sym| *sym);
2311        let VmbCamerasList = __library.get(b"VmbCamerasList\0").map(|sym| *sym);
2312        let VmbCameraInfoQueryByHandle = __library
2313            .get(b"VmbCameraInfoQueryByHandle\0")
2314            .map(|sym| *sym);
2315        let VmbCameraInfoQuery = __library.get(b"VmbCameraInfoQuery\0").map(|sym| *sym);
2316        let VmbCameraOpen = __library.get(b"VmbCameraOpen\0").map(|sym| *sym);
2317        let VmbCameraClose = __library.get(b"VmbCameraClose\0").map(|sym| *sym);
2318        let VmbFeaturesList = __library.get(b"VmbFeaturesList\0").map(|sym| *sym);
2319        let VmbFeatureInfoQuery = __library.get(b"VmbFeatureInfoQuery\0").map(|sym| *sym);
2320        let VmbFeatureListSelected = __library.get(b"VmbFeatureListSelected\0").map(|sym| *sym);
2321        let VmbFeatureAccessQuery = __library.get(b"VmbFeatureAccessQuery\0").map(|sym| *sym);
2322        let VmbFeatureIntGet = __library.get(b"VmbFeatureIntGet\0").map(|sym| *sym);
2323        let VmbFeatureIntSet = __library.get(b"VmbFeatureIntSet\0").map(|sym| *sym);
2324        let VmbFeatureIntRangeQuery = __library.get(b"VmbFeatureIntRangeQuery\0").map(|sym| *sym);
2325        let VmbFeatureIntIncrementQuery = __library
2326            .get(b"VmbFeatureIntIncrementQuery\0")
2327            .map(|sym| *sym);
2328        let VmbFeatureIntValidValueSetQuery = __library
2329            .get(b"VmbFeatureIntValidValueSetQuery\0")
2330            .map(|sym| *sym);
2331        let VmbFeatureFloatGet = __library.get(b"VmbFeatureFloatGet\0").map(|sym| *sym);
2332        let VmbFeatureFloatSet = __library.get(b"VmbFeatureFloatSet\0").map(|sym| *sym);
2333        let VmbFeatureFloatRangeQuery = __library
2334            .get(b"VmbFeatureFloatRangeQuery\0")
2335            .map(|sym| *sym);
2336        let VmbFeatureFloatIncrementQuery = __library
2337            .get(b"VmbFeatureFloatIncrementQuery\0")
2338            .map(|sym| *sym);
2339        let VmbFeatureEnumGet = __library.get(b"VmbFeatureEnumGet\0").map(|sym| *sym);
2340        let VmbFeatureEnumSet = __library.get(b"VmbFeatureEnumSet\0").map(|sym| *sym);
2341        let VmbFeatureEnumRangeQuery = __library.get(b"VmbFeatureEnumRangeQuery\0").map(|sym| *sym);
2342        let VmbFeatureEnumIsAvailable = __library
2343            .get(b"VmbFeatureEnumIsAvailable\0")
2344            .map(|sym| *sym);
2345        let VmbFeatureEnumAsInt = __library.get(b"VmbFeatureEnumAsInt\0").map(|sym| *sym);
2346        let VmbFeatureEnumAsString = __library.get(b"VmbFeatureEnumAsString\0").map(|sym| *sym);
2347        let VmbFeatureEnumEntryGet = __library.get(b"VmbFeatureEnumEntryGet\0").map(|sym| *sym);
2348        let VmbFeatureStringGet = __library.get(b"VmbFeatureStringGet\0").map(|sym| *sym);
2349        let VmbFeatureStringSet = __library.get(b"VmbFeatureStringSet\0").map(|sym| *sym);
2350        let VmbFeatureStringMaxlengthQuery = __library
2351            .get(b"VmbFeatureStringMaxlengthQuery\0")
2352            .map(|sym| *sym);
2353        let VmbFeatureBoolGet = __library.get(b"VmbFeatureBoolGet\0").map(|sym| *sym);
2354        let VmbFeatureBoolSet = __library.get(b"VmbFeatureBoolSet\0").map(|sym| *sym);
2355        let VmbFeatureCommandRun = __library.get(b"VmbFeatureCommandRun\0").map(|sym| *sym);
2356        let VmbFeatureCommandIsDone = __library.get(b"VmbFeatureCommandIsDone\0").map(|sym| *sym);
2357        let VmbFeatureRawGet = __library.get(b"VmbFeatureRawGet\0").map(|sym| *sym);
2358        let VmbFeatureRawSet = __library.get(b"VmbFeatureRawSet\0").map(|sym| *sym);
2359        let VmbFeatureRawLengthQuery = __library.get(b"VmbFeatureRawLengthQuery\0").map(|sym| *sym);
2360        let VmbFeatureInvalidationRegister = __library
2361            .get(b"VmbFeatureInvalidationRegister\0")
2362            .map(|sym| *sym);
2363        let VmbFeatureInvalidationUnregister = __library
2364            .get(b"VmbFeatureInvalidationUnregister\0")
2365            .map(|sym| *sym);
2366        let VmbPayloadSizeGet = __library.get(b"VmbPayloadSizeGet\0").map(|sym| *sym);
2367        let VmbFrameAnnounce = __library.get(b"VmbFrameAnnounce\0").map(|sym| *sym);
2368        let VmbFrameRevoke = __library.get(b"VmbFrameRevoke\0").map(|sym| *sym);
2369        let VmbFrameRevokeAll = __library.get(b"VmbFrameRevokeAll\0").map(|sym| *sym);
2370        let VmbCaptureStart = __library.get(b"VmbCaptureStart\0").map(|sym| *sym);
2371        let VmbCaptureEnd = __library.get(b"VmbCaptureEnd\0").map(|sym| *sym);
2372        let VmbCaptureFrameQueue = __library.get(b"VmbCaptureFrameQueue\0").map(|sym| *sym);
2373        let VmbCaptureFrameWait = __library.get(b"VmbCaptureFrameWait\0").map(|sym| *sym);
2374        let VmbCaptureQueueFlush = __library.get(b"VmbCaptureQueueFlush\0").map(|sym| *sym);
2375        let VmbTransportLayersList = __library.get(b"VmbTransportLayersList\0").map(|sym| *sym);
2376        let VmbInterfacesList = __library.get(b"VmbInterfacesList\0").map(|sym| *sym);
2377        let VmbMemoryRead = __library.get(b"VmbMemoryRead\0").map(|sym| *sym);
2378        let VmbMemoryWrite = __library.get(b"VmbMemoryWrite\0").map(|sym| *sym);
2379        let VmbSettingsSave = __library.get(b"VmbSettingsSave\0").map(|sym| *sym);
2380        let VmbSettingsLoad = __library.get(b"VmbSettingsLoad\0").map(|sym| *sym);
2381        let VmbChunkDataAccess = __library.get(b"VmbChunkDataAccess\0").map(|sym| *sym);
2382        Ok(VimbaC {
2383            __library,
2384            VmbVersionQuery,
2385            VmbStartup,
2386            VmbShutdown,
2387            VmbCamerasList,
2388            VmbCameraInfoQueryByHandle,
2389            VmbCameraInfoQuery,
2390            VmbCameraOpen,
2391            VmbCameraClose,
2392            VmbFeaturesList,
2393            VmbFeatureInfoQuery,
2394            VmbFeatureListSelected,
2395            VmbFeatureAccessQuery,
2396            VmbFeatureIntGet,
2397            VmbFeatureIntSet,
2398            VmbFeatureIntRangeQuery,
2399            VmbFeatureIntIncrementQuery,
2400            VmbFeatureIntValidValueSetQuery,
2401            VmbFeatureFloatGet,
2402            VmbFeatureFloatSet,
2403            VmbFeatureFloatRangeQuery,
2404            VmbFeatureFloatIncrementQuery,
2405            VmbFeatureEnumGet,
2406            VmbFeatureEnumSet,
2407            VmbFeatureEnumRangeQuery,
2408            VmbFeatureEnumIsAvailable,
2409            VmbFeatureEnumAsInt,
2410            VmbFeatureEnumAsString,
2411            VmbFeatureEnumEntryGet,
2412            VmbFeatureStringGet,
2413            VmbFeatureStringSet,
2414            VmbFeatureStringMaxlengthQuery,
2415            VmbFeatureBoolGet,
2416            VmbFeatureBoolSet,
2417            VmbFeatureCommandRun,
2418            VmbFeatureCommandIsDone,
2419            VmbFeatureRawGet,
2420            VmbFeatureRawSet,
2421            VmbFeatureRawLengthQuery,
2422            VmbFeatureInvalidationRegister,
2423            VmbFeatureInvalidationUnregister,
2424            VmbPayloadSizeGet,
2425            VmbFrameAnnounce,
2426            VmbFrameRevoke,
2427            VmbFrameRevokeAll,
2428            VmbCaptureStart,
2429            VmbCaptureEnd,
2430            VmbCaptureFrameQueue,
2431            VmbCaptureFrameWait,
2432            VmbCaptureQueueFlush,
2433            VmbTransportLayersList,
2434            VmbInterfacesList,
2435            VmbMemoryRead,
2436            VmbMemoryWrite,
2437            VmbSettingsSave,
2438            VmbSettingsLoad,
2439            VmbChunkDataAccess,
2440        })
2441    }
2442    #[doc = " \\brief Retrieve the version number of VmbC.\n\n This function can be called at anytime, even before the API is\n initialized. All other version numbers may be queried via feature access.\n\n \\param[out]  versionInfo             Pointer to the struct where version information resides\n \\param[in]   sizeofVersionInfo       Size of structure in bytes\n\n\n \\return An error code indicating success or the type of error.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback.\n\n \\retval ::VmbErrorStructSize         The given struct size is not valid for this version of the API\n\n \\retval ::VmbErrorBadParameter       \\p versionInfo is null.\n"]
2443    pub unsafe fn VmbVersionQuery(
2444        &self,
2445        versionInfo: *mut VmbVersionInfo_t,
2446        sizeofVersionInfo: VmbUint32_t,
2447    ) -> VmbError_t {
2448        (self
2449            .VmbVersionQuery
2450            .as_ref()
2451            .expect("Expected function, got error."))(versionInfo, sizeofVersionInfo)
2452    }
2453    #[doc = " \\brief Initializes the VmbC API.\n\n Note: This function must be called before any VmbC function other than ::VmbVersionQuery() is run.\n\n \\param[in]   pathConfiguration       A string containing a semicolon (Windows) or colon (other os) separated list of paths. The paths contain directories to search for .cti files,\n                                      paths to .cti files and optionally the path to a configuration xml file. If null is passed the parameter is the cti files found in the paths\n                                      the GENICAM_GENTL{32|64}_PATH environment variable are considered\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorAlready            This function was called before and call to ::VmbShutdown has been executed on a non-callback thread\n\n \\retval ::VmbErrorInvalidCall        If called from a callback or ::VmbShutdown is currently running\n\n \\retval ::VmbErrorXml                If parsing the settings xml is unsuccessful; a missing default xml file does not result in this error.\n\n \\retval ::VmbErrorTLNotFound         A transport layer that was marked as required was not found.\n\n \\retval ::VmbErrorNoTL               No transport layer was found on the system; note that some of the transport layers may have been filtered out via the settings file.\n\n \\retval ::VmbErrorIO                 A log file should be written according to the settings xml file, but this log file could not be opened.\n\n \\retval ::VmbErrorBadParameter       \\p pathConfiguration contains only separator and whitespace chars.\n"]
2454    pub unsafe fn VmbStartup(&self, pathConfiguration: *const VmbFilePathChar_t) -> VmbError_t {
2455        (self
2456            .VmbStartup
2457            .as_ref()
2458            .expect("Expected function, got error."))(pathConfiguration)
2459    }
2460    #[doc = " \\brief Perform a shutdown of the API.\n\n This frees some resources and deallocates all physical resources if applicable.\n\n The call is silently ignored, if executed from a callback.\n"]
2461    pub unsafe fn VmbShutdown(&self) {
2462        (self
2463            .VmbShutdown
2464            .as_ref()
2465            .expect("Expected function, got error."))()
2466    }
2467    #[doc = " List all the cameras that are currently visible to the API.\n\n Note: This function is usually called twice: once with an empty array to query the length\n       of the list, and then again with an array of the correct length.\n       If camera lists change between the calls, numFound may deviate from the query return.\n\n \\param[in,out]    cameraInfo             Array of VmbCameraInfo_t, allocated by the caller.\n                                          The camera list is copied here. May be null.\n\n \\param[in]        listLength             Number of entries in the callers cameraInfo array.\n\n \\param[in,out]    numFound               Number of cameras found. Can be more than listLength.\n\n \\param[in]        sizeofCameraInfo       Size of one VmbCameraInfo_t entry (if \\p cameraInfo is null, this parameter is ignored).\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p numFound is null\n\n \\retval ::VmbErrorStructSize         The given struct size is not valid for this API version and \\p cameraInfo is not null\n\n \\retval ::VmbErrorMoreData           The given list length was insufficient to hold all available entries"]
2468    pub unsafe fn VmbCamerasList(
2469        &self,
2470        cameraInfo: *mut VmbCameraInfo_t,
2471        listLength: VmbUint32_t,
2472        numFound: *mut VmbUint32_t,
2473        sizeofCameraInfo: VmbUint32_t,
2474    ) -> VmbError_t {
2475        (self
2476            .VmbCamerasList
2477            .as_ref()
2478            .expect("Expected function, got error."))(
2479            cameraInfo,
2480            listLength,
2481            numFound,
2482            sizeofCameraInfo,
2483        )
2484    }
2485    #[doc = " \\brief Retrieve information about a single camera given its handle.\n\n Note: Some information is only filled for opened cameras.\n\n \\param[in]       cameraHandle            The handle of the camera; both remote and local device handles are permitted\n\n \\param[in,out]   info                    Structure where information will be copied\n\n \\param[in]       sizeofCameraInfo        Size of the structure\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorStructSize         The given struct size is not valid for this API version\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadParameter       \\p info is null\n\n \\retval ::VmbErrorBadHandle          The handle does not correspond to a camera"]
2486    pub unsafe fn VmbCameraInfoQueryByHandle(
2487        &self,
2488        cameraHandle: VmbHandle_t,
2489        info: *mut VmbCameraInfo_t,
2490        sizeofCameraInfo: VmbUint32_t,
2491    ) -> VmbError_t {
2492        (self
2493            .VmbCameraInfoQueryByHandle
2494            .as_ref()
2495            .expect("Expected function, got error."))(cameraHandle, info, sizeofCameraInfo)
2496    }
2497    #[doc = " \\brief Retrieve information about a single camera given the ID of the camera.\n\n Note: Some information is only filled for opened cameras.\n\n \\param[in]       idString                ID of the camera\n\n \\param[in,out]   info                    Structure where information will be copied\n\n \\param[in]       sizeofCameraInfo        Size of the structure\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p idString or \\p info are null or \\p idString is the empty string\n\n \\retval ::VmbErrorNotFound           No camera with the given id is found\n\n \\retval ::VmbErrorStructSize         The given struct size is not valid for this API version"]
2498    pub unsafe fn VmbCameraInfoQuery(
2499        &self,
2500        idString: *const ::std::os::raw::c_char,
2501        info: *mut VmbCameraInfo_t,
2502        sizeofCameraInfo: VmbUint32_t,
2503    ) -> VmbError_t {
2504        (self
2505            .VmbCameraInfoQuery
2506            .as_ref()
2507            .expect("Expected function, got error."))(idString, info, sizeofCameraInfo)
2508    }
2509    #[doc = " \\brief Open the specified camera.\n\n \\param[in]   idString            ID of the camera.\n \\param[in]   accessMode          The desired access mode.\n \\param[out]  cameraHandle        The remote device handle of the camera, if opened successfully.\n\n A camera may be opened in a specific access mode, which determines\n the level of control you have on a camera.\n Examples for idString:\n\n \"DEV_81237473991\" for an ID given by a transport layer,\n \"169.254.12.13\" for an IP address,\n \"000F314C4BE5\" for a MAC address or\n \"DEV_1234567890\" for an ID as reported by Vmb\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInUse              The camera with the given ID is already opened\n\n \\retval ::VmbErrorInvalidCall        If called from frame callback or chunk access callback\n\n \\retval ::VmbErrorBadParameter       If \\p idString or \\p cameraHandle are null\n\n \\retval ::VmbErrorInvalidAccess      A camera with the given id was found, but could not be opened\n\n \\retval ::VmbErrorNotFound           The designated camera cannot be found"]
2510    pub unsafe fn VmbCameraOpen(
2511        &self,
2512        idString: *const ::std::os::raw::c_char,
2513        accessMode: VmbAccessMode_t,
2514        cameraHandle: *mut VmbHandle_t,
2515    ) -> VmbError_t {
2516        (self
2517            .VmbCameraOpen
2518            .as_ref()
2519            .expect("Expected function, got error."))(idString, accessMode, cameraHandle)
2520    }
2521    #[doc = " \\brief Close the specified camera.\n\n Depending on the access mode this camera was opened with, events are killed,\n callbacks are unregistered, and camera control is released.\n\n \\param[in]   cameraHandle        A valid camera handle\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInUse              The camera is currently in use with ::VmbChunkDataAccess\n\n \\retval ::VmbErrorBadHandle          The handle does not correspond to an open camera\n\n \\retval ::VmbErrorInvalidCall        If called from frame callback or chunk access callback"]
2522    pub unsafe fn VmbCameraClose(&self, cameraHandle: VmbHandle_t) -> VmbError_t {
2523        (self
2524            .VmbCameraClose
2525            .as_ref()
2526            .expect("Expected function, got error."))(cameraHandle)
2527    }
2528    #[doc = " \\brief List all the features for this entity.\n\n This function lists all implemented features, whether they are currently available or not.\n The list of features does not change as long as the entity is connected.\n\n This function is usually called twice: once with an empty list to query the length\n of the list, and then again with a list of the correct length.\n\n If ::VmbErrorMoreData is returned and \\p numFound is non-null, the total number of features has been written to \\p numFound.\n\n If there are more elements in \\p featureInfoList than features available, the remaining elements\n are filled with zero-initialized ::VmbFeatureInfo_t structs.\n\n \\param[in]   handle                  Handle for an entity that exposes features\n \\param[out]  featureInfoList         An array of ::VmbFeatureInfo_t to be filled by the API. May be null if \\p numFund is used for size query.\n \\param[in]   listLength              Number of ::VmbFeatureInfo_t elements provided\n \\param[out]  numFound                Number of ::VmbFeatureInfo_t elements found. May be null if \\p featureInfoList is not null.\n \\param[in]   sizeofFeatureInfo       Size of a ::VmbFeatureInfo_t entry\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorStructSize         The given struct size of ::VmbFeatureInfo_t is not valid for this version of the API\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       Both \\p featureInfoList and \\p numFound are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorMoreData           The given list length was insufficient to hold all available entries"]
2529    pub unsafe fn VmbFeaturesList(
2530        &self,
2531        handle: VmbHandle_t,
2532        featureInfoList: *mut VmbFeatureInfo_t,
2533        listLength: VmbUint32_t,
2534        numFound: *mut VmbUint32_t,
2535        sizeofFeatureInfo: VmbUint32_t,
2536    ) -> VmbError_t {
2537        (self
2538            .VmbFeaturesList
2539            .as_ref()
2540            .expect("Expected function, got error."))(
2541            handle,
2542            featureInfoList,
2543            listLength,
2544            numFound,
2545            sizeofFeatureInfo,
2546        )
2547    }
2548    #[doc = " \\brief Query information about the constant properties of a feature.\n\n Users provide a pointer to ::VmbFeatureInfo_t, which is then set to the internal representation.\n\n \\param[in]   handle                  Handle for an entity that exposes features\n \\param[in]   name                    Name of the feature\n \\param[out]  featureInfo             The feature info to query\n \\param[in]   sizeofFeatureInfo       Size of the structure\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorStructSize         The given struct size of ::VmbFeatureInfo_t is not valid for this version of the API\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p featureInfo are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           A feature with the given name does not exist.\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
2549    pub unsafe fn VmbFeatureInfoQuery(
2550        &self,
2551        handle: VmbHandle_t,
2552        name: *const ::std::os::raw::c_char,
2553        featureInfo: *mut VmbFeatureInfo_t,
2554        sizeofFeatureInfo: VmbUint32_t,
2555    ) -> VmbError_t {
2556        (self
2557            .VmbFeatureInfoQuery
2558            .as_ref()
2559            .expect("Expected function, got error."))(
2560            handle, name, featureInfo, sizeofFeatureInfo
2561        )
2562    }
2563    #[doc = " \\brief List all the features selected by a given feature for this module.\n\n This function lists all selected features, whether they are currently available or not.\n Features with selected features (\"selectors\") have no direct impact on the camera,\n but only influence the register address that selected features point to.\n The list of features does not change while the camera/interface is connected.\n This function is usually called twice: once with an empty array to query the length\n of the list, and then again with an array of the correct length.\n\n \\param[in]   handle                  Handle for an entity that exposes features\n \\param[in]   name                    Name of the feature\n \\param[out]  featureInfoList         An array of ::VmbFeatureInfo_t to be filled by the API. May be null if \\p numFound is used for size query.\n \\param[in]   listLength              Number of ::VmbFeatureInfo_t elements provided\n \\param[out]  numFound                Number of ::VmbFeatureInfo_t elements found. May be null if \\p featureInfoList is not null.\n \\param[in]   sizeofFeatureInfo       Size of a ::VmbFeatureInfo_t entry\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorBadParameter       \\p name is null or both \\p featureInfoList and \\p numFound are null\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorStructSize         The given struct size of ::VmbFeatureInfo_t is not valid for this version of the API\n\n \\retval ::VmbErrorMoreData           The given list length was insufficient to hold all available entries"]
2564    pub unsafe fn VmbFeatureListSelected(
2565        &self,
2566        handle: VmbHandle_t,
2567        name: *const ::std::os::raw::c_char,
2568        featureInfoList: *mut VmbFeatureInfo_t,
2569        listLength: VmbUint32_t,
2570        numFound: *mut VmbUint32_t,
2571        sizeofFeatureInfo: VmbUint32_t,
2572    ) -> VmbError_t {
2573        (self
2574            .VmbFeatureListSelected
2575            .as_ref()
2576            .expect("Expected function, got error."))(
2577            handle,
2578            name,
2579            featureInfoList,
2580            listLength,
2581            numFound,
2582            sizeofFeatureInfo,
2583        )
2584    }
2585    #[doc = " \\brief Return the dynamic read and write capabilities of this feature.\n\n The access mode of a feature may change. For example, if \"PacketSize\"\n is locked while image data is streamed, it is only readable.\n\n \\param[in]   handle              Handle for an entity that exposes features.\n \\param[in]   name                Name of the feature.\n \\param[out]  isReadable          Indicates if this feature is readable. May be null.\n \\param[out]  isWriteable         Indicates if this feature is writable. May be null.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name is null or both \\p isReadable and \\p isWriteable are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
2586    pub unsafe fn VmbFeatureAccessQuery(
2587        &self,
2588        handle: VmbHandle_t,
2589        name: *const ::std::os::raw::c_char,
2590        isReadable: *mut VmbBool_t,
2591        isWriteable: *mut VmbBool_t,
2592    ) -> VmbError_t {
2593        (self
2594            .VmbFeatureAccessQuery
2595            .as_ref()
2596            .expect("Expected function, got error."))(handle, name, isReadable, isWriteable)
2597    }
2598    #[doc = " \\brief Get the value of an integer feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[out]  value       Value to get\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p value are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Integer\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2599    pub unsafe fn VmbFeatureIntGet(
2600        &self,
2601        handle: VmbHandle_t,
2602        name: *const ::std::os::raw::c_char,
2603        value: *mut VmbInt64_t,
2604    ) -> VmbError_t {
2605        (self
2606            .VmbFeatureIntGet
2607            .as_ref()
2608            .expect("Expected function, got error."))(handle, name, value)
2609    }
2610    #[doc = " \\brief Set the value of an integer feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[in]   value       Value to set\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorInvalidCall        If called from feature callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       If \\p name is null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Integer\n\n \\retval ::VmbErrorInvalidAccess      The feature is unavailable or not writable\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently\n\n \\retval ::VmbErrorInvalidValue       If value is either out of bounds or not an increment of the minimum\n"]
2611    pub unsafe fn VmbFeatureIntSet(
2612        &self,
2613        handle: VmbHandle_t,
2614        name: *const ::std::os::raw::c_char,
2615        value: VmbInt64_t,
2616    ) -> VmbError_t {
2617        (self
2618            .VmbFeatureIntSet
2619            .as_ref()
2620            .expect("Expected function, got error."))(handle, name, value)
2621    }
2622    #[doc = " \\brief Query the range of an integer feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[out]  min         Minimum value to be returned. May be null.\n \\param[out]  max         Maximum value to be returned. May be null.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       If \\p name is null or both \\p min and \\p max are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature name is not Integer\n\n \\retval ::VmbErrorInvalidAccess      The range information is unavailable or not writable"]
2623    pub unsafe fn VmbFeatureIntRangeQuery(
2624        &self,
2625        handle: VmbHandle_t,
2626        name: *const ::std::os::raw::c_char,
2627        min: *mut VmbInt64_t,
2628        max: *mut VmbInt64_t,
2629    ) -> VmbError_t {
2630        (self
2631            .VmbFeatureIntRangeQuery
2632            .as_ref()
2633            .expect("Expected function, got error."))(handle, name, min, max)
2634    }
2635    #[doc = " \\brief Query the increment of an integer feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[out]  value       Value of the increment to get.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       If \\p name or \\p value are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Integer\n\n \\retval ::VmbErrorInvalidAccess      The information is unavailable or cannot be read"]
2636    pub unsafe fn VmbFeatureIntIncrementQuery(
2637        &self,
2638        handle: VmbHandle_t,
2639        name: *const ::std::os::raw::c_char,
2640        value: *mut VmbInt64_t,
2641    ) -> VmbError_t {
2642        (self
2643            .VmbFeatureIntIncrementQuery
2644            .as_ref()
2645            .expect("Expected function, got error."))(handle, name, value)
2646    }
2647    #[doc = " \\brief Retrieves info about the valid value set of an integer feature.\n\n Retrieves information about the set of valid values of an integer feature. If null is passed as buffer,\n only the size of the set is determined and written to bufferFilledCount; Otherwise the largest possible\n number of elements of the valid value set is copied to buffer.\n\n \\param[in]   handle                  The handle for the entity the feature information is retrieved from\n \\param[in]   name                    The name of the feature to retrieve the info for; if null is passed ::VmbErrorBadParameter is returned\n \\param[in]   buffer                  The array to copy the valid values to or null if only the size of the set is requested\n \\param[in]   bufferSize              The size of buffer; if buffer is null, the value is ignored\n \\param[out]  setSize                 The total number of elements in the set; the value is set, if ::VmbErrorMoreData is returned\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess                        The call was successful\n\n \\retval ::VmbErrorApiNotStarted                  ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter                   \\p name is null or both \\p buffer and \\p bufferFilledCount are null\n\n \\retval ::VmbErrorBadHandle                      The given handle is not valid\n\n \\retval ::VmbErrorNotFound                       The feature was not found\n\n \\retval ::VmbErrorWrongType                      The type of the feature is not Integer\n\n \\retval ::VmbErrorValidValueSetNotPresent        The feature does not provide a valid value set\n\n \\retval ::VmbErrorMoreData                       Some of data was retrieved successfully, but the size of buffer is insufficient to store all elements\n\n \\retval ::VmbErrorIncomplete                     The module the handle refers to is in a state where it cannot complete the request\n\n \\retval ::VmbErrorOther                          Some other issue occurred"]
2648    pub unsafe fn VmbFeatureIntValidValueSetQuery(
2649        &self,
2650        handle: VmbHandle_t,
2651        name: *const ::std::os::raw::c_char,
2652        buffer: *mut VmbInt64_t,
2653        bufferSize: VmbUint32_t,
2654        setSize: *mut VmbUint32_t,
2655    ) -> VmbError_t {
2656        (self
2657            .VmbFeatureIntValidValueSetQuery
2658            .as_ref()
2659            .expect("Expected function, got error."))(
2660            handle, name, buffer, bufferSize, setSize
2661        )
2662    }
2663    #[doc = " \\brief Get the value of a float feature.\n\n \\param[in]   handle  Handle for an entity that exposes features\n \\param[in]   name    Name of the feature\n \\param[out]  value   Value to get\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p value are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Float\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2664    pub unsafe fn VmbFeatureFloatGet(
2665        &self,
2666        handle: VmbHandle_t,
2667        name: *const ::std::os::raw::c_char,
2668        value: *mut f64,
2669    ) -> VmbError_t {
2670        (self
2671            .VmbFeatureFloatGet
2672            .as_ref()
2673            .expect("Expected function, got error."))(handle, name, value)
2674    }
2675    #[doc = " \\brief Set the value of a float feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[in]   value       Value to set\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from feature callback\n\n \\retval ::VmbErrorBadParameter       \\p name is null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Float\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently\n\n \\retval ::VmbErrorInvalidValue       If value is not within valid bounds"]
2676    pub unsafe fn VmbFeatureFloatSet(
2677        &self,
2678        handle: VmbHandle_t,
2679        name: *const ::std::os::raw::c_char,
2680        value: f64,
2681    ) -> VmbError_t {
2682        (self
2683            .VmbFeatureFloatSet
2684            .as_ref()
2685            .expect("Expected function, got error."))(handle, name, value)
2686    }
2687    #[doc = " \\brief Query the range of a float feature.\n\n Only one of the values may be queried if the other parameter is set to null,\n but if both parameters are null, an error is returned.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[out]  min         Minimum value to be returned. May be null.\n \\param[out]  max         Maximum value to be returned. May be null.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorBadParameter       \\p name is null or both \\p min and \\p max are null\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Float"]
2688    pub unsafe fn VmbFeatureFloatRangeQuery(
2689        &self,
2690        handle: VmbHandle_t,
2691        name: *const ::std::os::raw::c_char,
2692        min: *mut f64,
2693        max: *mut f64,
2694    ) -> VmbError_t {
2695        (self
2696            .VmbFeatureFloatRangeQuery
2697            .as_ref()
2698            .expect("Expected function, got error."))(handle, name, min, max)
2699    }
2700    #[doc = " \\brief Query the increment of a float feature.\n\n \\param[in]   handle              Handle for an entity that exposes features\n \\param[in]   name                Name of the feature\n \\param[out]  hasIncrement        `true` if this float feature has an increment.\n \\param[out]  value               Value of the increment to get.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorBadParameter       \\p name is null or both \\p value and \\p hasIncrement are null\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Float"]
2701    pub unsafe fn VmbFeatureFloatIncrementQuery(
2702        &self,
2703        handle: VmbHandle_t,
2704        name: *const ::std::os::raw::c_char,
2705        hasIncrement: *mut VmbBool_t,
2706        value: *mut f64,
2707    ) -> VmbError_t {
2708        (self
2709            .VmbFeatureFloatIncrementQuery
2710            .as_ref()
2711            .expect("Expected function, got error."))(handle, name, hasIncrement, value)
2712    }
2713    #[doc = " \\brief Get the value of an enumeration feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[out]  value       The current enumeration value. The returned value is a\n                          reference to the API value\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p value are null\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature featureName is not Enumeration\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature is not available\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
2714    pub unsafe fn VmbFeatureEnumGet(
2715        &self,
2716        handle: VmbHandle_t,
2717        name: *const ::std::os::raw::c_char,
2718        value: *mut *const ::std::os::raw::c_char,
2719    ) -> VmbError_t {
2720        (self
2721            .VmbFeatureEnumGet
2722            .as_ref()
2723            .expect("Expected function, got error."))(handle, name, value)
2724    }
2725    #[doc = " \\brief Set the value of an enumeration feature.\n\n \\param[in] handle    Handle for an entity that exposes features\n \\param[in] name      Name of the feature\n \\param[in] value     Value to set\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from feature callback\n\n \\retval ::VmbErrorBadParameter       If \\p name or \\p value are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Enumeration\n\n \\retval ::VmbErrorNotAvailable       The feature is not available\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorInvalidValue       \\p value is not a enum entry for the feature or the existing enum entry is currently not available"]
2726    pub unsafe fn VmbFeatureEnumSet(
2727        &self,
2728        handle: VmbHandle_t,
2729        name: *const ::std::os::raw::c_char,
2730        value: *const ::std::os::raw::c_char,
2731    ) -> VmbError_t {
2732        (self
2733            .VmbFeatureEnumSet
2734            .as_ref()
2735            .expect("Expected function, got error."))(handle, name, value)
2736    }
2737    #[doc = " \\brief Query the value range of an enumeration feature.\n\n All elements not filled with the names of enum entries by the function are set to null.\n\n \\param[in]   handle          Handle for an entity that exposes features\n \\param[in]   name            Name of the feature\n \\param[out]  nameArray       An array of enumeration value names; may be null if \\p numFound is used for size query\n \\param[in]   arrayLength     Number of elements in the array\n \\param[out]  numFound        Number of elements found; may be null if \\p nameArray is not null\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name is null or both \\p nameArray and \\p numFound are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorNotImplemented     The feature \\p name is not implemented\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Enumeration\n\n \\retval ::VmbErrorMoreData           The given array length was insufficient to hold all available entries"]
2738    pub unsafe fn VmbFeatureEnumRangeQuery(
2739        &self,
2740        handle: VmbHandle_t,
2741        name: *const ::std::os::raw::c_char,
2742        nameArray: *mut *const ::std::os::raw::c_char,
2743        arrayLength: VmbUint32_t,
2744        numFound: *mut VmbUint32_t,
2745    ) -> VmbError_t {
2746        (self
2747            .VmbFeatureEnumRangeQuery
2748            .as_ref()
2749            .expect("Expected function, got error."))(
2750            handle,
2751            name,
2752            nameArray,
2753            arrayLength,
2754            numFound,
2755        )
2756    }
2757    #[doc = " \\brief Check if a certain value of an enumeration is available.\n\n \\param[in]   handle              Handle for an entity that exposes features\n \\param[in]   name                Name of the feature\n \\param[in]   value               Value to check\n \\param[out]  isAvailable         Indicates if the given enumeration value is available\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name, \\p value or \\p isAvailable are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Enumeration\n\n \\retval ::VmbErrorNotImplemented     The feature \\p name is not implemented\n\n \\retval ::VmbErrorInvalidValue       There is no enum entry with string representation of \\p value for the given enum feature\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n"]
2758    pub unsafe fn VmbFeatureEnumIsAvailable(
2759        &self,
2760        handle: VmbHandle_t,
2761        name: *const ::std::os::raw::c_char,
2762        value: *const ::std::os::raw::c_char,
2763        isAvailable: *mut VmbBool_t,
2764    ) -> VmbError_t {
2765        (self
2766            .VmbFeatureEnumIsAvailable
2767            .as_ref()
2768            .expect("Expected function, got error."))(handle, name, value, isAvailable)
2769    }
2770    #[doc = " \\brief Get the integer value for a given enumeration string value.\n\n Converts a name of an enum member into an int value (\"Mono12Packed\" to 0x10C0006)\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the feature\n \\param[in]   value       The enumeration value to get the integer value for\n \\param[out]  intVal      The integer value for this enumeration entry\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       If \\p name, \\p value or \\p intVal are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           No feature with the given name was found\n\n \\retval ::VmbErrorNotImplemented     The feature \\p name is not implemented\n\n \\retval ::VmbErrorInvalidValue       \\p value is not the name of a enum entry for the feature\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Enumeration"]
2771    pub unsafe fn VmbFeatureEnumAsInt(
2772        &self,
2773        handle: VmbHandle_t,
2774        name: *const ::std::os::raw::c_char,
2775        value: *const ::std::os::raw::c_char,
2776        intVal: *mut VmbInt64_t,
2777    ) -> VmbError_t {
2778        (self
2779            .VmbFeatureEnumAsInt
2780            .as_ref()
2781            .expect("Expected function, got error."))(handle, name, value, intVal)
2782    }
2783    #[doc = " \\brief Get the enumeration string value for a given integer value.\n\n Converts an int value to a name of an enum member (e.g. 0x10C0006 to \"Mono12Packed\")\n\n \\param[in]   handle              Handle for an entity that exposes features\n \\param[in]   name                Name of the feature\n \\param[in]   intValue            The numeric value\n \\param[out]  stringValue         The string value for the numeric value\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p stringValue are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           No feature with the given name was found\n\n \\retval ::VmbErrorNotImplemented     No feature \\p name is not implemented\n\n \\retval ::VmbErrorInvalidValue       \\p intValue is not the int value of an enum entry\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Enumeration"]
2784    pub unsafe fn VmbFeatureEnumAsString(
2785        &self,
2786        handle: VmbHandle_t,
2787        name: *const ::std::os::raw::c_char,
2788        intValue: VmbInt64_t,
2789        stringValue: *mut *const ::std::os::raw::c_char,
2790    ) -> VmbError_t {
2791        (self
2792            .VmbFeatureEnumAsString
2793            .as_ref()
2794            .expect("Expected function, got error."))(handle, name, intValue, stringValue)
2795    }
2796    #[doc = " \\brief Get infos about an entry of an enumeration feature.\n\n \\param[in]   handle                      Handle for an entity that exposes features\n \\param[in]   featureName                 Name of the feature\n \\param[in]   entryName                   Name of the enum entry of that feature\n \\param[out]  featureEnumEntry            Infos about that entry returned by the API\n \\param[in]   sizeofFeatureEnumEntry      Size of the structure\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorStructSize         Size of ::VmbFeatureEnumEntry_t is not compatible with the API version\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p featureName, \\p entryName or \\p featureEnumEntry are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorNotImplemented     The feature \\p name is not implemented\n\n \\retval ::VmbErrorInvalidValue       There is no enum entry with a string representation of \\p entryName\n\n \\retval ::VmbErrorWrongType          The type of feature featureName is not Enumeration"]
2797    pub unsafe fn VmbFeatureEnumEntryGet(
2798        &self,
2799        handle: VmbHandle_t,
2800        featureName: *const ::std::os::raw::c_char,
2801        entryName: *const ::std::os::raw::c_char,
2802        featureEnumEntry: *mut VmbFeatureEnumEntry_t,
2803        sizeofFeatureEnumEntry: VmbUint32_t,
2804    ) -> VmbError_t {
2805        (self
2806            .VmbFeatureEnumEntryGet
2807            .as_ref()
2808            .expect("Expected function, got error."))(
2809            handle,
2810            featureName,
2811            entryName,
2812            featureEnumEntry,
2813            sizeofFeatureEnumEntry,
2814        )
2815    }
2816    #[doc = " \\brief Get the value of a string feature.\n\n This function is usually called twice: once with an empty buffer to query the length\n of the string, and then again with a buffer of the correct length.\n\n The value written to \\p sizeFilled includes the terminating 0 character of the string.\n\n If a \\p buffer is provided and there its  insufficient to hold all the data, the longest\n possible prefix fitting the buffer is copied to \\p buffer; the last element of \\p buffer is\n set to 0 case.\n\n \\param[in]   handle          Handle for an entity that exposes features\n \\param[in]   name            Name of the string feature\n \\param[out]  buffer          String buffer to fill. May be null if \\p sizeFilled is used for size query.\n \\param[in]   bufferSize      Size of the input buffer\n \\param[out]  sizeFilled      Size actually filled. May be null if \\p buffer is not null.\n\n\n \\return An error code indicating the type of error, if any.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name is null, both \\p buffer and \\p sizeFilled are null or \\p buffer is non-null and bufferSize is 0\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not String\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently\n\n \\retval ::VmbErrorMoreData           The given buffer size was too small"]
2817    pub unsafe fn VmbFeatureStringGet(
2818        &self,
2819        handle: VmbHandle_t,
2820        name: *const ::std::os::raw::c_char,
2821        buffer: *mut ::std::os::raw::c_char,
2822        bufferSize: VmbUint32_t,
2823        sizeFilled: *mut VmbUint32_t,
2824    ) -> VmbError_t {
2825        (self
2826            .VmbFeatureStringGet
2827            .as_ref()
2828            .expect("Expected function, got error."))(
2829            handle, name, buffer, bufferSize, sizeFilled
2830        )
2831    }
2832    #[doc = " \\brief Set the value of a string feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the string feature\n \\param[in]   value       Value to set\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from feature callback\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p value are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not String\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorInvalidValue       If length of value exceeded the maximum length\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2833    pub unsafe fn VmbFeatureStringSet(
2834        &self,
2835        handle: VmbHandle_t,
2836        name: *const ::std::os::raw::c_char,
2837        value: *const ::std::os::raw::c_char,
2838    ) -> VmbError_t {
2839        (self
2840            .VmbFeatureStringSet
2841            .as_ref()
2842            .expect("Expected function, got error."))(handle, name, value)
2843    }
2844    #[doc = " \\brief Get the maximum length of a string feature.\n\n The length reported does not include the terminating 0 char.\n\n Note: For some features the maximum size is not fixed and may change.\n\n \\param[in]   handle          Handle for an entity that exposes features\n \\param[in]   name            Name of the string feature\n \\param[out]  maxLength       Maximum length of this string feature\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p maxLength are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not String\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2845    pub unsafe fn VmbFeatureStringMaxlengthQuery(
2846        &self,
2847        handle: VmbHandle_t,
2848        name: *const ::std::os::raw::c_char,
2849        maxLength: *mut VmbUint32_t,
2850    ) -> VmbError_t {
2851        (self
2852            .VmbFeatureStringMaxlengthQuery
2853            .as_ref()
2854            .expect("Expected function, got error."))(handle, name, maxLength)
2855    }
2856    #[doc = " \\brief Get the value of a boolean feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the boolean feature\n \\param[out]  value       Value to be read\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p value are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           If feature is not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Boolean\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
2857    pub unsafe fn VmbFeatureBoolGet(
2858        &self,
2859        handle: VmbHandle_t,
2860        name: *const ::std::os::raw::c_char,
2861        value: *mut VmbBool_t,
2862    ) -> VmbError_t {
2863        (self
2864            .VmbFeatureBoolGet
2865            .as_ref()
2866            .expect("Expected function, got error."))(handle, name, value)
2867    }
2868    #[doc = " \\brief Set the value of a boolean feature.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the boolean feature\n \\param[in]   value       Value to write\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name is null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           If the feature is not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Boolean\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently\n\n \\retval ::VmbErrorInvalidValue       If value is not within valid bounds\n\n \\retval ::VmbErrorInvalidCall        If called from feature callback"]
2869    pub unsafe fn VmbFeatureBoolSet(
2870        &self,
2871        handle: VmbHandle_t,
2872        name: *const ::std::os::raw::c_char,
2873        value: VmbBool_t,
2874    ) -> VmbError_t {
2875        (self
2876            .VmbFeatureBoolSet
2877            .as_ref()
2878            .expect("Expected function, got error."))(handle, name, value)
2879    }
2880    #[doc = " \\brief Run a feature command.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the command feature\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorInvalidCall        If called from a feature callback or chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name is null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           Feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Command\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
2881    pub unsafe fn VmbFeatureCommandRun(
2882        &self,
2883        handle: VmbHandle_t,
2884        name: *const ::std::os::raw::c_char,
2885    ) -> VmbError_t {
2886        (self
2887            .VmbFeatureCommandRun
2888            .as_ref()
2889            .expect("Expected function, got error."))(handle, name)
2890    }
2891    #[doc = " \\brief Check if a feature command is done.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the command feature\n \\param[out]  isDone      State of the command.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadParameter       If \\p name or \\p isDone are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           Feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Command\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2892    pub unsafe fn VmbFeatureCommandIsDone(
2893        &self,
2894        handle: VmbHandle_t,
2895        name: *const ::std::os::raw::c_char,
2896        isDone: *mut VmbBool_t,
2897    ) -> VmbError_t {
2898        (self
2899            .VmbFeatureCommandIsDone
2900            .as_ref()
2901            .expect("Expected function, got error."))(handle, name, isDone)
2902    }
2903    #[doc = " \\brief Read the memory contents of an area given by a feature name.\n\n This feature type corresponds to a top-level \"Register\" feature in GenICam.\n Data transfer is split up by the transport layer if the feature length is too large.\n You can get the size of the memory area addressed by the feature name by ::VmbFeatureRawLengthQuery().\n\n \\param[in]   handle          Handle for an entity that exposes features\n \\param[in]   name            Name of the raw feature\n \\param[out]  buffer          Buffer to fill\n \\param[in]   bufferSize      Size of the buffer to be filled\n \\param[out]  sizeFilled      Number of bytes actually filled\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p name, \\p buffer or \\p sizeFilled are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           Feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Register\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2904    pub unsafe fn VmbFeatureRawGet(
2905        &self,
2906        handle: VmbHandle_t,
2907        name: *const ::std::os::raw::c_char,
2908        buffer: *mut ::std::os::raw::c_char,
2909        bufferSize: VmbUint32_t,
2910        sizeFilled: *mut VmbUint32_t,
2911    ) -> VmbError_t {
2912        (self
2913            .VmbFeatureRawGet
2914            .as_ref()
2915            .expect("Expected function, got error."))(
2916            handle, name, buffer, bufferSize, sizeFilled
2917        )
2918    }
2919    #[doc = " \\brief Write to a memory area given by a feature name.\n\n This feature type corresponds to a first-level \"Register\" node in the XML file.\n Data transfer is split up by the transport layer if the feature length is too large.\n You can get the size of the memory area addressed by the feature name by ::VmbFeatureRawLengthQuery().\n\n \\param[in]   handle          Handle for an entity that exposes features\n \\param[in]   name            Name of the raw feature\n \\param[in]   buffer          Data buffer to use\n \\param[in]   bufferSize      Size of the buffer\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from feature callback or a chunk access callback\n\n \\retval ::VmbErrorBadParameter       \\p name or \\p buffer are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           Feature was not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Register\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2920    pub unsafe fn VmbFeatureRawSet(
2921        &self,
2922        handle: VmbHandle_t,
2923        name: *const ::std::os::raw::c_char,
2924        buffer: *const ::std::os::raw::c_char,
2925        bufferSize: VmbUint32_t,
2926    ) -> VmbError_t {
2927        (self
2928            .VmbFeatureRawSet
2929            .as_ref()
2930            .expect("Expected function, got error."))(handle, name, buffer, bufferSize)
2931    }
2932    #[doc = " \\brief Get the length of a raw feature for memory transfers.\n\n This feature type corresponds to a first-level \"Register\" node in the XML file.\n\n \\param[in]   handle      Handle for an entity that exposes features\n \\param[in]   name        Name of the raw feature\n \\param[out]  length      Length of the raw feature area (in bytes)\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       If \\p name or \\p length are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           Feature not found\n\n \\retval ::VmbErrorWrongType          The type of feature \\p name is not Register\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorNotImplemented     The feature isn't implemented\n\n \\retval ::VmbErrorNotAvailable       The feature isn't available currently"]
2933    pub unsafe fn VmbFeatureRawLengthQuery(
2934        &self,
2935        handle: VmbHandle_t,
2936        name: *const ::std::os::raw::c_char,
2937        length: *mut VmbUint32_t,
2938    ) -> VmbError_t {
2939        (self
2940            .VmbFeatureRawLengthQuery
2941            .as_ref()
2942            .expect("Expected function, got error."))(handle, name, length)
2943    }
2944    #[doc = " \\brief Register a VmbInvalidationCallback callback for feature invalidation signaling.\n\n Any feature change, either of its value or of its access state, may be tracked\n by registering an invalidation callback.\n Registering multiple callbacks for one feature invalidation event is possible because\n only the combination of handle, name, and callback is used as key. If the same\n combination of handle, name, and callback is registered a second time, the callback remains\n registered and the context is overwritten with \\p userContext.\n\n \\param[in]   handle              Handle for an entity that emits events\n \\param[in]   name                Name of the event\n \\param[in]   callback            Callback to be run when invalidation occurs\n \\param[in]   userContext         User context passed to function\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadParameter       If \\p name or \\p callback are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           No feature with \\p name was found for the module associated with \\p handle\n\n \\retval ::VmbErrorNotImplemented     The feature \\p name is not implemented\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
2945    pub unsafe fn VmbFeatureInvalidationRegister(
2946        &self,
2947        handle: VmbHandle_t,
2948        name: *const ::std::os::raw::c_char,
2949        callback: VmbInvalidationCallback,
2950        userContext: *mut ::std::os::raw::c_void,
2951    ) -> VmbError_t {
2952        (self
2953            .VmbFeatureInvalidationRegister
2954            .as_ref()
2955            .expect("Expected function, got error."))(handle, name, callback, userContext)
2956    }
2957    #[doc = " \\brief Unregister a previously registered feature invalidation callback.\n\n Since multiple callbacks may be registered for a feature invalidation event,\n a combination of handle, name, and callback is needed for unregistering, too.\n\n \\param[in] handle          Handle for an entity that emits events\n \\param[in] name            Name of the event\n \\param[in] callback        Callback to be removed\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadParameter       If \\p name or \\p callback are null\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           No feature with \\p name was found for the module associated with \\p handle or there was no listener to unregister\n\n \\retval ::VmbErrorNotImplemented     The feature \\p name is not implemented\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
2958    pub unsafe fn VmbFeatureInvalidationUnregister(
2959        &self,
2960        handle: VmbHandle_t,
2961        name: *const ::std::os::raw::c_char,
2962        callback: VmbInvalidationCallback,
2963    ) -> VmbError_t {
2964        (self
2965            .VmbFeatureInvalidationUnregister
2966            .as_ref()
2967            .expect("Expected function, got error."))(handle, name, callback)
2968    }
2969    #[doc = " \\brief Get the necessary payload size for buffer allocation.\n\n Returns the payload size necessary for buffer allocation as queried from the Camera.\n If the stream module provides a PayloadSize feature, this value will be returned instead.\n If a camera handle is passed, the payload size refers to the stream with index 0.\n\n \\param[in]    handle          Camera or stream handle\n \\param[out]   payloadSize     Payload Size\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess             If no error\n\n \\retval ::VmbErrorApiNotStarted       ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle           The given handle is not valid\n\n \\retval ::VmbErrorBadParameter        \\p payloadSize is null"]
2970    pub unsafe fn VmbPayloadSizeGet(
2971        &self,
2972        handle: VmbHandle_t,
2973        payloadSize: *mut VmbUint32_t,
2974    ) -> VmbError_t {
2975        (self
2976            .VmbPayloadSizeGet
2977            .as_ref()
2978            .expect("Expected function, got error."))(handle, payloadSize)
2979    }
2980    #[doc = " \\brief Announce frames to the API that may be queued for frame capturing later.\n\n Allows some preparation for frames like DMA preparation depending on the transport layer.\n The order in which the frames are announced is not taken into consideration by the API.\n If frame.buffer is null, the allocation is done by the transport layer.\n\n \\param[in]   handle          Camera or stream handle\n \\param[in]   frame           Frame buffer to announce\n \\param[in]   sizeofFrame     Size of the frame structure\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorStructSize         The given struct size is not valid for this version of the API\n\n \\retval ::VmbErrorInvalidCall        If called from a frame callback or a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given camera handle is not valid\n\n \\retval ::VmbErrorBadParameter       \\p frame is null\n\n \\retval ::VmbErrorAlready            The frame has already been announced\n\n \\retval ::VmbErrorBusy               The underlying transport layer does not support announcing frames during acquisition\n\n \\retval ::VmbErrorMoreData           The given buffer size is invalid (usually 0)"]
2981    pub unsafe fn VmbFrameAnnounce(
2982        &self,
2983        handle: VmbHandle_t,
2984        frame: *const VmbFrame_t,
2985        sizeofFrame: VmbUint32_t,
2986    ) -> VmbError_t {
2987        (self
2988            .VmbFrameAnnounce
2989            .as_ref()
2990            .expect("Expected function, got error."))(handle, frame, sizeofFrame)
2991    }
2992    #[doc = " \\brief Revoke a frame from the API.\n\n The referenced frame is removed from the pool of frames for capturing images.\n\n \\param[in]   handle      Handle for a camera or stream\n \\param[in]   frame       Frame buffer to be removed from the list of announced frames\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorInvalidCall        If called from a frame callback or a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorBadParameter       The given frame pointer is not valid\n\n \\retval ::VmbErrorBusy               The underlying transport layer does not support revoking frames during acquisition\n\n \\retval ::VmbErrorNotFound           The given frame could not be found for the stream\n\n \\retval ::VmbErrorInUse              The frame is currently still in use (e.g. in a running frame callback)"]
2993    pub unsafe fn VmbFrameRevoke(
2994        &self,
2995        handle: VmbHandle_t,
2996        frame: *const VmbFrame_t,
2997    ) -> VmbError_t {
2998        (self
2999            .VmbFrameRevoke
3000            .as_ref()
3001            .expect("Expected function, got error."))(handle, frame)
3002    }
3003    #[doc = " \\brief Revoke all frames assigned to a certain stream or camera.\n\n In case of an failure some of the frames may have been revoked. To prevent this it is recommended to call\n ::VmbCaptureQueueFlush for the same handle before invoking this function.\n\n \\param[in]   handle      Handle for a stream or camera\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorInvalidCall        If called from a frame callback or a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          \\p handle is not valid\n\n \\retval ::VmbErrorInUse              One of the frames of the stream is still in use"]
3004    pub unsafe fn VmbFrameRevokeAll(&self, handle: VmbHandle_t) -> VmbError_t {
3005        (self
3006            .VmbFrameRevokeAll
3007            .as_ref()
3008            .expect("Expected function, got error."))(handle)
3009    }
3010    #[doc = " \\brief Prepare the API for incoming frames.\n\n \\param[in]   handle      Handle for a camera or a stream\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess                    If no error\n\n \\retval ::VmbErrorInvalidCall                If called from a frame callback or a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted              ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle                  The given handle is not valid; this includes the camera no longer being open\n\n \\retval ::VmbErrorInvalidAccess              Operation is invalid with the current access mode\n\n \\retval ::VmbErrorMoreData                   The buffer size of the announced frames is insufficient\n\n \\retval ::VmbErrorInsufficientBufferCount    The operation requires more buffers to be announced; see the StreamAnnounceBufferMinimum stream feature\n\n \\retval ::VmbErrorAlready                    Capturing was already started"]
3011    pub unsafe fn VmbCaptureStart(&self, handle: VmbHandle_t) -> VmbError_t {
3012        (self
3013            .VmbCaptureStart
3014            .as_ref()
3015            .expect("Expected function, got error."))(handle)
3016    }
3017    #[doc = " \\brief Stop the API from being able to receive frames.\n\n Consequences of VmbCaptureEnd():\n The frame callback will not be called anymore\n\n \\note This function waits for the completion of the last callback for the current capture.\n       If the callback does not return in finite time, this function may not return in finite time either.\n\n \\param[in]   handle      Handle for a stream or camera\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorInvalidCall        If called from a frame callback or a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          \\p handle is not valid"]
3018    pub unsafe fn VmbCaptureEnd(&self, handle: VmbHandle_t) -> VmbError_t {
3019        (self
3020            .VmbCaptureEnd
3021            .as_ref()
3022            .expect("Expected function, got error."))(handle)
3023    }
3024    #[doc = " \\brief Queue frames that may be filled during frame capturing.\n\n The given frame is put into a queue that will be filled sequentially.\n The order in which the frames are filled is determined by the order in which they are queued.\n If the frame was announced with ::VmbFrameAnnounce() before, the application\n has to ensure that the frame is also revoked by calling ::VmbFrameRevoke() or\n ::VmbFrameRevokeAll() when cleaning up.\n\n \\warning \\p callback should to return in finite time. Otherwise ::VmbCaptureEnd and\n          operations resulting in the stream being closed may not return.\n\n \\param[in]   handle              Handle of a camera or stream\n \\param[in]   frame               Pointer to an already announced frame\n \\param[in]   callback            Callback to be run when the frame is complete. Null is OK.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadParameter       If \\p frame is null\n\n \\retval ::VmbErrorBadHandle          No stream related to \\p handle could be found\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInternalFault      The buffer or bufferSize members of \\p frame have been set to null or zero respectively\n\n \\retval ::VmbErrorNotFound           The frame is not a frame announced for the given stream\n\n \\retval ::VmbErrorAlready            The frame is currently queued"]
3025    pub unsafe fn VmbCaptureFrameQueue(
3026        &self,
3027        handle: VmbHandle_t,
3028        frame: *const VmbFrame_t,
3029        callback: VmbFrameCallback,
3030    ) -> VmbError_t {
3031        (self
3032            .VmbCaptureFrameQueue
3033            .as_ref()
3034            .expect("Expected function, got error."))(handle, frame, callback)
3035    }
3036    #[doc = " \\brief Wait for a queued frame to be filled (or dequeued).\n\n The frame needs to be queued and not filled for the function to complete successfully.\n\n If a camera handle is passed, the first stream of the camera is used.\n\n \\param[in]   handle          Handle of a camera or stream\n \\param[in]   frame           Pointer to an already announced and queued frame\n \\param[in]   timeout         Timeout (in milliseconds)\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadParameter       If \\p frame or the buffer of \\p frame are null or the the buffer size of \\p frame is 0\n\n \\retval ::VmbErrorBadHandle          No stream related to \\p handle could be found\n\n \\retval ::VmbErrorNotFound           The frame is not one currently queued for the stream\n\n \\retval ::VmbErrorAlready            The frame has already been dequeued or VmbCaptureFrameWait has been called already for this frame\n\n \\retval ::VmbErrorInUse              If the frame was queued with a frame callback\n\n \\retval ::VmbErrorTimeout            Call timed out\n\n \\retval ::VmbErrorIncomplete         Capture is not active when the function is called"]
3037    pub unsafe fn VmbCaptureFrameWait(
3038        &self,
3039        handle: VmbHandle_t,
3040        frame: *const VmbFrame_t,
3041        timeout: VmbUint32_t,
3042    ) -> VmbError_t {
3043        (self
3044            .VmbCaptureFrameWait
3045            .as_ref()
3046            .expect("Expected function, got error."))(handle, frame, timeout)
3047    }
3048    #[doc = " \\brief Flush the capture queue.\n\n Control of all the currently queued frames will be returned to the user,\n leaving no frames in the capture queue.\n After this call, no frame notification will occur until frames are queued again\n\n Frames need to be revoked separately, if desired.\n\n This function can only succeeds, if no capture is currently active.\n If ::VmbCaptureStart has been called for the stream, but no successful call to ::VmbCaptureEnd\n happened, the function fails with error code ::VmbErrorInUse.\n\n \\param[in]   handle  The handle of the camera or stream to flush.\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadHandle          No stream related to \\p handle could be found.\n\n \\retval ::VmbErrorInUse              There is currently an active capture"]
3049    pub unsafe fn VmbCaptureQueueFlush(&self, handle: VmbHandle_t) -> VmbError_t {
3050        (self
3051            .VmbCaptureQueueFlush
3052            .as_ref()
3053            .expect("Expected function, got error."))(handle)
3054    }
3055    #[doc = " \\brief List all the transport layers that are used by the API.\n\n Note: This function is usually called twice: once with an empty array to query the length\n       of the list, and then again with an array of the correct length.\n\n \\param[in,out]   transportLayerInfo              Array of VmbTransportLayerInfo_t, allocated by the caller.\n                                                  The transport layer list is copied here. May be null.\n \\param[in]       listLength                      Number of entries in the caller's transportLayerInfo array.\n \\param[in,out]   numFound                        Number of transport layers found. May be more than listLength.\n \\param[in]       sizeofTransportLayerInfo        Size of one ::VmbTransportLayerInfo_t entry (ignored if \\p transportLayerInfo is null).\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInternalFault      An internal fault occurred\n\n \\retval ::VmbErrorNotImplemented     One of the transport layers does not provide the required information\n\n \\retval ::VmbErrorBadParameter       \\p numFound is null\n\n \\retval ::VmbErrorStructSize         The given struct size is not valid for this API version\n\n \\retval ::VmbErrorMoreData           The given list length was insufficient to hold all available entries"]
3056    pub unsafe fn VmbTransportLayersList(
3057        &self,
3058        transportLayerInfo: *mut VmbTransportLayerInfo_t,
3059        listLength: VmbUint32_t,
3060        numFound: *mut VmbUint32_t,
3061        sizeofTransportLayerInfo: VmbUint32_t,
3062    ) -> VmbError_t {
3063        (self
3064            .VmbTransportLayersList
3065            .as_ref()
3066            .expect("Expected function, got error."))(
3067            transportLayerInfo,
3068            listLength,
3069            numFound,
3070            sizeofTransportLayerInfo,
3071        )
3072    }
3073    #[doc = " \\brief List all the interfaces that are currently visible to the API.\n\n Note: All the interfaces known via GenICam transport layers are listed by this\n       command and filled into the provided array. Interfaces may correspond to\n       adapter cards or frame grabber cards.\n       This function is usually called twice: once with an empty array to query the length\n       of the list, and then again with an array of the correct length.\n\n \\param[in,out]   interfaceInfo           Array of ::VmbInterfaceInfo_t, allocated by the caller.\n                                          The interface list is copied here. May be null.\n\n \\param[in]       listLength              Number of entries in the callers interfaceInfo array\n\n \\param[in,out]   numFound                Number of interfaces found. Can be more than listLength\n\n \\param[in]       sizeofInterfaceInfo     Size of one ::VmbInterfaceInfo_t entry\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            The call was successful\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter       \\p numFound is null\n\n \\retval ::VmbErrorStructSize         The given struct size is not valid for this API version\n\n \\retval ::VmbErrorMoreData           The given list length was insufficient to hold all available entries"]
3074    pub unsafe fn VmbInterfacesList(
3075        &self,
3076        interfaceInfo: *mut VmbInterfaceInfo_t,
3077        listLength: VmbUint32_t,
3078        numFound: *mut VmbUint32_t,
3079        sizeofInterfaceInfo: VmbUint32_t,
3080    ) -> VmbError_t {
3081        (self
3082            .VmbInterfacesList
3083            .as_ref()
3084            .expect("Expected function, got error."))(
3085            interfaceInfo,
3086            listLength,
3087            numFound,
3088            sizeofInterfaceInfo,
3089        )
3090    }
3091    #[doc = " \\brief Read an array of bytes.\n\n \\param[in]   handle              Handle for an entity that allows memory access\n \\param[in]   address             Address to be used for this read operation\n \\param[in]   bufferSize          Size of the data buffer to read\n \\param[out]  dataBuffer          Buffer to be filled\n \\param[out]  sizeComplete        Size of the data actually read\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode"]
3092    pub unsafe fn VmbMemoryRead(
3093        &self,
3094        handle: VmbHandle_t,
3095        address: VmbUint64_t,
3096        bufferSize: VmbUint32_t,
3097        dataBuffer: *mut ::std::os::raw::c_char,
3098        sizeComplete: *mut VmbUint32_t,
3099    ) -> VmbError_t {
3100        (self
3101            .VmbMemoryRead
3102            .as_ref()
3103            .expect("Expected function, got error."))(
3104            handle,
3105            address,
3106            bufferSize,
3107            dataBuffer,
3108            sizeComplete,
3109        )
3110    }
3111    #[doc = " \\brief Write an array of bytes.\n\n \\param[in]   handle              Handle for an entity that allows memory access\n \\param[in]   address             Address to be used for this read operation\n \\param[in]   bufferSize          Size of the data buffer to write\n \\param[in]   dataBuffer          Data to write\n \\param[out]  sizeComplete        Number of bytes successfully written; if an\n                                  error occurs this is less than bufferSize\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorMoreData           Not all data were written; see sizeComplete value for the number of bytes written"]
3112    pub unsafe fn VmbMemoryWrite(
3113        &self,
3114        handle: VmbHandle_t,
3115        address: VmbUint64_t,
3116        bufferSize: VmbUint32_t,
3117        dataBuffer: *const ::std::os::raw::c_char,
3118        sizeComplete: *mut VmbUint32_t,
3119    ) -> VmbError_t {
3120        (self
3121            .VmbMemoryWrite
3122            .as_ref()
3123            .expect("Expected function, got error."))(
3124            handle,
3125            address,
3126            bufferSize,
3127            dataBuffer,
3128            sizeComplete,
3129        )
3130    }
3131    #[doc = " \\brief Write the current features related to a module to a xml file\n\n Camera must be opened beforehand and function needs corresponding handle.\n With given filename parameter path and name of XML file can be determined.\n Additionally behaviour of function can be set with providing 'persistent struct'.\n\n \\param[in]   handle              Handle for an entity that allows register access\n \\param[in]   filePath            The path to the file to save the settings to; relative paths are relative to the current working directory\n \\param[in]   settings            Settings struct; if null the default settings are used\n                                  (persist features except LUT for the remote device, maximum 5 iterations, logging only errors)\n \\param[in]   sizeofSettings      Size of settings struct\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorBadParameter       If \\p filePath is or the settings struct is invalid\n\n \\retval ::VmbErrorStructSize         If sizeofSettings the struct size does not match the size of the struct expected by the API\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorNotFound           The provided handle is insufficient to identify all the modules that should be saved\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorIO                 There was an issue writing the file."]
3132    pub unsafe fn VmbSettingsSave(
3133        &self,
3134        handle: VmbHandle_t,
3135        filePath: *const VmbFilePathChar_t,
3136        settings: *const VmbFeaturePersistSettings_t,
3137        sizeofSettings: VmbUint32_t,
3138    ) -> VmbError_t {
3139        (self
3140            .VmbSettingsSave
3141            .as_ref()
3142            .expect("Expected function, got error."))(
3143            handle, filePath, settings, sizeofSettings
3144        )
3145    }
3146    #[doc = " \\brief Load all feature values from xml file to device-related modules.\n\n The modules must be opened beforehand. If the handle is non-null it must be a valid handle other than the Vmb API handle.\n Additionally behaviour of function can be set with providing \\p settings . Note that even in case of an failure some or all of the features\n may have been set for some of the modules.\n\n The error code ::VmbErrorRetriesExceeded only indicates that the number of retries was insufficient\n to restore the features. Even if the features could not be restored for one of the modules, restoring the features is not aborted but the process\n continues for other modules, if present.\n\n \\param[in]   handle              Handle related to the modules to write the values to;\n                                  may be null to indicate that modules should be identified based on the information provided in the input file\n\n \\param[in]   filePath            The path to the file to load the settings from; relative paths are relative to the current working directory\n \\param[in]   settings            Settings struct; pass null to use the default settings. If the \\p maxIterations field is 0, the number of\n                                  iterations is determined by the value loaded from the xml file\n \\param[in]   sizeofSettings      Size of the settings struct\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess            If no error\n\n \\retval ::VmbErrorApiNotStarted      ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorInvalidCall        If called from a chunk access callback\n\n \\retval ::VmbErrorStructSize         If sizeofSettings the struct size does not match the size of the struct expected by the API\n\n \\retval ::VmbErrorWrongType          \\p handle is neither null nor a transport layer, interface, local device, remote device or stream handle\n\n \\retval ::VmbErrorBadHandle          The given handle is not valid\n\n \\retval ::VmbErrorAmbiguous          The modules to restore the settings for cannot be uniquely identified based on the information available\n\n \\retval ::VmbErrorNotFound           The provided handle is insufficient to identify all the modules that should be restored\n\n \\retval ::VmbErrorRetriesExceeded    Some or all of the features could not be restored with the max iterations specified\n\n \\retval ::VmbErrorInvalidAccess      Operation is invalid with the current access mode\n\n \\retval ::VmbErrorBadParameter       If \\p filePath is null or the settings struct is invalid\n\n \\retval ::VmbErrorIO                 There was an issue with reading the file."]
3147    pub unsafe fn VmbSettingsLoad(
3148        &self,
3149        handle: VmbHandle_t,
3150        filePath: *const VmbFilePathChar_t,
3151        settings: *const VmbFeaturePersistSettings_t,
3152        sizeofSettings: VmbUint32_t,
3153    ) -> VmbError_t {
3154        (self
3155            .VmbSettingsLoad
3156            .as_ref()
3157            .expect("Expected function, got error."))(
3158            handle, filePath, settings, sizeofSettings
3159        )
3160    }
3161    #[doc = " \\brief Access chunk data for a frame.\n\n This function can only succeed if the given frame has been filled by the API.\n\n \\param[in] frame                  A pointer to a filled frame that is announced\n \\param[in] chunkAccessCallback    A callback to access the chunk data from\n \\param[in] userContext            A pointer to pass to the callback\n\n\n \\return An error code indicating success or the type of error that occurred.\n\n \\retval ::VmbErrorSuccess                The call was successful\n\n \\retval ::VmbErrorInvalidCall            If called from a chunk access callback or a feature callback\n\n \\retval ::VmbErrorApiNotStarted          ::VmbStartup() was not called before the current command\n\n \\retval ::VmbErrorBadParameter           \\p frame or \\p chunkAccessCallback are null\n\n \\retval ::VmbErrorInUse                  The frame state does not allow for retrieval of chunk data\n                                          (e.g. the frame could have been reenqueued before the chunk access could happen).\n\n \\retval ::VmbErrorNotFound               The frame is currently not announced for a stream\n\n \\retval ::VmbErrorDeviceNotOpen          If the device the frame was received from is no longer open\n\n \\retval ::VmbErrorNoChunkData            \\p frame does not contain chunk data\n\n \\retval ::VmbErrorParsingChunkData       The chunk data does not adhere to the expected format\n\n \\retval ::VmbErrorUserCallbackException  The callback threw an exception\n\n \\retval ::VmbErrorFeaturesUnavailable    The feature description for the remote device is unavailable\n\n \\retval ::VmbErrorCustom                 The minimum a user defined error code returned by the callback"]
3162    pub unsafe fn VmbChunkDataAccess(
3163        &self,
3164        frame: *const VmbFrame_t,
3165        chunkAccessCallback: VmbChunkAccessCallback,
3166        userContext: *mut ::std::os::raw::c_void,
3167    ) -> VmbError_t {
3168        (self
3169            .VmbChunkDataAccess
3170            .as_ref()
3171            .expect("Expected function, got error."))(
3172            frame, chunkAccessCallback, userContext
3173        )
3174    }
3175}