Make UEFI boot-platform build again
[haiku.git] / headers / private / storage / mime / MimeSnifferAddonManager.h
blobde062518fc1337593c29f5c966056cdf729810bf
1 /*
2 * Copyright 2006-2013, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _MINE_MIME_SNIFFER_ADDON_MANAGER_H
6 #define _MINE_MIME_SNIFFER_ADDON_MANAGER_H
9 #include <List.h>
10 #include <Locker.h>
13 #include <mime/MimeSniffer.h>
16 class BFile;
17 class BMimeSnifferAddon;
18 class BMimeType;
21 namespace BPrivate {
22 namespace Storage {
23 namespace Mime {
26 class MimeSnifferAddonManager : public BPrivate::Storage::Mime::MimeSniffer {
27 private:
28 MimeSnifferAddonManager();
29 ~MimeSnifferAddonManager();
31 public:
32 static MimeSnifferAddonManager* Default();
33 static status_t CreateDefault();
34 static void DeleteDefault();
36 status_t AddMimeSnifferAddon(BMimeSnifferAddon* addon);
38 virtual size_t MinimalBufferSize();
40 virtual float GuessMimeType(const char* fileName,
41 BMimeType* type);
42 virtual float GuessMimeType(BFile* file,
43 const void* buffer, int32 length,
44 BMimeType* type);
46 private:
47 struct AddonReference;
49 status_t _GetAddons(AddonReference**& references,
50 int32& count);
51 void _PutAddons(AddonReference** references,
52 int32 count);
54 static MimeSnifferAddonManager* sManager;
56 BLocker fLock;
57 BList fAddons;
58 size_t fMinimalBufferSize;
61 } // namespace Mime
62 } // namespace Storage
63 } // namespace BPrivate
66 #endif // _MINE_MIME_SNIFFER_ADDON_MANAGER_H