gnome-scan r744 - in trunk: . modules/gsane



Author: bersace
Date: Thu Dec 25 13:34:57 2008
New Revision: 744
URL: http://svn.gnome.org/viewvc/gnome-scan?rev=744&view=rev

Log:
Match different names for one option.

Modified:
   trunk/ChangeLog
   trunk/modules/gsane/gsane-option-handler.h
   trunk/modules/gsane/gsane-option-source.c

Modified: trunk/modules/gsane/gsane-option-handler.h
==============================================================================
--- trunk/modules/gsane/gsane-option-handler.h	(original)
+++ trunk/modules/gsane/gsane-option-handler.h	Thu Dec 25 13:34:57 2008
@@ -74,17 +74,22 @@
 
 /* Define class struct field to handle a named SANE option. */
 #define	GSANE_OPTION_HANDLER_CLASS_DEFINE_HANDLER(name)			\
-	GSaneOptionHandlerFunc handle_##name;
+	GSaneOptionHandlerFunc handle_##name;				\
+	gchar** name##_names;
 
 /* 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;
+#define GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, oname, onames)		\
+	klass->handle_##oname = gsane_option_handler_handle_##oname;	\
+	klass->oname##_names = g_strsplit(onames, ",", 8);
 
 /* 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)) { \
+#define GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, oname, desc, n, group)		\
+	if (gsane_string_in_array(desc->name,				\
+				  (const gchar**)klass->oname##_names)) { \
 		self->priv->oname##_desc = desc;			\
 		self->priv->oname##_index = n;				\
 		klass->handle_##oname(GSANE_OPTION_HANDLER(self), desc, n, group); \

Modified: trunk/modules/gsane/gsane-option-source.c
==============================================================================
--- trunk/modules/gsane/gsane-option-source.c	(original)
+++ trunk/modules/gsane/gsane-option-source.c	Thu Dec 25 13:34:57 2008
@@ -145,7 +145,7 @@
 	GSaneOptionSource *self = GSANE_OPTION_SOURCE(handler);
 	GSaneOptionSourceClass *klass = GSANE_OPTION_SOURCE_GET_CLASS(self);
 
- 	GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, source, desc, n, group);
+	GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, source, desc, n, group);
 }
 
 void
@@ -157,12 +157,13 @@
 
 	oh_class->unique = TRUE;
 	oh_class->handle_option = gsane_option_source_handle_option;
-	GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, source);
+	GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, source, "source,doc-source");
 }
 
 void
 gsane_option_source_class_finalize(GSaneOptionSourceClass *klass)
 {
+	g_free(klass->source_names);
 }
 
 void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]