glib/auto/
functions.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use glib_sys;
6use libc;
7use std;
8use std::mem;
9use std::ptr;
10use translate::*;
11use types;
12use Bytes;
13use ChecksumType;
14use Error;
15use FileTest;
16use FormatSizeFlags;
17use GString;
18use Source;
19use UserDirectory;
20
21pub fn access<P: AsRef<std::path::Path>>(filename: P, mode: i32) -> i32 {
22    unsafe { glib_sys::g_access(filename.as_ref().to_glib_none().0, mode) }
23}
24
25pub fn assert_warning(
26    log_domain: &str,
27    file: &str,
28    line: i32,
29    pretty_function: &str,
30    expression: &str,
31) {
32    unsafe {
33        glib_sys::g_assert_warning(
34            log_domain.to_glib_none().0,
35            file.to_glib_none().0,
36            line,
37            pretty_function.to_glib_none().0,
38            expression.to_glib_none().0,
39        );
40    }
41}
42
43pub fn assertion_message(domain: &str, file: &str, line: i32, func: &str, message: &str) {
44    unsafe {
45        glib_sys::g_assertion_message(
46            domain.to_glib_none().0,
47            file.to_glib_none().0,
48            line,
49            func.to_glib_none().0,
50            message.to_glib_none().0,
51        );
52    }
53}
54
55//pub fn assertion_message_cmpnum(domain: &str, file: &str, line: i32, func: &str, expr: &str, arg1: /*Unknown conversion*//*Unimplemented*/Unsupported, cmp: &str, arg2: /*Unknown conversion*//*Unimplemented*/Unsupported, numtype: Char) {
56//    unsafe { TODO: call glib_sys:g_assertion_message_cmpnum() }
57//}
58
59pub fn assertion_message_cmpstr(
60    domain: &str,
61    file: &str,
62    line: i32,
63    func: &str,
64    expr: &str,
65    arg1: &str,
66    cmp: &str,
67    arg2: &str,
68) {
69    unsafe {
70        glib_sys::g_assertion_message_cmpstr(
71            domain.to_glib_none().0,
72            file.to_glib_none().0,
73            line,
74            func.to_glib_none().0,
75            expr.to_glib_none().0,
76            arg1.to_glib_none().0,
77            cmp.to_glib_none().0,
78            arg2.to_glib_none().0,
79        );
80    }
81}
82
83pub fn base64_decode(text: &str) -> Vec<u8> {
84    unsafe {
85        let mut out_len = mem::uninitialized();
86        let ret = FromGlibContainer::from_glib_full_num(
87            glib_sys::g_base64_decode(text.to_glib_none().0, &mut out_len),
88            out_len as usize,
89        );
90        ret
91    }
92}
93
94//pub fn base64_decode_inplace(text: /*Unimplemented*/Vec<u8>) -> u8 {
95//    unsafe { TODO: call glib_sys:g_base64_decode_inplace() }
96//}
97
98//pub fn base64_decode_step(in_: &[u8], out: Vec<u8>, state: &mut i32, save: &mut u32) -> usize {
99//    unsafe { TODO: call glib_sys:g_base64_decode_step() }
100//}
101
102pub fn base64_encode(data: &[u8]) -> Option<GString> {
103    let len = data.len() as usize;
104    unsafe { from_glib_full(glib_sys::g_base64_encode(data.to_glib_none().0, len)) }
105}
106
107//pub fn base64_encode_close(break_lines: bool, out: Vec<u8>, state: &mut i32, save: &mut i32) -> usize {
108//    unsafe { TODO: call glib_sys:g_base64_encode_close() }
109//}
110
111//pub fn base64_encode_step(in_: &[u8], break_lines: bool, out: Vec<u8>, state: &mut i32, save: &mut i32) -> usize {
112//    unsafe { TODO: call glib_sys:g_base64_encode_step() }
113//}
114
115pub fn bit_nth_lsf(mask: libc::c_ulong, nth_bit: i32) -> i32 {
116    unsafe { glib_sys::g_bit_nth_lsf(mask, nth_bit) }
117}
118
119pub fn bit_nth_msf(mask: libc::c_ulong, nth_bit: i32) -> i32 {
120    unsafe { glib_sys::g_bit_nth_msf(mask, nth_bit) }
121}
122
123pub fn bit_storage(number: libc::c_ulong) -> u32 {
124    unsafe { glib_sys::g_bit_storage(number) }
125}
126
127//pub fn build_filename<P: AsRef<std::path::Path>>(first_element: P, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> Option<std::path::PathBuf> {
128//    unsafe { TODO: call glib_sys:g_build_filename() }
129//}
130
131//#[cfg(any(feature = "v2_56", feature = "dox"))]
132//pub fn build_filename_valist<P: AsRef<std::path::Path>>(first_element: P, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> Option<std::path::PathBuf> {
133//    unsafe { TODO: call glib_sys:g_build_filename_valist() }
134//}
135
136pub fn build_filenamev(args: &[&std::path::Path]) -> Option<std::path::PathBuf> {
137    unsafe { from_glib_full(glib_sys::g_build_filenamev(args.to_glib_none().0)) }
138}
139
140//pub fn build_path<P: AsRef<std::path::Path>, Q: AsRef<std::path::Path>>(separator: P, first_element: Q, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> Option<std::path::PathBuf> {
141//    unsafe { TODO: call glib_sys:g_build_path() }
142//}
143
144pub fn build_pathv(separator: &str, args: &[&std::path::Path]) -> Option<std::path::PathBuf> {
145    unsafe {
146        from_glib_full(glib_sys::g_build_pathv(
147            separator.to_glib_none().0,
148            args.to_glib_none().0,
149        ))
150    }
151}
152
153#[cfg(any(feature = "v2_58", feature = "dox"))]
154pub fn canonicalize_filename<P: AsRef<std::path::Path>, Q: AsRef<std::path::Path>>(
155    filename: P,
156    relative_to: Q,
157) -> Option<std::path::PathBuf> {
158    unsafe {
159        from_glib_full(glib_sys::g_canonicalize_filename(
160            filename.as_ref().to_glib_none().0,
161            relative_to.as_ref().to_glib_none().0,
162        ))
163    }
164}
165
166pub fn chdir<P: AsRef<std::path::Path>>(path: P) -> i32 {
167    unsafe { glib_sys::g_chdir(path.as_ref().to_glib_none().0) }
168}
169
170pub fn check_version(
171    required_major: u32,
172    required_minor: u32,
173    required_micro: u32,
174) -> Option<GString> {
175    unsafe {
176        from_glib_none(glib_sys::glib_check_version(
177            required_major,
178            required_minor,
179            required_micro,
180        ))
181    }
182}
183
184pub fn clear_error() -> Result<(), Error> {
185    unsafe {
186        let mut error = ptr::null_mut();
187        let _ = glib_sys::g_clear_error(&mut error);
188        if error.is_null() {
189            Ok(())
190        } else {
191            Err(from_glib_full(error))
192        }
193    }
194}
195
196//#[cfg(any(feature = "v2_56", feature = "dox"))]
197//pub fn clear_handle_id<P: Fn(u32) + Send + Sync + 'static>(tag_ptr: u32, clear_func: P) {
198//    unsafe { TODO: call glib_sys:g_clear_handle_id() }
199//}
200
201//pub fn clear_pointer(pp: /*Unimplemented*/Fundamental: Pointer) {
202//    unsafe { TODO: call glib_sys:g_clear_pointer() }
203//}
204
205pub fn compute_checksum_for_bytes(checksum_type: ChecksumType, data: &Bytes) -> Option<GString> {
206    unsafe {
207        from_glib_full(glib_sys::g_compute_checksum_for_bytes(
208            checksum_type.to_glib(),
209            data.to_glib_none().0,
210        ))
211    }
212}
213
214pub fn compute_checksum_for_data(checksum_type: ChecksumType, data: &[u8]) -> Option<GString> {
215    let length = data.len() as usize;
216    unsafe {
217        from_glib_full(glib_sys::g_compute_checksum_for_data(
218            checksum_type.to_glib(),
219            data.to_glib_none().0,
220            length,
221        ))
222    }
223}
224
225pub fn compute_checksum_for_string(checksum_type: ChecksumType, str: &str) -> Option<GString> {
226    let length = str.len() as isize;
227    unsafe {
228        from_glib_full(glib_sys::g_compute_checksum_for_string(
229            checksum_type.to_glib(),
230            str.to_glib_none().0,
231            length,
232        ))
233    }
234}
235
236#[cfg(any(feature = "v2_50", feature = "dox"))]
237pub fn compute_hmac_for_bytes(
238    digest_type: ChecksumType,
239    key: &Bytes,
240    data: &Bytes,
241) -> Option<GString> {
242    unsafe {
243        from_glib_full(glib_sys::g_compute_hmac_for_bytes(
244            digest_type.to_glib(),
245            key.to_glib_none().0,
246            data.to_glib_none().0,
247        ))
248    }
249}
250
251pub fn compute_hmac_for_data(
252    digest_type: ChecksumType,
253    key: &[u8],
254    data: &[u8],
255) -> Option<GString> {
256    let key_len = key.len() as usize;
257    let length = data.len() as usize;
258    unsafe {
259        from_glib_full(glib_sys::g_compute_hmac_for_data(
260            digest_type.to_glib(),
261            key.to_glib_none().0,
262            key_len,
263            data.to_glib_none().0,
264            length,
265        ))
266    }
267}
268
269pub fn compute_hmac_for_string(
270    digest_type: ChecksumType,
271    key: &[u8],
272    str: &str,
273) -> Option<GString> {
274    let key_len = key.len() as usize;
275    let length = str.len() as isize;
276    unsafe {
277        from_glib_full(glib_sys::g_compute_hmac_for_string(
278            digest_type.to_glib(),
279            key.to_glib_none().0,
280            key_len,
281            str.to_glib_none().0,
282            length,
283        ))
284    }
285}
286
287//pub fn convert_with_iconv(str: &[u8], converter: /*Ignored*/&IConv) -> Result<(Vec<u8>, usize), Error> {
288//    unsafe { TODO: call glib_sys:g_convert_with_iconv() }
289//}
290
291//pub fn datalist_clear(datalist: /*Ignored*/&mut Data) {
292//    unsafe { TODO: call glib_sys:g_datalist_clear() }
293//}
294
295//pub fn datalist_foreach(datalist: /*Ignored*/&mut Data, func: /*Unimplemented*/FnMut(Quark, /*Unimplemented*/Option<Fundamental: Pointer>), user_data: /*Unimplemented*/Option<Fundamental: Pointer>) {
296//    unsafe { TODO: call glib_sys:g_datalist_foreach() }
297//}
298
299//pub fn datalist_get_data(datalist: /*Ignored*/&mut Data, key: &str) -> /*Unimplemented*/Option<Fundamental: Pointer> {
300//    unsafe { TODO: call glib_sys:g_datalist_get_data() }
301//}
302
303//pub fn datalist_get_flags(datalist: /*Ignored*/&mut Data) -> u32 {
304//    unsafe { TODO: call glib_sys:g_datalist_get_flags() }
305//}
306
307//pub fn datalist_id_dup_data(datalist: /*Ignored*/&mut Data, key_id: Quark, dup_func: /*Unimplemented*/FnMut(/*Unimplemented*/Option<Fundamental: Pointer>) -> /*Unimplemented*/Option<Fundamental: Pointer>, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> /*Unimplemented*/Option<Fundamental: Pointer> {
308//    unsafe { TODO: call glib_sys:g_datalist_id_dup_data() }
309//}
310
311//pub fn datalist_id_get_data(datalist: /*Ignored*/&mut Data, key_id: Quark) -> /*Unimplemented*/Option<Fundamental: Pointer> {
312//    unsafe { TODO: call glib_sys:g_datalist_id_get_data() }
313//}
314
315//pub fn datalist_id_remove_no_notify(datalist: /*Ignored*/&mut Data, key_id: Quark) -> /*Unimplemented*/Option<Fundamental: Pointer> {
316//    unsafe { TODO: call glib_sys:g_datalist_id_remove_no_notify() }
317//}
318
319//pub fn datalist_id_replace_data(datalist: /*Ignored*/&mut Data, key_id: Quark, oldval: /*Unimplemented*/Option<Fundamental: Pointer>, newval: /*Unimplemented*/Option<Fundamental: Pointer>) -> Option<Fn() + 'static> {
320//    unsafe { TODO: call glib_sys:g_datalist_id_replace_data() }
321//}
322
323//pub fn datalist_id_set_data_full(datalist: /*Ignored*/&mut Data, key_id: Quark, data: /*Unimplemented*/Option<Fundamental: Pointer>) {
324//    unsafe { TODO: call glib_sys:g_datalist_id_set_data_full() }
325//}
326
327//pub fn datalist_init(datalist: /*Ignored*/&mut Data) {
328//    unsafe { TODO: call glib_sys:g_datalist_init() }
329//}
330
331//pub fn datalist_set_flags(datalist: /*Ignored*/&mut Data, flags: u32) {
332//    unsafe { TODO: call glib_sys:g_datalist_set_flags() }
333//}
334
335//pub fn datalist_unset_flags(datalist: /*Ignored*/&mut Data, flags: u32) {
336//    unsafe { TODO: call glib_sys:g_datalist_unset_flags() }
337//}
338
339//pub fn dataset_destroy(dataset_location: /*Unimplemented*/Fundamental: Pointer) {
340//    unsafe { TODO: call glib_sys:g_dataset_destroy() }
341//}
342
343//pub fn dataset_foreach(dataset_location: /*Unimplemented*/Fundamental: Pointer, func: /*Unimplemented*/FnMut(Quark, /*Unimplemented*/Option<Fundamental: Pointer>), user_data: /*Unimplemented*/Option<Fundamental: Pointer>) {
344//    unsafe { TODO: call glib_sys:g_dataset_foreach() }
345//}
346
347//pub fn dataset_id_get_data(dataset_location: /*Unimplemented*/Fundamental: Pointer, key_id: Quark) -> /*Unimplemented*/Option<Fundamental: Pointer> {
348//    unsafe { TODO: call glib_sys:g_dataset_id_get_data() }
349//}
350
351//pub fn dataset_id_remove_no_notify(dataset_location: /*Unimplemented*/Fundamental: Pointer, key_id: Quark) -> /*Unimplemented*/Option<Fundamental: Pointer> {
352//    unsafe { TODO: call glib_sys:g_dataset_id_remove_no_notify() }
353//}
354
355//pub fn dataset_id_set_data_full(dataset_location: /*Unimplemented*/Fundamental: Pointer, key_id: Quark, data: /*Unimplemented*/Option<Fundamental: Pointer>) {
356//    unsafe { TODO: call glib_sys:g_dataset_id_set_data_full() }
357//}
358
359pub fn dcgettext(domain: Option<&str>, msgid: &str, category: i32) -> Option<GString> {
360    unsafe {
361        from_glib_none(glib_sys::g_dcgettext(
362            domain.to_glib_none().0,
363            msgid.to_glib_none().0,
364            category,
365        ))
366    }
367}
368
369pub fn dgettext(domain: Option<&str>, msgid: &str) -> Option<GString> {
370    unsafe {
371        from_glib_none(glib_sys::g_dgettext(
372            domain.to_glib_none().0,
373            msgid.to_glib_none().0,
374        ))
375    }
376}
377
378//pub fn direct_equal(v1: /*Unimplemented*/Option<Fundamental: Pointer>, v2: /*Unimplemented*/Option<Fundamental: Pointer>) -> bool {
379//    unsafe { TODO: call glib_sys:g_direct_equal() }
380//}
381
382//pub fn direct_hash(v: /*Unimplemented*/Option<Fundamental: Pointer>) -> u32 {
383//    unsafe { TODO: call glib_sys:g_direct_hash() }
384//}
385
386pub fn dngettext(
387    domain: Option<&str>,
388    msgid: &str,
389    msgid_plural: &str,
390    n: libc::c_ulong,
391) -> Option<GString> {
392    unsafe {
393        from_glib_none(glib_sys::g_dngettext(
394            domain.to_glib_none().0,
395            msgid.to_glib_none().0,
396            msgid_plural.to_glib_none().0,
397            n,
398        ))
399    }
400}
401
402//pub fn double_equal(v1: /*Unimplemented*/Fundamental: Pointer, v2: /*Unimplemented*/Fundamental: Pointer) -> bool {
403//    unsafe { TODO: call glib_sys:g_double_equal() }
404//}
405
406//pub fn double_hash(v: /*Unimplemented*/Fundamental: Pointer) -> u32 {
407//    unsafe { TODO: call glib_sys:g_double_hash() }
408//}
409
410pub fn dpgettext(domain: Option<&str>, msgctxtid: &str, msgidoffset: usize) -> Option<GString> {
411    unsafe {
412        from_glib_none(glib_sys::g_dpgettext(
413            domain.to_glib_none().0,
414            msgctxtid.to_glib_none().0,
415            msgidoffset,
416        ))
417    }
418}
419
420pub fn dpgettext2(domain: Option<&str>, context: &str, msgid: &str) -> Option<GString> {
421    unsafe {
422        from_glib_none(glib_sys::g_dpgettext2(
423            domain.to_glib_none().0,
424            context.to_glib_none().0,
425            msgid.to_glib_none().0,
426        ))
427    }
428}
429
430//pub fn file_error_from_errno(err_no: i32) -> /*Ignored*/FileError {
431//    unsafe { TODO: call glib_sys:g_file_error_from_errno() }
432//}
433
434pub fn file_get_contents<P: AsRef<std::path::Path>>(filename: P) -> Result<Vec<u8>, Error> {
435    unsafe {
436        let mut contents = ptr::null_mut();
437        let mut length = mem::uninitialized();
438        let mut error = ptr::null_mut();
439        let _ = glib_sys::g_file_get_contents(
440            filename.as_ref().to_glib_none().0,
441            &mut contents,
442            &mut length,
443            &mut error,
444        );
445        if error.is_null() {
446            Ok(FromGlibContainer::from_glib_full_num(
447                contents,
448                length as usize,
449            ))
450        } else {
451            Err(from_glib_full(error))
452        }
453    }
454}
455
456pub fn file_open_tmp<P: AsRef<std::path::Path>>(
457    tmpl: P,
458) -> Result<(i32, std::path::PathBuf), Error> {
459    unsafe {
460        let mut name_used = ptr::null_mut();
461        let mut error = ptr::null_mut();
462        let ret =
463            glib_sys::g_file_open_tmp(tmpl.as_ref().to_glib_none().0, &mut name_used, &mut error);
464        if error.is_null() {
465            Ok((ret, from_glib_full(name_used)))
466        } else {
467            Err(from_glib_full(error))
468        }
469    }
470}
471
472pub fn file_read_link<P: AsRef<std::path::Path>>(filename: P) -> Result<std::path::PathBuf, Error> {
473    unsafe {
474        let mut error = ptr::null_mut();
475        let ret = glib_sys::g_file_read_link(filename.as_ref().to_glib_none().0, &mut error);
476        if error.is_null() {
477            Ok(from_glib_full(ret))
478        } else {
479            Err(from_glib_full(error))
480        }
481    }
482}
483
484pub fn file_set_contents<P: AsRef<std::path::Path>>(
485    filename: P,
486    contents: &[u8],
487) -> Result<(), Error> {
488    let length = contents.len() as isize;
489    unsafe {
490        let mut error = ptr::null_mut();
491        let _ = glib_sys::g_file_set_contents(
492            filename.as_ref().to_glib_none().0,
493            contents.to_glib_none().0,
494            length,
495            &mut error,
496        );
497        if error.is_null() {
498            Ok(())
499        } else {
500            Err(from_glib_full(error))
501        }
502    }
503}
504
505pub fn file_test<P: AsRef<std::path::Path>>(filename: P, test: FileTest) -> bool {
506    unsafe {
507        from_glib(glib_sys::g_file_test(
508            filename.as_ref().to_glib_none().0,
509            test.to_glib(),
510        ))
511    }
512}
513
514pub fn filename_display_basename<P: AsRef<std::path::Path>>(filename: P) -> Option<GString> {
515    unsafe {
516        from_glib_full(glib_sys::g_filename_display_basename(
517            filename.as_ref().to_glib_none().0,
518        ))
519    }
520}
521
522pub fn filename_display_name<P: AsRef<std::path::Path>>(filename: P) -> Option<GString> {
523    unsafe {
524        from_glib_full(glib_sys::g_filename_display_name(
525            filename.as_ref().to_glib_none().0,
526        ))
527    }
528}
529
530pub fn format_size(size: u64) -> Option<GString> {
531    unsafe { from_glib_full(glib_sys::g_format_size(size)) }
532}
533
534pub fn format_size_full(size: u64, flags: FormatSizeFlags) -> Option<GString> {
535    unsafe { from_glib_full(glib_sys::g_format_size_full(size, flags.to_glib())) }
536}
537
538//pub fn fprintf(file: /*Unimplemented*/Fundamental: Pointer, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> i32 {
539//    unsafe { TODO: call glib_sys:g_fprintf() }
540//}
541
542//pub fn free(mem: /*Unimplemented*/Option<Fundamental: Pointer>) {
543//    unsafe { TODO: call glib_sys:g_free() }
544//}
545
546pub fn get_application_name() -> Option<GString> {
547    unsafe { from_glib_none(glib_sys::g_get_application_name()) }
548}
549
550pub fn get_charset() -> Option<GString> {
551    unsafe {
552        let mut charset = ptr::null();
553        let ret = from_glib(glib_sys::g_get_charset(&mut charset));
554        if ret {
555            Some(from_glib_none(charset))
556        } else {
557            None
558        }
559    }
560}
561
562pub fn get_codeset() -> Option<GString> {
563    unsafe { from_glib_full(glib_sys::g_get_codeset()) }
564}
565
566//pub fn get_current_time(result: /*Ignored*/&mut TimeVal) {
567//    unsafe { TODO: call glib_sys:g_get_current_time() }
568//}
569
570pub fn get_environ() -> Vec<std::ffi::OsString> {
571    unsafe { FromGlibPtrContainer::from_glib_full(glib_sys::g_get_environ()) }
572}
573
574pub fn get_host_name() -> Option<GString> {
575    unsafe { from_glib_none(glib_sys::g_get_host_name()) }
576}
577
578pub fn get_language_names() -> Vec<GString> {
579    unsafe { FromGlibPtrContainer::from_glib_none(glib_sys::g_get_language_names()) }
580}
581
582#[cfg(any(feature = "v2_58", feature = "dox"))]
583pub fn get_language_names_with_category(category_name: &str) -> Vec<GString> {
584    unsafe {
585        FromGlibPtrContainer::from_glib_none(glib_sys::g_get_language_names_with_category(
586            category_name.to_glib_none().0,
587        ))
588    }
589}
590
591pub fn get_locale_variants(locale: &str) -> Vec<GString> {
592    unsafe {
593        FromGlibPtrContainer::from_glib_full(glib_sys::g_get_locale_variants(
594            locale.to_glib_none().0,
595        ))
596    }
597}
598
599pub fn get_monotonic_time() -> i64 {
600    unsafe { glib_sys::g_get_monotonic_time() }
601}
602
603pub fn get_num_processors() -> u32 {
604    unsafe { glib_sys::g_get_num_processors() }
605}
606
607pub fn get_real_time() -> i64 {
608    unsafe { glib_sys::g_get_real_time() }
609}
610
611pub fn get_system_config_dirs() -> Vec<std::path::PathBuf> {
612    unsafe { FromGlibPtrContainer::from_glib_none(glib_sys::g_get_system_config_dirs()) }
613}
614
615pub fn get_system_data_dirs() -> Vec<std::path::PathBuf> {
616    unsafe { FromGlibPtrContainer::from_glib_none(glib_sys::g_get_system_data_dirs()) }
617}
618
619pub fn get_user_cache_dir() -> Option<std::path::PathBuf> {
620    unsafe { from_glib_none(glib_sys::g_get_user_cache_dir()) }
621}
622
623pub fn get_user_config_dir() -> Option<std::path::PathBuf> {
624    unsafe { from_glib_none(glib_sys::g_get_user_config_dir()) }
625}
626
627pub fn get_user_data_dir() -> Option<std::path::PathBuf> {
628    unsafe { from_glib_none(glib_sys::g_get_user_data_dir()) }
629}
630
631pub fn get_user_runtime_dir() -> Option<std::path::PathBuf> {
632    unsafe { from_glib_none(glib_sys::g_get_user_runtime_dir()) }
633}
634
635pub fn get_user_special_dir(directory: UserDirectory) -> Option<std::path::PathBuf> {
636    unsafe { from_glib_none(glib_sys::g_get_user_special_dir(directory.to_glib())) }
637}
638
639pub fn hostname_is_ascii_encoded(hostname: &str) -> bool {
640    unsafe {
641        from_glib(glib_sys::g_hostname_is_ascii_encoded(
642            hostname.to_glib_none().0,
643        ))
644    }
645}
646
647pub fn hostname_is_ip_address(hostname: &str) -> bool {
648    unsafe {
649        from_glib(glib_sys::g_hostname_is_ip_address(
650            hostname.to_glib_none().0,
651        ))
652    }
653}
654
655pub fn hostname_is_non_ascii(hostname: &str) -> bool {
656    unsafe { from_glib(glib_sys::g_hostname_is_non_ascii(hostname.to_glib_none().0)) }
657}
658
659pub fn hostname_to_ascii(hostname: &str) -> Option<GString> {
660    unsafe { from_glib_full(glib_sys::g_hostname_to_ascii(hostname.to_glib_none().0)) }
661}
662
663pub fn hostname_to_unicode(hostname: &str) -> Option<GString> {
664    unsafe { from_glib_full(glib_sys::g_hostname_to_unicode(hostname.to_glib_none().0)) }
665}
666
667//pub fn iconv(converter: /*Ignored*/&IConv, inbuf: &str, inbytes_left: usize, outbuf: &str, outbytes_left: usize) -> usize {
668//    unsafe { TODO: call glib_sys:g_iconv() }
669//}
670
671//pub fn idle_remove_by_data(data: /*Unimplemented*/Option<Fundamental: Pointer>) -> bool {
672//    unsafe { TODO: call glib_sys:g_idle_remove_by_data() }
673//}
674
675//pub fn int64_equal(v1: /*Unimplemented*/Fundamental: Pointer, v2: /*Unimplemented*/Fundamental: Pointer) -> bool {
676//    unsafe { TODO: call glib_sys:g_int64_equal() }
677//}
678
679//pub fn int64_hash(v: /*Unimplemented*/Fundamental: Pointer) -> u32 {
680//    unsafe { TODO: call glib_sys:g_int64_hash() }
681//}
682
683//pub fn int_equal(v1: /*Unimplemented*/Fundamental: Pointer, v2: /*Unimplemented*/Fundamental: Pointer) -> bool {
684//    unsafe { TODO: call glib_sys:g_int_equal() }
685//}
686
687//pub fn int_hash(v: /*Unimplemented*/Fundamental: Pointer) -> u32 {
688//    unsafe { TODO: call glib_sys:g_int_hash() }
689//}
690
691//pub fn io_add_watch(channel: /*Ignored*/&IOChannel, condition: IOCondition, func: /*Unimplemented*/Fn(/*Ignored*/IOChannel, &IOCondition, /*Unimplemented*/Option<Fundamental: Pointer>) -> bool, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> u32 {
692//    unsafe { TODO: call glib_sys:g_io_add_watch() }
693//}
694
695//pub fn io_add_watch_full(channel: /*Ignored*/&IOChannel, priority: i32, condition: IOCondition, func: /*Unimplemented*/Fn(/*Ignored*/IOChannel, &IOCondition, /*Unimplemented*/Option<Fundamental: Pointer>) -> bool, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> u32 {
696//    unsafe { TODO: call glib_sys:g_io_add_watch_full() }
697//}
698
699//pub fn io_create_watch(channel: /*Ignored*/&IOChannel, condition: IOCondition) -> Option<Source> {
700//    unsafe { TODO: call glib_sys:g_io_create_watch() }
701//}
702
703pub fn listenv() -> Vec<std::ffi::OsString> {
704    unsafe { FromGlibPtrContainer::from_glib_full(glib_sys::g_listenv()) }
705}
706
707//pub fn log(log_domain: Option<&str>, log_level: /*Ignored*/LogLevelFlags, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
708//    unsafe { TODO: call glib_sys:g_log() }
709//}
710
711//pub fn log_default_handler(log_domain: Option<&str>, log_level: /*Ignored*/LogLevelFlags, message: Option<&str>, unused_data: /*Unimplemented*/Option<Fundamental: Pointer>) {
712//    unsafe { TODO: call glib_sys:g_log_default_handler() }
713//}
714
715pub fn log_remove_handler(log_domain: &str, handler_id: u32) {
716    unsafe {
717        glib_sys::g_log_remove_handler(log_domain.to_glib_none().0, handler_id);
718    }
719}
720
721//pub fn log_set_always_fatal(fatal_mask: /*Ignored*/LogLevelFlags) -> /*Ignored*/LogLevelFlags {
722//    unsafe { TODO: call glib_sys:g_log_set_always_fatal() }
723//}
724
725//pub fn log_set_default_handler(log_func: /*Unimplemented*/Fn(&str, /*Ignored*/LogLevelFlags, &str), user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> /*Unimplemented*/Fn(&str, /*Ignored*/LogLevelFlags, &str) {
726//    unsafe { TODO: call glib_sys:g_log_set_default_handler() }
727//}
728
729//pub fn log_set_fatal_mask(log_domain: &str, fatal_mask: /*Ignored*/LogLevelFlags) -> /*Ignored*/LogLevelFlags {
730//    unsafe { TODO: call glib_sys:g_log_set_fatal_mask() }
731//}
732
733//pub fn log_set_handler(log_domain: Option<&str>, log_levels: /*Ignored*/LogLevelFlags, log_func: /*Unimplemented*/Fn(&str, /*Ignored*/LogLevelFlags, &str), user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> u32 {
734//    unsafe { TODO: call glib_sys:g_log_set_handler() }
735//}
736
737//#[cfg(any(feature = "v2_46", feature = "dox"))]
738//pub fn log_set_handler_full(log_domain: Option<&str>, log_levels: /*Ignored*/LogLevelFlags, log_func: /*Unimplemented*/Fn(&str, /*Ignored*/LogLevelFlags, &str), user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> u32 {
739//    unsafe { TODO: call glib_sys:g_log_set_handler_full() }
740//}
741
742//#[cfg(any(feature = "v2_50", feature = "dox"))]
743//pub fn log_set_writer_func(func: /*Unimplemented*/Fn(/*Ignored*/LogLevelFlags, /*Ignored*/Vec<LogField>, usize) -> /*Ignored*/LogWriterOutput, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) {
744//    unsafe { TODO: call glib_sys:g_log_set_writer_func() }
745//}
746
747//#[cfg(any(feature = "v2_50", feature = "dox"))]
748//pub fn log_structured(log_domain: &str, log_level: /*Ignored*/LogLevelFlags, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
749//    unsafe { TODO: call glib_sys:g_log_structured() }
750//}
751
752//#[cfg(any(feature = "v2_50", feature = "dox"))]
753//pub fn log_structured_array(log_level: /*Ignored*/LogLevelFlags, fields: /*Ignored*/&[&LogField]) {
754//    unsafe { TODO: call glib_sys:g_log_structured_array() }
755//}
756
757//pub fn log_structured_standard(log_domain: &str, log_level: /*Ignored*/LogLevelFlags, file: &str, line: &str, func: &str, message_format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
758//    unsafe { TODO: call glib_sys:g_log_structured_standard() }
759//}
760
761//#[cfg(any(feature = "v2_50", feature = "dox"))]
762//pub fn log_variant(log_domain: Option<&str>, log_level: /*Ignored*/LogLevelFlags, fields: &Variant) {
763//    unsafe { TODO: call glib_sys:g_log_variant() }
764//}
765
766//#[cfg(any(feature = "v2_50", feature = "dox"))]
767//pub fn log_writer_default(log_level: /*Ignored*/LogLevelFlags, fields: /*Ignored*/&[&LogField], user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> /*Ignored*/LogWriterOutput {
768//    unsafe { TODO: call glib_sys:g_log_writer_default() }
769//}
770
771//#[cfg(any(feature = "v2_50", feature = "dox"))]
772//pub fn log_writer_format_fields(log_level: /*Ignored*/LogLevelFlags, fields: /*Ignored*/&[&LogField], use_color: bool) -> Option<GString> {
773//    unsafe { TODO: call glib_sys:g_log_writer_format_fields() }
774//}
775
776//#[cfg(any(feature = "v2_50", feature = "dox"))]
777//pub fn log_writer_journald(log_level: /*Ignored*/LogLevelFlags, fields: /*Ignored*/&[&LogField], user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> /*Ignored*/LogWriterOutput {
778//    unsafe { TODO: call glib_sys:g_log_writer_journald() }
779//}
780
781//#[cfg(any(feature = "v2_50", feature = "dox"))]
782//pub fn log_writer_standard_streams(log_level: /*Ignored*/LogLevelFlags, fields: /*Ignored*/&[&LogField], user_data: /*Unimplemented*/Option<Fundamental: Pointer>) -> /*Ignored*/LogWriterOutput {
783//    unsafe { TODO: call glib_sys:g_log_writer_standard_streams() }
784//}
785
786//pub fn logv(log_domain: Option<&str>, log_level: /*Ignored*/LogLevelFlags, format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) {
787//    unsafe { TODO: call glib_sys:g_logv() }
788//}
789
790pub fn main_current_source() -> Option<Source> {
791    unsafe { from_glib_none(glib_sys::g_main_current_source()) }
792}
793
794pub fn main_depth() -> i32 {
795    unsafe { glib_sys::g_main_depth() }
796}
797
798//pub fn malloc(n_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
799//    unsafe { TODO: call glib_sys:g_malloc() }
800//}
801
802//pub fn malloc0(n_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
803//    unsafe { TODO: call glib_sys:g_malloc0() }
804//}
805
806//pub fn malloc0_n(n_blocks: usize, n_block_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
807//    unsafe { TODO: call glib_sys:g_malloc0_n() }
808//}
809
810//pub fn malloc_n(n_blocks: usize, n_block_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
811//    unsafe { TODO: call glib_sys:g_malloc_n() }
812//}
813
814//pub fn markup_collect_attributes(element_name: &str, attribute_names: &str, attribute_values: &str, error: &mut Error, first_type: /*Ignored*/MarkupCollectType, first_attr: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool {
815//    unsafe { TODO: call glib_sys:g_markup_collect_attributes() }
816//}
817
818pub fn markup_escape_text(text: &str) -> GString {
819    let length = text.len() as isize;
820    unsafe {
821        from_glib_full(glib_sys::g_markup_escape_text(
822            text.to_glib_none().0,
823            length,
824        ))
825    }
826}
827
828//pub fn markup_printf_escaped(format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> Option<GString> {
829//    unsafe { TODO: call glib_sys:g_markup_printf_escaped() }
830//}
831
832//pub fn markup_vprintf_escaped(format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> Option<GString> {
833//    unsafe { TODO: call glib_sys:g_markup_vprintf_escaped() }
834//}
835
836#[cfg_attr(feature = "v2_46", deprecated)]
837pub fn mem_is_system_malloc() -> bool {
838    unsafe { from_glib(glib_sys::g_mem_is_system_malloc()) }
839}
840
841#[cfg_attr(feature = "v2_46", deprecated)]
842pub fn mem_profile() {
843    unsafe {
844        glib_sys::g_mem_profile();
845    }
846}
847
848//#[cfg_attr(feature = "v2_46", deprecated)]
849//pub fn mem_set_vtable(vtable: /*Ignored*/&mut MemVTable) {
850//    unsafe { TODO: call glib_sys:g_mem_set_vtable() }
851//}
852
853//pub fn memdup(mem: /*Unimplemented*/Option<Fundamental: Pointer>, byte_size: u32) -> /*Unimplemented*/Option<Fundamental: Pointer> {
854//    unsafe { TODO: call glib_sys:g_memdup() }
855//}
856
857pub fn mkdir_with_parents<P: AsRef<std::path::Path>>(pathname: P, mode: i32) -> i32 {
858    unsafe { glib_sys::g_mkdir_with_parents(pathname.as_ref().to_glib_none().0, mode) }
859}
860
861pub fn mkdtemp<P: AsRef<std::path::Path>>(tmpl: P) -> Option<std::path::PathBuf> {
862    unsafe { from_glib_full(glib_sys::g_mkdtemp(tmpl.as_ref().to_glib_none().0)) }
863}
864
865pub fn mkdtemp_full<P: AsRef<std::path::Path>>(tmpl: P, mode: i32) -> Option<std::path::PathBuf> {
866    unsafe {
867        from_glib_full(glib_sys::g_mkdtemp_full(
868            tmpl.as_ref().to_glib_none().0,
869            mode,
870        ))
871    }
872}
873
874pub fn mkstemp_full<P: AsRef<std::path::Path>>(tmpl: P, flags: i32, mode: i32) -> i32 {
875    unsafe { glib_sys::g_mkstemp_full(tmpl.as_ref().to_glib_none().0, flags, mode) }
876}
877
878//pub fn nullify_pointer(nullify_location: /*Unimplemented*/Fundamental: Pointer) {
879//    unsafe { TODO: call glib_sys:g_nullify_pointer() }
880//}
881
882pub fn on_error_query(prg_name: &str) {
883    unsafe {
884        glib_sys::g_on_error_query(prg_name.to_glib_none().0);
885    }
886}
887
888pub fn on_error_stack_trace(prg_name: &str) {
889    unsafe {
890        glib_sys::g_on_error_stack_trace(prg_name.to_glib_none().0);
891    }
892}
893
894//pub fn parse_debug_string(string: Option<&str>, keys: /*Ignored*/&[&DebugKey]) -> u32 {
895//    unsafe { TODO: call glib_sys:g_parse_debug_string() }
896//}
897
898pub fn path_get_basename<P: AsRef<std::path::Path>>(file_name: P) -> Option<std::path::PathBuf> {
899    unsafe {
900        from_glib_full(glib_sys::g_path_get_basename(
901            file_name.as_ref().to_glib_none().0,
902        ))
903    }
904}
905
906pub fn path_get_dirname<P: AsRef<std::path::Path>>(file_name: P) -> Option<std::path::PathBuf> {
907    unsafe {
908        from_glib_full(glib_sys::g_path_get_dirname(
909            file_name.as_ref().to_glib_none().0,
910        ))
911    }
912}
913
914pub fn path_is_absolute<P: AsRef<std::path::Path>>(file_name: P) -> bool {
915    unsafe {
916        from_glib(glib_sys::g_path_is_absolute(
917            file_name.as_ref().to_glib_none().0,
918        ))
919    }
920}
921
922pub fn path_skip_root<P: AsRef<std::path::Path>>(file_name: P) -> Option<std::path::PathBuf> {
923    unsafe {
924        from_glib_none(glib_sys::g_path_skip_root(
925            file_name.as_ref().to_glib_none().0,
926        ))
927    }
928}
929
930//pub fn pattern_match(pspec: /*Ignored*/&mut PatternSpec, string_length: u32, string: &str, string_reversed: Option<&str>) -> bool {
931//    unsafe { TODO: call glib_sys:g_pattern_match() }
932//}
933
934pub fn pattern_match_simple(pattern: &str, string: &str) -> bool {
935    unsafe {
936        from_glib(glib_sys::g_pattern_match_simple(
937            pattern.to_glib_none().0,
938            string.to_glib_none().0,
939        ))
940    }
941}
942
943//pub fn pattern_match_string(pspec: /*Ignored*/&mut PatternSpec, string: &str) -> bool {
944//    unsafe { TODO: call glib_sys:g_pattern_match_string() }
945//}
946
947//pub fn pointer_bit_lock(address: /*Unimplemented*/Fundamental: Pointer, lock_bit: i32) {
948//    unsafe { TODO: call glib_sys:g_pointer_bit_lock() }
949//}
950
951//pub fn pointer_bit_trylock(address: /*Unimplemented*/Fundamental: Pointer, lock_bit: i32) -> bool {
952//    unsafe { TODO: call glib_sys:g_pointer_bit_trylock() }
953//}
954
955//pub fn pointer_bit_unlock(address: /*Unimplemented*/Fundamental: Pointer, lock_bit: i32) {
956//    unsafe { TODO: call glib_sys:g_pointer_bit_unlock() }
957//}
958
959//pub fn poll(fds: /*Ignored*/&mut PollFD, nfds: u32, timeout: i32) -> i32 {
960//    unsafe { TODO: call glib_sys:g_poll() }
961//}
962
963//pub fn prefix_error(err: /*Unimplemented*/Option<Error>, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
964//    unsafe { TODO: call glib_sys:g_prefix_error() }
965//}
966
967//pub fn print(format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
968//    unsafe { TODO: call glib_sys:g_print() }
969//}
970
971//pub fn printerr(format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
972//    unsafe { TODO: call glib_sys:g_printerr() }
973//}
974
975//pub fn printf(format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> i32 {
976//    unsafe { TODO: call glib_sys:g_printf() }
977//}
978
979//pub fn printf_string_upper_bound(format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> usize {
980//    unsafe { TODO: call glib_sys:g_printf_string_upper_bound() }
981//}
982
983//pub fn propagate_prefixed_error(dest: &mut Error, src: &mut Error, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
984//    unsafe { TODO: call glib_sys:g_propagate_prefixed_error() }
985//}
986
987//pub fn qsort_with_data(pbase: /*Unimplemented*/Fundamental: Pointer, total_elems: i32, size: usize, compare_func: /*Unimplemented*/Fn(/*Unimplemented*/Option<Fundamental: Pointer>, /*Unimplemented*/Option<Fundamental: Pointer>) -> i32, user_data: /*Unimplemented*/Option<Fundamental: Pointer>) {
988//    unsafe { TODO: call glib_sys:g_qsort_with_data() }
989//}
990
991pub fn random_double() -> f64 {
992    unsafe { glib_sys::g_random_double() }
993}
994
995pub fn random_double_range(begin: f64, end: f64) -> f64 {
996    unsafe { glib_sys::g_random_double_range(begin, end) }
997}
998
999pub fn random_int() -> u32 {
1000    unsafe { glib_sys::g_random_int() }
1001}
1002
1003pub fn random_int_range(begin: i32, end: i32) -> i32 {
1004    unsafe { glib_sys::g_random_int_range(begin, end) }
1005}
1006
1007pub fn random_set_seed(seed: u32) {
1008    unsafe {
1009        glib_sys::g_random_set_seed(seed);
1010    }
1011}
1012
1013//pub fn realloc(mem: /*Unimplemented*/Option<Fundamental: Pointer>, n_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1014//    unsafe { TODO: call glib_sys:g_realloc() }
1015//}
1016
1017//pub fn realloc_n(mem: /*Unimplemented*/Option<Fundamental: Pointer>, n_blocks: usize, n_block_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1018//    unsafe { TODO: call glib_sys:g_realloc_n() }
1019//}
1020
1021pub fn reload_user_special_dirs_cache() {
1022    unsafe {
1023        glib_sys::g_reload_user_special_dirs_cache();
1024    }
1025}
1026
1027pub fn return_if_fail_warning(
1028    log_domain: Option<&str>,
1029    pretty_function: &str,
1030    expression: Option<&str>,
1031) {
1032    unsafe {
1033        glib_sys::g_return_if_fail_warning(
1034            log_domain.to_glib_none().0,
1035            pretty_function.to_glib_none().0,
1036            expression.to_glib_none().0,
1037        );
1038    }
1039}
1040
1041pub fn rmdir<P: AsRef<std::path::Path>>(filename: P) -> i32 {
1042    unsafe { glib_sys::g_rmdir(filename.as_ref().to_glib_none().0) }
1043}
1044
1045pub fn set_application_name(application_name: &str) {
1046    unsafe {
1047        glib_sys::g_set_application_name(application_name.to_glib_none().0);
1048    }
1049}
1050
1051//pub fn set_error(domain: Quark, code: i32, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> Error {
1052//    unsafe { TODO: call glib_sys:g_set_error() }
1053//}
1054
1055//pub fn set_print_handler<P: Fn(&str) + Send + Sync + 'static>(func: P) -> Option<Box<dyn Fn(&str) + 'static>> {
1056//    unsafe { TODO: call glib_sys:g_set_print_handler() }
1057//}
1058
1059//pub fn set_printerr_handler<P: Fn(&str) + Send + Sync + 'static>(func: P) -> Option<Box<dyn Fn(&str) + 'static>> {
1060//    unsafe { TODO: call glib_sys:g_set_printerr_handler() }
1061//}
1062
1063pub fn shell_parse_argv<P: AsRef<std::ffi::OsStr>>(
1064    command_line: P,
1065) -> Result<Vec<std::ffi::OsString>, Error> {
1066    unsafe {
1067        let mut argcp = mem::uninitialized();
1068        let mut argvp = ptr::null_mut();
1069        let mut error = ptr::null_mut();
1070        let _ = glib_sys::g_shell_parse_argv(
1071            command_line.as_ref().to_glib_none().0,
1072            &mut argcp,
1073            &mut argvp,
1074            &mut error,
1075        );
1076        if error.is_null() {
1077            Ok(FromGlibContainer::from_glib_full_num(argvp, argcp as usize))
1078        } else {
1079            Err(from_glib_full(error))
1080        }
1081    }
1082}
1083
1084pub fn shell_quote<P: AsRef<std::ffi::OsStr>>(unquoted_string: P) -> Option<std::ffi::OsString> {
1085    unsafe {
1086        from_glib_full(glib_sys::g_shell_quote(
1087            unquoted_string.as_ref().to_glib_none().0,
1088        ))
1089    }
1090}
1091
1092pub fn shell_unquote<P: AsRef<std::ffi::OsStr>>(
1093    quoted_string: P,
1094) -> Result<std::ffi::OsString, Error> {
1095    unsafe {
1096        let mut error = ptr::null_mut();
1097        let ret = glib_sys::g_shell_unquote(quoted_string.as_ref().to_glib_none().0, &mut error);
1098        if error.is_null() {
1099            Ok(from_glib_full(ret))
1100        } else {
1101            Err(from_glib_full(error))
1102        }
1103    }
1104}
1105
1106//pub fn slice_alloc(block_size: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1107//    unsafe { TODO: call glib_sys:g_slice_alloc() }
1108//}
1109
1110//pub fn slice_alloc0(block_size: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1111//    unsafe { TODO: call glib_sys:g_slice_alloc0() }
1112//}
1113
1114//pub fn slice_copy(block_size: usize, mem_block: /*Unimplemented*/Option<Fundamental: Pointer>) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1115//    unsafe { TODO: call glib_sys:g_slice_copy() }
1116//}
1117
1118//pub fn slice_free1(block_size: usize, mem_block: /*Unimplemented*/Option<Fundamental: Pointer>) {
1119//    unsafe { TODO: call glib_sys:g_slice_free1() }
1120//}
1121
1122//pub fn slice_free_chain_with_offset(block_size: usize, mem_chain: /*Unimplemented*/Option<Fundamental: Pointer>, next_offset: usize) {
1123//    unsafe { TODO: call glib_sys:g_slice_free_chain_with_offset() }
1124//}
1125
1126//pub fn slice_get_config(ckey: /*Ignored*/SliceConfig) -> i64 {
1127//    unsafe { TODO: call glib_sys:g_slice_get_config() }
1128//}
1129
1130//pub fn slice_get_config_state(ckey: /*Ignored*/SliceConfig, address: i64, n_values: u32) -> i64 {
1131//    unsafe { TODO: call glib_sys:g_slice_get_config_state() }
1132//}
1133
1134//pub fn slice_set_config(ckey: /*Ignored*/SliceConfig, value: i64) {
1135//    unsafe { TODO: call glib_sys:g_slice_set_config() }
1136//}
1137
1138//pub fn snprintf(string: &str, n: libc::c_ulong, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> i32 {
1139//    unsafe { TODO: call glib_sys:g_snprintf() }
1140//}
1141
1142pub fn spaced_primes_closest(num: u32) -> u32 {
1143    unsafe { glib_sys::g_spaced_primes_closest(num) }
1144}
1145
1146//pub fn spawn_async<P: AsRef<std::path::Path>>(working_directory: P, argv: &[&std::path::Path], envp: &[&std::path::Path], flags: SpawnFlags, child_setup: Option<Box<dyn FnOnce() + 'static>>) -> Result<Pid, Error> {
1147//    unsafe { TODO: call glib_sys:g_spawn_async() }
1148//}
1149
1150//#[cfg(any(feature = "v2_58", feature = "dox"))]
1151//pub fn spawn_async_with_fds<P: AsRef<std::path::Path>>(working_directory: P, argv: &[&str], envp: &[&str], flags: SpawnFlags, child_setup: Option<Box<dyn FnOnce() + 'static>>, stdin_fd: i32, stdout_fd: i32, stderr_fd: i32) -> Result<Pid, Error> {
1152//    unsafe { TODO: call glib_sys:g_spawn_async_with_fds() }
1153//}
1154
1155//pub fn spawn_async_with_pipes<P: AsRef<std::path::Path>>(working_directory: P, argv: &[&std::path::Path], envp: &[&std::path::Path], flags: SpawnFlags, child_setup: Option<Box<dyn FnOnce() + 'static>>) -> Result<(Pid, i32, i32, i32), Error> {
1156//    unsafe { TODO: call glib_sys:g_spawn_async_with_pipes() }
1157//}
1158
1159pub fn spawn_check_exit_status(exit_status: i32) -> Result<(), Error> {
1160    unsafe {
1161        let mut error = ptr::null_mut();
1162        let _ = glib_sys::g_spawn_check_exit_status(exit_status, &mut error);
1163        if error.is_null() {
1164            Ok(())
1165        } else {
1166            Err(from_glib_full(error))
1167        }
1168    }
1169}
1170
1171#[cfg(any(unix, feature = "dox"))]
1172pub fn spawn_command_line_async<P: AsRef<std::ffi::OsStr>>(command_line: P) -> Result<(), Error> {
1173    unsafe {
1174        let mut error = ptr::null_mut();
1175        let _ = glib_sys::g_spawn_command_line_async(
1176            command_line.as_ref().to_glib_none().0,
1177            &mut error,
1178        );
1179        if error.is_null() {
1180            Ok(())
1181        } else {
1182            Err(from_glib_full(error))
1183        }
1184    }
1185}
1186
1187//pub fn spawn_command_line_sync<P: AsRef<std::path::Path>>(command_line: P, standard_output: Vec<u8>, standard_error: Vec<u8>) -> Result<i32, Error> {
1188//    unsafe { TODO: call glib_sys:g_spawn_command_line_sync() }
1189//}
1190
1191//pub fn spawn_sync<P: AsRef<std::path::Path>>(working_directory: P, argv: &[&std::path::Path], envp: &[&std::path::Path], flags: SpawnFlags, child_setup: Option<Box<dyn FnOnce() + 'static>>, standard_output: Vec<u8>, standard_error: Vec<u8>) -> Result<i32, Error> {
1192//    unsafe { TODO: call glib_sys:g_spawn_sync() }
1193//}
1194
1195//pub fn sprintf(string: &str, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> i32 {
1196//    unsafe { TODO: call glib_sys:g_sprintf() }
1197//}
1198
1199pub fn stpcpy(dest: &str, src: &str) -> Option<GString> {
1200    unsafe {
1201        from_glib_full(glib_sys::g_stpcpy(
1202            dest.to_glib_none().0,
1203            src.to_glib_none().0,
1204        ))
1205    }
1206}
1207
1208//pub fn try_malloc(n_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1209//    unsafe { TODO: call glib_sys:g_try_malloc() }
1210//}
1211
1212//pub fn try_malloc0(n_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1213//    unsafe { TODO: call glib_sys:g_try_malloc0() }
1214//}
1215
1216//pub fn try_malloc0_n(n_blocks: usize, n_block_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1217//    unsafe { TODO: call glib_sys:g_try_malloc0_n() }
1218//}
1219
1220//pub fn try_malloc_n(n_blocks: usize, n_block_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1221//    unsafe { TODO: call glib_sys:g_try_malloc_n() }
1222//}
1223
1224//pub fn try_realloc(mem: /*Unimplemented*/Option<Fundamental: Pointer>, n_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1225//    unsafe { TODO: call glib_sys:g_try_realloc() }
1226//}
1227
1228//pub fn try_realloc_n(mem: /*Unimplemented*/Option<Fundamental: Pointer>, n_blocks: usize, n_block_bytes: usize) -> /*Unimplemented*/Option<Fundamental: Pointer> {
1229//    unsafe { TODO: call glib_sys:g_try_realloc_n() }
1230//}
1231
1232//pub fn unicode_script_from_iso15924(iso15924: u32) -> /*Ignored*/UnicodeScript {
1233//    unsafe { TODO: call glib_sys:g_unicode_script_from_iso15924() }
1234//}
1235
1236//pub fn unicode_script_to_iso15924(script: /*Ignored*/UnicodeScript) -> u32 {
1237//    unsafe { TODO: call glib_sys:g_unicode_script_to_iso15924() }
1238//}
1239
1240pub fn unlink<P: AsRef<std::path::Path>>(filename: P) -> i32 {
1241    unsafe { glib_sys::g_unlink(filename.as_ref().to_glib_none().0) }
1242}
1243
1244pub fn uri_escape_string(
1245    unescaped: &str,
1246    reserved_chars_allowed: Option<&str>,
1247    allow_utf8: bool,
1248) -> Option<GString> {
1249    unsafe {
1250        from_glib_full(glib_sys::g_uri_escape_string(
1251            unescaped.to_glib_none().0,
1252            reserved_chars_allowed.to_glib_none().0,
1253            allow_utf8.to_glib(),
1254        ))
1255    }
1256}
1257
1258pub fn uri_list_extract_uris(uri_list: &str) -> Vec<GString> {
1259    unsafe {
1260        FromGlibPtrContainer::from_glib_full(glib_sys::g_uri_list_extract_uris(
1261            uri_list.to_glib_none().0,
1262        ))
1263    }
1264}
1265
1266pub fn uri_parse_scheme(uri: &str) -> Option<GString> {
1267    unsafe { from_glib_full(glib_sys::g_uri_parse_scheme(uri.to_glib_none().0)) }
1268}
1269
1270pub fn uri_unescape_segment(
1271    escaped_string: Option<&str>,
1272    escaped_string_end: Option<&str>,
1273    illegal_characters: Option<&str>,
1274) -> Option<GString> {
1275    unsafe {
1276        from_glib_full(glib_sys::g_uri_unescape_segment(
1277            escaped_string.to_glib_none().0,
1278            escaped_string_end.to_glib_none().0,
1279            illegal_characters.to_glib_none().0,
1280        ))
1281    }
1282}
1283
1284pub fn uri_unescape_string(
1285    escaped_string: &str,
1286    illegal_characters: Option<&str>,
1287) -> Option<GString> {
1288    unsafe {
1289        from_glib_full(glib_sys::g_uri_unescape_string(
1290            escaped_string.to_glib_none().0,
1291            illegal_characters.to_glib_none().0,
1292        ))
1293    }
1294}
1295
1296pub fn usleep(microseconds: libc::c_ulong) {
1297    unsafe {
1298        glib_sys::g_usleep(microseconds);
1299    }
1300}
1301
1302#[cfg(any(feature = "v2_52", feature = "dox"))]
1303pub fn uuid_string_is_valid(str: &str) -> bool {
1304    unsafe { from_glib(glib_sys::g_uuid_string_is_valid(str.to_glib_none().0)) }
1305}
1306
1307#[cfg(any(feature = "v2_52", feature = "dox"))]
1308pub fn uuid_string_random() -> Option<GString> {
1309    unsafe { from_glib_full(glib_sys::g_uuid_string_random()) }
1310}
1311
1312pub fn variant_get_gtype() -> types::Type {
1313    unsafe { from_glib(glib_sys::g_variant_get_gtype()) }
1314}
1315
1316//pub fn vasprintf(string: &str, format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> i32 {
1317//    unsafe { TODO: call glib_sys:g_vasprintf() }
1318//}
1319
1320//pub fn vfprintf(file: /*Unimplemented*/Fundamental: Pointer, format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> i32 {
1321//    unsafe { TODO: call glib_sys:g_vfprintf() }
1322//}
1323
1324//pub fn vprintf(format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> i32 {
1325//    unsafe { TODO: call glib_sys:g_vprintf() }
1326//}
1327
1328//pub fn vsnprintf(string: &str, n: libc::c_ulong, format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> i32 {
1329//    unsafe { TODO: call glib_sys:g_vsnprintf() }
1330//}
1331
1332//pub fn vsprintf(string: &str, format: &str, args: /*Unknown conversion*//*Unimplemented*/Unsupported) -> i32 {
1333//    unsafe { TODO: call glib_sys:g_vsprintf() }
1334//}
1335
1336pub fn warn_message(
1337    domain: Option<&str>,
1338    file: &str,
1339    line: i32,
1340    func: &str,
1341    warnexpr: Option<&str>,
1342) {
1343    unsafe {
1344        glib_sys::g_warn_message(
1345            domain.to_glib_none().0,
1346            file.to_glib_none().0,
1347            line,
1348            func.to_glib_none().0,
1349            warnexpr.to_glib_none().0,
1350        );
1351    }
1352}