////////////////////////////////////////////////////////////////////////////////
/// @file doxygen.intro
/// @author Reid Spencer <rspencer@x10sys.com> 
/// @date 2003/12/30
/// @brief LLVM API documentation introduction.
////////////////////////////////////////////////////////////////////////////////
///
/// @mainpage LLVM:Low Level Virtual Machine
///
/// @section main_intro Introduction
/// Welcome to the Low Level Virtual Machine (LLVM)
///
/// This documentation describes the @b internal software that makes 
/// up LLVM, not the @b external use of  LLVM. There are no instructions
/// here on how to use LLVM, only the APIs that make up the software. For usage 
/// instructions, please see the programmer's guide or reference manual.
///
/// @section main_caveat Caveat 
/// This documentation is generated directly from the source code with doxygen. 
/// Since LLVM is constantly under active development, what you're about to
/// read is out of date! However, it may still be useful since certain portions of 
/// LLVM are very stable. 
///
/// @section main_changelog Change Log
/// - Original content written 12/30/2003 by Reid Spencer
