Remove redundant tables of state and role names
authorMike Gorse <mgorse@novell.com>
Wed, 25 May 2011 19:36:52 +0000 (14:36 -0500)
committerMike Gorse <mgorse@novell.com>
Wed, 25 May 2011 19:36:52 +0000 (14:36 -0500)
Use the generated enum type to convert state names to numeric values rather
than a string table that needs to be maintained in parallel.  Also, remove
atspi_role_get_name since it was unused, marked deprecated, and relied on a
string table which is now redundant with the enum type.

atspi/atspi-accessible.c
atspi/atspi-accessible.h
atspi/atspi-stateset.c

index f8f72c0..bcd37de 100644 (file)
@@ -176,123 +176,6 @@ atspi_accessible_class_init (AtspiAccessibleClass *klass)
   object_class->finalize = atspi_accessible_finalize;
 }
 
-/* TODO: Generate following from spec? */
-static const char *role_names [] =
-{
-  "invalid",
-  "accel-label",
-  "alert",
-  "animation",
-  "arrow",
-  "calendar",
-  "canvas",
-  "check-box",
-  "check-menu-item",
-  "color-chooser",
-  "column-header",
-  "combo-box",
-  "date-editor",
-  "desktop-icon",
-  "desktop-frame",
-  "dial",
-  "dialog",
-  "directory-pane",
-  "drawing-area",
-  "file-chooser",
-  "filler",
-  "font-chooser",
-  "frame",
-  "glass-pane",
-  "html-container",
-  "icon",
-  "image",
-  "internalframe",
-  "label",
-  "layered-pane",
-  "list",
-  "list-item",
-  "menu",
-  "menu-bar",
-  "menu-item",
-  "option-pane",
-  "page-tab",
-  "page-tab-list",
-  "panel",
-  "password-text",
-  "popup-menu",
-  "progress-bar",
-  "push-button",
-  "radio-button",
-  "radio-menu-item",
-  "root-pane",
-  "row-header",
-  "scroll-bar",
-  "scroll-pane",
-  "separator",
-  "slider",
-  "spin-button",
-  "split-pane",
-  "statusbar",
-  "table",
-  "table-cell",
-  "table-column-header",
-  "table-row-header",
-  "tear-off-menu-item",
-  "terminal",
-  "text",
-  "toggle-button",
-  "tool-bar",
-  "tool-tip",
-  "tree",
-  "tree-table",
-  "unknown",
-  "viewport",
-  "window",
-  NULL,
-  "header",
-  "fooler",
-  "paragraph",
-  "ruler",
-  "application",
-  "autocomplete",
-  "editbar",
-  "embedded",
-  "entry",
-  "chart",
-  "caption",
-  "document_frame",
-  "heading",
-  "page",
-  "section",
-  "form",
-  "redundant object",
-  "link",
-  "input method window"
-};
-
-#define MAX_ROLES (sizeof (role_names) / sizeof (char *))
-
-/**
- * atspi_role_get_name
- * @role: an #AtspiAccessibleRole object to query.
- *
- * Get a localizeable string that indicates the name of an #AtspiAccessibleRole.
- * <em>DEPRECATED.</em>
- *
- * Returns: a localizable string name for an #AtspiAccessibleRole enumerated type.
- **/
-gchar *
-atspi_role_get_name (AtspiRole role)
-{
-  if (role < MAX_ROLES && role_names [(int) role])
-    {
-      return g_strdup (role_names [(int) role]);
-    }
-  else
-    {
-      return g_strdup ("");
-    }
-}
 
 /**
  * atspi_accessible_get_name:
index ffa7f40..d9e6e55 100644 (file)
@@ -65,8 +65,6 @@ GType atspi_accessible_get_type (void);
 AtspiAccessible *
 atspi_accessible_new (AtspiApplication *app, const gchar *path);
 
-gchar * atspi_role_get_name (AtspiRole role);
-
 gchar * atspi_accessible_get_name (AtspiAccessible *obj, GError **error);
 
 gchar * atspi_accessible_get_description (AtspiAccessible *obj, GError **error);
index a5bcc51..28e272f 100644 (file)
@@ -28,52 +28,6 @@ static void atspi_state_set_class_init (AtspiStateSetClass *klass);
 
 G_DEFINE_TYPE (AtspiStateSet, atspi_state_set, G_TYPE_OBJECT)
 
-static const char *state_names [] =
-{
-  "invalid",
-  "active",
-  "armed",
-  "busy",
-  "checked",
-  "collapsed",
-  "defunct",
-  "editable",
-  "enabled",
-  "expandable",
-  "expanded",
-  "focusable",
-  "focused",
-  "has-tool-tip",
-  "horizontal",
-  "iconified",
-  "modal",
-  "multi-line",
-  "multiselectable",
-  "opaque",
-  "pressed",
-  "resizable",
-  "selectable",
-  "selected",
-  "sensitive",
-  "showing",
-  "singleLine",
-  "stale",
-  "transient",
-  "vertical",
-  "visible",
-  "manages-descendants",
-  "indeterminate",
-  "required",
-  "truncated",
-  "animated",
-  "invalid-entry",
-  "supports-autocompletion",
-  "selectable-text",
-  "is-default",
-  "visited",
-  NULL
-};
-
 static void
 atspi_state_set_init (AtspiStateSet *set)
 {
@@ -123,25 +77,25 @@ _atspi_state_set_new_internal (AtspiAccessible *accessible, gint64 states)
 void
 atspi_state_set_set_by_name (AtspiStateSet *set, const gchar *name, gboolean enabled)
 {
-  gint i = 0;
+  GTypeClass *type_class;
+  GEnumValue *value;
+
+  type_class = g_type_class_ref (ATSPI_TYPE_STATE_TYPE);
 
   if (set->accessible &&
       !(set->accessible->cached_properties & ATSPI_CACHE_STATES))
     return;
 
-  /* TODO: This could perhaps be optimized */
-  for (i = 0; state_names [i]; i++)
+  value = g_enum_get_value_by_nick (G_ENUM_CLASS (type_class), name);
+  if (!value)
   {
-    if (!strcmp (state_names [i], name))
-    {
-      if (enabled)
-        set->states |= ((gint64)1 << i);
-      else
-        set->states &= ~((gint64)1 << i);
-      return;
-    }
+    g_warning ("AT-SPI: Attempt to set unknown state '%s'", name);
   }
-  g_warning ("at-spi: Attempt to set unknown state '%s'", name);
+
+  if (enabled)
+    set->states |= ((gint64)1 << value->value);
+  else
+    set->states &= ~((gint64)1 << value->value);
 }
 
 static void