TYPEMAP
xmmsc_connection_t*			XMMSC_CONNECTION_T
xmmsc_result_t*				XMMSC_RESULT_T
xmmsc_result_propdict_t*	XMMSC_RESULT_PROPDICT_T
xmms_plugin_type_t			XMMS_PLUGIN_TYPE_T
xmmsc_result_type_t			XMMS_RESULT_TYPE_T
xmms_object_cmd_arg_type_t	XMMS_OBJECT_CMD_ARG_TYPE_T
uint32_t					T_UV

OUTPUT

XMMSC_CONNECTION_T
	if ($var == NULL) {
		$arg = &PL_sv_undef;
	} else {
		$arg = perl_xmmsclient_new_sv_from_ptr($var, \"Audio::XMMSClient\");
	}

XMMSC_RESULT_T
	$arg = perl_xmmsclient_new_sv_from_ptr($var, \"Audio::XMMSClient::Result\");

XMMS_RESULT_TYPE_T
	{
		$arg = newSVpv(\"unknown\", 0);
		if ($var == XMMSC_RESULT_CLASS_DEFAULT) {
			sv_setpv($arg, \"default\");
		} else if ($var == XMMSC_RESULT_CLASS_SIGNAL) {
			sv_setpv($arg, \"signal\");
		} else if ($var == XMMSC_RESULT_CLASS_BROADCAST) {
			sv_setpv($arg, \"broadcast\");
		}
	}

XMMS_OBJECT_CMD_ARG_TYPE_T
	{
		$arg = newSVpv("unknown", 0);
		if ($var == XMMS_OBJECT_CMD_ARG_NONE) {
			sv_setpv($arg, \"none\");
		} else if ($var == XMMS_OBJECT_CMD_ARG_UINT32) {
			sv_setpv($arg, \"uint\");
		} else if ($var == XMMS_OBJECT_CMD_ARG_INT32) {
			sv_setpv($arg, \"int\");
		} else if ($var == XMMS_OBJECT_CMD_ARG_STRING) {
			sv_setpv($arg, \"string\");
		} else if ($var == XMMS_OBJECT_CMD_ARG_DICT) {
			sv_setpv($arg, \"dict\");
		} else if ($var == XMMSC_RESULT_VALUE_TYPE_BIN) {
			sv_setpv($arg, \"bin\");
		} else if ($var == XMMS_OBJECT_CMD_ARG_LIST) {
			sv_setpv($arg, \"list\");
		} else if ($var == XMMS_OBJECT_CMD_ARG_PROPDICT) {
			sv_setpv($arg, \"propdict\");
		}
	}

INPUT

XMMSC_CONNECTION_T
	$var = (xmmsc_connection_t*)perl_xmmsclient_get_ptr_from_sv($arg, \"Audio::XMMSClient\");

XMMSC_RESULT_T
	$var = (xmmsc_result_t*)perl_xmmsclient_get_ptr_from_sv($arg, \"Audio::XMMSClient::Result\");

XMMSC_RESULT_PROPDICT_T
	$var = (xmmsc_result_t*)perl_xmmsclient_get_ptr_from_sv($arg, \"Audio::XMMSClient::Result::PropDict::Tie\");

XMMS_PLUGIN_TYPE_T
	{
		char* plugin_type = NULL;
		if ($arg == NULL) {
			plugin_type = \"\";
		} else {
			plugin_type = SvPV_nolen($arg);
		}

		if (strcmp(plugin_type, \"output\") == 0) {
			$var = XMMS_PLUGIN_TYPE_OUTPUT;
		} else if (strcmp(plugin_type, \"playlist\") == 0) {
			$var = XMMS_PLUGIN_TYPE_PLAYLIST;
		} else if (strcmp(plugin_type, \"effect\") == 0) {
			$var = XMMS_PLUGIN_TYPE_EFFECT;
		} else if (strcmp(plugin_type, \"xform\") == 0) {
			$var = XMMS_PLUGIN_TYPE_XFORM;
		} else if (strcmp(plugin_type, \"all\") == 0) {
			$var = XMMS_PLUGIN_TYPE_ALL;
		} else {
			croak(\"unknown XMMS_PLUGIN_TYPE_T: %s\", plugin_type);
		}
	}

