<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Long_Description ##### -->
<para>
The "GDesktopEntry" parser is intended to parse files written to
the <ulink
url="http://www.freedesktop.org/Standards/desktop-entry-spec">Desktop
Entry Specification</ulink>.  It supports deserialization of
desktop entries from files and in-memory data.  Desktop entries
are used for a variety of things including menus, application
MIME type registration, and launchers.
</para>

<para>
To load an existing desktop entry from a data directory (as
returned by g_get_user_data_dir() and g_get_system_data_dirs())
use g_desktop_entry_new_from_data_dirs().  To load an existing
desktop entry from an arbitrary location on the file system use
g_desktop_entry_new_from_file().  If the desktop entry is already
in memory use g_desktop_entry_new_from_data().  Once the desktop 
entry is loaded its keys can be queried using the g_desktop_entry_get 
family of functions.
</para>

<para>
To create a new desktop entry first call g_desktop_entry_new().
Then, call the g_desktop_entry_set family of functions.  Next,
call g_desktop_entry_to_data() to output the desktop entry to 
a byte array, which can be written to disk or sent over a
network.  Finally, call g_desktop_entry_free() to deallocate the
#GDesktopEntry object returned by g_desktop_entry_new().
</para>


<!-- ##### SECTION ./tmpl/desktop_entry.sgml:See_Also ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Short_Description ##### -->
serializes and deserializes a desktop entry.


<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Title ##### -->
Desktop Entry Parser


<!-- ##### SECTION ./tmpl/glib-unused.sgml:Stability_Level ##### -->



<!-- ##### SECTION ./tmpl/testutils.sgml:Long_Description ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/testutils.sgml:See_Also ##### -->
<para>

</para>


<!-- ##### SECTION ./tmpl/testutils.sgml:Short_Description ##### -->



<!-- ##### SECTION ./tmpl/testutils.sgml:Stability_Level ##### -->



<!-- ##### SECTION ./tmpl/testutils.sgml:Title ##### -->
Testing


<!-- ##### ENUM GChannelError ##### -->
<para>

</para>

@G_CHANNEL_ERROR_ACCES: 
@G_CHANNEL_ERROR_BADF: 
@G_CHANNEL_ERROR_DEADLK: 
@G_CHANNEL_ERROR_FAULT: 
@G_CHANNEL_ERROR_INVAL: 
@G_CHANNEL_ERROR_IO: 
@G_CHANNEL_ERROR_ISDIR: 
@G_CHANNEL_ERROR_MFILE: 
@G_CHANNEL_ERROR_NOLCK: 
@G_CHANNEL_ERROR_NOSPC: 
@G_CHANNEL_ERROR_PERM: 
@G_CHANNEL_ERROR_PIPE: 
@G_CHANNEL_ERROR_SPIPE: 
@G_CHANNEL_ERROR_ENCODE_RW: 
@G_CHANNEL_ERROR_FAILED: 

<!-- ##### ENUM GChannelStatus ##### -->
<para>

</para>

@G_CHANNEL_STATUS_NORMAL: 
@G_CHANNEL_STATUS_EOF: 
@G_CHANNEL_STATUS_PARTIAL_CHARS: 
@G_CHANNEL_STATUS_AGAIN: 
@G_CHANNEL_STATUS_INTR: 
@G_CHANNEL_STATUS_ERROR: 
@G_CHANNEL_STATUS_BAD_INPUT: 

<!-- ##### USER_FUNCTION GCompareFuncData ##### -->
<para>

</para>

@a: 
@b: 
@user_data: 
@Returns: 

<!-- ##### USER_FUNCTION GCompletionStrcmpFunc ##### -->
<para>

</para>

@s1: 
@s2: 
@Returns: 

<!-- ##### STRUCT GDesktopEntry ##### -->
<para>

</para>


<!-- ##### ENUM GDesktopEntryError ##### -->
<para>
Error codes returned by desktop entry parsing.
</para>

@G_DESKTOP_ENTRY_ERROR_UNKNOWN_ENCODING: text being parsed is not UTF-8 and
cannot be guessed.
@G_DESKTOP_ENTRY_ERROR_BAD_START_GROUP: desktop entry does not start with a
legal start group.
@G_DESKTOP_ENTRY_ERROR_PARSE: desktop entry is empty or contains invalid
data.
@G_DESKTOP_ENTRY_ERROR_NOT_FOUND: valid desktop entry could not be found.
@G_DESKTOP_ENTRY_ERROR_KEY_NOT_FOUND: desktop entry does not have requested
key.
@G_DESKTOP_ENTRY_ERROR_GROUP_NOT_FOUND: desktop entry does not have requested
group
@G_DESKTOP_ENTRY_ERROR_INVALID_VALUE: desktop entry contains key which has
value that cannot be validated.

<!-- ##### ENUM GDesktopEntryFlags ##### -->
<para>
#GDesktopEntry supports a few flags for tweaking performance during
deserialization.  #G_DESKTOP_ENTRY_DISCARD_COMMENTS and 
#G_DESKTOP_ENTRY_DISCARD_TRANSLATIONS will reduce memory footprint,
and #G_DESKTOP_ENTRY_GENERATE_LOOKUP_MAP will increase key lookup speed.
</para>

@G_DESKTOP_ENTRY_NONE: use parser defaults
@G_DESKTOP_ENTRY_DISCARD_COMMENTS:  Discard all lines that are blank
or start with "#".
@G_DESKTOP_ENTRY_DISCARD_TRANSLATIONS: Only retain translations that
are returned by g_get_language_names().
@G_DESKTOP_ENTRY_GENERATE_LOOKUP_MAP: Generate a lookup map for key names to make lookups constant time at the cost of more memory.

<!-- ##### USER_FUNCTION GErrorFunc ##### -->
<para>
Specifies the type of function passed to g_set_error_handler().
</para>

@str: the error message.

<!-- ##### USER_FUNCTION GHookFreeFunc ##### -->
<para>

</para>

@hook_list: 
@hook: 

<!-- ##### MACRO GINT16_TO_BE ##### -->
<para>
Converts a #gint16 value from host byte order to big-endian.
</para>

@val: a #gint16 value in host byte order.
@Returns: @val converted to big-endian.

<!-- ##### MACRO GINT16_TO_LE ##### -->
<para>
Converts a #gint16 value from host byte order to little-endian.
</para>

@val: a #gint16 value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### MACRO GINT32_TO_BE ##### -->
<para>
Converts a #gint32 value from host byte order to big-endian.
</para>

@val: a #gint32 value in host byte order.
@Returns: @val converted to big-endian.

<!-- ##### MACRO GINT32_TO_LE ##### -->
<para>
Converts a #gint32 value from host byte order to little-endian.
</para>

@val: a #gint32 value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### MACRO GINT64_TO_BE ##### -->
<para>
Converts a #gint64 value from host byte order to big-endian.
</para>

@val: a #gint64 value in host byte order.
@Returns: @val converted to big-endian.

<!-- ##### MACRO GINT64_TO_LE ##### -->
<para>
Converts a #gint64 value from host byte order to little-endian.
</para>

@val: a #gint64 value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### MACRO GINT_TO_BE ##### -->
<para>
Converts a #gint value from host byte order to big-endian.
</para>

@val: a #gint value in host byte order.
@Returns: @val converted to big-endian byte order.

<!-- ##### MACRO GINT_TO_LE ##### -->
<para>
Converts a #gint value from host byte order to little-endian.
</para>

@val: a #gint value in host byte order.
@Returns: @val converted to little-endian byte order.

<!-- ##### MACRO GINT_TO_POINTER ##### -->
<para>
Stuffs an integer into a pointer type.
</para>
<para>
Remember, YOU MAY NOT STORE POINTERS IN INTEGERS. THIS IS NOT PORTABLE
IN ANY WAY SHAPE OR FORM. These macros <emphasis>ONLY</emphasis> allow
storing integers in pointers, and only preserve 32 bits of the
integer; values outside the range of a 32-bit integer will be mangled.
</para>

@i: integer to stuff into a pointer.

<!-- ##### ENUM GIOFileMode ##### -->
<para>

</para>

@G_IO_FILE_MODE_READ: 
@G_IO_FILE_MODE_WRITE: 
@G_IO_FILE_MODE_APPEND: 
@G_IO_FILE_MODE_READ_WRITE: 
@G_IO_FILE_MODE_READ_WRITE_TRUNCATE: 
@G_IO_FILE_MODE_READ_WRITE_APPEND: 

<!-- ##### MACRO GLIB_MAJOR_VERSION ##### -->
<para>
The major version number of the GLib library.
Like #glib_major_version, but from the headers used at
application compile time, rather than from the library linked against
at application run time.
</para>


<!-- ##### MACRO GLIB_MICRO_VERSION ##### -->
<para>
The micro version number of the GLib library.
Like #gtk_micro_version, but from the headers used at
application compile time, rather than from the library linked against
at application run time.
</para>


<!-- ##### MACRO GLIB_MINOR_VERSION ##### -->
<para>
The minor version number of the GLib library.
Like #gtk_minor_version, but from the headers used at
application compile time, rather than from the library linked against
at application run time.
</para>


<!-- ##### MACRO GLONG_TO_BE ##### -->
<para>
Converts a #glong value from host byte order to big-endian.
</para>

@val: a #glong value in host byte order.
@Returns: @val converted to big-endian byte order.

<!-- ##### MACRO GLONG_TO_LE ##### -->
<para>
Converts a #glong value from host byte order to little-endian.
</para>

@val: a #glong value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### ENUM GMatchType ##### -->
<para>
Enumeration representing different kinds of patterns. This is only used
internally for optimizing the match algorithm.
</para>

@G_MATCH_ALL: a general pattern.
@G_MATCH_ALL_TAIL: a general pattern which contains a fixed part matching
the end of the string.
@G_MATCH_HEAD: a pattern matching every string with a certain prefix.
@G_MATCH_TAIL: a pattern matching every string with a certain suffix.
@G_MATCH_EXACT: a pattern matching exactly one string.
@G_MATCH_LAST: 

<!-- ##### STRUCT GModule ##### -->
<para>
The #GModule struct is an opaque data structure to represent a
<link linkend="glib-Dynamic-Loading-of-Modules">Dynamically-Loaded Module</link>.
It should only be accessed via the following functions.
</para>


<!-- ##### USER_FUNCTION GModuleCheckInit ##### -->
<para>
Specifies the type of the module initialization function.
<indexterm zone="g-module-check-init"><primary>g_module_check_init</primary></indexterm>
If a module contains a function named g_module_check_init() it is called
automatically when the module is loaded. It is passed the #GModule structure
and should return %NULL on success or a string describing the initialization
error.
</para>

@module: the #GModule corresponding to the module which has just been loaded.
@Returns: %NULL on success, or a string describing the initialization error.

<!-- ##### ENUM GModuleFlags ##### -->
<para>
Flags passed to g_module_open(). Note that these flags are
not supported on all platforms.
</para>

@G_MODULE_BIND_LAZY: specifies that symbols are only resolved when needed.
  The default action is to bind all symbols when the module is loaded.
@G_MODULE_BIND_LOCAL: specifies that symbols in the module should
  not be added to the global name space.  The default action on most
  platforms is to place symbols in the module in the global name space,
  which may cause conflicts with existing symbols.
@G_MODULE_BIND_MASK: mask for all flags.

<!-- ##### USER_FUNCTION GModuleUnload ##### -->
<para>
<indexterm zone="g-module-unload"><primary>g_module_unload</primary></indexterm>
Specifies the type of the module function called when it is unloaded.
If a module contains a function named g_module_unload() it is called
automatically when the module is unloaded.
It is passed the #GModule structure.
</para>

@module: the #GModule about to be unloaded.

<!-- ##### MACRO GPOINTER_TO_INT ##### -->
<para>
Extracts an integer from a pointer. The integer must have
been stored in the pointer with GINT_TO_POINTER().
</para>
<para>
Remember, YOU MAY NOT STORE POINTERS IN INTEGERS. THIS IS NOT PORTABLE
IN ANY WAY SHAPE OR FORM. These macros <emphasis>ONLY</emphasis> allow
storing integers in pointers, and only preserve 32 bits of the
integer; values outside the range of a 32-bit integer will be mangled.
</para>

@p: pointer containing an integer.

<!-- ##### MACRO GPOINTER_TO_UINT ##### -->
<para>
Extracts an unsigned integer from a pointer. The integer must have
been stored in the pointer with GUINT_TO_POINTER().
</para>

@p: pointer to extract an unsigned integer from.

<!-- ##### TYPEDEF GPid ##### -->
<para>
A type which is used to hold a process identification. 
On Unix, processes are identified by a process id (an 
integer), while Windows uses process handles (which are 
pointers).
</para>


<!-- ##### MACRO GUINT16_TO_BE ##### -->
<para>
Converts a #guint16 value from host byte order to big-endian.
</para>

@val: a #guint16 value in host byte order.
@Returns: @val converted to big-endian.

<!-- ##### MACRO GUINT16_TO_LE ##### -->
<para>
Converts a #guint16 value from host byte order to little-endian.
</para>

@val: a #guint16 value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### MACRO GUINT32_TO_BE ##### -->
<para>
Converts a #guint32 value from host byte order to big-endian.
</para>

@val: a #guint32 value in host byte order.
@Returns: @val converted to big-endian.

<!-- ##### MACRO GUINT32_TO_LE ##### -->
<para>
Converts a #guint32 value from host byte order to little-endian.
</para>

@val: a #guint32 value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### MACRO GUINT64_TO_BE ##### -->
<para>
Converts a #guint64 value from host byte order to big-endian.
</para>

@val: a #guint64 value in host byte order.
@Returns: @val converted to big-endian.

<!-- ##### MACRO GUINT64_TO_LE ##### -->
<para>
Converts a #guint64 value from host byte order to little-endian.
</para>

@val: a #guint64 value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### MACRO GUINT_TO_BE ##### -->
<para>
Converts a #guint value from host byte order to big-endian.
</para>

@val: a #guint value in host byte order.
@Returns: @val converted to big-endian byte order.

<!-- ##### MACRO GUINT_TO_LE ##### -->
<para>
Converts a #guint value from host byte order to little-endian.
</para>

@val: a #guint value in host byte order.
@Returns: @val converted to little-endian byte order.

<!-- ##### MACRO GUINT_TO_POINTER ##### -->
<para>
Stuffs an unsigned integer into a pointer type.
</para>

@u: unsigned integer to stuff into the pointer.

<!-- ##### MACRO GULONG_TO_BE ##### -->
<para>
Converts a #gulong value from host byte order to big-endian.
</para>

@val: a #gulong value in host byte order.
@Returns: @val converted to big-endian.

<!-- ##### MACRO GULONG_TO_LE ##### -->
<para>
Converts a #gulong value from host byte order to little-endian.
</para>

@val: a #gulong value in host byte order.
@Returns: @val converted to little-endian.

<!-- ##### USER_FUNCTION GWarningFunc ##### -->
<para>
Specifies the type of function passed to g_set_warning_handler().
</para>

@str: the warning message.

<!-- ##### MACRO G_BYTE_ORDER ##### -->
<para>
The host byte order.
This can be either #G_LITTLE_ENDIAN or #G_BIG_ENDIAN (support for
#G_PDP_ENDIAN may be added in future.)
</para>


<!-- ##### MACRO G_CHANNEL_ERROR ##### -->
<para>

</para>


<!-- ##### MACRO G_DESKTOP_ENTRY_ERROR ##### -->
<para>
Error domain for desktop entry parsing. Errors in this domain will
be from the #GDesktopEntryError enumeration. See #GError for information on 
error domains.
</para>


<!-- ##### MACRO G_GINT16_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #gint16. It is a string literal, but doesn't
include the percent-sign, such that you can add precision and length
modifiers between percent-sign and conversion specifier.
</para>

<para>
<informalexample>
<programlisting>
gint16 in;
gint32 out;
sscanf ("42", "%" G_GINT16_FORMAT, &amp;in)
out = in * 1000;
g_print ("%" G_GINT32_FORMAT, out);
</programlisting>
</informalexample>
</para>


<!-- ##### MACRO G_GINT16_MODIFIER ##### -->
<para>
The platform dependent length modifier for constructing printf() conversion
specifiers for values of type #gint16 or #guint16. It is a string literal, 
but doesn't include the percent-sign, such that you can add precision and 
length modifiers between percent-sign and conversion specifier and append a 
conversion specifier.
</para>

<para>
The following example prints "0x7b";
<informalexample>
<programlisting>
gint16 value = 123;
g_print ("%#" G_GINT16_MODIFIER "x", value);
</programlisting>
</informalexample>
</para>

@Since: 2.4

<!-- ##### MACRO G_GINT32_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #gint32. See also #G_GINT16_FORMAT.
</para>


<!-- ##### MACRO G_GINT32_MODIFIER ##### -->
<para>
The platform dependent length modifier for constructing printf() conversion
specifiers for values of type #gint32 or #guint32. See also #G_GINT16_MODIFIER.
</para>

@Since: 2.4

<!-- ##### MACRO G_GINT64_CONSTANT ##### -->
<para>
This macro is used to insert 64-bit integer literals into the source code.
</para>

@val: a literal integer value, e.g. 0x1d636b02300a7aa7U.

<!-- ##### MACRO G_GINT64_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #gint64. See also #G_GINT16_FORMAT.
</para>

<note>
<para>
Some platforms do not support scanning and printing 64 bit integers,
even though the types are supported. On such platforms #G_GINT64_FORMAT
is not defined. Note that scanf() may not support 64 bit integers, even
if #G_GINT64_FORMAT is defined. Due to its weak error handling, scanf() is not 
recommended for parsing anyway; consider using g_strtoull() instead.
</para>
</note>


<!-- ##### MACRO G_GINT64_MODIFIER ##### -->
<para>
The platform dependent length modifier for constructing printf() conversion
specifiers for values of type #gint64 or #guint64. See also #G_GINT16_MODIFIER.
</para>

<note>
<para>
Some platforms do not support printing 64 bit integers,
even though the types are supported. On such platforms #G_GINT64_MODIFIER
is not defined.
</para>
</note>

@Since: 2.4

<!-- ##### MACRO G_GNUC_INTERNAL ##### -->
<para>
This attribute can be used for marking library functions as being used 
internally to the library only, which may allow the compiler to handle
function calls more efficiently. 
Note that static functions do not need to be marked as internal in this way. 
See the GNU C documentation for details. 
</para>
<para>
When using a compiler that supports the GNU C hidden visibility attribute, 
this macro expands to <literal>__attribute__((visibility("hidden")))</literal>.
When using the Sun Studio compiler, it expands to <literal>__hidden</literal>.
</para>
<para>
Note that for portability, the attribute should be placed before the
function declaration. While GCC allows the macro after the declaration, 
Sun Studio does not.
</para>
<informalexample><programlisting>
G_GNUC_INTERNAL
void _g_log_fallback_handler (const gchar    *log_domain,
                              GLogLevelFlags  log_level,
                              const gchar    *message,
                              gpointer        unused_data);
</programlisting></informalexample>

Since: 2.6


<!-- ##### MACRO G_GSIZE_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #gsize. See also #G_GINT16_FORMAT.
</para>

@Since: 2.6

<!-- ##### MACRO G_GSIZE_MODIFIER ##### -->
<para>
The platform dependent length modifier for constructing printf() conversion
specifiers for values of type #gsize or #gssize. See also #G_GINT16_MODIFIER.
</para>

@Since: 2.6

<!-- ##### MACRO G_GSSIZE_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #gssize. See also #G_GINT16_FORMAT.
</para>

@Since: 2.6

<!-- ##### MACRO G_GUINT16_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #guint16. See also #G_GINT16_FORMAT.
</para>


<!-- ##### MACRO G_GUINT32_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #guint32. See also #G_GINT16_FORMAT.
</para>


<!-- ##### MACRO G_GUINT64_CONSTANT ##### -->
<para>
This macro is used to insert 64-bit unsigned integer literals into the 
source code.
</para>

@val: a literal integer value, e.g. 0x1d636b02300a7aa7U.
@Since: 2.10

<!-- ##### MACRO G_GUINT64_FORMAT ##### -->
<para>
This is the platform dependent conversion specifier for scanning and
printing values of type #guint64. See also #G_GINT16_FORMAT.
</para>

<note>
<para>
Some platforms do not support scanning and printing 64 bit integers,
even though the types are supported. On such platforms #G_GUINT64_FORMAT
is not defined.  Note that scanf() may not support 64 bit integers, even
if #G_GINT64_FORMAT is defined. Due to its weak error handling, scanf() is not 
recommended for parsing anyway; consider using g_strtoull() instead.
</para>
</note>


<!-- ##### MACRO G_HAVE_GINT64 ##### -->
<para>
This macro is defined if 64-bit signed and unsigned integers are available
on the platform. 
</para>

@Deprecated: GLib requires 64-bit integer support since version 2.0, therefore
%G_HAVE_GINT64 is <emphasis>always</emphasis> defined.

<!-- ##### MACRO G_HAVE_GNUC_VISIBILITY ##### -->
<para>
This macro is defined as 1 if the compiler supports ELF visibility 
attributes (currently only <command>gcc</command>).
</para>

Since: 2.6


<!-- ##### MACRO G_HOOK_DEFERRED_DESTROY ##### -->
<para>

</para>


<!-- ##### MACRO G_IO_CHANNEL_DEFAULT_LINE_TERM ##### -->
<para>
One of %G_IO_CHANNEL_UNIX_LINE_TERM, %G_IO_CHANNEL_DOS_LINE_TERM,
or %G_IO_CHANNEL_MACINTOSH_LINE_TERM (unimplemented)
depending on the system type.
</para>


<!-- ##### MACRO G_IO_CHANNEL_DOS_LINE_TERM ##### -->
<para>

</para>


<!-- ##### MACRO G_IO_CHANNEL_ENCODE_RAW ##### -->
<para>
Encoding for nonbuffered IO. With this encoding, data must be
read using g_io_channel_read_chars(); the other functions will
not work.
</para>


<!-- ##### MACRO G_IO_CHANNEL_MACINTOSH_LINE_TERM ##### -->
<para>

</para>


<!-- ##### MACRO G_IO_CHANNEL_UNIX_LINE_TERM ##### -->
<para>

</para>


<!-- ##### MACRO G_MAXDOUBLE ##### -->
<para>
The maximum value which can be held in a #gdouble.
</para>


<!-- ##### MACRO G_MAXFLOAT ##### -->
<para>
The maximum value which can be held in a #gfloat.
</para>


<!-- ##### MACRO G_MAXINT ##### -->
<para>
The maximum value which can be held in a #gint.
</para>


<!-- ##### MACRO G_MAXLONG ##### -->
<para>
The maximum value which can be held in a #glong.
</para>


<!-- ##### MACRO G_MAXOFFSET ##### -->
<para>
The maximum value which can be held in a #goffset.
</para>


<!-- ##### MACRO G_MAXSHORT ##### -->
<para>
The maximum value which can be held in a #gshort.
</para>


<!-- ##### MACRO G_MAXSIZE ##### -->
<para>
The maximum value which can be held in a #gsize.
</para>

@Since: 2.4

<!-- ##### MACRO G_MAXSSIZE ##### -->
<para>
The maximum value which can be held in a #gssize.
</para>

@Since: 2.14

<!-- ##### MACRO G_MAXUINT ##### -->
<para>
The maximum value which can be held in a #guint.
</para>


<!-- ##### MACRO G_MAXULONG ##### -->
<para>
The maximum value which can be held in a #gulong.
</para>


<!-- ##### MACRO G_MAXUSHORT ##### -->
<para>
The maximum value which can be held in a #gushort.
</para>


<!-- ##### MACRO G_MINDOUBLE ##### -->
<para>
The minimum positive value which can be held in a #gdouble.
</para>
<para>
If you are interested in the smallest value which can be held in a #gdouble,
use -G_MAXDOUBLE.
</para>


<!-- ##### MACRO G_MINFLOAT ##### -->
<para>
The minimum positive value which can be held in a #gfloat.
</para>
<para>
If you are interested in the smallest value which can be held in a #gfloat,
use -G_MAX_FLOAT.
</para>


<!-- ##### MACRO G_MININT ##### -->
<para>
The minimum value which can be held in a #gint.
</para>


<!-- ##### MACRO G_MINLONG ##### -->
<para>
The minimum value which can be held in a #glong.
</para>


<!-- ##### MACRO G_MINOFFSET ##### -->
<para>
The minimum value which can be held in a #goffset.
</para>


<!-- ##### MACRO G_MINSHORT ##### -->
<para>
The minimum value which can be held in a #gshort.
</para>


<!-- ##### MACRO G_MINSSIZE ##### -->
<para>
The minimum value which can be held in a #gssize.
</para>

@Since: 2.14

<!-- ##### MACRO G_MODULE_EXPORT ##### -->
<para>
Used to declare functions exported by modules. This is a no-op on Linux and
Unices, but when compiling for Windows, it marks a symbol to be exported from
the library or executable being built.
</para>


<!-- ##### MACRO G_MODULE_IMPORT ##### -->
<para>
Used to declare functions imported from modules.
</para>


<!-- ##### MACRO G_MODULE_SUFFIX ##### -->
<para>
Expands to the proper shared library suffix for the current platform
without the leading dot. For the most Unices and Linux this is "so",
for some HP-UX versions this is "sl" and for Windows this is "dll".
</para>


<!-- ##### MACRO G_THREADS_ENABLED ##### -->

<para>
This macro is defined if GLib was compiled with thread support. This
does not necessarily mean that there is a thread implementation
available, but it does mean that the infrastructure is in place and
that once you provide a thread implementation to g_thread_init(), GLib
will be multi-thread safe. If #G_THREADS_ENABLED is not defined, then
Glib is not, and cannot be, multi-thread safe.
</para>


<!-- ##### MACRO NAME_MAX ##### -->
<para>
Provided for UNIX emulation on Windows; equivalent to UNIX macro 
%NAME_MAX, which is the maximum length of a single path component.
i.e. just the <filename>foo</filename> in <filename>/usr/bin/foo</filename>.
</para>


<!-- ##### MACRO _ ##### -->
<para>
Marks a string for translation, gets replaced with the translated string
at runtime.
</para>

@String: the string to be translated
@Since: 2.4

<!-- ##### MACRO access ##### -->
<para>

</para>


<!-- ##### MACRO close ##### -->
<para>

</para>


<!-- ##### FUNCTION closedir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>closedir()</function>
in any UNIX manual.
</para>

@Param1: 
@Returns: 

<!-- ##### MACRO fdopen ##### -->
<para>

</para>


<!-- ##### MACRO ftruncate ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for ftruncate()
in any UNIX manual.
</para>

@fd: 
@size: 

<!-- ##### FUNCTION g_channel_error_from_errno ##### -->
<para>

</para>

@en: 
@Returns: 

<!-- ##### FUNCTION g_channel_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_convert_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_desktop_entry_escape_strings ##### -->
<para>

</para>

@entry: 
@should_escape: 

<!-- ##### FUNCTION g_desktop_entry_free ##### -->
<para>

</para>

@entry: 

<!-- ##### FUNCTION g_desktop_entry_get_boolean ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_boolean_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_groups ##### -->
<para>

</para>

@entry: 
@length: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_integer ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_integer_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_keys ##### -->
<para>

</para>

@entry: 
@group_name: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_locale_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_locale_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_start_group ##### -->
<para>

</para>

@entry: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_get_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_has_group ##### -->
<para>

</para>

@entry: 
@group_name: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_has_key ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new ##### -->
<para>

</para>

@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new_from_data ##### -->
<para>

</para>

@data: 
@length: 
@legal_start_groups: 
@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new_from_data_dirs ##### -->
<para>

</para>

@file: 
@full_path: 
@legal_start_groups: 
@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_new_from_file ##### -->
<para>

</para>

@file: 
@legal_start_groups: 
@flags: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_desktop_entry_remove_group ##### -->
<para>

</para>

@entry: 
@group_name: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_remove_key ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_boolean ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@boolean: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_boolean_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_integer ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@integer: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_integer_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_locale_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@string: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_locale_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@locale: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_string ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@string: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_set_string_list ##### -->
<para>

</para>

@entry: 
@group_name: 
@key: 
@list: 
@length: 
@error: 

<!-- ##### FUNCTION g_desktop_entry_to_data ##### -->
<para>

</para>

@entry: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_file_replace ##### -->
<para>

</para>

@filename: 
@contents: 
@length: 
@error: 
@Returns: 

<!-- ##### FUNCTION g_format_file_size_for_display ##### -->
<para>

</para>

@size: 
@Returns: 

<!-- ##### FUNCTION g_io_channel_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### VARIABLE g_log_domain_glib ##### -->
<para>
The log domain used for messages logged by GLib itself.
</para>


<!-- ##### FUNCTION g_main_add_poll ##### -->
<para>
Adds a file descriptor to be polled.
This is usually combined with g_source_add() to add an event source.
The event source's check function will typically test the revents
field in the #GPollFD struct and return TRUE if events need to be processed.
</para>

@fd: a #GPollFD, which is a file descriptor together with a bitwise
combination of #GIOCondition flags determining which events to poll for.
@priority: the priority of the poll, which should be the same as the priority
used for g_source_add() to ensure that the file descriptor is polled whenever
the results may be needed.
See #G_PRIORITY_DEFAULT, #G_PRIORITY_DEFAULT_IDLE, #G_PRIORITY_HIGH,
#G_PRIORITY_HIGH_IDLE, and #G_PRIORITY_LOW.

<!-- ##### FUNCTION g_main_context_get ##### -->
<para>

</para>

@thread: 
@Returns: 

<!-- ##### FUNCTION g_main_loop_destroy ##### -->
<para>

</para>

@loop: 

<!-- ##### FUNCTION g_main_remove_poll ##### -->
<para>
Removes a file descriptor from the list being polled.
</para>

@fd: the #GPollFD to remove.

<!-- ##### FUNCTION g_main_win32_get_poll_func ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_mem_check ##### -->
<para>
Checks if the given memory has already been freed. If it has it outputs
a warning message.
To use this function you must configure glib with the flag
'--enable-mem-check=yes' before compiling.
</para>

@mem: the memory to check.

<!-- ##### MACRO g_memmove ##### -->
<para>

</para>

@dest: 
@src: 
@len: 

<!-- ##### FUNCTION g_module_build_path ##### -->
<para>
A portable way to build the filename of a module. The platform-specific
prefix and suffix are added to the filename, if needed, and the result is
added to the directory, using the correct separator character.
</para>
<para>
The directory should specify the directory where the module can be found.
It can be %NULL or an empty string to indicate that the module is in a standard
platform-specific directory, though this is not recommended since the
wrong module may be found.
</para>
<para>
For example, calling g_module_build_path() on a Linux system with a @directory
of <filename>/lib</filename> and a @module_name of "mylibrary" will return 
<filename>/lib/libmylibrary.so</filename>. On a Windows system, using 
<filename>\Windows</filename> as the directory it will return
<filename>\Windows\mylibrary.dll</filename>.
</para>

@directory: the directory where the module is. This can be %NULL or the empty
string to indicate that the standard platform-specific directories will be 
used, though that is not recommended.
@module_name: the name of the module.
@Returns: the complete path of the module, including the standard library
prefix and suffix. This should be freed when no longer needed.

<!-- ##### FUNCTION g_module_close ##### -->
<para>
Closes a module.
</para>

@module: a #GModule to close.
@Returns: %TRUE on success.

<!-- ##### FUNCTION g_module_error ##### -->
<para>
Gets a string describing the last module error.
</para>

@Returns: a string describing the last module error.

<!-- ##### FUNCTION g_module_make_resident ##### -->
<para>
Ensures that a module will never be unloaded.
Any future g_module_close() calls on the module will be ignored.
</para>

@module: a #GModule to make permanently resident.

<!-- ##### FUNCTION g_module_name ##### -->
<para>
Gets the filename from a #GModule.
</para>

@module: a #GModule.
@Returns: the filename of the module, or "main" if the module is the main
program itself.

<!-- ##### FUNCTION g_module_open ##### -->
<para>
Opens a module. If the module has already been opened, its reference
count is incremented. 
</para>

<para>
First of all g_module_open() tries to open @file_name as a module. If
that fails and @file_name has the ".la"-suffix (and is a libtool archive) 
it tries to open the corresponding module. If that fails and it doesn't 
have the proper module suffix for the platform (#G_MODULE_SUFFIX), this 
suffix will be appended and the corresponding module will be opended. If 
that fails and @file_name doesn't have the ".la"-suffix, this suffix is 
appended and g_module_open() tries to open the corresponding module. If 
eventually that fails as well, %NULL is returned.
</para>

@file_name: the name of the file containing the module, or %NULL to obtain
  a #GModule representing the main program itself.
@flags: the flags used for opening the module. This can be the logical
OR of any of the #GModuleFlags.
@Returns: a #GModule on success, or %NULL on failure.

<!-- ##### FUNCTION g_module_supported ##### -->
<para>
Checks if modules are supported on the current platform.
</para>

@Returns: %TRUE if modules are supported.

<!-- ##### FUNCTION g_module_symbol ##### -->
<para>
Gets a symbol pointer from a module, such as one exported by #G_MODULE_EXPORT.
</para>
<para>
Note that a valid symbol can be %NULL.
</para>

@module: a #GModule.
@symbol_name: the name of the symbol to find.
@symbol: returns the pointer to the symbol value.
@Returns: %TRUE on success.

<!-- ##### FUNCTION g_regex_error_quark ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_regex_free ##### -->
<para>

</para>

@regex: 

<!-- ##### FUNCTION g_scanner_stat_mode ##### -->
<para>
Gets the file attributes.
This is the <structfield>st_mode</structfield> field from the
<structname>stat</structname> structure. See the <function>stat()</function>
documentation.
</para>

@filename: the file name.
@Returns: the file attributes.

<!-- ##### FUNCTION g_set_error_handler ##### -->
<para>
Sets the function to be called to handle error messages.
This function is deprecated in favour of the new logging facilities.
</para>

@func: the function to be called to handle error messages.
@Returns: the old error handler.

<!-- ##### FUNCTION g_set_message_handler ##### -->
<para>
Sets the function to be called to handle messages.
This function is deprecated in favour of the new logging facilities.
</para>

@func: the function to be called to handle normal messages.
@Returns: the old message handler.

<!-- ##### FUNCTION g_set_warning_handler ##### -->
<para>
Sets the function to be called to handle warning messages.
This function is deprecated in favour of the new logging facilities.
</para>

@func: the function to be called to handle warning messages.
@Returns: the old warning handler.

<!-- ##### FUNCTION g_source_add ##### -->
<para>
</para>

@priority: 
@can_recurse: 
@funcs: 
@source_data: 
@user_data: 
@notify: 
@Returns: 
@source: 
@context: 

<!-- ##### FUNCTION g_source_connect ##### -->
<para>

</para>

@source: 
@func: 
@data: 
@notify: 

<!-- ##### FUNCTION g_source_connect_indirect ##### -->
<para>

</para>

@source: 
@callback_data: 
@callback_funcs: 

<!-- ##### FUNCTION g_source_remove_by_source_data ##### -->
<para>
Removes the first event source found with the given source data.
</para>
<para>
Event sources are sorted with the highest priority first. Sources with equal
priority are stored in the order in which they were added.
</para>

@source_data: the source data, which contains information specific to the
type of source.
@Returns: TRUE if an event source was found and removed.

<!-- ##### FUNCTION g_static_private_get_for_thread ##### -->
<para>

</para>

@private_key: 
@thread: 
@Returns: 

<!-- ##### FUNCTION g_static_private_set_for_thread ##### -->
<para>

</para>

@private_key: 
@thread: 
@data: 
@notify: 

<!-- ##### MACRO g_string ##### -->
<para>
Turns the argument into a string literal by using the '#' stringizing operator.
</para>

@x: text to convert to a literal string.

<!-- ##### FUNCTION g_warn_message ##### -->
<para>

</para>

@domain: 
@file: 
@line: 
@func: 
@warnexpr: 

<!-- ##### MACRO getcwd ##### -->
<para>

</para>


<!-- ##### MACRO getpid ##### -->
<para>

</para>


<!-- ##### TYPEDEF gint16 ##### -->
<para>
A signed integer guaranteed to be 16 bits on all platforms.
Values of this type can range from -32,768 to 32,767.
</para>


<!-- ##### TYPEDEF gint32 ##### -->
<para>
A signed integer guaranteed to be 32 bits on all platforms.
Values of this type can range from -2,147,483,648 to 2,147,483,647.
</para>


<!-- ##### TYPEDEF gint64 ##### -->
<para>
A signed integer guaranteed to be 64 bits on all platforms.
Values of this type can range from -9,223,372,036,854,775,808 to
9,223,372,036,854,775,807.
</para>


<!-- ##### TYPEDEF gint8 ##### -->
<para>
A signed integer guaranteed to be 8 bits on all platforms.
Values of this type can range from -128 to 127.
</para>


<!-- ##### TYPEDEF goffset ##### -->
<para>
A signed integer type that is used for file offsets, corresponding to the 
C99 type off64_t.
</para>

Since: 2.14


<!-- ##### TYPEDEF gsize ##### -->
<para>
An unsigned integer type of the result of the sizeof operator, corresponding
to the size_t type defined in C99. This type is wide enough to hold the numeric
value of a pointer, so it is usually 32bit wide on a 32bit platform and
64bit wide on a 64bit platform.
</para>


<!-- ##### TYPEDEF gssize ##### -->
<para>
A signed variant of gsize, corresponding to the ssize_t defined on most platforms.
</para>


<!-- ##### TYPEDEF guint16 ##### -->
<para>
An unsigned integer guaranteed to be 16 bits on all platforms.
Values of this type can range from 0 to 65,535.
</para>


<!-- ##### TYPEDEF guint32 ##### -->
<para>
An unsigned integer guaranteed to be 32 bits on all platforms.
Values of this type can range from 0 to 4,294,967,295.
</para>


<!-- ##### TYPEDEF guint8 ##### -->
<para>
An unsigned integer guaranteed to be 8 bits on all platforms.
Values of this type can range from 0 to 255.
</para>


<!-- ##### MACRO lseek ##### -->
<para>

</para>


<!-- ##### MACRO open ##### -->
<para>

</para>


<!-- ##### FUNCTION opendir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>opendir()</function>
in any UNIX manual.
</para>

@Param1: 
@Returns: 

<!-- ##### MACRO pclose ##### -->
<para>

</para>


<!-- ##### MACRO pipe ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for pipe()
in any UNIX manual.
</para>

@phandles: file descriptors, the first one for reading, the second one for writing.

<!-- ##### MACRO popen ##### -->
<para>

</para>


<!-- ##### MACRO read ##### -->
<para>

</para>


<!-- ##### MACRO readdir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>readdir()</function>
in any UNIX manual.
</para>


<!-- ##### FUNCTION rewinddir ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>rewinddir()</function>
in any UNIX manual.
</para>

@Param1: 

<!-- ##### MACRO write ##### -->
<para>

</para>


