/** @mainpage c_salt Reference Documentation

 This reference documentation describes the c_salt API, which is
 an open-source API for browser plugins that layers on
 top of the Pepper API and the NPAPI.
 You can use the c_salt API
 in <a href="http://code.google.com/p/nativeclient-sdk">Native Client</a>
 modules to communicate with the Google Chrome browser.
 This page has the following contents:
 
  - @ref reading
  - @ref modules
  - @ref about


 @section reading Before you start

 This documentation assumes that you have read and understood
 the following pages in the Native Client SDK project:

 - <a href="http://code.google.com/p/nativeclient-sdk/">Getting started</a>
 
 
 @section modules API categories

The c_salt API consists of a C++ API in the c_salt namespace.

(Details TBD)... 


 @section about About this doc

 <p>
 The tabs at the top of each page take you to the following sections.
 </p>

 - <b>Main Page</b>: This page
 - <a href="modules.html"><b>Modules</b></a>:  Lets you find API by functional area
 - <a href="annotated.html"><b>Data Structures</b></a>:
      List of classes and data structures in c_salt.
 - <a href="files.html"><b>Files</b></a>:
      The header files used to generate this documentation,
      with file descriptions and links to generated doc.
      Don't miss the <a href="globals.html">File member index</a>.

 */