/*
 * Project: MoleCuilder
 * Description: creates and alters molecular systems
 * Copyright (C)  2010 University of Bonn. All rights reserved.
 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
 */
/**
 * \file main.dox
 *
 * This file contains the mainpage of the documentation.
 *
 * Created on: Oct 28, 2011
 *    Author: heber
 */
 /*! \mainpage Introduction to CodePatterns
 *
 *  This is the introductory page to the CodePatterns package.
 *
 *  
 Aim 
 *
 *  The CodePatterns tries to contain a good set of prefactured design patterns
 *  for your ease-of-use. Special emphasis is placed on \a immediate usability.
 *  In most cases, you only have to know the type of design pattern you want,
 *  let's call it foo, then include a \b foo.hpp in your definition, a
 *  \b foo_impl.hpp in your implementation, maybe do some inheritance and your
 *  good to go. At times you will need to call a macro such as \b
 *  CONSTRUCT_FOO(..) which tells the pattern about your specific class or you
 *  have to create a \b foo.def file containing some #define's with an equal
 *  intention. But that's supposed to be it.
 *
 *   Overview of implemented patterns 
 *
 *  - \ref Cacheable - class wraps a value obtained via some expensive
 *    calculation and only performs update when necessary.
 *  - \ref Clone - class can create copies of itself with specific interface,
 *    copies can be manipulated at construction.
 *  - \ref Creator - class can create copies of itself with specific interface.
 *  - \ref Factory - contains table of Creator and spawns new instances on user
 *    request.
 *  - \ref ManipulablePrototypeFactory - contains table of clones or prototypes
 *    and spawns new \a manipulated instances on user request.
 *  - \ref pattern-observer - class can observe changes in other class via this
 *    interface.
 *  - \ref PrototypeFactory - contains table of clones or prototypes and spawns
 *    new instances on user request.
 *  - \ref Registry - contains a map to instances which can be retrieved on
 *    user request.
 *  - \ref Singleton - global, unique instance of a class.
 */