/** \mainpage Bulk_Extractor Summary
 *\a bulk_extractor is a C++ program that scans a disk image, a file,
 * or a directory of files and extracts useful information without parsing the file system
 * or file system structures.
 *
 * The results are stored in feature files that can be easily inspected, parsed,
 * or processed with automated tools. \a bulk_extractor also creates
 * histograms of features that it finds, as features that are more common
 * tend to be more important. We have made the following tools available
 * for processing feature files generated by \a bulk_extractor:
 * We have provided a small number of python programs that perform
 * automated processing on feature files.
 * We have provided the Bulk Extractor Viewer User Interface (\a BEViewer)
 * for browsing features stored in feature files
 * and for launching \a bulk_extractor scans.
 * Here is a screenshot of the \a BEViewer User Interface:
 * \image latex BEViewer_blank.eps "The \a BEViewer UI when \a BEViewer is first opened." width=10cm
 * \image html BEViewer_blank.png "The \a BEViewer UI when \a BEViewer is first opened."

\a bulk_extractor is distinguished from other forensic tools by its speed and thoroughness. Because it ignores file system structure, \a bulk_extractor can process different parts of the disk in parallel. In practice, the program splits the disk up into 16MiByte pages and processes one page on each available core. This means that 24-core machines process a disk roughly 24 times faster than a 1-core machine. bulk_extractor is also thorough. That’s because bulk_extractor automatically detects, decompresses, and recursively re-processes compressed data that is compressed with a variety of algorithms. Our testing has shown that there is a significant amount of compressed data in the unallocated regions of file systems that is missed by most forensic tools that are commonly in use today. Another advantage of ignoring file systems is that bulk_extractor can be used to process any digital media. We have used the program to process hard drives, SSDs, optical media, camera cards, cell phones, network packet dumps, and other kinds of digital information. 

\section architecture Architecture Overview
\a bulk_extractor consists of several parts:
\li \ref bulk_extractor_APIs.  Use these interfaces when creating a scanner.
\li Scanners, see \ref winprefetch_scanner.
\li \ref internal_interfaces which provide subsystems that make \a bulk_extractor work.
\li \ref plugin_module, allowing use of separate plug-in scanners.
 */

/** \defgroup bulk_extractor_APIs bulk_extractor APIs
 * The \ref bulk_extractor_APIs provide interfaces that support \a bulk_extractor scanners.
 * \note This section provides an overview of interfaces available.  It is not complete.
 */

/** \defgroup winprefetch_scanner Example Scanner: win_prefetch
 * Please see function ::scan_winprefetch for details about this scanner.
 * 
 */

/** \defgroup internal_interfaces Internal bulk_extractor Interfaces
 * This section shows some of the interfaces used internally by \a bulk_extractor
 * to support scan operations.
 */

/** \defgroup plugin_module The Scanner Plugin Module
 * \copydoc bulk_extractor_i.h
 */

/** \page Plugin_Architecture Plugin Architecture
 * \copydoc bulk_extractor_i.h

TBD
 */

/** \page Threading Threading Issues
 * \copydoc threadpool.h
TBD
 */

