aboutsummaryrefslogtreecommitdiffstats
path: root/em-format/e-mail-parser-extension.h
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-12-08 01:32:32 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-12-08 03:01:05 +0800
commitcab6eac8f14974ea1c2fedaf9143e98cf630c489 (patch)
tree38cd8e6e510b6c461f7537c64aea88a11c385f4f /em-format/e-mail-parser-extension.h
parent3ae26f0ab68776e230a2be58939e5bf69c8fa2d5 (diff)
downloadgsoc2013-evolution-cab6eac8f14974ea1c2fedaf9143e98cf630c489.tar
gsoc2013-evolution-cab6eac8f14974ea1c2fedaf9143e98cf630c489.tar.gz
gsoc2013-evolution-cab6eac8f14974ea1c2fedaf9143e98cf630c489.tar.bz2
gsoc2013-evolution-cab6eac8f14974ea1c2fedaf9143e98cf630c489.tar.lz
gsoc2013-evolution-cab6eac8f14974ea1c2fedaf9143e98cf630c489.tar.xz
gsoc2013-evolution-cab6eac8f14974ea1c2fedaf9143e98cf630c489.tar.zst
gsoc2013-evolution-cab6eac8f14974ea1c2fedaf9143e98cf630c489.zip
Convert EMailParserExtension to an abstract class.
With the previous changes, all parser extensions derive from GObjectClass and implement the EMailParserExtensionInterface. Simplify things further by making EMailParserExtension an abstract base class so parser extensions are now just direct subclasses and need not bother with implementing GObject interfaces.
Diffstat (limited to 'em-format/e-mail-parser-extension.h')
-rw-r--r--em-format/e-mail-parser-extension.h46
1 files changed, 28 insertions, 18 deletions
diff --git a/em-format/e-mail-parser-extension.h b/em-format/e-mail-parser-extension.h
index 06128cf68c..e510a15591 100644
--- a/em-format/e-mail-parser-extension.h
+++ b/em-format/e-mail-parser-extension.h
@@ -28,18 +28,18 @@
#define E_MAIL_PARSER_EXTENSION(obj) \
(G_TYPE_CHECK_INSTANCE_CAST \
((obj), E_TYPE_MAIL_PARSER_EXTENSION, EMailParserExtension))
-#define E_MAIL_PARSER_EXTENSION_INTERFACE(cls) \
+#define E_MAIL_PARSER_EXTENSION_CLASS(cls) \
(G_TYPE_CHECK_CLASS_CAST \
- ((cls), E_TYPE_MAIL_PARSER_EXTENSION, EMailParserExtensionInterface))
+ ((cls), E_TYPE_MAIL_PARSER_EXTENSION, EMailParserExtensionClass))
#define E_IS_MAIL_PARSER_EXTENSION(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE \
((obj), E_TYPE_MAIL_PARSER_EXTENSION))
-#define E_IS_MAIL_PARSER_EXTENSION_INTERFACE(cls) \
+#define E_IS_MAIL_PARSER_EXTENSION_CLASS(cls) \
(G_TYPE_CHECK_CLASS_TYPE \
((cls), E_TYPE_MAIL_PARSER_EXTENSION))
-#define E_MAIL_PARSER_EXTENSION_GET_INTERFACE(obj) \
- (G_TYPE_INSTANCE_GET_INTERFACE \
- ((obj), E_TYPE_MAIL_PARSER_EXTENSION, EMailParserExtensionInterface))
+#define E_MAIL_PARSER_EXTENSION_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_MAIL_PARSER_EXTENSION, EMailParserExtensionClass))
#define EMP_EXTENSION_GET_PARSER(e) \
E_MAIL_PARSER (e_extension_get_extensible (E_EXTENSION (e)))
@@ -47,7 +47,8 @@
G_BEGIN_DECLS
typedef struct _EMailParserExtension EMailParserExtension;
-typedef struct _EMailParserExtensionInterface EMailParserExtensionInterface;
+typedef struct _EMailParserExtensionClass EMailParserExtensionClass;
+typedef struct _EMailParserExtensionPrivate EMailParserExtensionPrivate;
/**
* EMailParserExtensionFlags:
@@ -64,23 +65,32 @@ typedef enum {
E_MAIL_PARSER_EXTENSION_COMPOUND_TYPE = 1 << 2
} EMailParserExtensionFlags;
-struct _EMailParserExtensionInterface {
- GTypeInterface parent_interface;
+/**
+ * EMailParserExtension:
+ *
+ * The #EMailParserExtension is an abstract interface for all extensions for
+ * #EMailParser.
+ */
+struct _EMailParserExtension {
+ GObject parent;
+ EMailParserExtensionPrivate *priv;
+};
+
+struct _EMailParserExtensionClass {
+ GObjectClass parent_class;
/* This is a NULL-terminated array of supported MIME types.
* The MIME types can be exact (e.g. "text/plain") or use a
* wildcard (e.g. "text/ *"). */
const gchar **mime_types;
- gboolean (*parse) (EMailParserExtension *extension,
- EMailParser *parser,
- CamelMimePart *mime_part,
- GString *part_id,
- GCancellable *cancellable,
- GQueue *out_mail_parts);
-
- guint32 (*get_flags) (EMailParserExtension *extension);
-
+ gboolean (*parse) (EMailParserExtension *extension,
+ EMailParser *parser,
+ CamelMimePart *mime_part,
+ GString *part_id,
+ GCancellable *cancellable,
+ GQueue *out_mail_parts);
+ guint32 (*get_flags) (EMailParserExtension *extension);
};
GType e_mail_parser_extension_get_type