I've no idea here...
[gtkD.git] / src / glib / Util.d
bloba730f4b1c2fe7ea203d13f32fdc4acdd7906a857
1 /*
2 * This file is part of duit.
4 * duit is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; either version 2.1 of the License, or
7 * (at your option) any later version.
9 * duit is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with duit; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 // generated automatically - do not change
20 // find conversion definition on APILookup.txt
21 // implement new conversion functionalities on the wrap.utils pakage
24 * Conversion parameters:
25 * inFile = glib-Miscellaneous-Utility-Functions.html
26 * outPack = glib
27 * outFile = Util
28 * strct =
29 * realStrct=
30 * ctorStrct=
31 * clss = Util
32 * interf =
33 * class Code: No
34 * interface Code: No
35 * template for:
36 * extend =
37 * implements:
38 * prefixes:
39 * - g_
40 * omit structs:
41 * omit prefixes:
42 * omit code:
43 * imports:
44 * - glib.ListG
45 * - glib.Str
46 * structWrap:
47 * - GList* -> ListG
48 * local aliases:
51 module glib.Util;
53 private import glib.glibtypes;
55 private import lib.glib;
57 private import glib.ListG;
58 private import glib.Str;
60 /**
61 * Description
62 * These are portable utility functions.
64 public class Util
67 /**
70 /**
71 * Gets a human-readable name for the application, as set by
72 * g_set_application_name(). This name should be localized if
73 * possible, and is intended for display to the user. Contrast with
74 * g_get_prgname(), which gets a non-localized name. If
75 * g_set_application_name() has not been called, returns the result of
76 * g_get_prgname() (which may be NULL if g_set_prgname() has also not
77 * been called).
78 * Returns:
79 * human-readable application name. may return NULL
80 * Since 2.2
82 public static char[] getApplicationName()
84 // const gchar* g_get_application_name (void);
85 return Str.toString(g_get_application_name() );
88 /**
89 * Sets a human-readable name for the application. This name should be
90 * localized if possible, and is intended for display to the user.
91 * Contrast with g_set_prgname(), which sets a non-localized name.
92 * g_set_prgname() will be called automatically by gtk_init(),
93 * but g_set_application_name() will not.
94 * Note that for thread safety reasons, this function can only
95 * be called once.
96 * The application name will be used in contexts such as error messages,
97 * or when displaying an application's name in the task list.
98 * application_name:
99 * localized name of the application
101 public static void setApplicationName(char[] applicationName)
103 // void g_set_application_name (const gchar *application_name);
104 g_set_application_name(Str.toStringz(applicationName));
108 * Gets the name of the program. This name should not
109 * be localized, contrast with g_get_application_name().
110 * (If you are using GDK or GTK+ the program name is set in gdk_init(),
111 * which is called by gtk_init(). The program name is found by taking
112 * the last component of argv[0].)
113 * Returns:
114 * the name of the program. The returned string belongs
115 * to GLib and must not be modified or freed.
117 public static char[] getPrgname()
119 // gchar* g_get_prgname (void);
120 return Str.toString(g_get_prgname() );
124 * Sets the name of the program. This name should not
125 * be localized, contrast with g_set_application_name(). Note that for
126 * thread-safety reasons this function can only be called once.
127 * prgname:
128 * the name of the program.
130 public static void setPrgname(char[] prgname)
132 // void g_set_prgname (const gchar *prgname);
133 g_set_prgname(Str.toStringz(prgname));
137 * Returns the value of an environment variable. The name and value
138 * are in the GLib file name encoding. On UNIX, this means the actual
139 * bytes which might or might not be in some consistent character set
140 * and encoding. On Windows, it is in UTF-8. On Windows, in case the
141 * environment variable's value contains references to other
142 * environment variables, they are expanded.
143 * variable:
144 * the environment variable to get, in the GLib file name encoding.
145 * Returns:
146 * the value of the environment variable, or NULL if
147 * the environment variable is not found. The returned string may be
148 * overwritten by the next call to g_getenv(), g_setenv() or
149 * g_unsetenv().
151 public static char[] getenv(char[] variable)
153 // const gchar* g_getenv (const gchar *variable);
154 return Str.toString(g_getenv(Str.toStringz(variable)) );
158 * Sets an environment variable. Both the variable's name and value
159 * should be in the GLib file name encoding. On UNIX, this means that
160 * they can be any sequence of bytes. On Windows, they should be in
161 * UTF-8.
162 * Note that on some systems, when variables are overwritten, the memory
163 * used for the previous variables and its value isn't reclaimed.
164 * variable:
165 * the environment variable to set, must not contain '='.
166 * value:
167 * the value for to set the variable to.
168 * overwrite:
169 * whether to change the variable if it already exists.
170 * Returns:
171 * FALSE if the environment variable couldn't be set.
172 * Since 2.4
174 public static int setenv(char[] variable, char[] value, int overwrite)
176 // gboolean g_setenv (const gchar *variable, const gchar *value, gboolean overwrite);
177 return g_setenv(Str.toStringz(variable), Str.toStringz(value), overwrite);
181 * Removes an environment variable from the environment.
182 * Note that on some systems, when variables are overwritten, the memory
183 * used for the previous variables and its value isn't reclaimed.
184 * Furthermore, this function can't be guaranteed to operate in a
185 * threadsafe way.
186 * variable:
187 * the environment variable to remove, must not contain '='.
188 * Since 2.4
190 public static void unsetenv(char[] variable)
192 // void g_unsetenv (const gchar *variable);
193 g_unsetenv(Str.toStringz(variable));
197 * Gets the names of all variables set in the environment.
198 * Returns:
199 * a NULL-terminated list of strings which must be freed
200 * with g_strfreev().
201 * Programs that want to be portable to Windows should typically use
202 * this function and g_getenv() instead of using the environ array
203 * from the C library directly. On Windows, the strings in the environ
204 * array are in system codepage encoding, while in most of the typical
205 * use cases for environment variables in GLib-using programs you want
206 * the UTF-8 encoding that this function and g_getenv() provide.
207 * Since 2.8
209 public static char** listenv()
211 // gchar** g_listenv (void);
212 return g_listenv();
216 * Gets the user name of the current user. The encoding of the returned
217 * string is system-defined. On UNIX, it might be the preferred file name
218 * encoding, or something else, and there is no guarantee that it is even
219 * consistent on a machine. On Windows, it is always UTF-8.
220 * Returns:
221 * the user name of the current user.
223 public static char[] getUserName()
225 // const gchar* g_get_user_name (void);
226 return Str.toString(g_get_user_name() );
230 * Gets the real name of the user. This usually comes from the user's entry
231 * in the passwd file. The encoding of the returned
232 * string is system-defined. (On Windows, it is, however, always UTF-8.)
233 * If the real user name cannot be determined, the string "Unknown" is
234 * returned.
235 * Returns:
236 * the user's real name.
238 public static char[] getRealName()
240 // const gchar* g_get_real_name (void);
241 return Str.toString(g_get_real_name() );
245 * Returns a base directory in which to store non-essential, cached
246 * data specific to particular user.
247 * On UNIX platforms this is determined using the mechanisms described in
248 * the
249 * XDG Base Directory Specification
250 * Returns:
251 * a string owned by GLib that must not be modified
252 * or freed.
253 * Since 2.6
255 public static char[] getUserCacheDir()
257 // const gchar* g_get_user_cache_dir (void);
258 return Str.toString(g_get_user_cache_dir() );
262 * Returns a base directory in which to access application data such
263 * as icons that is customized for a particular user.
264 * On UNIX platforms this is determined using the mechanisms described in
265 * the
266 * XDG Base Directory Specification
267 * Returns:
268 * a string owned by GLib that must not be modified
269 * or freed.
270 * Since 2.6
272 public static char[] getUserDataDir()
274 // const gchar* g_get_user_data_dir (void);
275 return Str.toString(g_get_user_data_dir() );
279 * Returns a base directory in which to store user-specific application
280 * configuration information such as user preferences and settings.
281 * On UNIX platforms this is determined using the mechanisms described in
282 * the
283 * XDG Base Directory Specification
284 * Returns:
285 * a string owned by GLib that must not be modified
286 * or freed.
287 * Since 2.6
289 public static char[] getUserConfigDir()
291 // const gchar* g_get_user_config_dir (void);
292 return Str.toString(g_get_user_config_dir() );
296 * Returns an ordered list of base directories in which to access
297 * system-wide application data.
298 * On UNIX platforms this is determined using the mechanisms described in
299 * the
300 * XDG Base Directory Specification
301 * On Windows the first elements in the list are the Application Data
302 * and Documents folders for All Users. (These can be determined only
303 * on Windows 2000 or later and are not present in the list on other
304 * Windows versions.) See documentation for CSIDL_COMMON_APPDATA and
305 * CSIDL_COMMON_DOCUMENTS.
306 * Then follows the "share" subfolder in the installation folder for
307 * the package containing the DLL that calls this function, if it can
308 * be determined.
309 * Finally the list contains the "share" subfolder in the installation
310 * folder for GLib, and in the installation folder for the package the
311 * application's .exe file belongs to.
312 * The installation folders above are determined by looking up the
313 * folder where the module (DLL or EXE) in question is located. If the
314 * folder's name is "bin", its parent is used, otherwise the folder
315 * itself.
316 * Note that on Windows the returned list can vary depending on where
317 * this function is called.
318 * Returns:
319 * a NULL-terminated array of strings owned by GLib that must
320 * not be modified or freed.
321 * Since 2.6
323 public static char** getSystemDataDirs()
325 // const gchar* const * g_get_system_data_dirs (void);
326 return g_get_system_data_dirs();
330 * Returns an ordered list of base directories in which to access
331 * system-wide configuration information.
332 * On UNIX platforms this is determined using the mechanisms described in
333 * the
334 * XDG Base Directory Specification
335 * Returns:
336 * a NULL-terminated array of strings owned by GLib that must
337 * not be modified or freed.
338 * Since 2.6
340 public static char** getSystemConfigDirs()
342 // const gchar* const * g_get_system_config_dirs (void);
343 return g_get_system_config_dirs();
347 * Return a name for the machine.
348 * The returned name is not necessarily a fully-qualified domain name,
349 * or even present in DNS or some other name service at all. It need
350 * not even be unique on your local network or site, but usually it
351 * is. Callers should not rely on the return value having any specific
352 * properties like uniqueness for security purposes. Even if the name
353 * of the machine is changed while an application is running, the
354 * return value from this function does not change. The returned
355 * string is owned by GLib and should not be modified or freed. If no
356 * name can be determined, a default fixed string "localhost" is
357 * returned.
358 * Returns:
359 * the host name of the machine.
360 * Since 2.8
362 public static char[] getHostName()
364 // const gchar* g_get_host_name (void);
365 return Str.toString(g_get_host_name() );
369 * Gets the current user's home directory.
370 * Note that in contrast to traditional UNIX tools, this function
371 * prefers passwd entries over the HOME
372 * environment variable.
373 * Returns:
374 * the current user's home directory.
376 public static char[] getHomeDir()
378 // const gchar* g_get_home_dir (void);
379 return Str.toString(g_get_home_dir() );
383 * Gets the directory to use for temporary files. This is found from
384 * inspecting the environment variables TMPDIR,
385 * TMP, and TEMP in that order. If none
386 * of those are defined "/tmp" is returned on UNIX and "C:\" on Windows.
387 * The encoding of the returned string is system-defined. On Windows,
388 * it is always UTF-8. The return value is never NULL.
389 * Returns:
390 * the directory to use for temporary files.
392 public static char[] getTmpDir()
394 // const gchar* g_get_tmp_dir (void);
395 return Str.toString(g_get_tmp_dir() );
399 * Gets the current directory.
400 * The returned string should be freed when no longer needed. The encoding
401 * of the returned string is system defined. On Windows, it is always UTF-8.
402 * Returns:
403 * the current directory.
405 public static char[] getCurrentDir()
407 // gchar* g_get_current_dir (void);
408 return Str.toString(g_get_current_dir() );
412 * Warning
413 * g_basename has been deprecated since version 2.2 and should not be used in newly-written code. Use g_path_get_basename() instead, but notice that
414 * g_path_get_basename() allocates new memory for the returned string, unlike
415 * this function which returns a pointer into the argument.
416 * Gets the name of the file without any leading directory components.
417 * It returns a pointer into the given file name string.
418 * file_name:
419 * the name of the file.
420 * Returns:
421 * the name of the file without any leading directory components.
423 public static char[] basename(char[] fileName)
425 // const gchar* g_basename (const gchar *file_name);
426 return Str.toString(g_basename(Str.toStringz(fileName)) );
431 * Returns TRUE if the given file_name is an absolute file name,
432 * i.e. it contains a full path from the root directory such as "/usr/local"
433 * on UNIX or "C:\windows" on Windows systems.
434 * file_name:
435 * a file name.
436 * Returns:
437 * TRUE if file_name is an absolute path.
439 public static int pathIsAbsolute(char[] fileName)
441 // gboolean g_path_is_absolute (const gchar *file_name);
442 return g_path_is_absolute(Str.toStringz(fileName));
446 * Returns a pointer into file_name after the root component, i.e. after
447 * the "/" in UNIX or "C:\" under Windows. If file_name is not an absolute
448 * path it returns NULL.
449 * file_name:
450 * a file name.
451 * Returns:
452 * a pointer into file_name after the root component.
454 public static char[] pathSkipRoot(char[] fileName)
456 // const gchar* g_path_skip_root (const gchar *file_name);
457 return Str.toString(g_path_skip_root(Str.toStringz(fileName)) );
461 * Gets the last component of the filename. If file_name ends with a
462 * directory separator it gets the component before the last slash. If
463 * file_name consists only of directory separators (and on Windows,
464 * possibly a drive letter), a single separator is returned. If
465 * file_name is empty, it gets ".".
466 * file_name:
467 * the name of the file.
468 * Returns:
469 * a newly allocated string containing the last component of
470 * the filename.
472 public static char[] pathGetBasename(char[] fileName)
474 // gchar* g_path_get_basename (const gchar *file_name);
475 return Str.toString(g_path_get_basename(Str.toStringz(fileName)) );
479 * Gets the directory components of a file name. If the file name has no
480 * directory components "." is returned. The returned string should be
481 * freed when no longer needed.
482 * file_name:
483 * the name of the file.
484 * Returns:
485 * the directory components of the file.
487 public static char[] pathGetDirname(char[] fileName)
489 // gchar* g_path_get_dirname (const gchar *file_name);
490 return Str.toString(g_path_get_dirname(Str.toStringz(fileName)) );
494 * Creates a filename from a series of elements using the correct
495 * separator for filenames.
496 * On Unix, this function behaves identically to g_build_path
497 * (G_DIR_SEPARATOR_S, first_element, ....).
498 * On Windows, it takes into account that either the backslash
499 * (\ or slash (/) can be used
500 * as separator in filenames, but otherwise behaves as on Unix. When
501 * file pathname separators need to be inserted, the one that last
502 * previously occurred in the parameters (reading from left to right)
503 * is used.
504 * No attempt is made to force the resulting filename to be an absolute
505 * path. If the first element is a relative path, the result will
506 * be a relative path.
507 * first_element:
508 * the first element in the path
509 * ...:
510 * remaining elements in path, terminated by NULL
511 * Returns:
512 * a newly-allocated string that must be freed with g_free().
514 public static char[] buildFilename(char[] firstElement, ... )
516 // gchar* g_build_filename (const gchar *first_element, ...);
517 return Str.toString(g_build_filename(Str.toStringz(firstElement)) );
521 * Behaves exactly like g_build_filename(), but takes the path elements
522 * as a string array, instead of varargs. This function is mainly
523 * meant for language bindings.
524 * args:
525 * NULL-terminated array of strings containing the path elements.
526 * Returns:
527 * a newly-allocated string that must be freed with g_free().
528 * Since 2.8
530 public static char[] buildFilenamev(char** args)
532 // gchar* g_build_filenamev (gchar **args);
533 return Str.toString(g_build_filenamev(args) );
537 * Creates a path from a series of elements using separator as the
538 * separator between elements. At the boundary between two elements,
539 * any trailing occurrences of separator in the first element, or
540 * leading occurrences of separator in the second element are removed
541 * and exactly one copy of the separator is inserted.
542 * Empty elements are ignored.
543 * The number of leading copies of the separator on the result is
544 * the same as the number of leading copies of the separator on
545 * the first non-empty element.
546 * The number of trailing copies of the separator on the result is
547 * the same as the number of trailing copies of the separator on
548 * the last non-empty element. (Determination of the number of
549 * trailing copies is done without stripping leading copies, so
550 * if the separator is ABA, ABABA
551 * has 1 trailing copy.)
552 * However, if there is only a single non-empty element, and there
553 * are no characters in that element not part of the leading or
554 * trailing separators, then the result is exactly the original value
555 * of that element.
556 * Other than for determination of the number of leading and trailing
557 * copies of the separator, elements consisting only of copies
558 * of the separator are ignored.
559 * separator:
560 * a string used to separator the elements of the path.
561 * first_element:
562 * the first element in the path
563 * ...:
564 * remaining elements in path, terminated by NULL
565 * Returns:
566 * a newly-allocated string that must be freed with g_free().
568 public static char[] buildPath(char[] separator, char[] firstElement, ... )
570 // gchar* g_build_path (const gchar *separator, const gchar *first_element, ...);
571 return Str.toString(g_build_path(Str.toStringz(separator), Str.toStringz(firstElement)) );
575 * Behaves exactly like g_build_path(), but takes the path elements
576 * as a string array, instead of varargs. This function is mainly
577 * meant for language bindings.
578 * separator:
579 * a string used to separator the elements of the path.
580 * args:
581 * NULL-terminated array of strings containing the path elements.
582 * Returns:
583 * a newly-allocated string that must be freed with g_free().
584 * Since 2.8
586 public static char[] buildPathv(char[] separator, char** args)
588 // gchar* g_build_pathv (const gchar *separator, gchar **args);
589 return Str.toString(g_build_pathv(Str.toStringz(separator), args) );
593 * Locates the first executable named program in the user's path, in the
594 * same way that execvp() would locate it. Returns an allocated string
595 * with the absolute path name, or NULL if the program is not found in
596 * the path. If program is already an absolute path, returns a copy of
597 * program if program exists and is executable, and NULL otherwise.
598 * On Windows, if program does not have a file type suffix, tries
599 * with the suffixes .exe, .cmd, .bat and .com, and the suffixes in
600 * the PATHEXT environment variable.
601 * On Windows, it looks for the file in the same way as CreateProcess()
602 * would. This means first in the directory where the executing
603 * program was loaded from, then in the current directory, then in the
604 * Windows 32-bit system directory, then in the Windows directory, and
605 * finally in the directories in the PATH environment
606 * variable. If the program is found, the return value contains the
607 * full name including the type suffix.
608 * program:
609 * a program name in the GLib file name encoding
610 * Returns:
611 * absolute path, or NULL
613 public static char[] findProgramInPath(char[] program)
615 // gchar* g_find_program_in_path (const gchar *program);
616 return Str.toString(g_find_program_in_path(Str.toStringz(program)) );
620 * Find the position of the first bit set in mask, searching from (but not
621 * including) nth_bit upwards. Bits are numbered from 0 (least significant)
622 * to sizeof(gulong) * 8 - 1 (31 or 63, usually). To start searching from the
623 * 0th bit, set nth_bit to -1.
624 * mask:
625 * a gulong containing flags.
626 * nth_bit:
627 * the index of the bit to start the search from.
628 * Returns:
629 * the index of the first bit set which is higher than nth_bit.
631 public static int bitNthLsf(uint mask, int nthBit)
633 // gint g_bit_nth_lsf (gulong mask, gint nth_bit);
634 return g_bit_nth_lsf(mask, nthBit);
638 * Find the position of the first bit set in mask, searching from (but not
639 * including) nth_bit downwards. Bits are numbered from 0 (least significant)
640 * to sizeof(gulong) * 8 - 1 (31 or 63, usually). To start searching from the
641 * last bit, set nth_bit to -1 or GLIB_SIZEOF_LONG * 8.
642 * mask:
643 * a gulong containing flags.
644 * nth_bit:
645 * the index of the bit to start the search from.
646 * Returns:
647 * the index of the first bit set which is lower than nth_bit.
649 public static int bitNthMsf(uint mask, int nthBit)
651 // gint g_bit_nth_msf (gulong mask, gint nth_bit);
652 return g_bit_nth_msf(mask, nthBit);
656 * Gets the number of bits used to hold number,
657 * e.g. if number is 4, 3 bits are needed.
658 * number:
659 * a guint.
660 * Returns:
661 * the number of bits used to hold number.
663 public static uint bitStorage(uint number)
665 // guint g_bit_storage (gulong number);
666 return g_bit_storage(number);
670 * Gets the smallest prime number from a built-in array of primes which
671 * is larger than num. This is used within GLib to calculate the optimum
672 * size of a GHashTable.
673 * The built-in array of primes ranges from 11 to 13845163 such that
674 * each prime is approximately 1.5-2 times the previous prime.
675 * num:
676 * a guint.
677 * Returns:
678 * the smallest prime number from a built-in array of primes which is
679 * larger than num.
681 public static uint spacedPrimesClosest(uint num)
683 // guint g_spaced_primes_closest (guint num);
684 return g_spaced_primes_closest(num);
688 * Specifies a function to be called at normal program termination.
689 * Since GLib 2.8.2, on Windows g_atexit() actually is a preprocessor
690 * macro that maps to a call to the atexit() function in the C
691 * library. This means that in case the code that calls g_atexit(),
692 * i.e. atexit(), is in a DLL, the function will be called when the
693 * DLL is detached from the program. This typically makes more sense
694 * than that the function is called when the GLib DLL is detached,
695 * which happened earlier when g_atexit() was a function in the GLib
696 * DLL.
697 * The behaviour of atexit() in the context of dynamically loaded
698 * modules is not formally specified and varies wildly.
699 * On POSIX systems, calling g_atexit() (or atexit()) in a dynamically
700 * loaded module which is unloaded before the program terminates might
701 * well cause a crash at program exit.
702 * Some POSIX systems implement atexit() like Windows, and have each
703 * dynamically loaded module maintain an own atexit chain that is
704 * called when the module is unloaded.
705 * On other POSIX systems, before a dynamically loaded module is
706 * unloaded, the registered atexit functions (if any) residing in that
707 * module are called, regardless where the code that registered them
708 * resided. This is presumably the most robust approach.
709 * As can be seen from the above, for portability it's best to avoid
710 * calling g_atexit() (or atexit()) except in the main executable of a
711 * program.
712 * func:
713 * the function to call on normal program termination.
715 public static void atexit(GVoidFunc func)
717 // void g_atexit (GVoidFunc func);
718 g_atexit(func);
722 * Parses a string containing debugging options
723 * into a guint containing bit flags. This is used
724 * within GDK and GTK+ to parse the debug options passed on the
725 * command line or through environment variables.
726 * string:
727 * a list of debug options separated by colons, spaces, or
728 * commas; or the string "all" to set all flags.
729 * keys:
730 * pointer to an array of GDebugKey which associate
731 * strings with bit flags.
732 * nkeys:
733 * the number of GDebugKeys in the array.
734 * Returns:
735 * the combined set of bit flags.
737 public static uint parseDebugString(char[] string, GDebugKey* keys, uint nkeys)
739 // guint g_parse_debug_string (const gchar *string, const GDebugKey *keys, guint nkeys);
740 return g_parse_debug_string(Str.toStringz(string), keys, nkeys);
747 * This is just like the standard C qsort() function, but
748 * the comparison routine accepts a user data argument.
749 * pbase:
750 * start of array to sort
751 * total_elems:
752 * elements in the array
753 * size:
754 * size of each element
755 * compare_func:
756 * function to compare elements
757 * user_data:
758 * data to pass to compare_func
760 public static void qsortWithData(void* pbase, int totalElems, uint size, GCompareDataFunc compareFunc, void* userData)
762 // void g_qsort_with_data (gconstpointer pbase, gint total_elems, gsize size, GCompareDataFunc compare_func, gpointer user_data);
763 g_qsort_with_data(pbase, totalElems, size, compareFunc, userData);
767 * Set the pointer at the specified location to NULL.
768 * nullify_location:
769 * the memory address of the pointer.
771 public static void nullifyPointer(void** nullifyLocation)
773 // void g_nullify_pointer (gpointer *nullify_location);
774 g_nullify_pointer(nullifyLocation);