/*
  DOXYGEN.dox  -  font page for the Doxygen API documentation
 

   Copyright (C)
     2008,            Christian Thaeter <ct@pipapo.org>
     2013,            Hermann Vosseler <Ichthyostega@web.de>

  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License as
  published by the Free Software Foundation; either version 2 of
  the License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/


/** @mainpage Lumiera API Documentation

This section contains the API and reference documentation
of the Lumiera code base. It is generated automatically from the
source code comments.

Lumiera Documentation Structure
===============================
Lumiera comes with extensive documentation, which is organised into several tiers or layers,
according to the target audience, the degree of detail and the level of technicality.
Mostly, the sources of the documentation are kept in-tree; documentation pages are generated
with the *ASCIIDOC* tool and published at the [Lumiera website](http://Lumiera.org/documentation)

- as a general introduction, you should read the [»outer space« document](http://Lumiera.org/documentation/user/intro/intro.html)
- further user documentation -- mostly tutorials -- is available in the [user section](http://Lumiera.org/documentation/user/)
- Architecture and specification documents can be found in the [design section](http://www.lumiera.org/documentation/design/)
- fundamental discussions and decisions are documented in the form of [RfC entries](http://www.lumiera.org/documentation/devel/design_process.html)
- as entrance to the *technical level*, developers should read the [»inner core«](http://www.lumiera.org/documentation/technical/overview.html) document
- from there, various pages in the [technical documentation](http://www.lumiera.org/documentation/technical) detail specific aspects
  of implementation and technology. They treat some topics in a coherent fashion and introduce the concepts and abstractions
  necessary to understand the actual code
- right now, you are looking at the **API Documentation**, which is the entrance point to the actual code
- on your exploration path down to the internal details, you might want to follow the overview given
  + by the [Layer and Subsystem](modules.html) overview
  + the file level comments of relevant interfaces

*/

/* ==== Layers ==== */

/** @defgroup vault Vault-Layer
*/

/** @defgroup steam Steam-Layer
*/

/** @defgroup gui Graphical User Interface
*/

/* ==== Subsystems ==== */

/** @defgroup asset Asset Management
    @ingroup steam
*/

/** @defgroup session Session
    @ingroup steam
*/

/** @defgroup fixture Fixture and low-level-Model
    @ingroup steam
*/

/** @defgroup player Playback and Render Control
    @ingroup steam
*/

/** @defgroup engine Render Engine
    @ingroup vault
*/

/** @defgroup scheduler Scheduler
    @ingroup vault
*/

/** @defgroup memory Memory Management
    @ingroup vault
*/


/* ==== Global Namespaces ==== */

/** @namespace lumiera
Lumiera public interface.
Global interfaces and facilities accessible from plugins and scripts.
It's probably a good idea to pull it in explicitly and to avoid nesting
implementation namespaces within \c lumiera::
*/


/** @namespace lib
Implementation namespace for support and library code.
*/



/* ==== Test Namespaces ==== */

/** @namespace test
Test runner and basic definitions for tests.
*/

/** @namespace lib::test
Unit tests for the Lumiera support library.
*/

/** @namespace lib::test::test */
/** @namespace lib::time::test */
/** @namespace lib::diff::test */
/** @namespace lib::hash::test */
/** @namespace lib::idi::test  */
/** @namespace lib::iter::test */
/** @namespace lib::meta::test */

/** @namespace util::test */

/** @namespace vault::test */
/** @namespace vault::mem::test */
/** @namespace vault::gear::test */

/** @namespace steam::test */
/** @namespace steam::play:test */
/** @namespace steam::engine::test */
/** @namespace steam::fixture::test */
/** @namespace steam::asset::test */
/** @namespace steam::asset::meta::test */
/** @namespace steam::control::test */
/** @namespace steam::session::test */
/** @namespace steam::builder::test */

/** @namespace stage::test */
/** @namespace stage::ctrl::test */
/** @namespace stage::model::test */
/** @namespace stage::interact::test */

// Remark: for some unclear reason, cross-links to test-class names do not work in Doxygen;
//         even after declaring these namespaces, or after setting EXTRACT_ALL = YES
