1#[repr(C)]
21#[derive(Debug, Copy, Clone)]
22pub struct FILE { _unused: [u8; 0] }
23
24#[repr(C)]
25#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
26pub struct __BindgenBitfieldUnit<Storage> {
27 storage: Storage,
28}
29impl<Storage> __BindgenBitfieldUnit<Storage> {
30 #[inline]
31 pub const fn new(storage: Storage) -> Self {
32 Self { storage }
33 }
34}
35impl<Storage> __BindgenBitfieldUnit<Storage>
36where
37 Storage: AsRef<[u8]> + AsMut<[u8]>,
38{
39 #[inline]
40 fn extract_bit(byte: u8, index: usize) -> bool {
41 let bit_index = if cfg!(target_endian = "big") {
42 7 - (index % 8)
43 } else {
44 index % 8
45 };
46 let mask = 1 << bit_index;
47 byte & mask == mask
48 }
49 #[inline]
50 pub fn get_bit(&self, index: usize) -> bool {
51 debug_assert!(index / 8 < self.storage.as_ref().len());
52 let byte_index = index / 8;
53 let byte = self.storage.as_ref()[byte_index];
54 Self::extract_bit(byte, index)
55 }
56 #[inline]
57 pub unsafe fn raw_get_bit(this: *const Self, index: usize) -> bool {
58 debug_assert!(index / 8 < core::mem::size_of::<Storage>());
59 let byte_index = index / 8;
60 let byte = *(core::ptr::addr_of!((*this).storage) as *const u8).offset(byte_index as isize);
61 Self::extract_bit(byte, index)
62 }
63 #[inline]
64 fn change_bit(byte: u8, index: usize, val: bool) -> u8 {
65 let bit_index = if cfg!(target_endian = "big") {
66 7 - (index % 8)
67 } else {
68 index % 8
69 };
70 let mask = 1 << bit_index;
71 if val {
72 byte | mask
73 } else {
74 byte & !mask
75 }
76 }
77 #[inline]
78 pub fn set_bit(&mut self, index: usize, val: bool) {
79 debug_assert!(index / 8 < self.storage.as_ref().len());
80 let byte_index = index / 8;
81 let byte = &mut self.storage.as_mut()[byte_index];
82 *byte = Self::change_bit(*byte, index, val);
83 }
84 #[inline]
85 pub unsafe fn raw_set_bit(this: *mut Self, index: usize, val: bool) {
86 debug_assert!(index / 8 < core::mem::size_of::<Storage>());
87 let byte_index = index / 8;
88 let byte =
89 (core::ptr::addr_of_mut!((*this).storage) as *mut u8).offset(byte_index as isize);
90 *byte = Self::change_bit(*byte, index, val);
91 }
92 #[inline]
93 pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
94 debug_assert!(bit_width <= 64);
95 debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
96 debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
97 let mut val = 0;
98 for i in 0..(bit_width as usize) {
99 if self.get_bit(i + bit_offset) {
100 let index = if cfg!(target_endian = "big") {
101 bit_width as usize - 1 - i
102 } else {
103 i
104 };
105 val |= 1 << index;
106 }
107 }
108 val
109 }
110 #[inline]
111 pub unsafe fn raw_get(this: *const Self, bit_offset: usize, bit_width: u8) -> u64 {
112 debug_assert!(bit_width <= 64);
113 debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
114 debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
115 let mut val = 0;
116 for i in 0..(bit_width as usize) {
117 if Self::raw_get_bit(this, i + bit_offset) {
118 let index = if cfg!(target_endian = "big") {
119 bit_width as usize - 1 - i
120 } else {
121 i
122 };
123 val |= 1 << index;
124 }
125 }
126 val
127 }
128 #[inline]
129 pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
130 debug_assert!(bit_width <= 64);
131 debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
132 debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
133 for i in 0..(bit_width as usize) {
134 let mask = 1 << i;
135 let val_bit_is_set = val & mask == mask;
136 let index = if cfg!(target_endian = "big") {
137 bit_width as usize - 1 - i
138 } else {
139 i
140 };
141 self.set_bit(index + bit_offset, val_bit_is_set);
142 }
143 }
144 #[inline]
145 pub unsafe fn raw_set(this: *mut Self, bit_offset: usize, bit_width: u8, val: u64) {
146 debug_assert!(bit_width <= 64);
147 debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
148 debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
149 for i in 0..(bit_width as usize) {
150 let mask = 1 << i;
151 let val_bit_is_set = val & mask == mask;
152 let index = if cfg!(target_endian = "big") {
153 bit_width as usize - 1 - i
154 } else {
155 i
156 };
157 Self::raw_set_bit(this, index + bit_offset, val_bit_is_set);
158 }
159 }
160}
161pub const CC_NORM: u32 = 0;
162pub const CC_NEWLINE: u32 = 1;
163pub const CC_EOF: u32 = 2;
164pub const CC_ARGHACK: u32 = 3;
165pub const CC_REFRESH: u32 = 4;
166pub const CC_CURSOR: u32 = 5;
167pub const CC_ERROR: u32 = 6;
168pub const CC_FATAL: u32 = 7;
169pub const CC_REDISPLAY: u32 = 8;
170pub const CC_REFRESH_BEEP: u32 = 9;
171pub const EL_PROMPT: u32 = 0;
172pub const EL_TERMINAL: u32 = 1;
173pub const EL_EDITOR: u32 = 2;
174pub const EL_SIGNAL: u32 = 3;
175pub const EL_BIND: u32 = 4;
176pub const EL_TELLTC: u32 = 5;
177pub const EL_SETTC: u32 = 6;
178pub const EL_ECHOTC: u32 = 7;
179pub const EL_SETTY: u32 = 8;
180pub const EL_ADDFN: u32 = 9;
181pub const EL_HIST: u32 = 10;
182pub const EL_EDITMODE: u32 = 11;
183pub const EL_RPROMPT: u32 = 12;
184pub const EL_GETCFN: u32 = 13;
185pub const EL_CLIENTDATA: u32 = 14;
186pub const EL_UNBUFFERED: u32 = 15;
187pub const EL_PREP_TERM: u32 = 16;
188pub const EL_GETTC: u32 = 17;
189pub const EL_GETFP: u32 = 18;
190pub const EL_SETFP: u32 = 19;
191pub const EL_REFRESH: u32 = 20;
192pub const EL_PROMPT_ESC: u32 = 21;
193pub const EL_RPROMPT_ESC: u32 = 22;
194pub const EL_RESIZE: u32 = 23;
195pub const EL_ALIAS_TEXT: u32 = 24;
196pub const EL_SAFEREAD: u32 = 25;
197pub const H_FUNC: u32 = 0;
198pub const H_SETSIZE: u32 = 1;
199pub const H_GETSIZE: u32 = 2;
200pub const H_FIRST: u32 = 3;
201pub const H_LAST: u32 = 4;
202pub const H_PREV: u32 = 5;
203pub const H_NEXT: u32 = 6;
204pub const H_CURR: u32 = 8;
205pub const H_SET: u32 = 7;
206pub const H_ADD: u32 = 9;
207pub const H_ENTER: u32 = 10;
208pub const H_APPEND: u32 = 11;
209pub const H_END: u32 = 12;
210pub const H_NEXT_STR: u32 = 13;
211pub const H_PREV_STR: u32 = 14;
212pub const H_NEXT_EVENT: u32 = 15;
213pub const H_PREV_EVENT: u32 = 16;
214pub const H_LOAD: u32 = 17;
215pub const H_SAVE: u32 = 18;
216pub const H_CLEAR: u32 = 19;
217pub const H_SETUNIQUE: u32 = 20;
218pub const H_GETUNIQUE: u32 = 21;
219pub const H_DEL: u32 = 22;
220pub const H_NEXT_EVDATA: u32 = 23;
221pub const H_DELDATA: u32 = 24;
222pub const H_REPLACE: u32 = 25;
223pub const H_SAVE_FP: u32 = 26;
224pub const H_NSAVE_FP: u32 = 27;
225pub type __off_t = ::std::os::raw::c_long;
226pub type __off64_t = ::std::os::raw::c_long;
227#[repr(C)]
228#[derive(Debug, Copy, Clone)]
229pub struct _IO_marker {
230 _unused: [u8; 0],
231}
232#[repr(C)]
233#[derive(Debug, Copy, Clone)]
234pub struct _IO_codecvt {
235 _unused: [u8; 0],
236}
237#[repr(C)]
238#[derive(Debug, Copy, Clone)]
239pub struct _IO_wide_data {
240 _unused: [u8; 0],
241}
242pub type _IO_lock_t = ::std::os::raw::c_void;
243#[repr(C)]
244#[derive(Debug, Copy, Clone)]
245pub struct _IO_FILE {
246 pub _flags: ::std::os::raw::c_int,
247 pub _IO_read_ptr: *mut ::std::os::raw::c_char,
248 pub _IO_read_end: *mut ::std::os::raw::c_char,
249 pub _IO_read_base: *mut ::std::os::raw::c_char,
250 pub _IO_write_base: *mut ::std::os::raw::c_char,
251 pub _IO_write_ptr: *mut ::std::os::raw::c_char,
252 pub _IO_write_end: *mut ::std::os::raw::c_char,
253 pub _IO_buf_base: *mut ::std::os::raw::c_char,
254 pub _IO_buf_end: *mut ::std::os::raw::c_char,
255 pub _IO_save_base: *mut ::std::os::raw::c_char,
256 pub _IO_backup_base: *mut ::std::os::raw::c_char,
257 pub _IO_save_end: *mut ::std::os::raw::c_char,
258 pub _markers: *mut _IO_marker,
259 pub _chain: *mut _IO_FILE,
260 pub _fileno: ::std::os::raw::c_int,
261 pub _bitfield_align_1: [u32; 0],
262 pub _bitfield_1: __BindgenBitfieldUnit<[u8; 3usize]>,
263 pub _short_backupbuf: [::std::os::raw::c_char; 1usize],
264 pub _old_offset: __off_t,
265 pub _cur_column: ::std::os::raw::c_ushort,
266 pub _vtable_offset: ::std::os::raw::c_schar,
267 pub _shortbuf: [::std::os::raw::c_char; 1usize],
268 pub _lock: *mut _IO_lock_t,
269 pub _offset: __off64_t,
270 pub _codecvt: *mut _IO_codecvt,
271 pub _wide_data: *mut _IO_wide_data,
272 pub _freeres_list: *mut _IO_FILE,
273 pub _freeres_buf: *mut ::std::os::raw::c_void,
274 pub _prevchain: *mut *mut _IO_FILE,
275 pub _mode: ::std::os::raw::c_int,
276 pub _unused2: [::std::os::raw::c_char; 20usize],
277}
278impl Default for _IO_FILE {
279 fn default() -> Self {
280 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
281 unsafe {
282 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
283 s.assume_init()
284 }
285 }
286}
287impl _IO_FILE {
288 #[inline]
289 pub fn _flags2(&self) -> ::std::os::raw::c_int {
290 unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 24u8) as u32) }
291 }
292 #[inline]
293 pub fn set__flags2(&mut self, val: ::std::os::raw::c_int) {
294 unsafe {
295 let val: u32 = ::std::mem::transmute(val);
296 self._bitfield_1.set(0usize, 24u8, val as u64)
297 }
298 }
299 #[inline]
300 pub unsafe fn _flags2_raw(this: *const Self) -> ::std::os::raw::c_int {
301 unsafe {
302 ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
303 ::std::ptr::addr_of!((*this)._bitfield_1),
304 0usize,
305 24u8,
306 ) as u32)
307 }
308 }
309 #[inline]
310 pub unsafe fn set__flags2_raw(this: *mut Self, val: ::std::os::raw::c_int) {
311 unsafe {
312 let val: u32 = ::std::mem::transmute(val);
313 <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
314 ::std::ptr::addr_of_mut!((*this)._bitfield_1),
315 0usize,
316 24u8,
317 val as u64,
318 )
319 }
320 }
321 #[inline]
322 pub fn new_bitfield_1(_flags2: ::std::os::raw::c_int) -> __BindgenBitfieldUnit<[u8; 3usize]> {
323 let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 3usize]> = Default::default();
324 __bindgen_bitfield_unit.set(0usize, 24u8, {
325 let _flags2: u32 = unsafe { ::std::mem::transmute(_flags2) };
326 _flags2 as u64
327 });
328 __bindgen_bitfield_unit
329 }
330}
331#[repr(C)]
332#[derive(Debug, Copy, Clone)]
333pub struct editline {
334 _unused: [u8; 0],
335}
336pub type EditLine = editline;
337#[repr(C)]
338#[derive(Debug, Copy, Clone)]
339pub struct lineinfo {
340 pub buffer: *const ::std::os::raw::c_char,
341 pub cursor: *const ::std::os::raw::c_char,
342 pub lastchar: *const ::std::os::raw::c_char,
343}
344impl Default for lineinfo {
345 fn default() -> Self {
346 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
347 unsafe {
348 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
349 s.assume_init()
350 }
351 }
352}
353pub type LineInfo = lineinfo;
354unsafe extern "C" {
355 pub fn el_init(
356 arg1: *const ::std::os::raw::c_char,
357 arg2: *mut FILE,
358 arg3: *mut FILE,
359 arg4: *mut FILE,
360 ) -> *mut EditLine;
361}
362#[cfg(not(target_os = "macos"))]
363unsafe extern "C" {
364 pub fn el_init_fd(
365 arg1: *const ::std::os::raw::c_char,
366 arg2: *mut FILE,
367 arg3: *mut FILE,
368 arg4: *mut FILE,
369 arg5: ::std::os::raw::c_int,
370 arg6: ::std::os::raw::c_int,
371 arg7: ::std::os::raw::c_int,
372 ) -> *mut EditLine;
373}
374unsafe extern "C" {
375 pub fn el_end(arg1: *mut EditLine);
376}
377unsafe extern "C" {
378 pub fn el_reset(arg1: *mut EditLine);
379}
380unsafe extern "C" {
381 pub fn el_gets(
382 arg1: *mut EditLine,
383 arg2: *mut ::std::os::raw::c_int,
384 ) -> *const ::std::os::raw::c_char;
385}
386unsafe extern "C" {
387 pub fn el_getc(arg1: *mut EditLine, arg2: *mut ::std::os::raw::c_char)
388 -> ::std::os::raw::c_int;
389}
390unsafe extern "C" {
391 pub fn el_push(arg1: *mut EditLine, arg2: *const ::std::os::raw::c_char);
392}
393unsafe extern "C" {
394 pub fn el_beep(arg1: *mut EditLine);
395}
396unsafe extern "C" {
397 pub fn el_parse(
398 arg1: *mut EditLine,
399 arg2: ::std::os::raw::c_int,
400 arg3: *mut *const ::std::os::raw::c_char,
401 ) -> ::std::os::raw::c_int;
402}
403unsafe extern "C" {
404 pub fn el_set(arg1: *mut EditLine, arg2: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
405}
406unsafe extern "C" {
407 pub fn el_get(arg1: *mut EditLine, arg2: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
408}
409unsafe extern "C" {
410 pub fn el_source(
411 arg1: *mut EditLine,
412 arg2: *const ::std::os::raw::c_char,
413 ) -> ::std::os::raw::c_int;
414}
415unsafe extern "C" {
416 pub fn el_resize(arg1: *mut EditLine);
417}
418unsafe extern "C" {
419 pub fn el_line(arg1: *mut EditLine) -> *const LineInfo;
420}
421unsafe extern "C" {
422 pub fn el_insertstr(
423 arg1: *mut EditLine,
424 arg2: *const ::std::os::raw::c_char,
425 ) -> ::std::os::raw::c_int;
426}
427unsafe extern "C" {
428 pub fn el_deletestr(arg1: *mut EditLine, arg2: ::std::os::raw::c_int);
429}
430unsafe extern "C" {
431 pub fn el_replacestr(
432 arg1: *mut EditLine,
433 arg2: *const ::std::os::raw::c_char,
434 ) -> ::std::os::raw::c_int;
435}
436unsafe extern "C" {
437 pub fn el_deletestr1(
438 arg1: *mut EditLine,
439 arg2: ::std::os::raw::c_int,
440 arg3: ::std::os::raw::c_int,
441 ) -> ::std::os::raw::c_int;
442}
443#[repr(C)]
444#[derive(Debug, Copy, Clone)]
445pub struct history {
446 _unused: [u8; 0],
447}
448pub type History = history;
449#[repr(C)]
450#[derive(Debug, Copy, Clone)]
451pub struct HistEvent {
452 pub num: ::std::os::raw::c_int,
453 pub str_: *const ::std::os::raw::c_char,
454}
455impl Default for HistEvent {
456 fn default() -> Self {
457 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
458 unsafe {
459 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
460 s.assume_init()
461 }
462 }
463}
464unsafe extern "C" {
465 pub fn history_init() -> *mut History;
466}
467unsafe extern "C" {
468 pub fn history_end(arg1: *mut History);
469}
470unsafe extern "C" {
471 pub fn history(
472 arg1: *mut History,
473 arg2: *mut HistEvent,
474 arg3: ::std::os::raw::c_int,
475 ...
476 ) -> ::std::os::raw::c_int;
477}
478#[repr(C)]
479#[derive(Debug, Copy, Clone)]
480pub struct tokenizer {
481 _unused: [u8; 0],
482}
483pub type Tokenizer = tokenizer;
484unsafe extern "C" {
485 pub fn tok_init(arg1: *const ::std::os::raw::c_char) -> *mut Tokenizer;
486}
487unsafe extern "C" {
488 pub fn tok_end(arg1: *mut Tokenizer);
489}
490unsafe extern "C" {
491 pub fn tok_reset(arg1: *mut Tokenizer);
492}
493unsafe extern "C" {
494 pub fn tok_line(
495 arg1: *mut Tokenizer,
496 arg2: *const LineInfo,
497 arg3: *mut ::std::os::raw::c_int,
498 arg4: *mut *mut *const ::std::os::raw::c_char,
499 arg5: *mut ::std::os::raw::c_int,
500 arg6: *mut ::std::os::raw::c_int,
501 ) -> ::std::os::raw::c_int;
502}
503unsafe extern "C" {
504 pub fn tok_str(
505 arg1: *mut Tokenizer,
506 arg2: *const ::std::os::raw::c_char,
507 arg3: *mut ::std::os::raw::c_int,
508 arg4: *mut *mut *const ::std::os::raw::c_char,
509 ) -> ::std::os::raw::c_int;
510}
511pub type wchar_t = ::std::os::raw::c_uint;
512#[repr(C)]
513#[derive(Debug, Copy, Clone)]
514pub struct lineinfow {
515 pub buffer: *const wchar_t,
516 pub cursor: *const wchar_t,
517 pub lastchar: *const wchar_t,
518}
519impl Default for lineinfow {
520 fn default() -> Self {
521 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
522 unsafe {
523 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
524 s.assume_init()
525 }
526 }
527}
528pub type LineInfoW = lineinfow;
529pub type el_rfunc_t = ::std::option::Option<
530 unsafe extern "C" fn(arg1: *mut EditLine, arg2: *mut wchar_t) -> ::std::os::raw::c_int,
531>;
532unsafe extern "C" {
533 pub fn el_wgets(arg1: *mut EditLine, arg2: *mut ::std::os::raw::c_int) -> *const wchar_t;
534}
535unsafe extern "C" {
536 pub fn el_wgetc(arg1: *mut EditLine, arg2: *mut wchar_t) -> ::std::os::raw::c_int;
537}
538unsafe extern "C" {
539 pub fn el_wpush(arg1: *mut EditLine, arg2: *const wchar_t);
540}
541unsafe extern "C" {
542 pub fn el_wparse(
543 arg1: *mut EditLine,
544 arg2: ::std::os::raw::c_int,
545 arg3: *mut *const wchar_t,
546 ) -> ::std::os::raw::c_int;
547}
548unsafe extern "C" {
549 pub fn el_wset(arg1: *mut EditLine, arg2: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
550}
551unsafe extern "C" {
552 pub fn el_wget(arg1: *mut EditLine, arg2: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
553}
554unsafe extern "C" {
555 pub fn el_cursor(arg1: *mut EditLine, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
556}
557unsafe extern "C" {
558 pub fn el_wline(arg1: *mut EditLine) -> *const LineInfoW;
559}
560unsafe extern "C" {
561 pub fn el_winsertstr(arg1: *mut EditLine, arg2: *const wchar_t) -> ::std::os::raw::c_int;
562}
563unsafe extern "C" {
564 pub fn el_wreplacestr(arg1: *mut EditLine, arg2: *const wchar_t) -> ::std::os::raw::c_int;
565}
566#[repr(C)]
567#[derive(Debug, Copy, Clone)]
568pub struct histeventW {
569 pub num: ::std::os::raw::c_int,
570 pub str_: *const wchar_t,
571}
572impl Default for histeventW {
573 fn default() -> Self {
574 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
575 unsafe {
576 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
577 s.assume_init()
578 }
579 }
580}
581pub type HistEventW = histeventW;
582#[repr(C)]
583#[derive(Debug, Copy, Clone)]
584pub struct historyW {
585 _unused: [u8; 0],
586}
587pub type HistoryW = historyW;
588unsafe extern "C" {
589 pub fn history_winit() -> *mut HistoryW;
590}
591unsafe extern "C" {
592 pub fn history_wend(arg1: *mut HistoryW);
593}
594unsafe extern "C" {
595 pub fn history_w(
596 arg1: *mut HistoryW,
597 arg2: *mut HistEventW,
598 arg3: ::std::os::raw::c_int,
599 ...
600 ) -> ::std::os::raw::c_int;
601}
602#[repr(C)]
603#[derive(Debug, Copy, Clone)]
604pub struct tokenizerW {
605 _unused: [u8; 0],
606}
607pub type TokenizerW = tokenizerW;
608unsafe extern "C" {
609 pub fn tok_winit(arg1: *const wchar_t) -> *mut TokenizerW;
610}
611unsafe extern "C" {
612 pub fn tok_wend(arg1: *mut TokenizerW);
613}
614unsafe extern "C" {
615 pub fn tok_wreset(arg1: *mut TokenizerW);
616}
617unsafe extern "C" {
618 pub fn tok_wline(
619 arg1: *mut TokenizerW,
620 arg2: *const LineInfoW,
621 arg3: *mut ::std::os::raw::c_int,
622 arg4: *mut *mut *const wchar_t,
623 arg5: *mut ::std::os::raw::c_int,
624 arg6: *mut ::std::os::raw::c_int,
625 ) -> ::std::os::raw::c_int;
626}
627unsafe extern "C" {
628 pub fn tok_wstr(
629 arg1: *mut TokenizerW,
630 arg2: *const wchar_t,
631 arg3: *mut ::std::os::raw::c_int,
632 arg4: *mut *mut *const wchar_t,
633 ) -> ::std::os::raw::c_int;
634}