aboutsummaryrefslogtreecommitdiff
path: root/Src/xspf/XSPFHandler.cpp
blob: 72c0927ee5550c2dd8851d9d7e2a440a35e691a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "XSPFHandler.h"
#include "XSPFLoader.h"
#include "api__xspf.h"
#include "resource.h"

const wchar_t *XSPFHandler::EnumerateExtensions(size_t n)
{
	switch(n)
	{
		case 0:
			return L"xspf";
		default:
			return 0;
	}
}

const char *XSPFHandler::EnumerateMIMETypes(size_t n)
{
	switch(n)
	{
		case 0:
			return "application/xspf+xml";
		default:
			return 0;
	}
}

const wchar_t *XSPFHandler::GetName()
{
	static wchar_t xspfpl[64];
	// no point re-loading this all of the time since it won't change once we've been loaded
	return (!xspfpl[0]?WASABI_API_LNGSTRINGW_BUF(IDS_XSPF_PLAYLIST,xspfpl,64):xspfpl);
}

// returns SUCCESS and FAILED, so be careful ...
int XSPFHandler::SupportedFilename(const wchar_t *filename)
{
	size_t filenameLength = wcslen(filename);
	size_t extensionLength = wcslen(L".xspf");
	if (filenameLength < extensionLength) return SVC_PLAYLISTHANDLER_FAILED;  // too short
	if (!_wcsicmp(filename + filenameLength - extensionLength, L".xspf"))
		return SVC_PLAYLISTHANDLER_SUCCESS;
	else
		return SVC_PLAYLISTHANDLER_FAILED;
}

int XSPFHandler::SupportedMIMEType(const char *type)
{
	if (!strcmp(type, "application/xspf+xml"))
		return SVC_PLAYLISTHANDLER_SUCCESS;
	else
		return SVC_PLAYLISTHANDLER_FAILED;
}

ifc_playlistloader *XSPFHandler::CreateLoader(const wchar_t *filename)
{
	return new XSPFLoader;
}

void XSPFHandler::ReleaseLoader(ifc_playlistloader *loader)
{
	delete static_cast<XSPFLoader *>(loader);
}

// Define the dispatch table
#define CBCLASS XSPFHandler
START_DISPATCH;
CB(SVC_PLAYLISTHANDLER_ENUMEXTENSIONS, EnumerateExtensions)
CB(SVC_PLAYLISTHANDLER_ENUMMIMETYPES, EnumerateMIMETypes)
CB(SVC_PLAYLISTHANDLER_SUPPORTFILENAME, SupportedFilename)
CB(SVC_PLAYLISTHANDLER_CREATELOADER, CreateLoader)
VCB(SVC_PLAYLISTHANDLER_RELEASELOADER, ReleaseLoader)
CB(SVC_PLAYLISTHANDLER_GETNAME, GetName)
END_DISPATCH;