diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2012-12-08 01:32:32 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2012-12-08 03:01:05 +0800 |
commit | cab6eac8f14974ea1c2fedaf9143e98cf630c489 (patch) | |
tree | 38cd8e6e510b6c461f7537c64aea88a11c385f4f /em-format/e-mail-parser-extension.h | |
parent | 3ae26f0ab68776e230a2be58939e5bf69c8fa2d5 (diff) | |
download | gsoc2013-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.h | 46 |
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 |