/** @file  psConfigure.h
 *
 *  @brief Contains the declarations for initialization, memory finalization,
 *   and configuration.
 *
 *  These functions initalize psLib data before the beginning of a run and
 *  remove (finalize) the same data after the run is complete.  A function is
 *  also provided to return the current psLib version.
 *
 *  @ingroup Configure
 *
 *  @author Ross Harman, MHPCC
 *  @author Robert DeSonia, MHPCC
 *
 *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
 *  @date $Date: 2006-06-23 01:59:15 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
 */

#ifndef PS_CONFIGURE_H
#define PS_CONFIGURE_H

/** @addtogroup Configure
 *  @{
 */

/** Get current psLib version
 *
 *  Returns the current psLib version name as a string.
 *
 *  @return char*: String with version name.
 */
char* psLibVersion(
    void
);

/** Initializes persistent memory.
 *
 *  Creates persistant memory items used throughout psLib. Items created
 *  within this method should be freed with the psLibFinalize function.
 *  current, a non-NULL psErr is returned with code PS_ERR_NONE.
 *
 */
void psLibInit(
    const char* timeConfig           ///< Filename of config file for psTime.
);

/** Removes persistant memory created with the psLibInit function.
 *
 *  The memory created but not freed by psLib modules should be freed
 *  within this function at the end of a psLib execution cycle.
 *
 *  @return void: void.
 */
void psLibFinalize(
    void
);

// Check the memory; intended for use on exit, but might be used elsewhere
void p_psMemoryCheck(void);

/** @} */

#endif // #ifndef PS_CONFIGURE_H
