gnome-scan r732 - in trunk: . modules/gsane
- From: bersace svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-scan r732 - in trunk: . modules/gsane
- Date: Sun, 21 Dec 2008 18:45:12 +0000 (UTC)
Author: bersace
Date: Sun Dec 21 18:45:12 2008
New Revision: 732
URL: http://svn.gnome.org/viewvc/gnome-scan?rev=732&view=rev
Log:
Added macro for named option handler.
Modified:
trunk/ChangeLog
trunk/modules/gsane/gsane-option-handler.h
Modified: trunk/modules/gsane/gsane-option-handler.h
==============================================================================
--- trunk/modules/gsane/gsane-option-handler.h (original)
+++ trunk/modules/gsane/gsane-option-handler.h Sun Dec 21 18:45:12 2008
@@ -38,14 +38,16 @@
typedef struct _GSaneOptionHandler GSaneOptionHandler;
typedef struct _GSaneOptionHandlerPrivate GSaneOptionHandlerPrivate;
+typedef void (*GSaneOptionHandlerFunc) (GSaneOptionHandler*self, const SANE_Option_Descriptor*desc, SANE_Int n, const gchar* group);
+
struct _GSaneOptionHandlerClass
{
- GTypeClass parent_class;
- void (*handle_option) (GSaneOptionHandler*self, const SANE_Option_Descriptor*desc, SANE_Int n, const gchar* group);
- void (*reload_options) (GSaneOptionHandler*self);
+ GTypeClass parent_class;
+ GSaneOptionHandlerFunc handle_option;
+ void (*reload_options) (GSaneOptionHandler*self);
/* Whether the scanner must have a unique instance of the
option handler */
- gboolean unique;
+ gboolean unique;
};
struct _GSaneOptionHandler
@@ -57,11 +59,38 @@
GSaneOptionHandlerPrivate* priv;
};
-/* option utils */
+/* OPTION UTILS */
GnomeScanOptionHint gsane_option_hint(const SANE_Option_Descriptor*desc);
GnomeScanUnit gsane_option_unit(const SANE_Option_Descriptor* desc);
-/* option handler methods */
+
+/* FACILITY FOR NAMED OPTION HANDLING */
+
+/* Define private structs fields to handle a named SANE option */
+#define GSANE_OPTION_HANDLER_DEFINE_OPTION(name) \
+ const SANE_Option_Descriptor* name##_desc; \
+ SANE_Int name##_index;
+
+/* Define class struct field to handle a named SANE option. */
+#define GSANE_OPTION_HANDLER_CLASS_DEFINE_HANDLER(name) \
+ GSaneOptionHandlerFunc handle_##name;
+
+/* Install a named SANE option handler in the class. Requires
+ gsane_option_handler_handler_<oname> to be declared. See
+ GSANE_OPTION_HANDLER_DEFINE_OPTION and
+ GSANE_OPTION_HANDLER_CLASS_DEFINE_HANDLER. */
+#define GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, oname) klass->handle_##oname = gsane_option_handler_handle_##oname;
+
+/* If SANE option desc match oname, desc and n are saved in self->priv
+ and named option handler is called. */
+#define GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, oname, desc, n, group) if (g_str_equal(#oname, desc->name)) { \
+ self->priv->oname##_desc = desc; \
+ self->priv->oname##_index = n; \
+ klass->handle_##oname(GSANE_OPTION_HANDLER(self), desc, n, group); \
+ }
+
+
+/* OPTION HANDLER METHODS */
GSaneOptionHandler* gsane_option_handler_new(GType type, GnomeScanScanner *scanner, SANE_Handle handle);
void gsane_option_handler_destroy(GSaneOptionHandler *self);
void gsane_option_handler_handle_option(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int n, const gchar*group);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]