vcl : use frozen unordered_map to avoid allocations
Change-Id: I6b0ecd18fe3aa79211c5f1f28a2b87eece98d0e9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179581 Tested-by: Arnaud Versini <arnaud.versini@pm.me> Reviewed-by: Arnaud Versini <arnaud.versini@pm.me> Tested-by: Jenkins
This commit is contained in:
committed by
Arnaud Versini
parent
a838bac7b7
commit
c38e3562e3
@@ -304,7 +304,7 @@ namespace BuilderUtils
|
||||
void reorderWithinParent(vcl::Window &rWindow, sal_uInt16 nNewPosition);
|
||||
|
||||
//Convert an accessibility role name to accessibility role number
|
||||
sal_Int16 getRoleFromName(const OUString& roleName);
|
||||
sal_Int16 getRoleFromName(std::u16string_view roleName);
|
||||
}
|
||||
|
||||
//sID may not exist, but must be of type T if it does
|
||||
|
||||
+128
-126
@@ -13,9 +13,11 @@
|
||||
|
||||
#include <memory>
|
||||
#include <string_view>
|
||||
#include <unordered_map>
|
||||
#include <com/sun/star/accessibility/AccessibleRole.hpp>
|
||||
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
#include <comphelper/lok.hxx>
|
||||
#include <i18nutil/unicode.hxx>
|
||||
#include <jsdialog/enabled.hxx>
|
||||
@@ -2127,135 +2129,135 @@ namespace BuilderUtils
|
||||
}
|
||||
}
|
||||
|
||||
sal_Int16 getRoleFromName(const OUString& roleName)
|
||||
sal_Int16 getRoleFromName(std::u16string_view roleName)
|
||||
{
|
||||
using namespace com::sun::star::accessibility;
|
||||
|
||||
static const std::unordered_map<OUString, sal_Int16> aAtkRoleToAccessibleRole = {
|
||||
static constexpr frozen::unordered_map<std::u16string_view, sal_Int16, 123> aAtkRoleToAccessibleRole = {
|
||||
/* This is in atkobject.h's AtkRole order */
|
||||
{ "invalid", AccessibleRole::UNKNOWN },
|
||||
{ "accelerator label", AccessibleRole::UNKNOWN },
|
||||
{ "alert", AccessibleRole::ALERT },
|
||||
{ "animation", AccessibleRole::UNKNOWN },
|
||||
{ "arrow", AccessibleRole::UNKNOWN },
|
||||
{ "calendar", AccessibleRole::UNKNOWN },
|
||||
{ "canvas", AccessibleRole::CANVAS },
|
||||
{ "check box", AccessibleRole::CHECK_BOX },
|
||||
{ "check menu item", AccessibleRole::CHECK_MENU_ITEM },
|
||||
{ "color chooser", AccessibleRole::COLOR_CHOOSER },
|
||||
{ "column header", AccessibleRole::COLUMN_HEADER },
|
||||
{ "combo box", AccessibleRole::COMBO_BOX },
|
||||
{ "date editor", AccessibleRole::DATE_EDITOR },
|
||||
{ "desktop icon", AccessibleRole::DESKTOP_ICON },
|
||||
{ "desktop frame", AccessibleRole::DESKTOP_PANE }, // ?
|
||||
{ "dial", AccessibleRole::UNKNOWN },
|
||||
{ "dialog", AccessibleRole::DIALOG },
|
||||
{ "directory pane", AccessibleRole::DIRECTORY_PANE },
|
||||
{ "drawing area", AccessibleRole::UNKNOWN },
|
||||
{ "file chooser", AccessibleRole::FILE_CHOOSER },
|
||||
{ "filler", AccessibleRole::FILLER },
|
||||
{ "font chooser", AccessibleRole::FONT_CHOOSER },
|
||||
{ "frame", AccessibleRole::FRAME },
|
||||
{ "glass pane", AccessibleRole::GLASS_PANE },
|
||||
{ "html container", AccessibleRole::UNKNOWN },
|
||||
{ "icon", AccessibleRole::ICON },
|
||||
{ "image", AccessibleRole::GRAPHIC },
|
||||
{ "internal frame", AccessibleRole::INTERNAL_FRAME },
|
||||
{ "label", AccessibleRole::LABEL },
|
||||
{ "layered pane", AccessibleRole::LAYERED_PANE },
|
||||
{ "list", AccessibleRole::LIST },
|
||||
{ "list item", AccessibleRole::LIST_ITEM },
|
||||
{ "menu", AccessibleRole::MENU },
|
||||
{ "menu bar", AccessibleRole::MENU_BAR },
|
||||
{ "menu item", AccessibleRole::MENU_ITEM },
|
||||
{ "option pane", AccessibleRole::OPTION_PANE },
|
||||
{ "page tab", AccessibleRole::PAGE_TAB },
|
||||
{ "page tab list", AccessibleRole::PAGE_TAB_LIST },
|
||||
{ "panel", AccessibleRole::PANEL }, // or SHAPE or TEXT_FRAME ?
|
||||
{ "password text", AccessibleRole::PASSWORD_TEXT },
|
||||
{ "popup menu", AccessibleRole::POPUP_MENU },
|
||||
{ "progress bar", AccessibleRole::PROGRESS_BAR },
|
||||
{ "push button", AccessibleRole::PUSH_BUTTON }, // or BUTTON_DROPDOWN or BUTTON_MENU
|
||||
{ "radio button", AccessibleRole::RADIO_BUTTON },
|
||||
{ "radio menu item", AccessibleRole::RADIO_MENU_ITEM },
|
||||
{ "root pane", AccessibleRole::ROOT_PANE },
|
||||
{ "row header", AccessibleRole::ROW_HEADER },
|
||||
{ "scroll bar", AccessibleRole::SCROLL_BAR },
|
||||
{ "scroll pane", AccessibleRole::SCROLL_PANE },
|
||||
{ "separator", AccessibleRole::SEPARATOR },
|
||||
{ "slider", AccessibleRole::SLIDER },
|
||||
{ "split pane", AccessibleRole::SPLIT_PANE },
|
||||
{ "spin button", AccessibleRole::SPIN_BOX }, // ?
|
||||
{ "statusbar", AccessibleRole::STATUS_BAR },
|
||||
{ "table", AccessibleRole::TABLE },
|
||||
{ "table cell", AccessibleRole::TABLE_CELL },
|
||||
{ "table column header", AccessibleRole::COLUMN_HEADER }, // approximate
|
||||
{ "table row header", AccessibleRole::ROW_HEADER }, // approximate
|
||||
{ "tear off menu item", AccessibleRole::UNKNOWN },
|
||||
{ "terminal", AccessibleRole::UNKNOWN },
|
||||
{ "text", AccessibleRole::TEXT },
|
||||
{ "toggle button", AccessibleRole::TOGGLE_BUTTON },
|
||||
{ "tool bar", AccessibleRole::TOOL_BAR },
|
||||
{ "tool tip", AccessibleRole::TOOL_TIP },
|
||||
{ "tree", AccessibleRole::TREE },
|
||||
{ "tree table", AccessibleRole::TREE_TABLE },
|
||||
{ "unknown", AccessibleRole::UNKNOWN },
|
||||
{ "viewport", AccessibleRole::VIEW_PORT },
|
||||
{ "window", AccessibleRole::WINDOW },
|
||||
{ "header", AccessibleRole::HEADER },
|
||||
{ "footer", AccessibleRole::FOOTER },
|
||||
{ "paragraph", AccessibleRole::PARAGRAPH },
|
||||
{ "ruler", AccessibleRole::RULER },
|
||||
{ "application", AccessibleRole::UNKNOWN },
|
||||
{ "autocomplete", AccessibleRole::UNKNOWN },
|
||||
{ "edit bar", AccessibleRole::EDIT_BAR },
|
||||
{ "embedded", AccessibleRole::EMBEDDED_OBJECT },
|
||||
{ "entry", AccessibleRole::UNKNOWN },
|
||||
{ "chart", AccessibleRole::CHART },
|
||||
{ "caption", AccessibleRole::CAPTION },
|
||||
{ "document frame", AccessibleRole::DOCUMENT },
|
||||
{ "heading", AccessibleRole::HEADING },
|
||||
{ "page", AccessibleRole::PAGE },
|
||||
{ "section", AccessibleRole::SECTION },
|
||||
{ "redundant object", AccessibleRole::UNKNOWN },
|
||||
{ "form", AccessibleRole::FORM },
|
||||
{ "link", AccessibleRole::HYPER_LINK },
|
||||
{ "input method window", AccessibleRole::UNKNOWN },
|
||||
{ "table row", AccessibleRole::UNKNOWN },
|
||||
{ "tree item", AccessibleRole::TREE_ITEM },
|
||||
{ "document spreadsheet", AccessibleRole::DOCUMENT_SPREADSHEET },
|
||||
{ "document presentation", AccessibleRole::DOCUMENT_PRESENTATION },
|
||||
{ "document text", AccessibleRole::DOCUMENT_TEXT },
|
||||
{ "document web", AccessibleRole::DOCUMENT }, // approximate
|
||||
{ "document email", AccessibleRole::DOCUMENT }, // approximate
|
||||
{ "comment", AccessibleRole::COMMENT }, // or NOTE or END_NOTE or FOOTNOTE or SCROLL_PANE
|
||||
{ "list box", AccessibleRole::UNKNOWN },
|
||||
{ "grouping", AccessibleRole::GROUP_BOX },
|
||||
{ "image map", AccessibleRole::IMAGE_MAP },
|
||||
{ "notification", AccessibleRole::NOTIFICATION },
|
||||
{ "info bar", AccessibleRole::UNKNOWN },
|
||||
{ "level bar", AccessibleRole::UNKNOWN },
|
||||
{ "title bar", AccessibleRole::UNKNOWN },
|
||||
{ "block quote", AccessibleRole::BLOCK_QUOTE },
|
||||
{ "audio", AccessibleRole::UNKNOWN },
|
||||
{ "video", AccessibleRole::UNKNOWN },
|
||||
{ "definition", AccessibleRole::UNKNOWN },
|
||||
{ "article", AccessibleRole::UNKNOWN },
|
||||
{ "landmark", AccessibleRole::UNKNOWN },
|
||||
{ "log", AccessibleRole::UNKNOWN },
|
||||
{ "marquee", AccessibleRole::UNKNOWN },
|
||||
{ "math", AccessibleRole::UNKNOWN },
|
||||
{ "rating", AccessibleRole::UNKNOWN },
|
||||
{ "timer", AccessibleRole::UNKNOWN },
|
||||
{ "description list", AccessibleRole::UNKNOWN },
|
||||
{ "description term", AccessibleRole::UNKNOWN },
|
||||
{ "description value", AccessibleRole::UNKNOWN },
|
||||
{ "static", AccessibleRole::STATIC },
|
||||
{ "math fraction", AccessibleRole::UNKNOWN },
|
||||
{ "math root", AccessibleRole::UNKNOWN },
|
||||
{ "subscript", AccessibleRole::UNKNOWN },
|
||||
{ "superscript", AccessibleRole::UNKNOWN },
|
||||
{ "footnote", AccessibleRole::FOOTNOTE },
|
||||
{ u"invalid", AccessibleRole::UNKNOWN },
|
||||
{ u"accelerator label", AccessibleRole::UNKNOWN },
|
||||
{ u"alert", AccessibleRole::ALERT },
|
||||
{ u"animation", AccessibleRole::UNKNOWN },
|
||||
{ u"arrow", AccessibleRole::UNKNOWN },
|
||||
{ u"calendar", AccessibleRole::UNKNOWN },
|
||||
{ u"canvas", AccessibleRole::CANVAS },
|
||||
{ u"check box", AccessibleRole::CHECK_BOX },
|
||||
{ u"check menu item", AccessibleRole::CHECK_MENU_ITEM },
|
||||
{ u"color chooser", AccessibleRole::COLOR_CHOOSER },
|
||||
{ u"column header", AccessibleRole::COLUMN_HEADER },
|
||||
{ u"combo box", AccessibleRole::COMBO_BOX },
|
||||
{ u"date editor", AccessibleRole::DATE_EDITOR },
|
||||
{ u"desktop icon", AccessibleRole::DESKTOP_ICON },
|
||||
{ u"desktop frame", AccessibleRole::DESKTOP_PANE }, // ?
|
||||
{ u"dial", AccessibleRole::UNKNOWN },
|
||||
{ u"dialog", AccessibleRole::DIALOG },
|
||||
{ u"directory pane", AccessibleRole::DIRECTORY_PANE },
|
||||
{ u"drawing area", AccessibleRole::UNKNOWN },
|
||||
{ u"file chooser", AccessibleRole::FILE_CHOOSER },
|
||||
{ u"filler", AccessibleRole::FILLER },
|
||||
{ u"font chooser", AccessibleRole::FONT_CHOOSER },
|
||||
{ u"frame", AccessibleRole::FRAME },
|
||||
{ u"glass pane", AccessibleRole::GLASS_PANE },
|
||||
{ u"html container", AccessibleRole::UNKNOWN },
|
||||
{ u"icon", AccessibleRole::ICON },
|
||||
{ u"image", AccessibleRole::GRAPHIC },
|
||||
{ u"internal frame", AccessibleRole::INTERNAL_FRAME },
|
||||
{ u"label", AccessibleRole::LABEL },
|
||||
{ u"layered pane", AccessibleRole::LAYERED_PANE },
|
||||
{ u"list", AccessibleRole::LIST },
|
||||
{ u"list item", AccessibleRole::LIST_ITEM },
|
||||
{ u"menu", AccessibleRole::MENU },
|
||||
{ u"menu bar", AccessibleRole::MENU_BAR },
|
||||
{ u"menu item", AccessibleRole::MENU_ITEM },
|
||||
{ u"option pane", AccessibleRole::OPTION_PANE },
|
||||
{ u"page tab", AccessibleRole::PAGE_TAB },
|
||||
{ u"page tab list", AccessibleRole::PAGE_TAB_LIST },
|
||||
{ u"panel", AccessibleRole::PANEL }, // or SHAPE or TEXT_FRAME ?
|
||||
{ u"password text", AccessibleRole::PASSWORD_TEXT },
|
||||
{ u"popup menu", AccessibleRole::POPUP_MENU },
|
||||
{ u"progress bar", AccessibleRole::PROGRESS_BAR },
|
||||
{ u"push button", AccessibleRole::PUSH_BUTTON }, // or BUTTON_DROPDOWN or BUTTON_MENU
|
||||
{ u"radio button", AccessibleRole::RADIO_BUTTON },
|
||||
{ u"radio menu item", AccessibleRole::RADIO_MENU_ITEM },
|
||||
{ u"root pane", AccessibleRole::ROOT_PANE },
|
||||
{ u"row header", AccessibleRole::ROW_HEADER },
|
||||
{ u"scroll bar", AccessibleRole::SCROLL_BAR },
|
||||
{ u"scroll pane", AccessibleRole::SCROLL_PANE },
|
||||
{ u"separator", AccessibleRole::SEPARATOR },
|
||||
{ u"slider", AccessibleRole::SLIDER },
|
||||
{ u"split pane", AccessibleRole::SPLIT_PANE },
|
||||
{ u"spin button", AccessibleRole::SPIN_BOX }, // ?
|
||||
{ u"statusbar", AccessibleRole::STATUS_BAR },
|
||||
{ u"table", AccessibleRole::TABLE },
|
||||
{ u"table cell", AccessibleRole::TABLE_CELL },
|
||||
{ u"table column header", AccessibleRole::COLUMN_HEADER }, // approximate
|
||||
{ u"table row header", AccessibleRole::ROW_HEADER }, // approximate
|
||||
{ u"tear off menu item", AccessibleRole::UNKNOWN },
|
||||
{ u"terminal", AccessibleRole::UNKNOWN },
|
||||
{ u"text", AccessibleRole::TEXT },
|
||||
{ u"toggle button", AccessibleRole::TOGGLE_BUTTON },
|
||||
{ u"tool bar", AccessibleRole::TOOL_BAR },
|
||||
{ u"tool tip", AccessibleRole::TOOL_TIP },
|
||||
{ u"tree", AccessibleRole::TREE },
|
||||
{ u"tree table", AccessibleRole::TREE_TABLE },
|
||||
{ u"unknown", AccessibleRole::UNKNOWN },
|
||||
{ u"viewport", AccessibleRole::VIEW_PORT },
|
||||
{ u"window", AccessibleRole::WINDOW },
|
||||
{ u"header", AccessibleRole::HEADER },
|
||||
{ u"footer", AccessibleRole::FOOTER },
|
||||
{ u"paragraph", AccessibleRole::PARAGRAPH },
|
||||
{ u"ruler", AccessibleRole::RULER },
|
||||
{ u"application", AccessibleRole::UNKNOWN },
|
||||
{ u"autocomplete", AccessibleRole::UNKNOWN },
|
||||
{ u"edit bar", AccessibleRole::EDIT_BAR },
|
||||
{ u"embedded", AccessibleRole::EMBEDDED_OBJECT },
|
||||
{ u"entry", AccessibleRole::UNKNOWN },
|
||||
{ u"chart", AccessibleRole::CHART },
|
||||
{ u"caption", AccessibleRole::CAPTION },
|
||||
{ u"document frame", AccessibleRole::DOCUMENT },
|
||||
{ u"heading", AccessibleRole::HEADING },
|
||||
{ u"page", AccessibleRole::PAGE },
|
||||
{ u"section", AccessibleRole::SECTION },
|
||||
{ u"redundant object", AccessibleRole::UNKNOWN },
|
||||
{ u"form", AccessibleRole::FORM },
|
||||
{ u"link", AccessibleRole::HYPER_LINK },
|
||||
{ u"input method window", AccessibleRole::UNKNOWN },
|
||||
{ u"table row", AccessibleRole::UNKNOWN },
|
||||
{ u"tree item", AccessibleRole::TREE_ITEM },
|
||||
{ u"document spreadsheet", AccessibleRole::DOCUMENT_SPREADSHEET },
|
||||
{ u"document presentation", AccessibleRole::DOCUMENT_PRESENTATION },
|
||||
{ u"document text", AccessibleRole::DOCUMENT_TEXT },
|
||||
{ u"document web", AccessibleRole::DOCUMENT }, // approximate
|
||||
{ u"document email", AccessibleRole::DOCUMENT }, // approximate
|
||||
{ u"comment", AccessibleRole::COMMENT }, // or NOTE or END_NOTE or FOOTNOTE or SCROLL_PANE
|
||||
{ u"list box", AccessibleRole::UNKNOWN },
|
||||
{ u"grouping", AccessibleRole::GROUP_BOX },
|
||||
{ u"image map", AccessibleRole::IMAGE_MAP },
|
||||
{ u"notification", AccessibleRole::NOTIFICATION },
|
||||
{ u"info bar", AccessibleRole::UNKNOWN },
|
||||
{ u"level bar", AccessibleRole::UNKNOWN },
|
||||
{ u"title bar", AccessibleRole::UNKNOWN },
|
||||
{ u"block quote", AccessibleRole::BLOCK_QUOTE },
|
||||
{ u"audio", AccessibleRole::UNKNOWN },
|
||||
{ u"video", AccessibleRole::UNKNOWN },
|
||||
{ u"definition", AccessibleRole::UNKNOWN },
|
||||
{ u"article", AccessibleRole::UNKNOWN },
|
||||
{ u"landmark", AccessibleRole::UNKNOWN },
|
||||
{ u"log", AccessibleRole::UNKNOWN },
|
||||
{ u"marquee", AccessibleRole::UNKNOWN },
|
||||
{ u"math", AccessibleRole::UNKNOWN },
|
||||
{ u"rating", AccessibleRole::UNKNOWN },
|
||||
{ u"timer", AccessibleRole::UNKNOWN },
|
||||
{ u"description list", AccessibleRole::UNKNOWN },
|
||||
{ u"description term", AccessibleRole::UNKNOWN },
|
||||
{ u"description value", AccessibleRole::UNKNOWN },
|
||||
{ u"static", AccessibleRole::STATIC },
|
||||
{ u"math fraction", AccessibleRole::UNKNOWN },
|
||||
{ u"math root", AccessibleRole::UNKNOWN },
|
||||
{ u"subscript", AccessibleRole::UNKNOWN },
|
||||
{ u"superscript", AccessibleRole::UNKNOWN },
|
||||
{ u"footnote", AccessibleRole::FOOTNOTE },
|
||||
};
|
||||
|
||||
auto it = aAtkRoleToAccessibleRole.find(roleName);
|
||||
|
||||
Reference in New Issue
Block a user