/*******************************************************************************
        This file is Part of the ZEngine Library for 2D game development.
                   Copyright (C) 2002, 2003 James Turk
                     Licensed under a BSD-style license.
    The maintainer of this library is James Turk (james@conceptofzero.net) 
     and the home of this Library is http://www.zengine.sourceforge.net
*******************************************************************************/
/*!
    \file ZE_Utility.h
    \brief Definition file for ZEngine Utilities.
    Definition file for ZEngine Utilities which are used throughout the engine and can be used in
    conjunction with ZEngine.
    
$Id: ZE_Utility.h,v 1.5 2003/06/11 00:15:25 cozman Exp $
    \author James Turk
**/
#ifndef __ze_utility_h__
#define __ze_utility_h__
#include "ZE_Includes.h"
namespace ZE
{
/*! 
    \brief Parses a std::string and interprets variable arguments, similar to sprintf.
    Takes % identifiers out of fmtstr and parses them, replacing them with cooresponding values 
    in the variable arguments list.  For more detail view stdarg documentation.
    \param fmtstr defines format of resulting std::string
    \param ... variable number of arguments after fmtstr
    \return std::string of parsed and combined std::string
**/
std::string FormatStr(const char *fmtstr, ...);
//////////
//Memory//
//////////
/*!
    \brief Properly free SDL_Surface. 
    
    Safely free an SDL_Surface* and set it to NULL.
    \param image Image to free and set to NULL.
**/
void FreeImage(SDL_Surface *&image);
#ifdef USE_SDL_MIXER
/*!
    \brief Properly free Mix_Chunk. 
    
    Safely free a Mix_Chunk* and set it to NULL.
    \param chunk Chunk to free and set to NULL.
**/
void FreeSound(Mix_Chunk *&chunk);
/*!
    \brief Properly free Mix_Music.
    
    Safely free a Mix_Music* and set it to NULL.
    \param music Music to free and set to NULL.
**/
void FreeMusic(Mix_Music *&music);
#endif
#ifdef USE_SDL_TTF
/*!
    \brief Properly free TTF_Font. 
    
    Safely free a TTF_Font* and set it to NULL.
    \param font Font to free and set to NULL.
**/
void FreeFont(TTF_Font *&font);
#endif
}
#endif //__ze_utility_h__