#include "mpg123lib_intern.h"

int attribute_align_arg mpg123_feature2(int key)
{
	return mpg123_feature(key);
}

int attribute_align_arg mpg123_feature(const enum mpg123_feature_set key)
{
	switch(key)
	{
		case MPG123_FEATURE_ABI_UTF8OPEN:
#ifdef WANT_WIN32_UNICODE
		return 1;
#else
		return 0;
#endif /* WANT_WIN32_UNICODE */

		case MPG123_FEATURE_OUTPUT_8BIT:
#ifdef NO_8BIT
		return 0;
#else
		return 1;
#endif /* mpg123_output_8bit */

		case MPG123_FEATURE_OUTPUT_16BIT:
#ifdef NO_16BIT
		return 0;
#else
		return 1;
#endif /* mpg123_output_16bit */

		case MPG123_FEATURE_OUTPUT_32BIT:
#ifdef NO_32BIT
		return 0;
#else
		return 1;
#endif /* mpg123_output_32bit */

		case MPG123_FEATURE_OUTPUT_FLOAT32:
#if defined(NO_REAL)
		return 0;
#else
		return 1;
#endif

		case MPG123_FEATURE_OUTPUT_FLOAT64:
		return 0;

		case MPG123_FEATURE_PARSE_ID3V2:
#ifdef NO_ID3V2
		return 0;
#else
		return 1;
#endif /* NO_ID3V2 */

		case MPG123_FEATURE_DECODE_LAYER1:
#ifdef NO_LAYER1
		return 0;
#else
		return 1;
#endif /* NO_LAYER1 */

		case MPG123_FEATURE_DECODE_LAYER2:
#ifdef NO_LAYER2
		return 0;
#else
		return 1;
#endif /* NO_LAYER2 */

		case MPG123_FEATURE_DECODE_LAYER3:
#ifdef NO_LAYER3
		return 0;
#else
		return 1;
#endif /* NO_LAYER3 */

		case MPG123_FEATURE_DECODE_ACCURATE:
#ifdef ACCURATE_ROUNDING
		return 1;
#else
		return 0;
#endif /* ACCURATE_ROUNDING */

		case MPG123_FEATURE_DECODE_DOWNSAMPLE:
#ifdef NO_DOWNSAMPLE
		return 0;
#else
		return 1;
#endif /* NO_DOWNSAMPLE */

		case MPG123_FEATURE_DECODE_NTOM:
#ifdef NO_NTOM
		return 0;
#else
		return 1;
#endif /* NO_NTOM */

		case MPG123_FEATURE_PARSE_ICY:
#ifdef NO_ICY
		return 0;
#else
		return 1;
#endif /* NO_ICY */

		case MPG123_FEATURE_INDEX:
#ifdef FRAME_INDEX
		return 1;
#else
		return 0;
#endif /* FRAME_INDEX */
		case MPG123_FEATURE_TIMEOUT_READ:
#ifdef TIMEOUT_READ
		return 1;
#else
		return 0;
#endif
		case MPG123_FEATURE_EQUALIZER:
#ifndef NO_EQUALIZER
		return 1;
#else
		return 0;
#endif
		case MPG123_FEATURE_MOREINFO:
#ifndef NO_MOREINFO
		return 1;
#else
		return 0;
#endif

		default: return 0;
	}
}
