Utilities
This document covers the basic programming utilities that can be used in
the client or server to make life easier.
  Container Modules
These modules are generic data object storage modules that might be used
wherever convenient. The general rule for freeing memory from these modules
is that free methods handles data object generated within the modules whereas
user data is for the caller to free. The modules consist of:
  - 
    Binary Trees
  
 - 
    This is a complete balanced binary tree that might be used for storage and
    sort of a large number of data objects, e.g. filenames in directory listings
    etc.
  
 - 
    Dynamic Strings
  
 - 
    A Chunk is a block wise expandable array of type (char *) and is a sort of
    apology for real strings in C. Chunks make it easier to handle dynamic strings
    of unknown size. It is often faster than using the String Copy Routines.
  
 - 
    Linked Lists
  
 - 
    This module provides the functionality for managing a generic list of data
    objects. The module is implemented as a single linked list using the scheme
    first in - last out (FILO).
  
 - 
    Association Lists
  
 - 
    This is a small module build on top of HTList that provides a way to store
    Name-Value pairs in an easy way.
  
 - 
    Strings
  
 - 
    Routines for dynamic arrays of characters include string copy, case insensitive
    comparison etc. It also contains functions for generating date and time
    stamps, MessageID etc.
  
 - 
    Atoms
  
 - 
    Atoms are strings which are given representative pointer values so that they
    can be stored more efficiently, and comparisons for equality done more
    efficiently. The pointer values are in fact entries into a hash table.
 
  Basic Utilities
 Look into these modules before you start defining system dependent
stuff. Most things are already defined here! The list of basic utility modules
are currently as follows
  - 
    System specifics
  
 - 
    The sysdep.h file includes system-specific
    include files and flags for I/O to network and disk. The only reason for
    this file is that the Internet world is more complicated than Posix and ANSI.
  
 - 
    Platform Independent macros
  
 - 
    The HTUtil.h include file contains things
    we need everywhere, generally macros for declarations, booleans, etc.
 
  
  Henrik Frystyk Nielsen,
  @(#) $Id: Utils.html,v 1.16 1998/05/03 19:44:48 frystyk Exp $