/**
 * $Id$
 * $Revision$
 * $Author$
 * $Date$
 *
 * This file is part of The iWear Framework.
 * In particular this file is part of the Framework Test Library
 *
 * The iWear Framework is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by the
 * Free Software Foundation as in version 2 of the License.

 * 
 * The iWear Framework is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * The iWear Framework; if not, write to the Free Software Foundation, Inc., 59
 * Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef __AUDIO_PLAYER_ENUM_H
#define __AUDIO_PLAYER_ENUM_H
 
#include <ostream>
extern "C"{
#include <stdint.h>
}

namespace iwear{
    namespace audioplayer{

	enum AudioPlayerButton{
	    PLAY_PAUSE,
	    NEXT,
	    BACK,
	    STOP,
	    QUIETER,
	    LOUDER,
	    PLAYLIST,
	    APPEND_ON,
	    APPEND_OFF,
	    PLAYLIST__SAVE,
	    PLAYLIST__SET_DEFAULT,
	    num_AudioPlayerButton
	};

	inline const char* to_string(AudioPlayerButton enumtype){
	    switch(enumtype){
	    case PLAY_PAUSE :
		return "iwear::audioplayer::AudioPlayerButton::PLAY/PAUSE";
		break;
	    case NEXT :
		return "iwear::audioplayer::AudioPlayerButton::NEXT";
		break;
	    case BACK :
		return "iwear::audioplayer::AudioPlayerButton::BACK";
		break;
	    case STOP :
		return "iwear::audioplayer::AudioPlayerButton::STOP";
		break;
	    case QUIETER :
		return "iwear::audioplayer::AudioPlayerButton::QUIETER";
		break;
	    case LOUDER :
		return "iwear::audioplayer::AudioPlayerButton::LOUDER";
		break;
	    case PLAYLIST :
		return "iwear::audioplayer::AudioPlayerButton::PLAYLIST";
		break;
	    case APPEND_ON :
		return "iwear::audioplayer::AudioPlayerButton::APPEND_ON";
		break;
	    case APPEND_OFF :
		return "iwear::audioplayer::AudioPlayerButton::APPEND_OFF";
		break;
	    case PLAYLIST__SAVE :
		return "iwear::audioplayer::AudioPlayerButton::PLAYLIST__SAVE";
		break; 
	    case PLAYLIST__SET_DEFAULT :
		return "iwear::audioplayer::AudioPlayerButton::PLAYLIST__SET_DEFAULT";
		break;
	    default:
		return "iwear::audioplayer::AudioPlayerButton::<undefined value>";
	    }
	}
	
	inline std::ostream& operator<<(std::ostream& os, AudioPlayerButton enumtype){
	    os << to_string(enumtype);
	    os << "(";
	    os << (uint32_t) enumtype << ")";
	    return os;
	}
	
    } // namespace audioplayer
} // namespace iwear

#endif // __AUDIO_PLAYER_ENUM

