After implementing the BMimeType::GetInstalled[Super]Types()
functionality, it became apparent that some restructuring was
needed if I wanted to keep things clean and managble.
storage/MimeDatabase.{h,cpp} have been broken into:
storage/mime/database_support.{h,cpp}
+ MIME database constants
+ high-level database access functions like open_type(),
read_mime_attr(), etc.
storage/mime/database_access.{h,cpp}
+ atomic read functions
+ is_installed()
+ get_icon_data()
storage/mime/Database.{h,cpp}
+ Mime::Database class, which is responsible for all write,
non-atomic read, and mime monitor functionality.
storage/mime/InstalledTypes.{h,cpp}
+ Helper class for Mime::Database::GetInstalled[Super]Types()
storage/mime/Supertype.{h,cpp}
+ Helper class for Mime::InstalledTypes
I haven't merged my intial, somewhat cludgy GetInstalled[Super]Types
implementation into the new setup yet. That comes next, and it ought
to be a more graceful implementation now.
I also implemented BMimeType::Get/SetSupportingTypes(), though
they haven't been tested yet (sorry).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@862 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
// mime/database_support.h
|
||||
|
||||
#ifndef _MIME_DATABASE_SUPPORT_H
|
||||
#define _MIME_DATABASE_SUPPORT_H
|
||||
|
||||
#include <StorageDefs.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
class BNode;
|
||||
class BMessage;
|
||||
|
||||
namespace BPrivate {
|
||||
namespace Storage {
|
||||
namespace Mime {
|
||||
|
||||
// Database directory
|
||||
extern const std::string kDatabaseDir;
|
||||
|
||||
// Attribute Prefixes
|
||||
extern const char *kMiniIconAttrPrefix;
|
||||
extern const char *kLargeIconAttrPrefix;
|
||||
|
||||
// Attribute names
|
||||
extern const char *kFileTypeAttr;
|
||||
extern const char *kTypeAttr;
|
||||
extern const char *kAttrInfoAttr;
|
||||
extern const char *kAppHintAttr;
|
||||
extern const char *kShortDescriptionAttr;
|
||||
extern const char *kLongDescriptionAttr;
|
||||
extern const char *kFileExtensionsAttr;
|
||||
extern const char *kMiniIconAttr;
|
||||
extern const char *kLargeIconAttr;
|
||||
extern const char *kPreferredAppAttr;
|
||||
extern const char *kSnifferRuleAttr;
|
||||
extern const char *kSupportedTypesAttr;
|
||||
|
||||
// Attribute Datatypes
|
||||
extern const int32 kFileTypeType;
|
||||
extern const int32 kTypeType;
|
||||
extern const int32 kAppHintType;
|
||||
extern const int32 kAttrInfoType;
|
||||
extern const int32 kShortDescriptionType;
|
||||
extern const int32 kLongDescriptionType;
|
||||
extern const int32 kFileExtensionsType;
|
||||
extern const int32 kMiniIconType;
|
||||
extern const int32 kLargeIconType;
|
||||
extern const int32 kPreferredAppType;
|
||||
extern const int32 kSnifferRuleType;
|
||||
extern const int32 kSupportedTypesType;
|
||||
|
||||
std::string type_to_filename(const char *type);
|
||||
|
||||
status_t open_type(const char *type, BNode *result);
|
||||
status_t open_or_create_type(const char *type, BNode *result, bool *didCreate);
|
||||
|
||||
ssize_t read_mime_attr(const char *type, const char *attr, void *data,
|
||||
size_t len, type_code datatype);
|
||||
status_t read_mime_attr_message(const char *type, const char *attr, BMessage *msg);
|
||||
status_t write_mime_attr(const char *type, const char *attr, const void *data,
|
||||
size_t len, type_code datatype, bool *didCreate);
|
||||
status_t write_mime_attr_message(const char *type, const char *attr,
|
||||
const BMessage *msg, bool *didCreate);
|
||||
|
||||
status_t delete_attribute(const char *type, const char *attr);
|
||||
|
||||
} // namespace Mime
|
||||
} // namespace Storage
|
||||
} // namespace BPrivate
|
||||
|
||||
#endif // _MIME_DATABASE_SUPPORT_H
|
||||
Reference in New Issue
Block a user