/** @file  pslib_strict.h
*
*  @brief Contains the complete list of header files for pslib while poisoning
*         the use of standard memory allocation routines.
*
*  This header file includes all the necessary header files for a user to
*  user all public functions within the pslib library.
*
*  @author Eric Van Alst, MHPCC
*
*  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
*  @date $Date: 2005-04-07 20:27:41 $
*
*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
*/

#ifndef PS_LIB_STRICT_H
#define PS_LIB_STRICT_H

#ifdef PS_LIB_H  /* this is included from pslib.h, so don't poison anything */
#ifndef PS_ALLOW_MALLOC
#define PS_ALLOW_MALLOC
#endif
#else
#undef PS_ALLOW_MALLOC /* don't allow code to not poison malloc, i.e., strict poisioning */
#endif

// // System Utilities

/// @defgroup SysUtils System Utilities
/// @{

/** @defgroup MemoryManagement Memory Management Utilities
 *
 *  This is the generic memory management system put inbetween the user's high level code and the OS-level
 *  memory allocation routines.  This system adds such features as callback routines for memory error events,
 *  tracing capabilities, and reference counting.
 *
 *  @ingroup SysUtils
 */

#include "fitsio.h"

#include "psMemory.h"

/// @defgroup LogTrace Tracing and Logging
/// @ingroup SysUtils
#include "psLogMsg.h"
#include "psTrace.h"

/// @defgroup ErrorHandling Error Handling
/// @ingroup SysUtils
#include "psAbort.h"
#include "psError.h"

#include "psString.h"

/// @defgroup Configure Configure psLib
/// @ingroup SysUtils
#include "psConfigure.h"

/// @}

// Collections
/// @defgroup DataContainer Data Containers
/// @{

#include "psType.h"

/// @defgroup LinkedList Linked List
/// @ingroup DataContainer
#include "psList.h"

/// @defgroup HashTable Hash Table
/// @ingroup DataContainer
#include "psHash.h"

/// @defgroup Scalar Scalar
/// @ingroup DataContainer
#include "psScalar.h"

/// @defgroup Vector Vector Container
/// @ingroup DataContainer
#include "psVector.h"

/// @defgroup Array Array Container
/// @ingroup DataContainer
#include "psArray.h"

/// @defgroup Image Image Container
/// @ingroup DataContainer
/// @{
#include "psImage.h"
#include "psImageExtraction.h"
#include "psImageManip.h"
#include "psImageConvolve.h"

/// @defgroup ImageIO Image File I/O Functions
/// @ingroup Image
#include "psImageIO.h"

/// @defgroup ImageStats Image Statistical Functions
/// @ingroup Image
#include "psImageStats.h"

/// @}

/// @defgroup BitSet Bit Set Container
/// @ingroup DataContainer
#include "psBitSet.h"

/// @}

// Data Manipulation
/// @defgroup DataManip Data Manipulation
/// @{

/// @defgroup Compare Comparison Functions
/// @ingroup DataManip
#include "psCompare.h"

/// @defgroup Stats Statistic Functions
/// @ingroup DataManip
#include "psStats.h"

/// @defgroup Matrix Matrix Operations
/// @ingroup DataManip
#include "psMatrix.h"

/// @defgroup MatrixArithmetic Matrix Arithmetic Operations
/// @ingroup DataManip
#include "psBinaryOp.h"
#include "psUnaryOp.h"

#include "psRandom.h"

/// @defgroup Transform Fourier Transform Operations
/// @ingroup DataManip
#include "psVectorFFT.h"
#include "psImageFFT.h"

#include "psFunctions.h"
#include "psMinimize.h"

/// @}

// Astronomy
/// @defgroup Astronomy Astronomy Functions
/// @{

/// @defgroup CoordinateTransform Coordinate Functions
/// @ingroup Astronomy
#include "psCoord.h"

/// @defgroup Photometry Photometry
/// @ingroup Astronomy
#include "psPhotometry.h"

/// @defgroup Time Time Functions
/// @ingroup Astronomy
#include "psTime.h"

/// @defgroup Metadata Metadata Functions
/// @ingroup Astronomy
#include "psMetadata.h"
#include "psMetadataIO.h"

/// @defgroup AstroImage Astrometry Functions
/// @ingroup Astronomy
#include "psAstrometry.h"
#include "psConstants.h"
#include "psDB.h"

/// @}

// FileUtils
/// @defgroup FileUtils File Utilities
/// @{
#include "psFits.h"

/// @defgroup LookupTable Lookup Table
/// @ingroup FileUtils
#include "psLookupTable.h"

/// @}

#endif
