/** @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 George Gusciora, MHPCC
 *  @author Robert DeSonia, MHPCC
 *
 *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
 *  @date $Date: 2005-02-17 19:26:24 $
 *
 *  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.
 *
 *  @return void: void.
 */
void psLibInit(
    bool predictable,
    const char* timeConfig
);

/** 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
);


/* @} */

#endif
