/********************************************************************
 * COPYRIGHT: 
 * Copyright (c) 1997-2001, International Business Machines Corporation and
 * others. All Rights Reserved.
 *
 *  FILE NAME: DOCMAIN.h
 *
 *   Date          Name        Description
 *   12/11/2000    Ram        Creation.
 */
/* This file contains documentation for Doxygen and doesnot have
 * any significance with respect to C or C++ API
 */
/*! \mainpage
 *
 * \section Usage
 * <h2> API Reference Usage </h2>
 *
 * <h3> C++ Programmers:</h3>
 * Use  <a href="hierarchy.html">Class Hierarchy</a> or <a href="classes.html> Alphabetical List </a>
 * or <a href="annotated.html"> Compound List</a>
 * to find the class you are interested in. For example, to find BreakIterator,
 * you can go to the <a href="classes.html"> Alphabetical List</a>, then click on
 * "BreakIterator". Once you are at the class, you will find an inheritance
 * chart, a list of the public members, a detailed description of the class,
 * then detailed member descriptions.
 *
 * <h4>C Programmers: </h4>
 * Use <a href="#Module">Module List</a> or <a href="globals.html"> File Members</a>
 * to find a list of all the functions and constants.
 * For example, to find BreakIterator functions you would click on
 * <a href="files.html"> File List</a>,
 * then find "ubrk.h" and click on it. You will find descriptions of Defines,
 * Typedefs, Enumerations, and Functions, with detailed descriptions below.
 * If you want to find a specific function, such as ubrk_next(), then click
 * first on <a href="globals.html"> File Members</a>, then use your browser
 * Find dialog to search for "ubrk_next()".
 *
 *
 * <hr>
 * <h5> Architecture  (User Guide)</h5>
 * <ul>
 *    <li>
 *       <b><a href="http://oss.software.ibm.com/icu/userguide/index.html"> Introduction </a></b>
 *    <li>
 *       <b><a href="http://oss.software.ibm.com/icu/userguide/i18n.html"> Internationalization </a></b>
 *    <li>
 *       <b><a href="http://oss.software.ibm.com/icu/userguide/design.html"> Locale Model </a></b>
 *    <li>
 *       <b><a href="http://oss.software.ibm.com/icu/userguide/design.html"> Multithreading</a></b>
 *    <li>
 *       <b><a href="http://oss.software.ibm.com/icu/userguide/conversion.html"> Conversion </a></b>
 *    <li>
 *       <b><a href="http://oss.software.ibm.com/icu/userguide/design.html"> Error Handling  </a></b>
 * </ul>
 * <hr>
 * <h6> <a name="Module">Module List</h6>
 * <center>
 * <table BORDER COLS=3 WIDTH="50%" >
 * <tr>
 * <td><b>Description</b></td>
 * <td><b>C</b> </td>
 * <td><b>C++</b> </td>
 * </tr>
 * <tr>
 * <td> Basic types, constants and enumerations </td>
 * \htmlonly
 * <td colspan=2><a class="el" href="utypes_h.html"> utypes.h</a> </td>
 * \endhtmlonly
 * </tr>
 * <tr>
 * <td>String and Character Iteration</td>
 * <td>ustring.h, utf.h, uchar.h</td>
 * <td>CharacterIterator, Unicode, UnicodeString</td>
 * </tr>
 * <tr>
 * <td>Codepage conversion</td>
 * <td>ucnv.h</td>
 * <td>UnicodeConverter</td>
 * </tr>
 * <tr>
 * <td>Locales </td>
 * <td>uloc.h</a></td>
 * <td>Locale</td>
 * </tr>
 * <tr>
 * <td>Resource Bundles</td>
 * <td>ures.h</td>
 * <td>ResourceBundle</td>
 * </tr>
 * <tr>
 * <td>Date and Time Formatting</td>
 * <td>udat.h</td>
 * <td>DateFormat</td>
 * </tr>
 * <tr>
 * <td>Calendars</td>
 * <td>ucal.h</td>
 * <td>Calendar</td>
 * </tr>
 * <tr>
 * <td>Message Formatting</td>
 * <td>umsg.h</td>
 * <td>MessageFormat</td>
 * </tr>
 * <tr>
 * <td>Number Formatting</td>
 * <td>unum.h</td>
 * <td>NumberFormat</td>
 * </tr>
 * <tr>
 * <td>Normalization</td>
 * <td>unorm.h</td>
 * <td>Normalizer</td>
 * </tr>
 * <tr>
 * <td>Transliteration</td>
 * <td>utrans.h</td>
 * <td>Transliterator
 * </td>
 * </tr>
 * <tr>
 * <td>Bidirectional Algorithm</td>
 * <td>ubidi.h</td>
 * <td>BiDi</td>
 * </tr>
 * <tr>
 * <tr>
 * <td>Collation and Searching</td>
 * <td>ucol.h</td>
 * <td>Collator</td>
 * </tr>
 * <tr>
 * <td>Text boundary analysis (Break Iteration)</td>
 * <td>ubrk.h</td>
 * <td>BreakIterator</td>
 * </tr>
 * <tr>
 * <td>Compression. (Deprecated)</td>
 * <td>scsu.h</td>
 * <td>N.A</td>
 * </tr>
 * <tr>
 * <td>Arabic Shaping</td>
 * <td>ushape.h</td>
 * <td>N.A</td>
 * </tr>
 * </table>
 * </center>
 */

