   This file documents GLIB, A library of useful routines for C
programming

   Copyright (C) 1998 Gregory A McLean

   Permission is granted to make and distributed verbatim copies of this
manual, provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by Gregory McLean.

useful routines for 'C' programming
***********************************

   This is edition 1.0 of the GLIB documentation, 3 Feburary 1998.

Copying
*******

What is GLIB
************

Doubly linked lists
*******************

Functions
---------

 - Function: GList* g_list_alloc (void)

 - Function: void g_list_free (GList *LIST)

 - Function: void g_list_free_1 (GList *LIST)

 - Function: GList* g_list_append (GList *LIST, gpointer DATA)

 - Function: GList* g_list_prepend (GList *LIST, gpointer DATA)

 - Function: GList* g_list_insert (GList *LIST, gpointer DATA, gint
          POSITION)

 - Function: GList* g_list_insert_sorted (GList *LIST, gpointer DATA,
          GCompareFunc FUNC)

 - Function: GList* g_list_concat (GList *LIST1, GList *LIST2)

 - Function: GList* g_list_remove (GList *LIST, gpointer DATA)

 - Function: GList* g_list_remove_link (GList *LIST, GList *LINK)

 - Function: GList* g_list_reverse (GList *LIST)

 - Function: GList* g_list_nth (GList *LIST, gint N)

 - Function: GList* g_list_find (GList *LIST, gpointer DATA)

 - Function: GList* g_list_last (GList *LIST)

 - Function: GList* g_list_first (GList *LIST)

 - Function: gint g_list_length (GList *LIST)

 - Function: void g_list_foreach (GList *LIST, GFunc FUNC, gpointer
          USER_DATA)

Signly linked lists
*******************

Functions
---------

 - Function: GSList* g_slist_alloc (void)

 - Function: void g_slist_free (GSList *LIST)

 - Function: void g_slist_free_1 (GSList *LIST)

 - Function: GSList* g_slist_append (GSList *LIST, gpointer DATA)

 - Function: GSList* g_slist_prepend (GSList *LIST, gpointer DATA)

 - Function: GSList* g_slist_insert (GSList *LIST, gpointer DATA, gint
          POSITION)

 - Function: GSList* g_slist_insert_sorted (GSList *LIST, gpointer
          DATA, GCompareFunc FUNC)

 - Function: GSList* g_slist_concat (GSList *LIST1, GSList *LIST2)

 - Function: GSList* g_slist_remove (GSList *LIST, gpointer DATA)

 - Function: GSList* g_slist_remove_link (GSList *LIST, GSList *LINK)

 - Function: GSList* g_slist_reverse (GSList *LIST)

 - Function: GSList* g_slist_nth (GSList *LIST, gint N)

 - Function: GSList* g_slist_find (GSList *LIST, gpointer DATA)

 - Function: GSList* g_slist_last (GSList *LIST)

 - Function: gint g_slist_length (GSList *LIST)

 - Function: void g_slist_foreach (GSList *LIST, GFunc FUNC, gpointer
          USER_DATA)

List allocators
***************

Functions
---------

 - Function: GListAllocator* g_list_allocator_new (void)

 - Function: void g_list_allocator_free (GListAllocator *ALLOCATOR)

 - Function: GListAllocator* g_slist_set_allocator (GListAllocator
          *ALLOCATOR)

 - Function: GListAllocator* g_list_set_allocator (GListAllocator
          *ALLOCATOR)

Hash tables
***********

Functions
---------

 - Function: GHashTable* g_hash_table_new (GHashFunc HASH_FUNC,
          GCompareFunc KEY_COMPARE_FUNC)

 - Function: void g_hash_table_destroy (GHashTable *HASH_TABLE)

 - Function: void g_hash_table_insert (GHashTable *HASH_TABLE, gpointer
          KEY, gpointer VALUE)

 - Function: void g_hash_table_remove (GHashTable *HASH_TABLE, gpointer
          KEY)

 - Function: gpointer g_hash_table_lookup (GHashTable *HASH_TABLE,
          gpointer KEY)

 - Function: void g_hash_table_freeze (GHashTable *HASH_TABLE)

 - Function: void g_hash_table_thaw (GHashTable *HASH_TABLE)

 - Function: void g_hash_table_foreach (GHashTable *HASH_TABLE, GHFunc
          FUNC, gpointer USER_DATA)

Cache handling
**************

Functions
---------

 - Function: GCache* g_cache_new (GCacheNewFunc VALUE_NEW_FUNC,
          GCacheDestroyFunc VALUE_DESTROY_FUNC, GCacheDupFunc
          KEY_DUP_FUNC, GCacheDestroyFunc KEY_DESTROY_FUNC, GHashFunc
          HASH_KEY_FUNC, GHashFunc HASH_VALUE_FUNC, GCompareFunc
          KEY_COMPARE_FUNC)

 - Function: void g_cache_destroy (GCache *CACHE)

 - Function: gpointer g_cache_insert (GCache *CACHE, gpointer KEY)

 - Function: void g_cache_remove (GCache *CACHE, gpointer KEY)

 - Function: void g_cache_key_foreach (GCache *CACHE, GHFunc FUNC,
          gpointer USER_DATA)

 - Function: void g_cache_value_foreach (GCache *CACHE, GHFunc FUNC,
          gpointer USER_DATA)

Tree handling
*************

Functions
---------

 - Function: GTree* g_tree_new (GCompareFunc KEY_COMPARE_FUNC)

 - Function: void g_tree_destroy (GTree *TREE)

 - Function: void g_tree_remove (GTree *TREE, gpointer KEY, gpointer
          VALUE)

 - Function: gpointer g_tree_lookup (GTree *TREE, gpointer KEY)

 - Function: void g_tree_traverse (GTree *TREE, GTraverseFunc
          TRAVERSE_FUNC, GTraverseType TRAVERSE_TYPE, gpointer DATA

 - Function: gpointer g_tree_search (GTree *TREE, GSearchFunc
          SEARCH_FUNC, gpointer DATA)

 - Function: gint g_tree_height (GTree *TREE)

 - Function: gint g_tree_nnodes (GTree *TREE)

Memory handling
***************

Functions
---------

 - Function: gpointer g_malloc (gulong SIZE)

 - Function: gpointer g_malloc0 (gulong SIZE)

 - Function: gpointer g_realloc (gpointer MEM, gulong SIZE)

 - Function: void g_mem_profile (void)

 - Function: void g_mem_check (gpointer MEM)

 - Function: GMemChunk* g_mem_chunk_new (gchar *NAME, gint ATOM_SIZE,
          gulong AREA_SIZE, gint TYPE)

 - Function: void g_mem_chunk_destroy (GMemChunk *MEM_CHUNK)

 - Function: gpointer g_mem_chunk_alloc (GMemChunk *MEM_CHUNK)

 - Function: void g_mem_chunk_free (GMemChunk *MEM_CHUNK, gpointer MEM)

 - Function: void g_mem_chunk_clean (GMemChunk *MEM_CHUNK)

 - Function: void g_mem_chunk_reset (GMemChunk *MEM_CHUNK)

 - Function: void g_mem_chunk_print (GMemChunk *MEM_CHUNK)

 - Function: void g_mem_chunk_info (void)

 - Function: void g_blow_chunks (void)
     Not what you might be thinking, `g_blow_chunks()' simply
     compresses all the chunks. This operation consists of freeing
     every memory area that should be freed (but which we haven't
     gotten around to doing yet).

Timer functions
***************

Functions
---------

 - Function: GTimer* g_timer_new (void)

 - Function: void g_timer_destroy (GTimer *TIMER)

 - Function: void g_timer_start (GTimer *TIMER)

 - Function: void g_timer_stop (GTimer *TIMER)

 - Function: void g_timer_reset (GTimer *TIMER)

 - Function: gdouble g_timer_elapsed (GTimer *TIMER, gulong
          *MICROSECONDS)

Output functions
****************

Functions
---------

 - Function: void g_error (gchar *FORMAT, ...)

 - Function: void g_warning (gchar *FORMAT, ...)

 - Function: void g_message (gchar *FORMAT, ...)

 - Function: void g_print (gchar *FORMAT, ...)

Utility functions
*****************

Error handling
**************

String chunks
*************

String handling
***************

Resizable arrays
****************

Flexible lexical scanner
************************

Other stuff
***********

Concept Index
*************