GLib Reference Manual

Table of Contents
GLib Overview
Compiling the GLib package --  How to compile GLib itself
Compiling GLib Applications --  How to compile your GLib application
Running GLib Applications --  How to run and debug your GLib application
Changes from 1.0 to 2.0 --  Incompatible changes made between version 1.0 and version 2.0
Mailing lists and bug reports --  Getting help with GLib
GLib Fundamentals
Basic Types -- standard GLib types, defined for ease-of-use and portability.
Limits of Basic Types -- portable method of determining the limits of the standard types.
Standard Macros -- commonly-used macros.
Type Conversion Macros --  portably storing integers in pointer variables.
Byte Order Macros -- a portable way to convert between different byte orders.
Numerical Definitions -- mathematical constants, and floating point decomposition.
Miscellaneous Macros -- specialized macros which are not used often.
GLib Core Application Support
The Main Event Loop -- manages all available sources of events.
Threads --  thread abstraction; including threads, different mutexes, conditions and thread private data.
Thread Pools -- pools of threads to execute work concurrently.
Asynchronous Queues -- asynchronous communication between threads.
Dynamic Loading of Modules -- portable method for dynamically loading 'plug-ins'.
Memory Allocation -- general memory-handling.
IO Channels -- portable support for using files, pipes and sockets.
Error Reporting -- a system for reporting errors.
Message Output and Debugging Functions -- functions to output messages and help debug applications.
Message Logging -- versatile support for logging messages with different levels of importance.
GLib Utilities
String Utility Functions -- various string-related functions.
Character Set Conversion -- convert strings between different character sets using iconv().
Unicode Manipulation -- functions operating on Unicode characters and UTF-8 strings.
Date and Time Functions -- calendrical calculations and miscellaneous time stuff.
Random Numbers -- pseudo random number generator.
Hook Functions -- support for manipulating lists of hook functions.
Miscellaneous Utility Functions -- a selection of portable utility functions.
Lexical Scanner -- a general purpose lexical scanner.
Automatic String Completion -- support for automatic completion using a group of target strings.
Timers --  keep track of elapsed time.
Spawning Processes -- process launching with fork()/exec().
File Utilities -- various file-related functions.
Shell-related Utilities -- shell-like commandline handling.
Glob-style pattern matching -- matches strings against patterns containing '*' (wildcard) and '?' (joker).
Simple XML Subset Parser -- parses a subset of XML.
Windows Compatibility Functions -- UNIX emulation on Windows.
GLib Data Types
Memory Chunks -- efficient way to allocate groups of equal-sized chunks of memory.
Doubly-Linked Lists -- linked lists containing integer values or pointers to data, with the ability to iterate over the list in both directions.
Singly-Linked Lists -- linked lists containing integer values or pointers to data, limited to iterating over the list in one direction.
Double-ended Queues -- double-ended queue data structure.
Trash Stacks -- maintain a stack of unused allocated memory chunks.
Hash Tables -- associations between keys and values so that given a key the value can be found quickly.
Strings -- text buffers which grow automatically as text is added.
String Chunks -- efficient storage of groups of strings.
Arrays -- arrays of arbitrary elements which grow automatically as elements are added.
Pointer Arrays -- arrays of pointers to any type of data, which grow automatically as new elements are added.
Byte Arrays -- arrays of bytes, which grow automatically as elements are added.
Balanced Binary Trees -- a sorted collection of key/value pairs optimized for searching and traversing in order.
N-ary Trees -- trees of data with any number of branches.
Quarks -- a 2-way association between a string and a unique integer identifier.
Keyed Data Lists -- lists of data elements which are accessible by a string or GQuark identifier.
Datasets -- associate groups of data elements with particular memory locations.
Relations and Tuples -- tables of data which can be indexed on any number of fields.
Caches -- caches allow sharing of complex data structures to save resources.
Memory Allocators -- allocates chunks of memory for GList, GSList and GNode.