* Copyright 2002-2006, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Tyler Dauwalder
* Ingo Weinhold, bonefish@users.sf.net
* Axel DΓΆrfler, axeld@pinc-software.de
*/
#ifndef _MIME_INSTALLED_TYPES_H
#define _MIME_INSTALLED_TYPES_H
#include <map>
#include <string>
#include <SupportDefs.h>
#include <mime/Supertype.h>
class BMessage;
namespace BPrivate {
namespace Storage {
namespace Mime {
class DatabaseLocation;
class InstalledTypes {
public:
InstalledTypes(DatabaseLocation* databaseLocation);
~InstalledTypes();
status_t GetInstalledTypes(BMessage *types);
status_t GetInstalledTypes(const char *supertype, BMessage *types);
status_t GetInstalledSupertypes(BMessage *types);
status_t AddType(const char *type);
status_t RemoveType(const char *type);
private:
status_t _AddSupertype(const char* super);
status_t _AddSubtype(const char *super, const char *sub);
status_t _AddSubtype(Supertype &super, const char *sub);
status_t _RemoveSupertype(const char *super);
status_t _RemoveSubtype(const char *super, const char *sub);
void _Unset();
void _ClearCachedMessages();
status_t _CreateMessageWithTypes(BMessage **result) const;
status_t _CreateMessageWithSupertypes(BMessage **result) const;
void _FillMessageWithSupertypes(BMessage *msg);
status_t _BuildInstalledTypesList();
private:
DatabaseLocation* fDatabaseLocation;
std::map<std::string, Supertype> fSupertypes;
BMessage *fCachedMessage;
BMessage *fCachedSupertypesMessage;
bool fHaveDoneFullBuild;
};
}
}
}
#endif